From: Shigeru Yasuda Date: Mon, 24 Mar 2014 10:03:56 +0000 (+0900) Subject: Update VTN Coordinator sources to the latest version. X-Git-Tag: release/helium~124 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=9f4ecf1c78353eb3791ec72dd7089bf79cb10246;p=vtn.git Update VTN Coordinator sources to the latest version. VTN Coordinator version is changed to 5.1.0.0-SNAPSHOT. Change-Id: I6f76c22e5210ad5c7d97eb52ec23953aa1fe052d Signed-off-by: Shigeru Yasuda --- diff --git a/coordinator/VERSION b/coordinator/VERSION index dec29f36..b7bcff9e 100644 --- a/coordinator/VERSION +++ b/coordinator/VERSION @@ -6,4 +6,4 @@ # terms of the Eclipse Public License v1.0 which accompanies this # distribution, and is available at http://www.eclipse.org/legal/epl-v10.html # -5.0.0.0 +5.1.0.0 diff --git a/coordinator/cmds/dbm/common/dbm_functions.in b/coordinator/cmds/dbm/common/dbm_functions.in index 6585852e..bdee1d6b 100644 --- a/coordinator/cmds/dbm/common/dbm_functions.in +++ b/coordinator/cmds/dbm/common/dbm_functions.in @@ -66,7 +66,7 @@ ODBCINSTALLEDFILE=$DBMTMPDIR/unc_odbc_DSN.installed UNCDATASQLDIR=%INST_SQLDIR% DBLOGFILE=$DBMLOGDIR/unc_db_script.log -PGCTL_START_WAIT=333 +PGCTL_START_WAIT=60 PGCTL_STOP_WAIT=180 clm_date() { date +'%y-%m-%d %H:%M:%S.%N'; } diff --git a/coordinator/configure b/coordinator/configure index 9be399d9..4c2f0d34 100755 --- a/coordinator/configure +++ b/coordinator/configure @@ -85,12 +85,19 @@ use constant JSON_C_VERSION => '0.10'; # Define required Java libraries. @JAVA_LIBSPEC = ({KEY => 'gson', DESC => 'Google gson', NAME => 'GOOGLE_GSON', FILEPAT => qr(.*gson.*\.jar$), - FNAME => 'google-gson.jar', REQUIRED_CLASS => 'com/google/gson/JsonObject.class'}, {KEY => 'org-json', DESC => 'org.json', NAME => 'ORG_JSON', FILEPAT => qr(.*json.*\.jar$), - FNAME => 'org-json.jar', - REQUIRED_CLASS => 'org/json/JSONObject.class'}); + REQUIRED_CLASS => 'org/json/JSONObject.class'}, + {KEY => 'postgresql-jdbc', DESC => 'PostgreSQL JDBC driver', + NAME => 'POSTGRESQL_JDBC', + FILEPAT => qr(postgresql-.*-jdbc.*\.jar$), + REQUIRED_CLASS => 'org/postgresql/PGConnection.class'}, + {KEY => 'commons-net', DESC => 'Apache Commons Net library', + NAME => 'COMMONS_NET', + FILEPAT => qr(commons-net-.*\.jar$), + REQUIRED_CLASS => + 'org/apache/commons/net/util/SubnetUtils.class'}); # Define required Apache Tomcat libraries. @TOMCAT_LIBSPEC = ({NAME => 'TOMCAT_SERVLET_API', @@ -1412,6 +1419,14 @@ OUT "Specify absolute path to org.json Java library.", arg => OptSpec::OPTARG_FILE, auto => 1, unc => 1, check => 'checkAbsPath'], + [OPTTYPE_STRING, 'postgresql-jdbc', + "Specify absolute path to PostgreSQL JDBC driver.", + arg => OptSpec::OPTARG_FILE, auto => 1, unc => 1, + check => 'checkAbsPath'], + [OPTTYPE_STRING, 'commons-net', + "Specify absolute path to Apache Commons Net library.", + arg => OptSpec::OPTARG_FILE, auto => 1, unc => 1, + check => 'checkAbsPath'], ); @@ -2898,6 +2913,7 @@ sub check_jar($\%\%$) my $vname = $spec->{NAME}; $vars->{$vname} = $path; + $spec->{FNAME} = basename($path) unless ($spec->{FNAME}); return undef; } diff --git a/coordinator/core/build/defs.mk b/coordinator/core/build/defs.mk index 46289ac1..a6e1d8f3 100644 --- a/coordinator/core/build/defs.mk +++ b/coordinator/core/build/defs.mk @@ -1,5 +1,5 @@ # -# Copyright (c) 2010-2013 NEC Corporation +# Copyright (c) 2010-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -161,7 +161,8 @@ endif # DEBUG_BUILD # Note that CPPFLAGS is applied to both C and C++ compilation. CC_DEFS = $(CC_FEATURE_DEFS) $(CC_DEBUG_DEFS) $(EXTRA_CPPFLAGS) CC_INCLUDES = $(CC_INCDIRS_PREP:%=-I%) $(OBJS_INCDIRS:%=-I$(OBJROOT)/%) -CC_INCLUDES += $(CC_INCDIRS:%=-I$(SRCROOT)/%) $(EXTRA_INCDIRS:%=-I%) +CC_INCLUDES += $(CC_INCDIRS:%=-I$(SRCROOT)/%) $(OPENSSL_INCDIR:%=-I%) +CC_INCLUDES += $(EXTRA_INCDIRS:%=-I%) CPPFLAGS = $(CPPFLAGS_ALL) $(CC_DEFS) $(CC_INCLUDES) CXX_DEFS = $(EXTRA_CXX_CPPFLAGS) CXX_INCLUDES = $(CXX_INCDIRS:%=-I$(SRCROOT)/%) $(BOOST_INCDIR:%=-I%) @@ -197,7 +198,8 @@ ASFLAGS = -x assembler-with-cpp PFC_EXTLIBDIRS = $(PFC_EXTLIBS:%=$(OBJROOT)/ext/%) # Library search path for runtime linker. -LD_RUNTIME_DIR = $(EXTRA_RUNTIME_DIR) $(INST_LIBDIR) $(EXTERNAL_RUNPATH) +LD_RUNTIME_DIR = $(EXTRA_RUNTIME_DIR) $(OPENSSL_RUNPATH) $(INST_LIBDIR) +LD_RUNTIME_DIR += $(EXTERNAL_RUNPATH) LD_RPATH = $(filter-out $(DEFAULT_LIBPATH), $(abspath $(LD_RUNTIME_DIR))) # Linker option to disallow unresolved symbol. @@ -212,7 +214,8 @@ LD_ZDEFS = -z defs # LD_LDFLAGS: Linker options to be passed via "-Wl". # EXTRA_LDFLAGS: Extra flags to be passed to linker. LD_LIBDIRS = $(LINK_LIBDIR) $(OBJTREE_LIBDIRS:%=$(OBJROOT)/%) -LD_LIBDIRS += $(PFC_EXTLIBDIRS) $(EXTRA_LIBDIRS) +LD_LIBDIRS += $(OPENSSL_LIBDIR) $(PFC_EXTLIBDIRS) +LD_LIBDIRS += $(filter-out $(DEFAULT_LIBPATH),$(abspath $(EXTRA_LIBDIRS))) LDFLAGS_RPATH = $(LD_RPATH:%=-Wl,-rpath,%) LDFLAGS = $(LD_LIBDIRS:%=-L%) $(LDFLAGS_RPATH) $(LD_LDFLAGS:%=-Wl,%) LDFLAGS += $(LD_MODE) $(EXTRA_LDFLAGS) diff --git a/coordinator/core/build/rules.mk b/coordinator/core/build/rules.mk index e268d176..c66565b8 100644 --- a/coordinator/core/build/rules.mk +++ b/coordinator/core/build/rules.mk @@ -1,5 +1,5 @@ # -# Copyright (c) 2010-2013 NEC Corporation +# Copyright (c) 2010-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -53,7 +53,8 @@ endif # !empty(LINK_COPYRIGHT) # If C++ source exists and boost library is specified by BOOST_LIBS, # boost library is passed to linker. ifneq ($(strip $(BOOST_LIBS)),) -CXX_LDLIBS = $(BOOST_LIBDIR:%=-L%) $(BOOST_LIBS) +CXX_LDLIBS = $(BOOST_LIBDIR:%=-L%) $(BOOST_LIBS) +EXTRA_RUNTIME_DIR += $(BOOST_LIBDIR) endif # !empty(BOOST_LIBS) # make clean: Remove files generated by build process. diff --git a/coordinator/core/cmds/pfcd/Makefile b/coordinator/core/cmds/pfcd/Makefile index 2c67042b..160e6d10 100644 --- a/coordinator/core/cmds/pfcd/Makefile +++ b/coordinator/core/cmds/pfcd/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2010-2013 NEC Corporation +# Copyright (c) 2010-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -50,6 +50,7 @@ LDFLAGS += $(EXT_LIBDIRS:%=-Wl,-rpath-link,%) PFC_LIBS = libpfc libpfc_cmd libpfc_util libpfc_ipcsrv libpfc_ipcclnt LDLIBS += -ldl +LDLIBS_PREP = $(PFCD_EXTRA_LDLIBS) # Embed build timestamp. # Note that this always causes rebuild of pfcd. diff --git a/coordinator/core/cmds/pfcd/child.c b/coordinator/core/cmds/pfcd/child.c index f0124815..2fe2b2b9 100644 --- a/coordinator/core/cmds/pfcd/child.c +++ b/coordinator/core/cmds/pfcd/child.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2013 NEC Corporation + * Copyright (c) 2011-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -362,9 +362,11 @@ child_alloc(void) /* Initialize reference counter for callback and flags. */ cep->ce_ncallbacks = 0; cep->ce_flags = 0; + + return &cep->ce_cmd; } - return &cep->ce_cmd; + return NULL; } /* diff --git a/coordinator/core/configure b/coordinator/core/configure index d1ea65a1..7f47099a 100755 --- a/coordinator/core/configure +++ b/coordinator/core/configure @@ -23,7 +23,7 @@ use vars qw(%COMMAND_SPEC %OSTYPE %OS_CONF %GCC_OSTYPE %ARCH %GCC_ARCH @PATH %DEFAULT_OSARCH_LIBPATH @DEFAULT_LIBPATH @LIBDIR_NAMES $PFC_PRODUCT_NAME %MAKEVAR_RESV @LINUX_DIST $PFC_SCM_REVISION @OPENSSL_TESTS @CONFIG_TESTS @CFLAGS_TESTS %REQUIRED_CFLAGS - @UNLINK_ON_ERROR $YEAR_RANGE @JAVA_LIBRARY_PATH); + @UNLINK_ON_ERROR $YEAR_RANGE @JAVA_LIBRARY_PATH %MAKEVAR_OP); use Cwd qw(abs_path); use DirHandle; @@ -2417,7 +2417,7 @@ sub check_gtest_config($); sub compile_and_exec($%); sub check_perl($); sub check_boost($); -sub check_openssl($); +sub check_openssl($\@); sub check_openssl_const(%); sub check_cflags_tests(); sub check_config_tests(\@$\%); @@ -2441,6 +2441,7 @@ sub check_gcc_multiarch($); sub check_gcc_option($$$$$); sub check_gcc_ld($); sub check_os_arch($$$$); +sub write_makevar($$$); sub create_config_mk($\%); sub create_config_pl(\%); sub create_java_config_mk($\%); @@ -3565,6 +3566,9 @@ OUT [OPTTYPE_INST, 'javadir', "Installation directory for Java programs.", dname => 'java', relative => 'libdir'], + [OPTTYPE_INST, 'certsdir', + "Installation directory for Certification Authorities.", + dname => 'certs', relative => 'sysconfdir'], [OPTTYPE_STRING, 'c-optimize', "Specify C compiler option for optimization.", @@ -3631,8 +3635,11 @@ OUT "Specify installation prefix of boost.", arg => OptSpec::OPTARG_DIR, auto => 1], [OPTTYPE_STRING, 'openssl', - "Specify installation prefix of OpenSSL.\n", + "Specify installation prefix of OpenSSL.", arg => OptSpec::OPTARG_DIR, auto => 1], + [OPTTYPE_STRING, 'openssl-runpath', + 'Specify runtime library path for OpenSSL libraries.', + arg => OptSpec::OPTARG_PATH], [OPTTYPE_STRING, 'shell', "Specify absolute path to bourne shell on the target " . "system.", @@ -3718,6 +3725,10 @@ OUT [OPTTYPE_BOOL, 'tidlog', "Enable or disable thread ID logging in the PFC log.", default => 1], + + [OPTTYPE_STRING, 'build-type-suffix', + "Specify an arbitrary string to be added to build type " . + "suffix."], ); sub new @@ -4029,8 +4040,9 @@ MAIN: my $perl = $conf->get('perl'); check_perl($perl); + my (@hdefs); my $boost_var = check_boost($conf); - my $openssl_var = check_openssl($conf); + my $openssl_var = check_openssl($conf, @hdefs); my $runpath = check_runpath($conf); my $cfdef_arch = $arch; @@ -4141,7 +4153,6 @@ MAIN: } # Check system configuration. - my (@hdefs); check_cflags_tests(); check_config_tests(@hdefs, $os, %vars); @@ -5136,11 +5147,9 @@ OUT return \%vars; } -sub check_openssl($) +sub check_openssl($\@) { - my ($conf) = @_; - - return {} unless ($conf->isUNC()); + my ($conf, $hdefs) = @_; my $spec = $conf->getSpec('openssl'); my $prefix = $spec->value(); @@ -5179,14 +5188,25 @@ sub check_openssl($) undef $incdir if (is_default_header_path($incdir)); my (%opts) = (PREFIX => [$prefix]); + my (@cppflags); + push(@cppflags, '-I' . $incdir) if ($incdir); + $opts{CPPFLAGS} = \@cppflags; + $opts{CODE} = <<'OUT'; +#include + +int +main(int argc, char **argv) +{ + SSLeay(); + return; +} +OUT my ($libname, $libdir) = check_library('crypto', %opts); - error("OpenSSL library is not found.") unless ($libdir); + error("OpenSSL libcrypto library is not found.") unless ($libdir); undef $libdir if (is_default_library_path($libdir)); my $gcc = $COMMAND_SPEC{gcc}->{PATH}; - my (@cppflags, @ldflags); - - push(@cppflags, '-I' . $incdir) if ($incdir); + my (@ldflags); push(@ldflags, '-L' . $libdir, '-Wl,-rpath,' . $libdir) if ($libdir); (%opts) = (CC => $gcc, CFLAGS => $CC_MODE); $opts{CPPFLAGS} = \@cppflags; @@ -5198,17 +5218,24 @@ sub check_openssl($) $opts{CC_ERROR} = \@errout; my $out; my ($checking, $source) = ($test->{CHECK}, $test->{CODE}); + my $libs = $test->{LIBS} || '-lcrypto'; + $opts{LIBS} = $libs; checking($checking); eval { $out = compile_and_exec($source, %opts); }; if ($@) { - print "unknown\n"; - if (@errout) { - print "\n", @errout, "\n"; + if ($test->{IGNORE_ERROR}) { + $out = ["NO:Compilation failed\n"]; + } + else { + print "unknown\n"; + if (@errout) { + print "\n", @errout, "\n"; + } + error("OpenSSL test failed: $@"); } - error("OpenSSL test failed: $@"); } my $line = $out->[0]; @@ -5219,13 +5246,37 @@ sub check_openssl($) error($1); } - $line =~ s,^OK:,,; - print $line, "\n"; + my $value; + if ($line =~ m,^NO(:(.+))?$,o) { + my $msg = ($2) ? " ($2)" : ''; + + print "no$msg\n"; + my $mandatory = $test->{MANDATORY}; + error($mandatory) if ($mandatory); + } + elsif ($line =~ m,^VALUE:(.+)$,o) { + $value = $1; + print $value, "\n"; + } + elsif ($line =~ m,^OK:(.+)$,o) { + print $1, "\n"; + $value = 1; + } + else { + error("Unexpected output: $line"); + } + + my ($name, $desc) = ($test->{DEFINE}, $test->{DESC}); + push(@$hdefs, ConfDef->new($name, $value, $desc)) if ($name); } my (%vars) = (OPENSSL_INCDIR => $incdir, OPENSSL_LIBDIR => $libdir, OPENSSL_PREFIX => $prefix, OPENSSL_CONST => check_openssl_const(%opts)); + my $runpath = $conf->get('openssl-runpath'); + $runpath = '$(OPENSSL_LIBDIR)' unless ($runpath); + $vars{OPENSSL_RUNPATH} = $runpath; + $MAKEVAR_OP{OPENSSL_RUNPATH} = '='; return \%vars; } @@ -5260,6 +5311,9 @@ main(int argc, char **argv) DEFCONST(EVP_MAX_KEY_LENGTH); DEFCONST(EVP_MAX_IV_LENGTH); + DEFCONST(CRYPTO_LOCK); + DEFCONST(CRYPTO_UNLOCK); + return 0; } OUT @@ -5892,7 +5946,7 @@ sub check_library($\%) { my ($libname, $args) = @_; - checking("for $libname library"); + checking("for lib$libname library"); my $code = $args->{CODE}; unless ($code) { @@ -5912,17 +5966,25 @@ OUT $args->{CFLAGS} = $CC_MODE unless ($cflags); $args->{CC_ONLY} = 1; - my $prefix = $args->{PREFIX} || []; - foreach my $pfx (@$prefix, '/') { - foreach my $dir (@LIBDIR_NAMES) { - my $path = canonicalize_path("$pfx/$dir"); - my $libname = check_library_impl($libname, $path, - %$args); - if ($libname) { - print "$path\n"; - return ($libname, $path); + my $libdirs = $args->{LIBDIRS}; + unless ($libdirs) { + my $prefix = $args->{PREFIX} || []; + my (@dirs); + foreach my $pfx (@$prefix, '/') { + foreach my $dir (@LIBDIR_NAMES) { + my $path = canonicalize_path("$pfx/$dir"); + push(@dirs, $path) if (-d $path); } } + $libdirs = \@dirs; + } + + foreach my $path (@$libdirs) { + my $libname = check_library_impl($libname, $path, %$args); + if ($libname) { + print "$path\n"; + return ($libname, $path); + } } print "not found\n"; @@ -5935,7 +5997,8 @@ sub check_library_impl($$\%) my ($libname, $path, $args) = @_; my (%opts) = (%$args); - $opts{LDFLAGS} = '-L' . $path; + my (@ldflags) = ('-L' . $path, '-Wl,-rpath,' . $path); + $opts{LDFLAGS} = \@ldflags; my $code = $args->{CODE}; $opts{LIBS} = '-l' . $libname; @@ -6226,6 +6289,14 @@ sub check_os_arch($$$$) return ($os, $arch, $multiarch); } +sub write_makevar($$$) +{ + my ($fh, $name, $value) = @_; + + my $op = $MAKEVAR_OP{$name} || ':='; + $fh->printf("%s\t\t%s %s\n", $name, $op, $value); +} + sub create_config_mk($\%) { my ($conf, $vars) = @_; @@ -6257,18 +6328,14 @@ OUT foreach my $vname (sort(keys(%$vars))) { my $value = $vars->{$vname}; - $fh->print(<print("\n"); foreach my $key (sort(@{$conf->getInstDirKeys()})) { my $dir = $conf->get($key); my $vname = make_symbol('INST_', $key); - $fh->print(<print("\n"); @@ -6278,9 +6345,7 @@ OUT my $var = uc($key); my $path = $spec->{PATH}; next unless ($path); - $fh->print(<print(<{JAVA_JUNIT}; @@ -6425,14 +6488,22 @@ OUT OUT } + my $ssuffix; + my $suff = $conf->get('build-type-suffix'); + if ($suff) { + $ssuffix = ' ' . stringify('-' . $suff); + } + $fh->print(<pl_next; (var) != (head); (var) = (var)->pl_next) -#define PFC_LIST_REV_FOREACH(head, var) \ - for ((var) = (head)->pl_prev; (var) != (head); (var) = (var)->pl_prev) +#define PFC_LIST_FOREACH_FROM(head, from, var) \ + for ((var) = (from); (var) != (head); (var) = (var)->pl_next) +#define PFC_LIST_REV_FOREACH_FROM(head, from, var) \ + for ((var) = (from); (var) != (head); (var) = (var)->pl_prev) + +#define PFC_LIST_FOREACH(head, var) \ + PFC_LIST_FOREACH_FROM(head, (head)->pl_next, var) +#define PFC_LIST_REV_FOREACH(head, var) \ + PFC_LIST_REV_FOREACH_FROM(head, (head)->pl_prev, var) /* * List iterator that allow removal of `var'. * One more variable must be specified to preserve next or previous link. */ -#define PFC_LIST_FOREACH_SAFE(head, var, next) \ - for ((var) = (head)->pl_next; \ +#define PFC_LIST_FOREACH_SAFE_FROM(head, from, var, next) \ + for ((var) = (from); \ (var) != (head) && ((next) = (var)->pl_next, 1); \ (var) = (next)) -#define PFC_LIST_REV_FOREACH_SAFE(head, var, prev) \ - for ((var) = (head)->pl_prev; \ +#define PFC_LIST_REV_FOREACH_SAFE_FROM(head, from, var, prev) \ + for ((var) = (from); \ (var) != (head) && ((prev) = (var)->pl_prev, 1); \ (var) = (prev)) +#define PFC_LIST_FOREACH_SAFE(head, var, next) \ + PFC_LIST_FOREACH_SAFE_FROM(head, (head)->pl_next, var, next) +#define PFC_LIST_REV_FOREACH_SAFE(head, var, prev) \ + PFC_LIST_REV_FOREACH_SAFE_FROM(head, (head)->pl_prev, var, prev) + PFC_C_END_DECL #endif /* !_PFC_LIST_H */ diff --git a/coordinator/core/include/pfc/module.h b/coordinator/core/include/pfc/module.h index 4bc74fa1..4d05f223 100644 --- a/coordinator/core/include/pfc/module.h +++ b/coordinator/core/include/pfc/module.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 NEC Corporation + * Copyright (c) 2010-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the diff --git a/coordinator/core/libs/libpfc/module.c b/coordinator/core/libs/libpfc/module.c index 5bd10490..3f489555 100644 --- a/coordinator/core/libs/libpfc/module.c +++ b/coordinator/core/libs/libpfc/module.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 NEC Corporation + * Copyright (c) 2010-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the diff --git a/coordinator/core/libs/libpfc_util/proc_linux.c b/coordinator/core/libs/libpfc_util/proc_linux.c index 5160afa1..285d3ecc 100644 --- a/coordinator/core/libs/libpfc_util/proc_linux.c +++ b/coordinator/core/libs/libpfc_util/proc_linux.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 NEC Corporation + * Copyright (c) 2010-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -163,6 +163,9 @@ pfc_proc_getcmdline(pid_t pid, pfc_listm_t *listp) err = proc_buf_readline(&pbuf, fp); fclose(fp); if (PFC_EXPECT_FALSE(err != 0)) { + if (err < 0) { + err = ENODATA; + } goto out; } diff --git a/coordinator/core/libs/libpfc_util/synch.c b/coordinator/core/libs/libpfc_util/synch.c index aefdb9dd..dba92bd9 100644 --- a/coordinator/core/libs/libpfc_util/synch.c +++ b/coordinator/core/libs/libpfc_util/synch.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 NEC Corporation + * Copyright (c) 2010-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -50,7 +50,7 @@ pfc_mutex_init(pfc_mutex_t *mutexp, pfc_mutextype_t type) err = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); if (PFC_EXPECT_FALSE(err != 0)) { - return err; + goto out; } } else if (USE_ERRORCHECK_MUTEX) { @@ -58,11 +58,16 @@ pfc_mutex_init(pfc_mutex_t *mutexp, pfc_mutextype_t type) err = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); if (PFC_EXPECT_FALSE(err != 0)) { - return err; + goto out; } } - return pthread_mutex_init((pthread_mutex_t *)mutexp, &attr); + err = pthread_mutex_init((pthread_mutex_t *)mutexp, &attr); + +out: + pthread_mutexattr_destroy(&attr); + + return err; } /* diff --git a/coordinator/core/libs/libpfc_util/synch_linux.c b/coordinator/core/libs/libpfc_util/synch_linux.c index 90e20df1..e924d4f0 100644 --- a/coordinator/core/libs/libpfc_util/synch_linux.c +++ b/coordinator/core/libs/libpfc_util/synch_linux.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 NEC Corporation + * Copyright (c) 2010-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -40,11 +40,13 @@ pfc_cond_init(pfc_cond_t *condp) /* Use monotonic clock. */ err = pthread_condattr_setclock(&cattr, CLOCK_MONOTONIC); - if (PFC_EXPECT_FALSE(err != 0)) { - return err; + if (PFC_EXPECT_TRUE(err == 0)) { + err = pthread_cond_init((pthread_cond_t *)condp, &cattr); } - return pthread_cond_init((pthread_cond_t *)condp, &cattr); + pthread_condattr_destroy(&cattr); + + return err; } /* diff --git a/coordinator/core/test/libs/libpfc_util/Makefile b/coordinator/core/test/libs/libpfc_util/Makefile index 466a3852..12139017 100644 --- a/coordinator/core/test/libs/libpfc_util/Makefile +++ b/coordinator/core/test/libs/libpfc_util/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -84,7 +84,8 @@ CXX_SOURCES = \ test_hash_util.cc \ test_pseudo_rand.cc \ test_pidfile.cc \ - test_time.cc + test_time.cc \ + test_proc.cc CXX_SOURCES += \ child.cc \ diff --git a/coordinator/core/test/libs/libpfc_util/test_list.cc b/coordinator/core/test/libs/libpfc_util/test_list.cc index d59d337f..a5abdf3b 100644 --- a/coordinator/core/test/libs/libpfc_util/test_list.cc +++ b/coordinator/core/test/libs/libpfc_util/test_list.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 NEC Corporation + * Copyright (c) 2010-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -33,6 +34,16 @@ typedef struct { int data; } list_ent_t; +#define LISTENT_PTR(elem) \ + PFC_CAST_CONTAINER((elem), list_ent_t, list_hdr) + +#define LISTENT_SETUP(head, ent, i) \ + do { \ + (ent)->data = (i); \ + pfc_list_push_tail((head), &(ent)->list_hdr); \ + } while (0) + +typedef std::list intlist_t; /* * @@ -44,6 +55,9 @@ PFC_ATTR_UNUSED static void dump_list (pfc_list_t *head); static int list_size (pfc_list_t *head); static void verify_size (pfc_list_t *head, int size); static void verify_links (pfc_list_t *head); +static void verify_list_ent(pfc_list_t *head, intlist_t &required); +static void setup_list_ent(list_ent_t *entries, size_t nentries, + pfc_list_t *head, intlist_t &required); static void base_list_use_case_1 (int ent_num, int push_tail, int pop_tail); static void base_list_use_case_2 (int ent_num, int remove_odd, int in_order); static void base_list_use_case_3 (int ent_num); @@ -100,6 +114,218 @@ TEST(simple_list, use_case_1_3) } } +/* + * Test for PFC_LIST_FOREACH(). + */ +TEST(simple_list, foreach) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + pfc_list_t *elem; + int i(0); + PFC_LIST_FOREACH(&head, elem) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + i++; + } +} + +/* + * Test for PFC_LIST_REV_FOREACH(). + */ +TEST(simple_list, rev_foreach) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + pfc_list_t *elem; + int i(static_cast(PFC_ARRAY_CAPACITY(entries) - 1)); + PFC_LIST_REV_FOREACH(&head, elem) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + i--; + } +} + +/* + * Test for PFC_LIST_FOREACH_FROM(). + */ +TEST(simple_list, foreach_from) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + for (int from(0); (size_t)from < PFC_ARRAY_CAPACITY(entries); from++) { + pfc_list_t *elem; + int i(from); + PFC_LIST_FOREACH_FROM(&head, &entries[from].list_hdr, elem) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + i++; + } + } +} + +/* + * Test for PFC_LIST_REV_FOREACH_FROM(). + */ +TEST(simple_list, rev_foreach_from) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + for (int from(0); (size_t)from < PFC_ARRAY_CAPACITY(entries); from++) { + pfc_list_t *elem; + int i(from); + PFC_LIST_REV_FOREACH_FROM(&head, &entries[from].list_hdr, elem) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + i--; + } + } +} + +/* + * Test for PFC_LIST_FOREACH_SAFE(). + */ +TEST(simple_list, foreach_safe) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + pfc_list_t *elem, *next; + int i(0); + PFC_LIST_FOREACH_SAFE(&head, elem, next) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + + pfc_list_remove(elem); + memset(ent, 0, sizeof(*ent)); + required.remove(i); + verify_list_ent(&head, required); + i++; + } + + ASSERT_TRUE(required.empty()); +} + +/* + * Test for PFC_LIST_REV_FOREACH_SAFE(). + */ +TEST(simple_list, rev_foreach_safe) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + pfc_list_t *elem, *next; + int i(static_cast(PFC_ARRAY_CAPACITY(entries) - 1)); + PFC_LIST_REV_FOREACH_SAFE(&head, elem, next) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + + pfc_list_remove(elem); + memset(ent, 0, sizeof(*ent)); + required.remove(i); + verify_list_ent(&head, required); + i--; + } + + ASSERT_TRUE(required.empty()); +} + +/* + * Test for PFC_LIST_FOREACH_SAFE_FROM(). + */ +TEST(simple_list, foreach_safe_from) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + int nentries(static_cast(PFC_ARRAY_CAPACITY(entries))); + int from(nentries >> 1); + while (nentries > 0) { + pfc_list_t *elem, *next; + int i(from); + PFC_LIST_FOREACH_SAFE_FROM(&head, &entries[from].list_hdr, + elem, next) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + + pfc_list_remove(elem); + memset(ent, 0, sizeof(*ent)); + required.remove(i); + verify_list_ent(&head, required); + nentries--; + i++; + } + + from >>= 1; + } + + ASSERT_TRUE(required.empty()); +} + +/* + * Test for PFC_LIST_REV_FOREACH_SAFE_FROM(). + */ +TEST(simple_list, rev_foreach_safe_from) +{ + list_ent_t entries[20]; + pfc_list_t head; + intlist_t required; + setup_list_ent(entries, PFC_ARRAY_CAPACITY(entries), &head, required); + + int nentries(static_cast(PFC_ARRAY_CAPACITY(entries))); + int from(nentries >> 1); + while (nentries > 0) { + pfc_list_t *elem, *next; + int i(from); + PFC_LIST_REV_FOREACH_SAFE_FROM(&head, &entries[from].list_hdr, + elem, next) { + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_EQ(&entries[i], ent); + ASSERT_EQ(i, ent->data); + + pfc_list_remove(elem); + memset(ent, 0, sizeof(*ent)); + required.remove(i); + verify_list_ent(&head, required); + nentries--; + i--; + } + + if (nentries == 1) { + from = static_cast(PFC_ARRAY_CAPACITY(entries) - 1); + } + else { + from += (nentries >> 1); + } + } + + ASSERT_TRUE(required.empty()); +} /* * @@ -160,6 +386,37 @@ verify_links (pfc_list_t *head) } } +static void +verify_list_ent(pfc_list_t *head, intlist_t &required) +{ + intlist_t::iterator it(required.begin()); + intlist_t::iterator end(required.end()); + pfc_list_t *prev(head); + for (pfc_list_t *elem(head->pl_next); elem != head; + prev = elem, elem = elem->pl_next, it++) { + ASSERT_EQ(prev, elem->pl_prev); + + list_ent_t *ent(LISTENT_PTR(elem)); + ASSERT_TRUE(end != it); + ASSERT_EQ(*it, ent->data); + } + + ASSERT_TRUE(end == it); +} + +static void +setup_list_ent(list_ent_t *entries, size_t nentries, pfc_list_t *head, + intlist_t &required) +{ + pfc_list_init(head); + + list_ent_t *ent(entries); + for (int i(0); (size_t)i < nentries; i++, ent++) { + LISTENT_SETUP(head, ent, i); + required.push_back(i); + } + verify_list_ent(head, required); +} /* * diff --git a/coordinator/core/test/libs/libpfc_util/test_misc.cc b/coordinator/core/test/libs/libpfc_util/test_misc.cc index 496d9dca..17f34e31 100644 --- a/coordinator/core/test/libs/libpfc_util/test_misc.cc +++ b/coordinator/core/test/libs/libpfc_util/test_misc.cc @@ -238,7 +238,7 @@ public: * Test Data * pfc_is_safepath() */ -safe_path_test_data sptd[] = { +static safe_path_test_data sptd[] = { {"invalid", EINVAL}, {TOO_LONG_NAME, ENAMETOOLONG}, {"/homehomehome", ENOENT}, diff --git a/coordinator/core/test/libs/libpfc_util/test_proc.cc b/coordinator/core/test/libs/libpfc_util/test_proc.cc new file mode 100644 index 00000000..d6373e75 --- /dev/null +++ b/coordinator/core/test/libs/libpfc_util/test_proc.cc @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/* + * test_proc.cc - Test for PFC process utilities. + */ + +#include +#include +#include +#include +#include "test.h" +#include "misc.hh" +#include "random.hh" + +using namespace std; + +/* + * static void + * test_closefrom(uint32_t num, uint32_t from) + * This function called fork(2). + */ +static void +test_closefrom(uint32_t num, uint32_t from) +{ + pid_t pid; + + pid = fork(); + if (pid == 0) { + /* Test main */ + uint32_t i; + pfc_listm_t list; + DIR *dir; + struct dirent *dep; + ostringstream oss; + string str_pid; + + oss << getpid(); + str_pid = "/proc/" + oss.str() + "/fd"; + + ASSERT_EQ(0, pfc_llist_create_u64(&list)); + + /* Create file descriptor. */ + for (i = 0; i < num; i++) { + ASSERT_NE(-1, open("/dev/null", O_RDWR)) + << "*** ERROR: " << strerror(errno); + } + + /* Check opening file descriptor. */ + dir = opendir(str_pid.c_str()); + dep = readdir(dir); + while (dep != NULL) { + string filename = dep->d_name; + int fd; + + /* ".", ".." is skip. */ + if (filename == "." || filename == "..") { + dep = readdir(dir); + continue; + } + + /* Convert string to integer. */ + istringstream is(filename); + is >> fd; + ASSERT_EQ(0, pfc_listm64_push_tail(list, (uint64_t)fd)); + + /* Check next file. */ + dep = readdir(dir); + } + ASSERT_EQ(0, closedir(dir)); + + /* Close file descriptor. */ + pfc_closefrom(from); + + /* Check opening file descriptor. */ + dir = opendir(str_pid.c_str()); + dep = readdir(dir); + while (dep != NULL) { + string filename = dep->d_name; + int fd; + + /* ".", ".." is skip. */ + if (filename == "." || filename == "..") { + dep = readdir(dir); + continue; + } + + /* Convert string to integer. */ + istringstream is(filename); + is >> fd; + + /* Check the value which is less than 'from'. */ + if (dirfd(dir) != fd) { + ASSERT_LT(fd, from); + } + /* Check the value which is in the list. */ + ASSERT_LE(0, pfc_listm64_index(list, (uint64_t)fd)); + + /* Check next file. */ + dep = readdir(dir); + } + ASSERT_EQ(0, closedir(dir)); + + /* Child process exit. */ + exit(0); + } else { + int status; + ASSERT_LT(0, wait(&status)); + ASSERT_EQ(0, WEXITSTATUS(status)); + ASSERT_EQ(0, WIFSIGNALED(status)); + } +} + +/* + * Create a zombie process. + */ +class Zombie +{ +public: + Zombie() : _pid(static_cast(-1)) {} + + ~Zombie() + { + if (_pid != static_cast(-1)) { + waitpid(_pid, NULL, 0); + } + } + + void setup(void); + + inline pid_t + operator*() const + { + return _pid; + } + +private: + pid_t _pid; +}; + +void +Zombie::setup(void) +{ + int fds[2]; + ASSERT_EQ(0, pipe(fds)) << "*** ERROR: " << strerror(errno); + FdRef rfd(fds[0]), wfd(fds[1]); + + _pid = fork(); + ASSERT_NE(static_cast(-1), _pid) + << "*** ERROR: " << strerror(errno); + if (_pid == 0) { + _exit(0); + } + + ASSERT_EQ(0, close(wfd.get())) << "*** ERROR: " << strerror(errno); + wfd.set(-1); + + char c; + ASSERT_EQ(0, read(rfd.get(), &c, 1)); +} + +/* + * Test for pfc_closefrom(). + * This test called fork(2). + */ +TEST(proc, pfc_closefrom) +{ + int i; + uint32_t max; + RandomGenerator rand; + + /* Max number of open file descriptor. */ + max = 50; + for (i = 0; i < 10; i++) { + uint32_t num; + uint32_t from; + rand.randomInteger(num, max); + rand.randomInteger(from, num); + test_closefrom(num, from); + } +} + +/* + * Test case for zombie process. + */ +TEST(proc, zombie) +{ + // pfc_proc_getcmdline() must fail. + { + Zombie z; + z.setup(); + RETURN_ON_ERROR(); + + pfc_listm_t list; + ASSERT_EQ(ENODATA, pfc_proc_getcmdline(*z, &list)); + } +} diff --git a/coordinator/core/tools/src/exec-defs.mk b/coordinator/core/tools/src/exec-defs.mk index 0b785b8c..584ca8d6 100644 --- a/coordinator/core/tools/src/exec-defs.mk +++ b/coordinator/core/tools/src/exec-defs.mk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011-2013 NEC Corporation +# Copyright (c) 2011-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -13,3 +13,6 @@ include ../config.mk include $(BLDDIR)/exec-defs.mk + +# Don't apply configurations for runtime environment. +OPENSSL_RUNPATH := $(OPENSSL_LIBDIR) diff --git a/coordinator/core/tools/src/perl/mkjproject.PL b/coordinator/core/tools/src/perl/mkjproject.PL index 5e7ea90f..3fdc6dcd 100644 --- a/coordinator/core/tools/src/perl/mkjproject.PL +++ b/coordinator/core/tools/src/perl/mkjproject.PL @@ -18,7 +18,7 @@ $fh->print($Config{startperl}, "\n"); $fh->print(<<'EOF'); # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -601,7 +601,7 @@ MAIN: } my ($pclasspath, @jarclpath); - if (@classpath or @extlibs) { + if (@classpath or @extlibs or @build_cp) { $pclasspath = create_classpath($proj, 'pkg.build.classpath', classpath => \@classpath, build_classpath => \@build_cp, diff --git a/coordinator/dist/pom.xml b/coordinator/dist/pom.xml index 134ced80..3a989875 100644 --- a/coordinator/dist/pom.xml +++ b/coordinator/dist/pom.xml @@ -29,7 +29,7 @@ org.opendaylight.vtn distribution.vtn-coordinator - 5.0.0.1-SNAPSHOT + 5.1.0.0-SNAPSHOT pom @@ -70,6 +70,8 @@ 2.2.2 20090211 7.0.39 + 3.3 + 9.2-1003-jdbc4 root /usr/local/vtn @@ -152,6 +154,20 @@ ${vtn.java.libdir} + + commons-net + commons-net + ${vtn.commons.net.version} + ${vtn.java.libdir} + + + + org.postgresql + postgresql + ${vtn.postgresql.jdbc.version} + ${vtn.java.libdir} + + org.apache.tomcat tomcat-catalina @@ -368,11 +384,25 @@ gson ${vtn.gson.version} + org.json json ${vtn.json.version} + + + commons-net + commons-net + ${vtn.commons.net.version} + + + + org.postgresql + postgresql + ${vtn.postgresql.jdbc.version} + + org.apache.tomcat tomcat-catalina diff --git a/coordinator/include/unc/keytype.h b/coordinator/include/unc/keytype.h index b6c8ff35..21b4d583 100644 --- a/coordinator/include/unc/keytype.h +++ b/coordinator/include/unc/keytype.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -66,6 +66,7 @@ typedef enum { UNC_KT_VTN_FLOWFILTER_CONTROLLER, UNC_KT_VTN_PATHMAP_ENTRY, UNC_KT_VTN_PATHMAP_CONTROLLER, + UNC_KT_VTN_DATAFLOW, /* UPPL: 0x200~0x3ff */ UNC_KT_CONTROLLER = 0x200, UNC_KT_SWITCH, @@ -75,7 +76,8 @@ typedef enum { UNC_KT_LOGICAL_PORT, UNC_KT_LOGICAL_MEMBER_PORT, UNC_KT_BOUNDARY, - UNC_KT_INVALID = 0x300 + UNC_KT_DATAFLOW, + UNC_KT_CTR_DATAFLOW } unc_key_type_t; /* Operation */ @@ -124,7 +126,8 @@ typedef enum { UNC_OPT2_CLEAR_ARPAGENT, /* clear arpagent */ UNC_OPT2_MATCH_SWITCH1, /* match-switch1 */ UNC_OPT2_MATCH_SWITCH2, /* match-switch2 */ - UNC_OPT2_MATCH_BOTH_SWITCH /* match-both-switch */ + UNC_OPT2_MATCH_BOTH_SWITCH, /* match-both-switch */ + UNC_OPT2_SIBLING_ALL /* return all sibling details */ } unc_keytype_option2_t; /* Data type indicates the data storage. */ @@ -142,8 +145,7 @@ typedef enum { typedef enum { UNC_CS_UNKNOWN= 0, UNC_CS_APPLIED, - UNC_CS_PARTAILLY_APPLIED, - UNC_CS_PARTIALLY_APPLIED = UNC_CS_PARTAILLY_APPLIED, + UNC_CS_PARTIALLY_APPLIED, UNC_CS_NOT_APPLIED, UNC_CS_INVALID, UNC_CS_NOT_SUPPORTED @@ -154,8 +156,7 @@ typedef enum { UNC_VF_INVALID= 0, UNC_VF_VALID, UNC_VF_VALID_NO_VALUE, - UNC_VF_NOT_SOPPORTED, - UNC_VF_NOT_SUPPORTED = UNC_VF_NOT_SOPPORTED, + UNC_VF_NOT_SUPPORTED, UNC_VF_VALUE_NOT_MODIFIED } unc_keytype_validflag_t; diff --git a/coordinator/include/unc/pfcdriver_ipc_enum.h b/coordinator/include/unc/pfcdriver_ipc_enum.h index 551c7b02..9ded8ee1 100644 --- a/coordinator/include/unc/pfcdriver_ipc_enum.h +++ b/coordinator/include/unc/pfcdriver_ipc_enum.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -45,5 +45,10 @@ typedef enum { PFCDRV_IDX_VAL_VBRIF_VEXTIF_PM, } pfcdrv_val_vbrif_policingmap_index_t; +/* enum for pfcdrv val vbrif structure */ +typedef enum { + PFCDRV_IDX_VAL_VLAN_MAP = 0, + PFCDRV_IDX_BDRY_REF_COUNT, +} pfcdrv_val_vlan_map_index_t; #endif diff --git a/coordinator/include/unc/tc/external/tc_services.h b/coordinator/include/unc/tc/external/tc_services.h index fcf4450a..47cf81e1 100644 --- a/coordinator/include/unc/tc/external/tc_services.h +++ b/coordinator/include/unc/tc/external/tc_services.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,6 +10,8 @@ #ifndef SRC_INCLUDE_UNC_TC_EXTERNAL_TC_SERVICES_H_ #define SRC_INCLUDE_UNC_TC_EXTERNAL_TC_SERVICES_H_ +#include + /* Values used to establish Client Session with TC Module */ #define UNC_CHANNEL_NAME "uncd" #define TC_SERVICE_NAME "tc" @@ -56,13 +58,13 @@ typedef enum { /* List of Return Values and Operation Status Values */ typedef enum { /* System Failover */ - TC_OPER_FAILURE = -11, + TC_OPER_FAILURE = UNC_TC_OPER_FAILURE, /* Invalid Input Values Passed*/ - TC_OPER_INVALID_INPUT = -10, - TC_OPER_SUCCESS = 0, - TC_CONFIG_NOT_PRESENT, + TC_OPER_INVALID_INPUT = UNC_TC_OPER_INVALID_INPUT, + TC_OPER_SUCCESS = UNC_RC_SUCCESS, + TC_CONFIG_NOT_PRESENT = UNC_TC_CONFIG_NOT_PRESENT, TC_CONFIG_PRESENT, - TC_INVALID_CONFIG_ID, + TC_INVALID_CONFIG_ID, TC_INVALID_OPERATION_TYPE, TC_INVALID_SESSION_ID, TC_INVALID_STATE, diff --git a/coordinator/include/unc/unc_base.h b/coordinator/include/unc/unc_base.h index e2023a62..290837b7 100644 --- a/coordinator/include/unc/unc_base.h +++ b/coordinator/include/unc/unc_base.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -21,34 +21,167 @@ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -#if 0 -#include "unc_events.h" -#include "pfcdriver_ipc_enum.h" -#endif + /** -* @brief PFC Driver API response code returned + * @brief UNC API response code returned */ - typedef enum { - DRVAPI_RESPONSE_SUCCESS = 0, /* successful */ - DRVAPI_RESPONSE_FAILURE, /* failure */ - DRVAPI_RESPONSE_CTRLAPI_FAILURE, /* Driver api failed */ - DRVAPI_RESPONSE_NOT_RUNNING, /* not running */ - DRVAPI_RESPONSE_INVALID_REQUEST_FORMAT, /* invalid request format */ - DRVAPI_RESPONSE_INVALID_SESSION_ID, /* invalid session id */ - DRVAPI_RESPONSE_INVALID_CONFIG_ID, /* invalid config id */ - DRVAPI_RESPONSE_INVALID_OPERATION, /* invalid operation */ - DRVAPI_RESPONSE_INVALID_OPTION1, /* invalid option1 */ - DRVAPI_RESPONSE_INVALID_OPTION2, /* invalid option2 */ - DRVAPI_RESPONSE_INVALID_DATATYPE, /* invalid data type */ - DRVAPI_RESPONSE_INVALID_KEYTYPE, /* invalid key type */ - DRVAPI_RESPONSE_MISSING_KEY_STRUCT, /* missing key structure */ - DRVAPI_RESPONSE_MISSING_VAL_STRUCT, /* missing value structure */ - DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED, /* controller disconnected */ - DRVAPI_RESPONSE_NOT_SENT_TO_CONTROLLER, /* not sent to controller */ - DRVAPI_RESPONSE_NO_SUCH_INSTANCE, /* READ has no result */ - DRVAPI_RESPONSE_INVALID_TRANSACTION /* invalid transaction */ -} drv_resp_code_t; + UNC_RC_SUCCESS = 0, + + /*TC response codes*/ + UNC_TC_OPER_FAILURE = -11, /* System Failover */ + UNC_TC_OPER_INVALID_INPUT = -10, /* Invalid Input Values Passed */ + UNC_TC_CONFIG_NOT_PRESENT = 100, /* Config mode is not acquired */ + UNC_TC_CONFIG_PRESENT, /* Config mode already present */ + UNC_TC_INVALID_CONFIG_ID, + UNC_TC_INVALID_OPERATION_TYPE, + UNC_TC_INVALID_SESSION_ID, + UNC_TC_INVALID_STATE, + UNC_TC_OPER_ABORT, /* Operation aborted */ + UNC_TC_SESSION_ALREADY_ACTIVE, + UNC_TC_SESSION_NOT_ACTIVE, + UNC_TC_SYSTEM_BUSY, /* Acquiring lock failed as another + operation is in progress */ + UNC_TC_SYSTEM_FAILURE, /* Internal errors in any of the modules */ + + /* UPLL Service */ + UNC_UPLL_RC_ERR_GENERIC = 1000, /* Generic error */ + UNC_UPLL_RC_ERR_BAD_REQUEST, /* The request message format is bad */ + UNC_UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID, /* The given session does not have the + config lock */ + UNC_UPLL_RC_ERR_NO_SUCH_OPERATION, /* Not a valid operation */ + UNC_UPLL_RC_ERR_INVALID_OPTION1, /* Not a valid option1 */ + UNC_UPLL_RC_ERR_INVALID_OPTION2, /* Not a valid option2 */ + UNC_UPLL_RC_ERR_CFG_SYNTAX, /* Syntax check failed */ + UNC_UPLL_RC_ERR_CFG_SEMANTIC, /* Semantic check failed */ + UNC_UPLL_RC_ERR_RESOURCE_DISCONNECTED, /* Resource (DBMS, Physical, Driver) is + diconnected */ + UNC_UPLL_RC_ERR_DB_ACCESS, /* DBMS access (read / write / + transacation) failure */ + UNC_UPLL_RC_ERR_NO_SUCH_INSTANCE, /* Instance specified by key does not + exist */ + UNC_UPLL_RC_ERR_NO_SUCH_NAME, /* The specified keytype is unknown */ + UNC_UPLL_RC_ERR_NO_SUCH_DATATYPE, /* The specified datatype is unknown */ + UNC_UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, /* The operation not supported by + controller */ + UNC_UPLL_RC_ERR_NOT_SUPPORTED_BY_STANDBY, /* The operation not supported by + standby UPLL */ + UNC_UPLL_RC_ERR_PARENT_DOES_NOT_EXIST, /* For creating the given keytype + instance, its parent does not + exist */ + UNC_UPLL_RC_ERR_INSTANCE_EXISTS, /* The given keytype instance cannot be + created because it already exists */ + UNC_UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, /* Not allowed for this datatype */ + UNC_UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT, /* Not allowed for this KT */ + UNC_UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME, /* Not allowed for at this time */ + UNC_UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, /* The given operation exceeds the + resource limit */ + UNC_UPLL_RC_ERR_MERGE_CONFLICT, /* Merge failed as there is a merge + conflict */ + UNC_UPLL_RC_ERR_CANDIDATE_IS_DIRTY, /* The operation could not be performed + because there are uncommited changes + in the candidate configuration */ + UNC_UPLL_RC_ERR_SHUTTING_DOWN, /* UPLL daemon is shutting down and + cannot process the request */ + /*UPPL Service*/ + UNC_UPPL_RC_ERR_BAD_REQUEST = 2000, /* The request message format is bad */ + UNC_UPPL_RC_FAILURE, /* REMOVE THIS */ + UNC_UPPL_RC_ERR_INVALID_CONFIGID, /* Invalid config-id*/ + UNC_UPPL_RC_ERR_INVALID_SESSIONID, /* Invalid session-id */ + UNC_UPPL_RC_ERR_VERSION_NOT_SUPPORTED, /* unsupported version*/ + UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED, /* unsupported keytype*/ + UNC_UPPL_RC_ERR_DATATYPE_NOT_SUPPORTED, /* Unsupported datatype*/ + UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED, /* Unsupported attribute*/ + UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED, /* Unsupported operation*/ + UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, /* Operation is not allowed at this state*/ + UNC_UPPL_RC_ERR_INVALID_OPTION1, /* Not a valid option1 */ + UNC_UPPL_RC_ERR_INVALID_OPTION2, /* Not a valid option2 */ + UNC_UPPL_RC_ERR_CFG_SYNTAX, /* Syntax check failed */ + UNC_UPPL_RC_ERR_CFG_SEMANTIC, /* Semantic check failed */ + UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, /* parent does not exist */ + UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, /* required instance does not exist */ + UNC_UPPL_RC_ERR_INSTANCE_EXISTS, /* instance already exists */ + UNC_UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, /* Exceeds resource limit */ + UNC_UPPL_RC_ERR_DB_ACCESS, /* Error while accessing Database */ + UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY, /* operation not allowed in SBY */ + UNC_UPPL_RC_ERR_RESOURCE_DISCONNECTED, /* resource disconnected*/ + UNC_UPPL_RC_ERR_INVALID_STATE, /* Invalid state */ + UNC_UPPL_RC_ERR_MERGE_CONFLICT, /* Merge conflict */ + UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION, /* Fatal resource allocation */ + UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE, /* communication with driver failed*/ + UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE,/* communication with upll failed */ + UNC_UPPL_RC_ERR_SHUTTING_DOWN, /* process is shutting down */ + UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, /* IPC write error */ + UNC_UPPL_RC_ERR_DB_UPDATE, /* DB update error */ + UNC_UPPL_RC_ERR_DB_GET, /* DB Get error */ + UNC_UPPL_RC_ERR_DB_DELETE, /* DB delete error */ + UNC_UPPL_RC_ERR_DB_CREATE, /* DB create error */ + UNC_UPPL_RC_ERR_CANDIDATE_IS_DIRTY, /* candidate is dirty */ + UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_FOUND, /* could not find the required attribute */ + UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED, /* Unsupported notification */ + UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED, /* Notification handling failed */ + UNC_UPPL_RC_ERR_ALARM_API, /* Alarm API failure*/ + UNC_UPPL_RC_ERR_CONF_FILE_READ, /* Error reading configuration file */ + UNC_UPPL_RC_ERR_CAP_FILE_READ, /* Error in reading capability file */ + UNC_UPPL_RC_ERR_DB_OPER_STATUS, /* DB status error */ + UNC_UPPL_RC_ERR_CTRLR_DISCONNECTED, /* Controller is disconnected for state read */ + UNC_UPPL_RC_ERR_AUDIT_NOT_IN_PROGRESS, /* audit not in progress */ + UNC_UPPL_RC_ERR_FATAL_COPY_CONFIG, /* copying running DB to startup DB failed */ + UNC_UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING, /* DB connection error while copying + candidate DB to running DB */ + UNC_UPPL_RC_ERR_COPY_CANDID_TO_RUNNING, /* Error in copying candidate to running DB + while startup*/ + UNC_UPPL_RC_ERR_COPY_RUNNING_TO_CANDID, /* copy running to candidate database failed in + abort candidate */ + UNC_UPPL_RC_ERR_INVALID_CANDID_CONFIG, + UNC_UPPL_RC_ERR_WRITE_ENTITY_DB, + UNC_UPPL_RC_ERR_COPY_RUNNING_TO_START, + UNC_UPPL_RC_ERR_COPY_STARTUP_TO_CANDID, + UNC_UPPL_RC_ERR_CLEAR_DB, + UNC_UPPL_RC_ERR_IMPORT_START_INVALID_DRIVER_RESPONSE, + UNC_UPPL_RC_ERR_IMPORT_FAILURE, + UNC_UPPL_RC_ERR_IMPORT_MERGE_FAILURE, + UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED, + UNC_UPPL_RC_ERR_COMMIT_UPDATE_DRIVER_FAILURE, + UNC_UPPL_RC_ERR_TRANSACTION_START, + UNC_UPPL_RC_ERR_INVALID_TRANSACT_START_REQ, + UNC_UPPL_RC_ERR_TRANSACTION_START_INVALID_DRIVER_RESPONSE, + UNC_UPPL_RC_ERR_VOTE_DB_INVALID, + UNC_UPPL_RC_ERR_VOTE_INVALID_REQ, + UNC_UPPL_RC_ERR_AUDIT_FAILURE, + UNC_UPPL_RC_ERR_IMPORT_IN, + UNC_UPPL_RC_ERR_ABORT_AUDIT, + UNC_UPPL_RC_ERR_ABORT_TRANSACTION, + UNC_UPPL_RC_ERR_MANDATORY_ATTRIB_NULL_VALUE, + UNC_UPPL_RC_ERR_MANDATORY_ATTRIB_INVALID, + + /*Driver response codes*/ + UNC_DRV_RC_ERR_GENERIC = 3000, /* internal/generic errors */ + UNC_DRV_RC_DAEMON_INACTIVE, /* driver daemon is not up */ + UNC_DRV_RC_INVALID_REQUEST_FORMAT, /* invalid request format */ + UNC_DRV_RC_INVALID_SESSION_ID, /* invalid session id */ + UNC_DRV_RC_INVALID_CONFIG_ID, /* invalid config id */ + UNC_DRV_RC_INVALID_OPERATION, /* invalid operation */ + UNC_DRV_RC_INVALID_OPTION1, /* invalid option1 */ + UNC_DRV_RC_INVALID_OPTION2, /* invalid option2 */ + UNC_DRV_RC_INVALID_DATATYPE, /* invalid data type */ + UNC_DRV_RC_INVALID_KEYTYPE, /* invalid key type */ + UNC_DRV_RC_MISSING_KEY_STRUCT, /* missing key structure */ + UNC_DRV_RC_MISSING_VAL_STRUCT, /* missing value structure */ + UNC_DRV_RC_ERR_ATTRIBUTE_SYNTAX, /* attribute syntax error */ + UNC_DRV_RC_ERR_ATTRIBUTE_SEMANTIC, /* attribute semantic error */ + UNC_DRV_RC_ERR_NOT_SUPPORTED_BY_CTRLR, /* capa check error */ + + /*Transaction errors*/ + UNC_RC_INTERNAL_ERR = 4000, /* Internal error in any of the modules*/ + UNC_RC_CONFIG_INVAL, /* invalid configuiration */ + UNC_RC_CTRLAPI_FAILURE, /* controller api failed */ + UNC_RC_CTR_CONFIG_STATUS_ERR, /* controller configuration status is not confirmed */ + UNC_RC_CTR_BUSY, /* acquiring config mode failed in controller */ + UNC_RC_CTR_DISCONNECTED, /* controller disconnected/down */ + UNC_RC_REQ_NOT_SENT_TO_CTR, /* request not sent to controller */ + UNC_RC_NO_SUCH_INSTANCE /* request for unknown attribute */ +}UncRespCode; #ifdef __cplusplus } /* End of extern "C" */ diff --git a/coordinator/include/unc/unc_dataflow.h b/coordinator/include/unc/unc_dataflow.h new file mode 100644 index 00000000..f0a58acc --- /dev/null +++ b/coordinator/include/unc/unc_dataflow.h @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef _UNC_DATAFLOW_H_ +#define _UNC_DATAFLOW_H_ + +/** + * @brief UNC Dataflow Header + * @file unc_dataflow.h + * @author HCL + * @date Sep-2013 + * @version SYSTEM:UNC 1.0 + * + */ + +typedef enum { + kidxDfDataFlowReason = 0, + kidxDfDataFlowControllerCount +} unc_val_df_dataflow_index; + +typedef enum { + kidxDfDataFlowStPackets = 0, + kidxDfDataFlowStOctets, + kidxDfDataFlowStDuration +} unc_val_df_dataflow_st_index; + +typedef enum { + kidxDfDataFlowPathInfoSwitchId = 0, + kidxDfDataFlowPathInfoInPort, + kidxDfDataFlowPathInfoOutPort +} unc_val_df_dataflow_path_info_index; + +typedef enum { + kidxDfDataFlowControllerName = 0, + kidxDfDataFlowControllerType, + kidxDfDataFlowFlowId, + kidxDfDataFlowStatus, + kidxDfDataFlowFlowType, + kidxDfDataFlowPolicyIndex, + kidxDfDataFlowVtnId, + kidxDfDataFlowIngressSwitchId, + kidxDfDataFlowInPort, + kidxDfDataFlowInStationId, + kidxDfDataFlowInDomain, + kidxDfDataFlowEgressSwitchId, + kidxDfDataFlowOutPort, + kidxDfDataFlowOutStationId, + kidxDfDataFlowOutDomain, + kidxDfDataFlowPathInfoCount, + kidxDfDataFlowMatchCount, + kidxDfDataFlowActionCount +} unc_val_df_dataflow_cmn_index; + +typedef enum { + UNC_DF_RES_SUCCESS = 0, + /* If traversed PFC version is 5.0 */ + UNC_DF_RES_OPERATION_NOT_SUPPORTED, + /* If flow count exceeds across a boundary by certain limit */ + UNC_DF_RES_EXCEEDS_FLOW_LIMIT, + /* If traversed PFC is disconnected */ + UNC_DF_RES_CTRLR_DISCONNECTED, + /* If flow traversal exceeds by certain hop limit */ + UNC_DF_RES_EXCEEDS_HOP_LIMIT, + /* If target controller is not able to find for a VNP/BYPASS */ + UNC_DF_RES_DST_NOT_REACHED, + /* If flow not found in target PFC */ + UNC_DF_RES_FLOW_NOT_FOUND, + /* If any system level error at UNC */ + UNC_DF_RES_SYSTEM_ERROR +}UncDataflowReason; + +typedef enum { + UNC_DF_STAT_INIT = 0, + UNC_DF_STAT_ACTIVATING, + UNC_DF_STAT_ACTIVE, + UNC_DF_STAT_SWITCHING +}UncDataflowStatus; + +typedef enum { + UNC_DF_TYPE_VTN = 0 +}UncDataflowFlowType; + +typedef enum { + UNC_MATCH_IN_PORT = 0, + UNC_MATCH_DL_SRC, + UNC_MATCH_DL_DST, + UNC_MATCH_DL_TYPE, + UNC_MATCH_VLAN_ID, + UNC_MATCH_VLAN_PCP, + UNC_MATCH_IP_TOS, + UNC_MATCH_IP_PROTO, + UNC_MATCH_IPV4_SRC, + UNC_MATCH_IPV4_DST, + UNC_MATCH_IPV6_SRC, + UNC_MATCH_IPV6_DST, + UNC_MATCH_TP_SRC, + UNC_MATCH_TP_DST +}UncDataflowFlowMatchType; + +typedef enum { + UNC_MATCH_MASK_INVALID = 0, + UNC_MATCH_MASK_VALID +}UncDataflowFlowMatchMask; + +typedef enum { + UNC_ACTION_OUTPUT = 0, + UNC_ACTION_SET_ENQUEUE, + UNC_ACTION_SET_DL_SRC, + UNC_ACTION_SET_DL_DST, + UNC_ACTION_SET_VLAN_ID, + UNC_ACTION_SET_VLAN_PCP, + UNC_ACTION_STRIP_VLAN, + UNC_ACTION_SET_IPV4_SRC, + UNC_ACTION_SET_IPV4_DST, + UNC_ACTION_SET_IP_TOS, + UNC_ACTION_SET_TP_SRC, + UNC_ACTION_SET_TP_DST, + UNC_ACTION_SET_IPV6_SRC, + UNC_ACTION_SET_IPV6_DST +}UncDataflowFlowActionType; + +#endif // _UNC_DATAFLOW_H_ + diff --git a/coordinator/include/unc/upll_errno.h b/coordinator/include/unc/upll_errno.h index 05807484..5661a1cf 100644 --- a/coordinator/include/unc/upll_errno.h +++ b/coordinator/include/unc/upll_errno.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,51 +10,69 @@ #ifndef UNC_UPLL_ERRNO_H_ #define UNC_UPLL_ERRNO_H_ -#include "base.h" +#include "unc/unc_base.h" +#include "unc/base.h" UNC_C_BEGIN_DECL /* Error numbers returned by UPLL Service */ typedef enum { - UPLL_RC_SUCCESS = 0, /* Request successfully processed */ - UPLL_RC_ERR_GENERIC, /* Generic error */ - UPLL_RC_ERR_BAD_REQUEST, /* The request message format is bad */ - UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID, /* The given session does not have the - config lock */ - UPLL_RC_ERR_NO_SUCH_OPERATION, /* Not a valid operation */ - UPLL_RC_ERR_INVALID_OPTION1, /* Not a valid option1 */ - UPLL_RC_ERR_INVALID_OPTION2, /* Not a valid option2 */ - UPLL_RC_ERR_CFG_SYNTAX, /* Syntax check failed */ - UPLL_RC_ERR_CFG_SEMANTIC, /* Semantic check failed */ - UPLL_RC_ERR_RESOURCE_DISCONNECTED, /* Resource (DBMS, Physical, Driver) is - diconnected */ - UPLL_RC_ERR_DB_ACCESS, /* DBMS access (read / write / - transacation) failure */ - UPLL_RC_ERR_NO_SUCH_INSTANCE, /* Instance specified by key does not - exist */ - UPLL_RC_ERR_NO_SUCH_NAME, /* The specified keytype is unknown */ - UPLL_RC_ERR_NO_SUCH_DATATYPE, /* The specified datatype is unknown */ - UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, /* The operation not supported by - controller */ - UPLL_RC_ERR_NOT_SUPPORTED_BY_STANDBY, /* The operation not supported by - standby UPLL */ - UPLL_RC_ERR_PARENT_DOES_NOT_EXIST, /* For creating the given keytype - instance, its parent does not - exist */ - UPLL_RC_ERR_INSTANCE_EXISTS, /* The given keytype instance cannot be - created because it already exists */ - UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, /* Not allowed for this datatype */ - UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT, /* Not allowed for this KT */ - UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME, /* Not allowed for at this time */ - UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, /* The given operation exceeds the - resource limit */ - UPLL_RC_ERR_MERGE_CONFLICT, /* Merge failed as there is a merge - conflict */ - UPLL_RC_ERR_CANDIDATE_IS_DIRTY, /* The operation could not be performed - because there are uncommited changes - in the candidate configuration */ - UPLL_RC_ERR_SHUTTING_DOWN /* UPLL daemon is shutting down and - cannot process the request */ + /* Request successfully processed */ + UPLL_RC_SUCCESS = UNC_RC_SUCCESS, + /* Generic error */ + UPLL_RC_ERR_GENERIC = UNC_UPLL_RC_ERR_GENERIC, + /* The request message format is bad */ + UPLL_RC_ERR_BAD_REQUEST = UNC_UPLL_RC_ERR_BAD_REQUEST, + /* The given session does not have the config lock */ + UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID = + UNC_UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID, + /* Not a valid operation */ + UPLL_RC_ERR_NO_SUCH_OPERATION = UNC_UPLL_RC_ERR_NO_SUCH_OPERATION, + /* Not a valid option1 */ + UPLL_RC_ERR_INVALID_OPTION1 = UNC_UPLL_RC_ERR_INVALID_OPTION1, + /* Not a valid option2 */ + UPLL_RC_ERR_INVALID_OPTION2 = UNC_UPLL_RC_ERR_INVALID_OPTION2, + /* Syntax check failed */ + UPLL_RC_ERR_CFG_SYNTAX = UNC_UPLL_RC_ERR_CFG_SYNTAX, + /* Semantic check failed */ + UPLL_RC_ERR_CFG_SEMANTIC = UNC_UPLL_RC_ERR_CFG_SEMANTIC, + /* Resource (DBMS, Physical, Driver) is disconnected */ + UPLL_RC_ERR_RESOURCE_DISCONNECTED = UNC_UPLL_RC_ERR_RESOURCE_DISCONNECTED, + /* DBMS access (read / write / transacation) failure */ + UPLL_RC_ERR_DB_ACCESS = UNC_UPLL_RC_ERR_DB_ACCESS, + /* Instance specified by key does not exist */ + UPLL_RC_ERR_NO_SUCH_INSTANCE = UNC_UPLL_RC_ERR_NO_SUCH_INSTANCE, + /* The specified keytype is unknown */ + UPLL_RC_ERR_NO_SUCH_NAME = UNC_UPLL_RC_ERR_NO_SUCH_NAME, + /* The specified datatype is unknown */ + UPLL_RC_ERR_NO_SUCH_DATATYPE = UNC_UPLL_RC_ERR_NO_SUCH_DATATYPE, + /* The operation not supported by controller */ + UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR = UNC_UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + /* The operation not supported by standby UPLL */ + UPLL_RC_ERR_NOT_SUPPORTED_BY_STANDBY = + UNC_UPLL_RC_ERR_NOT_SUPPORTED_BY_STANDBY, + /* For creating the given keytype instance, its parent does not exist */ + UPLL_RC_ERR_PARENT_DOES_NOT_EXIST = UNC_UPLL_RC_ERR_PARENT_DOES_NOT_EXIST, + /* The given keytype instance cannot be created because it already exists */ + UPLL_RC_ERR_INSTANCE_EXISTS = UNC_UPLL_RC_ERR_INSTANCE_EXISTS, + /* Not allowed for this datatype */ + UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT = UNC_UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, + /* Not allowed for this KT */ + UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT = UNC_UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT, + /* Not allowed for at this time */ + UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME = + UNC_UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME, + /* The given operation exceeds the resource limit */ + UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT = UNC_UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, + /* Merge failed as there is a merge conflict */ + UPLL_RC_ERR_MERGE_CONFLICT = UNC_UPLL_RC_ERR_MERGE_CONFLICT, + /* The operation could not be performed because there are uncommited changes + * in the candidate configuration */ + UPLL_RC_ERR_CANDIDATE_IS_DIRTY = UNC_UPLL_RC_ERR_CANDIDATE_IS_DIRTY, + /* UPLL daemon is shutting down and cannot process the request */ + UPLL_RC_ERR_SHUTTING_DOWN = UNC_UPLL_RC_ERR_SHUTTING_DOWN, + /* Controller disconnected error */ + UPLL_RC_ERR_CTR_DISCONNECTED = UNC_RC_CTR_DISCONNECTED } upll_rc_t; UNC_C_END_DECL diff --git a/coordinator/include/unc/upll_ipc_enum.h b/coordinator/include/unc/upll_ipc_enum.h index ed42a587..c82819a4 100644 --- a/coordinator/include/unc/upll_ipc_enum.h +++ b/coordinator/include/unc/upll_ipc_enum.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -626,6 +626,57 @@ enum val_policingmap_controller_index { UPLL_IDX_SEQ_NUM_PMC = 0 /* sequence_num */ }; +/* valid array enum in val_vtn_dataflow_cmn */ +enum val_vtn_dataflow_cmn_index { + UPLL_IDX_CONTROLLER_ID_VVDC = 0, /* Controller id */ + UPLL_IDX_CONTROLLER_TYPE_VVDC, /* Controller type */ + UPLL_IDX_FLOW_ID_VVDC, /* Flow id */ + UPLL_IDX_CREATED_TIME_VVDC, /* Created time */ + UPLL_IDX_IDLE_TIMEOUT_VVDC, /* Idle timeout */ + UPLL_IDX_HARD_TIMEOUT_VVDC, /* Hard timeout */ + UPLL_IDX_INGRESS_VNODE_VVDC, /* Ingress vNode */ + UPLL_IDX_INGRESS_VINTERFACE_VVDC, /* Ingress vNode interface */ + UPLL_IDX_INGRESS_SWITCH_ID_VVDC, /* Ingress switch id */ + UPLL_IDX_INGRESS_PORT_ID_VVDC, /* Ingress port id */ + UPLL_IDX_INGRESS_LOGICAL_PORT_ID_VVDC, /* Ingress logical port id */ + UPLL_IDX_INGRESS_DOMAIN_VVDC, /* Ingress domain */ + UPLL_IDX_EGRESS_VNODE_VVDC, /* Egress vNode */ + UPLL_IDX_EGRESS_VINTERFACE_VVDC, /* Egress vNode interface */ + UPLL_IDX_EGRESS_SWITCH_ID_VVDC, /* Egress switch id */ + UPLL_IDX_EGRESS_PORT_ID_VVDC, /* Egress port id */ + UPLL_IDX_EGRESS_LOGICAL_PORT_ID_VVDC, /* Ingress logical port id */ + UPLL_IDX_EGRESS_DOMAIN_VVDC, /* Egress domain */ + UPLL_IDX_MATCH_COUNT_VVDC, /* Number of match */ + UPLL_IDX_ACTION_COUNT_VVDC, /* Number of count */ + UPLL_IDX_PATH_INFO_COUNT_VVDC /* Number of path */ +}; + +/* valid array enum in val_vtn_dataflow_path_info */ +enum val_vtn_dataflow_path_info_index { + UPLL_IDX_IN_VNODE_VVDPI = 0, /* In VTN node */ + UPLL_IDX_IN_VIF_VVDPI, /* In VTN interface */ + UPLL_IDX_OUT_VNODE_VVDPI, /* Out VTN node */ + UPLL_IDX_OUT_VIF_VVDPI, /* Out VTN interface */ + UPLL_IDX_VLINK_FLAG_VVDPI, /* Vlink flag */ + UPLL_IDX_STATUS_VVDPI /* flow status */ +}; + +enum val_vtn_dataflow_status { + UPLL_DATAFLOW_PATH_STATUS_NORMAL_=0, /* Normal data flow */ + UPLL_DATAFLOW_PATH_STATUS_DROP /* Dropped data flow */ +}; + +enum val_vtn_dataflow_vlink_flag { + UPLL_DATAFLOW_PATH_VLINK_NOT_EXISTS_ =0, /* Vlink Not Exist */ + UPLL_DATAFLOW_PATH_VLINK_EXISTS /* Vlink Exist */ +}; + +enum val_vtn_dataflow_index { + UPLL_IDX_REASON_VVD = 0, /* Reason */ + UPLL_IDX_CTRLR_DOMAIN_COUNT_VVD /* Hop count */ +}; + + UNC_C_END_DECL #endif /* IPC_UPLL_IPC_ENUM_H_*/ diff --git a/coordinator/include/unc/uppl_common.h b/coordinator/include/unc/uppl_common.h index 563c751a..5a70bdcf 100644 --- a/coordinator/include/unc/uppl_common.h +++ b/coordinator/include/unc/uppl_common.h @@ -1,8 +1,5 @@ -#ifndef _UPPL_COMMON_H_ -#define _UPPL_COMMON_H_ - /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,6 +7,9 @@ * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ +#ifndef UNC_UPPL_COMMON_H_ +#define UNC_UPPL_COMMON_H_ + /** * @brief UPPL Common Header * @file uppl_common.h @@ -19,7 +19,6 @@ * */ - /* * @brief System State */ @@ -27,6 +26,10 @@ #define UPPL_IPC_CHN_NAME "phynwd" #define UPPL_IPC_SVC_NAME "uppl" +#define UPPL_LP_STANDARD_SD_DESC "PF Standard Subdomain" +#define UPPL_LP_EXTENSION_SD_DESC "PF Extension Subdomain" +#define UPPL_LP_MAC_FORWARDING_DESC "PF MAC Forwarding Subdomain" + typedef enum { UPPL_SYSTEM_ST_ACTIVE = 0, UPPL_SYSTEM_ST_STANDBY @@ -68,10 +71,10 @@ typedef enum { // Enum for the structure val_path_fault_alarm typedef enum { - kIdxIngressLogicalPort = 0, - kIdxEgressLogicalPort, - kIdxIngressNoOfPorts, - kIdxEgressNoOfPorts + kIdxIngressLogicalPort = 0, + kIdxEgressLogicalPort, + kIdxIngressNoOfPorts, + kIdxEgressNoOfPorts }uppl_val_path_fault_alarm_index; /* @@ -167,6 +170,11 @@ typedef enum { kIdxSwitchAlarmStatus }uppl_val_switch_st_index; +typedef enum { + kIdxSwitchSt = 0, + kIdxSwitchStatFlowCount +}uppl_val_switch_st_detail_index; + /* * KT_PORT specific */ @@ -210,6 +218,22 @@ typedef enum { kIdxPortLogicalPortId }uppl_val_port_st_index; +typedef enum { + kIdxPortStatSt = 0, + kIdxPortStatRxPackets, + kIdxPortStatTxPackets, + kIdxPortStatRxBytes, + kIdxPortStatTxBytes, + kIdxPortStatRxDropped, + kIdxPortStatTxDropped, + kIdxPortStatRxErrors, + kIdxPortStatTxErrors, + kIdxPortStatRxFrameErr, + kIdxPortStatRxOverErr, + kIdxPortStatRxCrcErr, + kIdxPortStatCollisions +}uppl_val_port_stats_index; + typedef enum { kIdxPort = 0, kIdxPortConnectedSwitchId, @@ -258,83 +282,7 @@ typedef enum { kIdxBoundaryStOperStatus }uppl_val_boundary_st_index; -/* - * @brief DB Return Status and (Error Code) - */ -typedef enum { - UPPL_RC_SUCCESS = 0, - UPPL_RC_FAILURE, - UPPL_RC_ERR_BAD_REQUEST, - UPPL_RC_ERR_INVALID_CONFIGID, - UPPL_RC_ERR_INVALID_SESSIONID, - UPPL_RC_ERR_VERSION_NOT_SUPPORTED, - UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED, - UPPL_RC_ERR_DATATYPE_NOT_SUPPORTED, - UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED, - UPPL_RC_ERR_OPERATION_NOT_SUPPORTED, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED, - UPPL_RC_ERR_INVALID_OPTION1, - UPPL_RC_ERR_INVALID_OPTION2, - UPPL_RC_ERR_CFG_SYNTAX, - UPPL_RC_ERR_CFG_SEMANTIC, - UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, - UPPL_RC_ERR_NO_SUCH_INSTANCE, - UPPL_RC_ERR_INSTANCE_EXISTS, - UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, - UPPL_RC_ERR_DB_ACCESS, - UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY, - UPPL_RC_ERR_RESOURCE_DISCONNECTED, - UPPL_RC_ERR_INVALID_STATE, - UPPL_RC_ERR_MERGE_CONFLICT, - UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION, - UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE, - UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE, - UPPL_RC_ERR_SHUTTING_DOWN, - UPPL_RC_ERR_IPC_WRITE_ERROR, - UPPL_RC_ERR_DB_UPDATE, - UPPL_RC_ERR_DB_GET, - UPPL_RC_ERR_DB_DELETE, - UPPL_RC_ERR_DB_CREATE, - UPPL_RC_ERR_CANDIDATE_IS_DIRTY, - UPPL_RC_ERR_ATTRIBUTE_NOT_FOUND, - - UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED, - UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED, - UPPL_RC_ERR_ALARM_API, - - UPPL_RC_ERR_CONF_FILE_READ, - UPPL_RC_ERR_CAP_FILE_READ, - - UPPL_RC_ERR_DB_OPER_STATUS, - - UPPL_RC_ERR_AUDIT_NOT_IN_PROGRESS, - UPPL_RC_ERR_FATAL_COPY_CONFIG, - UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING, - UPPL_RC_ERR_COPY_CANDID_TO_RUNNING, - UPPL_RC_ERR_COPY_RUNNING_TO_CANDID, - UPPL_RC_ERR_INVALID_CANDID_CONFIG, - UPPL_RC_ERR_WRITE_ENTITY_DB, - UPPL_RC_ERR_COPY_RUNNING_TO_START, - UPPL_RC_ERR_COPY_STARTUP_TO_CANDID, - UPPL_RC_ERR_CLEAR_DB, - UPPL_RC_ERR_IMPORT_START_INVALID_DRIVER_RESPONSE, - UPPL_RC_ERR_IMPORT_FAILURE, - UPPL_RC_ERR_IMPORT_MERGE_FAILURE, - UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED, - UPPL_RC_ERR_COMMIT_UPDATE_DRIVER_FAILURE, - UPPL_RC_ERR_TRANSACTION_START, - UPPL_RC_ERR_INVALID_TRANSACT_START_REQ, - UPPL_RC_ERR_TRANSACTION_START_INVALID_DRIVER_RESPONSE, - UPPL_RC_ERR_VOTE_DB_INVALID, - UPPL_RC_ERR_VOTE_INVALID_REQ, - UPPL_RC_ERR_AUDIT_FAILURE, - UPPL_RC_ERR_IMPORT_IN, - UPPL_RC_ERR_ABORT_AUDIT, - UPPL_RC_ERR_ABORT_TRANSACTION, - UPPL_RC_ERR_MANDATORY_ATTRIB_NULL_VALUE, - UPPL_RC_ERR_MANDATORY_ATTRIB_INVALID, -}UpplReturnCode; typedef enum { UPPL_SVC_CONFIGREQ = 0, @@ -357,13 +305,13 @@ typedef enum { /*Alarm type enumeration body*/ typedef enum { UPPL_ALARMS_PATH_FAULT = 0, /*Physical Path Fault/Recovery*/ - UPPL_ALARMS_OFS_BC_CORE_DOMAIN_SPLIT, /* Broadcast Core Domain Split/Recovery*/ - UPPL_ALARMS_OFS_BC_SUB_DOMAIN_SPLIT, /* Broadcast Sub Domain Split/Recovery*/ + UPPL_ALARMS_OFS_BC_CORE_DOMAIN_SPLIT, /* BC Core Domain Split/Recovery*/ + UPPL_ALARMS_OFS_BC_SUB_DOMAIN_SPLIT, /* BC Sub Domain Split/Recovery*/ UPPL_ALARMS_FLOW_ENT_FULL, /*FlowEntry Full Occurred/Recovery*/ UPPL_ALARMS_DEFAULT_FLOW, /*Default Flow Failure/Success*/ UPPL_ALARMS_PORT_DIRECTION, /*Port direction is inconsistent/consistent*/ UPPL_ALARMS_PORT_CONGES, /*OFS Port Congestion Occurred/Recovered*/ - UPPL_ALARMS_OFS_LACK_FEATURES,/*OFS is lack of features/OFS has recovered lack of features*/ + UPPL_ALARMS_OFS_LACK_FEATURES,/*OFS has lack of features/recovered it*/ } uppl_alarm_type_t; /* @@ -399,6 +347,4 @@ typedef enum { UNC_OP_CLEAR_IMPORT_CONFIG } unc_addl_operation_t; - -#endif // _UPPL_COMMON_H_ - +#endif // UNC_UPPL_COMMON_H_ diff --git a/coordinator/include/uncxx/dataflow.hh b/coordinator/include/uncxx/dataflow.hh new file mode 100644 index 00000000..16deca68 --- /dev/null +++ b/coordinator/include/uncxx/dataflow.hh @@ -0,0 +1,250 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef UNC_DATAFLOW_UTIL_HH_ +#define UNC_DATAFLOW_UTIL_HH_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "pfcxx/module.hh" +#include "pfcxx/synch.hh" +#include "unc/upll_ipc_enum.h" +#include + +using std::vector; +using std::map; +using std::stack; +using std::string; +using std::stringstream; +using std::endl; +using pfc::core::ipc::ServerSession; +using pfc::core::ipc::ClientSession; + +#include "unc/unc_dataflow.h" + +#define kMaxLenCtrlrDomId 31 + +namespace unc { +namespace dataflow { + +enum IpctStructNum { + kidx_val_df_data_flow_cmn = 0, + kidx_val_vtn_dataflow_cmn +}; + +struct key_vtn_ctrlr_dataflow { + key_vtn vtn_key; + uint8_t ctrlr[32]; + uint8_t domain[32]; + uint16_t vlanid; + uint8_t src_mac_address[6]; + key_vtn_ctrlr_dataflow(key_vtn_dataflow_t *key_vtn_df, uint8_t *in_ctrlr, + uint8_t *in_dom) { + vtn_key = key_vtn_df->vtn_key; + vlanid = key_vtn_df->vlanid; + memcpy(ctrlr, in_ctrlr, sizeof(ctrlr)); + memcpy(domain, in_dom, sizeof(domain)); + memcpy(src_mac_address, key_vtn_df->src_mac_address, sizeof(src_mac_address)); + + } +}; + + +typedef struct actions_vect_st { + UncDataflowFlowActionType action_type; + void *action_st_ptr; +} val_actions_vect_st; + +class AddlData { + public: + AddlData(); + ~AddlData(); + uint32_t reason; + uint32_t controller_count; + uint32_t max_dom_traversal_count; + uint32_t current_traversal_count; + map traversed_controllers; + string nonpfc_ingr_bdry_id; +}; + +class DataflowDummy : public pfc::core::Module { + public: + explicit DataflowDummy(const pfc_modattr_t *attr); + + pfc_bool_t init(); + pfc_bool_t fini(); + static DataflowDummy* get_dataflow_dummy(); + private: + static DataflowDummy* dataflow_dummy_; +}; + +class DataflowCmn; + +class DataflowDetail { + public: + DataflowDetail(IpctStructNum df_type, unc_keytype_ctrtype_t ctr_type = UNC_CT_PFC); + ~DataflowDetail(); + // Read the DataflowCmn details from session as mentioned in FD API doc + int sessReadDataflow(ClientSession& sess, uint32_t& getres_pos); + val_df_data_flow_cmn_t *df_common; + val_vtn_dataflow_cmn_t *vtn_df_common; + map matches; + vector actions; + vector path_infos; + vector vtn_path_infos; + void *ckv_egress; + uint32_t flow_traversed; + IpctStructNum st_num_; +}; + +class DataflowCmn { + public: + DataflowCmn(bool isHead, DataflowDetail *df_segm); + ~DataflowCmn(); + DataflowDetail *df_segment; + bool is_head; + map output_matches; + vector next; + DataflowCmn *head; + AddlData *addl_data; + uint32_t total_flow_count; + bool is_vlan_src_mac_changed_; + DataflowCmn *parent_node; + + std::string ToStr(); + // Write the DataflowCmn details into session as mentioned in FD API doc + int sessOutDataflow(ServerSession& sess, int& putresp_pos); + // Append given nextCtrlrFlow to 'next' vector + UncDataflowReason appendFlow(DataflowCmn* nextCtrlrFlow + , map & ctrlr_dom_count_map); + + // check given 'output_matches' against 'matches' + bool check_match_condition(map output_matches); + // Apply 'actions' to 'matches' and fill 'output_matches' + void apply_action(); + bool CompareDataflow(DataflowCmn *otherflow); + + static string get_string(const AddlData *ptr); + static string get_string(const key_dataflow_t &k); + static string get_string(const key_ctr_dataflow_t &k); + + static string get_string(const val_df_data_flow_cmn_t &val_obj); + + static string get_string(const val_df_flow_match_t &val_obj); + static string get_string(const val_df_flow_match_in_port_t &val_obj); + static string get_string(const val_df_flow_match_dl_addr_t &val_obj); + static string get_string(const val_df_flow_match_dl_type_t &val_obj); + static string get_string(const val_df_flow_match_vlan_id_t &val_obj); + static string get_string(const val_df_flow_match_vlan_pcp_t &val_obj); + static string get_string(const val_df_flow_match_ip_tos_t &val_obj); + static string get_string(const val_df_flow_match_ip_proto_t &val_obj); + static string get_string(const val_df_flow_match_ipv4_addr_t &val_obj); + static string get_string(const val_df_flow_match_tp_port_t &val_obj); + static string get_string(const val_df_flow_match_ipv6_addr_t &val_obj); + + static string get_string(const val_df_flow_action_t &val_obj); + static string get_string(const val_df_flow_action_output_port_t &val_obj); + static string get_string(const val_df_flow_action_enqueue_port_t &val_obj); + static string get_string(const val_df_flow_action_set_dl_addr_t &val_obj); + static string get_string(const val_df_flow_action_set_vlan_id_t &val_obj); + static string get_string(const val_df_flow_action_set_vlan_pcp_t &val_obj); + static string get_string(const val_df_flow_action_set_ipv4_t &val_obj); + static string get_string(const val_df_flow_action_set_ip_tos_t &val_obj); + static string get_string(const val_df_flow_action_set_tp_port_t &val_obj); + static string get_string(const val_df_flow_action_set_ipv6_t &val_obj); + + static string get_string(const val_df_data_flow_path_info_t &val_obj); + static bool Compare(const key_dataflow_t& lhs, const key_dataflow_t& rhs); + void deep_copy(); + /* VTN */ + static string get_string(const key_vtn_dataflow_t &k); + static string get_string(const val_vtn_dataflow_path_info_t &val_obj); + static string get_string(const val_vtn_dataflow_cmn_t &val_obj); + static bool Compare(const key_vtn_ctrlr_dataflow& lhs, const key_vtn_ctrlr_dataflow& rhs); + bool CompareVtnDataflow(DataflowCmn *otherflow); + +}; + +struct KeyDataflowCmp { + bool operator()(const key_dataflow_t& lhs, const key_dataflow_t& rhs); +}; + + + +struct KeyVtnDataflowCmp { + bool operator()(const key_vtn_ctrlr_dataflow &lhs, const key_vtn_ctrlr_dataflow &rhs); +}; + +class DataflowUtil { + public: + ~DataflowUtil(); + // Write the DataflowCmn details into NB session as mentioned in FD API doc + int sessOutDataflows(ServerSession& sess); + + // Method for PFCDriver module. Write the DataflowCmn details + // into physical session as mentioned in FD API doc + int sessOutDataflowsFromDriver(ServerSession& sess); + uint32_t storeFlowDetails(key_dataflow_t, vector ); + + uint32_t get_total_flow_count(); + // Append given firstCtrlrFlow to 'firstCtrlrFlows' vector + uint32_t appendFlow(DataflowCmn* firstCtrlrFlow); + + static string get_string(const val_df_data_flow_t &val_obj); + static string get_string(const val_df_data_flow_st_t &val_obj); + static string get_string(const val_vtn_dataflow_t &val_obj); + static bool checkMacAddress(uint8_t macaddr[6], uint8_t macaddr_mask[6] + , uint8_t checkmacaddr[6]); + static bool checkMacAddress(uint8_t macaddr[6], uint8_t macaddr_mask[6] + , uint8_t checkmacaddr[6] + , uint8_t checkmacaddr_mask[6]); + static bool checkIPv4Address(in_addr ipaddr, in_addr ip_mask + , in_addr checkipaddr); + static bool checkIPv4Address(uint32_t ipaddr, uint32_t ip_mask + , uint32_t checkipaddr); + static bool checkByte(uint8_t ipaddr, uint8_t ip_mask + , uint8_t checkipaddr); + static bool checkByte(uint8_t ipaddr, uint8_t ip_mask + , uint8_t checkipaddr, uint8_t chk_ip_mask); + static bool checkIPv4Address(in_addr ipaddr, in_addr ip_mask + , in_addr checkipaddr, in_addr chk_ip_mask); + static bool checkIPv4Address(uint32_t ipaddr, uint32_t ip_mask + , uint32_t checkipaddr, uint32_t chk_ip_mask); + static bool checkIPv6Address(in6_addr ipv6addr, in6_addr ipv6_mask + , in6_addr checkipv6addr); + static bool checkIPv6Address(in6_addr ipv6addr, in6_addr ipv6_mask + , in6_addr checkipv6addr, in6_addr chk_ipv6_mask); + static string getipstring(in_addr ipnaddr, int radix); + static string getipstring(uint32_t ipaddr, int radix); + static string getbytestring(uint8_t ipaddr, int radix); + + vector* get_firstCtrlrFlows() { + return &firstCtrlrFlows; + }; + std::map* get_ctrlr_dom_count_map() { + return &ctrlr_dom_count_map; + }; + std::map, KeyDataflowCmp > pfc_flows; + std::map, KeyVtnDataflowCmp > upll_pfc_flows; + std::map ctrlr_dom_count_map; + private: + vector firstCtrlrFlows; +}; + +} // namespace dataflow +} // namespace unc + +#endif // UNC_DATAFLOW_UTIL_HH_ diff --git a/coordinator/include/uncxx/tclib/tclib_interface.hh b/coordinator/include/uncxx/tclib/tclib_interface.hh index 372d8ae6..80616544 100644 --- a/coordinator/include/uncxx/tclib/tclib_interface.hh +++ b/coordinator/include/uncxx/tclib/tclib_interface.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -133,7 +133,7 @@ class TcLibInterface { /* audit related interfaces */ /** - * @brief Handling of audit start in audit operation + * @brief Handling of audit start in UPLL/UPPL for audit operation * @param[in] session_id * session on which audit request sent (user audit) * session id will be 0 for driver audit @@ -144,7 +144,24 @@ class TcLibInterface { */ virtual TcCommonRet HandleAuditStart(uint32_t session_id, unc_keytype_ctrtype_t ctr_type, - std::string controller_id)=0; + std::string controller_id) = 0; + + /** + * @brief Handling of audit start in driver modules for audit operation + * @param[in] session_id + * session on which audit request sent (user audit) + * session id will be 0 for driver audit + * @param[in] ctr_type controller type openflow/overlay/legacy + * @param[in] controller_id controller id intended for audit + * @param[in] force_reconnect set to audit controller after reconnecting. + * @retval TC_SUCCESS audit start success + * @retval TC_FAILURE audit start failed + */ + virtual TcCommonRet HandleAuditStart(uint32_t session_id, + unc_keytype_ctrtype_t ctr_type, + std::string controller_id, + pfc_bool_t force_reconnect) = 0; + /** * @brief Handling of audit end in audit operation diff --git a/coordinator/ipc/dataflow.ipct b/coordinator/ipc/dataflow.ipct new file mode 100644 index 00000000..2ef28ba4 --- /dev/null +++ b/coordinator/ipc/dataflow.ipct @@ -0,0 +1,218 @@ +# +# Copyright (c) 2013-2014 NEC Corporation +# All rights reserved. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License v1.0 which accompanies this +# distribution, and is available at http://www.eclipse.org/legal/epl-v10.html +# + +include "uppl.ipct"; +include "upll.ipct"; + +ipc_struct val_df_flow_match { + UINT32 match_type; +}; + +ipc_struct val_df_flow_match_in_port { + UINT32 in_port; +}; + +ipc_struct val_df_flow_match_dl_addr { + UINT8 dl_addr[6]; + UINT8 v_mask; + UINT8 dl_addr_mask[6]; +}; + +ipc_struct val_df_flow_match_dl_type { + UINT16 dl_type; +}; + +ipc_struct val_df_flow_match_vlan_id{ + UINT16 vlan_id; +}; + +ipc_struct val_df_flow_match_vlan_pcp { + UINT8 vlan_pcp; +}; + +ipc_struct val_df_flow_match_ip_tos { + UINT8 ip_tos; +}; + +ipc_struct val_df_flow_match_ip_proto { + UINT8 ip_proto; +}; + +ipc_struct val_df_flow_match_ipv4_addr { + IPV4 ipv4_addr; + UINT8 v_mask; + IPV4 ipv4_addr_mask; +}; + +ipc_struct val_df_flow_match_tp_port +{ + UINT16 tp_port; + UINT8 v_mask; + UINT16 tp_port_mask; +}; + +ipc_struct val_df_flow_match_ipv6_addr { + IPV6 ipv6_addr; + UINT8 v_mask; + IPV6 ipv6_addr_mask; +}; + + +ipc_struct val_df_flow_action { + UINT32 action_type; +}; + +ipc_struct val_df_flow_action_output_port { + UINT32 output_port; +}; + +ipc_struct val_df_flow_action_enqueue_port { + UINT32 output_port; + UINT16 enqueue_id; +}; + +ipc_struct val_df_flow_action_set_dl_addr { + UINT8 dl_addr[6]; +}; + +ipc_struct val_df_flow_action_set_vlan_id { + UINT16 vlan_id; +}; + +ipc_struct val_df_flow_action_set_vlan_pcp { + UINT8 vlan_pcp; +}; + +ipc_struct val_df_flow_action_set_ipv4 { + IPV4 ipv4_addr; +}; + +ipc_struct val_df_flow_action_set_ip_tos { + UINT8 ip_tos; +}; + +ipc_struct val_df_flow_action_set_tp_port { + UINT16 tp_port; +}; + +ipc_struct val_df_flow_action_set_ipv6 { + IPV6 ipv6_addr; +}; + +ipc_struct val_df_data_flow_path_info { + UINT8 switch_id[256]; + UINT8 in_port[32]; + UINT8 out_port[32]; + UINT8 valid[3]; +}; + +ipc_struct val_df_data_flow_cmn { + UINT8 controller_name[32]; + UINT8 controller_type; + UINT64 flow_id; + UINT32 status; + UINT32 flow_type; + UINT32 policy_index; + UINT32 vtn_id; + UINT8 ingress_switch_id[256]; + UINT8 in_port[32]; + UINT64 in_station_id; + UINT8 in_domain[32]; + UINT8 egress_switch_id[256]; + UINT8 out_port[32]; + UINT64 out_station_id; + UINT8 out_domain[32]; + UINT32 path_info_count; + UINT32 match_count; + UINT32 action_count; + UINT8 valid[18]; +}; + +ipc_struct val_df_data_flow { + UINT32 reason; + UINT32 controller_count; + UINT8 valid[2]; +}; + +ipc_struct val_df_data_flow_st { + UINT64 packets; + UINT64 octets; + UINT32 duration; + UINT8 valid[3]; +}; + + +## +## UNC_KT_DATAFLOW ipc structure +## +ipc_struct key_dataflow { + UINT8 controller_name[32]; + UINT8 switch_id[256]; + UINT8 port_id[32]; + UINT16 vlan_id; + UINT8 src_mac_address[6]; +}; + +## +## UNC_KT_CTR_DATAFLOW ipc structure +## +ipc_struct key_ctr_dataflow { + key_ctr ctr_key; + UINT64 flow_id; +}; + +ipc_struct key_vtn_dataflow { + key_vtn vtn_key; + UINT8 vnode_id[32]; + UINT16 vlanid; + UINT8 src_mac_address[6]; +}; + +ipc_struct val_vtn_dataflow { + UINT8 valid[2]; + UINT32 reason; + UINT32 ctrlr_domain_count; +}; + +ipc_struct val_vtn_dataflow_cmn { + UINT8 valid[21]; + UINT8 controller_id[32]; + UINT8 controller_type; + UINT64 flow_id; + UINT64 created_time; + UINT32 idle_timeout; + UINT32 hard_timeout; + UINT8 ingress_vnode[32]; + UINT8 ingress_vinterface[32]; + UINT8 ingress_switch_id[256]; + UINT8 ingress_port_id[32]; + UINT8 ingress_logical_port_id[320]; + UINT8 ingress_domain[32]; + UINT8 egress_vnode[32]; + UINT8 egress_vinterface[32]; + UINT8 egress_switch_id[256]; + UINT8 egress_port_id[32]; + UINT8 egress_logical_port_id[320]; + UINT8 egress_domain[32]; + UINT32 match_count; + UINT32 action_count; + UINT32 path_info_count; +}; + + +ipc_struct val_vtn_dataflow_path_info { + UINT8 valid[6]; + UINT8 in_vnode[32]; + UINT8 in_vif[32]; + UINT8 out_vnode[32]; + UINT8 out_vif[32]; + UINT8 vlink_flag; + UINT8 status; +}; + diff --git a/coordinator/ipc/pfcdriver.ipct b/coordinator/ipc/pfcdriver.ipct index 891f528a..b9d09429 100644 --- a/coordinator/ipc/pfcdriver.ipct +++ b/coordinator/ipc/pfcdriver.ipct @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -10,7 +10,6 @@ # value structure for ALARM include "upll.ipct"; - ipc_struct pfcdrv_val_alarm_data { UINT64 ingress_ofs_dpid; UINT64 egress_ofs_dpid; @@ -103,3 +102,16 @@ ipc_struct pfcdrv_val_vbrif_policingmap { pfcdrv_val_vbrif_vextif val_vbrif_vextif; }; +ipc_struct pfcdrv_trunk_port_info { + UINT64 dpid; + UINT8 trunk_name[32]; + UINT8 port_name[16]; + UINT8 status; +}; + +# vbr vlanmap vlaue structure +ipc_struct pfcdrv_val_vlan_map { + UINT8 valid[2]; + val_vlan_map vm; + UINT32 bdry_ref_count; +}; diff --git a/coordinator/ipc/uppl.ipct b/coordinator/ipc/uppl.ipct index 41bcbb4e..c2fe1f76 100644 --- a/coordinator/ipc/uppl.ipct +++ b/coordinator/ipc/uppl.ipct @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -173,6 +173,12 @@ ipc_struct val_switch_st { UINT8 valid[6]; }; +ipc_struct val_switch_st_detail { + val_switch_st switch_st_val; + UINT32 flow_count; + UINT8 valid[2]; +}; + ipc_struct val_flow_entry_full_alarm { UINT8 ofs_dpid[256]; }; @@ -219,6 +225,23 @@ ipc_struct val_port_st { UINT8 valid[8]; }; +ipc_struct val_port_stats { + val_port_st port_st_val; + UINT64 rx_packets; + UINT64 tx_packets; + UINT64 rx_bytes; + UINT64 tx_bytes; + UINT64 rx_dropped; + UINT64 tx_dropped; + UINT64 rx_errors; + UINT64 tx_errors; + UINT64 rx_frame_err; + UINT64 rx_over_err; + UINT64 rx_crc_err; + UINT64 collisions; + UINT8 valid[13]; +}; + ipc_struct val_port_st_neighbor { val_port port; UINT8 connected_switch_id[256]; diff --git a/coordinator/java/ROOT/Makefile b/coordinator/java/ROOT/Makefile new file mode 100644 index 00000000..9e8791fb --- /dev/null +++ b/coordinator/java/ROOT/Makefile @@ -0,0 +1,30 @@ +# +# Copyright (c) 2013-2014 NEC Corporation +# All rights reserved. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License v1.0 which accompanies this +# distribution, and is available at http://www.eclipse.org/legal/epl-v10.html +# + +## +## Makefile that drives the production of ROOT context +## + +include ../defs.mk + +ifdef JAVA_EXT_MK + +# Attributes for manifest file. +JAVA_SPEC_TITLE = VTN Service WEB API redirection for OpenStack +JAVA_IMPL_TITLE = $(JAVA_SPEC_TITLE) + +include ../rules.mk + +else # !JAVA_EXT_MK + +all install clean clobber doc: + +.PHONY: all install clean clobber doc + +endif # JAVA_EXT_MK diff --git a/coordinator/java/ROOT/src/org/opendaylight/vtn/root/VtnRedirectFilter.java b/coordinator/java/ROOT/src/org/opendaylight/vtn/root/VtnRedirectFilter.java new file mode 100644 index 00000000..525b7075 --- /dev/null +++ b/coordinator/java/ROOT/src/org/opendaylight/vtn/root/VtnRedirectFilter.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.root; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; + +/** + * Filter Class VtnRedirectFilter that forwards all requests corresponding to + * OpenStack APIs to vtn-webapi application + */ +public class VtnRedirectFilter implements Filter { + + @Override + public void doFilter(ServletRequest req, ServletResponse res, + FilterChain chain) throws ServletException, IOException { + HttpServletRequest request = (HttpServletRequest) req; + + String requestURI = request.getRequestURI(); + String query = request.getQueryString(); + + /* + * forwards requests corresponding to OpenStack operations + */ + if (requestURI.startsWith("/tenants")) { + if (query != null) { + requestURI = requestURI + "?" + query; + } + req.getServletContext().getContext("/vtn-webapi") + .getRequestDispatcher(requestURI).forward(req, res); + } + } + + /* + * Destroy method for Filter - No destruction is required + * + * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) + */ + @Override + public void destroy() { + // No implementation required + } + + /* + * Initialization method for Filter - No initialization is required + * + * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) + */ + @Override + public void init(FilterConfig arg0) throws ServletException { + // No implementation required + } +} + diff --git a/coordinator/java/ROOT/webapp/META-INF/context.xml b/coordinator/java/ROOT/webapp/META-INF/context.xml new file mode 100644 index 00000000..9af4c2c8 --- /dev/null +++ b/coordinator/java/ROOT/webapp/META-INF/context.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/coordinator/java/ROOT/webapp/WEB-INF/web.xml b/coordinator/java/ROOT/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..c71ca337 --- /dev/null +++ b/coordinator/java/ROOT/webapp/WEB-INF/web.xml @@ -0,0 +1,36 @@ + + + + + + + Welcome to Tomcat + + + Welcome to Tomcat + + + + vtnFilter + org.opendaylight.vtn.root.VtnRedirectFilter + + + vtnFilter + /tenants/* + + + diff --git a/coordinator/java/ROOT/webapp/index.html b/coordinator/java/ROOT/webapp/index.html new file mode 100644 index 00000000..2fc37503 --- /dev/null +++ b/coordinator/java/ROOT/webapp/index.html @@ -0,0 +1,26 @@ + + + + + + + + Welcome to Tomcat + + + +

Welcome to Tomcat

+

+ Tomcat is running. +

+ + diff --git a/coordinator/java/tomcat/Makefile b/coordinator/java/tomcat/Makefile index 8eaad9fc..2a232e29 100644 --- a/coordinator/java/tomcat/Makefile +++ b/coordinator/java/tomcat/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -61,7 +61,7 @@ all-subdirs install-subdirs clean-subdirs: $(SUBDIRS) all-subdirs: SUBDIR_TARGET = all install-subdirs: SUBDIR_TARGET = install -clean-subdirs: SUBDIR_TARGET = install +clean-subdirs: SUBDIR_TARGET = clean include $(BLDDIR)/rules.mk include $(JAVA_EXT_RULES_MK) diff --git a/coordinator/java/vtn-javaapi/Makefile b/coordinator/java/vtn-javaapi/Makefile index 88f47aec..3451196c 100644 --- a/coordinator/java/vtn-javaapi/Makefile +++ b/coordinator/java/vtn-javaapi/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -22,8 +22,8 @@ JAVA_IMPL_TITLE = $(JAVA_SPEC_TITLE) # Use PFC-IPC and PFC-Core utility library. JAVA_LIBS = pfc_ipc.jar pfc_util.jar -# Use Google gson. -JAVA_EXTLIBS = $(GOOGLE_GSON) +# Define external libraries. +JAVA_EXTLIBS = $(GOOGLE_GSON) $(COMMONS_NET) $(POSTGRESQL_JDBC) # Install as Tomcat shared library. TOMCAT_SHARED = 1 diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/RestResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/RestResource.java index 69f48ddc..f51df77f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/RestResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/RestResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -8,6 +8,8 @@ */ package org.opendaylight.vtn.javaapi; +import java.sql.Connection; + import com.google.gson.JsonObject; import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; @@ -19,6 +21,7 @@ import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.reflect.AnnotationReflect; import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.ConfigResource; import org.opendaylight.vtn.javaapi.util.VtnServiceUtil; /** @@ -36,12 +39,15 @@ public class RestResource implements VtnServiceResource { private long configID; private transient AbstractResource resource; - private transient final VtnServiceExceptionHandler exceptionHandler; + private final transient VtnServiceExceptionHandler exceptionHandler; /* Resource path and Response information instances */ private String path; private transient JsonObject info; - + + /* OpenStack DB Connection instance */ + Connection openStackConnection; + /** * Instantiates a new rest resource. */ @@ -104,6 +110,9 @@ public class RestResource implements VtnServiceResource { resource.setExceptionHandler(exceptionHandler); } resource.setConnPool(); + if (resource instanceof ConfigResource) { + resource.setOpenStackConnection(openStackConnection); + } } } catch (final RuntimeException exception) { exceptionHandler.handle( @@ -136,9 +145,9 @@ public class RestResource implements VtnServiceResource { final JsonObject errorJsonObject = new JsonObject(); final JsonObject error = new JsonObject(); error.addProperty(VtnServiceJsonConsts.CODE, - UncCommonEnum.UncResultCode.UNC_CLIENT_ERROR.getValue()); + UncCommonEnum.UncResultCode.UNC_NOT_FOUND.getValue()); error.addProperty(VtnServiceJsonConsts.MSG, - VtnServiceConsts.RESOURCE_PATH_INCORRECT); + UncCommonEnum.UncResultCode.UNC_NOT_FOUND.getMessage()); errorJsonObject.add(VtnServiceJsonConsts.ERROR, error); info = errorJsonObject; } @@ -151,7 +160,7 @@ public class RestResource implements VtnServiceResource { * * @return the resource path */ - public String getPath() { + public final String getPath() { LOG.trace("Return from RestResource#getResourcePath()"); LOG.debug("Return value for path : " + path); return path; @@ -162,7 +171,7 @@ public class RestResource implements VtnServiceResource { * */ @Override - public int delete() { + public final int delete() { LOG.trace("Start RestResource#delete()"); int responseCode = UncCommonEnum.UncResultCode.UNC_CLIENT_ERROR .getValue(); @@ -184,6 +193,8 @@ public class RestResource implements VtnServiceResource { // if response is not success, then set the info for error if (responseCode != UncResultCode.UNC_SUCCESS.getValue()) { info = resource.getInfo(); + } else { + openStackConnection = resource.getOpenStackConnection(); } } catch (final VtnServiceException exception) { exceptionHandler.handle( @@ -217,7 +228,7 @@ public class RestResource implements VtnServiceResource { * */ @Override - public int delete(final JsonObject queryString) { + public final int delete(final JsonObject queryString) { LOG.trace("Start RestResource#delete()"); int responseCode = UncResultCode.UNC_CLIENT_ERROR.getValue(); /* @@ -237,6 +248,8 @@ public class RestResource implements VtnServiceResource { // if response is not success, then set the info for error if (responseCode != UncResultCode.UNC_SUCCESS.getValue()) { info = resource.getInfo(); + } else { + openStackConnection = resource.getOpenStackConnection(); } } catch (final VtnServiceException exception) { exceptionHandler.handle( @@ -270,7 +283,7 @@ public class RestResource implements VtnServiceResource { * */ @Override - public int get() { + public final int get() { LOG.trace("Start RestResource#get()"); int responseCode = UncResultCode.UNC_CLIENT_ERROR.getValue(); /* @@ -287,6 +300,7 @@ public class RestResource implements VtnServiceResource { .getValue(); responseCode = resource.get(); info = resource.getInfo(); + openStackConnection = resource.getOpenStackConnection(); } catch (final VtnServiceException exception) { exceptionHandler.handle( Thread.currentThread().getStackTrace()[1] @@ -320,7 +334,7 @@ public class RestResource implements VtnServiceResource { * */ @Override - public int get(final JsonObject queryString) { + public final int get(final JsonObject queryString) { LOG.trace("Start RestResource#get()"); int responseCode = UncResultCode.UNC_CLIENT_ERROR.getValue(); /* @@ -339,6 +353,7 @@ public class RestResource implements VtnServiceResource { .getValue(); responseCode = resource.get(queryString); info = resource.getInfo(); + openStackConnection = resource.getOpenStackConnection(); } catch (final VtnServiceException exception) { exceptionHandler.handle( Thread.currentThread().getStackTrace()[1] @@ -372,7 +387,7 @@ public class RestResource implements VtnServiceResource { * */ @Override - public int post(final JsonObject requestBody) { + public final int post(final JsonObject requestBody) { LOG.trace("Start RestResource#post()"); int responseCode = UncResultCode.UNC_CLIENT_ERROR.getValue(); /* @@ -392,6 +407,8 @@ public class RestResource implements VtnServiceResource { // if response is not success, then set the info for error if (responseCode != UncResultCode.UNC_SUCCESS.getValue()) { info = resource.getInfo(); + } else { + openStackConnection = resource.getOpenStackConnection(); } } catch (final VtnServiceException exception) { exceptionHandler.handle( @@ -425,7 +442,7 @@ public class RestResource implements VtnServiceResource { * */ @Override - public int put(final JsonObject requestBody) { + public final int put(final JsonObject requestBody) { LOG.trace("Start RestResource#put()"); int responseCode = UncResultCode.UNC_CLIENT_ERROR.getValue(); /* @@ -445,6 +462,8 @@ public class RestResource implements VtnServiceResource { // if response is not success, then set the info for error if (responseCode != UncResultCode.UNC_SUCCESS.getValue()) { info = resource.getInfo(); + } else { + openStackConnection = resource.getOpenStackConnection(); } } catch (final VtnServiceException exception) { exceptionHandler.handle( @@ -478,7 +497,7 @@ public class RestResource implements VtnServiceResource { * * @return the config id */ - public long getConfigID() { + public final long getConfigID() { LOG.trace("Return from RestResource#getConfigId()"); LOG.debug("Return value for configID : " + configID); return configID; @@ -490,7 +509,7 @@ public class RestResource implements VtnServiceResource { * @param configId * the new config id */ - public void setConfigID(final long configId) { + public final void setConfigID(final long configId) { LOG.trace("Start RestResource#setConfigId()"); LOG.debug("Input value for configId : " + configId); this.configID = configId; @@ -505,7 +524,7 @@ public class RestResource implements VtnServiceResource { * * @return the session id */ - public long getSessionID() { + public final long getSessionID() { LOG.trace("Return from RestResource#getSessionId()"); LOG.debug("Return value for sessionID : " + sessionID); return sessionID; @@ -517,7 +536,7 @@ public class RestResource implements VtnServiceResource { * @param sessionId * the new session id */ - public void setSessionID(final long sessionId) { + public final void setSessionID(final long sessionId) { LOG.trace("Start RestResource#setSessionId()"); LOG.debug("Input value for sessionId : " + sessionId); this.sessionID = sessionId; @@ -532,7 +551,7 @@ public class RestResource implements VtnServiceResource { * * @return the info */ - public JsonObject getInfo() { + public final JsonObject getInfo() { LOG.trace("Return from RestResource#getInfo()"); if (resource != null) { info = resource.getInfo(); @@ -563,13 +582,14 @@ public class RestResource implements VtnServiceResource { try { resource.getValidator().validate(requestType, resource); } catch (final Exception exception) { - resource.createErrorInfo(UncCommonEnum.UncResultCode.UNC_CLIENT_ERROR + resource.createErrorInfo(UncCommonEnum.UncResultCode.UNC_INVALID_ARGUMENT .getValue()); final JsonObject error = resource.getInfo().getAsJsonObject( VtnServiceJsonConsts.ERROR); error.addProperty(VtnServiceJsonConsts.MSG, error.get(VtnServiceJsonConsts.MSG).getAsString() - + resource.getValidator().getInvalidParameter()); + + resource.getValidator().getInvalidParameter() + + VtnServiceConsts.CLOSE_SMALL_BRACES); exceptionHandler.raise( Thread.currentThread().getStackTrace()[1].getClassName() + VtnServiceConsts.HYPHEN @@ -599,18 +619,36 @@ public class RestResource implements VtnServiceResource { /* * remove the parameters which contains empty strings */ - if(VtnServiceConsts.POST.equals(requestType)){ + if (VtnServiceConsts.POST.equals(requestType) + && !VtnServiceUtil.isOpenStackResurce(resource)) { VtnServiceUtil.removeEmptyParamas(requestBody); } resource.getValidator().validate(requestType, requestBody); } catch (final Exception exception) { - resource.createErrorInfo(UncCommonEnum.UncResultCode.UNC_CLIENT_ERROR - .getValue()); - final JsonObject error = resource.getInfo().getAsJsonObject( - VtnServiceJsonConsts.ERROR); - error.addProperty(VtnServiceJsonConsts.MSG, - error.get(VtnServiceJsonConsts.MSG).getAsString() - + resource.getValidator().getInvalidParameter()); + if (resource + .getValidator() + .getInvalidParameter() + .equals(UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT + .getMessage())) { + resource.createErrorInfo(UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT + .getValue()); + } else if (resource + .getValidator() + .getInvalidParameter() + .equals(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage())) { + resource.createErrorInfo(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getValue()); + } else { + resource.createErrorInfo(UncCommonEnum.UncResultCode.UNC_INVALID_ARGUMENT + .getValue()); + final JsonObject error = resource.getInfo().getAsJsonObject( + VtnServiceJsonConsts.ERROR); + error.addProperty(VtnServiceJsonConsts.MSG, + error.get(VtnServiceJsonConsts.MSG).getAsString() + + resource.getValidator().getInvalidParameter() + + VtnServiceConsts.CLOSE_SMALL_BRACES); + } exceptionHandler.raise( Thread.currentThread().getStackTrace()[1].getClassName() + VtnServiceConsts.HYPHEN @@ -625,6 +663,11 @@ public class RestResource implements VtnServiceResource { } } + /** + * + * @param requestBody + * @throws VtnServiceException + */ private void validateJsonOp(final JsonObject requestBody) throws VtnServiceException { try { @@ -657,4 +700,13 @@ public class RestResource implements VtnServiceResource { } } + /** + * Return the resource instance corresponding to resourcePath set by + * setPath() interface + * + * @return + */ + public AbstractResource getResource() { + return resource; + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCField.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCField.java index 65e3fddc..e7b2f661 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCField.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCField.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -14,17 +14,16 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * The Interface UNCField. - * Annotation interface from URI parameters + * The Interface UNCField. Annotation interface from URI parameters */ -@Target({ElementType.FIELD}) +@Target({ ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) public @interface UNCField { /** * Value. - * + * * @return the string */ - public String value(); + String value(); } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCVtnService.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCVtnService.java index 8a7895da..7526803a 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCVtnService.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/UNCVtnService.java @@ -1,11 +1,12 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.javaapi.annotation; import java.lang.annotation.ElementType; @@ -14,10 +15,9 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * The Interface UNCVtnService. - * Annotation interface for URI + * The Interface UNCVtnService. Annotation interface for URI */ -@Target({ElementType.TYPE}) +@Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) public @interface UNCVtnService { @@ -26,5 +26,5 @@ public @interface UNCVtnService { * * @return the string */ - public String path(); + String path(); } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/package-info.java new file mode 100644 index 00000000..4e3de565 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/annotation/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Annotation classes for resources and resource fields . + */ +package org.opendaylight.vtn.javaapi.annotation; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcChannelConnection.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcChannelConnection.java index ada51439..38fef110 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcChannelConnection.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcChannelConnection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -52,7 +52,7 @@ public class IpcChannelConnection { * * @return the counter */ - public int getCounter() { + public final int getCounter() { LOG.trace("Return from IpcChannelConnection#getCounter()"); return counter; } @@ -63,7 +63,7 @@ public class IpcChannelConnection { * @param altConnections * the new alt connections */ - public void setAltConnections(final AltConnection altConnections) { + public final void setAltConnections(final AltConnection altConnections) { LOG.trace("Start IpcChannelConnection#setAltConnections()"); this.altConnections = altConnections; LOG.trace("Complete IpcChannelConnection#setAltConnections()"); @@ -82,7 +82,7 @@ public class IpcChannelConnection { * @throws VtnServiceException * the vtn service exception */ - public ClientSession getSession(final String serviceName, + public final ClientSession getSession(final String serviceName, final int serviceID, final VtnServiceExceptionHandler exceptionHandler) throws VtnServiceException { @@ -116,7 +116,7 @@ public class IpcChannelConnection { * @param session * the session */ - public void destroySession(final ClientSession session) { + public final void destroySession(final ClientSession session) { LOG.trace("Start IpcChannelConnection#destroySession()"); session.destroy(); // decrease the counter diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcConnPool.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcConnPool.java index 18e6e488..f111ebf1 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcConnPool.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/IpcConnPool.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -8,6 +8,7 @@ */ package org.opendaylight.vtn.javaapi.connection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -63,7 +64,7 @@ public final class IpcConnPool { throws VtnServiceException { LOG.trace("Start IpcConnPool#init()"); - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); /* * Create the ChaneelAddress instances for each of the IPC server after @@ -145,7 +146,7 @@ public final class IpcConnPool { if (channelAddressesMap != null && !channelAddressesMap.isEmpty()) { channelConnectionMap = new HashMap>(); - sessionMap = new HashMap(); + sessionMap = Collections.synchronizedMap(new HashMap()); int poolSize = 0; // retrieve the key set for Channel Address @@ -312,6 +313,7 @@ public final class IpcConnPool { // at a time only one thread can destroy the session synchronized (ipcChannelConnection) { ipcChannelConnection.destroySession(session); + sessionMap.remove(session); } } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/package-info.java new file mode 100644 index 00000000..ea0c6226 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/connection/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Conn Pool implementation classes . + */ +package org.opendaylight.vtn.javaapi.connection; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceConsts.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceConsts.java index ed8b721c..2fd5ae32 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceConsts.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceConsts.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,12 +13,14 @@ package org.opendaylight.vtn.javaapi.constants; */ public final class VtnServiceConsts { - public static final String JAVAAPI_VERSION = "V1.0"; + public static final String JAVAAPI_VERSION = "V1.1"; public static final int IPC_RESUL_CODE_INDEX = 7; public static final int IPC_COUNT_INDEX = 2; - public static final int UPPL_RC_ERR_NO_SUCH_INSTANCE = 16; - public static final int UPLL_RC_ERR_NO_SUCH_INSTANCE = 11; + public static final int UPPL_RC_ERR_NO_SUCH_INSTANCE = 2015; + public static final int UPLL_RC_ERR_NO_SUCH_INSTANCE = 1010; + public static final int UPPL_ERROR_INITIAL_INDEX = 1999; + public static final int UPLL_ERROR_INITIAL_INDEX = 999; public static final String PUT = "put"; public static final String GET = "get"; @@ -27,6 +29,7 @@ public final class VtnServiceConsts { public static final String COMMON_CONF_FILEPATH = "org/opendaylight/vtn/javaapi/conf.properties"; public static final String APP_CONF_FILEPATH = "webapp_connection.properties"; + public static final String MAPMODE_CONF_FILEPATH = "mapmode.properties"; public static final String UPPL_ERRORS_FILEPATH = "org/opendaylight/vtn/javaapi/ipc/enums/uppl_errors.properties"; public static final String UPLL_ERRORS_FILEPATH = "org/opendaylight/vtn/javaapi/ipc/enums/upll_errors.properties"; public static final String SINGLETON_EXCEPTION = "Already instantiated"; @@ -47,7 +50,7 @@ public final class VtnServiceConsts { public static final String NETMASK_REGEX = "^(((128|192|224|240|248|252|254)\\.0\\.0\\.0)|(255\\.(0|128|192|224|240|248|252|254)\\.0\\.0)|(255\\.255\\.(0|128|192|224|240|248|252|254)\\.0)|(255\\.255\\.255\\.(0|128|192|224|240|248|252|254)))$"; public static final String ALPHANUM_REGEX = "^[0-9A-Za-z](\\w)*$"; - public static final String ALARM_REGEX="^(\\d{1,19})$"; + public static final String ALARM_REGEX = "^(\\d{1,19})$"; public static final String SLASH = "/"; public static final String EMPTY_STRING = ""; public static final String COMMA = ","; @@ -73,7 +76,7 @@ public final class VtnServiceConsts { public static final long INVALID_SESSIONID = 0; public static final String WHITESPACE = "\\s"; - public static final String RESOURCE_PATH_INCORRECT = "Resource path is not correct"; + // public static final String INVALID_FORMAT = "Invalid Format"; public static final String RESOURCE_METHOD_INCORRECT = "Resource method is not implemented"; public static final String UTF8 = "UTF-8"; @@ -81,15 +84,21 @@ public final class VtnServiceConsts { public static final String INDEX_ERROR_MSG = "index parameter not allowed for op : count"; public static final String VERSION_REGEX = "^[0-9][0-9.]*[0-9]$|^[0-9]$"; - public static final String WEB_API = "WEB-API"; public static final String UNC_GUI = "UNC-GUI"; public static final String ZERO = "0"; public static final String INCORRECT_METHOD_INVOCATION = "Incorrect method invocation"; - + public static final int DEFAULT_NUMBER = 0; public static final String DEFAULT_IP = "0.0.0.0"; public static final String DEFAULT_IPV6 = "0000:0000:0000:0000:0000:0000:0000:0000"; public static final String DEFAULT_MAC = "0000.0000.0000"; - + + public static final String OPEN_SMALL_BRACES = "("; + public static final String CLOSE_SMALL_BRACES = ")"; + + public static final String QUESTION_MARK = "?"; + + public static final String QUOTE_CHAR = "\""; + } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceIpcConsts.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceIpcConsts.java index 9a6c89b8..9b1efc3f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceIpcConsts.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceIpcConsts.java @@ -1,13 +1,13 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.vtn.javaapi.constants; +package org.opendaylight.vtn.javaapi.constants; /** * VtnServiceIpcConsts. @@ -27,10 +27,10 @@ public final class VtnServiceIpcConsts { public static final String CSROWSTATUS = "cs_row_status"; public static final String CSATTR = "cs_attr"; public static final String IPTYPE = "ip_type"; - public static final String MACDST="mac_dst"; - public static final String NWMNAME="nwm_name"; - public static final String MACSRC="mac_src"; - public static final String DSTIP="dst_ip"; + public static final String MACDST = "mac_dst"; + public static final String NWMNAME = "nwm_name"; + public static final String MACSRC = "mac_src"; + public static final String DSTIP = "dst_ip"; public static final String VBRKEY = "vbr_key"; public static final String VBRFLOWFILTER = "flowfilter_key"; public static final String VBRIF = "interface"; @@ -38,12 +38,13 @@ public final class VtnServiceIpcConsts { public static final String ACTION = "action"; public static final String REDIRECTNODE = "redirect_node"; public static final String REDIRECTPORT = "redirect_port"; + public static final String REDIRECTDIRECTION = "redirect_direction"; public static final String MODIFYDSTMACADDR = "modify_dstmac"; public static final String MODIFYSRCMACADDR = "modify_srcmac"; public static final String DSCP = "dscp"; public static final String PRIORITY = "priority"; public static final String VRTDESCRIPTION = "vrt_description"; - public static final String DHCPRELAYADMINSTATUS ="dhcp_relay_admin_status"; + public static final String DHCPRELAYADMINSTATUS = "dhcp_relay_admin_status"; public static final String IPADDR = "ipaddr"; public static final String MASK = "mask"; public static final String MACADDR = "macaddr"; @@ -59,7 +60,7 @@ public final class VtnServiceIpcConsts { public static final String DIRECTION = "direction"; public static final String SEQUENCENUM = "sequence_num"; public static final String VTUNNEL_KEY = "vtunnel_key"; - public static final String VTEPGRP_NAME ="vtepgrp_name"; + public static final String VTEPGRP_NAME = "vtepgrp_name"; public static final String TC_OP_CONFIG_ACQUIRE_FORCE = "TC_OP_CONFIG_ACQUIRE_FORCE"; public static final String TC_OP_CONFIG_ACQUIRE = "TC_OP_CONFIG_ACQUIRE"; public static final String TC_OPER_SUCCESS = "TC_OPER_SUCCESS"; @@ -75,22 +76,22 @@ public final class VtnServiceIpcConsts { public static final String CURRENT = "current"; public static final String DELSESS = "delsess"; public static final String SESS_UNAME = "sess_uname"; - public static final String SESS_PASSWD= "sess_passwd"; - public static final String LOGIN_NAME ="login_name"; + public static final String SESS_PASSWD = "sess_passwd"; + public static final String LOGIN_NAME = "login_name"; public static final String SESS_TYPE = "sess_type"; public static final String LOGIN_TIME = "login_time"; public static final String USER_TYPE = "user_type"; public static final String SESS_MODE = "sess_mode"; public static final String CONFIG_STATUS = "config_status"; public static final String IP_ADDR = "ip_addr"; - public static final String MAC_ETH_TYPE="mac_eth_type"; - public static final String DST_IP="dst_ip"; - public static final String SRC_IP="src_ip"; - public static final String DST_IP_PREFIXLEN="dst_ip_prefixlen"; - public static final String SRC_IP_PREFIXLEN="src_ip_prefixlen"; - public static final String DST_IPV6= "dst_ipv6"; + public static final String MAC_ETH_TYPE = "mac_eth_type"; + public static final String DST_IP = "dst_ip"; + public static final String SRC_IP = "src_ip"; + public static final String DST_IP_PREFIXLEN = "dst_ip_prefixlen"; + public static final String SRC_IP_PREFIXLEN = "src_ip_prefixlen"; + public static final String DST_IPV6 = "dst_ipv6"; public static final String DST_IPV6_PREFIXLEN = "dst_ipv6_prefixlen"; - public static final String SRC_IPV6= "src_ipv6"; + public static final String SRC_IPV6 = "src_ipv6"; public static final String SRC_IPV6_PREFIXLEN = "src_ipv6_prefixlen"; public static final String IP_PROTO = "ip_proto"; public static final String IP_DSCP = "ip_dscp"; @@ -101,7 +102,7 @@ public final class VtnServiceIpcConsts { public static final String ICMP_TYPE = "icmp_type"; public static final String ICMP_CODE = "icmp_code"; public static final String ICMPV6_TYPE = "icmpv6_type"; - public static final String ICMPV6_CODE = "icmpv6_code" ; + public static final String ICMPV6_CODE = "icmpv6_code"; public static final String SESS = "sess"; public static final String VBRDESCRIPTION = "vbr_description"; public static final String HOST_ADDR_PREFIXLEN = "host_addr_prefixlen"; @@ -148,13 +149,13 @@ public final class VtnServiceIpcConsts { public static final String EXIST = "exist"; public static final String EXPIRE = "expire"; public static final String VTEPNAME = "vtep_name"; - public static final String CONTROLLERID="controller_id"; - public static final String NMG_NAME="nwmonitor_gr"; - public static final String STATIONID="station_id"; - public static final String MAPTYPE="maptype"; - public static final String MAPSTATUS="mapstatus"; - public static final String VBRNAME="vbr_name"; - public static final String SWITCHEID="switch_id"; + public static final String CONTROLLERID = "controller_id"; + public static final String NMG_NAME = "nwmonitor_gr"; + public static final String STATIONID = "station_id"; + public static final String MAPTYPE = "maptype"; + public static final String MAPSTATUS = "mapstatus"; + public static final String VBRNAME = "vbr_name"; + public static final String SWITCHEID = "switch_id"; public static final String OFSCOUNT = "ofs_count"; public static final String MAX_VLANID = "FFFF"; public static final String VLINK_NAME = "vlink_name"; @@ -174,56 +175,57 @@ public final class VtnServiceIpcConsts { public static final String IP_ADDRESS = "ip_address"; public static final String USER = "user"; public static final String ENABLE_AUDIT = "enable_audit"; - public static final String CONTROLLER_NAME1= "controller_name1"; - public static final String CONTROLLER_NAME2= "controller_name2"; - public static final String DOMAIN_NAME1= "domain_name1"; - public static final String DOMAIN_NAME2= "domain_name2"; - public static final String LOGICAL_PORT_ID1= "logical_port_id1"; - public static final String LOGICAL_PORT_ID2= "logical_port_id2"; - public static final String IPV6_ADDRESS ="ipv6_address"; - public static final String ALARM_STATUS="alarms_status"; - public static final String MAC_ADDR="mac_addr"; - public static final String MAC_ADDR_VTNSTATION="mac_addr"; - public static final String VBRIFNAME="vbrif_name"; - public static final String CREATED_TIME="created_time"; - public static final String MAP_TYPE="map_type"; - public static final String MAP_STATUS="map_status"; - public static final String VBRIFSTATUS="vbrif_status"; - public static final String IPV4_COUNT="ipv4_count"; - public static final String IPV6_COUNT="ipv6_count"; - public static final String allTxPkt="allTxPkt"; - public static final String allRxPkt="allRxPkt"; - public static final String allTxBytes="allTxBytes"; - public static final String allRxBytes="allRxBytes"; - public static final String allNWTxPkt="allNWTxPkt"; - public static final String allNWRxPkt="allNWRxPkt"; - public static final String allNWTxBytes="allNWTxBytes"; - public static final String allNWRxBytes="allNWRxBytes"; - public static final String existingTxPkt="existingTxPkt"; - public static final String existingRxPkt="existingRxPkt"; - public static final String existingTxBytes="existingTxBytes"; - public static final String existingRxBytes="existingRxBytes"; - public static final String expiredTxPkt="expiredTxPkt"; - public static final String expiredRxPkt="expiredRxPkt"; - public static final String expiredTxBytes="expiredTxBytes"; - public static final String expiredRxBytes="expiredRxBytes"; - public static final String allDropRxPkt="allDropRxPkt"; - public static final String allDropRxBytes="allDropRxBytes"; - public static final String existingDropRxPkt="existingDropRxPkt"; - public static final String existingDropRxBytes="existingDropRxBytes"; - public static final String expiredDropRxPkt="expiredDropRxPkt"; - public static final String expiredDropRxBytes="expiredDropRxBytes"; - public static final String CONTROLLER1ID="controller1_id"; - public static final String LOGICALPORT1ID="logical_port1_id"; - public static final String DOMAIN1ID="domain1_id"; - public static final String CONTROLLER2ID="controller2_id"; - public static final String LOGICALPORT2ID="logical_port2_id"; - public static final String DOMAIN2ID="domain2_id"; + public static final String CONTROLLER_NAME1 = "controller_name1"; + public static final String CONTROLLER_NAME2 = "controller_name2"; + public static final String DOMAIN_NAME1 = "domain_name1"; + public static final String DOMAIN_NAME2 = "domain_name2"; + public static final String LOGICAL_PORT_ID1 = "logical_port_id1"; + public static final String LOGICAL_PORT_ID2 = "logical_port_id2"; + public static final String IPV6_ADDRESS = "ipv6_address"; + public static final String ALARM_STATUS = "alarms_status"; + public static final String MAC_ADDR = "mac_addr"; + public static final String MAC_ADDR_VTNSTATION = "mac_addr"; + public static final String VBRIFNAME = "vbrif_name"; + public static final String CREATED_TIME = "created_time"; + public static final String MAP_TYPE = "map_type"; + public static final String MAP_STATUS = "map_status"; + public static final String VBRIFSTATUS = "vbrif_status"; + public static final String IPV4_COUNT = "ipv4_count"; + public static final String IPV6_COUNT = "ipv6_count"; + public static final String allTxPkt = "allTxPkt"; + public static final String allRxPkt = "allRxPkt"; + public static final String allTxBytes = "allTxBytes"; + public static final String allRxBytes = "allRxBytes"; + public static final String allNWTxPkt = "allNWTxPkt"; + public static final String allNWRxPkt = "allNWRxPkt"; + public static final String allNWTxBytes = "allNWTxBytes"; + public static final String allNWRxBytes = "allNWRxBytes"; + public static final String existingTxPkt = "existingTxPkt"; + public static final String existingRxPkt = "existingRxPkt"; + public static final String existingTxBytes = "existingTxBytes"; + public static final String existingRxBytes = "existingRxBytes"; + public static final String expiredTxPkt = "expiredTxPkt"; + public static final String expiredRxPkt = "expiredRxPkt"; + public static final String expiredTxBytes = "expiredTxBytes"; + public static final String expiredRxBytes = "expiredRxBytes"; + public static final String allDropRxPkt = "allDropRxPkt"; + public static final String allDropRxBytes = "allDropRxBytes"; + public static final String existingDropRxPkt = "existingDropRxPkt"; + public static final String existingDropRxBytes = "existingDropRxBytes"; + public static final String expiredDropRxPkt = "expiredDropRxPkt"; + public static final String expiredDropRxBytes = "expiredDropRxBytes"; + public static final String CONTROLLER1ID = "controller1_id"; + public static final String LOGICALPORT1ID = "logical_port1_id"; + public static final String DOMAIN1ID = "domain1_id"; + public static final String CONTROLLER2ID = "controller2_id"; + public static final String LOGICALPORT2ID = "logical_port2_id"; + public static final String DOMAIN2ID = "domain2_id"; public static final String SWITCH_ID1 = "switch_id1"; public static final String SWITCH_ID2 = "switch_id2"; public static final String PORT_ID1 = "port_id1"; public static final String PORT_ID2 = "port_id2"; - public static final String SWITCH_VAL="switch_val"; + public static final String SWITCH_VAL = "switch_val"; + public static final String SWITCH_ST_VAL = "switch_st_val"; public static final String CONTROLLERNAME1 = "controller_name1"; public static final String CONTROLLERNAME2 = "controller_name2"; public static final String LOGICALPORTID1 = "logical_port_id1"; @@ -238,11 +240,11 @@ public final class VtnServiceIpcConsts { public static final String NWM_STATUS = "nwm_status"; public static final String TIME_STAMP = "time_stamp"; public static final String UNCALARMIPCINFO = "unc_alarm_ipc_info"; - public static final String LINK_VAL="link"; + public static final String LINK_VAL = "link"; public static final String PORT_NUMBER = "port_number"; public static final String HALF = "half"; public static final String FULL = "full"; - public static final String PORT_MAC_ADDR="mac_address"; + public static final String PORT_MAC_ADDR = "mac_address"; public static final String PORT = "port"; public static final String DOMAIN_KEY = "domain_key"; public static final String LOGICAL_PORT = "logical_port"; @@ -250,32 +252,32 @@ public final class VtnServiceIpcConsts { public static final String LOGICAL_PORT_KEY = "logical_port_key"; public static final String LPID = "lpid"; public static final String NOLPID = "no_lpid"; - public static final String LPID_VALID ="logical_port_id_valid"; + public static final String LPID_VALID = "logical_port_id_valid"; public static final String DESTINATION = "destination"; public static final String IFKIND = "if_kind"; public static final String VTEPGRP_KEY = "vtepgrp_key"; - public static String NWMONITOR_GR="nwmonitor_gr"; + public static String NWMONITOR_GR = "nwmonitor_gr"; public static final String VTN_ALARM_STATUS = "alarm_status"; public static int INVALID_OPEARTION_STATUS = -1; - public static final String USESS_USER_WEB_ADMIN = "UNC_WEB_ADMIN"; - public static final String USESS_USER_WEB_OPER = "UNC_WEB_OPER"; - public static final String USESS_IPC_TIMESPEC = "usess_ipc_timespec"; - public static final String TV_SEC = "tv_sec"; - public static final String MAJOR = "major"; - public static final String MINOR = "minor"; - public static final String REVISION = "revision"; - public static final String PATCHLEVEL = "patchlevel"; - public static final String ENABLE_PASSWORD = "enable_passwd"; - - public static final String GET_FLOW_LIST_RESPONSE = "getFlowListResponse"; - public static final String GET_FLOW_LIST_ENTRY_RESPONSE = "getFlowListEntryResponse"; - public static final String GET_VTN_RESPONSE = "getVtnResponse"; - public static final String GET_VTN_FLOW_FILETER_ENTRY_RESPONSE = "getVtnFlowFilterEntryResponse"; - public static final String GET_VBYPASS_INTERFACE_RESPONSE ="getVBypassInterfaceResponse"; - public static final String GET_VBYPASS_RESPONSE = "getVBypassResponse"; - public static final String GET_VBRIDGE_RESPONSE = "getVBridgeResponse"; - public static final String GET_SWITCH_RESPONSE = "getSwitchResponse"; - public static final String GET_DOMAIN_RESPONSE = "getDomainResponse"; + public static final String USESS_USER_WEB_ADMIN = "UNC_WEB_ADMIN"; + public static final String USESS_USER_WEB_OPER = "UNC_WEB_OPER"; + public static final String USESS_IPC_TIMESPEC = "usess_ipc_timespec"; + public static final String TV_SEC = "tv_sec"; + public static final String MAJOR = "major"; + public static final String MINOR = "minor"; + public static final String REVISION = "revision"; + public static final String PATCHLEVEL = "patchlevel"; + public static final String ENABLE_PASSWORD = "enable_passwd"; + + public static final String GET_FLOW_LIST_RESPONSE = "getFlowListResponse"; + public static final String GET_FLOW_LIST_ENTRY_RESPONSE = "getFlowListEntryResponse"; + public static final String GET_VTN_RESPONSE = "getVtnResponse"; + public static final String GET_VTN_FLOW_FILETER_ENTRY_RESPONSE = "getVtnFlowFilterEntryResponse"; + public static final String GET_VBYPASS_INTERFACE_RESPONSE = "getVBypassInterfaceResponse"; + public static final String GET_VBYPASS_RESPONSE = "getVBypassResponse"; + public static final String GET_VBRIDGE_RESPONSE = "getVBridgeResponse"; + public static final String GET_SWITCH_RESPONSE = "getSwitchResponse"; + public static final String GET_DOMAIN_RESPONSE = "getDomainResponse"; public static final String GET_VBRIDGE_FLOW_FILTER_ENTRY_RESPONSE = "getVBridgeFlowFilterEntryResponse"; public static final String GET_VBRIDGE_VLANMAP_RESPONSE = "getVlanMapResponse"; public static final String GET_LINK_RESPONSE = "getLinkResponse"; @@ -296,4 +298,89 @@ public final class VtnServiceIpcConsts { public static final String GET_VLINKS_RESPONSE = "getVLinkResponse"; public static final String GET_SWITCH_PORT_INTERFACE_RESPONSE = "getSwitchPortResponse"; public static final String GET_DOMAIN_LOGICAL_PORT_RESPONSE = "getDomainLogicalPortResponse"; + public static final String GET_VTERMINAL_RESPONSE = "getVTerminalResponse"; + public static final String GET_VTN_MAPPING_RESPONSE = "getVtnMappingResponse"; + + public static final String VTERMINAL_NAME = "vterminal_name"; + public static final String VTERM_DESCRIPTION = "vterm_description"; + public static final String GET_VTERM_INTERFACE_RESPONSE = "getVTerminalInterfaceResponse"; + public static final String VTERMKEY = "vterm_key"; + public static final String IFKEY = "if_key"; + // U12 + public static final String MAPPINGID = "mapping_id"; + public static final String SRC_MAC_ADDRESS = "src_mac_address"; + public static final String CONTROLLER_COUNT = "controller_count"; + public static final String MATCH_COUNT = "match_count"; + public static final String ACTION_COUNT = "action_count"; + public static final String PATH_INFO_COUNT = "path_info_count"; + public static final String REASON = "reason"; + public static final String CONTROLER_TYPE = "controller_type"; + public static final String FLOW_ID = "flow_id"; + public static final String STATUS = "status"; + public static final String FLOW_TYPE = "flow_type"; + public static final String POLICY_INDEX = "policy_index"; + public static final String MATCH_TYPE = "match_type"; + public static final String IN_PORT = "in_port"; + public static final String DL_ADDR = "dl_addr"; + public static final String V_MASK = "v_mask"; + public static final String DL_ADDR_MASK = "dl_addr_mask"; + public static final String DL_TYPE = "dl_type"; + public static final String VLAN_VID = "vlan_vid"; + public static final String VLAN_PCP = "vlan_pcp"; + public static final String IP_TOS = "ip_tos"; + public static final String IPV4_ADDR = "ipv4_addr"; + public static final String IPV4_ADDR_MASK = "ipv4_addr_mask"; + public static final String TP_PORT = "tp_port"; + public static final String TP_PORT_MASK = "tp_port_mask"; + public static final String IPV6_ADDR = "ipv6_addr"; + public static final String IPV6_ADDR_MASK = "ipv6_addr_mask"; + public static final String INGRESS_SWITCH_ID = "ingress_switch_id"; + public static final String IN_STATION_ID = "in_station_id"; + public static final String IN_DOMAIN = "in_domain"; + public static final String EGRESS_SWITCH_ID = "egress_switch_id"; + public static final String OUT_PORT = "out_port"; + public static final String OUT_STATION_ID = "out_station_id"; + public static final String OUT_DOMAIN = "out_domain"; + public static final String ACTION_TYPE = "action_type"; + public static final String OUTPUT_PORT = "output_port"; + public static final String ENQUEUE_ID = "enqueue_id"; + public static final String VTN_ID = "vtn_id"; + public static final String CONTROLLER_NAME = "controller_name"; + public static final String VNODEID = "vnode_id"; + public static final String IDLE_TIMEOUT = "idle_timeout"; + public static final String HARD_TIMEOUT = "hard_timeout"; + public static final String INGRESS_VNODE = "ingress_vnode"; + public static final String INGRESS_VINTERFACE = "ingress_vinterface"; + public static final String INGRESS_PORT_ID = "ingress_port_id"; + public static final String INGRESS_LOGICAL_PORT_ID = "ingress_logical_port_id"; + public static final String INGRESS_DOMAIN = "ingress_domain"; + public static final String EGRESS_VNODE = "egress_vnode"; + public static final String EGRESS_VINTERFACE = "egress_vinterface"; + public static final String EGRESS_PORT_ID = "egress_port_id"; + public static final String EGRESS_LOGICAL_PORT_ID = "egress_logical_port_id"; + public static final String EGRESS_DOMAIN = "egress_domain"; + public static final String IN_VNODE = "in_vnode"; + public static final String IN_VIF = "in_vif"; + public static final String OUT_VNODE = "out_vnode"; + public static final String OUT_VIF = "out_vif"; + public static final String VLINK_FLAG = "vlink_flag"; + public static final String CONTROLLER_DOMAIN_COUNT = "ctrlr_domain_count"; + + public static final String PACKETS = "packets"; + public static final String DURATION = "duration"; + public static final String RX_PACKETS = "rx_packets"; + public static final String TX_PACKETS = "tx_packets"; + public static final String TX_BYTES = "rx_bytes"; + public static final String RX_BYTES = "tx_bytes"; + public static final String RX_DROPPED = "rx_dropped"; + public static final String TX_DROPPED = "tx_dropped"; + public static final String RX_ERRORS = "rx_errors"; + public static final String TX_ERRORS = "tx_errors"; + public static final String RX_FRAME_ERR = "rx_frame_err"; + public static final String RX_OVER_ERR = "rx_over_err"; + public static final String RX_CRC_ERRS = "rx_crc_err"; + public static final String COLLISIONS = "collisions"; + public static final String FLOW_COUNT = "flow_count"; + public static final String PORT_ST_VAL = "port_st_val"; + public static final String VLANID1 = "vlanid"; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceJsonConsts.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceJsonConsts.java index dafa444a..28fc88cb 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceJsonConsts.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/VtnServiceJsonConsts.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,7 +15,7 @@ import java.math.BigInteger; */ public final class VtnServiceJsonConsts { public static final String SLASH = "/"; - public static final String URI = "URI#"; + public static final String URI = ""; public static final String ENABLE = "enable"; public static final String DISABLE = "disable"; @@ -28,7 +28,7 @@ public final class VtnServiceJsonConsts { public static final String RUNNING = "running"; public static final String STATE = "state"; public static final String OP = "op"; - public static final String NONE = ""; // webui specific, not related to VTN + public static final String NONE = "none"; // API public static final String SHOW = "show"; // webui specific, not related to // VTN API @@ -97,6 +97,7 @@ public final class VtnServiceJsonConsts { public static final String TRUNKPORTNAME = "trunk_port_name"; public static final String BOUNDARIES = "boundaries"; public static final String BOUNDARYID = "boundary_id"; + public static final String L4PORT = "l4port"; // Logical public static final String VTNS = "vtns"; @@ -541,6 +542,9 @@ public final class VtnServiceJsonConsts { public static final String FLOWENTRYACTIONS = "flowentryactions"; public static final String PROFILEENTRY = "profileentry"; + // VTerminal + public static final String VTERMINALNAME = "vterminal_name"; + // Flood Policing public static final String TWORATETHREECOLOR = "tworatethreecolor"; public static final String METER = "meter"; @@ -621,8 +625,8 @@ public final class VtnServiceJsonConsts { public static final String TAGGED = "tagged"; public static final String TRUE = "true"; public static final String FALSE = "false"; - public static final String CODE = "code"; - public static final String MSG = "msg"; + public static final String CODE = "err_code"; + public static final String MSG = "err_msg"; public static final String ERROR = "error"; public static final String MPLS = "mpls"; public static final String VNI = "vni"; @@ -631,6 +635,7 @@ public final class VtnServiceJsonConsts { // INTEGER public static final int LEN_15 = 15; public static final int LEN_19 = 19; + public static final int LEN_24 = 24; public static final int LEN_31 = 31; public static final int LEN_32 = 32; public static final int LEN_63 = 63; @@ -654,9 +659,15 @@ public final class VtnServiceJsonConsts { public static final int VAL_4095 = 4095; public static final int VAL_65535 = 65535; public static final BigInteger BIG_VAL0 = new BigInteger("0"); - public static final BigInteger BIG_VAL = new BigInteger("4294967295"); - public static final BigInteger BIG_VAL_18446744073709551615 = new BigInteger("18446744073709551615"); - public static final BigInteger BIG_VAL_9999999999999999999 = new BigInteger("9999999999999999999"); + public static final BigInteger BIG_VAL1 = new BigInteger("1"); + public static final BigInteger BIG_VAL_4294967040 = new BigInteger( + "4294967040"); + public static final BigInteger BIG_VAL_18446744073709551999 = new BigInteger( + "18446744073709551999"); + public static final BigInteger BIG_VAL_9999999999999999999 = new BigInteger( + "9999999999999999999"); + public static final BigInteger BIG_VAL_18446744073709551615 = new BigInteger( + "18446744073709551615"); public static final long LONG_VAL_0 = 0L; public static final long LONG_VAL_1 = 1L; public static final long LONG_VAL_4294967295 = 4294967295L; @@ -688,26 +699,27 @@ public final class VtnServiceJsonConsts { public static final String DOMAIN2_ID = "domain2_id"; public static final String DEFAULT = "default"; public static final String PORT_ID = "port_id"; - public static final String LINKSAPERATOR="\\."; - public static final String LINKCONCATENATOR="."; + public static final String LINKSAPERATOR = "\\."; + public static final String LINKCONCATENATOR = "."; public static final String UNKNOWN = "unknown"; public static final String BYPASS = "bypass"; public static final String PFC = "pfc"; public static final String LEGACY = "legacy"; public static final String OVERLAY = "overlay"; - //public static final String WAITINGAUDIT ="waiting_audit"; + // public static final String WAITINGAUDIT ="waiting_audit"; public static final String AUDITING = "auditing"; public static final String HYPHEN = "-"; public static final int LEN_256 = 256; public static final int LEN_4 = 4; public static final int VAL_2 = 2; public static final int VAL_3 = 3; - public static final int LEN_20=20; - + public static final int VAL_4 = 4; + public static final int VAL_6 = 6; + public static final int LEN_20 = 20; public static final String WAITING_AUDIT = "waiting_audit"; - public static final String MANUFACTURER="manufacturer"; - public static final String ALARMSSTATUS="alarmsstatus"; + public static final String MANUFACTURER = "manufacturer"; + public static final String ALARMSSTATUS = "alarmsstatus"; public static final String TRUNK_ALLOWED_VLAN = "trunk_allowed_vlan"; public static final String LOGICAL_PORT_ID = "logical_port_id"; public static final String CONNECTED_PORT_ID = "port_name"; @@ -715,28 +727,28 @@ public final class VtnServiceJsonConsts { public static final String PORT1_NAME = "port1_name"; public static final String PORT2_NAME = "port2_name"; public static final String ACTUALVERSION = "actual_version"; - public static final String LOGICALPORT1ID="logical_port1_id"; - public static final String DOMAIN1ID="domain1_id"; - public static final String LOGICALPORT2ID="logical_port2_id"; - public static final String DOMAIN2ID="domain2_id"; + public static final String LOGICALPORT1ID = "logical_port1_id"; + public static final String DOMAIN1ID = "domain1_id"; + public static final String LOGICALPORT2ID = "logical_port2_id"; + public static final String DOMAIN2ID = "domain2_id"; public static final String DOMAINLPORT = "logicalport"; public static final String DOMAINLPORTS = "logicalports"; public static final String OPERDOWNCRITERIA = "operstatus_criteria"; - public static final String NMG_STATUS="nmg_status"; + public static final String NMG_STATUS = "nmg_status"; public static final String ROUTER = "router"; public static final String BRIDGE = "bridge"; public static final String DIRECTION_INTERNAL = "internal"; public static final String DIRECTION_EXTERNAL = "external"; public static final String DIRECTION_UNKNOWN = "unknown"; - //public static final String LOGICALPORT_ID = "logical_port_id"; - public static final String LOGICALPORT= "logical_port"; - public static final String LOGICALPORTS= "logical_ports"; - public static final String MEMBER_PORTS="member_ports"; - public static final String SUBDOMAIN ="subdomain"; - public static final String OPERDOWN_CRITERIA ="operdown_criteria"; - public static final String ANY ="any"; - public static final String VLANMAPIDSEPERATOR="-"; + // public static final String LOGICALPORT_ID = "logical_port_id"; + public static final String LOGICALPORT = "logical_port"; + public static final String LOGICALPORTS = "logical_ports"; + public static final String MEMBER_PORTS = "member_ports"; + public static final String SUBDOMAIN = "subdomain"; + public static final String OPERDOWN_CRITERIA = "operdown_criteria"; + public static final String ANY = "any"; + public static final String VLANMAPIDSEPERATOR = "-"; public static final String LPID = "lpid"; public static final String NOLPID = "no_lpid"; public static final String IPROUTES = "iproutes"; @@ -757,7 +769,7 @@ public final class VtnServiceJsonConsts { public static final String RAISE = "raise"; public static final String TUNNEL_ENDPOINT = "tunnel_endpoint"; public static final String DEFAULT_DOMAIN_ID = "(DEFAULT)"; - public static final String SWITCHID_NOT_FOUND= "switchIdNotFound"; + public static final String SWITCHID_NOT_FOUND = "switchIdNotFound"; public static final String PORTID_NOT_FOUND = "portIdNotFound"; public static final String VNP = "vnp"; public static final String ODC = "odc"; @@ -766,8 +778,157 @@ public final class VtnServiceJsonConsts { public static final String TWO = "2"; public static final String DEL = "del"; public static final String V = "V"; - //Constatnts for portmap under overlay + // Constatnts for portmap under overlay public static final String VTUNNEL_INTERFACE_PORTMAP = "VTunnelInterfacePortMap"; public static final String VTEP_INTERFACE_PORTMAP = "VTepInterfacePortMap"; public static final String VBRIDGE_INTERFACE_PORTMAP = "VBridgeInterfacePortMap"; + public static final String DATAFLOWS = "dataflows"; + // vterminal + public static final String VTERMINAL = "vterminal"; + public static final String VTERMINALS = "vterminals"; + public static final String VTERMINAL_NAME = "vterminal_name"; + public static final String VTERM_DESCRIPTION = "vterm_description"; + public static final String SRCMAC = "srcmac"; + public static final String RX_PACKETS = "rx_packets"; + public static final String TX_PACKETS = "tx_packets"; + public static final String TX_BYTES = "rx_bytes"; + public static final String RX_BYTES = "tx_bytes"; + public static final String RX_DROPPED = "rx_dropped"; + public static final String TX_DROPPED = "tx_dropped"; + public static final String RX_ERRORS = "rx_errors"; + public static final String TX_ERRORS = "tx_errors"; + public static final String RX_FRAME_ERR = "rx_frame_err"; + public static final String RX_OVER_ERR = "rx_over_err"; + public static final String RX_CRC_ERRS = "rx_crc_err"; + public static final String COLLISIONS = "collisions"; + + // dataflow + + public static final String MAPPINGID = "mapping_id"; + public static final String MAPPING = "mapping"; + public static final String MAPPINGS = "mappings"; + // VTN Data Flow + public static final String REASON = "reason"; + public static final String CONTROLER_TYPE = "controller_type"; + public static final String FLOW_ID = "flow_id"; + public static final String FLOW_TYPE = "type"; + public static final String POLICY_INDEX = "policy_index"; + public static final String MATCH_TYPE = "match_type"; + public static final String IN_PORT = "inport"; + public static final String DL_ADDR = "dl_addr"; + public static final String V_MASK = "v_mask"; + public static final String DL_ADDR_MASK = "dl_addr_mask"; + public static final String DL_TYPE = "dl_type"; + public static final String VLAN_VID = "vlan_vid"; + public static final String VLAN_PCP = "vlan_pcp"; + public static final String IP_TOS = "ip_tos"; + public static final String IP_PROTO = "ipproto"; + public static final String IPV4_ADDR = "ipv4_addr"; + public static final String IPV4_ADDR_MASK = "ipv4_addr_mask"; + public static final String TP_PORT = "tp_port"; + public static final String TP_PORT_MASK = "tp_port_mask"; + public static final String IPV6_ADDR = "ipv6_addr"; + public static final String VTN_ID = "vtn_id"; + public static final String INGRESS_SWITCH_ID = "ingress_switch_id"; + public static final String INGRESS_STATION_ID = "ingress_station_id"; + public static final String EGRESS_SWITCH_ID = "egress_switch_id"; + public static final String EGRESS_STATION_ID = "egress_station_id"; + public static final String OUTPORT = "outport"; + public static final String ENQUEUE_ID = "enqueue_id"; + public static final String QUEUE_ID = "queue_id"; + public static final String ENQUEUEPORT = "enqueueport"; + public static final String MACSRC = "macsrc"; + public static final String MACDST = "macdst"; + public static final String ETHERNATETYPE = "ethertype"; + public static final String VLAN_ID = "vlan_id"; + public static final String IPSRC = "ipsrc"; + public static final String IPDST = "ipdst"; + public static final String IPV6DST = "ipv6src"; + public static final String IPV6SRC = "ipv6dst"; + public static final String TPSRC = "tpsrc"; + public static final String TSDST = "tpdst"; + public static final String IPTOS = "iptos"; + public static final String SWITCH_ID = "switch_id"; + public static final String INPORT = "inport"; + public static final String TPDST = "tpdst"; + public static final String PATHINFOS = "pathinfos"; + public static final String CONTROLLER_DATAFLOWS = "controller_dataflows"; + public static final String REASON_SUCCESS = "success"; + public static final String REASON_NOT_SUPP = "operation not supported"; + public static final String REASON_EXCD_LIM = "exceeds flow limit"; + public static final String REASON_CTRL_DISC = "controller disconnected"; + public static final String REASON_EXCD_HOP = "exceeds hop limit "; + public static final String REASON_DST_NOT_REACHED = "dst not reached"; + public static final String REASON_FLOW_NOTFOUND = "flow not found"; + public static final String REASON_SYS_ERROR = "system error"; + public static final String RES_SUCCESS = "success"; + public static final String RES_EXCEEDS_FLOW_LIMIT = "exceeds flow limit"; + public static final String RES_EXCEEDS_HOP_LIMIT = "exceeds hop limit"; + public static final String RES_DST_NOT_REACHED = "dst_not_reached"; + public static final String RES_CTRLR_DISCONNECTED = "controller_disconnected"; + public static final String RES_OPERATION_NOT_SUPPORTED = "operation not supported"; + public static final String RES_FLOW_NOT_FOUND = "flow_not_found"; + public static final String RES_SYSTEM_ERROR = "system_error"; + public static final String CONTROLLER_DOMAIN_DATAFLOWS = "controller_domain_dataflows"; + public static final String IDLETIMEOUT = "idletimeout"; + public static final String HARDTIMEOUT = "hardtimeout"; + public static final String INGRESS_VNODE_NAME = "ingress_vnode_name"; + public static final String INGRESS_IF_NAME = "ingress_if_name"; + public static final String INGRESS_PORT_NAME = "ingress_port_name"; + public static final String INGRESS_LOGICAL_PORT_ID = "ingress_logical_port_id"; + public static final String INGRESS_DOMAIN_ID = "ingress_domain_id"; + public static final String EGRESS_VNODE_NAME = "egress_vnode_name"; + public static final String EGRESS_IF_NAME = "egress_if_name"; + public static final String EGRESS_PORT_NAME = "egress_port_name"; + public static final String EGRESS_LOGICAL_PORT_ID = "egress_logical_port_id"; + public static final String EGRESS_DOMAIN_ID = "egress_domain_id"; + public static final String IN_VNODE_NAME = "in_vnode_name"; + public static final String IN_IF_NAME = "in_if_name"; + public static final String OUT_VNODE_NAME = "out_vnode_name"; + public static final String OUT_IF_NAME = "out_if_name"; + public static final String VLINK_FLAG = "vlink_flag"; + public static final String COORDINATOR_VERSION = "coordinator_version"; + + public static final String VLAN_PRIORITY = "vlan_priority"; + + public static final String SRCMACADDR = "srcmacaddr"; + public static final String SETMACSRCADDR = "setmacsrcaddr"; + public static final String SETMACDSTADDR = "setmacdstaddr"; + public static final String SETVLAN_ID = "setvlan_id"; + public static final String SETVLAN_PRIORITY = "setvlan_priority"; + public static final String SETIPSRCADDR = "setipsrcaddr"; + public static final String SETIPDSTADDR = "setipdstaddr"; + public static final String SETIPTOS = "setiptos"; + public static final String SETL4SRCPORT_ICMPTYPE = "setl4srcport_icmptype"; + public static final String SETL4DSTPORT_ICMPTYPE = "setl4dstport_icmptype"; + public static final String SETIPV6DSTADDR = "setipv6dstaddr"; + public static final String SETIPV6SRCADDR = "setipv6srcaddr"; + public static final String OUTPUTPORT = "outputport"; + public static final String MACDSTADDR_MASK = "macdstaddr_mask"; + public static final String MACSRCADDR_MASK = "macsrcaddr_mask"; + public static final String IPSRCADDR_MASK = "ipsrcaddr_mask"; + public static final String IPDSTADDR_MASK = "ipdstaddr_mask"; + public static final String IPV6SRCADDR_MASK = "ipv6srcaddr_mask"; + public static final String IPV6DSTADDR_MASK = "ipv6dstaddr_mask"; + public static final String L4SRCPORT_ICMPTYPE = "l4srcport_icmptype"; + public static final String L4DSTPORT_ICMPTYPE = "l4dstport_icmptype"; + public static final String L4SRCPORT_ICMPTYPE_MASK = "l4srcport_icmptype_mask"; + public static final String L4DSTPORT_ICMPTYPE_MASK = "l4dstport_icmptype_mask"; + public static final String STATUS_INIT = "init"; + public static final String STATUS_ACTIVATING = "activating"; + public static final String STATUS_ACTIVE = "active"; + public static final String STATUS_SWITCHING = "switching"; + public static final String IN_PORT_NAME = "in_port_name"; + public static final String OUT_PORT_NAME = "out_port_name"; + public static final String FLOWCOUNT = "flowcount"; + public static final String RX_FRAMEERR = "rx_frameerr"; + public static final String RX_CRCERR = "rx_crcerr"; + public static final String RX_OVERERR = "rx_overerr"; + public static final String NOT_EXISTS = "not_exists"; + public static final String EXISTS = "exists"; + public static final String MAPPINGINFOS = "mappinginfos"; + public static final String VLAN_ID_65535 = "65535"; + public static final String EMPTY = ""; + public static final String STRIPVLAN = "stripvlan"; + } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/package-info.java new file mode 100644 index 00000000..2791d1ff --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/constants/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Constants. + */ +package org.opendaylight.vtn.javaapi.constants; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceException.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceException.java index 7ca01cb1..e822e721 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceException.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,7 +13,6 @@ import java.util.List; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; -// TODO: Auto-generated Javadoc /** * The Class VtnServiceException. */ @@ -130,7 +129,7 @@ public class VtnServiceException extends Exception { * * @return the code */ - public String getCode() { + public final String getCode() { final StringBuilder builder = new StringBuilder(); builder.append(VtnServiceConsts.OPEN_SQR_BRACKET); @@ -153,7 +152,7 @@ public class VtnServiceException extends Exception { * @see java.lang.Throwable#toString() */ @Override - public String toString() { + public final String toString() { final StringBuilder builder = new StringBuilder(); builder.append(getCode()); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceExceptionHandler.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceExceptionHandler.java index d0ba30e4..5f81561a 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceExceptionHandler.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceExceptionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -33,7 +33,7 @@ public class VtnServiceExceptionHandler { * @throws VtnServiceException * the vtn service exception */ - public void raise(final String errorContext, final String errorCode, + public final void raise(final String errorContext, final String errorCode, final String errorText, final Exception exception) throws VtnServiceException { /* @@ -72,7 +72,7 @@ public class VtnServiceExceptionHandler { * @param exception * the throwable exception */ - public void handle(final String errorContext, final String errorCode, + public final void handle(final String errorContext, final String errorCode, final String errorText, final Exception exception) { /* * raise the exception for final handling and log the exception after diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceInitFailException.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceInitFailException.java index eaa01986..703cfd5b 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceInitFailException.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/VtnServiceInitFailException.java @@ -1,13 +1,13 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.vtn.javaapi.exception; +package org.opendaylight.vtn.javaapi.exception; /** * The Class VtnsInitFailException. diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/package-info.java new file mode 100644 index 00000000..a545ab03 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/exception/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Custom Exception handling classes . + */ +package org.opendaylight.vtn.javaapi.exception; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceConfiguration.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceConfiguration.java index e424f1dc..c518b626 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceConfiguration.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceConfiguration.java @@ -15,6 +15,7 @@ import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; import org.opendaylight.vtn.javaapi.util.VtnServiceUtil; /** @@ -28,6 +29,7 @@ public final class VtnServiceConfiguration { private static final Properties commonConfigProperties = new Properties(); private Properties appConfigProperties = null; + private Properties mapModeConfigProperties = null; static { try { @@ -52,6 +54,8 @@ public final class VtnServiceConfiguration { appConfigProperties = new Properties(); + mapModeConfigProperties = new Properties(); + init(); LOG.trace("Complete VtnServiceConfiguration#VtnServiceConfiguration()"); @@ -75,6 +79,18 @@ public final class VtnServiceConfiguration { .getResourceAsStream( VtnServiceConsts.APP_CONF_FILEPATH)); } + + if (Thread.currentThread().getContextClassLoader().toString() + .contains(VtnServiceOpenStackConsts.VTN_WEB_API_ROOT)) { + synchronized (mapModeConfigProperties) { + mapModeConfigProperties.load(Thread + .currentThread() + .getContextClassLoader() + .getResourceAsStream( + VtnServiceConsts.MAPMODE_CONF_FILEPATH)); + } + } + } catch (final IOException e) { VtnServiceInitManager .getExceptionHandler() @@ -127,4 +143,23 @@ public final class VtnServiceConfiguration { LOG.debug(key + VtnServiceConsts.COLON + configValue); return configValue; } + + /** + * Get map-mode property value for vlan-map creation corresponding to + * OpenStack's Port operation + * + * @param key + * @return + */ + public String getMapModeValue() { + LOG.trace("Return from VtnServiceConfiguration#getMapModeValue()"); + // initialize with 0 as default + String configValue = VtnServiceConsts.ZERO; + if (mapModeConfigProperties != null) { + configValue = mapModeConfigProperties.get( + VtnServiceOpenStackConsts.VLANMAP_MODE).toString(); + } + LOG.debug("Map Mode " + VtnServiceConsts.COLON + configValue); + return configValue; + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceInitManager.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceInitManager.java index c3d3ca05..e3d258b7 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceInitManager.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/VtnServiceInitManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -19,6 +19,10 @@ import org.opendaylight.vtn.javaapi.exception.VtnServiceExceptionHandler; import org.opendaylight.vtn.javaapi.exception.VtnServiceInitFailException; import org.opendaylight.vtn.javaapi.ipc.enums.UncIpcErrorCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ConnectionProperties; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.DataBaseConnectionPool; +import org.opendaylight.vtn.javaapi.util.VtnIniParser; /** * The Class VtnServiceInitManager. Initializes the JavaAPI @@ -32,7 +36,8 @@ public final class VtnServiceInitManager { private static VtnServiceExceptionHandler exceptionHandler = new VtnServiceExceptionHandler(); private static Map configurationMap = new HashMap(); - private static Map connectionPoolMap = new HashMap(); + private static Map ipcConnectionPoolMap = new HashMap(); + private static Map dbConnectionPoolMap = new HashMap(); /** * Instantiates a new vtn service init manager. @@ -62,13 +67,12 @@ public final class VtnServiceInitManager { public static void init() { LOG.trace("Start VtnServiceInitManager#init()"); try { - LOG.debug("Initialization Application Code : " - + Thread.currentThread().getContextClassLoader()); + ClassLoader currentContext = Thread.currentThread() + .getContextClassLoader(); + LOG.debug("Initialization Application Code : " + currentContext); // load the configurations - configurationMap.put( - Thread.currentThread().getContextClassLoader(), - new VtnServiceConfiguration()); + configurationMap.put(currentContext, new VtnServiceConfiguration()); // initialize the error maps with loaded properties UncIpcErrorCode.initializeErrorsMessages(); @@ -76,8 +80,22 @@ public final class VtnServiceInitManager { // initialize the connection pooling final IpcConnPool ipcConnPool = new IpcConnPool(); ipcConnPool.init(exceptionHandler); - connectionPoolMap.put(Thread.currentThread() - .getContextClassLoader(), ipcConnPool); + ipcConnectionPoolMap.put(currentContext, ipcConnPool); + + if (currentContext.toString().contains( + VtnServiceOpenStackConsts.VTN_WEB_API_ROOT)) { + final ConnectionProperties connectionProperties = VtnIniParser + .getInstance( + VtnServiceInitManager + .getConfigurationMap() + .getConfigValue( + VtnServiceOpenStackConsts.INI_FILE_PATH)) + .loadConnectionProperties(); + // initialize the database connection pooling + final DataBaseConnectionPool dbConnPool = new DataBaseConnectionPool( + connectionProperties, exceptionHandler); + dbConnectionPoolMap.put(currentContext, dbConnPool); + } // load the resources PackageScan.getInstance(); @@ -92,6 +110,14 @@ public final class VtnServiceInitManager { LOG.trace("Complete VtnServiceInitManager#init()"); } + /** + * Destroy the JavaAPI + */ + public void destroy() { + dbConnectionPoolMap.get(Thread.currentThread().getContextClassLoader()) + .closeAllConnections(); + } + /** * Get exception handler * @@ -109,10 +135,25 @@ public final class VtnServiceInitManager { .getContextClassLoader()); } + /** + * Get Connection Pool Map for IPC Connections + * @return + */ public static IpcConnPool getConnectionPoolMap() { LOG.debug("Request Application Code : " + Thread.currentThread().getContextClassLoader()); - return connectionPoolMap.get(Thread.currentThread() + return ipcConnectionPoolMap.get(Thread.currentThread() + .getContextClassLoader()); + } + + /** + * Get Connection Pool Map for Database Connections + * @return + */ + public static DataBaseConnectionPool getDbConnectionPoolMap() { + LOG.debug("Request Application Code : " + + Thread.currentThread().getContextClassLoader()); + return dbConnectionPoolMap.get(Thread.currentThread() .getContextClassLoader()); } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/package-info.java new file mode 100644 index 00000000..36da8555 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/init/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API initialization classes and interfaces . + */ +package org.opendaylight.vtn.javaapi.init; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestPacket.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestPacket.java index 4831b749..7fce96c5 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestPacket.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestPacket.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -34,7 +34,7 @@ public class IpcRequestPacket { * * @return the session id */ - public IpcUint32 getSessionId() { + public final IpcUint32 getSessionId() { return sessionId; } @@ -44,7 +44,7 @@ public class IpcRequestPacket { * @param sessionId * the new session id */ - public void setSessionId(final IpcUint32 sessionId) { + public final void setSessionId(final IpcUint32 sessionId) { this.sessionId = sessionId; } @@ -53,7 +53,7 @@ public class IpcRequestPacket { * * @return the config id */ - public IpcUint32 getConfigId() { + public final IpcUint32 getConfigId() { return configId; } @@ -63,7 +63,7 @@ public class IpcRequestPacket { * @param configId * the new config id */ - public void setConfigId(final IpcUint32 configId) { + public final void setConfigId(final IpcUint32 configId) { this.configId = configId; } @@ -72,7 +72,7 @@ public class IpcRequestPacket { * * @return the operation */ - public IpcUint32 getOperation() { + public final IpcUint32 getOperation() { return operation; } @@ -82,7 +82,7 @@ public class IpcRequestPacket { * @param opretaion * the new operation */ - public void setOperation(final IpcUint32 operation) { + public final void setOperation(final IpcUint32 operation) { this.operation = operation; } @@ -91,7 +91,7 @@ public class IpcRequestPacket { * * @return the max rep count */ - public IpcUint32 getMaxRepCount() { + public final IpcUint32 getMaxRepCount() { return maxRepCount; } @@ -101,7 +101,7 @@ public class IpcRequestPacket { * @param maxRepCount * the new max rep count */ - public void setMaxRepCount(final IpcUint32 maxRepCount) { + public final void setMaxRepCount(final IpcUint32 maxRepCount) { this.maxRepCount = maxRepCount; } @@ -110,7 +110,7 @@ public class IpcRequestPacket { * * @return the option1 */ - public IpcUint32 getOption1() { + public final IpcUint32 getOption1() { return option1; } @@ -120,7 +120,7 @@ public class IpcRequestPacket { * @param option1 * the new option1 */ - public void setOption1(final IpcUint32 option1) { + public final void setOption1(final IpcUint32 option1) { this.option1 = option1; } @@ -129,7 +129,7 @@ public class IpcRequestPacket { * * @return the option2 */ - public IpcUint32 getOption2() { + public final IpcUint32 getOption2() { return option2; } @@ -139,7 +139,7 @@ public class IpcRequestPacket { * @param option2 * the new option2 */ - public void setOption2(final IpcUint32 option2) { + public final void setOption2(final IpcUint32 option2) { this.option2 = option2; } @@ -148,7 +148,7 @@ public class IpcRequestPacket { * * @return the data type */ - public IpcUint32 getDataType() { + public final IpcUint32 getDataType() { return dataType; } @@ -158,7 +158,7 @@ public class IpcRequestPacket { * @param dataType * the new data type */ - public void setDataType(final IpcUint32 dataType) { + public final void setDataType(final IpcUint32 dataType) { this.dataType = dataType; } @@ -167,7 +167,7 @@ public class IpcRequestPacket { * * @return the key type */ - public IpcUint32 getKeyType() { + public final IpcUint32 getKeyType() { return keyType; } @@ -177,7 +177,7 @@ public class IpcRequestPacket { * @param keyType * the new key type */ - public void setKeyType(final IpcUint32 keyType) { + public final void setKeyType(final IpcUint32 keyType) { this.keyType = keyType; } @@ -186,7 +186,7 @@ public class IpcRequestPacket { * * @return the key struct */ - public IpcStruct getKeyStruct() { + public final IpcStruct getKeyStruct() { return keyStruct; } @@ -196,7 +196,7 @@ public class IpcRequestPacket { * @param keyStruct * the new key struct */ - public void setKeyStruct(final IpcStruct keyStruct) { + public final void setKeyStruct(final IpcStruct keyStruct) { this.keyStruct = keyStruct; } @@ -205,7 +205,7 @@ public class IpcRequestPacket { * * @return the val struct */ - public IpcStruct getValStruct() { + public final IpcStruct getValStruct() { return valStruct; } @@ -215,7 +215,7 @@ public class IpcRequestPacket { * @param valStruct * the new val struct */ - public void setValStruct(final IpcStruct valStruct) { + public final void setValStruct(final IpcStruct valStruct) { this.valStruct = valStruct; } @@ -224,7 +224,7 @@ public class IpcRequestPacket { * * @return */ - public IpcDataUnit[] getExtraDataUnits() { + public final IpcDataUnit[] getExtraDataUnits() { return extraDataUnits; } @@ -233,7 +233,7 @@ public class IpcRequestPacket { * * @param extraDataUnits */ - public void setExtraDataUnits(final IpcDataUnit[] extraDataUnits) { + public final void setExtraDataUnits(final IpcDataUnit[] extraDataUnits) { this.extraDataUnits = extraDataUnits; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestProcessor.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestProcessor.java index 22f31675..faccce59 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestProcessor.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRequestProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -88,7 +88,8 @@ public class IpcRequestProcessor { * * @return the request packet */ - public void setServiceInfo(final String serviceName, final int serviceId) { + public final void setServiceInfo(final String serviceName, + final int serviceId) { this.serviceName = serviceName; this.serviceId = serviceId; } @@ -98,7 +99,7 @@ public class IpcRequestProcessor { * * @return the request packet */ - public IpcRequestPacket getRequestPacket() { + public final IpcRequestPacket getRequestPacket() { LOG.trace("Return from IpcRequestProcessor#getRequestPacket()"); return requestPacket; } @@ -115,10 +116,10 @@ public class IpcRequestProcessor { * @throws VtnServiceException * the vtn service exception */ - public void createIpcRequestPacket( + public final void createIpcRequestPacket( final IpcRequestPacketEnum requestPacketEnum, final JsonObject requestBody, final List uriParameters) - throws VtnServiceException { + throws VtnServiceException { LOG.trace("Start IpcRequestProcessor#createIpcRequestPacket()"); @@ -217,7 +218,8 @@ public class IpcRequestProcessor { requestPacket.setOperation(new IpcUint32( UncOperationEnum.UNC_OP_READ_SIBLING_COUNT.ordinal())); } else if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL) - || opType.equalsIgnoreCase(VtnServiceJsonConsts.NORMAL)) { + || opType.equalsIgnoreCase(VtnServiceJsonConsts.NORMAL) + || opType.equalsIgnoreCase(VtnServiceJsonConsts.INFO)) { /* * No need to update option1 value on the basis of "op" * parameter's value requestPacket.setOption1(new @@ -235,7 +237,7 @@ public class IpcRequestProcessor { // operation type is read_sibling_begin, if index is null requestPacket.setOperation(new IpcUint32( UncOperationEnum.UNC_OP_READ_SIBLING_BEGIN - .ordinal())); + .ordinal())); } } else { LOG.debug("No need to change the operation type i.e. READ"); @@ -298,7 +300,7 @@ public class IpcRequestProcessor { } else { // if not available, then get the default value and set to IPC // request packet - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); requestPacket.setMaxRepCount(new IpcUint32(configuration .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT))); @@ -315,7 +317,8 @@ public class IpcRequestProcessor { * @throws VtnServiceException * the vtn service exception */ - public IpcDataUnit[] getIpcResponsePacket() throws VtnServiceException { + public final IpcDataUnit[] getIpcResponsePacket() + throws VtnServiceException { LOG.trace("Start IpcRequestProcessor#getIpcResponsePacket()"); IpcDataUnit[] ipcDataUnits = null; @@ -330,7 +333,7 @@ public class IpcRequestProcessor { // with key and value structures final int size = session.getResponseCount(); ipcDataUnits = new IpcDataUnit[size - - VtnServiceConsts.IPC_RESUL_CODE_INDEX - 1]; + - VtnServiceConsts.IPC_RESUL_CODE_INDEX - 1]; // iterate response one by one after Result Code int index = 0; for (int i = VtnServiceConsts.IPC_RESUL_CODE_INDEX + 1; i < size; i++) { @@ -342,11 +345,11 @@ public class IpcRequestProcessor { } catch (final IpcException e) { exceptionHandler.raise( Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorMessage(), e); + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorMessage(), e); } LOG.trace("Complete IpcRequestProcessor#getIpcResponsePacket()"); return ipcDataUnits; @@ -407,7 +410,7 @@ public class IpcRequestProcessor { errorJson.add(VtnServiceJsonConsts.ERROR, error); } - public JsonObject getErrorJson() { + public final JsonObject getErrorJson() { return errorJson; } @@ -416,7 +419,7 @@ public class IpcRequestProcessor { * * @return the exception handler */ - public VtnServiceExceptionHandler getExceptionHandler() { + public final VtnServiceExceptionHandler getExceptionHandler() { LOG.trace("Return from IpcRequestProcessor#getExceptionHandler()"); return exceptionHandler; } @@ -436,7 +439,7 @@ public class IpcRequestProcessor { */ private IpcStruct getIpcStructure(final String structName, final JsonObject requestBody, final List uriParameters) - throws VtnServiceException { + throws VtnServiceException { LOG.trace("Start IpcRequestProcessor#getIpcStructure()"); IpcStruct ipcStruct = null; @@ -454,22 +457,22 @@ public class IpcRequestProcessor { // get the method name to get the IpcStruct object for given key method = sourceClass.getMethod( VtnServiceConsts.STRUCT_METHOD_PREFIX + structName - + VtnServiceConsts.STRUCT_METHOD_POSTFIX, + + VtnServiceConsts.STRUCT_METHOD_POSTFIX, JsonObject.class, List.class); // get IpcStruct object ipcStruct = (IpcStruct) method.invoke(stuctGenerator, requestBody, uriParameters); } catch (final Exception e) { exceptionHandler - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.INTERNAL_ERROR - .getErrorCode(), + .getErrorCode(), UncJavaAPIErrorCode.INTERNAL_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); } } LOG.trace("Complete IpcRequestProcessor#getIpcStructure()"); @@ -483,7 +486,7 @@ public class IpcRequestProcessor { * @throws VtnServiceException * the vtn service exception */ - public int processIpcRequest() throws VtnServiceException { + public final int processIpcRequest() throws VtnServiceException { LOG.trace("Start IpcRequestProcessor#processIpcRequest()"); int status = ClientSession.RESP_FATAL; @@ -546,31 +549,35 @@ public class IpcRequestProcessor { .getResponse(VtnServiceConsts.IPC_RESUL_CODE_INDEX)); LOG.debug("Result code received: " + resultCode); final int keyType = requestPacket.getKeyType().intValue(); - - if(requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ.ordinal() - || requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ_SIBLING_BEGIN.ordinal() - || requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ_SIBLING.ordinal() - || requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ_SIBLING_COUNT.ordinal()){ - if (keyType >= UncCommonEnum.MIN_LOGICAL_KEYTYPE - && keyType <= UncCommonEnum.MAX_LOGICAL_KEYTYPE - && Integer.parseInt(resultCode) == VtnServiceConsts.UPLL_RC_ERR_NO_SUCH_INSTANCE) { - noSuchInstanceFlag = true; - LOG.debug("No such instance case for UPLL"); - } else if (keyType >= UncCommonEnum.MIN_PHYSICAL_KEYTYPE - && keyType <= UncCommonEnum.MAX_PHYSICAL_KEYTYPE - && Integer.parseInt(resultCode) == VtnServiceConsts.UPPL_RC_ERR_NO_SUCH_INSTANCE) { - noSuchInstanceFlag = true; - LOG.debug("No such instance case for UPPL"); - } else { - LOG.debug(" Either Key Type does not exists or operation is not success"); - } - } - + + if (requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ + .ordinal() + || requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ_SIBLING_BEGIN + .ordinal() + || requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ_SIBLING + .ordinal() + || requestPacket.getOperation().intValue() == UncOperationEnum.UNC_OP_READ_SIBLING_COUNT + .ordinal()) { + if (keyType >= UncCommonEnum.MIN_LOGICAL_KEYTYPE + && keyType <= UncCommonEnum.MAX_LOGICAL_KEYTYPE + && Integer.parseInt(resultCode) == VtnServiceConsts.UPLL_RC_ERR_NO_SUCH_INSTANCE) { + noSuchInstanceFlag = true; + LOG.debug("No such instance case for UPLL"); + } else if (keyType >= UncCommonEnum.MIN_PHYSICAL_KEYTYPE + && keyType <= UncCommonEnum.MAX_PHYSICAL_KEYTYPE + && Integer.parseInt(resultCode) == VtnServiceConsts.UPPL_RC_ERR_NO_SUCH_INSTANCE) { + noSuchInstanceFlag = true; + LOG.debug("No such instance case for UPPL"); + } else { + LOG.debug(" Either Key Type does not exists or operation is not success"); + } + } + // if return code is not success, then create the error Json for // received result code if (null == resultCode || UncIpcErrorCode.RC_SUCCESS != Integer - .parseInt(resultCode)) { + .parseInt(resultCode)) { if (noSuchInstanceFlag) { status = UncResultCode.UNC_SUCCESS.getValue(); } else { @@ -584,11 +591,11 @@ public class IpcRequestProcessor { } catch (final IpcException e) { exceptionHandler.raise( Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorMessage(), e); + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_OP_ERROR.getErrorMessage(), e); } LOG.trace("Complete IpcRequestProcessor#processIpcRequest()"); return status; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRollback.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRollback.java index 25c63605..91536451 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRollback.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcRollback.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -46,7 +46,7 @@ public class IpcRollback { * * @return the ipc request packet */ - public IpcRequestPacket popIpcPacket() { + public final IpcRequestPacket popIpcPacket() { IpcRequestPacket requestPacket = null; if (!ipcRequestPacketStack.isEmpty()) { requestPacket = ipcRequestPacketStack.pop(); @@ -60,7 +60,7 @@ public class IpcRollback { * @param requestPacket * the request packet */ - public void pushIpcPacket(final IpcRequestPacket requestPacket) { + public final void pushIpcPacket(final IpcRequestPacket requestPacket) { ipcRequestPacketStack.push(requestPacket); } @@ -73,7 +73,8 @@ public class IpcRollback { * @throws VtnServiceException * the vtn service exception */ - public boolean rollBackIpcRequest(final IpcRequestProcessor requestProcessor) + public final boolean rollBackIpcRequest( + final IpcRequestProcessor requestProcessor) throws VtnServiceException { boolean rollBackStatus = false; final Iterator ipcRequestPacketIterator = ipcRequestPacketStack diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcStructFactory.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcStructFactory.java index b3cb8240..b5ebef88 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcStructFactory.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/IpcStructFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,7 +38,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vtn struct */ - public IpcStruct getKeyVtnStruct(final JsonObject requestBody, + public final IpcStruct getKeyVtnStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct KeyVtn { UINT8 vtn_name[32]; }; @@ -75,7 +75,7 @@ public class IpcStructFactory { * the uri parameters * @return the val_vtn struct */ - public IpcStruct getValVtnStruct(final JsonObject requestBody, + public final IpcStruct getValVtnStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getValVtnStruct"); final IpcStruct valVtnStruct = IpcDataUnitWrapper @@ -122,7 +122,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vrt struct */ - public IpcStruct getKeyVrtStruct(final JsonObject requestBody, + public final IpcStruct getKeyVrtStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVrtStruct"); final IpcStruct keyVtnVrtStruct = IpcDataUnitWrapper @@ -167,8 +167,8 @@ public class IpcStructFactory { * the uri parameters * @return the key dhcp relay if struct */ - public IpcStruct getKeyDhcpRelayIfStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyDhcpRelayIfStruct( + final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -266,7 +266,7 @@ public class IpcStructFactory { * the uri parameters * @return the key flow list struct */ - public IpcStruct getKeyFlowListStruct(final JsonObject requestBody, + public final IpcStruct getKeyFlowListStruct(final JsonObject requestBody, final List uriParameters) { // low level structure /* @@ -307,7 +307,7 @@ public class IpcStructFactory { * the uri parameters * @return the val flow list struct */ - public IpcStruct getValFlowListStruct(final JsonObject requestBody, + public final IpcStruct getValFlowListStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start ValFlowListStruct"); final IpcStruct valFlowListStruct = IpcDataUnitWrapper @@ -377,8 +377,8 @@ public class IpcStructFactory { * the uri parameters * @return the key flow list entry struct */ - public IpcStruct getKeyFlowListEntryStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyFlowListEntryStruct( + final JsonObject requestBody, final List uriParameters) { // low level structure /* * ipc_struct key_flowlist_entry { key_flowlist flowlist_key; UINT16 @@ -427,14 +427,15 @@ public class IpcStructFactory { * the request body * @return the val flow list entry struct */ - public IpcStruct getValFlowListEntryStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getValFlowListEntryStruct( + final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getValFlowListEntryStruct"); final IpcStruct valFlowListEntryStruct = IpcDataUnitWrapper .setIpcStructValue(UncStructEnum.ValFlowListEntry.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.FLOWLISTENTRY)) { - JsonObject flowListEntry = requestBody.getAsJsonObject(VtnServiceJsonConsts.FLOWLISTENTRY); + final JsonObject flowListEntry = requestBody + .getAsJsonObject(VtnServiceJsonConsts.FLOWLISTENTRY); if (flowListEntry.has(VtnServiceJsonConsts.MACDSTADDR)) { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -443,10 +444,15 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - IpcDataUnitWrapper.setMacAddress( - valFlowListEntryStruct, - VtnServiceIpcConsts.MACDST,flowListEntry.get(VtnServiceJsonConsts.MACDSTADDR).getAsString(), - UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_MAC_DST_FLE.ordinal()); + IpcDataUnitWrapper + .setMacAddress( + valFlowListEntryStruct, + VtnServiceIpcConsts.MACDST, + flowListEntry.get( + VtnServiceJsonConsts.MACDSTADDR) + .getAsString(), + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_MAC_DST_FLE + .ordinal()); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -464,11 +470,15 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - IpcDataUnitWrapper.setMacAddress( - valFlowListEntryStruct, - VtnServiceIpcConsts.MACSRC, - flowListEntry.get(VtnServiceJsonConsts.MACSRCADDR).getAsString(), - UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_MAC_SRC_FLE.ordinal()); + IpcDataUnitWrapper + .setMacAddress( + valFlowListEntryStruct, + VtnServiceIpcConsts.MACSRC, + flowListEntry.get( + VtnServiceJsonConsts.MACSRCADDR) + .getAsString(), + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_MAC_SRC_FLE + .ordinal()); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -486,10 +496,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.MAC_ETH_TYPE, - IpcDataUnitWrapper.setIpcUint16HexaValue(flowListEntry.get(VtnServiceJsonConsts.MACETHERTYPE).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_MAC_ETH_TYPE_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.MAC_ETH_TYPE, + IpcDataUnitWrapper + .setIpcUint16HexaValue( + flowListEntry + .get(VtnServiceJsonConsts.MACETHERTYPE) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_MAC_ETH_TYPE_FLE + .ordinal())); LOG.debug("macethertype:" + flowListEntry.get(VtnServiceJsonConsts.MACETHERTYPE) .getAsString()); @@ -510,10 +526,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.DST_IP, - IpcDataUnitWrapper.setIpcInet4AddressValue(flowListEntry.get(VtnServiceJsonConsts.IPDSTADDR).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.DST_IP, + IpcDataUnitWrapper + .setIpcInet4AddressValue( + flowListEntry + .get(VtnServiceJsonConsts.IPDSTADDR) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -531,10 +553,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.DST_IP_PREFIXLEN, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPDSTADDRPREFIX).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_PREFIX_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.DST_IP_PREFIXLEN, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPDSTADDRPREFIX) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_PREFIX_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -552,10 +580,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.SRC_IP, - IpcDataUnitWrapper.setIpcInet4AddressValue(flowListEntry.get(VtnServiceJsonConsts.IPSRCADDR).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.SRC_IP, + IpcDataUnitWrapper + .setIpcInet4AddressValue( + flowListEntry + .get(VtnServiceJsonConsts.IPSRCADDR) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -573,10 +607,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.SRC_IP_PREFIXLEN, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPSRCADDRPREFIX).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_PREFIX_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.SRC_IP_PREFIXLEN, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPSRCADDRPREFIX) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_PREFIX_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -595,10 +635,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.VLAN_PRIORITY, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.MACVLANPRIORITY).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_VLAN_PRIORITY_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.VLAN_PRIORITY, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.MACVLANPRIORITY) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_VLAN_PRIORITY_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -616,10 +662,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.DST_IPV6, - IpcDataUnitWrapper.setIpcInet6AddressValue(flowListEntry.get(VtnServiceJsonConsts.IPV6DSTADDR).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_V6_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.DST_IPV6, + IpcDataUnitWrapper + .setIpcInet6AddressValue( + flowListEntry + .get(VtnServiceJsonConsts.IPV6DSTADDR) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_V6_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -637,10 +689,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.DST_IPV6_PREFIXLEN, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPV6DSTADDRPREFIX).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_V6_PREFIX_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.DST_IPV6_PREFIXLEN, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPV6DSTADDRPREFIX) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_DST_IP_V6_PREFIX_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -658,10 +716,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.SRC_IPV6, - IpcDataUnitWrapper.setIpcInet6AddressValue(flowListEntry.get(VtnServiceJsonConsts.IPV6SRCADDR).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_V6_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.SRC_IPV6, + IpcDataUnitWrapper + .setIpcInet6AddressValue( + flowListEntry + .get(VtnServiceJsonConsts.IPV6SRCADDR) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_V6_FLE + .ordinal())); LOG.debug("ipv6srcaddr:" + flowListEntry.get(VtnServiceJsonConsts.IPV6SRCADDR) .getAsString()); @@ -682,10 +746,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.SRC_IPV6_PREFIXLEN, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPV6SRCADDRPREFIX).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_V6_PREFIX_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.SRC_IPV6_PREFIXLEN, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPV6SRCADDRPREFIX) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_SRC_IP_V6_PREFIX_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -703,10 +773,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.IP_PROTO, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPPROTO).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_IP_PROTOCOL_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.IP_PROTO, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPPROTO) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_IP_PROTOCOL_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -727,8 +803,13 @@ public class IpcStructFactory { valFlowListEntryStruct .set(VtnServiceIpcConsts.IP_DSCP, IpcDataUnitWrapper - .setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPDSCP).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_IP_DSCP_FLE.ordinal())); + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPDSCP) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_IP_DSCP_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -746,10 +827,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.L4_DST_PORT, - IpcDataUnitWrapper.setIpcUint16Value(flowListEntry.get(VtnServiceJsonConsts.L4DSTPORT).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_DST_PORT_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.L4_DST_PORT, + IpcDataUnitWrapper + .setIpcUint16Value( + flowListEntry + .get(VtnServiceJsonConsts.L4DSTPORT) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_DST_PORT_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -767,10 +854,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.L4_DST_PORT_ENDPT, - IpcDataUnitWrapper.setIpcUint16Value(flowListEntry.get(VtnServiceJsonConsts.L4DSTENDPORT).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_DST_PORT_ENDPT_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.L4_DST_PORT_ENDPT, + IpcDataUnitWrapper + .setIpcUint16Value( + flowListEntry + .get(VtnServiceJsonConsts.L4DSTENDPORT) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_DST_PORT_ENDPT_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -788,10 +881,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.L4_SRC_PORT, - IpcDataUnitWrapper.setIpcUint16Value(flowListEntry.get(VtnServiceJsonConsts.L4SRCPORT).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_SRC_PORT_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.L4_SRC_PORT, + IpcDataUnitWrapper + .setIpcUint16Value( + flowListEntry + .get(VtnServiceJsonConsts.L4SRCPORT) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_SRC_PORT_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -809,10 +908,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.L4_SRC_PORT_ENDPT, - IpcDataUnitWrapper.setIpcUint16Value(flowListEntry.get(VtnServiceJsonConsts.L4SRCENDPORT).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_SRC_PORT_ENDPT_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.L4_SRC_PORT_ENDPT, + IpcDataUnitWrapper + .setIpcUint16Value( + flowListEntry + .get(VtnServiceJsonConsts.L4SRCENDPORT) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_L4_SRC_PORT_ENDPT_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -830,10 +935,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.ICMP_TYPE, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.ICMPTYPENUM).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_TYPE_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.ICMP_TYPE, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.ICMPTYPENUM) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_TYPE_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -851,10 +962,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.ICMP_CODE, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.ICMPCODENUM).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_CODE_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.ICMP_CODE, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.ICMPCODENUM) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_CODE_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -872,10 +989,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.ICMPV6_TYPE, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPV6ICMPTYPENUM).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_V6_TYPE_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.ICMPV6_TYPE, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPV6ICMPTYPENUM) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_V6_TYPE_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -893,10 +1016,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowListEntryStruct.set( - VtnServiceIpcConsts.ICMPV6_CODE, - IpcDataUnitWrapper.setIpcUint8Value(flowListEntry.get(VtnServiceJsonConsts.IPV6ICMPCODENUM).getAsString(), - valFlowListEntryStruct, UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_V6_CODE_FLE.ordinal())); + valFlowListEntryStruct + .set(VtnServiceIpcConsts.ICMPV6_CODE, + IpcDataUnitWrapper + .setIpcUint8Value( + flowListEntry + .get(VtnServiceJsonConsts.IPV6ICMPCODENUM) + .getAsString(), + valFlowListEntryStruct, + UncStructIndexEnum.ValFlowlistEntryIndex.UPLL_IDX_ICMP_V6_CODE_FLE + .ordinal())); } else { valFlowListEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -923,7 +1052,7 @@ public class IpcStructFactory { * the URI parameters * @return the key v tunnel if struct */ - public IpcStruct getKeyVtunnelIfStruct(final JsonObject requestBody, + public final IpcStruct getKeyVtunnelIfStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVtunnelIfStruct"); final IpcStruct KeyVTunnelIfStruct = IpcDataUnitWrapper @@ -969,7 +1098,7 @@ public class IpcStructFactory { * the uri parameters * @return the val v tunnel if struct */ - public IpcStruct getValVtunnelIfStruct(final JsonObject requestBody, + public final IpcStruct getValVtunnelIfStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getValVtunnelIfStruct"); final IpcStruct ValVTunnelIfStruct = IpcDataUnitWrapper @@ -1016,14 +1145,22 @@ public class IpcStructFactory { ValVTunnelIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE.getValue(), - ValVTunnelIfStruct, UncStructIndexEnum.ValVtunnelIfIndex.UPLL_IDX_ADMIN_ST_VTNL_IF.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE + .getValue(), + ValVTunnelIfStruct, + UncStructIndexEnum.ValVtunnelIfIndex.UPLL_IDX_ADMIN_ST_VTNL_IF + .ordinal())); } else { ValVTunnelIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE.getValue(), - ValVTunnelIfStruct, UncStructIndexEnum.ValVtunnelIfIndex.UPLL_IDX_ADMIN_ST_VTNL_IF.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE + .getValue(), + ValVTunnelIfStruct, + UncStructIndexEnum.ValVtunnelIfIndex.UPLL_IDX_ADMIN_ST_VTNL_IF + .ordinal())); } LOG.debug("adminstatus:" + requestBody @@ -1138,7 +1275,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vlink struct */ - public IpcStruct getKeyVlinkStruct(final JsonObject requestBody, + public final IpcStruct getKeyVlinkStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVlinkStruct"); final IpcStruct KeyVlinkStruct = IpcDataUnitWrapper @@ -1183,13 +1320,14 @@ public class IpcStructFactory { * the uri parameters * @return the val vlink struct */ - public IpcStruct getValVlinkStruct(final JsonObject requestBody, + public final IpcStruct getValVlinkStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getValVlinkStruct"); final IpcStruct ValVlinkStruct = IpcDataUnitWrapper .setIpcStructValue(UncStructEnum.ValVlink.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VLINK)) { - JsonObject vLink = requestBody.getAsJsonObject(VtnServiceJsonConsts.VLINK); + final JsonObject vLink = requestBody + .getAsJsonObject(VtnServiceJsonConsts.VLINK); if (vLink.has(VtnServiceJsonConsts.ADMINSTATUS)) { ValVlinkStruct .set(VtnServiceIpcConsts.VALID, @@ -1203,14 +1341,22 @@ public class IpcStructFactory { ValVlinkStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE.getValue(), - ValVlinkStruct,UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_ADMIN_STATUS_VLNK.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE + .getValue(), + ValVlinkStruct, + UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_ADMIN_STATUS_VLNK + .ordinal())); } else { ValVlinkStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE.getValue(), - ValVlinkStruct,UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_ADMIN_STATUS_VLNK.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE + .getValue(), + ValVlinkStruct, + UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_ADMIN_STATUS_VLNK + .ordinal())); } LOG.debug("adminstatus:" + vLink.get(VtnServiceJsonConsts.ADMINSTATUS) @@ -1236,7 +1382,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.VNODE1NAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vLink.get(VtnServiceJsonConsts.VNODE1NAME) + vLink.get( + VtnServiceJsonConsts.VNODE1NAME) .getAsString(), ValVlinkStruct, UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VNODE1_NAME_VLNK @@ -1262,7 +1409,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.VNODE1IFNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vLink.get(VtnServiceJsonConsts.IF1NAME) + vLink.get( + VtnServiceJsonConsts.IF1NAME) .getAsString(), ValVlinkStruct, UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VNODE1_IF_NAME_VLNK @@ -1288,7 +1436,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.VNODE2NAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vLink.get(VtnServiceJsonConsts.VNODE2NAME) + vLink.get( + VtnServiceJsonConsts.VNODE2NAME) .getAsString(), ValVlinkStruct, UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VNODE2_NAME_VLNK @@ -1314,7 +1463,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.VNODE2IFNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vLink.get(VtnServiceJsonConsts.IF2NAME) + vLink.get( + VtnServiceJsonConsts.IF2NAME) .getAsString(), ValVlinkStruct, UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VNODE2_IF_NAME_VLNK @@ -1328,8 +1478,9 @@ public class IpcStructFactory { .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal())); } - if (vLink.has(VtnServiceJsonConsts.BOUNDARYMAP)){ - JsonObject boundaryMap = vLink.getAsJsonObject(VtnServiceJsonConsts.BOUNDARYMAP); + if (vLink.has(VtnServiceJsonConsts.BOUNDARYMAP)) { + final JsonObject boundaryMap = vLink + .getAsJsonObject(VtnServiceJsonConsts.BOUNDARYMAP); if (boundaryMap.has(VtnServiceJsonConsts.BOUNDARYID)) { ValVlinkStruct .set(VtnServiceIpcConsts.VALID, @@ -1366,9 +1517,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - ValVlinkStruct.set(VtnServiceJsonConsts.VLANID, - IpcDataUnitWrapper.setIpcUint16Value(boundaryMap.get(VtnServiceJsonConsts.VLANID).getAsString(), - ValVlinkStruct, UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VLAN_ID_VLNK.ordinal())); + ValVlinkStruct + .set(VtnServiceJsonConsts.VLANID, + IpcDataUnitWrapper + .setIpcUint16Value( + boundaryMap + .get(VtnServiceJsonConsts.VLANID) + .getAsString(), + ValVlinkStruct, + UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VLAN_ID_VLNK + .ordinal())); } else if (boundaryMap.has(VtnServiceJsonConsts.NO_VLAN_ID)) { LOG.debug("Valid NO VLAN ID Case"); ValVlinkStruct @@ -1381,8 +1539,11 @@ public class IpcStructFactory { ValVlinkStruct .set(VtnServiceJsonConsts.VLANID, IpcDataUnitWrapper - .setIpcUint16HexaValue(VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE, - ValVlinkStruct, UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VLAN_ID_VLNK.ordinal())); + .setIpcUint16HexaValue( + VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE, + ValVlinkStruct, + UncStructIndexEnum.ValVlinkIndex.UPLL_IDX_VLAN_ID_VLNK + .ordinal())); } else { LOG.debug("InValid VLAN ID Case"); ValVlinkStruct @@ -1444,7 +1605,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vtep struct */ - public IpcStruct getKeyVtepStruct(final JsonObject requestBody, + public final IpcStruct getKeyVtepStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVtepStruct"); final IpcStruct KeyVtepStruct = IpcDataUnitWrapper @@ -1485,7 +1646,7 @@ public class IpcStructFactory { * the uri parameters * @return the Val VTEP struct */ - public IpcStruct getValVtepStruct(final JsonObject requestBody, + public final IpcStruct getValVtepStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_vtep { UINT8 valid[23]; UINT8 cs_row_status; UINT8 @@ -1496,7 +1657,8 @@ public class IpcStructFactory { final IpcStruct ValVtepStruct = IpcDataUnitWrapper .setIpcStructValue(UncStructEnum.ValVtep.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VTEP)) { - JsonObject vtep = requestBody.getAsJsonObject(VtnServiceJsonConsts.VTEP); + final JsonObject vtep = requestBody + .getAsJsonObject(VtnServiceJsonConsts.VTEP); if (vtep.has(VtnServiceJsonConsts.DESCRIPTION)) { ValVtepStruct .set(VtnServiceIpcConsts.VALID, @@ -1509,7 +1671,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vtep.get(VtnServiceJsonConsts.DESCRIPTION) + vtep.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), ValVtepStruct, UncStructIndexEnum.ValVtepVndex.UPLL_IDX_DESC_VTEP @@ -1535,7 +1698,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.CONTROLLERID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vtep.get(VtnServiceJsonConsts.CONTROLLERID) + vtep.get( + VtnServiceJsonConsts.CONTROLLERID) .getAsString(), ValVtepStruct, UncStructIndexEnum.ValVtepVndex.UPLL_IDX_CONTROLLER_ID_VTEP @@ -1561,7 +1725,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DOMAINID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vtep.get(VtnServiceJsonConsts.DOMAINID) + vtep.get( + VtnServiceJsonConsts.DOMAINID) .getAsString(), ValVtepStruct, UncStructIndexEnum.ValVtepVndex.UPLL_IDX_DOMAIN_ID_VTEP @@ -1592,7 +1757,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vtep if struct */ - public IpcStruct getKeyVtepIfStruct(final JsonObject requestBody, + public final IpcStruct getKeyVtepIfStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVtepIfStruct"); final IpcStruct KeyVtepIfStruct = IpcDataUnitWrapper @@ -1638,7 +1803,7 @@ public class IpcStructFactory { * the uri parameters * @return the Val VTEP Interface struct */ - public IpcStruct getValVtepIfStruct(final JsonObject requestBody, + public final IpcStruct getValVtepIfStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getValVtepIfStruct"); final IpcStruct ValVtepIfStruct = IpcDataUnitWrapper @@ -1686,14 +1851,22 @@ public class IpcStructFactory { ValVtepIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE.getValue(), - ValVtepIfStruct,UncStructIndexEnum.ValVtepIfIndex.UPLL_IDX_ADMIN_ST_VTEPI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE + .getValue(), + ValVtepIfStruct, + UncStructIndexEnum.ValVtepIfIndex.UPLL_IDX_ADMIN_ST_VTEPI + .ordinal())); } else { ValVtepIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE.getValue(), - ValVtepIfStruct,UncStructIndexEnum.ValVtepIfIndex.UPLL_IDX_ADMIN_ST_VTEPI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE + .getValue(), + ValVtepIfStruct, + UncStructIndexEnum.ValVtepIfIndex.UPLL_IDX_ADMIN_ST_VTEPI + .ordinal())); } LOG.debug("adminstatus:" + requestBody @@ -1806,7 +1979,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vbr if flow filter entry struct */ - public IpcStruct getKeyVbrIfFlowFilterEntryStruct( + public final IpcStruct getKeyVbrIfFlowFilterEntryStruct( final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVbrIfFlowFilterEntryStruct"); final IpcStruct KeyVbrIfFlowFilterEntryStruct = IpcDataUnitWrapper @@ -1852,8 +2025,8 @@ public class IpcStructFactory { * the uri parameters * @return the key vrt if flow filter struct */ - public IpcStruct getKeyVrtIfFlowFilterStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyVrtIfFlowFilterStruct( + final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVrtIfFlowFilterStruct"); final IpcStruct KeyVrtIfFlowFilterStruct = IpcDataUnitWrapper .setIpcStructValue(UncStructEnum.KeyVrtIfFlowFilter.getValue()); @@ -1922,7 +2095,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vrt if flow filter entry struct */ - public IpcStruct getKeyVrtIfFlowFilterEntryStruct( + public final IpcStruct getKeyVrtIfFlowFilterEntryStruct( final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVrtIfFlowFilterEntryStruct"); final IpcStruct KeyVrtIfFlowFilterEntryStruct = IpcDataUnitWrapper @@ -1969,8 +2142,8 @@ public class IpcStructFactory { * @return the key vbr IfFlow Filter */ - public IpcStruct getKeyVbrIfFlowFilterStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyVbrIfFlowFilterStruct( + final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getKeyVbrIfFlowFilterStruct"); final IpcStruct keyVbrIfFlowFilterStruct = IpcDataUnitWrapper .setIpcStructValue(UncStructEnum.KeyVbrIfFlowFilter.getValue()); @@ -2041,7 +2214,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vbr struct */ - public IpcStruct getKeyVbrStruct(final JsonObject requestBody, + public final IpcStruct getKeyVbrStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -2088,7 +2261,7 @@ public class IpcStructFactory { * the request body * @return the val vbr struct */ - public IpcStruct getValVbrStruct(final JsonObject requestBody, + public final IpcStruct getValVbrStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_vbr { UINT8 valid[5]; UINT8 cs_row_status; UINT8 @@ -2100,7 +2273,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValVbr.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VBRIDGE)) { - JsonObject vBridge = requestBody.getAsJsonObject(VtnServiceJsonConsts.VBRIDGE); + final JsonObject vBridge = requestBody + .getAsJsonObject(VtnServiceJsonConsts.VBRIDGE); if (vBridge.has(VtnServiceJsonConsts.CONTROLLERID)) { valVbrStruct .set(VtnServiceIpcConsts.VALID, @@ -2113,7 +2287,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.CONTROLLERID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vBridge.get(VtnServiceJsonConsts.CONTROLLERID) + vBridge.get( + VtnServiceJsonConsts.CONTROLLERID) .getAsString(), valVbrStruct, UncStructIndexEnum.ValVbrIndex.UPLL_IDX_CONTROLLER_ID_VBR @@ -2139,7 +2314,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DOMAINID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vBridge.get(VtnServiceJsonConsts.DOMAINID) + vBridge.get( + VtnServiceJsonConsts.DOMAINID) .getAsString(), valVbrStruct, UncStructIndexEnum.ValVbrIndex.UPLL_IDX_DOMAIN_ID_VBR @@ -2165,7 +2341,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.VBRDESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vBridge.get(VtnServiceJsonConsts.DESCRIPTION) + vBridge.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valVbrStruct, UncStructIndexEnum.ValVbrIndex.UPLL_IDX_DESC_VBR @@ -2195,7 +2372,8 @@ public class IpcStructFactory { .ordinal())); } else if (requestBody != null && requestBody.has(VtnServiceJsonConsts.IPADDRESS)) { - JsonObject ipAddress = requestBody.getAsJsonObject(VtnServiceJsonConsts.IPADDRESS); + final JsonObject ipAddress = requestBody + .getAsJsonObject(VtnServiceJsonConsts.IPADDRESS); valVbrStruct .set(VtnServiceIpcConsts.VALID, UncStructIndexEnum.ValVbrIndex.UPLL_IDX_CONTROLLER_ID_VBR @@ -2225,10 +2403,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVbrStruct.set(VtnServiceIpcConsts.HOST_ADDR, - IpcDataUnitWrapper - .setIpcInet4AddressValue(ipAddress.get(VtnServiceJsonConsts.IPADDR).getAsString(), - valVbrStruct, UncStructIndexEnum.ValVbrIndex.UPLL_IDX_HOST_ADDR_VBR.ordinal())); + valVbrStruct + .set(VtnServiceIpcConsts.HOST_ADDR, + IpcDataUnitWrapper + .setIpcInet4AddressValue( + ipAddress + .get(VtnServiceJsonConsts.IPADDR) + .getAsString(), + valVbrStruct, + UncStructIndexEnum.ValVbrIndex.UPLL_IDX_HOST_ADDR_VBR + .ordinal())); } else { valVbrStruct .set(VtnServiceIpcConsts.VALID, @@ -2246,10 +2430,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVbrStruct.set(VtnServiceIpcConsts.HOST_ADDR_PREFIXLEN, - IpcDataUnitWrapper - .setIpcUint8Value(ipAddress.get(VtnServiceJsonConsts.PREFIX).getAsString(), - valVbrStruct, UncStructIndexEnum.ValVbrIndex.UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR.ordinal())); + valVbrStruct + .set(VtnServiceIpcConsts.HOST_ADDR_PREFIXLEN, + IpcDataUnitWrapper + .setIpcUint8Value( + ipAddress + .get(VtnServiceJsonConsts.PREFIX) + .getAsString(), + valVbrStruct, + UncStructIndexEnum.ValVbrIndex.UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR + .ordinal())); } else { valVbrStruct .set(VtnServiceIpcConsts.VALID, @@ -2312,7 +2502,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vlan map struct */ - public IpcStruct getKeyVlanMapStruct(final JsonObject requestBody, + public final IpcStruct getKeyVlanMapStruct(final JsonObject requestBody, final List uriParameters) { /* * @@ -2355,7 +2545,7 @@ public class IpcStructFactory { } } else if (uriParameters != null && uriParameters.size() == UncIndexEnum.THREE.ordinal()) { - String VlanMapId[] = uriParameters.get(2).split( + final String VlanMapId[] = uriParameters.get(2).split( VtnServiceJsonConsts.VLANMAPIDSEPERATOR, 2); if (VlanMapId.length == UncIndexEnum.TWO.ordinal()) { keyVlanMapStruct @@ -2386,7 +2576,7 @@ public class IpcStructFactory { * the request body * @return the val vlan map struct */ - public IpcStruct getValVlanMapStruct(final JsonObject requestBody, + public final IpcStruct getValVlanMapStruct(final JsonObject requestBody, final List uriParameters) { final IpcStruct valVlanMapStruct = new IpcStruct( UncStructEnum.ValVlanMap.getValue()); @@ -2406,12 +2596,18 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVlanMapStruct.set( - VtnServiceJsonConsts.VLANID, - IpcDataUnitWrapper.setIpcUint16Value(requestBody - .getAsJsonObject(VtnServiceJsonConsts.VLANMAP) - .get(VtnServiceJsonConsts.VLANID).getAsString(), - valVlanMapStruct, UncStructIndexEnum.ValVlanMapIndex.UPLL_IDX_VLAN_ID_VM.ordinal())); + valVlanMapStruct + .set(VtnServiceJsonConsts.VLANID, + IpcDataUnitWrapper + .setIpcUint16Value( + requestBody + .getAsJsonObject( + VtnServiceJsonConsts.VLANMAP) + .get(VtnServiceJsonConsts.VLANID) + .getAsString(), + valVlanMapStruct, + UncStructIndexEnum.ValVlanMapIndex.UPLL_IDX_VLAN_ID_VM + .ordinal())); } else if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VLANMAP) && requestBody.getAsJsonObject(VtnServiceJsonConsts.VLANMAP) @@ -2426,8 +2622,11 @@ public class IpcStructFactory { valVlanMapStruct .set(VtnServiceJsonConsts.VLANID, IpcDataUnitWrapper - .setIpcUint16HexaValue(VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE, - valVlanMapStruct, UncStructIndexEnum.ValVlanMapIndex.UPLL_IDX_VLAN_ID_VM.ordinal())); + .setIpcUint16HexaValue( + VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE, + valVlanMapStruct, + UncStructIndexEnum.ValVlanMapIndex.UPLL_IDX_VLAN_ID_VM + .ordinal())); } else { valVlanMapStruct .set(VtnServiceIpcConsts.VALID, @@ -2451,8 +2650,8 @@ public class IpcStructFactory { * the uri parameters * @return the key vtn flow filter struct */ - public IpcStruct getKeyVtnFlowFilterStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyVtnFlowFilterStruct( + final JsonObject requestBody, final List uriParameters) { // Lower level structure /* * ipc_struct KeyVtnFlowFilter { KeyVtn vtn_key; UINT8 input_direction; @@ -2528,7 +2727,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vtn flow filter entry struct */ - public IpcStruct getKeyVtnFlowFilterEntryStruct( + public final IpcStruct getKeyVtnFlowFilterEntryStruct( final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -2582,7 +2781,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vunknown struct */ - public IpcStruct getKeyVunknownStruct(final JsonObject requestBody, + public final IpcStruct getKeyVunknownStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct KeyVunknown { KeyVtn vtn_key; UINT8 vunknown_name[32]; }; @@ -2604,13 +2803,12 @@ public class IpcStructFactory { && requestBody.has(VtnServiceJsonConsts.VBYPASS) && ((JsonObject) requestBody.get(VtnServiceJsonConsts.VBYPASS)) .has(VtnServiceJsonConsts.VBYPASS_NAME)) { - keyVunknownStruct - .set(VtnServiceIpcConsts.VUNKNOWNNAME, - IpcDataUnitWrapper - .setIpcUint8ArrayValue(((JsonObject) requestBody - .get(VtnServiceJsonConsts.VBYPASS)) - .get(VtnServiceJsonConsts.VBYPASS_NAME) - .getAsString())); + keyVunknownStruct.set(VtnServiceIpcConsts.VUNKNOWNNAME, + IpcDataUnitWrapper + .setIpcUint8ArrayValue(((JsonObject) requestBody + .get(VtnServiceJsonConsts.VBYPASS)).get( + VtnServiceJsonConsts.VBYPASS_NAME) + .getAsString())); } else if (uriParameters != null && uriParameters.size() == UncIndexEnum.TWO.ordinal()) { keyVunknownStruct.set(VtnServiceIpcConsts.VUNKNOWNNAME, @@ -2634,7 +2832,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vunk if struct */ - public IpcStruct getKeyVunkIfStruct(final JsonObject requestBody, + public final IpcStruct getKeyVunkIfStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_vunk_if { key_vunknown vunk_key; UINT8 if_name[32]; }; @@ -2683,7 +2881,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vrt if struct */ - public IpcStruct getKeyVrtIfStruct(final JsonObject requestBody, + public final IpcStruct getKeyVrtIfStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -2730,7 +2928,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vtunnel struct */ - public IpcStruct getKeyVtunnelStruct(final JsonObject requestBody, + public final IpcStruct getKeyVtunnelStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure @@ -2780,8 +2978,8 @@ public class IpcStructFactory { * the uri parameters * @return the key static ip route struct */ - public IpcStruct getKeyStaticIpRouteStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyStaticIpRouteStruct( + final JsonObject requestBody, final List uriParameters) { // Lower level structure /* * ipc_struct key_static_ip_route { key_vrt vrt_key; IPV4 dst_addr; @@ -2799,7 +2997,7 @@ public class IpcStructFactory { keyStaticIpRouteStruct.set(VtnServiceIpcConsts.VRTKEY, keyVtnVrtStruct); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.STATIC_IPROUTE)) { - JsonObject staticIpRoute = requestBody + final JsonObject staticIpRoute = requestBody .getAsJsonObject(VtnServiceJsonConsts.STATIC_IPROUTE); if (staticIpRoute.has(VtnServiceJsonConsts.IPADDR) && staticIpRoute.has(VtnServiceJsonConsts.PREFIX) @@ -2818,8 +3016,8 @@ public class IpcStructFactory { .setIpcInet4AddressValue(staticIpRoute.get( VtnServiceJsonConsts.NEXTHOPADDR) .getAsString())); - - } else if (staticIpRoute.has(VtnServiceJsonConsts.NEXTHOPADDR)){ + + } else if (staticIpRoute.has(VtnServiceJsonConsts.NEXTHOPADDR)) { keyStaticIpRouteStruct.set(VtnServiceIpcConsts.NEXT_HOP_ADDR, IpcDataUnitWrapper .setIpcInet4AddressValue(staticIpRoute.get( @@ -2855,7 +3053,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vtn flow filter entry struct */ - public IpcStruct getValVtnFlowFilterEntryStruct( + public final IpcStruct getValVtnFlowFilterEntryStruct( final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -2873,8 +3071,8 @@ public class IpcStructFactory { UncStructEnum.ValVtnFlowFilterEntry.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.FLOWFILTERENTRY)) { - JsonObject flowFilterEntry = requestBody.getAsJsonObject( - VtnServiceJsonConsts.FLOWFILTERENTRY); + final JsonObject flowFilterEntry = requestBody + .getAsJsonObject(VtnServiceJsonConsts.FLOWFILTERENTRY); if (flowFilterEntry.has(VtnServiceJsonConsts.FLNAME)) { valVtnFlowFilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -2887,7 +3085,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.FLOWLISTNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - flowFilterEntry.get(VtnServiceJsonConsts.FLNAME) + flowFilterEntry + .get(VtnServiceJsonConsts.FLNAME) .getAsString(), valVtnFlowFilterEntryStruct, UncStructIndexEnum.ValVtnFlowfilterEntryIndex.UPLL_IDX_FLOWLIST_NAME_VFFE @@ -2909,21 +3108,24 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE).getAsString() + if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.PASS)) { valVtnFlowFilterEntryStruct .set(VtnServiceJsonConsts.ACTION, IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.FlowfilterAction.UPLL_FLOWFILTER_ACT_PASS .ordinal())); - } else if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE).getAsString() + } else if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.DROP)) { valVtnFlowFilterEntryStruct .set(VtnServiceJsonConsts.ACTION, IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.FlowfilterAction.UPLL_FLOWFILTER_ACT_DROP .ordinal())); - } else if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE).getAsString() + } else if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.REDIRECT)) { valVtnFlowFilterEntryStruct .set(VtnServiceJsonConsts.ACTION, @@ -2952,7 +3154,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.NWMNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - flowFilterEntry.get(VtnServiceJsonConsts.NMGNAME) + flowFilterEntry + .get(VtnServiceJsonConsts.NMGNAME) .getAsString(), valVtnFlowFilterEntryStruct, UncStructIndexEnum.ValVtnFlowfilterEntryIndex.UPLL_IDX_NWN_NAME_VFFE @@ -2974,10 +3177,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVtnFlowFilterEntryStruct.set( - VtnServiceJsonConsts.DSCP, - IpcDataUnitWrapper.setIpcUint8Value(flowFilterEntry.get(VtnServiceJsonConsts.DSCP).getAsString(), - valVtnFlowFilterEntryStruct,UncStructIndexEnum.ValVtnFlowfilterEntryIndex.UPLL_IDX_DSCP_VFFE.ordinal())); + valVtnFlowFilterEntryStruct + .set(VtnServiceJsonConsts.DSCP, + IpcDataUnitWrapper + .setIpcUint8Value( + flowFilterEntry + .get(VtnServiceJsonConsts.DSCP) + .getAsString(), + valVtnFlowFilterEntryStruct, + UncStructIndexEnum.ValVtnFlowfilterEntryIndex.UPLL_IDX_DSCP_VFFE + .ordinal())); } else { valVtnFlowFilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -2995,10 +3204,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVtnFlowFilterEntryStruct.set( - VtnServiceJsonConsts.PRIORITY, - IpcDataUnitWrapper.setIpcUint8Value(flowFilterEntry.get(VtnServiceJsonConsts.PRIORITY).getAsString(), - valVtnFlowFilterEntryStruct,UncStructIndexEnum.ValVtnFlowfilterEntryIndex.UPLL_IDX_PRIORITY_VFFE.ordinal())); + valVtnFlowFilterEntryStruct + .set(VtnServiceJsonConsts.PRIORITY, + IpcDataUnitWrapper + .setIpcUint8Value( + flowFilterEntry + .get(VtnServiceJsonConsts.PRIORITY) + .getAsString(), + valVtnFlowFilterEntryStruct, + UncStructIndexEnum.ValVtnFlowfilterEntryIndex.UPLL_IDX_PRIORITY_VFFE + .ordinal())); } else { valVtnFlowFilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -3025,7 +3240,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vunknown struct */ - public IpcStruct getValVunknownStruct(final JsonObject requestBody, + public final IpcStruct getValVunknownStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -3038,7 +3253,8 @@ public class IpcStructFactory { UncStructEnum.ValVunknown.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VBYPASS)) { - JsonObject vByPass = requestBody.getAsJsonObject(VtnServiceJsonConsts.VBYPASS); + final JsonObject vByPass = requestBody + .getAsJsonObject(VtnServiceJsonConsts.VBYPASS); if (vByPass.has(VtnServiceJsonConsts.DESCRIPTION)) { valValVunknownStruct .set(VtnServiceIpcConsts.VALID, @@ -3051,7 +3267,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vByPass.get(VtnServiceJsonConsts.DESCRIPTION) + vByPass.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valValVunknownStruct, UncStructIndexEnum.ValVunknownIndex.UPLL_IDX_DESC_VUN @@ -3111,7 +3328,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DOMAINID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vByPass.get(VtnServiceJsonConsts.DOMAINID) + vByPass.get( + VtnServiceJsonConsts.DOMAINID) .getAsString(), valValVunknownStruct, UncStructIndexEnum.ValVunknownIndex.UPLL_IDX_DOMAIN_ID_VUN @@ -3137,7 +3355,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.CONTROLLERID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vByPass.get(VtnServiceJsonConsts.CONTROLLERID) + vByPass.get( + VtnServiceJsonConsts.CONTROLLERID) .getAsString(), valValVunknownStruct, UncStructIndexEnum.ValVunknownIndex.UPLL_IDX_CONTROLLER_ID_VUN @@ -3168,7 +3387,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vunk if struct */ - public IpcStruct getValVunkIfStruct(final JsonObject requestBody, + public final IpcStruct getValVunkIfStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -3183,7 +3402,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValVunkIf.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INTERFACE)) { - JsonObject vunkIf = requestBody.getAsJsonObject(VtnServiceJsonConsts.INTERFACE); + final JsonObject vunkIf = requestBody + .getAsJsonObject(VtnServiceJsonConsts.INTERFACE); if (vunkIf.has(VtnServiceJsonConsts.DESCRIPTION)) { valVunkIfStruct .set(VtnServiceIpcConsts.VALID, @@ -3196,7 +3416,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vunkIf.get(VtnServiceJsonConsts.DESCRIPTION) + vunkIf.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valVunkIfStruct, UncStructIndexEnum.ValVunkIfIndex.UPLL_IDX_DESC_VUNI @@ -3223,14 +3444,22 @@ public class IpcStructFactory { valVunkIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE.getValue(), - valVunkIfStruct, UncStructIndexEnum.ValVunkIfIndex.UPLL_IDX_ADMIN_ST_VUNI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE + .getValue(), + valVunkIfStruct, + UncStructIndexEnum.ValVunkIfIndex.UPLL_IDX_ADMIN_ST_VUNI + .ordinal())); } else { valVunkIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE.getValue(), - valVunkIfStruct, UncStructIndexEnum.ValVunkIfIndex.UPLL_IDX_ADMIN_ST_VUNI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE + .getValue(), + valVunkIfStruct, + UncStructIndexEnum.ValVunkIfIndex.UPLL_IDX_ADMIN_ST_VUNI + .ordinal())); } LOG.debug("adminstatus:" + vunkIf.get(VtnServiceJsonConsts.ADMINSTATUS) @@ -3261,8 +3490,8 @@ public class IpcStructFactory { * the uri parameters * @return the struct */ - public IpcStruct getKeyVbrFlowFilterStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyVbrFlowFilterStruct( + final JsonObject requestBody, final List uriParameters) { // Lower level structure /* * ipc_struct KeyVbrFlowFilter { keyVbr vbr_key; UINT8 direction; }; @@ -3335,7 +3564,7 @@ public class IpcStructFactory { * the uri parameters * @return the struct */ - public IpcStruct getKeyVbrFlowFilterEntryStruct( + public final IpcStruct getKeyVbrFlowFilterEntryStruct( final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_vbr_flowfilter_entry { key_vbr_flowfilter @@ -3385,8 +3614,8 @@ public class IpcStructFactory { * the uri parameters * @return the valflowfilterEntry struct */ - public IpcStruct getValFlowfilterEntryStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getValFlowfilterEntryStruct( + final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_flowfilter_entry { UINT8 valid[9]; UINT8 * cs_row_status; UINT8 cs_attr[9]; UINT8 flowlist_name[32+1]; UINT8 @@ -3399,8 +3628,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValFlowfilterEntry.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.FLOWFILTERENTRY)) { - JsonObject flowFilterEntry = requestBody.getAsJsonObject( - VtnServiceJsonConsts.FLOWFILTERENTRY); + final JsonObject flowFilterEntry = requestBody + .getAsJsonObject(VtnServiceJsonConsts.FLOWFILTERENTRY); if (flowFilterEntry.has(VtnServiceJsonConsts.FLNAME)) { valFlowfilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -3413,7 +3642,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.FLOWLISTNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - flowFilterEntry.get(VtnServiceJsonConsts.FLNAME) + flowFilterEntry + .get(VtnServiceJsonConsts.FLNAME) .getAsString(), valFlowfilterEntryStruct, UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_FLOWLIST_NAME_FFE @@ -3435,14 +3665,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE).getAsString() + if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.PASS)) { valFlowfilterEntryStruct .set(VtnServiceIpcConsts.ACTION, IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.FlowfilterAction.UPLL_FLOWFILTER_ACT_PASS .ordinal())); - } else if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE).getAsString() + } else if (flowFilterEntry.get(VtnServiceJsonConsts.ACTIONTYPE) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.DROP)) { valFlowfilterEntryStruct .set(VtnServiceIpcConsts.ACTION, @@ -3469,7 +3701,7 @@ public class IpcStructFactory { .ordinal())); } if (flowFilterEntry.has(VtnServiceJsonConsts.REDIRECTDST)) { - JsonObject redirectDst = flowFilterEntry + final JsonObject redirectDst = flowFilterEntry .getAsJsonObject(VtnServiceJsonConsts.REDIRECTDST); if (redirectDst.has(VtnServiceJsonConsts.VNODENAME)) { valFlowfilterEntryStruct @@ -3534,10 +3766,15 @@ public class IpcStructFactory { .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); // valFlowfilterEntryStruct.set(VtnServiceIpcConsts.MODIFYDSTMACADDR,IpcDataUnitWrapper.setIpcUint8ArrayValue(requestBody.getAsJsonObject(VtnServiceJsonConsts.FLOWFILTERENTRY).getAsJsonObject(VtnServiceJsonConsts.REDIRECTDST).get(VtnServiceJsonConsts.MACDSTADDR).getAsString())); - IpcDataUnitWrapper.setMacAddress(valFlowfilterEntryStruct, - VtnServiceIpcConsts.MODIFYDSTMACADDR, redirectDst - .get(VtnServiceJsonConsts.MACDSTADDR).getAsString(), - UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_MODIFY_DST_MAC_FFE.ordinal()); + IpcDataUnitWrapper + .setMacAddress( + valFlowfilterEntryStruct, + VtnServiceIpcConsts.MODIFYDSTMACADDR, + redirectDst.get( + VtnServiceJsonConsts.MACDSTADDR) + .getAsString(), + UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_MODIFY_DST_MAC_FFE + .ordinal()); } else { valFlowfilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -3555,10 +3792,15 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - IpcDataUnitWrapper.setMacAddress(valFlowfilterEntryStruct, - VtnServiceIpcConsts.MODIFYSRCMACADDR, redirectDst - .get(VtnServiceJsonConsts.MACSRCADDR).getAsString(), - UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_MODIFY_SRC_MAC_FFE.ordinal()); + IpcDataUnitWrapper + .setMacAddress( + valFlowfilterEntryStruct, + VtnServiceIpcConsts.MODIFYSRCMACADDR, + redirectDst.get( + VtnServiceJsonConsts.MACSRCADDR) + .getAsString(), + UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_MODIFY_SRC_MAC_FFE + .ordinal()); } else { valFlowfilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -3581,7 +3823,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.NWMNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - flowFilterEntry.get(VtnServiceJsonConsts.NMGNAME) + flowFilterEntry + .get(VtnServiceJsonConsts.NMGNAME) .getAsString(), valFlowfilterEntryStruct, UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_NWM_NAME_FFE @@ -3603,10 +3846,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowfilterEntryStruct.set( - VtnServiceIpcConsts.DSCP, - IpcDataUnitWrapper.setIpcUint8Value(flowFilterEntry.get(VtnServiceJsonConsts.DSCP).getAsString(), - valFlowfilterEntryStruct, UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_DSCP_FFE.ordinal())); + valFlowfilterEntryStruct + .set(VtnServiceIpcConsts.DSCP, + IpcDataUnitWrapper + .setIpcUint8Value( + flowFilterEntry + .get(VtnServiceJsonConsts.DSCP) + .getAsString(), + valFlowfilterEntryStruct, + UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_DSCP_FFE + .ordinal())); } else { valFlowfilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -3624,10 +3873,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowfilterEntryStruct.set( - VtnServiceIpcConsts.PRIORITY, - IpcDataUnitWrapper.setIpcUint8Value(flowFilterEntry.get(VtnServiceJsonConsts.PRIORITY).getAsString(), - valFlowfilterEntryStruct, UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_PRIORITY_FFE.ordinal())); + valFlowfilterEntryStruct + .set(VtnServiceIpcConsts.PRIORITY, + IpcDataUnitWrapper + .setIpcUint8Value( + flowFilterEntry + .get(VtnServiceJsonConsts.PRIORITY) + .getAsString(), + valFlowfilterEntryStruct, + UncStructIndexEnum.ValFlowfilterEntryIndex.UPLL_IDX_PRIORITY_FFE + .ordinal())); } else { valFlowfilterEntryStruct .set(VtnServiceIpcConsts.VALID, @@ -3654,7 +3909,7 @@ public class IpcStructFactory { * the uri parameters * @return the struct */ - public IpcStruct getKeyVbrIfStruct(final JsonObject requestBody, + public final IpcStruct getKeyVbrIfStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -3700,7 +3955,7 @@ public class IpcStructFactory { * the uri parameters * @return the valPortMapStruct */ - public IpcStruct getValPortMapStruct(final JsonObject requestBody, + public final IpcStruct getValPortMapStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_port_map { UINT8 valid[5]; UINT8 cs_attr[5]; UINT8 @@ -3712,7 +3967,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValPortMap.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.PORTMAP)) { - JsonObject portMap = requestBody.getAsJsonObject(VtnServiceJsonConsts.PORTMAP); + final JsonObject portMap = requestBody + .getAsJsonObject(VtnServiceJsonConsts.PORTMAP); if (portMap.has(VtnServiceJsonConsts.LOGICAL_PORT_ID)) { valPortMapStruct .set(VtnServiceIpcConsts.VALID, @@ -3725,7 +3981,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.LOGICAL_PORT_ID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - portMap.get(VtnServiceJsonConsts.LOGICAL_PORT_ID) + portMap.get( + VtnServiceJsonConsts.LOGICAL_PORT_ID) .getAsString(), valPortMapStruct, UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_LOGICAL_PORT_ID_PM @@ -3747,12 +4004,17 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valPortMapStruct.set(VtnServiceJsonConsts.VLANID, - IpcDataUnitWrapper - .setIpcUint16Value(portMap.get(VtnServiceJsonConsts.VLANID).getAsString(), - valPortMapStruct, UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_VLAN_ID_PM.ordinal())); - } - else { + valPortMapStruct + .set(VtnServiceJsonConsts.VLANID, + IpcDataUnitWrapper + .setIpcUint16Value( + portMap.get( + VtnServiceJsonConsts.VLANID) + .getAsString(), + valPortMapStruct, + UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_VLAN_ID_PM + .ordinal())); + } else { valPortMapStruct .set(VtnServiceIpcConsts.VALID, UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_VLAN_ID_PM @@ -3774,15 +4036,24 @@ public class IpcStructFactory { valPortMapStruct .set(VtnServiceJsonConsts.TAGGED, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.vlan_tagged.UPLL_VLAN_TAGGED.getValue(), - valPortMapStruct, UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_TAGGED_PM.ordinal())); - } else if (portMap.get(VtnServiceJsonConsts.TAGGED).getAsString() - .equalsIgnoreCase(VtnServiceJsonConsts.FALSE)){ + .setIpcUint8Value( + UncStructIndexEnum.vlan_tagged.UPLL_VLAN_TAGGED + .getValue(), + valPortMapStruct, + UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_TAGGED_PM + .ordinal())); + } else if (portMap.get(VtnServiceJsonConsts.TAGGED) + .getAsString() + .equalsIgnoreCase(VtnServiceJsonConsts.FALSE)) { valPortMapStruct .set(VtnServiceJsonConsts.TAGGED, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.vlan_tagged.UPLL_VLAN_UNTAGGED.getValue(), - valPortMapStruct, UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_TAGGED_PM.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.vlan_tagged.UPLL_VLAN_UNTAGGED + .getValue(), + valPortMapStruct, + UncStructIndexEnum.ValPortMapIndex.UPLL_IDX_TAGGED_PM + .ordinal())); } else { valPortMapStruct .set(VtnServiceIpcConsts.VALID, @@ -3793,7 +4064,8 @@ public class IpcStructFactory { .ordinal())); } LOG.debug("tagged:" - + portMap.get(VtnServiceJsonConsts.TAGGED).getAsString()); + + portMap.get(VtnServiceJsonConsts.TAGGED) + .getAsString()); } else { valPortMapStruct .set(VtnServiceIpcConsts.VALID, @@ -3820,7 +4092,7 @@ public class IpcStructFactory { * the uri parameters * @return the valVbrIfStruct */ - public IpcStruct getValVbrIfStruct(final JsonObject requestBody, + public final IpcStruct getValVbrIfStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_vbr_if { UINT8 valid[3]; UINT8 admin_status; UINT8 @@ -3834,7 +4106,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValVbrIf.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INTERFACE)) { - JsonObject vbrIf = requestBody.getAsJsonObject(VtnServiceJsonConsts.INTERFACE); + final JsonObject vbrIf = requestBody + .getAsJsonObject(VtnServiceJsonConsts.INTERFACE); if (vbrIf.has(VtnServiceJsonConsts.ADMINSTATUS)) { valVbrIfStruct .set(VtnServiceIpcConsts.VALID, @@ -3848,14 +4121,22 @@ public class IpcStructFactory { valVbrIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE.getValue(), - valVbrIfStruct, UncStructIndexEnum.ValVbrIfIndex.UPLL_IDX_ADMIN_STATUS_VBRI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE + .getValue(), + valVbrIfStruct, + UncStructIndexEnum.ValVbrIfIndex.UPLL_IDX_ADMIN_STATUS_VBRI + .ordinal())); } else { valVbrIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE.getValue(), - valVbrIfStruct, UncStructIndexEnum.ValVbrIfIndex.UPLL_IDX_ADMIN_STATUS_VBRI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE + .getValue(), + valVbrIfStruct, + UncStructIndexEnum.ValVbrIfIndex.UPLL_IDX_ADMIN_STATUS_VBRI + .ordinal())); } LOG.debug("adminstatus" + vbrIf.get(VtnServiceJsonConsts.ADMINSTATUS) @@ -3881,7 +4162,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vbrIf.get(VtnServiceJsonConsts.DESCRIPTION) + vbrIf.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valVbrIfStruct, UncStructIndexEnum.ValVbrIfIndex.UPLL_IDX_DESC_VBRI @@ -3992,7 +4274,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vrt struct */ - public IpcStruct getValVrtStruct(final JsonObject requestBody, + public final IpcStruct getValVrtStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -4005,7 +4287,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValVrt.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VROUTER)) { - JsonObject vRouter = requestBody.getAsJsonObject(VtnServiceJsonConsts.VROUTER); + final JsonObject vRouter = requestBody + .getAsJsonObject(VtnServiceJsonConsts.VROUTER); if (vRouter.has(VtnServiceJsonConsts.CONTROLLERID)) { valVrtStruct .set(VtnServiceIpcConsts.VALID, @@ -4018,7 +4301,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.CONTROLLERID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vRouter.get(VtnServiceJsonConsts.CONTROLLERID) + vRouter.get( + VtnServiceJsonConsts.CONTROLLERID) .getAsString(), valVrtStruct, UncStructIndexEnum.ValVrtIndex.UPLL_IDX_CONTROLLER_ID_VRT @@ -4044,7 +4328,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DOMAINID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vRouter.get(VtnServiceJsonConsts.DOMAINID) + vRouter.get( + VtnServiceJsonConsts.DOMAINID) .getAsString(), valVrtStruct, UncStructIndexEnum.ValVrtIndex.UPLL_IDX_DOMAIN_ID_VRT @@ -4070,7 +4355,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.VRTDESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vRouter.get(VtnServiceJsonConsts.DESCRIPTION) + vRouter.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valVrtStruct, UncStructIndexEnum.ValVrtIndex.UPLL_IDX_DESC_VRT @@ -4130,14 +4416,22 @@ public class IpcStructFactory { valVrtStruct .set(VtnServiceIpcConsts.DHCPRELAYADMINSTATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE.getValue(), - valVrtStruct, UncStructIndexEnum.ValVrtIndex.UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE + .getValue(), + valVrtStruct, + UncStructIndexEnum.ValVrtIndex.UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT + .ordinal())); } else { valVrtStruct .set(VtnServiceIpcConsts.DHCPRELAYADMINSTATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE.getValue(), - valVrtStruct, UncStructIndexEnum.ValVrtIndex.UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE + .getValue(), + valVrtStruct, + UncStructIndexEnum.ValVrtIndex.UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT + .ordinal())); } LOG.debug("dhcp_relay_status" + requestBody @@ -4170,7 +4464,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vrt if struct */ - public IpcStruct getValVrtIfStruct(final JsonObject requestBody, + public final IpcStruct getValVrtIfStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -4183,7 +4477,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValVrtIf.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INTERFACE)) { - JsonObject vRouterIf = requestBody.getAsJsonObject(VtnServiceJsonConsts.INTERFACE); + final JsonObject vRouterIf = requestBody + .getAsJsonObject(VtnServiceJsonConsts.INTERFACE); if (vRouterIf.has(VtnServiceJsonConsts.DESCRIPTION)) { valVrtIfStruct .set(VtnServiceIpcConsts.VALID, @@ -4196,7 +4491,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vRouterIf.get(VtnServiceJsonConsts.DESCRIPTION) + vRouterIf + .get(VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valVrtIfStruct, UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_DESC_VI @@ -4218,10 +4514,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVrtIfStruct.set(VtnServiceIpcConsts.IP_ADDR, - IpcDataUnitWrapper - .setIpcInet4AddressValue(vRouterIf.get(VtnServiceJsonConsts.IPADDR).getAsString(), - valVrtIfStruct, UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_IP_ADDR_VI.ordinal())); + valVrtIfStruct + .set(VtnServiceIpcConsts.IP_ADDR, + IpcDataUnitWrapper + .setIpcInet4AddressValue( + vRouterIf + .get(VtnServiceJsonConsts.IPADDR) + .getAsString(), + valVrtIfStruct, + UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_IP_ADDR_VI + .ordinal())); } else { valVrtIfStruct .set(VtnServiceIpcConsts.VALID, @@ -4239,10 +4541,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVrtIfStruct.set(VtnServiceIpcConsts.PREFIXLEN, - IpcDataUnitWrapper - .setIpcUint8Value(vRouterIf.get(VtnServiceJsonConsts.PREFIX).getAsString(), - valVrtIfStruct, UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_PREFIXLEN_VI.ordinal())); + valVrtIfStruct + .set(VtnServiceIpcConsts.PREFIXLEN, + IpcDataUnitWrapper + .setIpcUint8Value( + vRouterIf + .get(VtnServiceJsonConsts.PREFIX) + .getAsString(), + valVrtIfStruct, + UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_PREFIXLEN_VI + .ordinal())); } else { valVrtIfStruct .set(VtnServiceIpcConsts.VALID, @@ -4260,13 +4568,13 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - - IpcDataUnitWrapper - .setMacAddress( - valVrtIfStruct, - VtnServiceIpcConsts.MACADDR, - vRouterIf.get(VtnServiceJsonConsts.MACADDR).getAsString(), - UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_MAC_ADDR_VI.ordinal()); + + IpcDataUnitWrapper.setMacAddress(valVrtIfStruct, + VtnServiceIpcConsts.MACADDR, + vRouterIf.get(VtnServiceJsonConsts.MACADDR) + .getAsString(), + UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_MAC_ADDR_VI + .ordinal()); } else { valVrtIfStruct .set(VtnServiceIpcConsts.VALID, @@ -4284,19 +4592,28 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - if (vRouterIf.get(VtnServiceJsonConsts.ADMINSTATUS).getAsString() + if (vRouterIf.get(VtnServiceJsonConsts.ADMINSTATUS) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.DISABLE)) { valVrtIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE.getValue(), - valVrtIfStruct, UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_ADMIN_ST_VI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_DISABLE + .getValue(), + valVrtIfStruct, + UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_ADMIN_ST_VI + .ordinal())); } else { valVrtIfStruct .set(VtnServiceJsonConsts.ADMIN_STATUS, IpcDataUnitWrapper - .setIpcUint8Value(UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE.getValue(), - valVrtIfStruct, UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_ADMIN_ST_VI.ordinal())); + .setIpcUint8Value( + UncStructIndexEnum.ValAdminStatus.UPLL_ADMIN_ENABLE + .getValue(), + valVrtIfStruct, + UncStructIndexEnum.ValVrtIfIndex.UPLL_IDX_ADMIN_ST_VI + .ordinal())); } LOG.debug("adminstatus:" + vRouterIf.get(VtnServiceJsonConsts.ADMINSTATUS) @@ -4327,7 +4644,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vtunnel struct */ - public IpcStruct getValVtunnelStruct(final JsonObject requestBody, + public final IpcStruct getValVtunnelStruct(final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -4341,7 +4658,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValVtunnel.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VTUNNEL)) { - JsonObject vTunnel = requestBody.getAsJsonObject(VtnServiceJsonConsts.VTUNNEL); + final JsonObject vTunnel = requestBody + .getAsJsonObject(VtnServiceJsonConsts.VTUNNEL); if (vTunnel.has(VtnServiceJsonConsts.DESCRIPTION)) { valVtunnelStruct .set(VtnServiceIpcConsts.VALID, @@ -4354,7 +4672,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vTunnel.get(VtnServiceJsonConsts.DESCRIPTION) + vTunnel.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valVtunnelStruct, UncStructIndexEnum.ValVtunnelIndex.UPLL_IDX_DESC_VTNL @@ -4380,7 +4699,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.CONTROLLERID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vTunnel.get(VtnServiceJsonConsts.CONTROLLERID) + vTunnel.get( + VtnServiceJsonConsts.CONTROLLERID) .getAsString(), valVtunnelStruct, UncStructIndexEnum.ValVtunnelIndex.UPLL_IDX_CONTROLLER_ID_VTNL @@ -4406,7 +4726,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DOMAINID, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vTunnel.get(VtnServiceJsonConsts.DOMAINID) + vTunnel.get( + VtnServiceJsonConsts.DOMAINID) .getAsString(), valVtunnelStruct, UncStructIndexEnum.ValVtunnelIndex.UPLL_IDX_DOMAIN_ID_VTNL @@ -4432,7 +4753,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.VTNNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vTunnel.get(VtnServiceJsonConsts.VTNNAME) + vTunnel.get( + VtnServiceJsonConsts.VTNNAME) .getAsString(), valVtunnelStruct, UncStructIndexEnum.ValVtunnelIndex.UPLL_IDX_VTN_NAME_VTNL @@ -4458,7 +4780,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.VTEPGRPNAME, IpcDataUnitWrapper .setIpcUint8ArrayValue( - vTunnel.get(VtnServiceJsonConsts.VTEPGROUPNAME) + vTunnel.get( + VtnServiceJsonConsts.VTEPGROUPNAME) .getAsString(), valVtunnelStruct, UncStructIndexEnum.ValVtunnelIndex.UPLL_IDX_VTEP_GRP_NAME_VTNL @@ -4482,9 +4805,15 @@ public class IpcStructFactory { .ordinal())); valVtunnelStruct - .set(VtnServiceIpcConsts.LABEL, IpcDataUnitWrapper - .setIpcUint32Value(vTunnel.get(VtnServiceJsonConsts.LABEL).getAsString(), - valVtunnelStruct, UncStructIndexEnum.ValVtunnelIndex.UPLL_IDX_LABEL_VTNL.ordinal())); + .set(VtnServiceIpcConsts.LABEL, + IpcDataUnitWrapper + .setIpcUint32Value( + vTunnel.get( + VtnServiceJsonConsts.LABEL) + .getAsString(), + valVtunnelStruct, + UncStructIndexEnum.ValVtunnelIndex.UPLL_IDX_LABEL_VTNL + .ordinal())); } else { valVtunnelStruct .set(VtnServiceIpcConsts.VALID, @@ -4511,7 +4840,7 @@ public class IpcStructFactory { * the uri parameters * @return the key vtn flow filter entry struct */ - public IpcStruct getKeyVtnFlowfilterControllerStruct( + public final IpcStruct getKeyVtnFlowfilterControllerStruct( final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -4564,7 +4893,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vtn flow filter entry struct */ - public IpcStruct getValFlowFilterControllerStruct( + public final IpcStruct getValFlowFilterControllerStruct( final JsonObject requestBody, final List uriParameters) { // Lower level structure /* @@ -4617,10 +4946,13 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valFlowFilterContollerStruct.set( - VtnServiceIpcConsts.SEQUENCENUM, IpcDataUnitWrapper - .setIpcUint16Value(uriParameters.get(2), - valFlowFilterContollerStruct, UncStructIndexEnum.ValFlowfilterControllerIndex.UPLL_IDX_SEQ_NUM_FFC.ordinal())); + valFlowFilterContollerStruct + .set(VtnServiceIpcConsts.SEQUENCENUM, + IpcDataUnitWrapper.setIpcUint16Value( + uriParameters.get(2), + valFlowFilterContollerStruct, + UncStructIndexEnum.ValFlowfilterControllerIndex.UPLL_IDX_SEQ_NUM_FFC + .ordinal())); } else { valFlowFilterContollerStruct .set(VtnServiceIpcConsts.VALID, @@ -4648,7 +4980,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vtep group struct. */ - public IpcStruct getKeyVtepGrpStruct(final JsonObject requestBody, + public final IpcStruct getKeyVtepGrpStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_vtep_grp { key_vtn vtn_key; UINT8 vtepgrp_name[32]; }; @@ -4696,8 +5028,8 @@ public class IpcStructFactory { * the uri parameters * @return the val vtep group struct. */ - public IpcStruct getKeyVtepGrpMemberStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyVtepGrpMemberStruct( + final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_vtep_grp_member { key_vtep_grp vtepgrp_key; UINT8 * vtepmember_name[32]; }; @@ -4736,7 +5068,7 @@ public class IpcStructFactory { * the uri parameters * @return the val vtep grp struct */ - public IpcStruct getValVtepGrpStruct(final JsonObject requestBody, + public final IpcStruct getValVtepGrpStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_vtep_grp { UINT8 valid[2]; UINT8 cs_row_status; UINT8 @@ -4747,7 +5079,7 @@ public class IpcStructFactory { UncStructEnum.ValVtepGrp.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.VTEPGROUP)) { - JsonObject vTepGroup = requestBody + final JsonObject vTepGroup = requestBody .getAsJsonObject(VtnServiceJsonConsts.VTEPGROUP); if (vTepGroup.has(VtnServiceJsonConsts.CONTROLLERID)) { valVtepGrpStruct @@ -4818,8 +5150,8 @@ public class IpcStructFactory { * the uri parameters * @return the val vtep grp struct */ - public IpcStruct getValStaticIpRouteStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getValStaticIpRouteStruct( + final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_static_ip_route { UINT8 valid[2]; UINT8 cs_row_status; * UINT8 cs_attr[2]; IPV4 next_hop_addr; UINT16 group_metric; }; @@ -4839,12 +5171,18 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valStaticIpRouteStruct.set( - VtnServiceIpcConsts.GROUP_METRIC, - IpcDataUnitWrapper.setIpcUint16Value(requestBody - .getAsJsonObject(VtnServiceJsonConsts.STATIC_IPROUTE) - .get(VtnServiceJsonConsts.GROUPMETRIC).getAsString(), - valStaticIpRouteStruct, UncStructIndexEnum.ValStaticIpRouteIndex.UPLL_IDX_GROUP_METRIC_SIR.ordinal())); + valStaticIpRouteStruct + .set(VtnServiceIpcConsts.GROUP_METRIC, + IpcDataUnitWrapper + .setIpcUint16Value( + requestBody + .getAsJsonObject( + VtnServiceJsonConsts.STATIC_IPROUTE) + .get(VtnServiceJsonConsts.GROUPMETRIC) + .getAsString(), + valStaticIpRouteStruct, + UncStructIndexEnum.ValStaticIpRouteIndex.UPLL_IDX_GROUP_METRIC_SIR + .ordinal())); } else { valStaticIpRouteStruct .set(VtnServiceIpcConsts.VALID, @@ -4871,7 +5209,7 @@ public class IpcStructFactory { * the uri parameters * @return key_vtnstation_controller struct */ - public IpcStruct getKeyVtnstationControllerStruct( + public final IpcStruct getKeyVtnstationControllerStruct( final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_vtnstation_controller { UINT8 controller_name[32]; }; @@ -4911,7 +5249,7 @@ public class IpcStructFactory { * the uri parameters * @return val_vtnstation_controller_st struct */ - public IpcStruct getValVtnstationControllerStStruct( + public final IpcStruct getValVtnstationControllerStStruct( final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_vtnstation_controller_st { UINT8 valid[15]; UINT64 @@ -4957,10 +5295,14 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - IpcDataUnitWrapper.setMacAddress(valVtnstationControllerSt, - VtnServiceIpcConsts.MAC_ADDR, - requestBody.get(VtnServiceJsonConsts.MACADDR).getAsString(), - UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_MAC_ADDR_VSCS.ordinal()); + IpcDataUnitWrapper + .setMacAddress( + valVtnstationControllerSt, + VtnServiceIpcConsts.MAC_ADDR, + requestBody.get(VtnServiceJsonConsts.MACADDR) + .getAsString(), + UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_MAC_ADDR_VSCS + .ordinal()); } else { valVtnstationControllerSt .set(VtnServiceIpcConsts.VALID, @@ -4979,10 +5321,14 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVtnstationControllerSt.set(VtnServiceIpcConsts.IPV4_COUNT, - IpcDataUnitWrapper - .setIpcUint32Value(VtnServiceJsonConsts.ONE, - valVtnstationControllerSt, UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_IPV4_COUNT_VSCS.ordinal())); + valVtnstationControllerSt + .set(VtnServiceIpcConsts.IPV4_COUNT, + IpcDataUnitWrapper + .setIpcUint32Value( + VtnServiceJsonConsts.ONE, + valVtnstationControllerSt, + UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_IPV4_COUNT_VSCS + .ordinal())); } else { valVtnstationControllerSt .set(VtnServiceIpcConsts.VALID, @@ -5001,10 +5347,14 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - valVtnstationControllerSt.set(VtnServiceIpcConsts.IPV6_COUNT, - IpcDataUnitWrapper - .setIpcUint32Value(VtnServiceJsonConsts.ONE, - valVtnstationControllerSt, UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_IPV6_COUNT_VSCS.ordinal())); + valVtnstationControllerSt + .set(VtnServiceIpcConsts.IPV6_COUNT, + IpcDataUnitWrapper + .setIpcUint32Value( + VtnServiceJsonConsts.ONE, + valVtnstationControllerSt, + UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_IPV6_COUNT_VSCS + .ordinal())); } else { valVtnstationControllerSt .set(VtnServiceIpcConsts.VALID, @@ -5071,7 +5421,8 @@ public class IpcStructFactory { .ordinal())); } // for vlan_id parameter - if (requestBody.has(VtnServiceJsonConsts.VLANID) || requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + if (requestBody.has(VtnServiceJsonConsts.VLANID) + || requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { valVtnstationControllerSt .set(VtnServiceIpcConsts.VALID, UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_VLAN_ID_VSCS @@ -5080,18 +5431,25 @@ public class IpcStructFactory { .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); if (requestBody.has(VtnServiceJsonConsts.VLANID)) { - valVtnstationControllerSt.set( - VtnServiceIpcConsts.VLANID, - IpcDataUnitWrapper.setIpcUint16Value(requestBody.get( - VtnServiceJsonConsts.VLANID).getAsString(), - valVtnstationControllerSt, UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_VLAN_ID_VSCS.ordinal())); + valVtnstationControllerSt + .set(VtnServiceIpcConsts.VLANID, + IpcDataUnitWrapper + .setIpcUint16Value( + requestBody + .get(VtnServiceJsonConsts.VLANID) + .getAsString(), + valVtnstationControllerSt, + UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_VLAN_ID_VSCS + .ordinal())); } else { valVtnstationControllerSt .set(VtnServiceIpcConsts.VLANID, IpcDataUnitWrapper - .setIpcUint16HexaValue(VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE, - valVtnstationControllerSt, - UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_VLAN_ID_VSCS.ordinal())); + .setIpcUint16HexaValue( + VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE, + valVtnstationControllerSt, + UncStructIndexEnum.ValVtnstationControllerStIndex.UPLL_IDX_VLAN_ID_VSCS + .ordinal())); } } else { valVtnstationControllerSt @@ -5250,7 +5608,7 @@ public class IpcStructFactory { /** * Physical Ipc structures */ - public IpcStruct getKeyCtrDomainStruct(final JsonObject requestBody, + public final IpcStruct getKeyCtrDomainStruct(final JsonObject requestBody, final List uriParameters) { // Key structure /* @@ -5296,7 +5654,7 @@ public class IpcStructFactory { * @param uriParameters * @return */ - public IpcStruct getKeySwitchStruct(final JsonObject requestBody, + public final IpcStruct getKeySwitchStruct(final JsonObject requestBody, final List uriParameters) { // Key structure /* @@ -5331,7 +5689,7 @@ public class IpcStructFactory { * @param uriParameters * @return */ - public IpcStruct getKeyLinkStruct(final JsonObject requestBody, + public final IpcStruct getKeyLinkStruct(final JsonObject requestBody, final List uriParameters) { // Key structure /* @@ -5349,24 +5707,9 @@ public class IpcStructFactory { uriParameters.subList(0, 1)); keyLink.set(VtnServiceIpcConsts.CTR_KEY, keyLinkStruct); } - if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { - String linkName[] = requestBody.get(VtnServiceJsonConsts.INDEX) - .getAsString().split(VtnServiceJsonConsts.LINKSAPERATOR); - if (linkName.length == UncIndexEnum.FOUR.ordinal()) { - keyLink.set(VtnServiceIpcConsts.SWITCH_ID1, - IpcDataUnitWrapper.setIpcUint8ArrayValue(linkName[0])); - keyLink.set(VtnServiceIpcConsts.PORT_ID1, - IpcDataUnitWrapper.setIpcUint8ArrayValue(linkName[1])); - keyLink.set(VtnServiceIpcConsts.SWITCH_ID2, - IpcDataUnitWrapper.setIpcUint8ArrayValue(linkName[2])); - keyLink.set(VtnServiceIpcConsts.PORT_ID2, - IpcDataUnitWrapper.setIpcUint8ArrayValue(linkName[3])); - } else { - LOG.error("Value of linkname is incorrect"); - } - } else if (uriParameters != null + if (uriParameters != null && uriParameters.size() == UncIndexEnum.TWO.ordinal()) { - String linkName[] = uriParameters.get(1).split( + final String linkName[] = uriParameters.get(1).split( VtnServiceJsonConsts.LINKSAPERATOR); if (linkName.length == UncIndexEnum.FOUR.ordinal()) { keyLink.set(VtnServiceIpcConsts.SWITCH_ID1, @@ -5411,7 +5754,7 @@ public class IpcStructFactory { * the uri parameters * @return the key Ctr struct */ - public IpcStruct getKeyCtrStruct(final JsonObject requestBody, + public final IpcStruct getKeyCtrStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_ctr{ UINT8 controller_name[32]; }; @@ -5452,14 +5795,15 @@ public class IpcStructFactory { * the uri parameters * @return the Val Ctr struct */ - public IpcStruct getValCtrStruct(final JsonObject requestBody, + public final IpcStruct getValCtrStruct(final JsonObject requestBody, final List uriParameters) { LOG.trace("Start getValCtrStruct"); final IpcStruct valCtrStruct = IpcDataUnitWrapper .setIpcStructValue(UncStructEnum.ValCtr.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.CONTROLLER)) { - JsonObject controller = requestBody.getAsJsonObject(VtnServiceJsonConsts.CONTROLLER); + final JsonObject controller = requestBody + .getAsJsonObject(VtnServiceJsonConsts.CONTROLLER); if (controller.has(VtnServiceJsonConsts.TYPE)) { valCtrStruct .set(VtnServiceIpcConsts.VALID, @@ -5475,14 +5819,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_UNKNOWN .ordinal())); - } else if (controller.get(VtnServiceJsonConsts.TYPE).getAsString() + } else if (controller.get(VtnServiceJsonConsts.TYPE) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.PFC)) { valCtrStruct .set(VtnServiceJsonConsts.TYPE, IpcDataUnitWrapper .setIpcUint8Value(UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_PFC .ordinal())); - } else if (controller.get(VtnServiceJsonConsts.TYPE).getAsString() + } else if (controller.get(VtnServiceJsonConsts.TYPE) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.VNP)) { valCtrStruct .set(VtnServiceJsonConsts.TYPE, @@ -5498,7 +5844,8 @@ public class IpcStructFactory { .ordinal())); } LOG.debug("type:" - + controller.get(VtnServiceJsonConsts.TYPE).getAsString()); + + controller.get(VtnServiceJsonConsts.TYPE) + .getAsString()); } else { valCtrStruct .set(VtnServiceIpcConsts.VALID, @@ -5520,7 +5867,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.VERSION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - controller.get(VtnServiceJsonConsts.VERSION) + controller + .get(VtnServiceJsonConsts.VERSION) .getAsString(), valCtrStruct, UncPhysicalStructIndexEnum.UpplValCtrIndex.kIdxVersion @@ -5546,7 +5894,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - controller.get(VtnServiceJsonConsts.DESCRIPTION) + controller + .get(VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valCtrStruct, UncPhysicalStructIndexEnum.UpplValCtrIndex.kIdxDescription @@ -5571,8 +5920,13 @@ public class IpcStructFactory { valCtrStruct .set(VtnServiceIpcConsts.IP_ADDRESS, IpcDataUnitWrapper - .setIpcInet4AddressValue(controller.get(VtnServiceJsonConsts.IPADDR).getAsString(), - valCtrStruct, UncPhysicalStructIndexEnum.UpplValCtrIndex.kIdxIpAddress.ordinal())); + .setIpcInet4AddressValue( + controller + .get(VtnServiceJsonConsts.IPADDR) + .getAsString(), + valCtrStruct, + UncPhysicalStructIndexEnum.UpplValCtrIndex.kIdxIpAddress + .ordinal())); } else { valCtrStruct .set(VtnServiceIpcConsts.VALID, @@ -5594,7 +5948,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.USER, IpcDataUnitWrapper .setIpcUint8ArrayValue( - controller.get(VtnServiceJsonConsts.USERNAME) + controller + .get(VtnServiceJsonConsts.USERNAME) .getAsString(), valCtrStruct, UncPhysicalStructIndexEnum.UpplValCtrIndex.kIdxUser @@ -5620,7 +5975,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.PASSWORD, IpcDataUnitWrapper .setIpcUint8ArrayValue( - controller.get(VtnServiceJsonConsts.PASSWORD) + controller + .get(VtnServiceJsonConsts.PASSWORD) .getAsString(), valCtrStruct, UncPhysicalStructIndexEnum.UpplValCtrIndex.kIdxPassword @@ -5642,14 +5998,16 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); - if (controller.get(VtnServiceJsonConsts.AUDITSTATUS).getAsString() + if (controller.get(VtnServiceJsonConsts.AUDITSTATUS) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.DISABLE)) { valCtrStruct .set(VtnServiceIpcConsts.ENABLE_AUDIT, IpcDataUnitWrapper .setIpcUint8Value(UncPhysicalStructIndexEnum.UpplControllerAuditStatus.UPPL_AUTO_AUDIT_DISABLED .ordinal())); - } else if (controller.get(VtnServiceJsonConsts.AUDITSTATUS).getAsString() + } else if (controller.get(VtnServiceJsonConsts.AUDITSTATUS) + .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.ENABLE)) { valCtrStruct .set(VtnServiceIpcConsts.ENABLE_AUDIT, @@ -5669,6 +6027,7 @@ public class IpcStructFactory { .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal())); } + } else { LOG.warning("request body and uri parameters are not correct for getValCtrStruct"); } @@ -5677,7 +6036,7 @@ public class IpcStructFactory { return valCtrStruct; } - public IpcStruct getValCtrDomainStruct(final JsonObject requestBody, + public final IpcStruct getValCtrDomainStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_ctr_domain { UINT8 type; UINT8 description[128]; UINT8 @@ -5687,7 +6046,8 @@ public class IpcStructFactory { final IpcStruct valCtrDomainStruct = IpcDataUnitWrapper .setIpcStructValue(UncStructEnum.ValCtrDomain.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.DOMAIN)) { - JsonObject domain = requestBody.getAsJsonObject(VtnServiceJsonConsts.DOMAIN); + final JsonObject domain = requestBody + .getAsJsonObject(VtnServiceJsonConsts.DOMAIN); if (domain.has(VtnServiceJsonConsts.TYPE)) { valCtrDomainStruct .set(VtnServiceIpcConsts.VALID, @@ -5734,7 +6094,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - domain.get(VtnServiceJsonConsts.DESCRIPTION) + domain.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valCtrDomainStruct, UncPhysicalStructIndexEnum.UpplValDomainIndex.kIdxDomainDescription @@ -5756,7 +6117,7 @@ public class IpcStructFactory { return valCtrDomainStruct; } - public IpcStruct getKeyBoundaryStruct(final JsonObject requestBody, + public final IpcStruct getKeyBoundaryStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_boundary { UINT8 boundary_id[32]; }; @@ -5788,7 +6149,7 @@ public class IpcStructFactory { return keyBoundaryStruct; } - public IpcStruct getValBoundaryStruct(final JsonObject requestBody, + public final IpcStruct getValBoundaryStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_boundary { UINT8 description[128]; UINT8 @@ -5802,7 +6163,8 @@ public class IpcStructFactory { .setIpcStructValue(UncStructEnum.ValBoundary.getValue()); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.BOUNDARY)) { - JsonObject boundary = requestBody.getAsJsonObject(VtnServiceJsonConsts.BOUNDARY); + final JsonObject boundary = requestBody + .getAsJsonObject(VtnServiceJsonConsts.BOUNDARY); if (boundary.has(VtnServiceJsonConsts.DESCRIPTION)) { valBoundaryStruct .set(VtnServiceIpcConsts.VALID, @@ -5815,7 +6177,8 @@ public class IpcStructFactory { .set(VtnServiceJsonConsts.DESCRIPTION, IpcDataUnitWrapper .setIpcUint8ArrayValue( - boundary.get(VtnServiceJsonConsts.DESCRIPTION) + boundary.get( + VtnServiceJsonConsts.DESCRIPTION) .getAsString(), valBoundaryStruct, UncPhysicalStructIndexEnum.UpplValBoundaryIndex.kIdxBoundaryDescription @@ -5830,7 +6193,8 @@ public class IpcStructFactory { .ordinal())); } if (boundary.has(VtnServiceJsonConsts.LINK)) { - JsonObject link = boundary.getAsJsonObject(VtnServiceJsonConsts.LINK); + final JsonObject link = boundary + .getAsJsonObject(VtnServiceJsonConsts.LINK); if (link.has(VtnServiceJsonConsts.CONTROLLER1ID)) { valBoundaryStruct .set(VtnServiceIpcConsts.VALID, @@ -5843,7 +6207,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.CONTROLLER_NAME1, IpcDataUnitWrapper .setIpcUint8ArrayValue( - link.get(VtnServiceJsonConsts.CONTROLLER1ID) + link.get( + VtnServiceJsonConsts.CONTROLLER1ID) .getAsString(), valBoundaryStruct, UncPhysicalStructIndexEnum.UpplValBoundaryIndex.kIdxBoundaryControllerName1 @@ -5869,7 +6234,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.DOMAIN_NAME1, IpcDataUnitWrapper .setIpcUint8ArrayValue( - link.get(VtnServiceJsonConsts.DOMAIN1_ID) + link.get( + VtnServiceJsonConsts.DOMAIN1_ID) .getAsString(), valBoundaryStruct, UncPhysicalStructIndexEnum.UpplValBoundaryIndex.kIdxBoundaryDomainName1 @@ -5895,7 +6261,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.LOGICAL_PORT_ID1, IpcDataUnitWrapper .setIpcUint8ArrayValue( - link.get(VtnServiceJsonConsts.LOGICAL_PORT1_ID) + link.get( + VtnServiceJsonConsts.LOGICAL_PORT1_ID) .getAsString(), valBoundaryStruct, UncPhysicalStructIndexEnum.UpplValBoundaryIndex.kIdxBoundaryLogicalPortId1 @@ -5921,7 +6288,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.CONTROLLER_NAME2, IpcDataUnitWrapper .setIpcUint8ArrayValue( - link.get(VtnServiceJsonConsts.CONTROLLER2ID) + link.get( + VtnServiceJsonConsts.CONTROLLER2ID) .getAsString(), valBoundaryStruct, UncPhysicalStructIndexEnum.UpplValBoundaryIndex.kIdxBoundaryControllerName2 @@ -5947,7 +6315,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.DOMAIN_NAME2, IpcDataUnitWrapper .setIpcUint8ArrayValue( - link.get(VtnServiceJsonConsts.DOMAIN2_ID) + link.get( + VtnServiceJsonConsts.DOMAIN2_ID) .getAsString(), valBoundaryStruct, UncPhysicalStructIndexEnum.UpplValBoundaryIndex.kIdxBoundaryDomainName2 @@ -5973,7 +6342,8 @@ public class IpcStructFactory { .set(VtnServiceIpcConsts.LOGICAL_PORT_ID2, IpcDataUnitWrapper .setIpcUint8ArrayValue( - link.get(VtnServiceJsonConsts.LOGICAL_PORT2_ID) + link.get( + VtnServiceJsonConsts.LOGICAL_PORT2_ID) .getAsString(), valBoundaryStruct, UncPhysicalStructIndexEnum.UpplValBoundaryIndex.kIdxBoundaryLogicalPortId2 @@ -6080,8 +6450,7 @@ public class IpcStructFactory { IpcDataUnitWrapper .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal())); - } - else { + } else { LOG.warning("request body and uri parameters are not correct for getValCtrStruct"); } LOG.info("Value Structure: " + valBoundaryStruct.toString()); @@ -6096,7 +6465,7 @@ public class IpcStructFactory { * @param uriParameters * @return */ - public IpcStruct getKeyPortStruct(final JsonObject requestBody, + public final IpcStruct getKeyPortStruct(final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_port { key_switch sw_key; UINT8 port_id[32]; }; @@ -6125,8 +6494,8 @@ public class IpcStructFactory { return keyPortStruct; } - public IpcStruct getValVrtArpEntryStStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getValVrtArpEntryStStruct( + final JsonObject requestBody, final List uriParameters) { /* * ipc_struct val_vrt_arp_entry_st { UINT8 valid[4]; UINT8 macaddr[6]; * IPV4 ip_addr; UINT8 type; UINT8 if_name[32]; }; @@ -6180,8 +6549,8 @@ public class IpcStructFactory { return ValArpStruct; } - public IpcStruct getKeyLogicalPortStruct(final JsonObject requestBody, - final List uriParameters) { + public final IpcStruct getKeyLogicalPortStruct( + final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_logical_port { key_ctr_domain domain_key; UINT8 port * _id[320]; }; @@ -6211,7 +6580,7 @@ public class IpcStructFactory { return keyLogicalPortStruct; } - public IpcStruct getKeyLogicalMemberPortStruct( + public final IpcStruct getKeyLogicalMemberPortStruct( final JsonObject requestBody, final List uriParameters) { /* * ipc_struct key_logical_member_port { key_logical_port @@ -6254,4 +6623,175 @@ public class IpcStructFactory { LOG.trace("Complete getKeyLogicalMemberPortStruct"); return keyLogicalMemberPortStruct; } + + // Added New key Structure and Value Structure for U12 Requirement + /** + * Gets the Key Vtn Controller struct. + * + * @param requestBody + * the request body + * @param uriParameters + * the uri parameters + * @return the Key Vtn Controller struct + */ + public final IpcStruct getKeyVtnControllerStruct( + final JsonObject requestBody, final List uriParameters) { + LOG.trace("Start getKeyVtnControllerStruct"); + + final IpcStruct KeyVtnControllerStruct = IpcDataUnitWrapper + .setIpcStructValue(UncStructEnum.KeyVtnController.getValue()); + IpcStruct keyVtnStruct = null; + if (uriParameters != null + && uriParameters.size() >= UncIndexEnum.ONE.ordinal()) { + keyVtnStruct = getKeyVtnStruct(requestBody, + uriParameters.subList(0, 1)); + } + KeyVtnControllerStruct.set(VtnServiceIpcConsts.VTNKEY, keyVtnStruct); + if (uriParameters != null + && uriParameters.size() == UncIndexEnum.TWO.ordinal()) { + + final String mappingId[] = uriParameters.get(1).split( + VtnServiceJsonConsts.HYPHEN); + KeyVtnControllerStruct + .set(VtnServiceJsonConsts.CONTROLLERNAME, + IpcDataUnitWrapper + .setIpcUint8ArrayValue(mappingId[VtnServiceJsonConsts.VAL_0])); + KeyVtnControllerStruct + .set(VtnServiceJsonConsts.DOMAINID, + IpcDataUnitWrapper + .setIpcUint8ArrayValue(mappingId[VtnServiceJsonConsts.VAL_1])); + + } else { + LOG.warning("request body and uri parameters are not correct for getKeyVtnControllerStruct"); + } + LOG.info("Key Structure: " + KeyVtnControllerStruct.toString()); + LOG.trace("Complete getKeyVtnControllerStruct"); + return KeyVtnControllerStruct; + } + + // VTN Data Flow key Structure + public final IpcStruct getKeyVtnDataflowStruct( + final JsonObject requestBody, final List uriParameters) { + LOG.trace("Start getKeyVtnDataflowStruct"); + final IpcStruct keyVtnDataFlowStruct = IpcDataUnitWrapper + .setIpcStructValue(UncStructEnum.KeyVtnDataflow.getValue()); + IpcStruct keyVtnStruct = null; + if (uriParameters != null + && uriParameters.size() == UncIndexEnum.ONE.ordinal()) { + keyVtnStruct = getKeyVtnStruct(requestBody, uriParameters); + } + keyVtnDataFlowStruct.set(VtnServiceIpcConsts.VTNKEY, keyVtnStruct); + if (requestBody != null) { + keyVtnDataFlowStruct + .set(VtnServiceIpcConsts.VNODEID, IpcDataUnitWrapper + .setIpcUint8ArrayValue((requestBody + .get(VtnServiceJsonConsts.VNODENAME) + .getAsString()))); + if (requestBody.has(VtnServiceJsonConsts.VLANID)) { + LOG.debug("Valid VLAN ID Case"); + keyVtnDataFlowStruct.set( + VtnServiceIpcConsts.VLANID1, + IpcDataUnitWrapper.setIpcUint16Value(requestBody.get( + VtnServiceJsonConsts.VLANID).getAsString())); + } else if (requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + LOG.debug("Valid NO VLAN ID Case"); + keyVtnDataFlowStruct + .set(VtnServiceIpcConsts.VLANID1, + IpcDataUnitWrapper + .setIpcUint16HexaValue(VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE)); + } + IpcDataUnitWrapper.setMacAddress(keyVtnDataFlowStruct, + VtnServiceIpcConsts.SRC_MAC_ADDRESS, + requestBody.get(VtnServiceJsonConsts.SRCMACADDR) + .getAsString(), 0); + } else { + LOG.warning("request body and uri parameters are not correct for getKeyVtnDataflowStruct"); + } + LOG.info("Key Structure: " + keyVtnDataFlowStruct.toString()); + LOG.trace("Complete getKeyVtnDataflowStruct"); + return keyVtnDataFlowStruct; + } + + /** + * Gets the key DataFlow struct. + * + * @param requestBody + * the request body + * @param uriParameters + * the uri parameters + * @return the key DataFlow struct + */ + + public final IpcStruct getKeyDataFlowStruct(final JsonObject requestBody, + final List uriParameters) { + LOG.trace("Start getKeyDataFlowStruct"); + final IpcStruct keyDataFlowStruct = IpcDataUnitWrapper + .setIpcStructValue(UncStructEnum.KeyDataFlow.getValue()); + if (requestBody != null) { + keyDataFlowStruct.set(VtnServiceIpcConsts.CONTROLLERNAME, + IpcDataUnitWrapper.setIpcUint8ArrayValue((requestBody + .get(VtnServiceJsonConsts.CONTROLLERID) + .getAsString()))); + keyDataFlowStruct + .set(VtnServiceIpcConsts.SWITCHID, IpcDataUnitWrapper + .setIpcUint8ArrayValue((requestBody + .get(VtnServiceJsonConsts.SWITCHID) + .getAsString()))); + keyDataFlowStruct + .set(VtnServiceIpcConsts.PORT_ID, IpcDataUnitWrapper + .setIpcUint8ArrayValue((requestBody + .get(VtnServiceJsonConsts.PORTNAME) + .getAsString()))); + + if (requestBody.has(VtnServiceJsonConsts.VLANID)) { + LOG.debug("Valid VLAN ID Case"); + keyDataFlowStruct.set( + VtnServiceJsonConsts.VLANID, + IpcDataUnitWrapper.setIpcUint16Value(requestBody.get( + VtnServiceJsonConsts.VLANID).getAsString())); + } else if (requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + LOG.debug("Valid NO VLAN ID Case"); + keyDataFlowStruct + .set(VtnServiceJsonConsts.VLANID, + IpcDataUnitWrapper + .setIpcUint16HexaValue(VtnServiceIpcConsts.VLAN_ID_DEFAULT_VALUE)); + } + IpcDataUnitWrapper.setMacAddress(keyDataFlowStruct, + VtnServiceIpcConsts.SRC_MAC_ADDRESS, + requestBody.get(VtnServiceJsonConsts.SRCMACADDR) + .getAsString(), 0); + } else { + LOG.error("request body and uri parameters are not correct for getKeyDataFlowStruct"); + } + LOG.info("Key Structure: " + keyDataFlowStruct.toString()); + LOG.trace("Complete getKeyDataFlowStruct"); + return keyDataFlowStruct; + } + + // key_ctr_dataflow + + public final IpcStruct getKeyCtrDataFlowStruct( + final JsonObject requestBody, final List uriParameters) { + IpcStruct keyCtrStruct = null; + + if (uriParameters != null + && uriParameters.size() >= UncIndexEnum.ONE.ordinal()) { + // create key structure for Controller + keyCtrStruct = getKeyCtrStruct(requestBody, uriParameters); + } + LOG.trace("Start getKeyCtrDataFlowStruct"); + final IpcStruct keyCtrDataFlowStruct = IpcDataUnitWrapper + .setIpcStructValue(UncStructEnum.KeyCtrDataFlow.getValue()); + if (requestBody != null) { + keyCtrDataFlowStruct.set(VtnServiceIpcConsts.CTR_KEY, keyCtrStruct); + keyCtrDataFlowStruct.set(VtnServiceIpcConsts.FLOW_ID, + IpcDataUnitWrapper.setIpcUint64Value((requestBody + .get(VtnServiceJsonConsts.FLOW_ID).getAsString()))); + } else { + LOG.warning("request body and uri parameters are not correct for getKeyCtrDataFlowStruct"); + } + LOG.info("Key Structure: " + keyCtrDataFlowStruct.toString()); + LOG.trace("Complete getKeyCtrDataFlowStruct"); + return keyCtrDataFlowStruct; + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpAddressUtil.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpAddressUtil.java index bc6f31b8..f8f14974 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpAddressUtil.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpAddressUtil.java @@ -1,15 +1,15 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.javaapi.ipc.conversion; -import java.net.Inet4Address; -import java.net.Inet6Address; +import java.net.InetAddress; import java.net.UnknownHostException; import org.opendaylight.vtn.core.util.Logger; @@ -33,10 +33,10 @@ public class IpAddressUtil { public static byte[] textToNumericFormatV4(final String ipV4Add) { LOG.trace("Start textToNumericFormatV4 : " + ipV4Add); byte[] responseArray = null; - if (ipV4Add.split(VtnServiceConsts.DOT_REGEX).length == ipV4Size) { + if (ipV4Add.split(VtnServiceConsts.DOT_REGEX).length == ipV4Size && ipV4Add.trim().equals(ipV4Add)) { try { - responseArray = Inet4Address.getByName(ipV4Add).getAddress(); - } catch (UnknownHostException e) { + responseArray = InetAddress.getByName(ipV4Add).getAddress(); + } catch (final UnknownHostException e) { responseArray = null; LOG.error("incorrect format ipv4 address " + e.getMessage()); } @@ -57,10 +57,10 @@ public class IpAddressUtil { public static byte[] textToNumericFormatV6(final String ipV6Add) { LOG.trace("Start textToNumericFormatV6 : " + ipV6Add); byte[] responseArray = null; - if (ipV6Add.split(VtnServiceConsts.COLON).length == ipV6Size) { + if (ipV6Add.split(VtnServiceConsts.COLON).length == ipV6Size && ipV6Add.trim().equals(ipV6Add)) { try { - responseArray = Inet6Address.getByName(ipV6Add).getAddress(); - } catch (UnknownHostException e) { + responseArray = InetAddress.getByName(ipV6Add).getAddress(); + } catch (final UnknownHostException e) { responseArray = null; LOG.error("incorrect format ipv6 address " + e.getMessage()); } @@ -70,4 +70,4 @@ public class IpAddressUtil { LOG.trace("Complete textToNumericFormatV6 : " + responseArray); return responseArray; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcDataUnitWrapper.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcDataUnitWrapper.java index c96edaf8..b3b09563 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcDataUnitWrapper.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcDataUnitWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -54,7 +54,7 @@ public final class IpcDataUnitWrapper { } return new IpcUint8(Integer.parseInt(jsonValue)); } - + /** * Set json integer value to IpcUint8 type * @@ -98,7 +98,7 @@ public final class IpcDataUnitWrapper { public static IpcUint16 setIpcUint16Value(final String jsonValue) { return new IpcUint16(Integer.parseInt(jsonValue)); } - + /** * Set json string value to IpcUint16 type * @@ -148,7 +148,7 @@ public final class IpcDataUnitWrapper { } return new IpcUint16(jsonValue); } - + /** * Set json string value to IpcUint32 type * @@ -173,7 +173,7 @@ public final class IpcDataUnitWrapper { } return new IpcUint32(Long.parseLong(jsonValue)); } - + /** * Set int string value to IpcInt32 type * @@ -218,14 +218,15 @@ public final class IpcDataUnitWrapper { } return new IpcUint64(jsonValue); } - + /** * Set json ipaddress value to IpcInet4Address type * * @param jsonValue * @return */ - public static IpcInet4Address setIpcInet4AddressValue(final String jsonValue) { + public static IpcInet4Address + setIpcInet4AddressValue(final String jsonValue) { return (IpcInet4Address) IpcInetAddress.create(IpAddressUtil .textToNumericFormatV4(jsonValue)); } @@ -236,8 +237,8 @@ public final class IpcDataUnitWrapper { * @param jsonValue * @return */ - public static IpcInet4Address setIpcInet4AddressValue(final String jsonValue, - final IpcStruct struct, final int index) { + public static IpcInet4Address setIpcInet4AddressValue( + final String jsonValue, final IpcStruct struct, final int index) { if (jsonValue == null || jsonValue.isEmpty()) { setNoValueFlag(struct, index); return (IpcInet4Address) IpcInetAddress.create(IpAddressUtil @@ -246,14 +247,15 @@ public final class IpcDataUnitWrapper { return (IpcInet4Address) IpcInetAddress.create(IpAddressUtil .textToNumericFormatV4(jsonValue)); } - + /** * Set json ipaddress value to IpcInet6Address type * * @param jsonValue * @return */ - public static IpcInet6Address setIpcInet6AddressValue(final String jsonValue) { + public static IpcInet6Address + setIpcInet6AddressValue(final String jsonValue) { return (IpcInet6Address) IpcInetAddress.create(IpAddressUtil .textToNumericFormatV6(jsonValue)); } @@ -264,8 +266,8 @@ public final class IpcDataUnitWrapper { * @param jsonValue * @return */ - public static IpcInet6Address setIpcInet6AddressValue(final String jsonValue, - final IpcStruct struct, final int index) { + public static IpcInet6Address setIpcInet6AddressValue( + final String jsonValue, final IpcStruct struct, final int index) { if (jsonValue == null || jsonValue.isEmpty()) { setNoValueFlag(struct, index); return (IpcInet6Address) IpcInetAddress.create(IpAddressUtil @@ -274,7 +276,7 @@ public final class IpcDataUnitWrapper { return (IpcInet6Address) IpcInetAddress.create(IpAddressUtil .textToNumericFormatV6(jsonValue)); } - + /** * Create IpcStruct with name as Json string value * @@ -284,7 +286,7 @@ public final class IpcDataUnitWrapper { public static IpcStruct setIpcStructValue(final String jsonValue) { return new IpcStruct(jsonValue); } - + /** * Get string value of IpcDataUnit * @@ -354,8 +356,8 @@ public final class IpcDataUnitWrapper { */ public static String getIpcStructUint16HexaValue(final IpcStruct struct, final String parameterName) { - int intValue = ((IpcUint16) struct.get(parameterName)).intValue(); - String hexString = UnsignedInteger.toHexString(intValue); + final int intValue = ((IpcUint16) struct.get(parameterName)).intValue(); + final String hexString = UnsignedInteger.toHexString(intValue); return "0x" + hexString; } @@ -432,7 +434,7 @@ public final class IpcDataUnitWrapper { } /** - * Get string value of hexadecimal IpcUint64 + * Get string value of hexadecimal IpcUint64 * * @param struct * @param parameterName @@ -440,8 +442,9 @@ public final class IpcDataUnitWrapper { */ public static String getIpcStructUint64HexaValue(final IpcStruct struct, final String parameterName) { - long longValue = ((IpcUint64) struct.get(parameterName)).longValue(); - String hexString = UnsignedInteger.toHexString(longValue); + final long longValue = ((IpcUint64) struct.get(parameterName)) + .longValue(); + final String hexString = UnsignedInteger.toHexString(longValue); return "0x" + hexString; } @@ -453,14 +456,15 @@ public final class IpcDataUnitWrapper { * @param parameterName * @param jsonValue */ - public static void setMacAddress(final IpcStruct struct, - final String parameterName, final String jsonValue, final int index) { + public static void + setMacAddress(final IpcStruct struct, final String parameterName, + final String jsonValue, final int index) { if (jsonValue == null || jsonValue.isEmpty()) { setNoValueFlag(struct, index); - return ; + return; } - String macAddress = jsonValue.replaceAll(VtnServiceConsts.DOT_REGEX, - VtnServiceConsts.EMPTY_STRING); + final String macAddress = jsonValue.replaceAll( + VtnServiceConsts.DOT_REGEX, VtnServiceConsts.EMPTY_STRING); if (macAddress.length() != UncIndexEnum.TWELVE.ordinal()) { return; } else { @@ -498,29 +502,28 @@ public final class IpcDataUnitWrapper { .ordinal()) { jsonString = jsonString + VtnServiceConsts.DOT; } - int value = (int) struct.getByte(parameterName, structIndex); + final int value = struct.getByte(parameterName, structIndex); if (value < UncIndexEnum.ZERO.ordinal()) { jsonString = jsonString + Integer.toHexString( - (int) struct.getByte(parameterName, - structIndex++)).substring( - UncIndexEnum.SIX.ordinal(), - UncIndexEnum.EIGHT.ordinal()); + struct.getByte(parameterName, structIndex++)) + .substring(UncIndexEnum.SIX.ordinal(), + UncIndexEnum.EIGHT.ordinal()); } else if (value >= UncIndexEnum.ZERO.ordinal() && value < UncIndexEnum.SIXTEEN.ordinal()) { jsonString = jsonString + VtnServiceConsts.ZERO - + Integer.toHexString((int) struct.getByte( - parameterName, structIndex++)); + + Integer.toHexString(struct.getByte(parameterName, + structIndex++)); } else { jsonString = jsonString - + Integer.toHexString((int) struct.getByte( - parameterName, structIndex++)); + + Integer.toHexString(struct.getByte(parameterName, + structIndex++)); } } return jsonString; } - + /** * Set UNC_VF_VALID_NO_VALUE in case of receiving empty string for parameter * @@ -535,5 +538,5 @@ public final class IpcDataUnitWrapper { .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID_NO_VALUE .ordinal())); } - + } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcLogicalResponseFactory.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcLogicalResponseFactory.java index 63ab1885..d23deadd 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcLogicalResponseFactory.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcLogicalResponseFactory.java @@ -1,24 +1,29 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.javaapi.ipc.conversion; +import java.util.concurrent.atomic.AtomicInteger; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import org.opendaylight.vtn.core.ipc.IpcDataUnit; import org.opendaylight.vtn.core.ipc.IpcStruct; import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.core.util.UnsignedInteger; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceIpcConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; import org.opendaylight.vtn.javaapi.ipc.enums.PomStatsIndex; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncPhysicalStructIndexEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncStructIndexEnum; public class IpcLogicalResponseFactory { @@ -675,7 +680,7 @@ public class IpcLogicalResponseFactory { valVbrMacEntrySt, VtnServiceIpcConsts.TYPE)); } /* - * add valid port_name from value structure + * add valid IF_name from value structure */ validBit = valVbrMacEntrySt .getByte( @@ -687,7 +692,7 @@ public class IpcLogicalResponseFactory { && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { setValueToJsonObject(validBit, macEntries, - VtnServiceJsonConsts.PORTNAME, + VtnServiceJsonConsts.IFNAME, IpcDataUnitWrapper.getIpcStructUint8ArrayValue( valVbrMacEntrySt, VtnServiceIpcConsts.IFNAME)); @@ -972,6 +977,7 @@ public class IpcLogicalResponseFactory { valFlowFilterEntryStruct, VtnServiceIpcConsts.REDIRECTPORT)); } + validBit = valFlowFilterEntryStruct .getByte( VtnServiceIpcConsts.VALID, @@ -1604,6 +1610,7 @@ public class IpcLogicalResponseFactory { root.add(rootJsonName, vBypassArray); } else { root.add(rootJsonName, vBypassList); + } } LOG.debug("response Json: " + root.toString()); @@ -1710,6 +1717,7 @@ public class IpcLogicalResponseFactory { LOG.debug("Operation : normal Skip value struture"); index++; } + if (getType.equals(VtnServiceJsonConsts.SHOW) && dataType .equalsIgnoreCase(VtnServiceJsonConsts.STATE)) { @@ -1874,8 +1882,10 @@ public class IpcLogicalResponseFactory { * @param responseStruct * @param pomStatsIndexSet */ - public void getPomStats(final JsonObject targetJson, - final IpcStruct responseStruct, final PomStatsIndex pomStatsIndexSet) { + public void + getPomStats(final JsonObject targetJson, + final IpcStruct responseStruct, + final PomStatsIndex pomStatsIndexSet) { LOG.trace("Start getPomStats"); byte validBit; // pom stats starts @@ -3371,6 +3381,7 @@ public class IpcLogicalResponseFactory { valFlowFilterEntryStruct, VtnServiceIpcConsts.REDIRECTPORT)); } + validBit = valFlowFilterEntryStruct .getByte( VtnServiceIpcConsts.VALID, @@ -5367,7 +5378,8 @@ public class IpcLogicalResponseFactory { } public JsonObject getPortMapResponse(final IpcDataUnit[] responsePacket, - final JsonObject requestBody, final String getType, String ifType) { + final JsonObject requestBody, final String getType, + final String ifType) { LOG.trace("Start getPortMapResponse"); final JsonObject root = new JsonObject(); @@ -5384,7 +5396,7 @@ public class IpcLogicalResponseFactory { for (int index = 0; index < responsePacket.length; index++) { portMap = new JsonObject(); - byte validBit=0; + byte validBit = 0; // There is no use of key type LOG.debug("Skip key type: no use"); index++; @@ -5426,7 +5438,7 @@ public class IpcLogicalResponseFactory { && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - IpcStruct valPortMapStruct = IpcDataUnitWrapper + final IpcStruct valPortMapStruct = IpcDataUnitWrapper .getInnerIpcStruct(valIfStruct, VtnServiceJsonConsts.PORTMAP); /* @@ -5910,6 +5922,7 @@ public class IpcLogicalResponseFactory { valFlowFilterEntryStruct, VtnServiceIpcConsts.REDIRECTPORT)); } + validBit = valFlowFilterEntryStruct .getByte( VtnServiceIpcConsts.VALID, @@ -6309,7 +6322,7 @@ public class IpcLogicalResponseFactory { final String nextHopAddr = IpcDataUnitWrapper .getIpcStructIpv4Value(keyStaticIpRouteStruct, VtnServiceIpcConsts.NEXT_HOP_ADDR); - + // no use of value structure LOG.debug("no use of value structure"); index++; @@ -6532,7 +6545,7 @@ public class IpcLogicalResponseFactory { valVtepStruct, VtnServiceJsonConsts.DOMAINID)); } - + /* * If data type is set as "state", then value structure will * also contain the state information @@ -6590,8 +6603,7 @@ public class IpcLogicalResponseFactory { } } - } - else { + } else { LOG.debug("Operation : normal Skip value struture"); index++; if (dataType.equalsIgnoreCase(VtnServiceJsonConsts.STATE)) { @@ -6819,7 +6831,7 @@ public class IpcLogicalResponseFactory { VtnServiceIpcConsts.MAP_TYPE))) { setValueToJsonObject(validBit, vtnStation, VtnServiceJsonConsts.MAPTYPE, - VtnServiceJsonConsts.OFS_MAP); + VtnServiceJsonConsts.PORTMAP); } else if (UncStructIndexEnum.ValVbrIfMapType.UPLL_IF_VLAN_MAP .getValue().equals( IpcDataUnitWrapper.getIpcStructUint8Value( @@ -6827,7 +6839,7 @@ public class IpcLogicalResponseFactory { VtnServiceIpcConsts.MAP_TYPE))) { setValueToJsonObject(validBit, vtnStation, VtnServiceJsonConsts.MAPTYPE, - VtnServiceJsonConsts.VLAN_MAP); + VtnServiceJsonConsts.VLANMAP); } LOG.debug("MapType :" + IpcDataUnitWrapper.getIpcStructUint8Value( @@ -7544,24 +7556,24 @@ public class IpcLogicalResponseFactory { } else { vtnStationsArray = new JsonArray(); LOG.debug("Skip Key Type, Key Structure and Count of VTN-Stations"); - for (int index = 3; index < responsePacket.length; ) { + for (int index = 3; index < responsePacket.length;) { vtnStation = new JsonObject(); byte validBit; - + final IpcStruct valVtnstationControllerSt = (IpcStruct) responsePacket[index++]; createVtnStationConstJson(vtnStation, valVtnstationControllerSt); - - if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { - LOG.debug("op : detail"); - final IpcStruct valVtnstationControllerStat = (IpcStruct) responsePacket[index++]; - final JsonObject vtnStationStats = new JsonObject(); - addVtnStationStatsData(vtnStationStats, - valVtnstationControllerStat); - vtnStation.add(VtnServiceJsonConsts.STATISTICS, - vtnStationStats); - } + if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + LOG.debug("op : detail"); + final IpcStruct valVtnstationControllerStat = (IpcStruct) responsePacket[index++]; + + final JsonObject vtnStationStats = new JsonObject(); + addVtnStationStatsData(vtnStationStats, + valVtnstationControllerStat); + vtnStation.add(VtnServiceJsonConsts.STATISTICS, + vtnStationStats); + } // for ipaddrs parameter validBit = valVtnstationControllerSt @@ -7583,8 +7595,9 @@ public class IpcLogicalResponseFactory { .getIpcDataUnitValue(responsePacket[index++])); ipaddrsArray.add(ipaddrs); } - if(ipaddrsArray.size() > 0){ - vtnStation.add(VtnServiceJsonConsts.IPADDRS, ipaddrsArray); + if (ipaddrsArray.size() > 0) { + vtnStation.add(VtnServiceJsonConsts.IPADDRS, + ipaddrsArray); } LOG.debug("count of ipv4 address : " + ipv4_count); @@ -7599,11 +7612,9 @@ public class IpcLogicalResponseFactory { .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - final int ipv6_count = Integer - .parseInt(IpcDataUnitWrapper - .getIpcStructUint32Value( - valVtnstationControllerSt, - VtnServiceIpcConsts.IPV6_COUNT)); + final int ipv6_count = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valVtnstationControllerSt, + VtnServiceIpcConsts.IPV6_COUNT)); final JsonArray ipaddrsArray = new JsonArray(); for (int i = 0; i < ipv6_count; i++) { final JsonPrimitive ipaddrs = new JsonPrimitive( @@ -7611,10 +7622,11 @@ public class IpcLogicalResponseFactory { .getIpcDataUnitValue(responsePacket[index++])); ipaddrsArray.add(ipaddrs); } - if(ipaddrsArray.size() > 0){ - vtnStation.add(VtnServiceJsonConsts.IPV6ADDRS, ipaddrsArray); + if (ipaddrsArray.size() > 0) { + vtnStation.add(VtnServiceJsonConsts.IPV6ADDRS, + ipaddrsArray); } - LOG.debug("count of ip64 address : " + ipv6_count); + LOG.debug("count of ipv6 address : " + ipv6_count); } // add current json object to array, if it has been initialized @@ -7863,4 +7875,1715 @@ public class IpcLogicalResponseFactory { LOG.trace("Complete getIpRouteResponse"); return root; } + + // U12 Implementaion + + /** + * Used for Vtnmapping Response + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + public JsonObject getVtnMappingResponse(final IpcDataUnit[] responsePacket, + final JsonObject requestBody, final String getType) { + + LOG.trace("Start getVtnMappingResponse"); + final JsonObject root = new JsonObject(); + JsonObject vtnMapping = null; + JsonArray vtnMappingArray = null; + JsonArray vtnMappingInfosJsonArray = null; + + LOG.debug("getType: " + getType); + String rootJsonName; + /* + * get type (show or list) will be required to resolve root json name + * here it will be mapping for show and mappings for list + */ + if (getType.equals(VtnServiceJsonConsts.SHOW)) { + rootJsonName = VtnServiceJsonConsts.MAPPING; + } else { + rootJsonName = VtnServiceJsonConsts.MAPPINGS; + // json array will be required for list type of cases + vtnMappingArray = new JsonArray(); + } + LOG.debug("Json Name :" + rootJsonName); + + String opType = VtnServiceJsonConsts.NORMAL; + if (requestBody.has(VtnServiceJsonConsts.OP)) { + opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); + } + + for (int index = 0; index < responsePacket.length; index++) { + vtnMapping = new JsonObject(); + LOG.debug("initial index :" + index); + // ignore key-type + index++; + /* + * add mandatory informations from key structure + */ + LOG.debug("domainId index :" + index); + final IpcStruct keyVtnControllerStruct = (IpcStruct) responsePacket[index++]; + final String controllerId = IpcDataUnitWrapper + .getIpcStructUint8ArrayValue(keyVtnControllerStruct, + VtnServiceIpcConsts.CONTROLLERNAME); + final String domainId = IpcDataUnitWrapper + .getIpcStructUint8ArrayValue(keyVtnControllerStruct, + VtnServiceIpcConsts.DOMAINID); + + vtnMapping.addProperty(VtnServiceJsonConsts.MAPPINGID, controllerId + + VtnServiceJsonConsts.HYPHEN + domainId); + + vtnMapping.addProperty(VtnServiceJsonConsts.CONTROLLERID, + controllerId); + vtnMapping.addProperty(VtnServiceJsonConsts.DOMAINID, domainId); + // get count of value structure + LOG.debug("count index :" + index); + final int count = Integer.valueOf(IpcDataUnitWrapper + .getIpcDataUnitValue(responsePacket[index++])); + + if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL) + || getType.equalsIgnoreCase(VtnServiceJsonConsts.SHOW)) { + vtnMappingInfosJsonArray = new JsonArray(); + + for (int valIndex = 0; valIndex < count; valIndex++) { + final JsonObject vtnMappingInfojsonObject = new JsonObject(); + /* + * this part is always required in Show, but not required in + * List + "normal" op type + */ + + byte validBit; + /* + * add valid informations from value structure + */ + LOG.debug("valVtnMappingStruct index :" + index); + final IpcStruct valVtnMappingStruct = (IpcStruct) responsePacket[index++]; + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_SWITCH_ID_VMCS + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.SWITCHID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnMappingStruct, + VtnServiceIpcConsts.SWITCHID)); + } + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_PORT_NAME_VMCS + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.PORTNAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnMappingStruct, + VtnServiceIpcConsts.PORTNAME)); + } + + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_LOGICAL_PORT_ID_VMCS + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.LOGICAL_PORT_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnMappingStruct, + VtnServiceIpcConsts.LOGICAL_PORT_ID)); + } + + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_VLAN_ID_VMCS + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + + + String vLanIdValue = IpcDataUnitWrapper.getIpcStructUint16Value( + valVtnMappingStruct, + VtnServiceIpcConsts.VLANID); + + if (!vLanIdValue.equalsIgnoreCase(VtnServiceJsonConsts.VLAN_ID_65535)){ + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.VLANID, vLanIdValue); + } + } + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_TAGGED_VMCS + .ordinal()); + + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + if (IpcDataUnitWrapper + .getIpcStructUint8Value(valVtnMappingStruct, + VtnServiceIpcConsts.TAGGED) + .equals(UncStructIndexEnum.vlan_tagged.UPLL_VLAN_TAGGED + .getValue())) { + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.TAGGED, + VtnServiceJsonConsts.TRUE); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(valVtnMappingStruct, + VtnServiceIpcConsts.TAGGED) + .equals(UncStructIndexEnum.vlan_tagged.UPLL_VLAN_UNTAGGED + .getValue())) { + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.TAGGED, + VtnServiceJsonConsts.FALSE); + } + LOG.debug("Tagged :" + + IpcDataUnitWrapper.getIpcStructUint8Value( + valVtnMappingStruct, + VtnServiceIpcConsts.TAGGED)); + } + + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_MAP_TYPE_VMCS + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + + if (UncStructIndexEnum.ValVbrIfMapType.UPLL_IF_OFS_MAP.getValue() + .equals(IpcDataUnitWrapper.getIpcStructUint8Value( + valVtnMappingStruct, + VtnServiceIpcConsts.MAP_TYPE))) { + setValueToJsonObject(validBit, vtnMappingInfojsonObject, + VtnServiceJsonConsts.MAPTYPE, + VtnServiceJsonConsts.PORTMAP); + } else if (UncStructIndexEnum.ValVbrIfMapType.UPLL_IF_VLAN_MAP + .getValue().equals( + IpcDataUnitWrapper.getIpcStructUint8Value( + valVtnMappingStruct, + VtnServiceIpcConsts.MAP_TYPE))) { + setValueToJsonObject(validBit, vtnMappingInfojsonObject, + VtnServiceJsonConsts.MAPTYPE, + VtnServiceJsonConsts.VLANMAP); + }else { + LOG.debug("MapType : invalid"); + } + LOG.debug("MapType :" + + IpcDataUnitWrapper.getIpcStructUint8Value( + valVtnMappingStruct, + VtnServiceIpcConsts.MAP_TYPE)); + + } + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_VBR_NAME_VMCS + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.VBRNAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnMappingStruct, + VtnServiceIpcConsts.VBRNAME)); + } + + validBit = valVtnMappingStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnMappingControllerStIndex.UPLL_IDX_VBR_IF_NAME_VMCS + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, + vtnMappingInfojsonObject, + VtnServiceJsonConsts.IFNAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnMappingStruct, + VtnServiceIpcConsts.VBRIFNAME)); + } + + vtnMappingInfosJsonArray.add(vtnMappingInfojsonObject); + } + vtnMapping.add(VtnServiceJsonConsts.MAPPINGINFOS, + vtnMappingInfosJsonArray); + } else { + vtnMapping.remove(VtnServiceJsonConsts.CONTROLLERID); + vtnMapping.remove(VtnServiceJsonConsts.DOMAINID); + index = index + count; + } + if (null != vtnMappingArray) { + vtnMappingArray.add(vtnMapping); + } + } + /* + * finally add either array or single object to root json object and + * return the same. + */ + if (null != vtnMappingArray) { + LOG.debug("List VTN Mapping JSON :" + vtnMappingArray); + root.add(rootJsonName, vtnMappingArray); + } else { + LOG.debug("Show VTN Mapping JSON :" + vtnMapping); + root.add(rootJsonName, vtnMapping); + } + LOG.debug("response Json: " + root.toString()); + LOG.trace("Complete getVtnMappingResponse"); + + return root; + } + + /** + * Used for Show VTN Data Flow response + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + public JsonObject getVtnDataFlowResponse( + final IpcDataUnit[] responsePacket, final JsonObject requestBody, + final String getType) { + LOG.trace("Start getVtnDataFlowResponse"); + final JsonObject root = new JsonObject(); + final JsonArray vtnDataFlowArray = new JsonArray(); + if (responsePacket.length != 0) { + int index = 2; + final int totalFlowCount = Integer.parseInt(IpcDataUnitWrapper + .getIpcDataUnitValue(responsePacket[index++])); + + for (int i = 0; i < totalFlowCount; i++) { + final IpcStruct valVtnDataFlowStruct = (IpcStruct) responsePacket[index++]; + LOG.debug("totalFlowCount:" + totalFlowCount); + final JsonObject vtnDataflow = new JsonObject(); + byte validBit = 0; + validBit = valVtnDataFlowStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowIndex.UPLL_IDX_REASON_VVD + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + { + final int reason = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valVtnDataFlowStruct, + VtnServiceIpcConsts.REASON)); + // getting type of reason field a + String reasonForJson = VtnServiceConsts.EMPTY_STRING; + if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_SUCCESS + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_SUCCESS; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_OPERATION_NOT_SUPPORTED + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_NOT_SUPP; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_EXCEEDS_FLOW_LIMIT + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_EXCD_LIM; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_CTRLR_DISCONNECTED + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_CTRL_DISC; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_EXCEEDS_HOP_LIMIT + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_EXCD_HOP; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_DST_NOT_REACHED + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_DST_NOT_REACHED; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_FLOW_NOT_FOUND + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_FLOW_NOTFOUND; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_SYSTEM_ERROR + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_SYS_ERROR; + } + // assigning reason field in dataflow Json + setValueToJsonObject(validBit, vtnDataflow, + VtnServiceJsonConsts.REASON, reasonForJson); + LOG.debug("reason:" + reasonForJson); + } + } + final JsonArray ctrlDomainDataFlowArray = new JsonArray(); + validBit = valVtnDataFlowStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowIndex.UPLL_IDX_CTRLR_DOMAIN_COUNT_VVD + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + final int controllerDomainCount = Integer + .parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value( + valVtnDataFlowStruct, + VtnServiceIpcConsts.CONTROLLER_DOMAIN_COUNT)); + LOG.debug("Controller Domain Count:" + + controllerDomainCount); + + for (int j = 0; j < controllerDomainCount; j++) { + final AtomicInteger atomicIndex = new AtomicInteger( + index); + ctrlDomainDataFlowArray + .add(getControllerDomainDataFlow( + responsePacket, atomicIndex, + requestBody)); + index = atomicIndex.get(); + } + + vtnDataflow.add( + VtnServiceJsonConsts.CONTROLLER_DOMAIN_DATAFLOWS, + ctrlDomainDataFlowArray); + LOG.debug("VTN Data Flow Json:" + vtnDataflow); + } + vtnDataFlowArray.add(vtnDataflow); + LOG.debug("vtn dataFlowArray Json:" + vtnDataFlowArray); + } + } + root.add(VtnServiceJsonConsts.DATAFLOWS, vtnDataFlowArray); + LOG.debug("root Json :" + root); + LOG.trace("Complete getVtnDataFlowResponse"); + return root; + + } + + /** + * get ControllerDomainDataFlow method is Used for VtnDataFlow Response + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + private JsonObject getControllerDomainDataFlow( + final IpcDataUnit[] responsePacket, final AtomicInteger index, + final JsonObject requestBody) { + LOG.trace("getControllerDomainDataFlow started"); + byte validBit; + final JsonObject controllerDomainFlow = new JsonObject(); + final IpcStruct valVtnDataFlowCmnStruct = (IpcStruct) responsePacket[index + .getAndIncrement()]; + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_CONTROLLER_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.CONTROLLERID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.CONTROLLER_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_CONTROLLER_TYPE_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + if (IpcDataUnitWrapper + .getIpcStructUint8Value(valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.CONTROLER_TYPE) + .equals(UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_UNKNOWN + .getValue())) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.CONTROLER_TYPE, + VtnServiceJsonConsts.BYPASS); + + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.CONTROLER_TYPE).equals( + UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_PFC + .getValue())) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.CONTROLER_TYPE, + VtnServiceJsonConsts.PFC); + + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.CONTROLER_TYPE).equals( + UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_VNP + .getValue())) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.CONTROLER_TYPE, + VtnServiceJsonConsts.VNP); + + } else { + LOG.debug("Controller Type invalid"); + } + LOG.debug("Controller Type :" + + IpcDataUnitWrapper.getIpcStructUint8Value( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.CONTROLER_TYPE)); + } + + validBit = valVtnDataFlowCmnStruct.getByte(VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_FLOW_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.FLOW_ID, + IpcDataUnitWrapper.getIpcStructUint64Value( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.FLOW_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_CREATED_TIME_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.CREATEDTIME, + IpcDataUnitWrapper.getIpcStructUint64Value( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.CREATED_TIME)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_IDLE_TIMEOUT_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.IDLETIMEOUT, + IpcDataUnitWrapper.getIpcStructUint32Value( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.IDLE_TIMEOUT)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_HARD_TIMEOUT_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.HARDTIMEOUT, + IpcDataUnitWrapper.getIpcStructUint32Value( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.HARD_TIMEOUT)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_INGRESS_VNODE_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.INGRESS_VNODE_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.INGRESS_VNODE)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_INGRESS_VINTERFACE_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.INGRESS_IF_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.INGRESS_VINTERFACE)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_INGRESS_SWITCH_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.INGRESS_SWITCH_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.INGRESS_SWITCH_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_INGRESS_PORT_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.INGRESS_PORT_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.INGRESS_PORT_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_INGRESS_LOGICAL_PORT_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.INGRESS_LOGICAL_PORT_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.INGRESS_LOGICAL_PORT_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_INGRESS_DOMAIN_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.INGRESS_DOMAIN_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.INGRESS_DOMAIN)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_EGRESS_VNODE_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.EGRESS_VNODE_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.EGRESS_VNODE)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_EGRESS_VINTERFACE_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.EGRESS_IF_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.EGRESS_VINTERFACE)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_EGRESS_SWITCH_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.EGRESS_SWITCH_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.EGRESS_SWITCH_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_EGRESS_PORT_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.EGRESS_PORT_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.EGRESS_PORT_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_EGRESS_LOGICAL_PORT_ID_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.EGRESS_LOGICAL_PORT_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.EGRESS_LOGICAL_PORT_ID)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_EGRESS_DOMAIN_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controllerDomainFlow, + VtnServiceJsonConsts.EGRESS_DOMAIN_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.EGRESS_DOMAIN)); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_MATCH_COUNT_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + + controllerDomainFlow.add( + VtnServiceJsonConsts.MATCH, + getDataFlowMatchInfo(responsePacket, index, validBit, + controllerDomainFlow, valVtnDataFlowCmnStruct)); + + } + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_ACTION_COUNT_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + controllerDomainFlow.add( + VtnServiceJsonConsts.ACTION, + getDataFlowActionInfo(responsePacket, index, + controllerDomainFlow, valVtnDataFlowCmnStruct)); + LOG.debug(" Controller domain data flow Json :" + + controllerDomainFlow); + } + + validBit = valVtnDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowCmnIndex.UPLL_IDX_PATH_INFO_COUNT_VVDC + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + + controllerDomainFlow.add( + VtnServiceJsonConsts.PATHINFOS, + getDataFlowPathInfo(responsePacket, index, + valVtnDataFlowCmnStruct)); + LOG.debug(" Controller domain data flow Json :" + + controllerDomainFlow); + } + LOG.trace("getControllerDomainDataFlow completed"); + return controllerDomainFlow; + } + + /** + * This method is Used to generate Flow path info Json + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + private JsonArray getDataFlowPathInfo(final IpcDataUnit[] responsePacket, + final AtomicInteger index, final IpcStruct valVtnDataFlowCmnStruct) { + LOG.trace("getDataFlowPathInfo stated"); + final JsonArray pathInfoArray = new JsonArray(); + final int pathInfoCount = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.PATH_INFO_COUNT)); + LOG.debug("path_info_count:" + pathInfoCount); + for (int k = 0; k < pathInfoCount; k++) { + final JsonObject pathInfoBoundry = new JsonObject(); + byte validBit; + final IpcStruct valVtnDataFlowPathInfo = (IpcStruct) responsePacket[index + .getAndIncrement()]; + validBit = valVtnDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowPathInfo.UPLL_IDX_IN_VNODE_VVDPI + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, pathInfoBoundry, + VtnServiceJsonConsts.IN_VNODE_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowPathInfo, + VtnServiceIpcConsts.IN_VNODE)); + + } + + validBit = valVtnDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowPathInfo.UPLL_IDX_IN_VIF_VVDPI + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, pathInfoBoundry, + VtnServiceJsonConsts.IN_IF_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowPathInfo, + VtnServiceIpcConsts.IN_VIF)); + + } + + validBit = valVtnDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowPathInfo.UPLL_IDX_OUT_VNODE_VVDPI + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, pathInfoBoundry, + VtnServiceJsonConsts.OUT_VNODE_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowPathInfo, + VtnServiceIpcConsts.OUT_VNODE)); + + } + + validBit = valVtnDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowPathInfo.UPLL_IDX_OUT_VIF_VVDPI + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, pathInfoBoundry, + VtnServiceJsonConsts.OUT_IF_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valVtnDataFlowPathInfo, + VtnServiceIpcConsts.OUT_VIF)); + + } + + validBit = valVtnDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowPathInfo.UPLL_IDX_VLINK_FLAG_VVDPI + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + + final int linkValue = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint8Value(valVtnDataFlowPathInfo, + VtnServiceIpcConsts.VLINK_FLAG)); + String link = VtnServiceConsts.EMPTY_STRING; + if (linkValue == UncStructIndexEnum.valVtnDataflowPathInfoVlinkType.UPLL_DATAFLOW_PATH_VLINK_NOT_EXISTS + .ordinal()) { + link = VtnServiceJsonConsts.NOT_EXISTS; + } else if (linkValue == UncStructIndexEnum.valVtnDataflowPathInfoVlinkType.UPLL_DATAFLOW_PATH_VLINK_EXISTS + .ordinal()) { + link = VtnServiceJsonConsts.EXISTS; + } + setValueToJsonObject(validBit, pathInfoBoundry, + VtnServiceJsonConsts.VLINK_FLAG, link); + } + validBit = valVtnDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncStructIndexEnum.valVtnDataflowPathInfo.UPLL_IDX_STATUS_VVDPI + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + + final int statusValue = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint8Value(valVtnDataFlowPathInfo, + VtnServiceIpcConsts.STATUS)); + String status = VtnServiceConsts.EMPTY_STRING; + if (statusValue == UncStructIndexEnum.valVtnDataflowPathInfoStatusType.UPLL_DATAFLOW_PATH_STATUS_NORMAL + .ordinal()) { + status = VtnServiceJsonConsts.NORMAL; + } else if (statusValue == UncStructIndexEnum.valVtnDataflowPathInfoStatusType.UPLL_DATAFLOW_PATH_STATUS_DROP + .ordinal()) { + status = VtnServiceJsonConsts.DROP; + } + setValueToJsonObject(validBit, pathInfoBoundry, + VtnServiceJsonConsts.STATUS, status); + + } + pathInfoArray.add(pathInfoBoundry); + + } + LOG.debug("pathInfoArray Json:" + pathInfoArray); + LOG.trace("getDataFlowPathInfo completed"); + return pathInfoArray; + } + + /** + * This method is Used to generate Match Flow info Json + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + private JsonObject getDataFlowMatchInfo(final IpcDataUnit[] responsePacket, + final AtomicInteger index, final byte validBit, + final JsonObject controlerFlow, + final IpcStruct valDfDataFlowCmnStruct) { + LOG.trace("getDataFlowMatchInfo started"); + final int matchCount = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfDataFlowCmnStruct, + VtnServiceIpcConsts.MATCH_COUNT)); + LOG.debug("MATCH_COUNT:" + matchCount); + // match JsonObject will hold all below jsonObject as per requiremnts + final JsonObject match = new JsonObject(); + + JsonArray inportJsonArray = null; + JsonArray srcMacJsonArray = null; + JsonArray dstMacJsonArray = null; + JsonArray srcMaskJsonArray = null; + JsonArray dstMaskJsonArray = null; + JsonArray macEtherTypeJsonArray = null; + JsonArray vlanIdJsonArray = null; + JsonArray vlanPriorityJsonArray = null; + JsonArray ipTosJsonArray = null; + JsonArray ipProtoJsonArray = null; + JsonArray ipDstAddrJsonArray = null; + JsonArray ipDstAddrMaskJsonArray = null; + JsonArray ipSrcAddrJsonArray = null; + JsonArray ipSrcAddrMaskJsonArray = null; + JsonArray l4DstPortIcmpTypeJsonArray = null; + JsonArray l4DstPortIcmpTypeMaskJsonArray = null; + JsonArray l4SrcPortIcmpTypeJsonArray = null; + JsonArray l4SrcPortIcmpTypeMaskJsonArray = null; + JsonArray ipV6DstAddJsonArray = null; + JsonArray ipV6DstAddrMaskJsonArray = null; + JsonArray ipV6SrcAddrJsonArray = null; + JsonArray ipV6SrcAddrMaskJsonArray = null; + JsonPrimitive element = null; + for (int i = 0; i < matchCount; i++) { + final IpcStruct valDfFlowMatchStruct = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + final int matchtype = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowMatchStruct, + VtnServiceIpcConsts.MATCH_TYPE)); + LOG.debug("MATCH TYPE:" + matchtype); + // match type will help in resolving response in match info + if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IN_PORT + .ordinal()) { + final IpcStruct valDfFlowMatchInPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + // set inport + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowMatchInPort, + VtnServiceIpcConsts.IN_PORT).toString()); + + if (null == inportJsonArray) { + inportJsonArray = new JsonArray(); + } + inportJsonArray.add(element); + LOG.debug("set validBit for in_port :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_DL_DST + .ordinal()) { + final IpcStruct valDfFlowMatchDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.DL_ADDR)); + if (null == dstMacJsonArray) { + dstMacJsonArray = new JsonArray(); + } + dstMacJsonArray.add(element); + LOG.debug("set validbit for macdst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getMacAddress(valDfFlowMatchDlAddr, + VtnServiceIpcConsts.DL_ADDR_MASK) + .toString()); + if (null == dstMaskJsonArray) { + dstMaskJsonArray = new JsonArray(); + } + dstMaskJsonArray.add(element); + LOG.debug("set validbit for macdst :" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_DL_SRC + .ordinal()) { + final IpcStruct valDfFlowMatchDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.DL_ADDR) + .toString()); + if (null == srcMacJsonArray) { + srcMacJsonArray = new JsonArray(); + } + srcMacJsonArray.add(element); + LOG.debug("set validbit for macsrc :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getMacAddress(valDfFlowMatchDlAddr, + VtnServiceIpcConsts.DL_ADDR_MASK) + .toString()); + if (null == srcMaskJsonArray) { + srcMaskJsonArray = new JsonArray(); + } + srcMaskJsonArray.add(element); + LOG.debug("set validbit for macdst :" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_DL_TYPE + .ordinal()) { + final IpcStruct valDfFlowMatchDlType = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element= new JsonPrimitive(IpcDataUnitWrapper.getIpcStructUint16HexaValue( + valDfFlowMatchDlType, VtnServiceIpcConsts.DL_TYPE) + .toString()); + if (null == macEtherTypeJsonArray) { + macEtherTypeJsonArray = new JsonArray(); + } + macEtherTypeJsonArray.add(element); + LOG.debug("set validbit for etherntype :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_VLAN_ID + .ordinal()) { + final IpcStruct valDfFlowMatchVlanVid = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchVlanVid, + VtnServiceIpcConsts.VLAN_ID).toString()); + if (null == vlanIdJsonArray) { + vlanIdJsonArray = new JsonArray(); + } + if(element.getAsString().equals(VtnServiceJsonConsts.VLAN_ID_65535)){ + element = new JsonPrimitive(VtnServiceJsonConsts.EMPTY); + vlanIdJsonArray.add(element); + }else{ + vlanIdJsonArray.add(element); + } + + + LOG.debug("set validbit for vlan_id :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_VLAN_PCP + .ordinal()) { + final IpcStruct valDfFlowMatchVlanpcp = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint8Value(valDfFlowMatchVlanpcp, + VtnServiceIpcConsts.VLAN_PCP).toString()); + if (null == vlanPriorityJsonArray) { + vlanPriorityJsonArray = new JsonArray(); + } + vlanPriorityJsonArray.add(element); + LOG.debug("set validbit for vlanpriority :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IP_TOS + .ordinal()) { + + final IpcStruct valDfFlowMatchIpTos = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + final String hexString = + UnsignedInteger.toHexString(Long + .valueOf(IpcDataUnitWrapper + .getIpcStructUint8Value( + valDfFlowMatchIpTos, + VtnServiceIpcConsts.IP_TOS))); + element = new JsonPrimitive("0x" + hexString); + if (null == ipTosJsonArray) { + ipTosJsonArray = new JsonArray(); + } + ipTosJsonArray.add(element); + LOG.debug("set validbit for iptos :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IP_PROTO + .ordinal()) { + + final IpcStruct valDfFlowMatchIpProto = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint8Value(valDfFlowMatchIpProto, + VtnServiceIpcConsts.IP_PROTO).toString()); + if (null == ipProtoJsonArray) { + ipProtoJsonArray = new JsonArray(); + } + ipProtoJsonArray.add(element); + LOG.debug("set validbit for ipproto :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV4_SRC + .ordinal()) { + final IpcStruct valDfFlowMatchIpv4Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + if (null == ipSrcAddrJsonArray) { + ipSrcAddrJsonArray = new JsonArray(); + } + ipSrcAddrJsonArray.add(element); + LOG.debug("set validbit for ipsrc :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchIpv4Addr, VtnServiceIpcConsts.V_MASK); + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR_MASK) + .toString()); + if (null == ipSrcAddrMaskJsonArray) { + ipSrcAddrMaskJsonArray = new JsonArray(); + + } + ipSrcAddrMaskJsonArray.add(element); + LOG.debug("set validBit for ipv4_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV4_DST + .ordinal()) { + final IpcStruct valDfFlowMatchIpv4Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + if (null == ipDstAddrJsonArray) { + ipDstAddrJsonArray = new JsonArray(); + } + ipDstAddrJsonArray.add(element); + LOG.debug("set validbit for ipdst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchIpv4Addr, VtnServiceIpcConsts.V_MASK); + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR_MASK) + .toString()); + if (null == ipDstAddrMaskJsonArray) { + ipDstAddrMaskJsonArray = new JsonArray(); + } + ipDstAddrMaskJsonArray.add(element); + LOG.debug("set validbit for ipv4_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV6_SRC + .ordinal()) { + + final IpcStruct valdfflowmatchIpv6Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR).toString()); + if (null == ipV6SrcAddrJsonArray) { + ipV6SrcAddrJsonArray = new JsonArray(); + } + ipV6SrcAddrJsonArray.add(element); + LOG.debug("set validbit for ipv6src :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valdfflowmatchIpv6Addr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR_MASK) + .toString()); + if (null == ipV6SrcAddrMaskJsonArray) { + ipV6SrcAddrMaskJsonArray = new JsonArray(); + } + ipV6SrcAddrMaskJsonArray.add(element); + LOG.debug("set validbit for ipv6_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV6_DST + .ordinal()) { + + final IpcStruct valdfflowmatchIpv6Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR).toString()); + if (null == ipV6DstAddJsonArray) { + ipV6DstAddJsonArray = new JsonArray(); + } + ipV6DstAddJsonArray.add(element); + LOG.debug("set validbit for ipv6dst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valdfflowmatchIpv6Addr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR_MASK) + .toString()); + if (null == ipV6DstAddrMaskJsonArray) { + ipV6DstAddrMaskJsonArray = new JsonArray(); + } + ipV6DstAddrMaskJsonArray.add(element); + LOG.debug("set validbit for ipv6_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_TP_SRC + .ordinal()) { + + final IpcStruct valDfFlowMatchTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == l4SrcPortIcmpTypeJsonArray) { + l4SrcPortIcmpTypeJsonArray = new JsonArray(); + } + l4SrcPortIcmpTypeJsonArray.add(element); + + LOG.debug("set validbit for tpsrc :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchTpPort, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT_MASK) + .toString()); + if (null == l4SrcPortIcmpTypeMaskJsonArray) { + l4SrcPortIcmpTypeMaskJsonArray = new JsonArray(); + } + l4SrcPortIcmpTypeMaskJsonArray.add(element); + LOG.debug("set validbit for tpsrcmask :" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_TP_DST + .ordinal()) { + + final IpcStruct valDfFlowMatchTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == l4DstPortIcmpTypeJsonArray) { + l4DstPortIcmpTypeJsonArray = new JsonArray(); + } + l4DstPortIcmpTypeJsonArray.add(element); + LOG.debug("set validbit for tpdst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchTpPort, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT_MASK) + .toString()); + + if (null == l4DstPortIcmpTypeMaskJsonArray) { + l4DstPortIcmpTypeMaskJsonArray = new JsonArray(); + } + l4DstPortIcmpTypeMaskJsonArray.add(element); + } + } else { + LOG.debug("Type : invalid"); + } + + } + if (null != inportJsonArray) { + match.add(VtnServiceJsonConsts.INPORT, inportJsonArray); + } + if (null != dstMacJsonArray) { + match.add(VtnServiceJsonConsts.MACDSTADDR, dstMacJsonArray); + } + if (dstMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.MACDSTADDR_MASK, dstMaskJsonArray); + } + if (srcMacJsonArray != null) { + match.add(VtnServiceJsonConsts.MACSRCADDR, srcMacJsonArray); + } + if (srcMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.MACSRCADDR_MASK, srcMaskJsonArray); + } + if (macEtherTypeJsonArray != null) { + match.add(VtnServiceJsonConsts.MACETHERTYPE, macEtherTypeJsonArray); + } + if (vlanIdJsonArray != null) { + match.add(VtnServiceJsonConsts.VLAN_ID, vlanIdJsonArray); + } + if (vlanPriorityJsonArray != null) { + match.add(VtnServiceJsonConsts.VLAN_PRIORITY, vlanPriorityJsonArray); + } + if (ipTosJsonArray != null) { + match.add(VtnServiceJsonConsts.IPTOS, ipTosJsonArray); + } + if (ipProtoJsonArray != null) { + match.add(VtnServiceJsonConsts.IPPROTO, ipProtoJsonArray); + } + if (ipSrcAddrJsonArray != null) { + match.add(VtnServiceJsonConsts.IPSRCADDR, ipSrcAddrJsonArray); + } + if (ipSrcAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPSRCADDR_MASK, + ipSrcAddrMaskJsonArray); + } + if (ipDstAddrJsonArray != null) { + match.add(VtnServiceJsonConsts.IPDSTADDR, ipDstAddrJsonArray); + } + if (ipDstAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPDSTADDR_MASK, + ipDstAddrMaskJsonArray); + } + if (ipV6SrcAddrJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6SRCADDR, ipV6SrcAddrJsonArray); + } + if (ipV6SrcAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6SRCADDR_MASK, + ipV6SrcAddrMaskJsonArray); + } + if (ipV6DstAddJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6DSTADDR, ipV6DstAddJsonArray); + } + if (ipV6DstAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6DSTADDR_MASK, + ipV6DstAddrMaskJsonArray); + } + if (l4SrcPortIcmpTypeJsonArray != null) { + match.add(VtnServiceJsonConsts.L4SRCPORT_ICMPTYPE, + l4SrcPortIcmpTypeJsonArray); + } + if (l4SrcPortIcmpTypeMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.L4SRCPORT_ICMPTYPE_MASK, + l4SrcPortIcmpTypeMaskJsonArray); + } + if (l4DstPortIcmpTypeJsonArray != null) { + match.add(VtnServiceJsonConsts.L4DSTPORT_ICMPTYPE, + l4DstPortIcmpTypeJsonArray); + } + if (l4DstPortIcmpTypeMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.L4DSTPORT_ICMPTYPE_MASK, + l4DstPortIcmpTypeMaskJsonArray); + } + LOG.debug("match Json :" + match); + LOG.trace("getDataFlowMatchInfo completed"); + return match; + } + + /** + * This method is Used to generate Action Flow info Json + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + private JsonObject getDataFlowActionInfo( + final IpcDataUnit[] responsePacket, final AtomicInteger index, + final JsonObject controlerFlow, + final IpcStruct valVtnDataFlowCmnStruct) { + LOG.trace("getDataFlowActionInfo started"); + final int actionCount = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valVtnDataFlowCmnStruct, + VtnServiceIpcConsts.ACTION_COUNT)); + LOG.debug("acount_count:" + actionCount); + final JsonObject action = new JsonObject(); + JsonArray outputPortJsonArray = null; + JsonArray enqueuePortJsonArray = null; + JsonArray queueIdJsonArray = null; + JsonArray setDstMacAddrJsonArray = null; + JsonArray setSrcMAcAddrJsonArray = null; + JsonArray setVlanIdJsonArray = null; + JsonArray setVlanPriorityJsonArray = null; + JsonArray setDstAddrJsonArray = null; + JsonArray setSrcIpAddrJsonArray = null; + JsonArray setIpTosJsonArray = null; + JsonArray setDstL4PortIcmpTypeJsonArray = null; + JsonArray setSrcL4PortIcmpTypeJsonArray = null; + JsonArray setIpV6DstAddrJsonArray = null; + JsonArray setIpv6SrcAddrJsonArray = null; + JsonArray setStripVlanJsonArray = null; + JsonPrimitive element = null; + int actionType; + for (int i = 0; i < actionCount; i++) { + + final IpcStruct valDataFlowAction = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + actionType = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDataFlowAction, + VtnServiceIpcConsts.ACTION_TYPE)); + LOG.debug("actiontype :" + actionType); + if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_OUTPUT + .ordinal()) { + + final IpcStruct valDfFlowActionOutputPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowActionOutputPort, + VtnServiceIpcConsts.OUTPUT_PORT).toString()); + if (null == outputPortJsonArray) { + outputPortJsonArray = new JsonArray(); + } + outputPortJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_ENQUEUE + .ordinal()) { + + final IpcStruct valDfFlowActionEnqueuePort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowActionEnqueuePort, + VtnServiceIpcConsts.OUTPUT_PORT).toString()); + if (null == enqueuePortJsonArray) { + enqueuePortJsonArray = new JsonArray(); + } + enqueuePortJsonArray.add(element); + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionEnqueuePort, + VtnServiceIpcConsts.ENQUEUE_ID).toString()); + if (null == queueIdJsonArray) { + queueIdJsonArray = new JsonArray(); + + } + queueIdJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_DL_DST + .ordinal()) { + final IpcStruct valDfFlowActionSetDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowActionSetDlAddr, VtnServiceIpcConsts.DL_ADDR) + .toString()); + if (null == setDstMacAddrJsonArray) { + setDstMacAddrJsonArray = new JsonArray(); + } + setDstMacAddrJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_DL_SRC + .ordinal()) { + final IpcStruct valDfFlowActionSetDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowActionSetDlAddr, VtnServiceIpcConsts.DL_ADDR) + .toString()); + if (null == setSrcMAcAddrJsonArray) { + setSrcMAcAddrJsonArray = new JsonArray(); + } + setSrcMAcAddrJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_VLAN_ID + .ordinal()) { + final IpcStruct valDfFlowActionSetVlanId = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionSetVlanId, + VtnServiceIpcConsts.VLAN_ID).toString()); + + if (null == setVlanIdJsonArray) { + setVlanIdJsonArray = new JsonArray(); + + } + if(element.getAsString().equals(VtnServiceJsonConsts.VLAN_ID_65535)){ + element = new JsonPrimitive(VtnServiceJsonConsts.EMPTY); + setVlanIdJsonArray.add(element); + }else{ + setVlanIdJsonArray.add(element); + } + + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_VLAN_PCP + .ordinal()) { + final IpcStruct valDfFlowActionSetVlanPcp = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint8Value(valDfFlowActionSetVlanPcp, + VtnServiceIpcConsts.VLAN_PCP).toString()); + if (null == setVlanPriorityJsonArray) { + setVlanPriorityJsonArray = new JsonArray(); + + } + setVlanPriorityJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_STRIP_VLAN + .ordinal()) { + element = new JsonPrimitive(VtnServiceJsonConsts.TRUE); + if (null == setStripVlanJsonArray) { + setStripVlanJsonArray = new JsonArray(); + } + setStripVlanJsonArray.add(element); + index.getAndIncrement(); + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV4_DST + .ordinal()) { + final IpcStruct valDfFlowActionSetIpv4 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowActionSetIpv4, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + + if (null == setDstAddrJsonArray) { + setDstAddrJsonArray = new JsonArray(); + + } + setDstAddrJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV4_SRC + .ordinal()) { + final IpcStruct valDfFlowActionSetIpv4 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowActionSetIpv4, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + if (null == setSrcIpAddrJsonArray) { + setSrcIpAddrJsonArray = new JsonArray(); + } + setSrcIpAddrJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IP_TOS + .ordinal()) { + final IpcStruct valDfFlowActionSetIpTos = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + final String hexString = + UnsignedInteger.toHexString(Long + .valueOf(IpcDataUnitWrapper + .getIpcStructUint8Value( + valDfFlowActionSetIpTos, + VtnServiceIpcConsts.IP_TOS))); + element = new JsonPrimitive("0x" + hexString); + + if (null == setIpTosJsonArray) { + setIpTosJsonArray = new JsonArray(); + } + setIpTosJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_TP_DST + .ordinal()) { + final IpcStruct valDfFlowActionSetTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionSetTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == setDstL4PortIcmpTypeJsonArray) { + setDstL4PortIcmpTypeJsonArray = new JsonArray(); + } + setDstL4PortIcmpTypeJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_TP_SRC + .ordinal()) { + final IpcStruct valDfFlowActionSetTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionSetTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == setSrcL4PortIcmpTypeJsonArray) { + setSrcL4PortIcmpTypeJsonArray = new JsonArray(); + } + setSrcL4PortIcmpTypeJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV6_DST + .ordinal()) { + + final IpcStruct valDfFlowActionSetIpv6 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive( + IpcDataUnitWrapper.getIpcStructIpv6Value( + valDfFlowActionSetIpv6, + VtnServiceIpcConsts.IPV6_ADDR)); + if (null == setIpV6DstAddrJsonArray) { + setIpV6DstAddrJsonArray = new JsonArray(); + } + setIpV6DstAddrJsonArray.add(element); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV6_SRC + .ordinal()) { + + final IpcStruct valDfFlowActionSetIpv6 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive( + IpcDataUnitWrapper.getIpcStructIpv6Value( + valDfFlowActionSetIpv6, + VtnServiceIpcConsts.IPV6_ADDR)); + if (null == setIpv6SrcAddrJsonArray) { + setIpv6SrcAddrJsonArray = new JsonArray(); + } + setIpv6SrcAddrJsonArray.add(element); + + } else { + LOG.debug("Type : invalid"); + } + } + if (outputPortJsonArray != null) { + action.add(VtnServiceJsonConsts.OUTPUTPORT, outputPortJsonArray); + } + if (enqueuePortJsonArray != null) { + action.add(VtnServiceJsonConsts.ENQUEUEPORT, enqueuePortJsonArray); + } + if (queueIdJsonArray != null) { + action.add(VtnServiceJsonConsts.QUEUE_ID, queueIdJsonArray); + } + if (setDstMacAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETMACDSTADDR, + setDstMacAddrJsonArray); + } + if (setSrcMAcAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETMACSRCADDR, + setSrcMAcAddrJsonArray); + } + if (setVlanIdJsonArray != null) { + action.add(VtnServiceJsonConsts.SETVLAN_ID, setVlanIdJsonArray); + } + if (setVlanPriorityJsonArray != null) { + action.add(VtnServiceJsonConsts.SETVLAN_PRIORITY, + setVlanPriorityJsonArray); + } + if (setStripVlanJsonArray != null) { + action.add(VtnServiceJsonConsts.STRIPVLAN, setStripVlanJsonArray); + } + if (setDstAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPDSTADDR, setDstAddrJsonArray); + } + if (setSrcIpAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPSRCADDR, setSrcIpAddrJsonArray); + } + if (setIpTosJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPTOS, setIpTosJsonArray); + } + if (setDstL4PortIcmpTypeJsonArray != null) { + action.add(VtnServiceJsonConsts.SETL4DSTPORT_ICMPTYPE, + setDstL4PortIcmpTypeJsonArray); + } + if (setSrcL4PortIcmpTypeJsonArray != null) { + action.add(VtnServiceJsonConsts.SETL4SRCPORT_ICMPTYPE, + setSrcL4PortIcmpTypeJsonArray); + } + if (setIpV6DstAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPV6DSTADDR, + setIpV6DstAddrJsonArray); + } + if (setIpv6SrcAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPV6SRCADDR, + setIpv6SrcAddrJsonArray); + } + LOG.debug("action json:" + action); + return action; + } + } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcPhysicalResponseFactory.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcPhysicalResponseFactory.java index 7c10d09d..62c3a75e 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcPhysicalResponseFactory.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/IpcPhysicalResponseFactory.java @@ -1,18 +1,23 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.javaapi.ipc.conversion; +import java.util.concurrent.atomic.AtomicInteger; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; import org.opendaylight.vtn.core.ipc.IpcDataUnit; import org.opendaylight.vtn.core.ipc.IpcStruct; import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.core.util.UnsignedInteger; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceIpcConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; @@ -803,6 +808,7 @@ public class IpcPhysicalResponseFactory { .getIpcStructIpv4Value(valControllerStruct, VtnServiceIpcConsts.IP_ADDRESS)); } + validBit = valControllerStruct.getByte(VtnServiceIpcConsts.VALID, UncPhysicalStructIndexEnum.UpplValCtrIndex.kIdxType.ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID @@ -916,9 +922,8 @@ public class IpcPhysicalResponseFactory { * @return */ public JsonObject getSwitchPortResponse(final IpcDataUnit[] responsePacket, - final JsonObject requestBody, final String getType) { + final JsonObject requestBody) { LOG.trace("Start getSwitchPortResponse"); - LOG.debug("getType: " + getType); /* * operation type will be required to resolve the response type */ @@ -926,31 +931,32 @@ public class IpcPhysicalResponseFactory { if (requestBody.has(VtnServiceJsonConsts.OP)) { opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); } - String rootJsonName = null; + final String rootJsonName = VtnServiceJsonConsts.PORTS; final JsonObject root = new JsonObject(); JsonObject switchPort = null; - JsonArray switchPortArray = null; - if (getType.equals(VtnServiceJsonConsts.SHOW)) { - rootJsonName = VtnServiceJsonConsts.PORT; - } else { - rootJsonName = VtnServiceJsonConsts.PORTS; - switchPortArray = new JsonArray(); - } + final JsonArray switchPortArray = new JsonArray(); LOG.debug("Json Name :" + rootJsonName); if (opType.equalsIgnoreCase(VtnServiceJsonConsts.COUNT)) { /* * Create Json for Count */ switchPort = new JsonObject(); - switchPort - .addProperty( - VtnServiceJsonConsts.COUNT, - IpcDataUnitWrapper - .getIpcDataUnitValue(responsePacket[VtnServiceConsts.IPC_COUNT_INDEX])); + int count = VtnServiceJsonConsts.VAL_1; + if (!requestBody.has(VtnServiceJsonConsts.PORTNAME)) { + count = Integer + .parseInt(IpcDataUnitWrapper + .getIpcDataUnitValue(responsePacket[VtnServiceConsts.IPC_COUNT_INDEX])); + } else { + if (responsePacket.length == 0) { + count = responsePacket.length; + } + } + switchPort.addProperty(VtnServiceJsonConsts.COUNT, count); root.add(rootJsonName, switchPort); } else { IpcStruct valPortStruct = null; IpcStruct valPortStStruct = null; + IpcStruct valPortStatsStruct = null; // json array will be required for list type of cases for (int index = 0; index < responsePacket.length; index++) { @@ -970,242 +976,267 @@ public class IpcPhysicalResponseFactory { keySwitchPortStruct, VtnServiceIpcConsts.PORT_ID)); - if (!opType.equalsIgnoreCase(VtnServiceJsonConsts.NORMAL) - || getType.equalsIgnoreCase(VtnServiceJsonConsts.SHOW)) { + if (!opType.equalsIgnoreCase(VtnServiceJsonConsts.NORMAL)) { LOG.debug("Case : not Normal or Show"); /* * this part is always required in Show, but not required in * List + "normal" op type */ LOG.debug("targetdb : State"); - valPortStStruct = (IpcStruct) responsePacket[index++]; + valPortStatsStruct = (IpcStruct) responsePacket[index++]; + if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + // getting inner structure from Port Stats struct by + // checking valid + // bit. + validBit = valPortStatsStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatSt + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + valPortStStruct = IpcDataUnitWrapper + .getInnerIpcStruct(valPortStatsStruct, + VtnServiceIpcConsts.PORT_ST_VAL); + } + } else { + valPortStStruct = valPortStatsStruct; + } - // using valPortStStruct for other parameters - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortOperStatus - .ordinal()); + if (valPortStStruct != null) { - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - if (IpcDataUnitWrapper - .getIpcStructUint8Value(valPortStStruct, - VtnServiceIpcConsts.OPERSTATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplPortOperStatus.UPPL_PORT_OPER_UP - .getValue())) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.OPERSTATUS, - VtnServiceJsonConsts.UP); - } else if (IpcDataUnitWrapper - .getIpcStructUint8Value(valPortStStruct, - VtnServiceIpcConsts.OPERSTATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplPortOperStatus.UPPL_PORT_OPER_DOWN - .getValue())) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.OPERSTATUS, - VtnServiceJsonConsts.DOWN); - } else if (IpcDataUnitWrapper - .getIpcStructUint8Value(valPortStStruct, - VtnServiceIpcConsts.OPERSTATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplPortOperStatus.UPPL_PORT_OPER_UNKNOWN - .getValue())) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.OPERSTATUS, - VtnServiceJsonConsts.UNKNOWN); - } else { - LOG.debug("Operstatus : invalid"); + // getting inner structure from St struct by checking + // valid bit. + validBit = valPortStStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortSt + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + valPortStruct = IpcDataUnitWrapper + .getInnerIpcStruct(valPortStStruct, + VtnServiceIpcConsts.PORT); + validBit = valPortStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortNumber + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switchPort, + VtnServiceJsonConsts.PORT_ID, + IpcDataUnitWrapper + .getIpcStructUint32Value( + valPortStruct, + VtnServiceIpcConsts.PORT_NUMBER)); + } + + validBit = valPortStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortDescription + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switchPort, + VtnServiceJsonConsts.DESCRIPTION, + IpcDataUnitWrapper + .getIpcStructUint8ArrayValue( + valPortStruct, + VtnServiceIpcConsts.DESCRIPTION)); + } + validBit = valPortStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortAdminStatus + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + if (IpcDataUnitWrapper + .getIpcStructUint8Value( + valPortStruct, + VtnServiceJsonConsts.ADMIN_STATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplPortAdminStatus.UPPL_PORT_ADMIN_UP + .getValue())) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.ADMINSTATUS, + VtnServiceJsonConsts.UP); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value( + valPortStruct, + VtnServiceJsonConsts.ADMIN_STATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplPortAdminStatus.UPPL_PORT_ADMIN_DOWN + .getValue())) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.ADMINSTATUS, + VtnServiceJsonConsts.DOWN); + } else { + LOG.debug("Adminstatus : invalid"); + } + LOG.debug("AdminStatus :" + + IpcDataUnitWrapper + .getIpcStructUint8Value( + valPortStruct, + VtnServiceJsonConsts.ADMIN_STATUS)); + } + validBit = valPortStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortTrunkAllowedVlan + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switchPort, + VtnServiceJsonConsts.TRUNK_ALLOWED_VLAN, + IpcDataUnitWrapper + .getIpcStructUint16Value( + valPortStruct, + VtnServiceIpcConsts.TRUNK_ALLOWED_VLAN)); + } } - LOG.debug("Operstatus :" - + IpcDataUnitWrapper.getIpcStructUint8Value( - valPortStStruct, - VtnServiceIpcConsts.OPERSTATUS)); - } - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortMacAddress - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.MACADDR, - IpcDataUnitWrapper.getMacAddress( - valPortStStruct, - VtnServiceIpcConsts.PORT_MAC_ADDR)); - } - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortSpeed - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.SPEED, - IpcDataUnitWrapper.getIpcStructUint64Value( - valPortStStruct, - VtnServiceIpcConsts.SPEED)); - } - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortDuplex - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - final String duplexVal = IpcDataUnitWrapper - .getIpcStructUint8Value(valPortStStruct, - VtnServiceIpcConsts.DUPLEX); - if (null != duplexVal - && !duplexVal.isEmpty() - && duplexVal - .equalsIgnoreCase(String - .valueOf(UncPhysicalStructIndexEnum.UpplPortDuplex.UPPL_PORT_DUPLEX_HALF - .getValue()))) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.DUPLEX, - VtnServiceIpcConsts.HALF); - } else if (null != duplexVal - && !duplexVal.isEmpty() - && duplexVal - .equalsIgnoreCase(String - .valueOf(UncPhysicalStructIndexEnum.UpplPortDuplex.UPPL_PORT_DUPLEX_FULL - .getValue()))) { + // using valPortStStruct for other parameters + validBit = valPortStStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortOperStatus + .ordinal()); + + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + if (IpcDataUnitWrapper + .getIpcStructUint8Value(valPortStStruct, + VtnServiceIpcConsts.OPERSTATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplPortOperStatus.UPPL_PORT_OPER_UP + .getValue())) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.OPERSTATUS, + VtnServiceJsonConsts.UP); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(valPortStStruct, + VtnServiceIpcConsts.OPERSTATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplPortOperStatus.UPPL_PORT_OPER_DOWN + .getValue())) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.OPERSTATUS, + VtnServiceJsonConsts.DOWN); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(valPortStStruct, + VtnServiceIpcConsts.OPERSTATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplPortOperStatus.UPPL_PORT_OPER_UNKNOWN + .getValue())) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.OPERSTATUS, + VtnServiceJsonConsts.UNKNOWN); + } else { + LOG.debug("Operstatus : invalid"); + } + LOG.debug("Operstatus :" + + IpcDataUnitWrapper + .getIpcStructUint8Value( + valPortStStruct, + VtnServiceIpcConsts.OPERSTATUS)); + } + validBit = valPortStStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortMacAddress + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.DUPLEX, - VtnServiceIpcConsts.FULL); - } else { - LOG.debug("Duplex : invalid"); + VtnServiceJsonConsts.MACADDR, + IpcDataUnitWrapper.getMacAddress( + valPortStStruct, + VtnServiceIpcConsts.PORT_MAC_ADDR)); } - LOG.debug("Duplex :" - + IpcDataUnitWrapper.getIpcStructUint8Value( - valPortStStruct, - VtnServiceIpcConsts.DUPLEX)); - } - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortAlarmsStatus - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.ALARMSSTATUS, - IpcDataUnitWrapper.getIpcStructUint64HexaValue( - valPortStStruct, - VtnServiceIpcConsts.ALARM_STATUS)); - } - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortDirection - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - final String direction = IpcDataUnitWrapper - .getIpcStructUint8Value(valPortStStruct, - VtnServiceIpcConsts.DIRECTION); - if (null != direction - && !direction.isEmpty() - && direction - .equals(String - .valueOf(UncPhysicalStructIndexEnum.UpplPortDirection.UPPL_PORT_DIR_INTERNEL - .getValue()))) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.DIRECTION, - VtnServiceJsonConsts.DIRECTION_INTERNAL); - } else if (null != direction - && !direction.isEmpty() - && direction - .equals(String - .valueOf(UncPhysicalStructIndexEnum.UpplPortDirection.UPPL_PORT_DIR_EXTERNAL - .getValue()))) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.DIRECTION, - VtnServiceJsonConsts.DIRECTION_EXTERNAL); - } else if (null != direction - && !direction.isEmpty() - && direction - .equals(String - .valueOf(UncPhysicalStructIndexEnum.UpplPortDirection.UPPL_PORT_DIR_UNKNOWN - .getValue()))) { + validBit = valPortStStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortSpeed + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.DIRECTION, - VtnServiceJsonConsts.DIRECTION_UNKNOWN); - } else { - LOG.debug("Direction : invalid"); + VtnServiceJsonConsts.SPEED, + IpcDataUnitWrapper.getIpcStructUint64Value( + valPortStStruct, + VtnServiceIpcConsts.SPEED)); } - LOG.debug("Direction :" - + IpcDataUnitWrapper.getIpcStructUint8Value( - valPortStStruct, - VtnServiceIpcConsts.DIRECTION)); - } - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortLogicalPortId - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.LOGICAL_PORT_ID, - IpcDataUnitWrapper.getIpcStructUint8ArrayValue( - valPortStStruct, - VtnServiceIpcConsts.LOGICAL_PORT_ID)); - } - // getting inner structure from St struct by checking valid - // bit. - validBit = valPortStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortSt - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - valPortStruct = IpcDataUnitWrapper.getInnerIpcStruct( - valPortStStruct, VtnServiceIpcConsts.PORT); - validBit = valPortStruct + validBit = valPortStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortNumber + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortDuplex .ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.PORT_ID, - IpcDataUnitWrapper.getIpcStructUint32Value( - valPortStruct, - VtnServiceIpcConsts.PORT_NUMBER)); + final String duplexVal = IpcDataUnitWrapper + .getIpcStructUint8Value(valPortStStruct, + VtnServiceIpcConsts.DUPLEX); + if (null != duplexVal + && !duplexVal.isEmpty() + && duplexVal + .equalsIgnoreCase(String + .valueOf(UncPhysicalStructIndexEnum.UpplPortDuplex.UPPL_PORT_DUPLEX_HALF + .getValue()))) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.DUPLEX, + VtnServiceIpcConsts.HALF); + } else if (null != duplexVal + && !duplexVal.isEmpty() + && duplexVal + .equalsIgnoreCase(String + .valueOf(UncPhysicalStructIndexEnum.UpplPortDuplex.UPPL_PORT_DUPLEX_FULL + .getValue()))) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.DUPLEX, + VtnServiceIpcConsts.FULL); + } else { + LOG.debug("Duplex : invalid"); + } + LOG.debug("Duplex :" + + IpcDataUnitWrapper + .getIpcStructUint8Value( + valPortStStruct, + VtnServiceIpcConsts.DUPLEX)); } - - validBit = valPortStruct + validBit = valPortStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortDescription + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortAlarmsStatus .ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() @@ -1214,52 +1245,65 @@ public class IpcPhysicalResponseFactory { setValueToJsonObject( validBit, switchPort, - VtnServiceJsonConsts.DESCRIPTION, + VtnServiceJsonConsts.ALARMSSTATUS, IpcDataUnitWrapper - .getIpcStructUint8ArrayValue( - valPortStruct, - VtnServiceIpcConsts.DESCRIPTION)); + .getIpcStructUint64HexaValue( + valPortStStruct, + VtnServiceIpcConsts.ALARM_STATUS)); } - validBit = valPortStruct + validBit = valPortStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortAdminStatus + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortDirection .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - if (IpcDataUnitWrapper - .getIpcStructUint8Value(valPortStruct, - VtnServiceJsonConsts.ADMIN_STATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplPortAdminStatus.UPPL_PORT_ADMIN_UP - .getValue())) { + final String direction = IpcDataUnitWrapper + .getIpcStructUint8Value(valPortStStruct, + VtnServiceIpcConsts.DIRECTION); + if (null != direction + && !direction.isEmpty() + && direction + .equals(String + .valueOf(UncPhysicalStructIndexEnum.UpplPortDirection.UPPL_PORT_DIR_INTERNEL + .getValue()))) { setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.ADMINSTATUS, - VtnServiceJsonConsts.UP); - } else if (IpcDataUnitWrapper - .getIpcStructUint8Value(valPortStruct, - VtnServiceJsonConsts.ADMIN_STATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplPortAdminStatus.UPPL_PORT_ADMIN_DOWN - .getValue())) { + VtnServiceJsonConsts.DIRECTION, + VtnServiceJsonConsts.DIRECTION_INTERNAL); + } else if (null != direction + && !direction.isEmpty() + && direction + .equals(String + .valueOf(UncPhysicalStructIndexEnum.UpplPortDirection.UPPL_PORT_DIR_EXTERNAL + .getValue()))) { setValueToJsonObject(validBit, switchPort, - VtnServiceJsonConsts.ADMINSTATUS, - VtnServiceJsonConsts.DOWN); + VtnServiceJsonConsts.DIRECTION, + VtnServiceJsonConsts.DIRECTION_EXTERNAL); + } else if (null != direction + && !direction.isEmpty() + && direction + .equals(String + .valueOf(UncPhysicalStructIndexEnum.UpplPortDirection.UPPL_PORT_DIR_UNKNOWN + .getValue()))) { + setValueToJsonObject(validBit, switchPort, + VtnServiceJsonConsts.DIRECTION, + VtnServiceJsonConsts.DIRECTION_UNKNOWN); } else { - LOG.debug("Adminstatus : invalid"); + LOG.debug("Direction : invalid"); } - LOG.debug("AdminStatus :" + LOG.debug("Direction :" + IpcDataUnitWrapper .getIpcStructUint8Value( - valPortStruct, - VtnServiceJsonConsts.ADMIN_STATUS)); + valPortStStruct, + VtnServiceIpcConsts.DIRECTION)); } - validBit = valPortStruct + validBit = valPortStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortTrunkAllowedVlan + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortLogicalPortId .ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() @@ -1268,29 +1312,30 @@ public class IpcPhysicalResponseFactory { setValueToJsonObject( validBit, switchPort, - VtnServiceJsonConsts.TRUNK_ALLOWED_VLAN, + VtnServiceJsonConsts.LOGICAL_PORT_ID, IpcDataUnitWrapper - .getIpcStructUint16Value( - valPortStruct, - VtnServiceIpcConsts.TRUNK_ALLOWED_VLAN)); + .getIpcStructUint8ArrayValue( + valPortStStruct, + VtnServiceIpcConsts.LOGICAL_PORT_ID)); + } + + if (opType + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + LOG.debug("op : detail"); + final JsonObject vtnStationStats = createPortStatisticsJson(valPortStatsStruct); + switchPort.add(VtnServiceJsonConsts.STATISTICS, + vtnStationStats); } } } else { index++; } - if (null != switchPortArray) { - switchPortArray.add(switchPort); - } + switchPortArray.add(switchPort); } /* - * finally add either array or single object to root json object and - * return the same. + * finally add array to root json object and return the same. */ - if (null != switchPortArray) { - root.add(rootJsonName, switchPortArray); - } else { - root.add(rootJsonName, switchPort); - } + root.add(rootJsonName, switchPortArray); } LOG.debug("Response Json: " + root.toString()); LOG.trace("Complete getSwitchPortResponse"); @@ -1298,50 +1343,234 @@ public class IpcPhysicalResponseFactory { } /** - * Gets the Switch port member response. + * Create Json Port Statistics information * - * @param responsePacket - * the response packet - * @param switchPort - * the switchPort Json Object - * @param getType - * the operation type - * @return the domain logical port member response + * @param createPortStatisticsJson + * @return */ - public JsonObject getSwitchPortMemberResponse( - final IpcDataUnit[] responsePacket, final JsonObject switchPort, - final String getType) { - LOG.trace("Start getSwitchPortMemberResponse"); - final JsonObject switchPortNeighbour = new JsonObject(); - int index = 0; + private JsonObject createPortStatisticsJson(final IpcStruct valPortStats) { + LOG.trace("Start createPortStatisticsJson"); byte validBit; - if (responsePacket != null && responsePacket.length > 0) { - IpcStruct valPortStNeighbourStruct = null; - LOG.debug("getType: " + getType); - // skipping key type - LOG.debug("Skip key type: no use"); - index++; - // skipping key structure - LOG.debug("Skip key structure: no use"); - index++; - valPortStNeighbourStruct = (IpcStruct) responsePacket[index++]; - validBit = valPortStNeighbourStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValPortNeighborIndex.kIdxPortConnectedSwitchId - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switchPortNeighbour, - VtnServiceJsonConsts.CONNECTED_SWITCH_ID, - IpcDataUnitWrapper.getIpcStructUint8ArrayValue( - valPortStNeighbourStruct, - VtnServiceIpcConsts.CONNECTED_SWITCH_ID)); - } - validBit = valPortStNeighbourStruct - .getByte( + final JsonObject switchPortStats = new JsonObject(); + + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatRxPackets + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.RX_PACKETS, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.RX_PACKETS)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatRxBytes + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.RX_BYTES, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.RX_BYTES)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatRxDropped + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.RX_DROPPED, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.RX_DROPPED)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatRxErrors + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.RX_ERRORS, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.RX_ERRORS)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatRxFrameErr + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.RX_FRAMEERR, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.RX_FRAME_ERR)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatRxCrcErr + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.RX_CRCERR, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.RX_CRC_ERRS)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatRxOverErr + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.RX_OVERERR, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.RX_OVER_ERR)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatTxPackets + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.TX_PACKETS, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.TX_PACKETS)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatTxBytes + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.TX_BYTES, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.TX_BYTES)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatTxDropped + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.TX_DROPPED, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.TX_DROPPED)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatTxErrors + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.TX_ERRORS, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.TX_ERRORS)); + } + validBit = valPortStats + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.upplVaPortStatsIndex.kIdxPortStatCollisions + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortStats, + VtnServiceJsonConsts.COLLISIONS, + IpcDataUnitWrapper.getIpcStructUint64Value(valPortStats, + VtnServiceIpcConsts.COLLISIONS)); + } + LOG.debug("Statistics Json: " + switchPortStats.toString()); + LOG.trace("Complete createPortStatisticsJson"); + return switchPortStats; + } + + /** + * Gets the Switch port member response. + * + * @param responsePacket + * the response packet + * @param switchPort + * the switchPort Json Object + * @param getType + * the operation type + * @return the domain logical port member response + */ + public JsonObject getSwitchPortMemberResponse( + final IpcDataUnit[] responsePacket, final JsonObject switchPort, + final String getType) { + LOG.trace("Start getSwitchPortMemberResponse"); + final JsonObject switchPortNeighbour = new JsonObject(); + int index = 0; + byte validBit; + if (responsePacket != null && responsePacket.length > 0) { + IpcStruct valPortStNeighbourStruct = null; + LOG.debug("getType: " + getType); + // skipping key type + LOG.debug("Skip key type: no use"); + index++; + // skipping key structure + LOG.debug("Skip key structure: no use"); + index++; + valPortStNeighbourStruct = (IpcStruct) responsePacket[index++]; + validBit = valPortStNeighbourStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortNeighborIndex.kIdxPortConnectedSwitchId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, switchPortNeighbour, + VtnServiceJsonConsts.CONNECTED_SWITCH_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valPortStNeighbourStruct, + VtnServiceIpcConsts.CONNECTED_SWITCH_ID)); + } + validBit = valPortStNeighbourStruct + .getByte( VtnServiceIpcConsts.VALID, UncPhysicalStructIndexEnum.UpplValPortNeighborIndex.kIdxPortConnectedPortId .ordinal()); @@ -1379,11 +1608,10 @@ public class IpcPhysicalResponseFactory { * @return the link response */ public JsonObject getLinkResponse(final IpcDataUnit[] responsePacket, - final JsonObject requestBody, final String getType) { + final JsonObject requestBody) { LOG.trace("Start getLinkResponse"); final JsonObject root = new JsonObject(); - JsonArray linksArray = null; - LOG.debug("getType: " + getType); + final JsonArray linksArray = new JsonArray(); /* * operation type will be required to resolve the response type */ @@ -1391,18 +1619,7 @@ public class IpcPhysicalResponseFactory { if (requestBody.has(VtnServiceJsonConsts.OP)) { opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); } - String rootJsonName; - /* - * get type (show or list) will be required to resolve root json name - * here it will be link for show and links for list - */ - if (getType.equals(VtnServiceJsonConsts.SHOW)) { - rootJsonName = VtnServiceJsonConsts.LINK; - } else { - rootJsonName = VtnServiceJsonConsts.LINKS; - // json array will be required for list type of cases - linksArray = new JsonArray(); - } + final String rootJsonName = VtnServiceJsonConsts.LINKS; LOG.debug("Json Name :" + rootJsonName); JsonObject links = null; if (opType.equalsIgnoreCase(VtnServiceJsonConsts.COUNT)) { @@ -1410,11 +1627,19 @@ public class IpcPhysicalResponseFactory { * Create Json for Count */ links = new JsonObject(); - links.addProperty( - VtnServiceJsonConsts.COUNT, - IpcDataUnitWrapper - .getIpcDataUnitValue(responsePacket[VtnServiceConsts.IPC_COUNT_INDEX])); + int count = VtnServiceJsonConsts.VAL_1; + if (!requestBody.has(VtnServiceJsonConsts.LINKNAME)) { + count = Integer + .parseInt(IpcDataUnitWrapper + .getIpcDataUnitValue(responsePacket[VtnServiceConsts.IPC_COUNT_INDEX])); + } else { + if (responsePacket.length == 0) { + count = responsePacket.length; + } + } + links.addProperty(VtnServiceJsonConsts.COUNT, count); root.add(rootJsonName, links); + } else { for (int index = 0; index < responsePacket.length; index++) { links = new JsonObject(); @@ -1426,7 +1651,7 @@ public class IpcPhysicalResponseFactory { * add mandatory informations from key structure */ final IpcStruct keyLinkStruct = (IpcStruct) responsePacket[index++]; - String linkname = ""; + String linkname; final String switch1_id = IpcDataUnitWrapper .getIpcStructUint8ArrayValue(keyLinkStruct, VtnServiceIpcConsts.SWITCH_ID1); @@ -1448,8 +1673,7 @@ public class IpcPhysicalResponseFactory { * this part is always required in Show, but not required in * List + "normal" op type */ - if (getType.equals(VtnServiceJsonConsts.SHOW) - || opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { LOG.debug("Case : Show or detail"); links.addProperty(VtnServiceJsonConsts.SWITCH1ID, switch1_id); @@ -1545,21 +1769,13 @@ public class IpcPhysicalResponseFactory { LOG.debug("Operation : normal Skip value struture"); index++; } - // add current json object to array, if it has been initialized - // earlier - if (null != linksArray) { - linksArray.add(links); - } + // add current json object to array + linksArray.add(links); } /* - * finally add either array or single object to root json object and - * return the same. + * finally add array to root json object and return the same. */ - if (null != linksArray) { - root.add(rootJsonName, linksArray); - } else { - root.add(rootJsonName, links); - } + root.add(rootJsonName, linksArray); } LOG.debug("Response Json: " + root.toString()); LOG.trace("Complete getLinkResponse"); @@ -1642,6 +1858,7 @@ public class IpcPhysicalResponseFactory { .getIpcDataUnitValue(responsePacket[VtnServiceConsts.IPC_COUNT_INDEX])); root.add(rootJsonName, switches); } else { + JsonObject statisticsJson = null; for (int index = 0; index < responsePacket.length; index++) { switches = new JsonObject(); @@ -1662,129 +1879,283 @@ public class IpcPhysicalResponseFactory { */ if (getType.equals(VtnServiceJsonConsts.SHOW) || opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + LOG.debug("Case : Show or detail"); - /* - * add valid informations from value structure - */ - final IpcStruct valSwitchStStruct = (IpcStruct) responsePacket[index++]; - validBit = valSwitchStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitch - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - // IpcStruct valSwitchStruct= - // (IpcStruct)valSwitchStStruct.get(VtnServiceIpcConsts.SWITCH_VAL); - final IpcStruct valSwitchStruct = IpcDataUnitWrapper - .getInnerIpcStruct(valSwitchStStruct, - VtnServiceIpcConsts.SWITCH_VAL); - validBit = valSwitchStruct + + IpcStruct valSwitchStStruct = (IpcStruct) responsePacket[index++]; + + if (getType.equals(VtnServiceJsonConsts.SHOW) + && opType + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + LOG.debug("Case : Show with detail"); + final IpcStruct valSwitchStDetailStruct = valSwitchStStruct; + statisticsJson = new JsonObject(); + validBit = valSwitchStDetailStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchDescription + UncPhysicalStructIndexEnum.UpplValSwitchStDetailIndex.kIdxSwitchSt .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - setValueToJsonObject( - validBit, - switches, - VtnServiceJsonConsts.DESCRIPTION, - IpcDataUnitWrapper - .getIpcStructUint8ArrayValue( - valSwitchStruct, - VtnServiceIpcConsts.DESCRIPTION)); + valSwitchStStruct = valSwitchStDetailStruct + .getInner(VtnServiceIpcConsts.SWITCH_ST_VAL); + } else { + valSwitchStStruct = null; } - validBit = valSwitchStruct + + validBit = valSwitchStDetailStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchModel + UncPhysicalStructIndexEnum.UpplValSwitchStDetailIndex.kIdxSwitchStatFlowCount .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.MODEL, - IpcDataUnitWrapper - .getIpcStructUint8ArrayValue( - valSwitchStruct, - VtnServiceJsonConsts.MODEL)); + + setValueToJsonObject(validBit, statisticsJson, + VtnServiceJsonConsts.FLOWCOUNT, + IpcDataUnitWrapper.getIpcStructUint32Value( + valSwitchStDetailStruct, + VtnServiceIpcConsts.FLOW_COUNT)); + } + } + + if (valSwitchStStruct != null) { + /* + * add valid informations from value structure + */ + validBit = valSwitchStStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitch + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + final IpcStruct valSwitchStruct = IpcDataUnitWrapper + .getInnerIpcStruct(valSwitchStStruct, + VtnServiceIpcConsts.SWITCH_VAL); + validBit = valSwitchStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchDescription + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.DESCRIPTION, + IpcDataUnitWrapper + .getIpcStructUint8ArrayValue( + valSwitchStruct, + VtnServiceIpcConsts.DESCRIPTION)); + } + validBit = valSwitchStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchModel + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.MODEL, + IpcDataUnitWrapper + .getIpcStructUint8ArrayValue( + valSwitchStruct, + VtnServiceJsonConsts.MODEL)); + } + validBit = valSwitchStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchAdminStatus + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + if (IpcDataUnitWrapper + .getIpcStructUint8Value( + valSwitchStruct, + VtnServiceJsonConsts.ADMIN_STATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplSwitchAdminStatus.UPPL_SWITCH_ADMIN_DOWN + .getValue())) { + setValueToJsonObject(validBit, switches, + VtnServiceJsonConsts.ADMINSTATUS, + VtnServiceJsonConsts.DOWN); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value( + valSwitchStruct, + VtnServiceJsonConsts.ADMIN_STATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplSwitchAdminStatus.UPPL_SWITCH_ADMIN_UP + .getValue())) { + setValueToJsonObject(validBit, switches, + VtnServiceJsonConsts.ADMINSTATUS, + VtnServiceJsonConsts.UP); + } else { + LOG.debug("Adminstatus : invalid"); + } + LOG.debug("Adminstatus :" + + IpcDataUnitWrapper + .getIpcStructUint8Value( + valSwitchStruct, + VtnServiceJsonConsts.ADMIN_STATUS)); + } + validBit = valSwitchStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchIPAddress + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.IPADDR, + IpcDataUnitWrapper + .getIpcStructIpv4Value( + valSwitchStruct, + VtnServiceIpcConsts.IP_ADDRESS)); + } + validBit = valSwitchStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchIPV6Address + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.IPV6ADDR, + IpcDataUnitWrapper + .getIpcStructIpv6Value( + valSwitchStruct, + VtnServiceIpcConsts.IPV6_ADDRESS)); + } + validBit = valSwitchStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchDomainName + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.DOMAINID, + IpcDataUnitWrapper + .getIpcStructUint8ArrayValue( + valSwitchStruct, + VtnServiceIpcConsts.DOMAIN_NAME)); + } } - validBit = valSwitchStruct + // from switch st structure + validBit = valSwitchStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchAdminStatus + UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchOperStatus .ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { if (IpcDataUnitWrapper - .getIpcStructUint8Value(valSwitchStruct, - VtnServiceJsonConsts.ADMIN_STATUS) + .getIpcStructUint8Value(valSwitchStStruct, + VtnServiceIpcConsts.OPERSTATUS) + .equalsIgnoreCase( + UncPhysicalStructIndexEnum.UpplSwitchOperStatus.UPPL_SWITCH_OPER_UP + .getValue())) { + setValueToJsonObject(validBit, switches, + VtnServiceJsonConsts.OPERSTATUS, + VtnServiceJsonConsts.UP); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(valSwitchStStruct, + VtnServiceIpcConsts.OPERSTATUS) .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplSwitchAdminStatus.UPPL_SWITCH_ADMIN_DOWN + UncPhysicalStructIndexEnum.UpplSwitchOperStatus.UPPL_SWITCH_OPER_DOWN .getValue())) { setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.ADMINSTATUS, + VtnServiceJsonConsts.OPERSTATUS, VtnServiceJsonConsts.DOWN); } else if (IpcDataUnitWrapper - .getIpcStructUint8Value(valSwitchStruct, - VtnServiceJsonConsts.ADMIN_STATUS) + .getIpcStructUint8Value(valSwitchStStruct, + VtnServiceIpcConsts.OPERSTATUS) .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplSwitchAdminStatus.UPPL_SWITCH_ADMIN_UP + UncPhysicalStructIndexEnum.UpplSwitchOperStatus.UPPL_SWITCH_OPER_UNKNOWN .getValue())) { setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.ADMINSTATUS, - VtnServiceJsonConsts.UP); + VtnServiceJsonConsts.OPERSTATUS, + VtnServiceJsonConsts.UNKNOWN); } else { - LOG.debug("Adminstatus : invalid"); + LOG.debug("Operstatus : invalid"); } - LOG.debug("Adminstatus :" + LOG.debug("Operstatus :" + IpcDataUnitWrapper .getIpcStructUint8Value( - valSwitchStruct, - VtnServiceJsonConsts.ADMIN_STATUS)); + valSwitchStStruct, + VtnServiceIpcConsts.OPERSTATUS)); } - validBit = valSwitchStruct + validBit = valSwitchStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchIPAddress + UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchManufacturer .ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.IPADDR, - IpcDataUnitWrapper.getIpcStructIpv4Value( - valSwitchStruct, - VtnServiceIpcConsts.IP_ADDRESS)); + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.MANUFACTURER, + IpcDataUnitWrapper + .getIpcStructUint8ArrayValue( + valSwitchStStruct, + VtnServiceJsonConsts.MANUFACTURER)); } - validBit = valSwitchStruct + validBit = valSwitchStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchIPV6Address + UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchHardware .ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED .ordinal()) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.IPV6ADDR, - IpcDataUnitWrapper.getIpcStructIpv6Value( - valSwitchStruct, - VtnServiceIpcConsts.IPV6_ADDRESS)); + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.HARDWARE, + IpcDataUnitWrapper + .getIpcStructUint8ArrayValue( + valSwitchStStruct, + VtnServiceJsonConsts.HARDWARE)); } - validBit = valSwitchStruct + validBit = valSwitchStStruct .getByte( VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchIndex.kIdxSwitchDomainName + UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchSoftware .ordinal()); if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID .ordinal() @@ -1793,118 +2164,31 @@ public class IpcPhysicalResponseFactory { setValueToJsonObject( validBit, switches, - VtnServiceJsonConsts.DOMAINID, + VtnServiceJsonConsts.SOFTWARE, IpcDataUnitWrapper .getIpcStructUint8ArrayValue( - valSwitchStruct, - VtnServiceIpcConsts.DOMAIN_NAME)); + valSwitchStStruct, + VtnServiceJsonConsts.SOFTWARE)); + } + validBit = valSwitchStStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchAlarmStatus + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject( + validBit, + switches, + VtnServiceJsonConsts.ALARMSSTATUS, + IpcDataUnitWrapper + .getIpcStructUint64HexaValue( + valSwitchStStruct, + VtnServiceIpcConsts.ALARM_STATUS)); } } - // from switch st structure - validBit = valSwitchStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchOperStatus - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - if (IpcDataUnitWrapper - .getIpcStructUint8Value(valSwitchStStruct, - VtnServiceIpcConsts.OPERSTATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplSwitchOperStatus.UPPL_SWITCH_OPER_UP - .getValue())) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.OPERSTATUS, - VtnServiceJsonConsts.UP); - } else if (IpcDataUnitWrapper - .getIpcStructUint8Value(valSwitchStStruct, - VtnServiceIpcConsts.OPERSTATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplSwitchOperStatus.UPPL_SWITCH_OPER_DOWN - .getValue())) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.OPERSTATUS, - VtnServiceJsonConsts.DOWN); - } else if (IpcDataUnitWrapper - .getIpcStructUint8Value(valSwitchStStruct, - VtnServiceIpcConsts.OPERSTATUS) - .equalsIgnoreCase( - UncPhysicalStructIndexEnum.UpplSwitchOperStatus.UPPL_SWITCH_OPER_UNKNOWN - .getValue())) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.OPERSTATUS, - VtnServiceJsonConsts.UNKNOWN); - } else { - LOG.debug("Operstatus : invalid"); - } - LOG.debug("Operstatus :" - + IpcDataUnitWrapper.getIpcStructUint8Value( - valSwitchStStruct, - VtnServiceIpcConsts.OPERSTATUS)); - } - validBit = valSwitchStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchManufacturer - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.MANUFACTURER, - IpcDataUnitWrapper.getIpcStructUint8ArrayValue( - valSwitchStStruct, - VtnServiceJsonConsts.MANUFACTURER)); - } - validBit = valSwitchStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchHardware - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.HARDWARE, - IpcDataUnitWrapper.getIpcStructUint8ArrayValue( - valSwitchStStruct, - VtnServiceJsonConsts.HARDWARE)); - } - validBit = valSwitchStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchSoftware - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.SOFTWARE, - IpcDataUnitWrapper.getIpcStructUint8ArrayValue( - valSwitchStStruct, - VtnServiceJsonConsts.SOFTWARE)); - } - validBit = valSwitchStStruct - .getByte( - VtnServiceIpcConsts.VALID, - UncPhysicalStructIndexEnum.UpplValSwitchStIndex.kIdxSwitchAlarmStatus - .ordinal()); - if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID - .ordinal() - && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED - .ordinal()) { - setValueToJsonObject(validBit, switches, - VtnServiceJsonConsts.ALARMSSTATUS, - IpcDataUnitWrapper.getIpcStructUint64HexaValue( - valSwitchStStruct, - VtnServiceIpcConsts.ALARM_STATUS)); - } } else { LOG.debug("Operation : normal Skip value struture"); index++; @@ -1922,6 +2206,11 @@ public class IpcPhysicalResponseFactory { if (null != switchesArray) { root.add(rootJsonName, switchesArray); } else { + if (statisticsJson != null + && opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + switches.add(VtnServiceJsonConsts.STATISTICS, + statisticsJson); + } root.add(rootJsonName, switches); } } @@ -1942,8 +2231,7 @@ public class IpcPhysicalResponseFactory { * @return the domain logical port response */ public JsonObject getDomainLogicalPortResponse( - final IpcDataUnit[] responsePacket, final JsonObject requestBody, - final String getType) { + final IpcDataUnit[] responsePacket, final JsonObject requestBody) { LOG.trace("Start getDomainLogicalPortResponse"); /* * operation type will be required to resolve the response type @@ -1952,17 +2240,9 @@ public class IpcPhysicalResponseFactory { if (requestBody.has(VtnServiceJsonConsts.OP)) { opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); } - String rootJsonName; - JsonArray logicalPortsArray = null; + final String rootJsonName = VtnServiceJsonConsts.LOGICALPORTS; + final JsonArray logicalPortsArray = new JsonArray(); final JsonObject root = new JsonObject(); - LOG.debug("getType: " + getType); - if (getType.equals(VtnServiceJsonConsts.SHOW)) { - rootJsonName = VtnServiceJsonConsts.LOGICALPORT; - } else { - rootJsonName = VtnServiceJsonConsts.LOGICALPORTS; - // json array will be required for list type of cases - logicalPortsArray = new JsonArray(); - } LOG.debug("Json Name :" + rootJsonName); String dataType = VtnServiceJsonConsts.STATE; if (requestBody.has(VtnServiceJsonConsts.TARGETDB) @@ -1973,12 +2253,19 @@ public class IpcPhysicalResponseFactory { JsonObject logicalPort = null; if (opType.equalsIgnoreCase(VtnServiceJsonConsts.COUNT)) { logicalPort = new JsonObject(); - logicalPort - .addProperty( - VtnServiceJsonConsts.COUNT, - IpcDataUnitWrapper - .getIpcDataUnitValue(responsePacket[VtnServiceConsts.IPC_COUNT_INDEX])); + int count = VtnServiceJsonConsts.VAL_1; + if (!requestBody.has(VtnServiceJsonConsts.LOGICAL_PORT_ID)) { + count = Integer + .parseInt(IpcDataUnitWrapper + .getIpcDataUnitValue(responsePacket[VtnServiceConsts.IPC_COUNT_INDEX])); + } else { + if (responsePacket.length == 0) { + count = responsePacket.length; + } + } + logicalPort.addProperty(VtnServiceJsonConsts.COUNT, count); root.add(rootJsonName, logicalPort); + } else { IpcStruct valLogicalPortStruct = null; IpcStruct valLogicalPortStStruct = null; @@ -1998,9 +2285,7 @@ public class IpcPhysicalResponseFactory { IpcDataUnitWrapper.getIpcStructUint8ArrayValue( keyLogicalPortStruct, VtnServiceIpcConsts.PORT_ID)); - if (getType.equals(VtnServiceJsonConsts.SHOW) - || opType - .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { LOG.debug("Case : Show or detail"); valLogicalPortStStruct = (IpcStruct) responsePacket[index++]; validBit = valLogicalPortStStruct @@ -2230,21 +2515,14 @@ public class IpcPhysicalResponseFactory { index++; } } - // add current json object to array, if it has been initialized - // earlier - if (null != logicalPortsArray) { - logicalPortsArray.add(logicalPort); - } + // add current json object to array + logicalPortsArray.add(logicalPort); } /* * finally add either array or single object to root json object and * return the same. */ - if (null != logicalPortsArray) { - root.add(rootJsonName, logicalPortsArray); - } else { - root.add(rootJsonName, logicalPort); - } + root.add(rootJsonName, logicalPortsArray); } LOG.debug("Response Json: " + root.toString()); LOG.trace("Complete getDomainLogicalPortResponse"); @@ -2288,4 +2566,1425 @@ public class IpcPhysicalResponseFactory { LOG.trace("Complete getDomainLogicalPortMemberResponse"); return membersArray; } + + /** + * Used for Show Data Flow response + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + + public JsonObject getDataFlowResponse(final IpcDataUnit[] responsePacket, + final JsonObject requestBody, final String getType) { + LOG.trace("Start getDataFlowPhysicalResponse"); + final JsonObject root = new JsonObject(); + final JsonArray dataFlowArray = new JsonArray(); + if (responsePacket.length != 0) { + LOG.debug("get Type:" + getType); + // key type and key structure are not used + int index = 2; + // nElements(nElems) parameter for Total number of data flow + // information + // contained in this responsePacket + final int nElements = Integer.parseInt(IpcDataUnitWrapper + .getIpcDataUnitValue(responsePacket[index++])); + LOG.debug("nElements:" + nElements); + for (int i = 0; i < nElements; i++) { + // getting value of dataflowStruct form response packet + final IpcStruct valDfDataFlowStruct = (IpcStruct) responsePacket[index++]; + // dataflow JsonObject is outermost Json + final JsonObject dataflow = new JsonObject(); + byte validBit = 0; + + validBit = valDfDataFlowStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowIndex.kidxDfDataFlowReason + .ordinal()); + validBit = 1; + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + final int reason = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfDataFlowStruct, + VtnServiceIpcConsts.REASON)); + // getting type of reason field a + String reasonForJson = VtnServiceConsts.EMPTY_STRING; + if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_SUCCESS + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_SUCCESS; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_OPERATION_NOT_SUPPORTED + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_NOT_SUPP; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_EXCEEDS_FLOW_LIMIT + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_EXCD_LIM; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_CTRLR_DISCONNECTED + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_CTRL_DISC; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_EXCEEDS_HOP_LIMIT + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_EXCD_HOP; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_DST_NOT_REACHED + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_DST_NOT_REACHED; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_FLOW_NOT_FOUND + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_FLOW_NOTFOUND; + } else if (reason == UncStructIndexEnum.UncDataflowReason.UNC_DF_RES_SYSTEM_ERROR + .ordinal()) { + reasonForJson = VtnServiceJsonConsts.REASON_SYS_ERROR; + } + // assigning reason field in dataflow Json + setValueToJsonObject(validBit, dataflow, + VtnServiceJsonConsts.REASON, reasonForJson); + LOG.debug("reason:" + reasonForJson); + } + LOG.debug("validBit for reason:" + validBit); + + final JsonArray controlFlowArray = new JsonArray(); + validBit = valDfDataFlowStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowIndex.kidxDfDataFlowControllerCount + .ordinal()); + validBit = 1; + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + // control count for getting number of controller element in + // controllerdataflowJson + final int controllerCount = Integer + .parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value( + valDfDataFlowStruct, + VtnServiceIpcConsts.CONTROLLER_COUNT)); + LOG.debug("Controller Count:" + controllerCount); + for (int j = 0; j < controllerCount; j++) { + final AtomicInteger a = new AtomicInteger(index); + controlFlowArray.add(getControllerDataFlow( + responsePacket, a, requestBody)); + index = a.get(); + } + // adding controller flow json array to dataflow Json + dataflow.add(VtnServiceJsonConsts.CONTROLLER_DATAFLOWS, + controlFlowArray); + LOG.debug("dataflow Json:" + dataflow); + } + // adding dataflow json to dataflowJson array + dataFlowArray.add(dataflow); + LOG.debug("dataFlowArray Json:" + dataFlowArray); + } + } + root.add(VtnServiceJsonConsts.DATAFLOWS, dataFlowArray); + LOG.debug("root Json :" + root); + LOG.trace("Complete getDataFlowPhysicalResponse"); + return root; + } + + /** + * Used for Show Controller Data Flow response + * + * @param responsePacket + * @param requestBody + * @param getType + * @return JsonObject + */ + public JsonObject getControllerDataFlowResponse( + final IpcDataUnit[] responsePacket, final JsonObject requestBody, + final String getType) { + LOG.trace("Start ControllergetDataFlowPhysicalResponse"); + final JsonObject root = new JsonObject(); + final JsonArray dataFlowArray = new JsonArray(); + if (responsePacket.length != 0) { + // key type and key structure is not used + int index = 2; + + final AtomicInteger a = new AtomicInteger(index); + dataFlowArray.add(getControllerDataFlow(responsePacket, a, + requestBody)); + index = a.get(); + } + root.add(VtnServiceJsonConsts.DATAFLOWS, dataFlowArray); + LOG.debug("root Json :" + root); + LOG.trace("Complete getControllerDataFlowPhysicalResponse"); + return root; + } + + private JsonObject getControllerDataFlow( + final IpcDataUnit[] responsePacket, final AtomicInteger index, + final JsonObject requestBody) { + LOG.trace("getControllerDataFlow started"); + byte validBit; + final JsonObject controlerFlow = new JsonObject(); + JsonObject statisticJson = null; + // used as an indicator for detail information i.e if statistic is set + // in detail optype + boolean isStatisticJson = false; + /* + * operation type will be required to resolve the response type + */ + String opType = VtnServiceJsonConsts.NORMAL; + if (requestBody.has(VtnServiceJsonConsts.OP)) { + opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); + } + // if optype is detail then adding statistic information to the + // jsonObject + if (opType.equals(VtnServiceIpcConsts.DETAIL)) { + final IpcStruct valDfDataFlowSt = (IpcStruct) responsePacket[index + .getAndIncrement()]; + statisticJson = new JsonObject(); + /* + * isStatisticJson is and indicator used for adding + * StatisticsJsonObject at last as per given response + */ + isStatisticJson = true; + validBit = valDfDataFlowSt + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowStIndex.kidxDfDataFlowStPackets + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, statisticJson, + VtnServiceJsonConsts.PACKETS, + IpcDataUnitWrapper.getIpcStructInt64Value( + valDfDataFlowSt, VtnServiceIpcConsts.PACKETS)); + } + validBit = valDfDataFlowSt + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowStIndex.kidxDfDataFlowStOctets + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, statisticJson, + VtnServiceJsonConsts.OCTETS, + IpcDataUnitWrapper.getIpcStructInt64Value( + valDfDataFlowSt, VtnServiceIpcConsts.OCTETS)); + } + + validBit = valDfDataFlowSt + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowStIndex.kidxDfDataFlowStDuration + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, statisticJson, + VtnServiceJsonConsts.DURATION, + IpcDataUnitWrapper.getIpcStructUint32Value( + valDfDataFlowSt, VtnServiceIpcConsts.DURATION)); + } + } + + final IpcStruct valDfDataFlowCmnStruct = (IpcStruct) responsePacket[index + .getAndIncrement()]; + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowControllerName + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.CONTROLLERID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.CONTROLLER_NAME)); + } + LOG.debug("set valid Bit for Controller name:" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowControllerType + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + /* + * controllertype is used to get values in ordinal form of + * controller bypass,vnp and pfc as 0,1,2 respectively + */ + final int controllerType = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint8Value(valDfDataFlowCmnStruct, + VtnServiceIpcConsts.CONTROLER_TYPE)); + + if (controllerType == UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_UNKNOWN + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.CONTROLER_TYPE, + VtnServiceJsonConsts.BYPASS); + } else if (controllerType == UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_VNP + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.CONTROLER_TYPE, + VtnServiceJsonConsts.VNP); + } else if (controllerType == UncPhysicalStructIndexEnum.UpplTypeIndex.UNC_CT_PFC + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.CONTROLER_TYPE, + VtnServiceJsonConsts.PFC); + } + } + LOG.debug("set valid Bit for Controller type :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowFlowId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.FLOW_ID, + IpcDataUnitWrapper + .getIpcStructUint64Value(valDfDataFlowCmnStruct, + VtnServiceIpcConsts.FLOW_ID)); + } + LOG.debug("set valid Bit for Flow id :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowStatus + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + final int status = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfDataFlowCmnStruct, + VtnServiceIpcConsts.STATUS)); + // getting type of reason field and assigning reason value to + // reasonForjson string + String statusForJson = VtnServiceConsts.EMPTY_STRING; + if (status == UncPhysicalStructIndexEnum.UncDataflowStatus.UNC_DF_STAT_INIT + .ordinal()) { + statusForJson = VtnServiceJsonConsts.STATUS_INIT; + } else if (status == UncPhysicalStructIndexEnum.UncDataflowStatus.UNC_DF_STAT_ACTIVATING + .ordinal()) { + statusForJson = VtnServiceJsonConsts.STATUS_ACTIVATING; + } else if (status == UncPhysicalStructIndexEnum.UncDataflowStatus.UNC_DF_STAT_ACTIVE + .ordinal()) { + statusForJson = VtnServiceJsonConsts.STATUS_ACTIVE; + } else if (status == UncPhysicalStructIndexEnum.UncDataflowStatus.UNC_DF_STAT_SWITCHING + .ordinal()) { + statusForJson = VtnServiceJsonConsts.STATUS_SWITCHING; + } + + // assigning reason field in dataflow Json + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.STATUS, statusForJson); + LOG.debug("set Json reason and validBit:" + validBit); + } + LOG.debug("set valid Bit for status :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowFlowType + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + if (IpcDataUnitWrapper.getIpcStructUint32Value( + valDfDataFlowCmnStruct, VtnServiceIpcConsts.FLOW_TYPE) + .equals(VtnServiceConsts.ZERO)) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.TYPE, VtnServiceJsonConsts.VTN); + } + } + LOG.debug("set valid Bit for flow type :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowPolicyIndex + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.POLICY_INDEX, + IpcDataUnitWrapper.getIpcStructUint32Value( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.POLICY_INDEX)); + } + LOG.debug("set validBit for policy index :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowVtnId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.VTN_ID, + IpcDataUnitWrapper.getIpcStructUint32Value( + valDfDataFlowCmnStruct, VtnServiceIpcConsts.VTN_ID)); + } + LOG.debug("set validBit for vtn id :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowIngressSwitchId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.INGRESS_SWITCH_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.INGRESS_SWITCH_ID)); + } + LOG.debug("set validBit for ingress switch id:" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowInPort + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.INGRESS_PORT_NAME, + IpcDataUnitWrapper + .getIpcStructUint8ArrayValue( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.IN_PORT)); + } + LOG.debug("set validBit for in_port_name :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowInStationId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.INGRESS_STATION_ID, + IpcDataUnitWrapper.getIpcStructUint64Value( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.IN_STATION_ID)); + } + LOG.debug("set validBit for in_station_id :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowInDomain + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.INGRESS_DOMAIN_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.IN_DOMAIN)); + } + LOG.trace("set validBit for in_domain_id :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowEgressSwitchId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.EGRESS_SWITCH_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.EGRESS_SWITCH_ID)); + } + LOG.debug("set validBit for egress_switch_id :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowOutPort + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.EGRESS_PORT_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.OUT_PORT)); + } + LOG.debug("set validBit for out_port_name:" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowOutStationId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.EGRESS_STATION_ID, + IpcDataUnitWrapper.getIpcStructUint64Value( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.OUT_STATION_ID)); + } + LOG.debug("set validBit for out_station_id :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowOutDomain + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, controlerFlow, + VtnServiceJsonConsts.EGRESS_DOMAIN_ID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowCmnStruct, + VtnServiceIpcConsts.OUT_DOMAIN)); + } + LOG.debug("set validBit for in_domain_id :" + validBit); + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowMatchCount + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + controlerFlow.add( + VtnServiceJsonConsts.MATCH, + getDataFlowMatchInfo(responsePacket, index, validBit, + controlerFlow, valDfDataFlowCmnStruct)); + LOG.debug("controller flow Json:" + controlerFlow); + } + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowActionCount + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + controlerFlow.add( + VtnServiceJsonConsts.ACTION, + getDataFlowActionInfo(responsePacket, index, controlerFlow, + valDfDataFlowCmnStruct)); + LOG.debug("controller flow Json:" + controlerFlow); + } + + validBit = valDfDataFlowCmnStruct + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowCmnIndex.kidxDfDataFlowPathInfoCount + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + + controlerFlow.add( + VtnServiceJsonConsts.PATHINFOS, + getDataFlowPathInfo(responsePacket, index, + valDfDataFlowCmnStruct)); + LOG.debug("controller flow Json:" + controlerFlow); + + } + + if (isStatisticJson == true) { + controlerFlow.add(VtnServiceJsonConsts.STATISTICS, statisticJson); + } + + LOG.trace("getControllerDataFlow completed"); + return controlerFlow; + } + + private JsonArray getDataFlowPathInfo(final IpcDataUnit[] responsePacket, + final AtomicInteger index, final IpcStruct valDfDataFlowCmnStruct) { + LOG.trace("getDataFlowPathInfo stated"); + final JsonArray pathinfoArray = new JsonArray(); + // used to get pathinfo count from val_df_dataflow_cmn struct + final int pathInfoCount = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfDataFlowCmnStruct, + VtnServiceIpcConsts.PATH_INFO_COUNT)); + LOG.debug("path_info_count:" + pathInfoCount); + for (int k = 0; k < pathInfoCount; k++) { + final JsonObject pathinfo = new JsonObject(); + byte validBit; + final IpcStruct valDfDataFlowPathInfo = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + validBit = valDfDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowPathInfoIndex.kidxDfDataFlowPathInfoSwitchId + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, pathinfo, + VtnServiceJsonConsts.SWITCHEID, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowPathInfo, + VtnServiceIpcConsts.SWITCHEID)); + LOG.trace("set switchid and validBit:" + validBit); + } + + validBit = valDfDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowPathInfoIndex.kidxDfDataFlowPathInfoInPort + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, pathinfo, + VtnServiceJsonConsts.IN_PORT_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowPathInfo, + VtnServiceIpcConsts.IN_PORT)); + LOG.trace("set in_port and validBit:" + validBit); + } + + validBit = valDfDataFlowPathInfo + .getByte( + VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UncValDfDataflowPathInfoIndex.kidxDfDataFlowPathInfoOutPort + .ordinal()); + if (validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_INVALID + .ordinal() + && validBit != (byte) UncStructIndexEnum.Valid.UNC_VF_NOT_SUPPORTED + .ordinal()) { + setValueToJsonObject(validBit, pathinfo, + VtnServiceJsonConsts.OUT_PORT_NAME, + IpcDataUnitWrapper.getIpcStructUint8ArrayValue( + valDfDataFlowPathInfo, + VtnServiceIpcConsts.OUT_PORT)); + LOG.debug("set validBit for out_port :" + validBit); + } + pathinfoArray.add(pathinfo); + } + LOG.debug("pathinfoArray Json:" + pathinfoArray); + LOG.trace("getDataFlowPathInfo completed"); + return pathinfoArray; + } + + private JsonObject getDataFlowActionInfo( + final IpcDataUnit[] responsePacket, final AtomicInteger index, + final JsonObject controlerFlow, + final IpcStruct valDfDataFlowCmnStruct) { + final int actionCount = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfDataFlowCmnStruct, + VtnServiceIpcConsts.ACTION_COUNT)); + LOG.debug("ACTION_COUNT:" + actionCount); + + // jsonObject action will holf all below json instance + final JsonObject action = new JsonObject(); + // jsonObject objects are created only when required information from + // response packet + // here we have just used refernces + JsonArray outputPortJsonArray = null; + JsonArray enqueuePortJsonArray = null; + JsonArray queueIdJsonArray = null; + JsonArray setMacDstAddrJsonArray = null; + JsonArray setMacSrcAddrJsonArray = null; + JsonArray setVlanIdJsonArray = null; + JsonArray setVlanPriorityJsonArray = null; + JsonArray setIpDstAddrJsonArray = null; + JsonArray setIpSrcAddrJsonArray = null; + JsonArray setIpTosJsonArray = null; + JsonArray setL4DstPortIcmpTypeJsonArray = null; + JsonArray setL4SrcPortIcmpTypeJsonArray = null; + JsonArray setIpV6DstAddrJsonArray = null; + JsonArray setIpv6SrcAddrJsonArray = null; + JsonArray setStripVlanJsonArray = null; + JsonPrimitive element = null; + for (int i = 0; i < actionCount; i++) { + final IpcStruct valDfFlowAction = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + LOG.trace("getDataFlowActionInfo started"); + int actionType; + // actiontype will help in resolving action as per response + actionType = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowAction, + VtnServiceIpcConsts.ACTION_TYPE)); + LOG.debug("actiontype :" + actionType); + if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_OUTPUT + .ordinal()) { + final IpcStruct valDfFlowActionOutputPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowActionOutputPort, + VtnServiceIpcConsts.OUTPUT_PORT).toString()); + if (null == outputPortJsonArray) { + outputPortJsonArray = new JsonArray(); + } + outputPortJsonArray.add(element); + LOG.debug("set out_port "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_ENQUEUE + .ordinal()) { + final IpcStruct valDfFlowActionEnqueuePort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowActionEnqueuePort, + VtnServiceIpcConsts.OUTPUT_PORT).toString()); + if (null == enqueuePortJsonArray) { + enqueuePortJsonArray = new JsonArray(); + } + enqueuePortJsonArray.add(element); + LOG.debug("set enqueueport "); + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionEnqueuePort, + VtnServiceIpcConsts.ENQUEUE_ID).toString()); + if (null == queueIdJsonArray) { + queueIdJsonArray = new JsonArray(); + } + queueIdJsonArray.add(element); + LOG.debug("set enqueueid "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_DL_DST + .ordinal()) { + final IpcStruct valDfFlowActionSetDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowActionSetDlAddr, VtnServiceIpcConsts.DL_ADDR) + .toString()); + + if (null == setMacDstAddrJsonArray) { + setMacDstAddrJsonArray = new JsonArray(); + } + setMacDstAddrJsonArray.add(element); + LOG.debug("set macdst "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_DL_SRC + .ordinal()) { + final IpcStruct valDfFlowActionSetDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowActionSetDlAddr, VtnServiceIpcConsts.DL_ADDR) + .toString()); + if (null == setMacSrcAddrJsonArray) { + setMacSrcAddrJsonArray = new JsonArray(); + } + setMacSrcAddrJsonArray.add(element); + LOG.debug("set macsrc "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_VLAN_ID + .ordinal()) { + final IpcStruct valDfFlowActionSetVlanId = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionSetVlanId, + VtnServiceIpcConsts.VLAN_ID).toString()); + if (null == setVlanIdJsonArray) { + setVlanIdJsonArray = new JsonArray(); + } + if(element.getAsString().equals(VtnServiceJsonConsts.VLAN_ID_65535)){ + element = new JsonPrimitive(VtnServiceJsonConsts.EMPTY); + setVlanIdJsonArray.add(element); + }else{ + setVlanIdJsonArray.add(element); + } + + LOG.debug("set vlan_id "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_VLAN_PCP + .ordinal()) { + final IpcStruct valDfFlowActionSetVlanPcp = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint8Value(valDfFlowActionSetVlanPcp, + VtnServiceIpcConsts.VLAN_PCP).toString()); + if (null == setVlanPriorityJsonArray) { + setVlanPriorityJsonArray = new JsonArray(); + } + setVlanPriorityJsonArray.add(element); + LOG.debug("set vlanpriority :"); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_STRIP_VLAN + .ordinal()) { + element = new JsonPrimitive(VtnServiceJsonConsts.TRUE); + if (null == setStripVlanJsonArray) { + setStripVlanJsonArray = new JsonArray(); + } + setStripVlanJsonArray.add(element); + index.getAndIncrement(); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV4_SRC + .ordinal()) { + final IpcStruct valDfFlowActionSetIpv4 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowActionSetIpv4, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + if (null == setIpSrcAddrJsonArray) { + setIpSrcAddrJsonArray = new JsonArray(); + } + setIpSrcAddrJsonArray.add(element); + LOG.debug("set ipsrc :"); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV4_DST + .ordinal()) { + final IpcStruct valDfFlowActionSetIpv4 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowActionSetIpv4, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + if (null == setIpDstAddrJsonArray) { + setIpDstAddrJsonArray = new JsonArray(); + } + setIpDstAddrJsonArray.add(element); + LOG.debug("set ipdst "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IP_TOS + .ordinal()) { + final IpcStruct valDfFlowActionSetIpTos = (IpcStruct) responsePacket[index + .getAndIncrement()]; + final String hexString = + UnsignedInteger.toHexString(Long + .valueOf(IpcDataUnitWrapper + .getIpcStructUint8Value( + valDfFlowActionSetIpTos, + VtnServiceIpcConsts.IP_TOS))); + element = new JsonPrimitive("0x" + hexString); + if (null == setIpTosJsonArray) { + setIpTosJsonArray = new JsonArray(); + } + setIpTosJsonArray.add(element); + LOG.debug("set r iptos "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_TP_SRC + .ordinal()) { + final IpcStruct valDfFlowActionSetTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionSetTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == setL4SrcPortIcmpTypeJsonArray) { + setL4SrcPortIcmpTypeJsonArray = new JsonArray(); + } + setL4SrcPortIcmpTypeJsonArray.add(element); + LOG.debug("set tpsrc "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_TP_DST + .ordinal()) { + final IpcStruct valDfFlowActionSetTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowActionSetTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == setL4DstPortIcmpTypeJsonArray) { + setL4DstPortIcmpTypeJsonArray = new JsonArray(); + } + setL4DstPortIcmpTypeJsonArray.add(element); + LOG.debug("set tpdst "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV6_SRC + .ordinal()) { + + final IpcStruct valDfFlowActionSetIpv6 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive( + IpcDataUnitWrapper.getIpcStructIpv6Value( + valDfFlowActionSetIpv6, + VtnServiceIpcConsts.IPV6_ADDR)); + if (null == setIpv6SrcAddrJsonArray) { + setIpv6SrcAddrJsonArray = new JsonArray(); + } + setIpv6SrcAddrJsonArray.add(element); + LOG.debug("set ipv6src "); + + } else if (actionType == UncStructIndexEnum.UncDataflowFlowActionType.UNC_ACTION_SET_IPV6_DST + .ordinal()) { + + final IpcStruct valDfFlowActionSetIpv6 = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive( + IpcDataUnitWrapper.getIpcStructIpv6Value( + valDfFlowActionSetIpv6, + VtnServiceIpcConsts.IPV6_ADDR)); + if (null == setIpV6DstAddrJsonArray) { + setIpV6DstAddrJsonArray = new JsonArray(); + } + setIpV6DstAddrJsonArray.add(element); + LOG.debug("set validBit for ipv6dst"); + } + if (outputPortJsonArray != null) { + action.add(VtnServiceJsonConsts.OUTPUTPORT, outputPortJsonArray); + } + if (enqueuePortJsonArray != null) { + action.add(VtnServiceJsonConsts.ENQUEUEPORT, + enqueuePortJsonArray); + } + if (queueIdJsonArray != null) { + action.add(VtnServiceJsonConsts.QUEUE_ID, queueIdJsonArray); + } + if (setMacDstAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETMACDSTADDR, + setMacDstAddrJsonArray); + } + if (setMacSrcAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETMACSRCADDR, + setMacSrcAddrJsonArray); + } + if (setVlanIdJsonArray != null) { + action.add(VtnServiceJsonConsts.SETVLAN_ID, setVlanIdJsonArray); + } + if (setVlanPriorityJsonArray != null) { + action.add(VtnServiceJsonConsts.SETVLAN_PRIORITY, + setVlanPriorityJsonArray); + } + if (setStripVlanJsonArray != null) { + action.add(VtnServiceJsonConsts.STRIPVLAN, + setStripVlanJsonArray); + } + if (setIpSrcAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPSRCADDR, + setIpSrcAddrJsonArray); + } + if (setIpDstAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPDSTADDR, + setIpDstAddrJsonArray); + } + if (setIpTosJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPTOS, setIpTosJsonArray); + } + if (setL4SrcPortIcmpTypeJsonArray != null) { + action.add(VtnServiceJsonConsts.SETL4SRCPORT_ICMPTYPE, + setL4SrcPortIcmpTypeJsonArray); + } + if (setL4DstPortIcmpTypeJsonArray != null) { + action.add(VtnServiceJsonConsts.SETL4DSTPORT_ICMPTYPE, + setL4DstPortIcmpTypeJsonArray); + } + if (setIpv6SrcAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPV6SRCADDR, + setIpv6SrcAddrJsonArray); + } + if (setIpV6DstAddrJsonArray != null) { + action.add(VtnServiceJsonConsts.SETIPV6DSTADDR, + setIpV6DstAddrJsonArray); + } + } + LOG.debug("action json:" + action); + LOG.trace("getDataFlowActionInfo completed"); + return action; + + } + + private JsonObject getDataFlowMatchInfo(final IpcDataUnit[] responsePacket, + final AtomicInteger index, final byte validBit, + final JsonObject controlerFlow, + final IpcStruct valDfDataFlowCmnStruct) { + LOG.trace("getDataFlowMatchInfo started"); + final int matchCount = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfDataFlowCmnStruct, + VtnServiceIpcConsts.MATCH_COUNT)); + LOG.debug("MATCH_COUNT:" + matchCount); + // match JsonObject will hold all below jsonObject as per requiremnts + final JsonObject match = new JsonObject(); + + JsonArray inportJsonArray = null; + JsonArray srcMacJsonArray = null; + JsonArray dstMacJsonArray = null; + JsonArray srcMaskJsonArray = null; + JsonArray dstMaskJsonArray = null; + JsonArray macEtherTypeJsonArray = null; + JsonArray vlanIdJsonArray = null; + JsonArray vlanPriorityJsonArray = null; + JsonArray ipTosJsonArray = null; + JsonArray ipProtoJsonArray = null; + JsonArray ipDstAddrJsonArray = null; + JsonArray ipDstAddrMaskJsonArray = null; + JsonArray ipSrcAddrJsonArray = null; + JsonArray ipSrcAddrMaskJsonArray = null; + JsonArray l4DstPortIcmpTypeJsonArray = null; + JsonArray l4DstPortIcmpTypeMaskJsonArray = null; + JsonArray l4SrcPortIcmpTypeJsonArray = null; + JsonArray l4SrcPortIcmpTypeMaskJsonArray = null; + JsonArray ipV6DstAddJsonArray = null; + JsonArray ipV6DstAddrMaskJsonArray = null; + JsonArray ipV6SrcAddrJsonArray = null; + JsonArray ipV6SrcAddrMaskJsonArray = null; + JsonPrimitive element = null; + for (int i = 0; i < matchCount; i++) { + final IpcStruct valDfFlowMatchStruct = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + final int matchtype = Integer.parseInt(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowMatchStruct, + VtnServiceIpcConsts.MATCH_TYPE)); + LOG.debug("MATCH TYPE:" + matchtype); + // match type will help in resolving response in match info + if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IN_PORT + .ordinal()) { + final IpcStruct valDfFlowMatchInPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + // set inport + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint32Value(valDfFlowMatchInPort, + VtnServiceIpcConsts.IN_PORT).toString()); + + if (null == inportJsonArray) { + inportJsonArray = new JsonArray(); + } + inportJsonArray.add(element); + LOG.debug("set validBit for in_port :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_DL_DST + .ordinal()) { + final IpcStruct valDfFlowMatchDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.DL_ADDR)); + if (null == dstMacJsonArray) { + dstMacJsonArray = new JsonArray(); + } + dstMacJsonArray.add(element); + LOG.debug("set validbit for macdst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getMacAddress(valDfFlowMatchDlAddr, + VtnServiceIpcConsts.DL_ADDR_MASK) + .toString()); + if (null == dstMaskJsonArray) { + dstMaskJsonArray = new JsonArray(); + } + dstMaskJsonArray.add(element); + LOG.debug("set validbit for macdst :" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_DL_SRC + .ordinal()) { + final IpcStruct valDfFlowMatchDlAddr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper.getMacAddress( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.DL_ADDR) + .toString()); + if (null == srcMacJsonArray) { + srcMacJsonArray = new JsonArray(); + } + srcMacJsonArray.add(element); + LOG.debug("set validbit for macsrc :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchDlAddr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getMacAddress(valDfFlowMatchDlAddr, + VtnServiceIpcConsts.DL_ADDR_MASK) + .toString()); + if (null == srcMaskJsonArray) { + srcMaskJsonArray = new JsonArray(); + } + srcMaskJsonArray.add(element); + LOG.debug("set validbit for macdst :" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_DL_TYPE + .ordinal()) { + final IpcStruct valDfFlowMatchDlType = (IpcStruct) responsePacket[index + .getAndIncrement()]; + element=new JsonPrimitive(IpcDataUnitWrapper.getIpcStructUint16HexaValue( + valDfFlowMatchDlType, VtnServiceIpcConsts.DL_TYPE) + .toString()); + if (null == macEtherTypeJsonArray) { + macEtherTypeJsonArray = new JsonArray(); + } + macEtherTypeJsonArray.add(element); + LOG.debug("set validbit for etherntype :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_VLAN_ID + .ordinal()) { + final IpcStruct valDfFlowMatchVlanVid = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchVlanVid, + VtnServiceIpcConsts.VLAN_ID).toString()); + if (null == vlanIdJsonArray) { + vlanIdJsonArray = new JsonArray(); + } + if(element.getAsString().equals(VtnServiceJsonConsts.VLAN_ID_65535)){ + element = new JsonPrimitive(VtnServiceJsonConsts.EMPTY); + vlanIdJsonArray.add(element); + }else{ + vlanIdJsonArray.add(element); + } + + + LOG.debug("set validbit for vlan_id :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_VLAN_PCP + .ordinal()) { + final IpcStruct valDfFlowMatchVlanpcp = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint8Value(valDfFlowMatchVlanpcp, + VtnServiceIpcConsts.VLAN_PCP).toString()); + if (null == vlanPriorityJsonArray) { + vlanPriorityJsonArray = new JsonArray(); + } + vlanPriorityJsonArray.add(element); + LOG.debug("set validbit for vlanpriority :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IP_TOS + .ordinal()) { + + final IpcStruct valDfFlowMatchIpTos = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + final String hexString = + UnsignedInteger.toHexString(Long + .valueOf(IpcDataUnitWrapper + .getIpcStructUint8Value( + valDfFlowMatchIpTos, + VtnServiceIpcConsts.IP_TOS))); + element = new JsonPrimitive("0x" + hexString); + if (null == ipTosJsonArray) { + ipTosJsonArray = new JsonArray(); + } + ipTosJsonArray.add(element); + LOG.debug("set validbit for iptos :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IP_PROTO + .ordinal()) { + + final IpcStruct valDfFlowMatchIpProto = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint8Value(valDfFlowMatchIpProto, + VtnServiceIpcConsts.IP_PROTO).toString()); + if (null == ipProtoJsonArray) { + ipProtoJsonArray = new JsonArray(); + } + ipProtoJsonArray.add(element); + LOG.debug("set validbit for ipproto :" + validBit); + + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV4_SRC + .ordinal()) { + final IpcStruct valDfFlowMatchIpv4Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + if (null == ipSrcAddrJsonArray) { + ipSrcAddrJsonArray = new JsonArray(); + } + ipSrcAddrJsonArray.add(element); + LOG.debug("set validbit for ipsrc :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchIpv4Addr, VtnServiceIpcConsts.V_MASK); + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR_MASK) + .toString()); + if (null == ipSrcAddrMaskJsonArray) { + ipSrcAddrMaskJsonArray = new JsonArray(); + + } + ipSrcAddrMaskJsonArray.add(element); + LOG.debug("set validBit for ipv4_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV4_DST + .ordinal()) { + final IpcStruct valDfFlowMatchIpv4Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR).toString()); + if (null == ipDstAddrJsonArray) { + ipDstAddrJsonArray = new JsonArray(); + } + ipDstAddrJsonArray.add(element); + LOG.debug("set validbit for ipdst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchIpv4Addr, VtnServiceIpcConsts.V_MASK); + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv4Value(valDfFlowMatchIpv4Addr, + VtnServiceIpcConsts.IPV4_ADDR_MASK) + .toString()); + if (null == ipDstAddrMaskJsonArray) { + ipDstAddrMaskJsonArray = new JsonArray(); + } + ipDstAddrMaskJsonArray.add(element); + LOG.debug("set validbit for ipv4_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV6_SRC + .ordinal()) { + + final IpcStruct valdfflowmatchIpv6Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR).toString()); + if (null == ipV6SrcAddrJsonArray) { + ipV6SrcAddrJsonArray = new JsonArray(); + } + ipV6SrcAddrJsonArray.add(element); + LOG.debug("set validbit for ipv6src :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valdfflowmatchIpv6Addr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR_MASK) + .toString()); + if (null == ipV6SrcAddrMaskJsonArray) { + ipV6SrcAddrMaskJsonArray = new JsonArray(); + } + ipV6SrcAddrMaskJsonArray.add(element); + LOG.debug("set validbit for ipv6_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_IPV6_DST + .ordinal()) { + + final IpcStruct valdfflowmatchIpv6Addr = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR).toString()); + if (null == ipV6DstAddJsonArray) { + ipV6DstAddJsonArray = new JsonArray(); + } + ipV6DstAddJsonArray.add(element); + LOG.debug("set validbit for ipv6dst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valdfflowmatchIpv6Addr, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructIpv6Value(valdfflowmatchIpv6Addr, + VtnServiceIpcConsts.IPV6_ADDR_MASK) + .toString()); + if (null == ipV6DstAddrMaskJsonArray) { + ipV6DstAddrMaskJsonArray = new JsonArray(); + } + ipV6DstAddrMaskJsonArray.add(element); + LOG.debug("set validbit for ipv6_mask:" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_TP_SRC + .ordinal()) { + + final IpcStruct valDfFlowMatchTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == l4SrcPortIcmpTypeJsonArray) { + l4SrcPortIcmpTypeJsonArray = new JsonArray(); + } + l4SrcPortIcmpTypeJsonArray.add(element); + + LOG.debug("set validbit for tpsrc :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchTpPort, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT_MASK) + .toString()); + if (null == l4SrcPortIcmpTypeMaskJsonArray) { + l4SrcPortIcmpTypeMaskJsonArray = new JsonArray(); + } + l4SrcPortIcmpTypeMaskJsonArray.add(element); + LOG.debug("set validbit for tpsrcmask :" + validBit); + } + } else if (matchtype == UncStructIndexEnum.UncDataflowFlowMatchType.UNC_MATCH_TP_DST + .ordinal()) { + + final IpcStruct valDfFlowMatchTpPort = (IpcStruct) responsePacket[index + .getAndIncrement()]; + + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT).toString()); + if (null == l4DstPortIcmpTypeJsonArray) { + l4DstPortIcmpTypeJsonArray = new JsonArray(); + } + l4DstPortIcmpTypeJsonArray.add(element); + LOG.debug("set validbit for tpdst :" + validBit); + + final String s = IpcDataUnitWrapper.getIpcStructUint8Value( + valDfFlowMatchTpPort, VtnServiceIpcConsts.V_MASK); + + if (Integer.parseInt(s) == UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal()) { + element = new JsonPrimitive(IpcDataUnitWrapper + .getIpcStructUint16Value(valDfFlowMatchTpPort, + VtnServiceIpcConsts.TP_PORT_MASK) + .toString()); + + if (null == l4DstPortIcmpTypeMaskJsonArray) { + l4DstPortIcmpTypeMaskJsonArray = new JsonArray(); + } + l4DstPortIcmpTypeMaskJsonArray.add(element); + } + } else { + LOG.debug("Type : invalid"); + } + + } + if (null != inportJsonArray) { + match.add(VtnServiceJsonConsts.INPORT, inportJsonArray); + } + if (null != dstMacJsonArray) { + match.add(VtnServiceJsonConsts.MACDSTADDR, dstMacJsonArray); + } + if (dstMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.MACDSTADDR_MASK, dstMaskJsonArray); + } + if (srcMacJsonArray != null) { + match.add(VtnServiceJsonConsts.MACSRCADDR, srcMacJsonArray); + } + if (srcMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.MACSRCADDR_MASK, srcMaskJsonArray); + } + if (macEtherTypeJsonArray != null) { + match.add(VtnServiceJsonConsts.MACETHERTYPE, macEtherTypeJsonArray); + } + if (vlanIdJsonArray != null) { + match.add(VtnServiceJsonConsts.VLAN_ID, vlanIdJsonArray); + } + if (vlanPriorityJsonArray != null) { + match.add(VtnServiceJsonConsts.VLAN_PRIORITY, vlanPriorityJsonArray); + } + if (ipTosJsonArray != null) { + match.add(VtnServiceJsonConsts.IPTOS, ipTosJsonArray); + } + if (ipProtoJsonArray != null) { + match.add(VtnServiceJsonConsts.IPPROTO, ipProtoJsonArray); + } + if (ipSrcAddrJsonArray != null) { + match.add(VtnServiceJsonConsts.IPSRCADDR, ipSrcAddrJsonArray); + } + if (ipSrcAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPSRCADDR_MASK, + ipSrcAddrMaskJsonArray); + } + if (ipDstAddrJsonArray != null) { + match.add(VtnServiceJsonConsts.IPDSTADDR, ipDstAddrJsonArray); + } + if (ipDstAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPDSTADDR_MASK, + ipDstAddrMaskJsonArray); + } + if (ipV6SrcAddrJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6SRCADDR, ipV6SrcAddrJsonArray); + } + if (ipV6SrcAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6SRCADDR_MASK, + ipV6SrcAddrMaskJsonArray); + } + if (ipV6DstAddJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6DSTADDR, ipV6DstAddJsonArray); + } + if (ipV6DstAddrMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.IPV6DSTADDR_MASK, + ipV6DstAddrMaskJsonArray); + } + if (l4SrcPortIcmpTypeJsonArray != null) { + match.add(VtnServiceJsonConsts.L4SRCPORT_ICMPTYPE, + l4SrcPortIcmpTypeJsonArray); + } + if (l4SrcPortIcmpTypeMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.L4SRCPORT_ICMPTYPE_MASK, + l4SrcPortIcmpTypeMaskJsonArray); + } + if (l4DstPortIcmpTypeJsonArray != null) { + match.add(VtnServiceJsonConsts.L4DSTPORT_ICMPTYPE, + l4DstPortIcmpTypeJsonArray); + } + if (l4DstPortIcmpTypeMaskJsonArray != null) { + match.add(VtnServiceJsonConsts.L4DSTPORT_ICMPTYPE_MASK, + l4DstPortIcmpTypeMaskJsonArray); + } + LOG.debug("match Json :" + match); + LOG.trace("getDataFlowMatchInfo completed"); + return match; + } + } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/package-info.java new file mode 100644 index 00000000..4ed3cabd --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/conversion/package-info.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API IPC response generator classes + * for generating response . + */ +package org.opendaylight.vtn.javaapi.ipc.conversion; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/IpcRequestPacketEnum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/IpcRequestPacketEnum.java index 90f0a305..4684bfb8 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/IpcRequestPacketEnum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/IpcRequestPacketEnum.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -8,637 +8,715 @@ */ package org.opendaylight.vtn.javaapi.ipc.enums; - -// TODO: Auto-generated Javadoc /** * The Enum IpcRequestPacketEnum. */ public enum IpcRequestPacketEnum { - KT_VTN_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_VTN_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTN.getValue(), UncStructEnum.KeyVtn.name(), UncStructEnum.ValVtn.name()), - - KT_FLOWLIST_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + + KT_FLOWLIST_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_FLOWLIST.getValue(), UncStructEnum.KeyFlowList.name(), UncStructEnum.NONE.name()), - KT_FLOWLIST_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_FLOWLIST_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_FLOWLIST.getValue(), UncStructEnum.KeyFlowList.name(), UncStructEnum.ValFlowList.name()), - - KT_DHCPRELAY_IF_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + + KT_DHCPRELAY_IF_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_DHCPRELAY_IF.getValue(), UncStructEnum.KeyDhcpRelayIf.name(), UncStructEnum.NONE.name()), - KT_DHCPRELAY_IF_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_DHCPRELAY_IF_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_DHCPRELAY_IF.getValue(), UncStructEnum.KeyDhcpRelayIf.name(), UncStructEnum.NONE.name()), - KT_DHCPRELAY_IF_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_DHCPRELAY_IF_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_DHCPRELAY_IF.getValue(), UncStructEnum.KeyDhcpRelayIf.name(), UncStructEnum.NONE.name()), - - KT_DHCPRELAY_SERVER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + + KT_DHCPRELAY_SERVER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_DHCPRELAY_SERVER.getValue(), UncStructEnum.KeyDhcpRelayServer.name(), UncStructEnum.NONE.name()), - KT_DHCPRELAY_SERVER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_DHCPRELAY_SERVER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_DHCPRELAY_SERVER.getValue(), UncStructEnum.KeyDhcpRelayServer.name(), UncStructEnum.NONE.name()), - KT_DHCPRELAY_SERVER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_DHCPRELAY_SERVER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_DHCPRELAY_SERVER.getValue(), UncStructEnum.KeyDhcpRelayServer.name(), UncStructEnum.NONE.name()), - KT_VTN_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VTN_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTN.getValue(), UncStructEnum.KeyVtn.name(), UncStructEnum.NONE.name()), - KT_VTN_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VTN_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTN.getValue(), UncStructEnum.KeyVtn.name(), UncStructEnum.ValVtn.name()), - KT_VTN_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VTN_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTN.getValue(), UncStructEnum.KeyVtn.name(), UncStructEnum.NONE.name()), - KT_VUNKNOWN_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VUNKNOWN_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VUNKNOWN.getValue(), UncStructEnum.KeyVunknown.name(), UncStructEnum.ValVunknown.name()), - KT_VUNKNOWN_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VUNKNOWN_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VUNKNOWN.getValue(), UncStructEnum.KeyVunknown.name(), UncStructEnum.NONE.name()), - KT_FLOWLIST_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_FLOWLIST_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_FLOWLIST.getValue(), UncStructEnum.KeyFlowList.name(), UncStructEnum.ValFlowList.name()), - KT_FLOWLIST_ENTRY_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_FLOWLIST_ENTRY_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_FLOWLIST_ENTRY.getValue(), UncStructEnum.KeyFlowListEntry.name(), UncStructEnum.ValFlowListEntry.name()), - KT_FLOWLIST_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_FLOWLIST_ENTRY_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_FLOWLIST_ENTRY.getValue(), UncStructEnum.KeyFlowListEntry.name(), UncStructEnum.NONE.name()), - KT_FLOWLIST_ENTRY_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_FLOWLIST_ENTRY_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_FLOWLIST_ENTRY.getValue(), UncStructEnum.KeyFlowListEntry.name(), UncStructEnum.ValFlowListEntry.name()), - KT_FLOWLIST_ENTRY_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_FLOWLIST_ENTRY_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_FLOWLIST_ENTRY.getValue(), UncStructEnum.KeyFlowListEntry.name(), UncStructEnum.NONE.name()), - KT_VTNSTATION_CONTROLLER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VTNSTATION_CONTROLLER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTNSTATION_CONTROLLER.getValue(), UncStructEnum.KeyVtnstationController.name(), - UncStructEnum.ValVtnstationControllerSt.name()), - KT_VTUNNEL_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncStructEnum.ValVtnstationControllerSt.name()), + KT_VTUNNEL_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTUNNEL.getValue(), UncStructEnum.KeyVtunnel.name(), UncStructEnum.ValVtunnel.name()), - KT_VTUNNEL_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VTUNNEL_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTUNNEL.getValue(), UncStructEnum.KeyVtunnel.name(), UncStructEnum.NONE.name()), - KT_VTUNNEL_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VTUNNEL_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTUNNEL.getValue(), UncStructEnum.KeyVtunnel.name(), UncStructEnum.ValVtunnel.name()), - KT_VTUNNEL_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VTUNNEL_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTUNNEL.getValue(), UncStructEnum.KeyVtunnel.name(), - UncStructEnum.ValVtunnel.name()), - KT_VTUNNEL_GET_COUNT(UncOperationEnum.UNC_OP_READ.ordinal(), + UncStructEnum.ValVtunnel.name()), + KT_VTUNNEL_GET_COUNT( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VTUNNEL.getValue(), - UncStructEnum.KeyVtunnel.name(), + UncStructEnum.KeyVtunnel.name(), UncStructEnum.NONE.name()), - KT_VLINK_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_VLINK_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VLINK.getValue(), UncStructEnum.KeyVlink.name(), UncStructEnum.ValVlink.name()), - KT_VLINK_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VLINK_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VLINK.getValue(), UncStructEnum.KeyVlink.name(), UncStructEnum.NONE.name()), - KT_VLINK_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VLINK_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VLINK.getValue(), UncStructEnum.KeyVlink.name(), UncStructEnum.ValVlink.name()), - KT_VLINK_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VLINK_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VLINK.getValue(), UncStructEnum.KeyVlink.name(), - UncStructEnum.NONE.name()), - KT_VLINK_GET2(UncOperationEnum.UNC_OP_READ.ordinal(), + UncStructEnum.NONE.name()), + KT_VLINK_GET2( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VLINK.getValue(), UncStructEnum.KeyVlink.name(), - UncStructEnum.ValVlink.name()), - KT_VBRIDGE_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncStructEnum.ValVlink.name()), + KT_VBRIDGE_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), - UncStructEnum.KeyVbr.name(), + UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), + UncStructEnum.KeyVbr.name(), UncStructEnum.NONE.name()), - KT_VBRIDGE_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VBRIDGE_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), + UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), UncStructEnum.KeyVbr.name(), UncStructEnum.ValVbr.name()), - KT_VBRIDGE_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_VBRIDGE_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), - UncStructEnum.KeyVbr.name(), + UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), + UncStructEnum.KeyVbr.name(), UncStructEnum.ValVbr.name()), - KT_VBRIDGE_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VBRIDGE_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), - UncStructEnum.KeyVbr.name(), + UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), + UncStructEnum.KeyVbr.name(), UncStructEnum.NONE.name()), - KT_VBRIDGE_MAC_ENTRY_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VBRIDGE_MAC_ENTRY_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_MAC_ENTRY.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), - UncStructEnum.KeyVbr.name(), + UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), + UncStructEnum.KeyVbr.name(), UncStructEnum.NONE.name()), - KT_VBR_VLANMAP_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_VBR_VLANMAP_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), - UncStructEnum.KeyVlanMap.name(), + UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), + UncStructEnum.KeyVlanMap.name(), UncStructEnum.ValVlanMap.name()), - KT_VBR_VLANMAP_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VBR_VLANMAP_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), - UncStructEnum.KeyVlanMap.name(), + UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), + UncStructEnum.KeyVlanMap.name(), UncStructEnum.NONE.name()), - KT_VBR_VLANMAP_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VBR_VLANMAP_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), - UncStructEnum.KeyVlanMap.name(), - UncStructEnum.ValVlanMap.name()), - KT_VBR_VLANMAP_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), + UncStructEnum.KeyVlanMap.name(), + UncStructEnum.ValVlanMap.name()), + KT_VBR_VLANMAP_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), - UncStructEnum.KeyVlanMap.name(), + UncKeyTypeEnum.UNC_KT_VBR_VLANMAP.getValue(), + UncStructEnum.KeyVlanMap.name(), UncStructEnum.NONE.name()), - KT_VROUTER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_VROUTER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), UncStructEnum.KeyVrt.name(), UncStructEnum.ValVrt.name()), - KT_VROUTER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VROUTER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), UncStructEnum.KeyVrt.name(), UncStructEnum.NONE.name()), - KT_VROUTER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VROUTER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), UncStructEnum.KeyVrt.name(), UncStructEnum.NONE.name()), - KT_VROUTER_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VROUTER_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), UncStructEnum.KeyVrt.name(), UncStructEnum.ValVrt.name()), - KT_VRT_IF_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VRT_IF_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VRT_IF.getValue(), UncStructEnum.KeyVrtIf.name(), UncStructEnum.NONE.name()), - KT_VRT_IF_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VRT_IF_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VRT_IF.getValue(), UncStructEnum.KeyVrtIf.name(), UncStructEnum.NONE.name()), - KT_VRT_IF_GET2(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VRT_IF_GET2( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VRT_IF.getValue(), UncStructEnum.KeyVrtIf.name(), UncStructEnum.NONE.name()), - KT_VRT_IF_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VRT_IF_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VRT_IF.getValue(), UncStructEnum.KeyVrtIf.name(), UncStructEnum.ValVrtIf.name()), - KT_VRT_IF_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_VRT_IF_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VRT_IF.getValue(), UncStructEnum.KeyVrtIf.name(), - UncStructEnum.ValVrtIf.name()), - KT_VTUNNEL_IF_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), - UncStructEnum.KeyVtunnelIf.name(), - UncStructEnum.ValVtunnelIf.name()), - KT_VTUNNEL_IF_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), - UncStructEnum.KeyVtunnelIf.name(), - UncStructEnum.NONE.name()), - KT_VTUNNEL_IF_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), - UncStructEnum.KeyVtunnelIf.name(), - UncStructEnum.ValVtunnelIf.name()), - KT_VTUNNEL_IF_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), - UncStructEnum.KeyVtunnelIf.name(), - UncStructEnum.NONE.name()), - KT_VTUNNEL_IF_GET2(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), - UncStructEnum.KeyVtunnelIf.name(), - UncStructEnum.NONE.name()), - KT_VTEP_IF_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), - UncStructEnum.KeyVtepIf.name(), - UncStructEnum.ValVtepIf.name()), - KT_VTEP_IF_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), - UncStructEnum.KeyVtepIf.name(), - UncStructEnum.NONE.name()), - KT_VTEP_IF_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), - UncStructEnum.KeyVtepIf.name(), - UncStructEnum.ValVtepIf.name()), - KT_VTEP_IF_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), - UncStructEnum.KeyVtepIf.name(), - UncStructEnum.NONE.name()), - - KT_VTEP_IF_GET2(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), - UncStructEnum.KeyVtepIf.name(), - UncStructEnum.NONE.name()), - - KT_VTEP_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP.getValue(), - UncStructEnum.KeyVtep.name(), - UncStructEnum.ValVtep.name()), - KT_VTEP_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP.getValue(), - UncStructEnum.KeyVtep.name(), - UncStructEnum.NONE.name()), - KT_VTEP_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP.getValue(), - UncStructEnum.KeyVtep.name(), - UncStructEnum.ValVtep.name()), - KT_VTEP_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP.getValue(), - UncStructEnum.KeyVtep.name(), - UncStructEnum.NONE.name()), -KT_VTEP_GET_COUNT(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP.getValue(), - UncStructEnum.KeyVtep.name(), - UncStructEnum.ValVtep.name()), - KT_VTN_FLOWFILTER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER.getValue(), - UncStructEnum.KeyVtnFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VTN_FLOWFILTER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER.getValue(), - UncStructEnum.KeyVtnFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VTN_FLOWFILTER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER.getValue(), - UncStructEnum.KeyVtnFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VTN_FLOWFILTER_ENTRY_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVtnFlowFilterEntry.name(), - UncStructEnum.ValVtnFlowFilterEntry.name()), - KT_VTN_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVtnFlowFilterEntry.name(), - UncStructEnum.NONE.name()), - KT_VTN_FLOWFILTER_ENTRY_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVtnFlowFilterEntry.name(), - UncStructEnum.ValVtnFlowFilterEntry.name()), - KT_VTN_FLOWFILTER_ENTRY_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVtnFlowFilterEntry.name(), - UncStructEnum.NONE.name()), - KT_VTN_FLOWFILTER_ENTRY_GET_STATE(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_CONTROLLER.getValue(), - UncStructEnum.KeyVtnFlowfilterController.name(), - UncStructEnum.ValFlowFilterController.name()), - KT_VUNKNOWN_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VUNKNOWN.getValue(), - UncStructEnum.KeyVunknown.name(), - UncStructEnum.NONE.name()), - KT_VUNKNOWN_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VUNKNOWN.getValue(), - UncStructEnum.KeyVunknown.name(), - UncStructEnum.ValVunknown.name()), - KT_VUNK_IF_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), - UncStructEnum.KeyVunkIf.name(), - UncStructEnum.ValVunkIf.name()), - KT_VUNK_IF_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), - UncStructEnum.KeyVunkIf.name(), - UncStructEnum.NONE.name()), - KT_VUNK_IF_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), - UncStructEnum.KeyVunkIf.name(), - UncStructEnum.ValVunkIf.name()), - KT_VUNK_IF_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), - UncStructEnum.KeyVunkIf.name(), - UncStructEnum.NONE.name()), - KT_VUNK_IF_GET2(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), - UncStructEnum.KeyVunkIf.name(), - UncStructEnum.NONE.name()), - - KT_VROUTER_ARP_ENTRY(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_ARP_ENTRY.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), - UncStructEnum.KeyVrt.name(), - UncStructEnum.ValVrtArpEntrySt.name()), - + UncStructEnum.ValVrtIf.name()), + KT_VTUNNEL_IF_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), + UncStructEnum.KeyVtunnelIf.name(), + UncStructEnum.ValVtunnelIf.name()), + KT_VTUNNEL_IF_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), + UncStructEnum.KeyVtunnelIf.name(), + UncStructEnum.NONE.name()), + KT_VTUNNEL_IF_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), + UncStructEnum.KeyVtunnelIf.name(), + UncStructEnum.ValVtunnelIf.name()), + KT_VTUNNEL_IF_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), + UncStructEnum.KeyVtunnelIf.name(), + UncStructEnum.NONE.name()), + KT_VTUNNEL_IF_GET2( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTUNNEL_IF.getValue(), + UncStructEnum.KeyVtunnelIf.name(), + UncStructEnum.NONE.name()), + KT_VTEP_IF_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), + UncStructEnum.KeyVtepIf.name(), + UncStructEnum.ValVtepIf.name()), + KT_VTEP_IF_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), + UncStructEnum.KeyVtepIf.name(), + UncStructEnum.NONE.name()), + KT_VTEP_IF_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), + UncStructEnum.KeyVtepIf.name(), + UncStructEnum.ValVtepIf.name()), + KT_VTEP_IF_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), + UncStructEnum.KeyVtepIf.name(), + UncStructEnum.NONE.name()), - KT_VBRIDGE_SHOW(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), - UncStructEnum.KeyVbr.name(), - UncStructEnum.NONE.name()), - - - KT_VBRIF_FLOWFILTER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER.getValue(), - UncStructEnum.KeyVbrIfFlowFilter.name(), - UncStructEnum.NONE.name()), - - - KT_VBRIF_FLOWFILTER_ENTRY_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrIfFlowFilterEntry.name(), - UncStructEnum.ValFlowfilterEntry.name()), - - - KT_VBRIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrIfFlowFilterEntry.name(), - UncStructEnum.NONE.name()), - - - KT_VBRIF_FLOWFILTER_ENTRY_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrIfFlowFilterEntry.name(), - UncStructEnum.ValFlowfilterEntry.name()), - + KT_VTEP_IF_GET2( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_IF.getValue(), + UncStructEnum.KeyVtepIf.name(), + UncStructEnum.NONE.name()), - KT_VBRIF_FLOWFILTER_ENTRY_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrIfFlowFilterEntry.name(), - UncStructEnum.NONE.name()), - - KT_VRTIF_FLOWFILTER_ENTRY_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), + KT_VTEP_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP.getValue(), + UncStructEnum.KeyVtep.name(), + UncStructEnum.ValVtep.name()), + KT_VTEP_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP.getValue(), + UncStructEnum.KeyVtep.name(), + UncStructEnum.NONE.name()), + KT_VTEP_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP.getValue(), + UncStructEnum.KeyVtep.name(), + UncStructEnum.ValVtep.name()), + KT_VTEP_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP.getValue(), + UncStructEnum.KeyVtep.name(), + UncStructEnum.NONE.name()), + KT_VTEP_GET_COUNT( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP.getValue(), + UncStructEnum.KeyVtep.name(), + UncStructEnum.ValVtep.name()), + KT_VTN_FLOWFILTER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER.getValue(), + UncStructEnum.KeyVtnFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VTN_FLOWFILTER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER.getValue(), + UncStructEnum.KeyVtnFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VTN_FLOWFILTER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER.getValue(), + UncStructEnum.KeyVtnFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VTN_FLOWFILTER_ENTRY_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVtnFlowFilterEntry.name(), + UncStructEnum.ValVtnFlowFilterEntry.name()), + KT_VTN_FLOWFILTER_ENTRY_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVtnFlowFilterEntry.name(), + UncStructEnum.NONE.name()), + KT_VTN_FLOWFILTER_ENTRY_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVtnFlowFilterEntry.name(), + UncStructEnum.ValVtnFlowFilterEntry.name()), + KT_VTN_FLOWFILTER_ENTRY_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVtnFlowFilterEntry.name(), + UncStructEnum.NONE.name()), + KT_VTN_FLOWFILTER_ENTRY_GET_STATE( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_FLOWFILTER_CONTROLLER.getValue(), + UncStructEnum.KeyVtnFlowfilterController.name(), + UncStructEnum.ValFlowFilterController.name()), + KT_VUNKNOWN_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VUNKNOWN.getValue(), + UncStructEnum.KeyVunknown.name(), + UncStructEnum.NONE.name()), + KT_VUNKNOWN_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VUNKNOWN.getValue(), + UncStructEnum.KeyVunknown.name(), + UncStructEnum.ValVunknown.name()), + KT_VUNK_IF_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), + UncStructEnum.KeyVunkIf.name(), + UncStructEnum.ValVunkIf.name()), + KT_VUNK_IF_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), + UncStructEnum.KeyVunkIf.name(), + UncStructEnum.NONE.name()), + KT_VUNK_IF_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), + UncStructEnum.KeyVunkIf.name(), + UncStructEnum.ValVunkIf.name()), + KT_VUNK_IF_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), + UncStructEnum.KeyVunkIf.name(), + UncStructEnum.NONE.name()), + KT_VUNK_IF_GET2( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VUNK_IF.getValue(), + UncStructEnum.KeyVunkIf.name(), + UncStructEnum.NONE.name()), + + KT_VROUTER_ARP_ENTRY( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_ARP_ENTRY.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), + UncStructEnum.KeyVrt.name(), + UncStructEnum.ValVrtArpEntrySt.name()), + + KT_VBRIDGE_SHOW( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), + UncStructEnum.KeyVbr.name(), + UncStructEnum.NONE.name()), + + KT_VBRIF_FLOWFILTER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER.getValue(), + UncStructEnum.KeyVbrIfFlowFilter.name(), + UncStructEnum.NONE.name()), + + KT_VBRIF_FLOWFILTER_ENTRY_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrIfFlowFilterEntry.name(), + UncStructEnum.ValFlowfilterEntry.name()), + + KT_VBRIF_FLOWFILTER_ENTRY_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrIfFlowFilterEntry.name(), + UncStructEnum.NONE.name()), + + KT_VBRIF_FLOWFILTER_ENTRY_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrIfFlowFilterEntry.name(), + UncStructEnum.ValFlowfilterEntry.name()), + + KT_VBRIF_FLOWFILTER_ENTRY_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrIfFlowFilterEntry.name(), + UncStructEnum.NONE.name()), + + KT_VRTIF_FLOWFILTER_ENTRY_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER_ENTRY.getValue(), UncStructEnum.KeyVrtIfFlowFilterEntry.name(), UncStructEnum.ValFlowfilterEntry.name()), - -KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_VRTIF_FLOWFILTER_ENTRY_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), @@ -646,8 +724,8 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), UncStructEnum.KeyVrtIfFlowFilterEntry.name(), UncStructEnum.NONE.name()), - - KT_VRTIF_FLOWFILTER_ENTRY_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_VRTIF_FLOWFILTER_ENTRY_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), @@ -655,388 +733,471 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), UncStructEnum.KeyVrtIfFlowFilterEntry.name(), UncStructEnum.ValFlowfilterEntry.name()), - - KT_VRTIF_FLOWFILTER_ENTRY_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_VRTIF_FLOWFILTER_ENTRY_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER_ENTRY.getValue(), UncStructEnum.KeyVrtIfFlowFilterEntry.name(), UncStructEnum.NONE.name()), - - KT_VRTIF_FLOWFILTER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), - UncStructEnum.KeyVrtIfFlowFilter.name(), - UncStructEnum.NONE.name()), + KT_VRTIF_FLOWFILTER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), + UncStructEnum.KeyVrtIfFlowFilter.name(), + UncStructEnum.NONE.name()), - KT_VRTIF_FLOWFILTER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), - UncStructEnum.KeyVrtIfFlowFilter.name(), - UncStructEnum.NONE.name()), + KT_VRTIF_FLOWFILTER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), + UncStructEnum.KeyVrtIfFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VRTIF_FLOWFILTER_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), + UncStructEnum.KeyVrtIfFlowFilter.name(), + UncStructEnum.NONE.name()), - KT_VRTIF_FLOWFILTER_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), - UncStructEnum.KeyVrtIfFlowFilter.name(), - UncStructEnum.NONE.name()), + KT_VRTIF_FLOWFILTER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), + UncStructEnum.KeyVrtIfFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VRT_IPROUTE_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), + UncStructEnum.KeyStaticIpRoute.name(), + UncStructEnum.NONE.name()), + KT_VRT_IPROUTE_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), + UncStructEnum.KeyStaticIpRoute.name(), + UncStructEnum.NONE.name()), + KT_VRT_IPROUTE_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), + UncStructEnum.KeyStaticIpRoute.name(), + UncStructEnum.NONE.name()), + KT_VRT_IPROUTE_GET_SHOW( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), + UncStructEnum.KeyStaticIpRoute.name(), + UncStructEnum.NONE.name()), + KT_VRT_IPROUTE_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), + UncStructEnum.KeyStaticIpRoute.name(), + UncStructEnum.NONE.name()), + KT_VBR_FLOWFILTER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER.getValue(), + UncStructEnum.KeyVbrFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VBR_FLOWFILTER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER.getValue(), + UncStructEnum.KeyVbrFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VBR_FLOWFILTER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER.getValue(), + UncStructEnum.KeyVbrFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VBR_FLOWFILTER_ENTRY_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrFlowFilterEntry.name(), + UncStructEnum.NONE.name()), + KT_VBR_FLOWFILTER_ENTRY_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrFlowFilterEntry.name(), + UncStructEnum.NONE.name()), + KT_VBR_FLOWFILTER_ENTRY_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrFlowFilterEntry.name(), + UncStructEnum.ValFlowfilterEntry.name()), + KT_VBR_FLOWFILTER_ENTRY_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), + UncStructEnum.KeyVbrFlowFilterEntry.name(), + UncStructEnum.ValFlowfilterEntry.name()), + KT_VBR_IF_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), + UncStructEnum.KeyVbrIf.name(), + UncStructEnum.ValVbrIf.name()), + KT_VBR_IF_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), + UncStructEnum.KeyVbrIf.name(), + UncStructEnum.NONE.name()), + KT_VBR_IF_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), + UncStructEnum.KeyVbrIf.name(), + UncStructEnum.ValVbrIf.name()), + KT_VBR_IF_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), + UncStructEnum.KeyVbrIf.name(), + UncStructEnum.NONE.name()), + KT_VBR_IF_GET2( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), + UncStructEnum.KeyVbrIf.name(), + UncStructEnum.NONE.name()), + KT_VBRIF_FLOWFILTER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER.getValue(), + UncStructEnum.KeyVbrIfFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VBRIF_FLOWFILTER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER.getValue(), + UncStructEnum.KeyVbrIfFlowFilter.name(), + UncStructEnum.NONE.name()), + KT_VTEP_GRP_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_GRP.getValue(), + UncStructEnum.KeyVtepGrp.name(), + UncStructEnum.NONE.name()), + KT_VTEP_GRP_MEMBER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_GRP_MEMBER.getValue(), + UncStructEnum.KeyVtepGrpMember.name(), + UncStructEnum.NONE.name()), + KT_VTEP_GRP_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_GRP.getValue(), + UncStructEnum.KeyVtepGrp.name(), + UncStructEnum.NONE.name()), + KT_VTEP_GRP_MEMBER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_GRP_MEMBER.getValue(), + UncStructEnum.KeyVtepGrpMember.name(), + UncStructEnum.NONE.name()), + KT_VTEP_GRP_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_GRP.getValue(), + UncStructEnum.KeyVtepGrp.name(), + UncStructEnum.ValVtepGrp.name()), + KT_VTEP_GRP_MEMBER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTEP_GRP_MEMBER.getValue(), + UncStructEnum.KeyVtepGrpMember.name(), + UncStructEnum.NONE.name()), - KT_VRTIF_FLOWFILTER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRTIF_FLOWFILTER.getValue(), - UncStructEnum.KeyVrtIfFlowFilter.name(), - UncStructEnum.NONE.name()), - - KT_VRT_IPROUTE_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), - UncStructEnum.KeyStaticIpRoute.name(), - UncStructEnum.NONE.name()), - KT_VRT_IPROUTE_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), - UncStructEnum.KeyStaticIpRoute.name(), - UncStructEnum.NONE.name()), - KT_VRT_IPROUTE_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), - UncStructEnum.KeyStaticIpRoute.name(), - UncStructEnum.NONE.name()), - KT_VRT_IPROUTE_GET_SHOW(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), - UncStructEnum.KeyStaticIpRoute.name(), - UncStructEnum.NONE.name()), - KT_VRT_IPROUTE_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VRT_IPROUTE.getValue(), - UncStructEnum.KeyStaticIpRoute.name(), - UncStructEnum.NONE.name()), - KT_VBR_FLOWFILTER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER.getValue(), - UncStructEnum.KeyVbrFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VBR_FLOWFILTER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER.getValue(), - UncStructEnum.KeyVbrFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VBR_FLOWFILTER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER.getValue(), - UncStructEnum.KeyVbrFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VBR_FLOWFILTER_ENTRY_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrFlowFilterEntry.name(), - UncStructEnum.NONE.name()), - KT_VBR_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrFlowFilterEntry.name(), - UncStructEnum.NONE.name()), - KT_VBR_FLOWFILTER_ENTRY_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrFlowFilterEntry.name(), - UncStructEnum.ValFlowfilterEntry.name()), - KT_VBR_FLOWFILTER_ENTRY_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_FLOWFILTER_ENTRY.getValue(), - UncStructEnum.KeyVbrFlowFilterEntry.name(), - UncStructEnum.ValFlowfilterEntry.name()), - KT_VBR_IF_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), - UncStructEnum.KeyVbrIf.name(), - UncStructEnum.ValVbrIf.name()), - KT_VBR_IF_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), - UncStructEnum.KeyVbrIf.name(), - UncStructEnum.NONE.name()), - KT_VBR_IF_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), - UncStructEnum.KeyVbrIf.name(), - UncStructEnum.ValVbrIf.name()), - KT_VBR_IF_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), - UncStructEnum.KeyVbrIf.name(), - UncStructEnum.NONE.name()), - KT_VBR_IF_GET2(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBR_IF.getValue(), - UncStructEnum.KeyVbrIf.name(), - UncStructEnum.NONE.name()), - KT_VBRIF_FLOWFILTER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER.getValue(), - UncStructEnum.KeyVbrIfFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VBRIF_FLOWFILTER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VBRIF_FLOWFILTER.getValue(), - UncStructEnum.KeyVbrIfFlowFilter.name(), - UncStructEnum.NONE.name()), - KT_VTEP_GRP_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_GRP.getValue(), - UncStructEnum.KeyVtepGrp.name(), - UncStructEnum.NONE.name()), - KT_VTEP_GRP_MEMBER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_GRP_MEMBER.getValue(), - UncStructEnum.KeyVtepGrpMember.name(), - UncStructEnum.NONE.name()), - KT_VTEP_GRP_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_GRP.getValue(), - UncStructEnum.KeyVtepGrp.name(), - UncStructEnum.NONE.name()), - KT_VTEP_GRP_MEMBER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_GRP_MEMBER.getValue(), - UncStructEnum.KeyVtepGrpMember.name(), - UncStructEnum.NONE.name()), - KT_VTEP_GRP_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_GRP.getValue(), - UncStructEnum.KeyVtepGrp.name(), - UncStructEnum.ValVtepGrp.name()), - KT_VTEP_GRP_MEMBER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTEP_GRP_MEMBER.getValue(), - UncStructEnum.KeyVtepGrpMember.name(), - UncStructEnum.NONE.name()), - // Physical starts - KT_CTR_DOMAIN_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_DOMAIN.getValue(), - UncStructEnum.KeyCtrDomain.name(), - UncStructEnum.NONE.name()), - KT_SWITCH_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_SWITCH.getValue(), - UncStructEnum.KeySwitch.name(), - UncStructEnum.NONE.name()), - KT_CTR_DOMAIN_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), + KT_CTR_DOMAIN_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_DOMAIN.getValue(), + UncStructEnum.KeyCtrDomain.name(), + UncStructEnum.NONE.name()), + KT_SWITCH_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_SWITCH.getValue(), + UncStructEnum.KeySwitch.name(), + UncStructEnum.NONE.name()), + KT_CTR_DOMAIN_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_DOMAIN.getValue(), UncStructEnum.KeyCtrDomain.name(), UncStructEnum.NONE.name()), - KT_CTR_DOMAIN_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), + KT_CTR_DOMAIN_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_DOMAIN.getValue(), UncStructEnum.KeyCtrDomain.name(), UncStructEnum.ValCtrDomain.name()), - KT_CTR_DOMAIN_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), + KT_CTR_DOMAIN_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_CANDIDATE.ordinal(), UncKeyTypeEnum.UNC_KT_DOMAIN.getValue(), UncStructEnum.KeyCtrDomain.name(), UncStructEnum.ValCtrDomain.name()), - KT_CONTROLLER_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), - UncStructEnum.KeyCtr.name(), - UncStructEnum.NONE.name()), - KT_CONTROLLER_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), - UncStructEnum.KeyCtr.name(), - UncStructEnum.ValCtr.name()), - KT_CONTROLLER_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), - UncStructEnum.KeyCtr.name(), - UncStructEnum.ValCtr.name()), - KT_CONTROLLER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), - UncStructEnum.KeyCtr.name(), - UncStructEnum.NONE.name()), - KT_BOUNDARY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), - UncStructEnum.KeyBoundary.name(), - UncStructEnum.NONE.name()), - KT_BOUNDARY_UPDATE(UncOperationEnum.UNC_OP_UPDATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), - UncStructEnum.KeyBoundary.name(), - UncStructEnum.ValBoundary.name()), - KT_BOUNDARY_CREATE(UncOperationEnum.UNC_OP_CREATE.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_CANDIDATE.ordinal(), - UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), - UncStructEnum.KeyBoundary.name(), - UncStructEnum.ValBoundary.name()), - KT_BOUNDARY_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), - UncStructEnum.KeyBoundary.name(), - UncStructEnum.ValBoundary.name()), - KT_PORT_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_PORT.getValue(), - UncStructEnum.KeyPort.name(), - UncStructEnum.NONE.name()), - KT_PORT_GET_MEMBER(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_PORT.getValue(), - UncStructEnum.KeyPort.name(), - UncStructEnum.NONE.name()), - KT_LINK_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_LINK.getValue(), - UncStructEnum.KeyLink.name(), - UncStructEnum.NONE.name()), - KT_VBRIDGE_L2Domain(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_CONTROLLER_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), + UncStructEnum.KeyCtr.name(), + UncStructEnum.NONE.name()), + KT_CONTROLLER_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), + UncStructEnum.KeyCtr.name(), + UncStructEnum.ValCtr.name()), + KT_CONTROLLER_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), + UncStructEnum.KeyCtr.name(), + UncStructEnum.ValCtr.name()), + KT_CONTROLLER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_CONTROLLER.getValue(), + UncStructEnum.KeyCtr.name(), + UncStructEnum.NONE.name()), + KT_BOUNDARY_DELETE( + UncOperationEnum.UNC_OP_DELETE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), + UncStructEnum.KeyBoundary.name(), + UncStructEnum.NONE.name()), + KT_BOUNDARY_UPDATE( + UncOperationEnum.UNC_OP_UPDATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), + UncStructEnum.KeyBoundary.name(), + UncStructEnum.ValBoundary.name()), + KT_BOUNDARY_CREATE( + UncOperationEnum.UNC_OP_CREATE.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_CANDIDATE.ordinal(), + UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), + UncStructEnum.KeyBoundary.name(), + UncStructEnum.ValBoundary.name()), + KT_BOUNDARY_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), + UncStructEnum.KeyBoundary.name(), + UncStructEnum.ValBoundary.name()), + KT_PORT_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_PORT.getValue(), + UncStructEnum.KeyPort.name(), + UncStructEnum.NONE.name()), + KT_PORT_GET_MEMBER( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NEIGHBOR.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_PORT.getValue(), + UncStructEnum.KeyPort.name(), + UncStructEnum.NONE.name()), + KT_LINK_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_LINK.getValue(), + UncStructEnum.KeyLink.name(), + UncStructEnum.NONE.name()), + KT_VBRIDGE_L2Domain( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_L2DOMAIN.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_VBRIDGE.getValue(), UncStructEnum.KeyVbr.name(), UncStructEnum.NONE.name()), - KT_LOGICAL_PORT_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_LOGICAL_PORT_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_LOGICAL_PORT.getValue(), UncStructEnum.KeyLogicalPort.name(), UncStructEnum.NONE.name()), - KT_LOGICAL_PORT_MEMBER_GET(UncOperationEnum.UNC_OP_READ.ordinal(), + KT_LOGICAL_PORT_MEMBER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), UncOption2Enum.UNC_OPT2_NONE.ordinal(), UncDataType.UNC_DT_STATE.ordinal(), UncKeyTypeEnum.UNC_KT_LOGICAL_MEMBER_PORT.getValue(), UncStructEnum.KeyLogicalMemberPort.name(), UncStructEnum.NONE.name()), - KT_VROUTER_IPROUTE_GET(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_DETAIL.ordinal(), - UncOption2Enum.UNC_OPT2_IP_ROUTE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), - UncStructEnum.KeyVrt.name(), - UncStructEnum.NONE.name()), - KT_VROUTER_ARP_ENTRY_COUNT(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_COUNT.ordinal(), - UncOption2Enum.UNC_OPT2_ARP_ENTRY.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), - UncStructEnum.KeyVrt.name(), - UncStructEnum.NONE.name()), - KT_BOUNDARY_GET_COUNT(UncOperationEnum.UNC_OP_READ.ordinal(), - UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), - UncStructEnum.KeyBoundary.name(), - UncStructEnum.NONE.name()), - KT_VTNSTATION_CONTROLLER_GET_COUNT(UncOperationEnum.UNC_OP_READ_SIBLING_COUNT.ordinal(), - UncOption1Enum.UNC_OPT1_COUNT.ordinal(), - UncOption2Enum.UNC_OPT2_NONE.ordinal(), - UncDataType.UNC_DT_STATE.ordinal(), - UncKeyTypeEnum.UNC_KT_VTNSTATION_CONTROLLER.getValue(), - UncStructEnum.KeyVtnstationController.name(), - UncStructEnum.ValVtnstationControllerSt.name()); + KT_VROUTER_IPROUTE_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_DETAIL.ordinal(), + UncOption2Enum.UNC_OPT2_IP_ROUTE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), + UncStructEnum.KeyVrt.name(), + UncStructEnum.NONE.name()), + KT_VROUTER_ARP_ENTRY_COUNT( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_COUNT.ordinal(), + UncOption2Enum.UNC_OPT2_ARP_ENTRY.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VROUTER.getValue(), + UncStructEnum.KeyVrt.name(), + UncStructEnum.NONE.name()), + KT_BOUNDARY_GET_COUNT( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_BOUNDARY.getValue(), + UncStructEnum.KeyBoundary.name(), + UncStructEnum.NONE.name()), + KT_VTNSTATION_CONTROLLER_GET_COUNT( + UncOperationEnum.UNC_OP_READ_SIBLING_COUNT.ordinal(), + UncOption1Enum.UNC_OPT1_COUNT.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTNSTATION_CONTROLLER.getValue(), + UncStructEnum.KeyVtnstationController.name(), + UncStructEnum.ValVtnstationControllerSt.name()), + + // Added for U12 Requirement + KT_DATAFLOW_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_DATAFLOW.getValue(), + UncStructEnum.KeyDataFlow.name(), + UncStructEnum.NONE.name()), + KT_CTR_DATAFLOW_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_CTR_DATAFLOW.getValue(), + UncStructEnum.KeyCtrDataFlow.name(), + UncStructEnum.NONE.name()), + KT_VTN_MAPPING_CONTROLLER_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_MAPPING_CONTROLLER.getValue(), + UncStructEnum.KeyVtnController.name(), + UncStructEnum.NONE.name()), + KT_VTN_DATAFLOW_GET( + UncOperationEnum.UNC_OP_READ.ordinal(), + UncOption1Enum.UNC_OPT1_NORMAL.ordinal(), + UncOption2Enum.UNC_OPT2_NONE.ordinal(), + UncDataType.UNC_DT_STATE.ordinal(), + UncKeyTypeEnum.UNC_KT_VTN_DATAFLOW.getValue(), + UncStructEnum.KeyVtnDataflow.name(), + UncStructEnum.NONE.name()); private int operation; private int option1; @@ -1048,14 +1209,21 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Instantiates a new ipc request packet enum. - * - * @param operation the operation - * @param option1 the option1 - * @param option2 the option2 - * @param dataType the data type - * @param keyType the key type - * @param keyStruct the key struct - * @param valStruct the val struct + * + * @param operation + * the operation + * @param option1 + * the option1 + * @param option2 + * the option2 + * @param dataType + * the data type + * @param keyType + * the key type + * @param keyStruct + * the key struct + * @param valStruct + * the val struct */ private IpcRequestPacketEnum(final int operation, final int option1, final int option2, final int dataType, final int keyType, @@ -1071,7 +1239,7 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Gets the operation. - * + * * @return the operation */ public int getOperation() { @@ -1080,7 +1248,7 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Gets the option1. - * + * * @return the option1 */ public int getOption1() { @@ -1089,7 +1257,7 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Gets the option2. - * + * * @return the option2 */ public int getOption2() { @@ -1098,7 +1266,7 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Gets the data type. - * + * * @return the data type */ public int getDataType() { @@ -1107,7 +1275,7 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Gets the key type. - * + * * @return the key type */ public int getKeyType() { @@ -1116,7 +1284,7 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Gets the key struct. - * + * * @return the key struct */ public String getKeyStruct() { @@ -1125,7 +1293,7 @@ KT_VRTIF_FLOWFILTER_ENTRY_DELETE(UncOperationEnum.UNC_OP_DELETE.ordinal(), /** * Gets the val struct. - * + * * @return the val struct */ public String getValStruct() { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/PomStatsIndex.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/PomStatsIndex.java index d5c96b2a..5e473647 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/PomStatsIndex.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/PomStatsIndex.java @@ -1,45 +1,46 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.javaapi.ipc.enums; public class PomStatsIndex { private Integer software; - public Integer getSoftware() { + public final Integer getSoftware() { return software; } - public void setSoftware(final Integer software) { + public final void setSoftware(final Integer software) { this.software = software; } - public Integer getExistingFlow() { + public final Integer getExistingFlow() { return existingFlow; } - public void setExistingFlow(final Integer existingFlow) { + public final void setExistingFlow(final Integer existingFlow) { this.existingFlow = existingFlow; } - public Integer getExpiredFlow() { + public final Integer getExpiredFlow() { return expiredFlow; } - public void setExpiredFlow(final Integer expiredFlow) { + public final void setExpiredFlow(final Integer expiredFlow) { this.expiredFlow = expiredFlow; } - public Integer getTotal() { + public final Integer getTotal() { return total; } - public void setTotal(final Integer total) { + public final void setTotal(final Integer total) { this.total = total; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncCommonEnum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncCommonEnum.java index af66ee31..ec1a02a5 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncCommonEnum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncCommonEnum.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -19,7 +19,7 @@ public class UncCommonEnum { public static final int MAX_PHYSICAL_KEYTYPE = 0x3ff; /* Enumeration for Configuration Status. */ - public enum ConfigStatus{ + public enum ConfigStatus { UNC_CS_UNKNOWN, UNC_CS_APPLIED, UNC_CS_PARTIALLY_APPLIED, @@ -28,21 +28,9 @@ public class UncCommonEnum { UNC_CS_NOT_SUPPORTED } - /* Enumeration for Valid flag. */ -// public enum ValidFlag{ -// UNC_VF_INVALID, -// UNC_VF_VALID, -// UNC_VF_VALID_NO_VALUE, -// UNC_VF_NOT_SUPPORTED, -// UNC_VF_VALUE_NOT_MODIFIED -// } - /* Controller type enum. */ - public enum ControllerType{ - UNC_CT_UNKNOWN, - UNC_CT_OPENFLOW, - UNC_CT_OVERLAY, - UNC_CT_LEGACY + public enum ControllerType { + UNC_CT_UNKNOWN, UNC_CT_OPENFLOW, UNC_CT_OVERLAY, UNC_CT_LEGACY } /* Operation Status */ @@ -65,14 +53,23 @@ public class UncCommonEnum { /* JavaAPI return code */ public enum UncResultCode { - UNC_SUCCESS(200,"Success"), - UNC_CLIENT_ERROR(400,"Validation error for: "), - UNC_SERVER_ERROR(500, "IPC server error"); + UNC_SUCCESS(200, "Success"), + UNC_CLIENT_ERROR(400, "Invalid Argument("), + UNC_INVALID_FORMAT(40001, "Invalid Format"), + UNC_INVALID_ARGUMENT(40002, "Invalid Argument("), + UNC_NOT_FOUND(40400, "Not Found"), + UNC_METHOD_NOT_ALLOWED(40500, "Method Not Allowed"), + UNC_CONFLICT_FOUND(40901, "Duplicate Entity Exists"), + UNC_TOO_MANY_ENTITIES_FOUND(40902, "Too Many Entities Exis"), + UNC_SERVER_ERROR(500, "Internal Server Error"), + UNC_INTERNAL_SERVER_ERROR(50000, "Internal Server Error"), + UNC_SERVICE_UNAVILABLE(50301, "Server Busy"), + UNC_CTRL_NOT_FOUND(50051, "Controller Does Not Exist"); private final int value; private final String message; - private UncResultCode(final int value, final String message){ + private UncResultCode(final int value, final String message) { this.value = value; this.message = message; } @@ -80,7 +77,7 @@ public class UncCommonEnum { public int getValue() { return value; } - + public String getMessage() { return message; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncDataType.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncDataType.java index e5d52a51..830dde82 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncDataType.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncDataType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,12 +13,11 @@ package org.opendaylight.vtn.javaapi.ipc.enums; */ public enum UncDataType { - UNC_DT_INVALID, - UNC_DT_STATE, /* Entity database (State and Statistics) */ - UNC_DT_CANDIDATE, /* Candidate configuration */ - UNC_DT_RUNNING, /* Running configuration */ - UNC_DT_STARTUP, /* Startup configuration */ - UNC_DT_IMPORT, /* Import configuration */ + UNC_DT_INVALID, UNC_DT_STATE, /* Entity database (State and Statistics) */ + UNC_DT_CANDIDATE, /* Candidate configuration */ + UNC_DT_RUNNING, /* Running configuration */ + UNC_DT_STARTUP, /* Startup configuration */ + UNC_DT_IMPORT, /* Import configuration */ UNC_DT_AUDIT } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncErrorBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncErrorBean.java index 640899fa..0ad136f2 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncErrorBean.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncErrorBean.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -14,29 +14,37 @@ public class UncErrorBean { private String errorCode; private String javaAPIErrorMessage; private String southboundErrorMessage; - - public String getErrorCodeKey() { + + public final String getErrorCodeKey() { return errorCodeKey; } - public void setErrorCodeKey(String errorCodeKey) { + + public final void setErrorCodeKey(final String errorCodeKey) { this.errorCodeKey = errorCodeKey; } - public String getErrorCode() { + + public final String getErrorCode() { return errorCode; } - public void setErrorCode(String errorCode) { + + public final void setErrorCode(final String errorCode) { this.errorCode = errorCode; } - public String getJavaAPIErrorMessage() { + + public final String getJavaAPIErrorMessage() { return javaAPIErrorMessage; } - public void setJavaAPIErrorMessage(String javaAPIErrorMessage) { + + public final void setJavaAPIErrorMessage(final String javaAPIErrorMessage) { this.javaAPIErrorMessage = javaAPIErrorMessage; } - public String getSouthboundErrorMessage() { + + public final String getSouthboundErrorMessage() { return southboundErrorMessage; } - public void setSouthboundErrorMessage(String southboundErrorMessage) { + + public final void setSouthboundErrorMessage( + final String southboundErrorMessage) { this.southboundErrorMessage = southboundErrorMessage; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncIpcErrorCode.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncIpcErrorCode.java index cf4e4b07..44991128 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncIpcErrorCode.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncIpcErrorCode.java @@ -30,17 +30,17 @@ public class UncIpcErrorCode { private static final Map LOGICAL_CODES = new HashMap(); - private static final Map TC_CODES = new HashMap(); + private static final Map TC_CODES = new HashMap(); private static final Map SESSION_CODES = new HashMap(); private static final Map NODE_CODES = new HashMap(); private static final Map SYSMG_CODES = new HashMap(); - + /** - * Read the properties of logical and physical errors - * Create objects for UncErrorBean and set them in Map. + * Read the properties of logical and physical errors Create objects for + * UncErrorBean and set them in Map * * @throws VtnServiceException Failed to load error definition. */ @@ -69,84 +69,95 @@ public class UncIpcErrorCode { } /* - * load the TC errors and put the error enums objects in the map + * load the TC errors and put the error enums objects in the map */ - for(UncTCEnums.OperationStatus operationStatus : UncTCEnums.OperationStatus.values()){ + for (final UncTCEnums.OperationStatus operationStatus : UncTCEnums.OperationStatus + .values()) { TC_CODES.put(operationStatus.getCode(), operationStatus); } - + /* - * load the Session errors and put the error enums objects in the map + * load the Session errors and put the error enums objects in the map */ int index = 0; - for(UncSessionEnums.UsessIpcErrE operationStatus : UncSessionEnums.UsessIpcErrE.values()){ + for (final UncSessionEnums.UsessIpcErrE operationStatus : UncSessionEnums.UsessIpcErrE + .values()) { SESSION_CODES.put(index++, operationStatus); } - + /* - * load the Node errors and put the error enums objects in the map + * load the Node errors and put the error enums objects in the map */ index = 0; - for(UncSYSMGEnums.NodeIpcErrorT operationStatus : UncSYSMGEnums.NodeIpcErrorT.values()){ + for (final UncSYSMGEnums.NodeIpcErrorT operationStatus : UncSYSMGEnums.NodeIpcErrorT + .values()) { NODE_CODES.put(index++, operationStatus); } - + /* - * load the Node errors and put the error enums objects in the map + * load the Node errors and put the error enums objects in the map */ index = 0; - for(UncSYSMGEnums.MgmtIpcErrorT operationStatus : UncSYSMGEnums.MgmtIpcErrorT.values()){ + for (final UncSYSMGEnums.MgmtIpcErrorT operationStatus : UncSYSMGEnums.MgmtIpcErrorT + .values()) { SYSMG_CODES.put(index++, operationStatus.getMessage()); } } - + /** * Get error code enum for the received result code from UPPL + * * @param errorKey * @return */ - public static UncErrorBean getPhysicalError(final int errorKey){ + public static UncErrorBean getPhysicalError(final int errorKey) { return PHYSICAL_CODES.get(errorKey); } /** * Get error code enum for the received result code from UPLL + * * @param errorKey * @return */ - public static UncErrorBean getLogicalError(final int errorKey){ + public static UncErrorBean getLogicalError(final int errorKey) { return LOGICAL_CODES.get(errorKey); } - + /** * Get error message for the received result code from TC + * * @param errorKey * @return */ public static UncTCEnums.OperationStatus getTcCodes(final int errorKey) { return TC_CODES.get(errorKey); } - + /** * Get error message for the received result code from Session + * * @param errorKey * @return */ - public static UncSessionEnums.UsessIpcErrE getSessionCodes(final int errorKey) { + public static UncSessionEnums.UsessIpcErrE getSessionCodes( + final int errorKey) { return SESSION_CODES.get(errorKey); } - + /** * Get error message for the received result code from Node Manager + * * @param errorKey * @return */ public static UncSYSMGEnums.NodeIpcErrorT getNodeCodes(final int errorKey) { return NODE_CODES.get(errorKey); } - + /** * Get error message for the received result code from System Manager + * * @param errorKey * @return */ diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncJavaAPIErrorCode.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncJavaAPIErrorCode.java index aa8e6d0d..75b5c77a 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncJavaAPIErrorCode.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncJavaAPIErrorCode.java @@ -6,39 +6,43 @@ * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.javaapi.ipc.enums; public enum UncJavaAPIErrorCode { INIT_ERROR("ER001", "JavaAPI Initialization Failed"), - CONN_INIT_ERROR("ER002","Connection Initialization Failure"), - IPC_CONN_ERROR("ER003","IPC Connection Openning Failure"), - IPC_SESS_ERROR("ER004","IPC Session Creation Failure"), - SESS_ERROR("ER005","Session Creation Failure"), - ROLLBACK_ERROR("ER006","Rollbacking Operation Failure"), - IPC_OP_ERROR("ER007","IPC Operation Failure"), - IPC_SERVER_ERROR("ER008","IPC Server Error"), - INTERNAL_ERROR("ER009","VtnService Internal Failure"), + CONN_INIT_ERROR("ER002", "Connection Initialization Failure"), + IPC_CONN_ERROR("ER003", "IPC Connection Openning Failure"), + IPC_SESS_ERROR("ER004", "IPC Session Creation Failure"), + SESS_ERROR("ER005", "Session Creation Failure"), + ROLLBACK_ERROR("ER006", "Rollbacking Operation Failure"), + IPC_OP_ERROR("ER007", "IPC Operation Failure"), + IPC_SERVER_ERROR("ER008", "IPC Server Error"), + INTERNAL_ERROR("ER009", "VtnService Internal Failure"), RESOURCE_PATH_ERROR("ER010", "Set Resource Path Failure"), - POST_ERROR("ER011","Post Operation Failure"), - PUT_ERROR("ER012","Put Operation Failure"), - GET_ERROR("ER013","Get Operation Failure"), - DELETE_ERROR("ER014","Delete Operation Failure"), + POST_ERROR("ER011", "Post Operation Failure"), + PUT_ERROR("ER012", "Put Operation Failure"), + GET_ERROR("ER013", "Get Operation Failure"), + DELETE_ERROR("ER014", "Delete Operation Failure"), RESOURCE_NOT_FOUND_ERROR("ER015", "Resource Not Found Error"), - VALIDATION_ERROR("ER016","Validation Failure"), - - RESOURCE_SCAN_ERROR("ER017","Resource Package Scanning Failure"), - RESOURCE_LOAD_ERROR("ER018","Resource Loading Failure"), - - COMMON_CONFIG_ERROR("ER019","Resource Loading Failure"), - APP_CONFIG_ERROR("ER020","Resource Loading Failure"), - POOL_SIZE_ERROR("ER021","Connection Pool Size Invalid"); - + VALIDATION_ERROR("ER016", "Validation Failure"), + + RESOURCE_SCAN_ERROR("ER017", "Resource Package Scanning Failure"), + RESOURCE_LOAD_ERROR("ER018", "Resource Loading Failure"), + + COMMON_CONFIG_ERROR("ER019", "Resource Loading Failure"), + APP_CONFIG_ERROR("ER020", "Resource Loading Failure"), + POOL_SIZE_ERROR("ER021", "Connection Pool Size Invalid"), + + DB_CONN_INIT_ERROR("ER022", "Database Connection Initialization Failure"); + private String errorCode; private String errorMessage; - private UncJavaAPIErrorCode(final String errorCode,final String errorMessage) { + private UncJavaAPIErrorCode(final String errorCode, + final String errorMessage) { this.errorCode = errorCode; this.errorMessage = errorMessage; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncKeyTypeEnum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncKeyTypeEnum.java index 12707b31..bae6515f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncKeyTypeEnum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncKeyTypeEnum.java @@ -1,11 +1,12 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.javaapi.ipc.enums; /** @@ -63,24 +64,28 @@ public enum UncKeyTypeEnum { UNC_KT_VTN_FLOWFILTER_CONTROLLER(0x02e), UNC_KT_VTN_PATHMAP_ENTRY(0x02f), UNC_KT_VTN_PATHMAP_CONTROLLER(0x030), + UNC_KT_VTN_DATAFLOW(0x031), /* UPPL: 0x200~0x3ff */ UNC_KT_CONTROLLER(0x200), UNC_KT_SWITCH(0x201), UNC_KT_PORT(0x202), - UNC_KT_LINK(0x203), - UNC_KT_DOMAIN(0x204), - UNC_KT_LOGICAL_PORT(0x205), - UNC_KT_LOGICAL_MEMBER_PORT(0x206), - UNC_KT_BOUNDARY(0x207); - + UNC_KT_LINK(0x203), + UNC_KT_DOMAIN(0x204), + UNC_KT_LOGICAL_PORT(0x205), + UNC_KT_LOGICAL_MEMBER_PORT(0x206), + UNC_KT_BOUNDARY(0x207), + UNC_KT_DATAFLOW(0x208), + UNC_KT_CTR_DATAFLOW(0x209); + private final int value; /** * Instantiates a new unc key type enum. * - * @param value the value + * @param value + * the value */ - private UncKeyTypeEnum(final int value){ + private UncKeyTypeEnum(final int value) { this.value = value; } @@ -89,7 +94,7 @@ public enum UncKeyTypeEnum { * * @return the value */ - public int getValue(){ + public int getValue() { return value; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption1Enum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption1Enum.java index dbca681e..7aa99c81 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption1Enum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption1Enum.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,7 +13,7 @@ package org.opendaylight.vtn.javaapi.ipc.enums; */ public enum UncOption1Enum { - UNC_OPT1_NORMAL, /* normal */ - UNC_OPT1_DETAIL, /* detail */ - UNC_OPT1_COUNT /* count */ + UNC_OPT1_NORMAL, /* normal */ + UNC_OPT1_DETAIL, /* detail */ + UNC_OPT1_COUNT /* count */ } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption2Enum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption2Enum.java index e73ff7c9..8b8c4442 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption2Enum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncOption2Enum.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,20 +13,21 @@ package org.opendaylight.vtn.javaapi.ipc.enums; */ public enum UncOption2Enum { - UNC_OPT2_NONE, /* none */ - UNC_OPT2_L2DOMAIN, /* l2-domain */ - UNC_OPT2_MAC_ENTRY, /* mac-entry */ - UNC_OPT2_MAC_ENTRY_DYNAMIC, /* mac-entry-dynamic */ - UNC_OPT2_MAC_ENTRY_STATIC, /* mac-entry-static */ - UNC_OPT2_NEIGHBOR, /* neighbor */ - UNC_OPT2_ARP_ENTRY, /* arp-entry */ - UNC_OPT2_ARP_ENTRY_DYNAMIC, /* arp-entry-dynamic */ - UNC_OPT2_ARP_ENTRY_STATIC, /* arp-entry-static */ - UNC_OPT2_DHCP_RELAY, /* dhcp-relay */ - UNC_OPT2_IP_ROUTE, /* ip-route */ - UNC_OPT2_PING, /* ping */ - UNC_OPT2_CLEAR_ARPAGENT, /* clear arpagent */ - UNC_OPT2_MATCH_SWITCH1, /* match-switch1 */ - UNC_OPT2_MATCH_SWITCH2, /* match-switch2 */ - UNC_OPT2_MATCH_BOTH_SWITCH /* match-both-switch */ + UNC_OPT2_NONE, /* none */ + UNC_OPT2_L2DOMAIN, /* l2-domain */ + UNC_OPT2_MAC_ENTRY, /* mac-entry */ + UNC_OPT2_MAC_ENTRY_DYNAMIC, /* mac-entry-dynamic */ + UNC_OPT2_MAC_ENTRY_STATIC, /* mac-entry-static */ + UNC_OPT2_NEIGHBOR, /* neighbor */ + UNC_OPT2_ARP_ENTRY, /* arp-entry */ + UNC_OPT2_ARP_ENTRY_DYNAMIC, /* arp-entry-dynamic */ + UNC_OPT2_ARP_ENTRY_STATIC, /* arp-entry-static */ + UNC_OPT2_DHCP_RELAY, /* dhcp-relay */ + UNC_OPT2_IP_ROUTE, /* ip-route */ + UNC_OPT2_PING, /* ping */ + UNC_OPT2_CLEAR_ARPAGENT, /* clear arpagent */ + UNC_OPT2_MATCH_SWITCH1, /* match-switch1 */ + UNC_OPT2_MATCH_SWITCH2, /* match-switch2 */ + UNC_OPT2_MATCH_BOTH_SWITCH, /* match-both-switch */ + UNC_OPT2_SIBLING_ALL /* return all sibling details */ } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncPhysicalStructIndexEnum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncPhysicalStructIndexEnum.java index 5a549aca..484d1310 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncPhysicalStructIndexEnum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncPhysicalStructIndexEnum.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,11 +31,21 @@ public class UncPhysicalStructIndexEnum { }; public enum UpplValSwitchStIndex { - kIdxSwitch, kIdxSwitchOperStatus, kIdxSwitchManufacturer, kIdxSwitchHardware, kIdxSwitchSoftware, kIdxSwitchAlarmStatus + kIdxSwitch, + kIdxSwitchOperStatus, + kIdxSwitchManufacturer, + kIdxSwitchHardware, + kIdxSwitchSoftware, + kIdxSwitchAlarmStatus }; public enum UpplValSwitchIndex { - kIdxSwitchDescription, kIdxSwitchModel, kIdxSwitchIPAddress, kIdxSwitchIPV6Address, kIdxSwitchAdminStatus, kIdxSwitchDomainName + kIdxSwitchDescription, + kIdxSwitchModel, + kIdxSwitchIPAddress, + kIdxSwitchIPV6Address, + kIdxSwitchAdminStatus, + kIdxSwitchDomainName }; public enum UpplSwitchAdminStatus { @@ -51,10 +61,9 @@ public class UncPhysicalStructIndexEnum { } }; - public enum UpplPortAdminStatus{ - UPPL_PORT_ADMIN_UP("0"), - UPPL_PORT_ADMIN_DOWN("1"); - + public enum UpplPortAdminStatus { + UPPL_PORT_ADMIN_UP("0"), UPPL_PORT_ADMIN_DOWN("1"); + private final String value; private UpplPortAdminStatus(final String value) { @@ -65,9 +74,9 @@ public class UncPhysicalStructIndexEnum { return value; } } - - public enum UpplPortOperStatus{ - + + public enum UpplPortOperStatus { + UPPL_PORT_OPER_DOWN("0"), UPPL_PORT_OPER_UP("1"), UPPL_PORT_OPER_UNKNOWN("2"); @@ -81,17 +90,44 @@ public class UncPhysicalStructIndexEnum { return value; } } + public enum UpplValPortStIndex { - kIdxPortSt, kIdxPortOperStatus, kIdxPortMacAddress, kIdxPortDirection, kIdxPortDuplex, kIdxPortSpeed, kIdxPortAlarmsStatus, kIdxPortLogicalPortId; + kIdxPortSt, + kIdxPortOperStatus, + kIdxPortMacAddress, + kIdxPortDirection, + kIdxPortDuplex, + kIdxPortSpeed, + kIdxPortAlarmsStatus, + kIdxPortLogicalPortId; } + public enum UpplValPortStatsIndex { + kIdxPortStatSt, + kIdxPortStatRxPackets, + kIdxPortStatTxPackets, + kIdxPortStatRxBytes, + kIdxPortStatTxBytes, + kIdxPortStatRxDropped, + kIdxPortStatTxDropped, + kIdxPortStatRxErrors, + kIdxPortStatTxErrors, + kIdxPortStatRxFrameErr, + kIdxPortStatRxOverErr, + kIdxPortStatRxCrcErr, + kIdxPortStatCollisions + }; + public enum UpplValPortNeighborIndex { kIdxPort, kIdxPortConnectedSwitchId, kIdxPortConnectedPortId; } public enum UpplValPortIndex { - kIdxPortNumber, kIdxPortDescription, kIdxPortAdminStatus, kIdxPortTrunkAllowedVlan; + kIdxPortNumber, + kIdxPortDescription, + kIdxPortAdminStatus, + kIdxPortTrunkAllowedVlan; }; public enum UpplPortDuplex { @@ -109,8 +145,9 @@ public class UncPhysicalStructIndexEnum { } public enum UpplPortDirection { - UPPL_PORT_DIR_INTERNEL(0), UPPL_PORT_DIR_EXTERNAL(1), UPPL_PORT_DIR_UNKNOWN( - 2); + UPPL_PORT_DIR_INTERNEL(0), + UPPL_PORT_DIR_EXTERNAL(1), + UPPL_PORT_DIR_UNKNOWN(2); private final int value; @@ -124,8 +161,9 @@ public class UncPhysicalStructIndexEnum { } public enum UpplSwitchPortAlarmsStatus { - UPPL_ALARMS_DEFAULT_FLOW(0), UPPL_ALARMS_PORT_DIRECTION(1), UPPL_ALARMS_PORT_CONGES( - 2); + UPPL_ALARMS_DEFAULT_FLOW(0), + UPPL_ALARMS_PORT_DIRECTION(1), + UPPL_ALARMS_PORT_CONGES(2); private final int value; @@ -139,8 +177,9 @@ public class UncPhysicalStructIndexEnum { } public enum UpplSwitchOperStatus { - UPPL_SWITCH_OPER_DOWN("0"), UPPL_SWITCH_OPER_UP("1"), UPPL_SWITCH_OPER_UNKNOWN( - "2"); + UPPL_SWITCH_OPER_DOWN("0"), + UPPL_SWITCH_OPER_UP("1"), + UPPL_SWITCH_OPER_UNKNOWN("2"); private final String value; @@ -154,7 +193,14 @@ public class UncPhysicalStructIndexEnum { }; public enum UpplValCtrIndex { - kIdxType, kIdxVersion, kIdxDescription, kIdxIpAddress, kIdxUser, kIdxPassword, kIdxEnableAudit + kIdxType, + kIdxVersion, + kIdxDescription, + kIdxIpAddress, + kIdxUser, + kIdxPassword, + kIdxEnableAudit, + kIdxPort }; // Not mapped with updated header file- Poorvi @@ -173,22 +219,25 @@ public class UncPhysicalStructIndexEnum { } }; - - - public enum UpplValBoundaryIndex { - kIdxBoundaryDescription, kIdxBoundaryControllerName1, kIdxBoundaryDomainName1, kIdxBoundaryLogicalPortId1, kIdxBoundaryControllerName2, kIdxBoundaryDomainName2, kIdxBoundaryLogicalPortId2 + kIdxBoundaryDescription, + kIdxBoundaryControllerName1, + kIdxBoundaryDomainName1, + kIdxBoundaryLogicalPortId1, + kIdxBoundaryControllerName2, + kIdxBoundaryDomainName2, + kIdxBoundaryLogicalPortId2 } public enum UpplValBoundaryStIndex { kIdxBoundaryStBoundary, kIdxBoundaryStOperStatus }; - + public enum UpplBoundaryOperStatus { UPPL_BOUNDARY_OPER_DOWN("0"), - UPPL_BOUNDARY_OPER_UP("1"), - UPPL_BOUNDARY_OPER_UNKNOWN("2"); + UPPL_BOUNDARY_OPER_UP("1"), + UPPL_BOUNDARY_OPER_UNKNOWN("2"); private final String value; @@ -202,8 +251,9 @@ public class UncPhysicalStructIndexEnum { }; public enum UpplDomainOperStatus { - UPPL_SWITCH_OPER_DOWN("0"), UPPL_SWITCH_OPER_UP("1"), UPPL_SWITCH_OPER_UNKNOWN( - "2"); + UPPL_SWITCH_OPER_DOWN("0"), + UPPL_SWITCH_OPER_UP("1"), + UPPL_SWITCH_OPER_UNKNOWN("2"); private final String value; @@ -230,7 +280,7 @@ public class UncPhysicalStructIndexEnum { } }; - //Controller Response + // Controller Response public enum UpplValCtrStIndex { kIdxController, kIdxActualVersion, kIdxOperStatus }; @@ -239,37 +289,31 @@ public class UncPhysicalStructIndexEnum { kIdxLinkDescription }; - public enum UpplValLinkStIndex{ - kIdxLinkStLink, - kIdxLinkStOperStatus, + public enum UpplValLinkStIndex { + kIdxLinkStLink, kIdxLinkStOperStatus, }; - /*public enum upplvallogicalportindex{ - kIdxLogicalPortDescription , - kIdxLogicalPortType, - kIdxLogicalPortSwitchId, - kIdxLogicalPortPhysicalPortId, - kIdxLogicalPortOperDownCriteria - };*/ - + /* + * public enum upplvallogicalportindex{ kIdxLogicalPortDescription , + * kIdxLogicalPortType, kIdxLogicalPortSwitchId, + * kIdxLogicalPortPhysicalPortId, kIdxLogicalPortOperDownCriteria }; + */ - public enum UpplValLogicalPortStIndex{ - kIdxLogicalPortSt, - kIdxLogicalPortStOperStatus + public enum UpplValLogicalPortStIndex { + kIdxLogicalPortSt, kIdxLogicalPortStOperStatus }; - public enum UpplValLogicalPortIndex{ + + public enum UpplValLogicalPortIndex { kIdxLogicalPortDescription, kIdxLogicalPortType, kIdxLogicalPortSwitchId, kIdxLogicalPortPhysicalPortId, kIdxLogicalPortOperDownCriteria }; + public enum UpplLogicalPortType { - UPPL_LP_SWITCH("1"), - UPPL_LP_PHYSICAL_PORT("2"), - UPPL_LP_TRUNK_PORT("11"), - UPPL_LP_SUBDOMAIN("12"), - UPPL_LP_TUNNEL_ENDPOINT("13"); + UPPL_LP_SWITCH("1"), UPPL_LP_PHYSICAL_PORT("2"), UPPL_LP_TRUNK_PORT( + "11"), UPPL_LP_SUBDOMAIN("12"), UPPL_LP_TUNNEL_ENDPOINT("13"); private final String value; private UpplLogicalPortType(final String value) { @@ -280,30 +324,104 @@ public class UncPhysicalStructIndexEnum { return value; } }; - public enum UpplLogicalPortOperDownCriteria{ - UPPL_OPER_DOWN_CRITERIA_ANY("0"), - UPPL_OPER_DOWN_CRITERIA_ALL("1"); - private final String value; - private UpplLogicalPortOperDownCriteria(final String value) { - this.value = value; - } - - public String getValue() { - return value; - } - }; - public enum UpplLogicalPortOperStatus{ - UPPL_LOGICAL_PORT_OPER_DOWN("0"), - UPPL_LOGICAL_PORT_OPER_UP("1"), - UPPL_LOGICAL_PORT_OPER_UNKNOWN("2"); - private final String value; - private UpplLogicalPortOperStatus(final String value) { - this.value = value; - } - - public String getValue() { - return value; - } - }; + + public enum UpplLogicalPortOperDownCriteria { + UPPL_OPER_DOWN_CRITERIA_ANY("0"), UPPL_OPER_DOWN_CRITERIA_ALL("1"); + private final String value; + + private UpplLogicalPortOperDownCriteria(final String value) { + this.value = value; + } + + public String getValue() { + return value; + } + }; + + public enum UpplLogicalPortOperStatus { + UPPL_LOGICAL_PORT_OPER_DOWN("0"), + UPPL_LOGICAL_PORT_OPER_UP("1"), + UPPL_LOGICAL_PORT_OPER_UNKNOWN("2"); + private final String value; + + private UpplLogicalPortOperStatus(final String value) { + this.value = value; + } + + public String getValue() { + return value; + } + }; + + // All DATAFLOW Enums + public enum UncValDfDataflowIndex { + kidxDfDataFlowReason, kidxDfDataFlowControllerCount; + }; + + public enum UncValDfDataflowCmnIndex { + kidxDfDataFlowControllerName, + kidxDfDataFlowControllerType, + kidxDfDataFlowFlowId, + kidxDfDataFlowStatus, + kidxDfDataFlowFlowType, + kidxDfDataFlowPolicyIndex, + kidxDfDataFlowVtnId, + kidxDfDataFlowIngressSwitchId, + kidxDfDataFlowInPort, + kidxDfDataFlowInStationId, + kidxDfDataFlowInDomain, + kidxDfDataFlowEgressSwitchId, + kidxDfDataFlowOutPort, + kidxDfDataFlowOutStationId, + kidxDfDataFlowOutDomain, + kidxDfDataFlowPathInfoCount, + kidxDfDataFlowMatchCount, + kidxDfDataFlowActionCount + }; + + public enum UncDataflowStatus { + UNC_DF_STAT_INIT, + UNC_DF_STAT_ACTIVATING, + UNC_DF_STAT_ACTIVE, + UNC_DF_STAT_SWITCHING + }; + + public enum UncDataflowFlowType { + UNC_DF_TYPE_VTN + }; + + public enum UncValDfDataflowPathInfoIndex { + kidxDfDataFlowPathInfoSwitchId, + kidxDfDataFlowPathInfoInPort, + kidxDfDataFlowPathInfoOutPort; + } + + public enum UncValDfDataflowStIndex { + kidxDfDataFlowStPackets, + kidxDfDataFlowStOctets, + kidxDfDataFlowStDuration; + + }; + + public enum upplVaPortStatsIndex { + kIdxPortStatSt, + kIdxPortStatRxPackets, + kIdxPortStatTxPackets, + kIdxPortStatRxBytes, + kIdxPortStatTxBytes, + kIdxPortStatRxDropped, + kIdxPortStatTxDropped, + kIdxPortStatRxErrors, + kIdxPortStatTxErrors, + kIdxPortStatRxFrameErr, + kIdxPortStatRxOverErr, + kIdxPortStatRxCrcErr, + kIdxPortStatCollisions + + }; + + public enum UpplValSwitchStDetailIndex { + kIdxSwitchSt, kIdxSwitchStatFlowCount + }; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSYSMGEnums.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSYSMGEnums.java index 20af548f..995b904f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSYSMGEnums.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSYSMGEnums.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -8,7 +8,6 @@ */ package org.opendaylight.vtn.javaapi.ipc.enums; -// TODO: Auto-generated Javadoc /** * The Class UncSYSMGEnums. */ @@ -25,65 +24,62 @@ public class UncSYSMGEnums { /** * The Enum NodeMgrServiceID. */ - public enum NodeMgrServiceID{ - kNomgSoftVersionGet , - kAlarmStatusListGet, - kAlarmClear, - kResourceStatusGet, - kNomgIpcNipcs, // Number of IPC Service IDs + public enum NodeMgrServiceID { + kNomgSoftVersionGet, + kAlarmStatusListGet, + kAlarmClear, + kResourceStatusGet, + kNomgIpcNipcs; } - - // Management IPC Service ID + + // Management IPC Service ID /** * The Enum MgmtServiceID. */ - public enum MgmtServiceID{ - kMgmtSyslogSeveritySet , - kMgmtSyslogSeverityUnset, - kMgmtSyslogSeverityGetSettings, - kMgmtTracelogSeveritySet, - kMgmtTracelogSeverityUnset, - kMgmtTracelogSeverityGetSettings, - kMgmtTrapEnableSet, - kMgmtTrapEnableUnset, - kMgmtTrapEnableGetSettings, - kMgmtTrapDestinationSet, - kMgmtTrapDestinationUnset, - kMgmtTrapDestinationGetSettings, - kMgmtTrapSourceSet, - kMgmtTrapSourceUnset, - kMgmtTrapSourceGetSettings, - kMgmtPromptSet, - kMgmtPromptUnset, - kMgmtPromptGetSettings, - kMgmtServiceCount; // Number of IPC Service IDs - - - - } + public enum MgmtServiceID { + kMgmtSyslogSeveritySet, + kMgmtSyslogSeverityUnset, + kMgmtSyslogSeverityGetSettings, + kMgmtTracelogSeveritySet, + kMgmtTracelogSeverityUnset, + kMgmtTracelogSeverityGetSettings, + kMgmtTrapEnableSet, + kMgmtTrapEnableUnset, + kMgmtTrapEnableGetSettings, + kMgmtTrapDestinationSet, + kMgmtTrapDestinationUnset, + kMgmtTrapDestinationGetSettings, + kMgmtTrapSourceSet, + kMgmtTrapSourceUnset, + kMgmtTrapSourceGetSettings, + kMgmtPromptSet, + kMgmtPromptUnset, + kMgmtPromptGetSettings, + kMgmtServiceCount; + } // Nomg Return code /** * The Enum NodeMgrReturnCode. */ - public enum NodeIpcErrorT{ - NOMG_E_OK(200, "Success"), - NOMG_E_NG(500, "Error"), - NOMG_E_NOENT(400, "No Entry"), - NOMG_E_INVAL(500, "Invalid"), - NOMG_E_INITING(500, "Initiating"), - NOMG_E_ABRT(500, "Abort"); - - private String message; - private int code; - + public enum NodeIpcErrorT { + NOMG_E_OK(200, "Success"), + NOMG_E_NG(50000, "Error"), + NOMG_E_NOENT(50000, "No Entry"), + NOMG_E_INVAL(50000, "Invalid"), + NOMG_E_INITING(50301, "Server Busy"), + NOMG_E_ABRT(50000, "Abort"); + + private final String message; + private final int code; + /** * Instantiates a new node mgr return code. * * @param message * the message */ - private NodeIpcErrorT(int code, String message) { + private NodeIpcErrorT(final int code, final String message) { this.code = code; this.message = message; } @@ -92,11 +88,11 @@ public class UncSYSMGEnums { * Gets the code. * * @return the code - */ + */ public int getCode() { return code; } - + /** * Gets the message. * @@ -105,78 +101,80 @@ public class UncSYSMGEnums { public String getMessage() { return message; } - } + } // Management Return code /** * The Enum MgmtReturnCode. */ - public enum MgmtIpcErrorT{ - MGMT_E_OK("Success"), - MGMT_E_NG("Error"), - MGMT_E_NO_ENTRY("No entry"), - MGMT_E_DB_ACCESS_FAILED("Database access failed"), - MGMT_E_INVALID_APLNAME("Invalid name"), - MGMT_E_INVALID_LEVEL("Invalid level"), - MGMT_E_INVALID_DESTINATION("Invalid destination"), - MGMT_E_INVALID_COMMUNITY("Invalid community"), - MGMT_E_INVALID_IPADDR("Invalid IP address"), - MGMT_E_INVALID_PROMPT("Invalid promt"); - - private String message; + public enum MgmtIpcErrorT { + MGMT_E_OK("Success"), + MGMT_E_NG("Error"), + MGMT_E_NO_ENTRY("No entry"), + MGMT_E_DB_ACCESS_FAILED("Database access failed"), + MGMT_E_INVALID_APLNAME("Invalid name"), + MGMT_E_INVALID_LEVEL("Invalid level"), + MGMT_E_INVALID_DESTINATION("Invalid destination"), + MGMT_E_INVALID_COMMUNITY("Invalid community"), + MGMT_E_INVALID_IPADDR("Invalid IP address"), + MGMT_E_INVALID_PROMPT("Invalid promt"); + + private final String message; /** * Instantiates a new mgmt return code. - * - * @param message the message + * + * @param message + * the message */ - private MgmtIpcErrorT(String message) { + private MgmtIpcErrorT(final String message) { this.message = message; } - + /** * Gets the message. - * + * * @return the message */ public String getMessage() { return message; } } - + // Management Return code - /** + /** * The Enum AlarmLevelT. */ - public enum AlarmLevelT{ - ALM_EMERG("0"), - ALM_ALERT("1"), - ALM_CRITICAL("2"), - ALM_ERROR("3"), - ALM_WARNING("4"), - ALM_NOTICE("5"), - ALM_INFO("6"), - ALM_DEBUG("7"); - - private String value; - - /** - * Instantiates a new alarm level t. - * - * @param value the value - */ - private AlarmLevelT(final String value) { - this.value = value; - } - - /** - * Gets the value. - * - * @return the value - */ - public String getValue() { - return value; - } + public enum AlarmLevelT { + ALM_EMERG("0"), + ALM_ALERT("1"), + ALM_CRITICAL("2"), + ALM_ERROR("3"), + ALM_WARNING("4"), + ALM_NOTICE("5"), + ALM_INFO("6"), + ALM_DEBUG("7"); + private final String value; + + /** + * Instantiates a new alarm level t. + * + * @param value + * the value + */ + private AlarmLevelT(final String value) { + this.value = value; } + + /** + * Gets the value. + * + * @return the value + */ + public String getValue() { + return value; + } + + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSessionEnums.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSessionEnums.java index e99e1786..1312680f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSessionEnums.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncSessionEnums.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -20,7 +20,7 @@ public class UncSessionEnums { public enum ServiceID { kUsessSessAdd, // add user authentication and session. kUsessSessDel, // delete the session. - kUsessSessTypeDel,// delete session of specified session type. + kUsessSessTypeDel, // delete session of specified session type. kUsessEnable, // authenticate enable. kUsessDisable, // to cancel the state of the enable. kUsessSessCount, // gets number of sessions. @@ -32,37 +32,37 @@ public class UncSessionEnums { } // Type of user session. - public enum UsessTypeE{ - USESS_TYPE_UNKNOWN("0"), // Unknown session type. - USESS_TYPE_CLI("1"), // CLI session type. - USESS_TYPE_CLI_DAEMON("2"), // Resident CLI session type. - USESS_TYPE_WEB_API("3"), // WEB API session type. + public enum UsessTypeE { + USESS_TYPE_UNKNOWN("0"), // Unknown session type. + USESS_TYPE_CLI("1"), // CLI session type. + USESS_TYPE_CLI_DAEMON("2"), // Resident CLI session type. + USESS_TYPE_WEB_API("3"), // WEB API session type. USESS_TYPE_WEB_UI("4"); private final String value; - private UsessTypeE(final String value){ + private UsessTypeE(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } } // Type of user. public enum UserTypeE { - USER_TYPE_UNKNOWN("0"), // Unknown user. - USER_TYPE_OPER("1"), // operator user. - USER_TYPE_ADMIN("2"); // administrator user. + USER_TYPE_UNKNOWN("0"), // Unknown user. + USER_TYPE_OPER("1"), // operator user. + USER_TYPE_ADMIN("2"); // administrator user. private final String value; - private UserTypeE(final String value){ + private UserTypeE(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } } @@ -104,20 +104,20 @@ public class UncSessionEnums { // error code. public enum UsessIpcErrE { USESS_E_OK(200, "Success"), // success. - USESS_E_NG(500, "Internal error"), // error. - USESS_E_INVALID_SESSID(400, "Invalid current session ID"), // Invalid current session ID. - USESS_E_NO_SUCH_SESSID(404, "Invalid target session ID"), // Invalid target session ID. - USESS_E_INVALID_PRIVILEGE(403, "Invalid privileges"), // Invalid privileges - USESS_E_INVALID_MODE(400, "Invalid mode"), // Invalid mode. - USESS_E_INVALID_SESSTYPE(400, "Invalid session type"), // Invalid session type. - USESS_E_INVALID_USER(400, "Invalid user name"), // Invalid user name. - USESS_E_INVALID_PASSWD(400, "Invalid password"), // Invalid password. - USESS_E_SESS_OVER(500, "Over the number of user sessions"); // Over the number of user sessions - - private String message; - private int code; - - private UsessIpcErrE(int code, String message) { + USESS_E_NG(50000, "Internal error"), // error. + USESS_E_INVALID_SESSID(50000, "Invalid current session ID"), + USESS_E_NO_SUCH_SESSID(50000, "Invalid target session ID"), + USESS_E_INVALID_PRIVILEGE(50000, "Invalid privileges"), + USESS_E_INVALID_MODE(50000, "Invalid mode"), + USESS_E_INVALID_SESSTYPE(50000, "Invalid session type"), + USESS_E_INVALID_USER(50000, "Invalid user name"), + USESS_E_INVALID_PASSWD(50000, "Invalid password"), + USESS_E_SESS_OVER(50000, "Over the number of user sessions"); + + private final String message; + private final int code; + + private UsessIpcErrE(final int code, final String message) { this.code = code; this.message = message; } @@ -125,7 +125,7 @@ public class UncSessionEnums { public String getMessage() { return message; } - + public int getCode() { return code; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructEnum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructEnum.java index 336af18b..996ccd28 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructEnum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructEnum.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -27,7 +27,7 @@ public enum UncStructEnum { KeyDhcpRelayIf("key_dhcp_relay_if"), KeyDhcpRelayServer("key_dhcp_relay_server"), KeyVunknown("key_vunknown"), - //vUnknown(""), + // vUnknown(""), KeyFlowListEntry("key_flowlist_entry"), ValFlowListEntry("val_flowlist_entry"), KeyVtnstationController("key_vtnstation_controller"), @@ -63,7 +63,7 @@ public enum UncStructEnum { KeyVrtIfFlowFilterEntry("key_vrt_if_flowfilter_entry"), ValVrtArpEntrySt("val_vrt_arp_entry_st"), KeyVbrIfFlowFilter("key_vbr_if_flowfilter"), - //ValVbrL2DomainSt(""), + // ValVbrL2DomainSt(""), KeyStaticIpRoute("key_static_ip_route"), ValStaticIpRoute("val_static_ip_route"), KeyVbrFlowFilter("key_vbr_flowfilter"), @@ -92,18 +92,33 @@ public enum UncStructEnum { KeyBoundary("key_boundary"), ValBoundary("val_boundary"), - //usess_ipc_req_sess_id(""), + // usess_ipc_req_sess_id(""), usessIpcReqUserPasswd("usess_ipc_req_user_passwd"), KeyPort("key_port"), - KeyLink("key_link"), - ValPort("val_port"), + KeyLink("key_link"), + ValPort("val_port"), ValPortSt("val_port_st"), ValPortStNeighbour("val_port_st_neighbor"), KeyLogicalPort("key_logical_port"), KeyLogicalMemberPort("key_logical_member_port"), - UsessIpcReqSessEnable("usess_ipc_req_sess_enable"); - + UsessIpcReqSessEnable("usess_ipc_req_sess_enable"), + // Vtn Data Flow + KeyVtnDataflow("key_vtn_dataflow"), + ValVtnDataflow("val_vtn_dataflow"), + // VTerminal + KeyVterm("key_vterm"), + ValVterm("val_vterm"), + KeyVtermIf("key_vterm_if"), + ValVtermIf("val_vterm_if"), + ValVtermIfSt("val_vterm_if_st"), + KeyVtermIfFlowFilter("key_vterm_if_flowfilter"), + KeyVtermIfFlowFilterEntry("key_vterm_if_flowfilter_entry"), + KeyDataFlow("key_dataflow"), + KeyCtrDataFlow("key_ctr_dataflow"), + // VTN Mapping + KeyVtnController("key_vtn_controller"), + ValVtnMappingControllerSt("val_vtn_mapping_controller_st"); private String value; private UncStructEnum(final String value) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructIndexEnum.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructIndexEnum.java index 3cf12e5a..4bb57bba 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructIndexEnum.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncStructIndexEnum.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,17 +10,19 @@ package org.opendaylight.vtn.javaapi.ipc.enums; public class UncStructIndexEnum { // valid - public enum Valid{ + public enum Valid { UNC_VF_INVALID, UNC_VF_VALID, UNC_VF_VALID_NO_VALUE, UNC_VF_NOT_SUPPORTED, UNC_VF_VALUE_NOT_MODIFIED }; + // vtn - public enum ValVtnIndex{ + public enum ValVtnIndex { UPLL_IDX_DESC_VTN }; + // vtn response public enum ValVtnStIndex { UPLL_IDX_OPER_STATUS_VS, @@ -32,12 +34,12 @@ public class UncStructIndexEnum { public enum ValVtunnelIfIndex { UPLL_IDX_DESC_VTNL_IF, UPLL_IDX_ADMIN_ST_VTNL_IF, - UPLL_IDX_PORT_MAP_VTNL_IF + UPLL_IDX_PORT_MAP_VTNL_IF }; public enum ValVlinkIndex { - UPLL_IDX_ADMIN_STATUS_VLNK , + UPLL_IDX_ADMIN_STATUS_VLNK, UPLL_IDX_VNODE1_NAME_VLNK, UPLL_IDX_VNODE1_IF_NAME_VLNK, UPLL_IDX_VNODE2_NAME_VLNK, @@ -56,34 +58,32 @@ public class UncStructIndexEnum { public enum ValVtepIfIndex { - UPLL_IDX_DESC_VTEPI , - UPLL_IDX_ADMIN_ST_VTEPI, - UPLL_IDX_PORT_MAP_VTEPI + UPLL_IDX_DESC_VTEPI, UPLL_IDX_ADMIN_ST_VTEPI, UPLL_IDX_PORT_MAP_VTEPI }; - public enum ValVtepGroupMemberIndex{ - UPLL_IDX_VTEPGRP_KEY, - UPLL_IDX_VTEPMEMBER_NAME + public enum ValVtepGroupMemberIndex { + UPLL_IDX_VTEPGRP_KEY, UPLL_IDX_VTEPMEMBER_NAME }; + public enum FlowlistIpType { - UPLL_FLOWLIST_TYPE_IP("0"), - UPLL_FLOWLIST_TYPE_IPV6("1"); + UPLL_FLOWLIST_TYPE_IP("0"), UPLL_FLOWLIST_TYPE_IPV6("1"); private final String value; - - private FlowlistIpType(final String value){ + private FlowlistIpType(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } }; - public enum ValFlowlistIndex { + + public enum ValFlowlistIndex { UPLL_IDX_IP_TYPE_FL }; + public enum ValFlowlistEntryIndex { UPLL_IDX_MAC_DST_FLE, UPLL_IDX_MAC_SRC_FLE, @@ -108,6 +108,7 @@ public class UncStructIndexEnum { UPLL_IDX_ICMP_V6_TYPE_FLE, UPLL_IDX_ICMP_V6_CODE_FLE }; + public enum ValVtnFlowfilterEntryIndex { UPLL_IDX_FLOWLIST_NAME_VFFE, UPLL_IDX_ACTION_VFFE, @@ -115,8 +116,8 @@ public class UncStructIndexEnum { UPLL_IDX_DSCP_VFFE, UPLL_IDX_PRIORITY_VFFE }; - - //ValVbr for VBridge APIs + + // ValVbr for VBridge APIs public enum ValVbrIndex { UPLL_IDX_CONTROLLER_ID_VBR, UPLL_IDX_DOMAIN_ID_VBR, @@ -125,26 +126,22 @@ public class UncStructIndexEnum { UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR }; - //ValVbrSt for response of VBridge APIs - public enum ValVbrStIndex{ + // ValVbrSt for response of VBridge APIs + public enum ValVbrStIndex { UPLL_IDX_OPER_STATUS_VBRS, }; - //ValVbrIf for VBridgeInterface APIs + // ValVbrIf for VBridgeInterface APIs public enum ValVbrIfIndex { - UPLL_IDX_ADMIN_STATUS_VBRI, - UPLL_IDX_DESC_VBRI, - UPLL_IDX_PM_VBRI + UPLL_IDX_ADMIN_STATUS_VBRI, UPLL_IDX_DESC_VBRI, UPLL_IDX_PM_VBRI }; - //ValPortMap for VBridgeInterface APIs + // ValPortMap for VBridgeInterface APIs public enum ValPortMapIndex { - UPLL_IDX_LOGICAL_PORT_ID_PM, - UPLL_IDX_VLAN_ID_PM, - UPLL_IDX_TAGGED_PM + UPLL_IDX_LOGICAL_PORT_ID_PM, UPLL_IDX_VLAN_ID_PM, UPLL_IDX_TAGGED_PM }; - //ValFlowfilterEntry + // ValFlowfilterEntry public enum ValFlowfilterEntryIndex { UPLL_IDX_FLOWLIST_NAME_FFE, UPLL_IDX_ACTION_FFE, @@ -157,47 +154,44 @@ public class UncStructIndexEnum { UPLL_IDX_PRIORITY_FFE }; - //FFType_Direction + // FFType_Direction public enum FlowfilterDirection { - UPLL_FLOWFILTER_DIR_IN("0"), - UPLL_FLOWFILTER_DIR_OUT("1"); + UPLL_FLOWFILTER_DIR_IN("0"), UPLL_FLOWFILTER_DIR_OUT("1"); private final String value; - - private FlowfilterDirection(final String value){ + private FlowfilterDirection(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } }; - //Action + // Action public enum FlowfilterAction { UPLL_FLOWFILTER_ACT_PASS("0"), UPLL_FLOWFILTER_ACT_DROP("1"), UPLL_FLOWFILTER_ACT_REDIRECT("2"); private final String value; - - private FlowfilterAction(final String value){ + private FlowfilterAction(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } }; - public enum ValVrtIndex { UPLL_IDX_CONTROLLER_ID_VRT, UPLL_IDX_DOMAIN_ID_VRT, UPLL_IDX_DESC_VRT, UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT }; + // ValVrtIf public enum ValVrtIfIndex { UPLL_IDX_DESC_VI, @@ -206,6 +200,7 @@ public class UncStructIndexEnum { UPLL_IDX_MAC_ADDR_VI, UPLL_IDX_ADMIN_ST_VI, }; + // ValVtunnel public enum ValVtunnelIndex { UPLL_IDX_DESC_VTNL, @@ -217,28 +212,26 @@ public class UncStructIndexEnum { }; - public enum ValLabelType { - UPLL_LBL_TYP_MPLS, - UPLL_LBL_TYPE_VNI, - UPLL_LBL_TYPE_VSID + public enum ValLabelType { + UPLL_LBL_TYP_MPLS, UPLL_LBL_TYPE_VNI, UPLL_LBL_TYPE_VSID }; + // VUnkown public enum ValVunknownIndex { - UPLL_IDX_DESC_VUN , + UPLL_IDX_DESC_VUN, UPLL_IDX_TYPE_VUN, UPLL_IDX_CONTROLLER_ID_VUN, UPLL_IDX_DOMAIN_ID_VUN }; + // VUnknown Interface public enum ValVunkIfIndex { - UPLL_IDX_DESC_VUNI, - UPLL_IDX_ADMIN_ST_VUNI + UPLL_IDX_DESC_VUNI, UPLL_IDX_ADMIN_ST_VUNI }; // flow filter Entry controller public enum ValFlowfilterControllerIndex { - UPLL_IDX_DIRECTION_FFC, - UPLL_IDX_SEQ_NUM_FFC + UPLL_IDX_DIRECTION_FFC, UPLL_IDX_SEQ_NUM_FFC }; /* @@ -252,93 +245,84 @@ public class UncStructIndexEnum { }; public enum ValAdminStatus { - UPLL_ADMIN_ENABLE("1"), - UPLL_ADMIN_DISABLE("2"); + UPLL_ADMIN_ENABLE("1"), UPLL_ADMIN_DISABLE("2"); private final String value; - - private ValAdminStatus(final String value){ + private ValAdminStatus(final String value) { this.value = value; } /** - * + * * @return the value */ - public String getValue(){ + public String getValue() { return value; } }; public enum ValVbrPortType { - UPLL_PORT, - UPLL_TRUNK + UPLL_PORT, UPLL_TRUNK }; -/* public enum TagStatus{ - UPPL_UNTAG, - UPPL_TAG + /* + * public enum TagStatus{ UPPL_UNTAG, UPPL_TAG + * + * }; + */ + + /* + * public enum TagStatus { UPPL_UNTAG("0"), UPPL_TAG("1"); + * + * private final String value; + * + * private TagStatus(final String value) { this.value = value; } + *//** + * + * @return the value + */ + /* + * public String getValue(){ return value; } }; + */ - };*/ - -/* public enum TagStatus { - UPPL_UNTAG("0"), - UPPL_TAG("1"); + public enum vlan_tagged { + UPLL_VLAN_UNTAGGED("0"), UPLL_VLAN_TAGGED("1"); private final String value; - private TagStatus(final String value) { + private vlan_tagged(final String value) { this.value = value; } - *//** - * - * @return the value - *//* - public String getValue(){ + public String getValue() { return value; } - };*/ - - public enum vlan_tagged { - UPLL_VLAN_UNTAGGED("0"), - UPLL_VLAN_TAGGED("1"); - - private final String value; - - private vlan_tagged(final String value) { - this.value = value; - } - public String getValue(){ - return value; - } - - }; + + }; public enum ValStaticIpRouteIndex { UPLL_IDX_GROUP_METRIC_SIR }; - //ValVlanMap + // ValVlanMap public enum ValVlanMapIndex { UPLL_IDX_VLAN_ID_VM }; - - //ValVbrvalVbrMacEntrySt + // ValVbrvalVbrMacEntrySt public enum valVbrMacEntryStIndex { UPLL_IDX_MAC_ADDR_VMES, UPLL_IDX_TYPE_VMES, UPLL_IDX_IF_NAME_VMES, UPLL_IDX_IF_KIND_VMES }; + public enum ValVrtStIndex { UPLL_IDX_OPER_STATUS_VRTS }; public enum ValMacEntry { - UPLL_MAC_ENTRY_STATIC("0"), - UPLL_MAC_ENTRY_DYNAMIC("1"); + UPLL_MAC_ENTRY_STATIC("0"), UPLL_MAC_ENTRY_DYNAMIC("1"); private final String value; @@ -347,75 +331,72 @@ public class UncStructIndexEnum { } /** - * + * * @return the value */ - public String getValue(){ + public String getValue() { return value; } }; public enum ValVtnFlowfilterControllerStIndex { - UPLL_IDX_DIRECTION_VFFCS , - UPLL_IDX_SEQ_NUM_VFFCS, - UPLL_IDX_FLOW_LIST_VFFCS, - UPLL_IDX_IP_TYPE_VFFCS, - UPLL_IDX_ACTION_VFFCS, - UPLL_IDX_DSCP_VFFCS, + UPLL_IDX_DIRECTION_VFFCS, + UPLL_IDX_SEQ_NUM_VFFCS, + UPLL_IDX_FLOW_LIST_VFFCS, + UPLL_IDX_IP_TYPE_VFFCS, + UPLL_IDX_ACTION_VFFCS, + UPLL_IDX_DSCP_VFFCS, UPLL_IDX_PRIORITY_VFFCS, - UPLL_IDX_NWM_STATUS_VFFCS, - UPLL_IDX_SOFTWARE_VFFCS, - UPLL_IDX_EXIST_VFFCS, - UPLL_IDX_EXPIRE_VFFCS, - UPLL_IDX_TOTAL_VFFCS + UPLL_IDX_NWM_STATUS_VFFCS, + UPLL_IDX_SOFTWARE_VFFCS, + UPLL_IDX_EXIST_VFFCS, + UPLL_IDX_EXPIRE_VFFCS, + UPLL_IDX_TOTAL_VFFCS }; - //val_vbr_l2_domain_st + // val_vbr_l2_domain_st public enum valVbrL2DomainStIndex { - UPLL_IDX_L2_DOMAIN_ID_VL2DS, - UPLL_IDX_OFS_COUNT_VL2DS + UPLL_IDX_L2_DOMAIN_ID_VL2DS, UPLL_IDX_OFS_COUNT_VL2DS }; - //val_vbr_l2_domain_member_st + // val_vbr_l2_domain_member_st public enum valVbrL2DomainMemberStIndex { - UPLL_IDX_SWITCH_ID_VL2DMS, - UPLL_IDX_VLAN_ID_VL2DMS + UPLL_IDX_SWITCH_ID_VL2DMS, UPLL_IDX_VLAN_ID_VL2DMS }; + public enum ValDhcpRelayIfStIndex { - UPLL_IDX_IF_NAME_DRIS, - UPLL_IDX_DHCP_RELAY_STATUS_DRIS + UPLL_IDX_IF_NAME_DRIS, UPLL_IDX_DHCP_RELAY_STATUS_DRIS }; public enum ValPomStatsIndex { - UPLL_IDX_STATS_PACKETS, - UPLL_IDX_STATS_BYTES + UPLL_IDX_STATS_PACKETS, UPLL_IDX_STATS_BYTES }; public enum ValFlowlistEntryStIndex { - UPLL_IDX_SEQ_NUM_FLES , + UPLL_IDX_SEQ_NUM_FLES, UPLL_IDX_SOFTWARE_FLES, UPLL_IDX_EXIST_FLES, UPLL_IDX_EXPIRE_FLES, UPLL_IDX_TOTAL_FLES }; - //val_flowfilter_entry_st + // val_flowfilter_entry_st public enum ValFlowfilterEntryStIndex { UPLL_IDX_SEQ_NUM_FFES, - UPLL_IDX_NWM_STATUS_FFES, - UPLL_IDX_SOFTWARE_FFES, - UPLL_IDX_EXIST_FFES, - UPLL_IDX_EXPIRE_FFES, - UPLL_IDX_TOTAL_FFES + UPLL_IDX_NWM_STATUS_FFES, + UPLL_IDX_SOFTWARE_FFES, + UPLL_IDX_EXIST_FFES, + UPLL_IDX_EXPIRE_FFES, + UPLL_IDX_TOTAL_FFES }; - - public enum ValVtunnelStIndex { + public enum ValVtunnelStIndex { UPLL_IDX_OPER_STATUS_VTNLS }; + public enum ValVlinkStIndex { UPLL_IDX_OPER_STATUS_VLNKS }; @@ -423,47 +404,47 @@ public class UncStructIndexEnum { public enum ValVrtIfStIndex { UPLL_IDX_OPER_STATUS_VRTIS }; + public enum ValVtnNeighborIndex { UPLL_IDX_CONN_VNODE_NAME_VN, UPLL_IDX_CONN_VNODE_IF_NAME_VN, UPLL_IDX_CONN_VLINK_NAME_VN }; + public enum ValVtepIfStIndex { UPLL_IDX_IF_OPER_STATUS_VTEPIS }; + public enum PfcStatus { - PFC_TRUE("1"), - PFC_FALSE("0"); + PFC_TRUE("1"), PFC_FALSE("0"); private final String value; - - private PfcStatus(final String value){ + private PfcStatus(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } }; - public enum ValOperStatus { - UPLL_OPER_STATUS_UP ("1"), + public enum ValOperStatus { + UPLL_OPER_STATUS_UP("1"), UPLL_OPER_STATUS_DOWN("2"), UPLL_OPER_STATUS_UNKNOWN("3"); private final String value; - - private ValOperStatus(final String value){ + private ValOperStatus(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } }; public enum val_vrt_ip_route_st_index { - UPLL_IDX_DESTINATION_VIRS , + UPLL_IDX_DESTINATION_VIRS, UPLL_IDX_GATEWAY_VIRS, UPLL_IDX_PREFIXLEN_VIRS, UPLL_IDX_FLAGS_VIRS, @@ -474,10 +455,8 @@ public class UncStructIndexEnum { UPLL_IDX_GR_METRIC_VIRS }; - - public enum val_vrt_arp_entry_st_index { - UPLL_IDX_MAC_ADDR_VAES , + UPLL_IDX_MAC_ADDR_VAES, UPLL_IDX_IP_ADDR_VAES, UPLL_IDX_TYPE_VAES, UPLL_IDX_IF_NAME_VAES @@ -498,8 +477,8 @@ public class UncStructIndexEnum { UPLL_IDX_GROUP_METRIC_SIR }; - public enum ValVtnstationControllerStIndex { - UPLL_IDX_STATION_ID_VSCS , + public enum ValVtnstationControllerStIndex { + UPLL_IDX_STATION_ID_VSCS, UPLL_IDX_CREATED_TIME_VSCS, UPLL_IDX_MAC_ADDR_VSCS, UPLL_IDX_IPV4_COUNT_VSCS, @@ -516,40 +495,40 @@ public class UncStructIndexEnum { UPLL_IDX_VBR_IF_STATUS_VSCS }; - public enum val_vbr_port_type { - UPLL_PORT , - UPLL_TRUNK + public enum val_vbr_port_type { + UPLL_PORT, UPLL_TRUNK }; + public enum ValVbrIfMapType { - UPLL_IF_OFS_MAP("0"), - UPLL_IF_VLAN_MAP("1"); - - private String value; - - private ValVbrIfMapType(String value) { + UPLL_IF_OFS_MAP("0"), UPLL_IF_VLAN_MAP("1"); + + private final String value; + + private ValVbrIfMapType(final String value) { this.value = value; } - + public String getValue() { return value; } }; + public enum ValVtnMapStatus { - UPLL_VTN_MAP_VALID("0"), - UPLL_VTN_MAP_INVALID("1"); - - private String value; - - private ValVtnMapStatus(String value) { + UPLL_VTN_MAP_VALID("0"), UPLL_VTN_MAP_INVALID("1"); + + private final String value; + + private ValVtnMapStatus(final String value) { this.value = value; } - + public String getValue() { return value; } }; - public enum ValVtnStationControllerStatIndex { - UPLL_IDX_ALL_TX_PKT_VSCS , + + public enum ValVtnStationControllerStatIndex { + UPLL_IDX_ALL_TX_PKT_VSCS, UPLL_IDX_ALL_RX_PKT_VSCS, UPLL_IDX_ALL_TX_BYTS_VSCS, UPLL_IDX_ALL_RX_BYTS_VSCS, @@ -573,10 +552,8 @@ public class UncStructIndexEnum { UPLL_IDX_EXPD_DRP_RX_BYTS_VSCS }; - public enum val_vtunnel_if_index { - UPLL_IDX_DESC_VTNL_IF , - UPLL_IDX_ADMIN_ST_VTNL_IF + UPLL_IDX_DESC_VTNL_IF, UPLL_IDX_ADMIN_ST_VTNL_IF }; public enum val_vtunnel_if_st_index { @@ -584,119 +561,241 @@ public class UncStructIndexEnum { }; public enum ValDhcpRelayIfStatus { - UPLL_DR_IF_INACTIVE("0"), - UPLL_DR_IF_ACTIVE("1"), - UPLL_DR_IF_STARTING("2"), - UPLL_DR_IF_WAITING("3"), - UPLL_DR_IF_ERROR("4"); + UPLL_DR_IF_INACTIVE("0"), UPLL_DR_IF_ACTIVE("1"), UPLL_DR_IF_STARTING( + "2"), UPLL_DR_IF_WAITING("3"), UPLL_DR_IF_ERROR("4"); private final String value; - - private ValDhcpRelayIfStatus(final String value){ + private ValDhcpRelayIfStatus(final String value) { this.value = value; } - public String getValue(){ + public String getValue() { return value; } }; - - public enum ValVunknowntype { - VUNKNOWN_TYPE_BRIDGE("0") , - VUNKNOWN_TYPE_ROUTER("1"); - private final String value; + public enum ValVunknowntype { + VUNKNOWN_TYPE_BRIDGE("0"), VUNKNOWN_TYPE_ROUTER("1"); + private final String value; + + private ValVunknowntype(final String value) { + this.value = value; + } - private ValVunknowntype(final String value){ - this.value = value; - } + public String getValue() { + return value; + } + }; - public String getValue(){ - return value; - } - }; - public enum val_vtep_grp_index { - UPLL_IDX_CONTROLLER_ID_VTEPG, - UPLL_IDX_DESCRIPTION_VTEPG + UPLL_IDX_CONTROLLER_ID_VTEPG, UPLL_IDX_DESCRIPTION_VTEPG }; + public enum ValVrtIpRouteStIndex { - UPLL_IDX_DESTINATION_VIRS, - UPLL_IDX_GATEWAY_VIRS, - UPLL_IDX_PREFIXLEN_VIRS, - UPLL_IDX_FLAGS_VIRS, - UPLL_IDX_METRIC_VIRS, - UPLL_IDX_USE_VIRS, - UPLL_IDX_IF_NAME_VIRS, - UPLL_IDX_NW_MONITOR_GR_VIRS, - UPLL_IDX_GR_METRIC_VIRS - }; - - public enum ValMacEntryIfKind { - UPLL_MAC_ENTRY_BLANK("0"), - UPLL_MAC_ENTRY_TRUNK("1"); - - private final String value; - - private ValMacEntryIfKind(final String value) { - this.value = value; - } - - /** - * - * @return the value - */ - public String getValue(){ - return value; - } - }; - public enum ValAlarmStatus { - UPLL_ALARM_CLEAR("0"), - UPLL_ALARM_RAISE("1"); - - private final String value; - - private ValAlarmStatus(final String value) { - this.value = value; - } - - /** - * - * @return the value - */ - public String getValue(){ - return value; - } - }; - - - public enum UpplControllerOperStatus { - UPPL_CONTROLLER_OPER_DOWN("0"), - UPPL_CONTROLLER_OPER_UP("1"), - UPPL_CONTROLLER_OPER_WAITING_AUDIT("2"), - UPPL_CONTROLLER_OPER_AUDITING("3"); - private final String value; - - - private UpplControllerOperStatus(final String value){ - this.value = value; - } - - public String getValue(){ - return value; - } - }; - public enum DirtyStatus { - FALSE("0"), - TRUE("1"); - private final String value; - - private DirtyStatus(final String value){ - this.value = value; - } - - public String getValue(){ - return value; - } - }; -} \ No newline at end of file + UPLL_IDX_DESTINATION_VIRS, + UPLL_IDX_GATEWAY_VIRS, + UPLL_IDX_PREFIXLEN_VIRS, + UPLL_IDX_FLAGS_VIRS, + UPLL_IDX_METRIC_VIRS, + UPLL_IDX_USE_VIRS, + UPLL_IDX_IF_NAME_VIRS, + UPLL_IDX_NW_MONITOR_GR_VIRS, + UPLL_IDX_GR_METRIC_VIRS + }; + + public enum ValMacEntryIfKind { + UPLL_MAC_ENTRY_BLANK("0"), UPLL_MAC_ENTRY_TRUNK("1"); + + private final String value; + + private ValMacEntryIfKind(final String value) { + this.value = value; + } + + /** + * + * @return the value + */ + public String getValue() { + return value; + } + }; + + public enum ValAlarmStatus { + UPLL_ALARM_CLEAR("0"), UPLL_ALARM_RAISE("1"); + + private final String value; + + private ValAlarmStatus(final String value) { + this.value = value; + } + + /** + * + * @return the value + */ + public String getValue() { + return value; + } + }; + + public enum UpplControllerOperStatus { + UPPL_CONTROLLER_OPER_DOWN("0"), + UPPL_CONTROLLER_OPER_UP("1"), + UPPL_CONTROLLER_OPER_WAITING_AUDIT("2"), + UPPL_CONTROLLER_OPER_AUDITING("3"); + private final String value; + + private UpplControllerOperStatus(final String value) { + this.value = value; + } + + public String getValue() { + return value; + } + }; + + public enum DirtyStatus { + FALSE("0"), TRUE("1"); + private final String value; + + private DirtyStatus(final String value) { + this.value = value; + } + + public String getValue() { + return value; + } + }; + + // U12 ENUM constant + public enum valVtnMappingControllerStIndex { + UPLL_IDX_SWITCH_ID_VMCS, + UPLL_IDX_PORT_NAME_VMCS, + UPLL_IDX_LOGICAL_PORT_ID_VMCS, + UPLL_IDX_VLAN_ID_VMCS, + UPLL_IDX_TAGGED_VMCS, + UPLL_IDX_MAP_TYPE_VMCS, + UPLL_IDX_VBR_NAME_VMCS, + UPLL_IDX_VBR_IF_NAME_VMCS + }; + + public enum valVtermIndex { + UPLL_IDX_CONTROLLER_ID_VTERM, + UPLL_IDX_DOMAIN_ID_VTERM, + UPLL_IDX_DESC_VTERM + + }; + + public enum valVtermStIndex { + UPLL_IDX_OPER_STATUS_VTERMS + + }; + + public enum valVtermIfIndex { + UPLL_IDX_ADMIN_STATUS_VTERMI, UPLL_IDX_DESC_VTERMI, UPLL_IDX_PM_VTERMI + }; + + public enum valVtermIfStIndex { + UPLL_IDX_OPER_STATUS_VTERMIS + + }; + + public enum valVtnDataflowIndex { + UPLL_IDX_REASON_VVD, UPLL_IDX_CTRLR_DOMAIN_COUNT_VVD + }; + + public enum valVtnDataflowCmnIndex { + UPLL_IDX_CONTROLLER_ID_VVDC, + UPLL_IDX_CONTROLLER_TYPE_VVDC, + UPLL_IDX_FLOW_ID_VVDC, + UPLL_IDX_CREATED_TIME_VVDC, + UPLL_IDX_IDLE_TIMEOUT_VVDC, + UPLL_IDX_HARD_TIMEOUT_VVDC, + UPLL_IDX_INGRESS_VNODE_VVDC, + UPLL_IDX_INGRESS_VINTERFACE_VVDC, + UPLL_IDX_INGRESS_SWITCH_ID_VVDC, + UPLL_IDX_INGRESS_PORT_ID_VVDC, + UPLL_IDX_INGRESS_LOGICAL_PORT_ID_VVDC, + UPLL_IDX_INGRESS_DOMAIN_VVDC, + UPLL_IDX_EGRESS_VNODE_VVDC, + UPLL_IDX_EGRESS_VINTERFACE_VVDC, + UPLL_IDX_EGRESS_SWITCH_ID_VVDC, + UPLL_IDX_EGRESS_PORT_ID_VVDC, + UPLL_IDX_EGRESS_LOGICAL_PORT_ID_VVDC, + UPLL_IDX_EGRESS_DOMAIN_VVDC, + UPLL_IDX_MATCH_COUNT_VVDC, + UPLL_IDX_ACTION_COUNT_VVDC, + UPLL_IDX_PATH_INFO_COUNT_VVDC + }; + + public enum valVtnDataflowPathInfo { + UPLL_IDX_IN_VNODE_VVDPI, + UPLL_IDX_IN_VIF_VVDPI, + UPLL_IDX_OUT_VNODE_VVDPI, + UPLL_IDX_OUT_VIF_VVDPI, + UPLL_IDX_VLINK_FLAG_VVDPI, + UPLL_IDX_STATUS_VVDPI + + }; + + public enum valVtnDataflowPathInfoVlinkType { + UPLL_DATAFLOW_PATH_VLINK_NOT_EXISTS, UPLL_DATAFLOW_PATH_VLINK_EXISTS + }; + + public enum valVtnDataflowPathInfoStatusType { + UPLL_DATAFLOW_PATH_STATUS_NORMAL, UPLL_DATAFLOW_PATH_STATUS_DROP + }; + + public enum ValDataFlowMatchVmaskvalue { + UNC_MATCH_MASK_INVALID, UNC_MATCH_MASK_VALID; + + }; + + public enum UncDataflowFlowMatchType { + UNC_MATCH_IN_PORT, + UNC_MATCH_DL_SRC, + UNC_MATCH_DL_DST, + UNC_MATCH_DL_TYPE, + UNC_MATCH_VLAN_ID, + UNC_MATCH_VLAN_PCP, + UNC_MATCH_IP_TOS, + UNC_MATCH_IP_PROTO, + UNC_MATCH_IPV4_SRC, + UNC_MATCH_IPV4_DST, + UNC_MATCH_IPV6_SRC, + UNC_MATCH_IPV6_DST, + UNC_MATCH_TP_SRC, + UNC_MATCH_TP_DST; + } + + public enum UncDataflowFlowActionType { + UNC_ACTION_OUTPUT, + UNC_ACTION_SET_ENQUEUE, + UNC_ACTION_SET_DL_SRC, + UNC_ACTION_SET_DL_DST, + UNC_ACTION_SET_VLAN_ID, + UNC_ACTION_SET_VLAN_PCP, + UNC_ACTION_STRIP_VLAN, + UNC_ACTION_SET_IPV4_SRC, + UNC_ACTION_SET_IPV4_DST, + UNC_ACTION_SET_IP_TOS, + UNC_ACTION_SET_TP_SRC, + UNC_ACTION_SET_TP_DST, + UNC_ACTION_SET_IPV6_SRC, + UNC_ACTION_SET_IPV6_DST; + + }; + + public enum UncDataflowReason { + UNC_DF_RES_SUCCESS, + UNC_DF_RES_OPERATION_NOT_SUPPORTED, + UNC_DF_RES_EXCEEDS_FLOW_LIMIT, + UNC_DF_RES_CTRLR_DISCONNECTED, + UNC_DF_RES_EXCEEDS_HOP_LIMIT, + UNC_DF_RES_DST_NOT_REACHED, + UNC_DF_RES_FLOW_NOT_FOUND, + UNC_DF_RES_SYSTEM_ERROR + }; + +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncTCEnums.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncTCEnums.java index f3b92779..bc5a32c1 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncTCEnums.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncTCEnums.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,30 +15,30 @@ public class UncTCEnums { public enum ServiceID { - TC_CONFIG_SERVICES, - TC_CANDIDATE_SERVICES, - TC_STARTUP_DB_SERVICES, - TC_READ_ACCESS_SERVICES, - TC_AUTO_SAVE_SERVICES, + TC_CONFIG_SERVICES, + TC_CANDIDATE_SERVICES, + TC_STARTUP_DB_SERVICES, + TC_READ_ACCESS_SERVICES, + TC_AUTO_SAVE_SERVICES, TC_AUDIT_SERVICES; } public enum ServiceType { - TC_OP_CONFIG_ACQUIRE, - TC_OP_CONFIG_RELEASE, - TC_OP_CONFIG_ACQUIRE_FORCE, - TC_OP_CANDIDATE_COMMIT, - TC_OP_CANDIDATE_ABORT, - TC_OP_RUNNING_SAVE, - TC_OP_CLEAR_STARTUP, - TC_OP_READ_ACQUIRE, - TC_OP_READ_RELEASE, - TC_OP_AUTOSAVE_GET, - TC_OP_AUTOSAVE_ENABLE, - TC_OP_AUTOSAVE_DISABLE, - TC_OP_USER_AUDIT, - TC_OP_DRIVER_AUDIT, + TC_OP_CONFIG_ACQUIRE, + TC_OP_CONFIG_RELEASE, + TC_OP_CONFIG_ACQUIRE_FORCE, + TC_OP_CANDIDATE_COMMIT, + TC_OP_CANDIDATE_ABORT, + TC_OP_RUNNING_SAVE, + TC_OP_CLEAR_STARTUP, + TC_OP_READ_ACQUIRE, + TC_OP_READ_RELEASE, + TC_OP_AUTOSAVE_GET, + TC_OP_AUTOSAVE_ENABLE, + TC_OP_AUTOSAVE_DISABLE, + TC_OP_USER_AUDIT, + TC_OP_DRIVER_AUDIT, TC_OP_INVALID } @@ -46,35 +46,35 @@ public class UncTCEnums { /* System Fail over */ - TC_OPER_FAILURE(-11, 500, "Operation failure"), + TC_OPER_FAILURE(-11, 50000, "Operation failure"), /* Invalid Input Values Passed */ - TC_OPER_INVALID_INPUT(-10, 500, "Invalid Input Values Passed"), + TC_OPER_INVALID_INPUT(-10, 50000, "Invalid Input Values Passed"), TC_OPER_SUCCESS(0, 200, "Success"), - TC_CONFIG_NOT_PRESENT(1, 404, "Configuration not present"), + TC_CONFIG_NOT_PRESENT(100, 50000, "Configuration not present"), - TC_CONFIG_PRESENT(2, 503, "Service unavailable"), + TC_CONFIG_PRESENT(101, 50301, "Server Busy"), - TC_INVALID_CONFIG_ID(3, 400, "Invalid config id"), + TC_INVALID_CONFIG_ID(102, 50000, "Invalid config id"), - TC_INVALID_OPERATION_TYPE(4, 500, "Invalid operation type"), + TC_INVALID_OPERATION_TYPE(103, 50000, "Invalid operation type"), - TC_INVALID_SESSION_ID(5, 400, "Invalid session id"), + TC_INVALID_SESSION_ID(104, 50000, "Invalid session id"), - TC_INVALID_STATE(6, 503, "Invalid state"), + TC_INVALID_STATE(105, 50000, "Invalid state"), - TC_OPER_ABORT(7, 500, "Operation abort"), + TC_OPER_ABORT(106, 50000, "Operation abort"), - TC_SESSION_ALREADY_ACTIVE(8, 503, "Service unavailable"), + TC_SESSION_ALREADY_ACTIVE(107, 50301, "Server Busy"), - TC_SESSION_NOT_ACTIVE(9, 404, "Session not active"), + TC_SESSION_NOT_ACTIVE(108, 50000, "Session not active"), - TC_SYSTEM_BUSY(10, 503, "System busy"), + TC_SYSTEM_BUSY(109, 50301, "Server Busy"), - TC_SYSTEM_FAILURE(11, 500, "System failure"); + TC_SYSTEM_FAILURE(110, 50000, "System failure"); private final String message; private final int code; @@ -101,28 +101,25 @@ public class UncTCEnums { } public enum RequestIndex { - TC_REQ_OP_TYPE_INDEX, - TC_REQ_SESSION_ID_INDEX, - TC_REQ_ARG_INDEX + TC_REQ_OP_TYPE_INDEX, TC_REQ_SESSION_ID_INDEX, TC_REQ_ARG_INDEX } public enum ResponseIndex { - TC_RES_OP_TYPE_INDEX, - TC_RES_SESSION_ID_INDEX, - TC_RES_OP_STATUS_INDEX, + TC_RES_OP_TYPE_INDEX, + TC_RES_SESSION_ID_INDEX, + TC_RES_OP_STATUS_INDEX, TC_RES_VALUE_INDEX; } public enum CandidateOperRespIndex { - TC_CAND_RES_OP_TYPE_INDEX, - TC_CAND_RES_SESSION_ID_INDEX, - TC_CAND_RES_CONFIG_ID_INDEX, + TC_CAND_RES_OP_TYPE_INDEX, + TC_CAND_RES_SESSION_ID_INDEX, + TC_CAND_RES_CONFIG_ID_INDEX, TC_CAND_RES_OP_STATUS_INDEX; } public enum AutoSave { - TC_AUTOSAVE_DISABLED("0"), - TC_AUTOSAVE_ENABLED("1"); + TC_AUTOSAVE_DISABLED("0"), TC_AUTOSAVE_ENABLED("1"); private final String value; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPLLEnums.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPLLEnums.java index f3b8b42f..2bafef39 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPLLEnums.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPLLEnums.java @@ -1,34 +1,40 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.vtn.javaapi.ipc.enums; +package org.opendaylight.vtn.javaapi.ipc.enums; public class UncUPLLEnums { - public static final String UPLL_IPC_CHANNEL_NAME = "lgcnwd"; /* UPLL IPC Channel Name */ - public static final String UPLL_IPC_SERVICE_NAME = "upll"; /* UPLL IPC Service Name */ + public static final String UPLL_IPC_CHANNEL_NAME = "lgcnwd"; /* + * UPLL IPC + * Channel Name + */ + public static final String UPLL_IPC_SERVICE_NAME = "upll"; /* + * UPLL IPC + * Service Name + */ /* UPLL IPC Service Ids */ - public enum ServiceID{ - UPLL_EDIT_SVC_ID, /* Key Tree edit services */ - UPLL_READ_SVC_ID, /* Key Tree read services */ - UPLL_CONTROL_SVC_ID, /* Key Tree control services */ - UPLL_GLOBAL_CONFIG_SVC_ID; /* UPLL GlobalConfig services */ + public enum ServiceID { + UPLL_EDIT_SVC_ID, /* Key Tree edit services */ + UPLL_READ_SVC_ID, /* Key Tree read services */ + UPLL_CONTROL_SVC_ID, /* Key Tree control services */ + UPLL_GLOBAL_CONFIG_SVC_ID; /* UPLL GlobalConfig services */ } /* UPLL IPC Operations supported under GlobalConfig Service ID */ - public enum UpllGlobalConfigOpT{ - UPLL_IS_CANDIDATE_DIRTY_OP(101), - UPLL_IMPORT_CTRLR_CONFIG_OP(102), - UPLL_MERGE_IMPORT_CONFIG_OP(103), - UPLL_CLEAR_IMPORT_CONFIG_OP(104), - UPLL_IS_KEY_TYPE_IN_USE_OP(105); + public enum UpllGlobalConfigOpT { + UPLL_IS_CANDIDATE_DIRTY_OP(101), + UPLL_IMPORT_CTRLR_CONFIG_OP(102), + UPLL_MERGE_IMPORT_CONFIG_OP(103), + UPLL_CLEAR_IMPORT_CONFIG_OP(104), + UPLL_IS_KEY_TYPE_IN_USE_OP(105); private final int value; @@ -42,8 +48,7 @@ public class UncUPLLEnums { } /* Event Types generated by UPLL */ - public enum EventType{ - UPLL_EV_CONFIG_NOTIFICATION, - UPLL_EV_OPER_NOTIFICATION; + public enum EventType { + UPLL_EV_CONFIG_NOTIFICATION, UPLL_EV_OPER_NOTIFICATION; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPPLEnums.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPPLEnums.java index 3ac8e86b..08eb0a89 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPPLEnums.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/UncUPPLEnums.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,53 +13,44 @@ public class UncUPPLEnums { public static final String UPPL_IPC_CHN_NAME = "phynwd"; public static final String UPPL_IPC_SVC_NAME = "uppl"; - public enum SystemState{ - SYSTEM_ST_SIMPLEX, - SYSTEM_ST_ACTIVE, - SYSTEM_ST_STANDBY; + public enum SystemState { + SYSTEM_ST_SIMPLEX, SYSTEM_ST_ACTIVE, SYSTEM_ST_STANDBY; } - public enum ControllerOpStatus{ - CONTROLLER_OPER_DOWN, - CONTROLLER_OPER_UP, - CONTROLLER_OPER_AUDIT_WAITING, - CONTROLLER_OPER_AUDIT_FAILED, + public enum ControllerOpStatus { + CONTROLLER_OPER_DOWN, + CONTROLLER_OPER_UP, + CONTROLLER_OPER_AUDIT_WAITING, + CONTROLLER_OPER_AUDIT_FAILED, } - public enum AuditStatus{ - AUDIT_DISABLED, - AUDIT_ENABLED; + public enum AuditStatus { + AUDIT_DISABLED, AUDIT_ENABLED; } - public enum ServiceID{ - UPPL_SVC_CONFIGREQ, - UPPL_SVC_READREQ, - UPPL_SVC_GLOBAL_CONFIG; + public enum ServiceID { + UPPL_SVC_CONFIGREQ, UPPL_SVC_READREQ, UPPL_SVC_GLOBAL_CONFIG; } - public enum RowStatus{ - CREATED, - UPDATED, - DELETED, - ROW_VALID, - ROW_INVALID, - APPLIED, - NOTAPPLIED, - PARTIALLY_APPLIED; + public enum RowStatus { + CREATED, + UPDATED, + DELETED, + ROW_VALID, + ROW_INVALID, + APPLIED, + NOTAPPLIED, + PARTIALLY_APPLIED; } - public enum Valid{ - INVALID, - VALID, - VALID_WITH_NO_VALUE, - NOT_SUPPORTED, - NOT_SET + public enum Valid { + INVALID, VALID, VALID_WITH_NO_VALUE, NOT_SUPPORTED, NOT_SET } - public enum UncAddlOperationT{ - UNC_OP_IS_CANDIDATE_DIRTY, - UNC_OP_IMPORT_CONTROLLER_CONFIG, - UNC_OP_MERGE_CONTROLLER_CONFIG, - UNC_OP_CLEAR_IMPORT_CONFIG; + public enum UncAddlOperationT { + UNC_OP_IS_CANDIDATE_DIRTY, + UNC_OP_IMPORT_CONTROLLER_CONFIG, + UNC_OP_MERGE_CONTROLLER_CONFIG, + UNC_OP_CLEAR_IMPORT_CONFIG; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/package-info.java new file mode 100644 index 00000000..02641aab --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Enums . + */ +package org.opendaylight.vtn.javaapi.ipc.enums; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/upll_errors.properties b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/upll_errors.properties index b7ab0653..7465493b 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/upll_errors.properties +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/upll_errors.properties @@ -24,122 +24,122 @@ java.0=Success south.0=Request successfully processed key.1=UPLL_RC_ERR_GENERIC -code.1=500 +code.1=50000 java.1=Internal Server Error south.1=Generic error key.2=UPLL_RC_ERR_BAD_REQUEST -code.2=400 +code.2=40001 java.2=The specified parameter(s) is(are) invalid south.2=The request message format is bad key.3=UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID -code.3=400 +code.3=50000 java.3=The specified parameter(s) is(are) invalid south.3=The given session does not have the config lock key.4=UPLL_RC_ERR_NO_SUCH_OPERATION -code.4=500 +code.4=50000 java.4=Internal Server Error south.4=Not a valid operation key.5=UPLL_RC_ERR_INVALID_OPTION1 -code.5=500 +code.5=50000 java.5=Internal Server Error south.5=Not a valid option1 key.6=UPLL_RC_ERR_INVALID_OPTION2 -code.6=500 +code.6=50000 java.6=Internal Server Error south.6=Not a valid option2 key.7=UPLL_RC_ERR_CFG_SYNTAX -code.7=400 +code.7=40001 java.7=The specified parameter(s) is(are) invalid south.7=Syntax check failed key.8=UPLL_RC_ERR_CFG_SEMANTIC -code.8=400 +code.8=40001 java.8=The specified parameter(s) is(are) invalid south.8=Semantic check failed key.9=UPLL_RC_ERR_RESOURCE_DISCONNECTED -code.9=500 +code.9=50000 java.9=Internal Server Error south.9=Resource (DBMS, Physical, Driver) is disconnected key.10=UPLL_RC_ERR_DB_ACCESS -code.10=500 +code.10=50000 java.10=Internal Server Error south.10=DBMS access (read / write / transaction) failure key.11=UPLL_RC_ERR_NO_SUCH_INSTANCE -code.11=404 +code.11=40400 java.11=The specified resource is not found south.11=Instance specified by key does not exist key.12=UPLL_RC_ERR_NO_SUCH_NAME -code.12=500 +code.12=50000 java.12=Internal Server Error south.12=The specified keytype is unknown key.13=UPLL_RC_ERR_NO_SUCH_DATATYPE -code.13=500 +code.13=50000 java.13=Internal Server Error south.13=The specified datatype is unknown key.14=UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR -code.14=500 +code.14=50000 java.14=Internal Server Error south.14=The operation not supported by controller key.15=UPLL_RC_ERR_NOT_SUPPORTED_BY_STANDBY -code.15=503 +code.15=50301 java.15=Service is unavailable south.15=The operation not supported by standby UPLL key.16=UPLL_RC_ERR_PARENT_DOES_NOT_EXIST -code.16=404 +code.16=40400 java.16=The specified resource is not found south.16=For creating the given keytype instance, its parent does not exist key.17=UPLL_RC_ERR_INSTANCE_EXISTS -code.17=409 +code.17=40901 java.17=The specified resource already exists south.17=The given keytype instance cannot be created because it already exists key.18=UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT -code.18=405 +code.18=50000 java.18=Method is not allowed for the specified URI south.18=Not allowed for this datatype key.19=UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT -code.19=405 +code.19=50000 java.19=Method is not allowed for the specified URI south.19=Not allowed for this KT key.20=UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME -code.20=405 +code.20=50000 java.20=Method is not allowed for the specified URI south.20=Not allowed for at this time key.21=UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT -code.21=500 +code.21=40902 java.21=Internal Server Error south.21=The given operation exceeds the resource limit key.22=UPLL_RC_ERR_MERGE_CONFLICT -code.22=500 +code.22=50000 java.22=Internal Server Error south.22=Merge failed as there is a merge conflict key.23=UPLL_RC_ERR_CANDIDATE_IS_DIRTY -code.23=500 +code.23=50000 java.23=Internal Server Error south.23=The operation could not be performed because there are uncommited \ changes in the candidate configuration key.24=UPLL_RC_ERR_SHUTTING_DOWN -code.24=503 +code.24=50301 java.24=Service is unavailable south.24=UPLL daemon is shutting down and cannot process the request diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/uppl_errors.properties b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/uppl_errors.properties index d878f2d9..62eaebf7 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/uppl_errors.properties +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/enums/uppl_errors.properties @@ -23,332 +23,337 @@ code.0=200 java.0=Success south.0=Request successfully processed -key.1=UPPL_RC_FAILURE -code.1=500 -java.1=Internal Server Error -south.1=Resource allocation failure +key.1=UPPL_RC_ERR_BAD_REQUEST +code.1=40001 +java.1=The specified parameter(s) is(are) invalid +south.1=The request message format is bad -key.2=UPPL_RC_ERR_BAD_REQUEST -code.2=400 -java.2=The specified parameter(s) is(are) invalid -south.2=The request message format is bad +key.2=UPPL_RC_FAILURE +code.2=50000 +java.2=Internal Server Error +south.2=Resource allocation failure key.3=UPPL_RC_ERR_INVALID_CONFIGID -code.3=400 +code.3=50000 java.3=The specified parameter(s) is(are) invalid south.3=Not a valid config id key.4=UPPL_RC_ERR_INVALID_SESSIONID -code.4=400 +code.4=50000 java.4=The specified parameter(s) is(are) invalid south.4=Not a valid session id key.5=UPPL_RC_ERR_VERSION_NOT_SUPPORTED -code.5=400 +code.5=50000 java.5=The specified parameter(s) is(are) invalid south.5=The specified version is not supported key.6=UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED -code.6=400 +code.6=50000 java.6=The specified parameter(s) is(are) invalid south.6=The specified keytype is not supported key.7=UPPL_RC_ERR_DATATYPE_NOT_SUPPORTED -code.7=500 +code.7=50000 java.7=Internal Server Error south.7=The specified datatype is not supported key.8=UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED -code.8=500 +code.8=50000 java.8=Internal Server Error south.8=The specified attribute is not supported key.9=UPPL_RC_ERR_OPERATION_NOT_SUPPORTED -code.9=500 +code.9=50000 java.9=Internal Server Error south.9=The specified operation is not supported key.10=UPPL_RC_ERR_OPERATION_NOT_ALLOWED -code.10=500 +code.10=50000 java.10=Internal Server Error south.10=The specified operation is not allowed key.11=UPPL_RC_ERR_INVALID_OPTION1 -code.11=500 +code.11=50000 java.11=Internal Server Error south.11=Not a valid option1 key.12=UPPL_RC_ERR_INVALID_OPTION2 -code.12=500 +code.12=50000 java.12=Internal Server Error south.12=Not a valid option2 key.13=UPPL_RC_ERR_CFG_SYNTAX -code.13=400 +code.13=40001 java.13=The specified parameter(s) is(are) invalid south.13=Syntax check failed key.14=UPPL_RC_ERR_CFG_SEMANTIC -code.14=400 +code.14=40001 java.14=The specified parameter(s) is(are) invalid south.14=Semantic check failed key.15=UPPL_RC_ERR_PARENT_DOES_NOT_EXIST -code.15=400 +code.15=40400 java.15=The specified parameter(s) is(are) invalid south.15=For creating the given keytype instance, its parent does not exist key.16=UPPL_RC_ERR_NO_SUCH_INSTANCE -code.16=404 +code.16=40400 java.16=The specified resource is not found south.16=Instance specified by key does not exist key.17=UPPL_RC_ERR_INSTANCE_EXISTS -code.17=409 +code.17=40901 java.17=The specified resource already exists south.17=The given keytype instance cannot be created because it already exists key.18=UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT -code.18=500 +code.18=40902 java.18=Internal Server Error south.18=The given operation exceeds the resource limit key.19=UPPL_RC_ERR_DB_ACCESS -code.19=500 +code.19=50000 java.19=Internal Server Error south.19=DB Access Error key.20=UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY -code.20=503 +code.20=50301 java.20=Service is unavailable south.20=The operation not supported by standby UPPL key.21=UPPL_RC_ERR_RESOURCE_DISCONNECTED -code.21=500 +code.21=50000 java.21=Internal Server Error south.21=Resource disconnected key.22=UPPL_RC_ERR_INVALID_STATE -code.22=503 +code.22=50301 java.22=Service is unavailable south.22=Invalid state key.23=UPPL_RC_ERR_MERGE_CONFLICT -code.23=500 +code.23=50000 java.23=Internal Server Error south.23=Merge failed as there is a merge conflict key.24=UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION -code.24=500 +code.24=50000 java.24=Internal Server Error south.24=Resource allocation failure key.25=UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE -code.25=500 +code.25=50000 java.25=Internal Server Error south.25=Driver Communication failure key.26=UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE -code.26=500 +code.26=50000 java.26=Internal Server Error south.26=Logical Communication failure key.27=UPPL_RC_ERR_SHUTTING_DOWN -code.27=503 +code.27=50301 java.27=Service is unavailable south.27=UPPL daemon is shutting down and cannot process the request key.28=UPPL_RC_ERR_IPC_WRITE_ERROR -code.28=500 +code.28=50000 java.28=Internal Server Error south.28=IPC write error key.29=UPPL_RC_ERR_DB_UPDATE -code.29=500 +code.29=50000 java.29=Internal Server Error south.29=Database update error key.30=UPPL_RC_ERR_DB_GET -code.30=500 +code.30=50000 java.30=Internal Server Error south.30=Database get error key.31=UPPL_RC_ERR_DB_DELETE -code.31=500 +code.31=50000 java.31=Internal Server Error south.31=Database delete error key.32=UPPL_RC_ERR_DB_CREATE -code.32=500 +code.32=50000 java.32=Internal Server Error south.32=Database create error key.33=UPPL_RC_ERR_CANDIDATE_IS_DIRTY -code.33=500 +code.33=50000 java.33=Internal Server Error south.33=Candidate is dirty key.34=UPPL_RC_ERR_ATTRIBUTE_NOT_FOUND -code.34=500 +code.34=50000 java.34=Internal Server Error south.34=The specified attribute is not found key.35=UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED -code.35=500 +code.35=50000 java.35=Internal Server Error south.35=Notification not supported key.36=UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED -code.36=500 +code.36=50000 java.36=Internal Server Error south.36=Notification handling failed key.37=UPPL_RC_ERR_ALARM_API -code.37=500 +code.37=50000 java.37=Internal Server Error south.37=Alarm API Error key.38=UPPL_RC_ERR_CONF_FILE_READ -code.38=500 +code.38=50000 java.38=Internal Server Error south.38=Conf file read key.39=UPPL_RC_ERR_CAP_FILE_READ -code.39=500 +code.39=50000 java.39=Internal Server Error south.39=Cap file read key.40=UPPL_RC_ERR_DB_OPER_STATUS -code.40=500 +code.40=50000 java.40=Internal Server Error south.40=Database operation status error -key.41=UPPL_RC_ERR_AUDIT_NOT_IN_PROGRESS -code.41=500 +key.41=UNC_UPPL_RC_ERR_CTRLR_DISCONNECTED +code.41=50000 java.41=Internal Server Error -south.41=Audit not in progress +south.41=Database operation status error -key.42=UPPL_RC_ERR_FATAL_COPY_CONFIG -code.42=500 +key.42=UPPL_RC_ERR_AUDIT_NOT_IN_PROGRESS +code.42=50000 java.42=Internal Server Error -south.42=Fatal copy config +south.42=Audit not in progress -key.43=UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING -code.43=500 +key.43=UPPL_RC_ERR_FATAL_COPY_CONFIG +code.43=50000 java.43=Internal Server Error -south.43=Fatal copy database candidate-running +south.43=Fatal copy config -key.44=UPPL_RC_ERR_COPY_CANDID_TO_RUNNING -code.44=500 +key.44=UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING +code.44=50000 java.44=Internal Server Error -south.44=Fatal copy database candidate to running +south.44=Fatal copy database candidate-running -key.45=UPPL_RC_ERR_COPY_RUNNING_TO_CANDID -code.45=500 +key.45=UPPL_RC_ERR_COPY_CANDID_TO_RUNNING +code.45=50000 java.45=Internal Server Error -south.45=Fatal copy database running to candidate +south.45=Fatal copy database candidate to running -key.46=UPPL_RC_ERR_INVALID_CANDID_CONFIG -code.46=500 +key.46=UPPL_RC_ERR_COPY_RUNNING_TO_CANDID +code.46=50000 java.46=Internal Server Error -south.46=Invalid candidate config +south.46=Fatal copy database running to candidate -key.47=UPPL_RC_ERR_WRITE_ENTITY_DB -code.47=500 +key.47=UPPL_RC_ERR_INVALID_CANDID_CONFIG +code.47=50000 java.47=Internal Server Error -south.47=Write entity database error +south.47=Invalid candidate config -key.48=UPPL_RC_ERR_COPY_RUNNING_TO_START -code.48=500 +key.48=UPPL_RC_ERR_WRITE_ENTITY_DB +code.48=50000 java.48=Internal Server Error -south.48=Fatal copy database running to start +south.48=Write entity database error -key.49=UPPL_RC_ERR_COPY_STARTUP_TO_CANDID -code.49=500 +key.49=UPPL_RC_ERR_COPY_RUNNING_TO_START +code.49=50000 java.49=Internal Server Error -south.49=Fatal copy database startup to candidate +south.49=Fatal copy database running to start -key.50=UPPL_RC_ERR_CLEAR_DB -code.50=500 +key.50=UPPL_RC_ERR_COPY_STARTUP_TO_CANDID +code.50=50000 java.50=Internal Server Error -south.50=Clear database +south.50=Fatal copy database startup to candidate -key.51=UPPL_RC_ERR_IMPORT_START_INVALID_DRIVER_RESPONSE -code.51=500 +key.51=UPPL_RC_ERR_CLEAR_DB +code.51=50000 java.51=Internal Server Error -south.51=Invalid driver response +south.51=Clear database -key.52=UPPL_RC_ERR_IMPORT_FAILURE -code.52=500 +key.52=UPPL_RC_ERR_IMPORT_START_INVALID_DRIVER_RESPONSE +code.52=50000 java.52=Internal Server Error -south.52=Import failure +south.52=Invalid driver response -key.53=UPPL_RC_ERR_IMPORT_MERGE_FAILURE -code.53=500 +key.53=UPPL_RC_ERR_IMPORT_FAILURE +code.53=50000 java.53=Internal Server Error -south.53=Merge failure +south.53=Import failure -key.54=UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED -code.54=500 +key.54=UPPL_RC_ERR_IMPORT_MERGE_FAILURE +code.54=50000 java.54=Internal Server Error -south.54=Commit operation not allowed +south.54=Merge failure -key.55=UPPL_RC_ERR_COMMIT_UPDATE_DRIVER_FAILURE -code.55=500 +key.55=UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED +code.55=50000 java.55=Internal Server Error -south.55=Commit update driver failure +south.55=Commit operation not allowed -key.56=UPPL_RC_ERR_TRANSACTION_START -code.56=500 +key.56=UPPL_RC_ERR_COMMIT_UPDATE_DRIVER_FAILURE +code.56=50000 java.56=Internal Server Error -south.56=Transaction start error +south.56=Commit update driver failure -key.57=UPPL_RC_ERR_INVALID_TRANSACT_START_REQ -code.57=500 +key.57=UPPL_RC_ERR_TRANSACTION_START +code.57=50000 java.57=Internal Server Error -south.57=Invalid transaction start request +south.57=Transaction start error -key.58=UPPL_RC_ERR_TRANSACTION_START_INVALID_DRIVER_RESPONSE -code.58=500 +key.58=UPPL_RC_ERR_INVALID_TRANSACT_START_REQ +code.58=50000 java.58=Internal Server Error -south.58=Invalid transaction start invalid driver response +south.58=Invalid transaction start request -key.59=UPPL_RC_ERR_VOTE_DB_INVALID -code.59=500 +key.59=UPPL_RC_ERR_TRANSACTION_START_INVALID_DRIVER_RESPONSE +code.59=50000 java.59=Internal Server Error -south.59=Vote database invalid +south.59=Invalid transaction start invalid driver response -key.60=UPPL_RC_ERR_VOTE_INVALID_REQ -code.60=500 +key.60=UPPL_RC_ERR_VOTE_DB_INVALID +code.60=50000 java.60=Internal Server Error -south.60=Vote invalid request +south.60=Vote database invalid -key.61=UPPL_RC_ERR_AUDIT_FAILURE -code.61=500 +key.61=UPPL_RC_ERR_VOTE_INVALID_REQ +code.61=50000 java.61=Internal Server Error -south.61=Audit failure +south.61=Vote invalid request -key.62=UPPL_RC_ERR_IMPORT_IN -code.62=500 +key.62=UPPL_RC_ERR_AUDIT_FAILURE +code.62=50000 java.62=Internal Server Error -south.62=Import error +south.62=Audit failure -key.63=UPPL_RC_ERR_ABORT_AUDIT -code.63=500 +key.63=UPPL_RC_ERR_IMPORT_IN +code.63=50000 java.63=Internal Server Error -south.63=Abort audit +south.63=Import error -key.64=UPPL_RC_ERR_ABORT_TRANSACTION -code.64=500 +key.64=UPPL_RC_ERR_ABORT_AUDIT +code.64=50000 java.64=Internal Server Error -south.64=Abort transaction +south.64=Abort audit -key.65=UPPL_RC_ERR_MANDATORY_ATTRIB_NULL_VALUE -code.65=500 +key.65=UPPL_RC_ERR_ABORT_TRANSACTION +code.65=50000 java.65=Internal Server Error -south.65=Mandatory attribute null value +south.65=Abort transaction -key.66=UPPL_RC_ERR_MANDATORY_ATTRIB_INVALID -code.66=500 +key.66=UPPL_RC_ERR_MANDATORY_ATTRIB_NULL_VALUE +code.66=50000 java.66=Internal Server Error -south.66=Mandatory attribute invalid +south.66=Mandatory attribute null value + +key.67=UPPL_RC_ERR_MANDATORY_ATTRIB_INVALID +code.67=50000 +java.67=Internal Server Error +south.67=Mandatory attribute invalid diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/package-info.java new file mode 100644 index 00000000..0310d0b7 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/ipc/package-info.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API IPC Client classes that + * communicate with IPC server. + */ +package org.opendaylight.vtn.javaapi.ipc; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/FreeCounterBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/FreeCounterBean.java new file mode 100644 index 00000000..f473674b --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/FreeCounterBean.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.beans; + +/** + * Bean class for os_free_counter_tbl + */ +public class FreeCounterBean { + + private String resourceId; + private String vtnName; + private int resourceCounter; + + public String getResourceId() { + return resourceId; + } + + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } + + public String getVtnName() { + return vtnName; + } + + public void setVtnName(String vtnName) { + this.vtnName = vtnName; + } + + public int getResourceCounter() { + return resourceCounter; + } + + public void setResourceCounter(int resourceCounter) { + this.resourceCounter = resourceCounter; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/StaticRouteBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/StaticRouteBean.java new file mode 100644 index 00000000..a9f3d9bd --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/StaticRouteBean.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.beans; + +/** + * Bean class for os_vrt_route_tbl + */ +public class StaticRouteBean { + + private String vtnName; + private String vrtName; + private String routeName; + + public String getVtnName() { + return vtnName; + } + + public void setVtnName(String vtnName) { + this.vtnName = vtnName; + } + + public String getVrtName() { + return vrtName; + } + + public void setVrtName(String vrtName) { + this.vrtName = vrtName; + } + + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VBridgeBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VBridgeBean.java new file mode 100644 index 00000000..1a8709f9 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VBridgeBean.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.beans; + +/** + * Bean class for os_vbr_tbl + */ +public class VBridgeBean { + + private int vbrId; + private String vtnName; + private String vbrName; + + public int getVbrId() { + return vbrId; + } + + public void setVbrId(int vbrId) { + this.vbrId = vbrId; + } + + public String getVtnName() { + return vtnName; + } + + public void setVtnName(String vtnName) { + this.vtnName = vtnName; + } + + public String getVbrName() { + return vbrName; + } + + public void setVbrName(String vbrName) { + this.vbrName = vbrName; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VBridgeInterfaceBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VBridgeInterfaceBean.java new file mode 100644 index 00000000..b55496e8 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VBridgeInterfaceBean.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.beans; + +/** + * Bean class for os_vbr_if_tbl + */ +public class VBridgeInterfaceBean { + + private int vbrIfId; + private String vtnName; + private String vbrName; + private String vbrIfName; + private String mapType; + private String logicalPortId; + + public int getVbrIfId() { + return vbrIfId; + } + + public void setVbrIfId(int vbrIfId) { + this.vbrIfId = vbrIfId; + } + + public String getVtnName() { + return vtnName; + } + + public void setVtnName(String vtnName) { + this.vtnName = vtnName; + } + + public String getVbrName() { + return vbrName; + } + + public void setVbrName(String vbrName) { + this.vbrName = vbrName; + } + + public String getVbrIfName() { + return vbrIfName; + } + + public void setVbrIfName(String vbrIfName) { + this.vbrIfName = vbrIfName; + } + + public String getMapType() { + return mapType; + } + + public void setMapType(String mapType) { + this.mapType = mapType; + } + + public void setLogicalPortId(String logicalPortId) { + this.logicalPortId = logicalPortId; + } + + public String getLogicalPortId() { + return logicalPortId; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VRouterBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VRouterBean.java new file mode 100644 index 00000000..a5507585 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VRouterBean.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.beans; + +/** + * Bean class for os_vrt_tbl + */ +public class VRouterBean { + + private String vtnName; + private String vrtName; + + public String getVtnName() { + return vtnName; + } + + public void setVtnName(String vtnName) { + this.vtnName = vtnName; + } + + public String getVrtName() { + return vrtName; + } + + public void setVrtName(String vrtName) { + this.vrtName = vrtName; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VRouterInterfaceBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VRouterInterfaceBean.java new file mode 100644 index 00000000..8a12c677 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VRouterInterfaceBean.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.beans; + +/** + * Bean class for os_vrt_if_tbl + */ +public class VRouterInterfaceBean { + + private int vrtIfId; + private String vtnName; + private String vrtName; + private String vrtIfName; + private String vbrName; + + public int getVrtIfId() { + return vrtIfId; + } + + public void setVrtIfId(int vrtIfId) { + this.vrtIfId = vrtIfId; + } + + public String getVtnName() { + return vtnName; + } + + public void setVtnName(String vtnName) { + this.vtnName = vtnName; + } + + public String getVrtName() { + return vrtName; + } + + public void setVrtName(String vrtName) { + this.vrtName = vrtName; + } + + public String getVrtIfName() { + return vrtIfName; + } + + public void setVrtIfName(String vrtIfName) { + this.vrtIfName = vrtIfName; + } + + public String getVbrName() { + return vbrName; + } + + public void setVbrName(String vbrName) { + this.vbrName = vbrName; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VtnBean.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VtnBean.java new file mode 100644 index 00000000..54055a74 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/VtnBean.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.beans; + +/** + * Bean class for os_vtn_tbl + */ +public class VtnBean { + + private int vtnId; + private String vtnName; + + public int getVtnId() { + return vtnId; + } + + public void setVtnId(int vtnId) { + this.vtnId = vtnId; + } + + public String getVtnName() { + return vtnName; + } + + public void setVtnName(String vtnName) { + this.vtnName = vtnName; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/package-info.java new file mode 100644 index 00000000..3141a77e --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/beans/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Bean classes for OpenStack resources + */ +package org.opendaylight.vtn.javaapi.openstack.beans; \ No newline at end of file diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/constants/VtnServiceOpenStackConsts.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/constants/VtnServiceOpenStackConsts.java new file mode 100644 index 00000000..d7402900 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/constants/VtnServiceOpenStackConsts.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.constants; + +/** + * VTN Service OpenStack related constants + */ +public class VtnServiceOpenStackConsts { + + /* Common constants */ + public static final String VTN_WEB_API_ROOT = "vtn-webapi"; + public static final String OS_RESOURCE_PKG = "org.opendaylight.vtn.javaapi.resources.openstack."; + public static final String NOT_FOUND_SQL_STATE = "23503"; + public static final String CONFLICT_SQL_STATE = "23505"; + public static final String OS_MAC_ADD_REGEX = "^([0-9a-fA-F]{2}(\\:[0-9a-fA-F]{2}){5})$"; + public static final String OS_DATAPATH_ID_REGEX = "0[xX][0-9a-fA-F]{1,16}"; + public static final String INVALID_DATA_PATH_ID = "0XFFFFFFFFFFFFFFFF"; + public static final String VLANMAP_MODE = "vlanmap_mode"; + public static final String NULL = "null"; + public static final char X_PASS = 'p'; + public static final char X_DROP = 'd'; + + /* Resource Path OpenStack URI constants */ + public static final String TENANT_PATH = "/tenants/{tenant_id}"; + public static final String TENANTS_PATH = "/tenants"; + public static final String NETWORK_PATH = "/tenants/{tenant_id}/networks/{net_id}"; + public static final String NETWORKS_PATH = "/tenants/{tenant_id}/networks"; + public static final String PORT_PATH = "/tenants/{tenant_id}/networks/{net_id}/ports/{port_id}"; + public static final String PORTS_PATH = "/tenants/{tenant_id}/networks/{net_id}/ports"; + public static final String ROUTER_PATH = "/tenants/{tenant_id}/routers/{router_id}"; + public static final String ROUTERS_PATH = "/tenants/{tenant_id}/routers"; + public static final String ROUTER_INTERFACE_PATH = "/tenants/{tenant_id}/routers/{router_id}/interfaces/{if_id}"; + public static final String ROUTER_INTERFACES_PATH = "/tenants/{tenant_id}/routers/{router_id}/interfaces"; + public static final String ROUTE_PATH = "/tenants/{tenant_id}/routers/{router_id}/routes/{route_id}"; + public static final String ROUTES_PATH = "/tenants/{tenant_id}/routers/{router_id}/routes"; + public static final String FILTER_PATH = "/filters/{filter_id}"; + public static final String FILTERS_PATH = "/filters"; + public static final String DEST_CTRL_PATH = "/destination_controller"; + + /* Resource Path UNC URI constants */ + public static final String URI_CONCATENATOR = "/"; + public static final String VTN_PATH = "/vtns"; + public static final String VBRIDGE_PATH = "/vbridges"; + public static final String VLANMAP_PATH = "/vlanmaps"; + public static final String PORTMAP_PATH = "/portmap"; + public static final String VROUTER_PATH = "/vrouters"; + public static final String INTERFACE_PATH = "/interfaces"; + public static final String VLINK_PATH = "/vlinks"; + public static final String STATIC_ROUTE_PATH = "/static_iproutes"; + public static final String CTRL_PATH = "/controllers"; + public static final String SWITCH_PATH = "/switches"; + public static final String PHY_PORTS_PATH = "/ports"; + + /* URI Parameter constants */ + public static final String TENANT_ID = "tenant_id"; + public static final String NET_ID = "net_id"; + public static final String PORT_ID = "port_id"; + public static final String ROUTER_ID = "router_id"; + public static final String IF_ID = "if_id"; + public static final String ROUTE_ID = "route_id"; + public static final String FILTER_ID = "filter_id"; + + /* Request Parameter constants */ + public static final String ID = "id"; + public static final String DESCRIPTION = "description"; + public static final String DATAPATH_ID = "datapath_id"; + public static final String PORT = "port"; + public static final String VID = "vid"; + public static final String FILTERS = "filters"; + public static final String ROUTER_NET_ID = "net_id"; + public static final String IP_ADDRESS = "ip_address"; + public static final String DESTNATION = "destination"; + public static final String NEXTHOP = "nexthop"; + public static final String ROUTES = "routes"; + public static final String MAC_ADDRESS = "mac_address"; + + /* OpenStack name's prefix constants */ + public static final String VTN_PREFIX = "os_vtn_"; + public static final String VBR_PREFIX = "os_vbr_"; + public static final String VRT_PREFIX = "os_vrt"; + public static final String IF_PREFIX = "os_if_"; + public static final String VLK_PREFIX = "os_vlk_"; + public static final String FL_PREFIX = "os_f"; + + /* Database properties key name constants */ + public static final String INI_FILE_PATH = "ini_filepath"; + public static final String UNC_DB_DSN = "UNC_DB_DSN"; + public static final String DB_DRIVER = "org.postgresql.Driver"; + public static final String DB_URL_PREFIX = "jdbc:postgresql://"; + public static final String DB_IP = "Servername"; + public static final String DB_PORT = "Port"; + public static final String DB_NAME = "Database"; + public static final String DB_USER = "UserName"; + public static final String DB_PASSWORD = "Password"; + public static final String DB_INIT_CONN_SIZE = "db_initial_con_size"; + public static final String DB_MAX_CONN_SIZE = "db_max_conn_size"; + public static final String DB_WAIT_CONDITION = "db_wait_status"; + + /* Resource ID key constants */ + public static final String DEFAULT_VTN = "default_vtn"; + public static final String TENANT_RES_ID = "vtn"; + public static final String NETWORK_RES_ID = "vbr"; + public static final String PORT_RES_ID = "port"; + public static final String ROUTER_RES_ID = "vrt"; + //public static final String INTERFACE_RES_ID = "if"; + public static final String DEFAULT_ROUTE = "default_route"; + public static final int MAX_ROUTER_IF_LIMIT = 393216; + public static final String DEFAULT_IP = "0.0.0.0"; + public static final String DEFAULT_CIDR_IP = "0.0.0.0/0"; + public static final String DEFAULT_MAC = "00:00:00:00:00:00"; + public static final int MAX_MSG_LEN = 1024; + public static final String RT_IF_FLAG = "R"; + public static final String NW_IF_FLAG = "N"; +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/constants/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/constants/package-info.java new file mode 100644 index 00000000..7194a0ca --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/constants/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains constant classes for OpenStack resources + */ +package org.opendaylight.vtn.javaapi.openstack.constants; \ No newline at end of file diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/MapResourceGenerator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/MapResourceGenerator.java new file mode 100644 index 00000000..8278330c --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/MapResourceGenerator.java @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.convertor; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; + +/** + * Provides Request-Response Conversion methods for Vlan-map and Port-map + * requests + */ +public class MapResourceGenerator { + + /** + * Generated Create vlan-map request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vlan-map request body + */ + public static JsonObject getCreateVlanMapRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject vlanmap = new JsonObject(); + + String datapathId = openStackResourceBody.get( + VtnServiceOpenStackConsts.DATAPATH_ID).getAsString(); + + if (!datapathId.isEmpty()) { + datapathId = datapathId.substring(2, datapathId.length()); + final StringBuilder sb = new StringBuilder(); + for (int toPrepend = 16 - datapathId.length(); toPrepend > 0; toPrepend--) { + sb.append('0'); + } + datapathId = sb.append(datapathId).toString(); + final String logicalPortIdPartFirst = datapathId.substring(0, 4); + final String logicalPortIdPartSecond = datapathId.substring(4, 8); + final String logicalPortIdPartThird = datapathId.substring(8, 12); + final String logicalPortIdPartFour = datapathId.substring(12, 16); + + vlanmap.addProperty(VtnServiceJsonConsts.LOGICAL_PORT_ID, "SW" + + VtnServiceConsts.HYPHEN + logicalPortIdPartFirst + + VtnServiceConsts.HYPHEN + logicalPortIdPartSecond + + VtnServiceConsts.HYPHEN + logicalPortIdPartThird + + VtnServiceConsts.HYPHEN + logicalPortIdPartFour); + } + + final int vlanId = openStackResourceBody.get( + VtnServiceOpenStackConsts.VID).getAsInt(); + if (vlanId >= VtnServiceJsonConsts.VAL_1 + && vlanId <= VtnServiceJsonConsts.VAL_4095) { + vlanmap.addProperty(VtnServiceJsonConsts.VLANID, vlanId); + } else { + vlanmap.addProperty(VtnServiceJsonConsts.NO_VLAN_ID, + VtnServiceJsonConsts.TRUE); + } + + root.add(VtnServiceJsonConsts.VLANMAP, vlanmap); + return root; + } + + /** + * Generated Create port-map request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - port-map request body + */ + public static JsonObject getCreatePortMapRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject portmap = new JsonObject(); + + String datapathId = openStackResourceBody.get( + VtnServiceOpenStackConsts.DATAPATH_ID).getAsString(); + + datapathId = datapathId.substring(2, datapathId.length()); + final StringBuilder sb = new StringBuilder(); + for (int toPrepend = 16 - datapathId.length(); toPrepend > 0; toPrepend--) { + sb.append('0'); + } + datapathId = sb.append(datapathId).toString(); + final String logicalPortIdPartFirst = datapathId.substring(0, 4); + final String logicalPortIdPartSecond = datapathId.substring(4, 8); + final String logicalPortIdPartThird = datapathId.substring(8, 12); + final String logicalPortIdPartFour = datapathId.substring(12, 16); + + portmap.addProperty( + VtnServiceJsonConsts.LOGICAL_PORT_ID, + "PP" + + VtnServiceConsts.HYPHEN + + logicalPortIdPartFirst + + VtnServiceConsts.HYPHEN + + logicalPortIdPartSecond + + VtnServiceConsts.HYPHEN + + logicalPortIdPartThird + + VtnServiceConsts.HYPHEN + + logicalPortIdPartFour + + VtnServiceConsts.HYPHEN + + openStackResourceBody.get( + VtnServiceJsonConsts.PORTNAME).getAsString()); + + final int vlanId = openStackResourceBody.get( + VtnServiceOpenStackConsts.VID).getAsInt(); + if (vlanId >= VtnServiceJsonConsts.VAL_1 + && vlanId <= VtnServiceJsonConsts.VAL_4095) { + portmap.addProperty(VtnServiceJsonConsts.VLANID, vlanId); + portmap.addProperty(VtnServiceJsonConsts.TAGGED, + VtnServiceJsonConsts.FALSE); + } + + root.add(VtnServiceJsonConsts.PORTMAP, portmap); + return root; + } + + /** + * Generated Get vlan-map request body + * + * @return - vlan-map request body + */ + public static JsonObject getVLanMapCountRequestBody() { + final JsonObject request = new JsonObject(); + request.addProperty(VtnServiceJsonConsts.TARGETDB, + VtnServiceJsonConsts.RUNNING); + request.addProperty(VtnServiceJsonConsts.OP, VtnServiceJsonConsts.COUNT); + return request; + } + + /** + * Generated Get port request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - port request body + */ + public static JsonObject getPortNameRequestBody( + JsonObject openStackResourceBody) { + final JsonObject request = new JsonObject(); + request.addProperty(VtnServiceJsonConsts.TARGETDB, + VtnServiceJsonConsts.STATE); + request.addProperty(VtnServiceJsonConsts.OP, + VtnServiceJsonConsts.DETAIL); + request.addProperty(VtnServiceJsonConsts.PORT_ID, openStackResourceBody + .get(VtnServiceOpenStackConsts.PORT).getAsString()); + return request; + } + +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/StaticRouteResourceGenerator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/StaticRouteResourceGenerator.java new file mode 100644 index 00000000..a7ab9613 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/StaticRouteResourceGenerator.java @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.convertor; + +import org.apache.commons.net.util.SubnetUtils; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; + +/** + * Provides Request-Response Conversion methods for Route requests + * Requests + */ +public class StaticRouteResourceGenerator { + + /** + * Generated Create static-ip-route request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - static-ip-route request body + */ + public static JsonObject getCreateStaticRouteRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject staticRoute = new JsonObject(); + + final String[] destination = openStackResourceBody + .get(VtnServiceOpenStackConsts.DESTNATION).getAsString() + .split(VtnServiceConsts.SLASH); + + staticRoute.addProperty(VtnServiceJsonConsts.IPADDR, destination[0]); + + staticRoute.addProperty(VtnServiceJsonConsts.PREFIX, destination[1]); + + staticRoute.addProperty(VtnServiceJsonConsts.NEXTHOPADDR, + openStackResourceBody.get(VtnServiceOpenStackConsts.NEXTHOP) + .getAsString()); + + root.add(VtnServiceJsonConsts.STATIC_IPROUTE, staticRoute); + return root; + } + + /** + * Generated List static-ip-route request body + * + * @return - static-ip-route request body + */ + public static JsonObject getListRequestBody() { + final JsonObject request = new JsonObject(); + request.addProperty(VtnServiceJsonConsts.TARGETDB, + VtnServiceJsonConsts.STATE); + return request; + } + + /** + * Convert response for static-ip-route from UNC format to OpenStack format + * + * @param responseBody + * - UNC formatted response body + * @return - OpenStack formatted response body + */ + public static JsonObject convertListResponseBody(JsonObject responseBody) { + final JsonObject openStackResponse = new JsonObject(); + final JsonArray routes = new JsonArray(); + final JsonArray staticRoutes = responseBody.get( + VtnServiceJsonConsts.STATIC_IPROUTES).getAsJsonArray(); + for (final JsonElement staticRoute : staticRoutes) { + + final String[] staticIpRouteId = staticRoute.getAsJsonObject() + .get(VtnServiceJsonConsts.STATICIPROUTEID).getAsString() + .split(VtnServiceConsts.HYPHEN); + + final String destination = staticIpRouteId[0] + + VtnServiceConsts.SLASH + staticIpRouteId[2]; + final String nexthop = staticIpRouteId[1]; + + final SubnetUtils subnetUtils = new SubnetUtils(destination); + final String routeId = staticIpRouteId[0] + VtnServiceConsts.HYPHEN + + staticIpRouteId[1] + VtnServiceConsts.HYPHEN + + subnetUtils.getInfo().getNetmask(); + + final JsonObject route = new JsonObject(); + route.addProperty(VtnServiceOpenStackConsts.ID, routeId); + route.addProperty(VtnServiceOpenStackConsts.DESTNATION, destination); + route.addProperty(VtnServiceOpenStackConsts.NEXTHOP, nexthop); + routes.add(route); + } + openStackResponse.add(VtnServiceOpenStackConsts.ROUTES, routes); + return openStackResponse; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VbrResourcesGenerator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VbrResourcesGenerator.java new file mode 100644 index 00000000..62242e42 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VbrResourcesGenerator.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.convertor; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; + +/** + * Provides Request-Response Conversion methods for Network and Port Requests + */ +public class VbrResourcesGenerator { + + /** + * Generated Create vBridge request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vBridge request body + */ + public static JsonObject getCreateVbrRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject vbr = new JsonObject(); + + vbr.addProperty(VtnServiceJsonConsts.VBRNAME, openStackResourceBody + .get(VtnServiceOpenStackConsts.ID).getAsString()); + + if (openStackResourceBody.has(VtnServiceOpenStackConsts.DESCRIPTION) + && !openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION).isJsonNull()) { + vbr.addProperty( + VtnServiceJsonConsts.DESCRIPTION, + openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString()); + + } + + vbr.addProperty(VtnServiceJsonConsts.CONTROLLERID, + openStackResourceBody.get(VtnServiceJsonConsts.CONTROLLERID) + .getAsString()); + + vbr.addProperty(VtnServiceJsonConsts.DOMAINID, + VtnServiceJsonConsts.DEFAULT_DOMAIN_ID); + + root.add(VtnServiceJsonConsts.VBRIDGE, vbr); + return root; + } + + /** + * Generated Update vBridge request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vBridge request body + */ + public static JsonObject getUpdateVbrRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject vbr = new JsonObject(); + + if (!openStackResourceBody.has(VtnServiceOpenStackConsts.DESCRIPTION) + || openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION).isJsonNull() + || openStackResourceBody + .get(VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString().isEmpty()) { + vbr.addProperty(VtnServiceJsonConsts.DESCRIPTION, + VtnServiceConsts.EMPTY_STRING); + } else { + vbr.addProperty( + VtnServiceJsonConsts.DESCRIPTION, + openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString()); + + } + + root.add(VtnServiceJsonConsts.VBRIDGE, vbr); + return root; + } + + /** + * Generated Create vBridge interface request body from OpenStack request + * body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vBridge interface request body + */ + public static JsonObject getCreateVbrIfRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject interfaceJson = new JsonObject(); + + interfaceJson.addProperty(VtnServiceJsonConsts.IFNAME, + openStackResourceBody.get(VtnServiceOpenStackConsts.ID) + .getAsString()); + + root.add(VtnServiceJsonConsts.INTERFACE, interfaceJson); + return root; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VrtResourcesGenerator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VrtResourcesGenerator.java new file mode 100644 index 00000000..b4f95534 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VrtResourcesGenerator.java @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.convertor; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; + +/** + * Provides Request-Response Conversion methods for Router and Router Interface + * Requests + */ +public class VrtResourcesGenerator { + + /** + * Generated Create vRouter request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vRouter request body + */ + public static JsonObject getCreateVrtRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject vrt = new JsonObject(); + + vrt.addProperty(VtnServiceJsonConsts.VRTNAME, openStackResourceBody + .get(VtnServiceOpenStackConsts.ID).getAsString()); + + if (openStackResourceBody.has(VtnServiceOpenStackConsts.DESCRIPTION) + && !openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION).isJsonNull()) { + vrt.addProperty( + VtnServiceJsonConsts.DESCRIPTION, + openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString()); + + } + + vrt.addProperty(VtnServiceJsonConsts.CONTROLLERID, + openStackResourceBody.get(VtnServiceJsonConsts.CONTROLLERID) + .getAsString()); + + vrt.addProperty(VtnServiceJsonConsts.DOMAINID, + VtnServiceJsonConsts.DEFAULT_DOMAIN_ID); + + root.add(VtnServiceJsonConsts.VROUTER, vrt); + return root; + } + + /** + * Generated Update vRouter request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vRouter request body + */ + public static JsonObject getUpdateVrtRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject vrt = new JsonObject(); + + if (!openStackResourceBody.has(VtnServiceOpenStackConsts.DESCRIPTION) + || openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION).isJsonNull() + || openStackResourceBody + .get(VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString().isEmpty()) { + vrt.addProperty(VtnServiceJsonConsts.DESCRIPTION, + VtnServiceConsts.EMPTY_STRING); + } else { + vrt.addProperty( + VtnServiceJsonConsts.DESCRIPTION, + openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString()); + + } + + root.add(VtnServiceJsonConsts.VROUTER, vrt); + return root; + } + + /** + * Generated Create vRouter interface request body from OpenStack request + * body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vRouter interface request body + */ + public static JsonObject getCreateVrtIfRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject interfaceJson = new JsonObject(); + + interfaceJson.addProperty(VtnServiceJsonConsts.IFNAME, + openStackResourceBody.get(VtnServiceOpenStackConsts.ID) + .getAsString()); + setIpAndMacAddress(openStackResourceBody, interfaceJson); + root.add(VtnServiceJsonConsts.INTERFACE, interfaceJson); + return root; + } + + /** + * Generated Update vRouter interface request body from OpenStack request + * body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - vRouter interface request body + */ + public static JsonObject getUpdateVrtIfRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject interfaceJson = new JsonObject(); + setIpAndMacAddress(openStackResourceBody, interfaceJson); + + // special case handling for IP address + if (openStackResourceBody.has(VtnServiceOpenStackConsts.IP_ADDRESS) + && VtnServiceOpenStackConsts.DEFAULT_CIDR_IP + .equals(openStackResourceBody.get( + VtnServiceOpenStackConsts.IP_ADDRESS) + .getAsString())) { + interfaceJson.addProperty(VtnServiceJsonConsts.IPADDR, + VtnServiceConsts.EMPTY_STRING); + interfaceJson.addProperty(VtnServiceJsonConsts.PREFIX, + VtnServiceConsts.EMPTY_STRING); + } + + // special case handling for MAC address + if (openStackResourceBody.has(VtnServiceOpenStackConsts.MAC_ADDRESS) + && VtnServiceOpenStackConsts.DEFAULT_MAC + .equals(openStackResourceBody.get( + VtnServiceOpenStackConsts.MAC_ADDRESS) + .getAsString())) { + interfaceJson.addProperty(VtnServiceJsonConsts.MACADDR, + VtnServiceConsts.EMPTY_STRING); + } + + root.add(VtnServiceJsonConsts.INTERFACE, interfaceJson); + return root; + } + + /** + * Set IP address and MAC address in interface JSON request body after + * conversion + * + * @param openStackResourceBody + * @param interfaceJson + */ + private static void setIpAndMacAddress(JsonObject openStackResourceBody, + JsonObject interfaceJson) { + if (openStackResourceBody.has(VtnServiceOpenStackConsts.IP_ADDRESS)) { + final String[] ipAddress = openStackResourceBody + .get(VtnServiceOpenStackConsts.IP_ADDRESS).getAsString() + .split(VtnServiceConsts.SLASH); + interfaceJson + .addProperty(VtnServiceJsonConsts.IPADDR, ipAddress[0]); + interfaceJson + .addProperty(VtnServiceJsonConsts.PREFIX, ipAddress[1]); + } + + if (openStackResourceBody.has(VtnServiceOpenStackConsts.MAC_ADDRESS)) { + String macAddress = openStackResourceBody.get( + VtnServiceOpenStackConsts.MAC_ADDRESS).getAsString(); + macAddress = macAddress.replaceAll(VtnServiceConsts.COLON, + VtnServiceConsts.EMPTY_STRING); + + final String macFirstPart = macAddress.substring(0, 4); + final String macSeconfPart = macAddress.substring(4, 8); + final String macThirdPart = macAddress.substring(8, 12); + + interfaceJson.addProperty(VtnServiceJsonConsts.MACADDR, + macFirstPart + VtnServiceConsts.DOT + macSeconfPart + + VtnServiceConsts.DOT + macThirdPart); + } + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VtnResourcesGenerator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VtnResourcesGenerator.java new file mode 100644 index 00000000..d5d14527 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/VtnResourcesGenerator.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.convertor; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; + +/** + * Provides Request-Response Conversion methods for Tenant Requests + */ +public class VtnResourcesGenerator { + + /** + * Generated Create VTN request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - VTN request body + */ + public static JsonObject getCreateVtnRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject vtn = new JsonObject(); + + vtn.addProperty(VtnServiceJsonConsts.VTNNAME, openStackResourceBody + .get(VtnServiceOpenStackConsts.ID).getAsString()); + + if (openStackResourceBody.has(VtnServiceOpenStackConsts.DESCRIPTION) + && !openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION).isJsonNull()) { + vtn.addProperty( + VtnServiceJsonConsts.DESCRIPTION, + openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString()); + + } + + root.add(VtnServiceJsonConsts.VTN, vtn); + return root; + } + + /** + * Generated Update VTN request body from OpenStack request body + * + * @param openStackResourceBody + * - OpenStack request body for tenant + * @return - VTN request body + */ + public static JsonObject getUpdateVtnRequestBody( + JsonObject openStackResourceBody) { + final JsonObject root = new JsonObject(); + final JsonObject vtn = new JsonObject(); + + if (!openStackResourceBody.has(VtnServiceOpenStackConsts.DESCRIPTION) + || openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION).isJsonNull() + || openStackResourceBody + .get(VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString().isEmpty()) { + vtn.addProperty(VtnServiceJsonConsts.DESCRIPTION, + VtnServiceConsts.EMPTY_STRING); + } else { + vtn.addProperty( + VtnServiceJsonConsts.DESCRIPTION, + openStackResourceBody.get( + VtnServiceOpenStackConsts.DESCRIPTION) + .getAsString()); + + } + + root.add(VtnServiceJsonConsts.VTN, vtn); + return root; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/package-info.java new file mode 100644 index 00000000..fabb0ba2 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/convertor/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Convertsion classes for OpenStack resources + */ +package org.opendaylight.vtn.javaapi.openstack.convertor; \ No newline at end of file diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/DestinationControllerDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/DestinationControllerDao.java new file mode 100644 index 00000000..dd1b75e4 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/DestinationControllerDao.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_controller_tbl table + */ +public class DestinationControllerDao { + + private static final Logger LOG = Logger + .getLogger(DestinationControllerDao.class.getName()); + + /** + * Insert controller_id into database table os_controller_tbl + * + * @param connection + * - DB Connection + * @param controllerId + * - controller_id to be set + * @return - insertion status + * @throws SQLException + */ + public int setDestinationController(Connection connection, + String controllerId) throws SQLException { + LOG.trace("Start ResourceIdManager#setDestinationController()"); + LOG.debug("Controller id : " + controllerId); + int status; + final String sql = VtnOpenStackSQLFactory.INS_DEST_CTRL_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, controllerId); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + LOG.trace("Complete ResourceIdManager#setDestinationController()"); + return status; + } + + /** + * Delete controller_id from database table os_controller_tbl + * + * @param connection + * - DB Connection + * @return - deletion status + * @throws SQLException + */ + public int deleteDestinationController(Connection connection) + throws SQLException { + LOG.trace("Start ResourceIdManager#deleteDestinationController()"); + int status; + final String sql = VtnOpenStackSQLFactory.DEL_DEST_CTRL_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Deletion status : " + status); + LOG.trace("Complete ResourceIdManager#deleteDestinationController()"); + return status; + } + + /** + * Retrieve controller_id from database table os_controller_tbl + * + * @param connection + * - DB Connection + * @return - controller_id + * @throws SQLException + */ + public String getDestinationController(Connection connection) + throws SQLException { + LOG.trace("Start ResourceIdManager#deleteDestinationController()"); + String controllerId = null; + final String sql = VtnOpenStackSQLFactory.SEL_DEST_CTRL_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + controllerId = resultSet.getString(1); + LOG.debug("Extracted controller id : " + controllerId); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + LOG.trace("Complete ResourceIdManager#deleteDestinationController()"); + return controllerId; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/FreeCounterDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/FreeCounterDao.java new file mode 100644 index 00000000..1f7fa77b --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/FreeCounterDao.java @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_free_counter_tbl table + */ +public class FreeCounterDao { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(FreeCounterDao.class + .getName()); + + /** + * Retrieve the resource counter for specific VTN, if available in database. + * Return -1 if not found + * + * @param connection + * - DB Connection instance + * @param freeCounterBean + * - Bean corresponding to os_free_counter_tbl + * @return - available resource counter + * @throws SQLException + */ + public int + getCounter(Connection connection, FreeCounterBean freeCounterBean) + throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_FC_SQL; + int resourceCounter = -1; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, freeCounterBean.getResourceId()); + statement.setString(2, freeCounterBean.getVtnName()); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + resourceCounter = resultSet.getInt(1); + LOG.debug("Resource counter is available in os_free_counter_tbl : " + + resourceCounter); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return resourceCounter; + } + + /** + * Delete resource counter for specific VTN from database + * + * @param connection + * - DB Connection instance + * @param freeCounterBean + * - Bean corresponding to os_free_counter_tbl + * @return - deletion status + * @throws SQLException + */ + public int deleteCounter(Connection connection, + FreeCounterBean freeCounterBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.DEL_FC_SQL; + int status; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, freeCounterBean.getResourceId()); + statement.setString(2, freeCounterBean.getVtnName()); + statement.setInt(3, freeCounterBean.getResourceCounter()); + status = statement.executeUpdate(); + LOG.debug("Deletion Status of resource id from os_free_counter_tbl : " + + status); + } finally { + if (statement != null) { + statement.close(); + } + } + return status; + } + + /** + * Insert the resource counter for specific VTN into database + * + * @param connection + * - DB Connection instance + * @param freeCounterBean + * - Bean corresponding to os_free_counter_tbl + * @return - insertion status + * @throws SQLException + */ + public int insertCounter(Connection connection, + FreeCounterBean freeCounterBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.INS_FC_SQL; + int status; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, freeCounterBean.getResourceCounter()); + statement.setString(2, freeCounterBean.getVtnName()); + statement.setString(3, freeCounterBean.getResourceId()); + status = statement.executeUpdate(); + LOG.debug("Deletion Status of resource id from os_free_counter_tbl : " + + status); + } finally { + if (statement != null) { + statement.close(); + } + } + return status; + } + + /** + * Delete all resource counters for specific VTN from database + * + * @param connection + * - DB Connection instance + * @param freeCounterBean + * - Bean corresponding to os_free_counter_tbl + * @return - deletion status + * @throws SQLException + */ + public int deleteVtnChilds(Connection connection, + FreeCounterBean freeCounterBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.DEL_VTN_CHILD_SQL; + int status; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, freeCounterBean.getVtnName()); + statement.setString(2, VtnServiceOpenStackConsts.TENANT_RES_ID); + status = statement.executeUpdate(); + LOG.debug("Deletion Status of resource counters from os_free_counter_tbl : " + + status); + } finally { + if (statement != null) { + statement.close(); + } + } + return status; + } + /** + * Delete all resource counters for specific VTN from database + * + * @param connection + * - DB Connection instance + * @param freeCounterBean + * - Bean corresponding to os_free_counter_tbl + * @return - deletion status + * @throws SQLException + */ + public int deleteNodeChilds(Connection connection, + FreeCounterBean freeCounterBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.DEL_NODE_CHILD_SQL; + int status; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, freeCounterBean.getVtnName()); + status = statement.executeUpdate(); + LOG.debug("Deletion Status of resource counters from os_free_counter_tbl : " + + status); + } finally { + if (statement != null) { + statement.close(); + } + } + return status; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/StaticRouteDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/StaticRouteDao.java new file mode 100644 index 00000000..9179f8bb --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/StaticRouteDao.java @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.StaticRouteBean; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_vrt_route_tbl table + */ +public class StaticRouteDao { + + private static final Logger LOG = Logger.getLogger(StaticRouteDao.class + .getName()); + + /** + * Insert Static-Route information into database + * + * @param connection + * - DB Connection instance + * @param staticRouteBean + * - Bean corresponding to os_vrt_route_tbl + * @return - insertion status + * @throws SQLException + */ + public int insert(Connection connection, StaticRouteBean staticRouteBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.INS_ROUTE_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, staticRouteBean.getVtnName()); + statement.setString(2, staticRouteBean.getVrtName()); + statement.setString(3, staticRouteBean.getRouteName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + return status; + } + + /** + * Delete Static-Route information from database + * + * @param connection + * - DB Connection instance + * @param staticRouteBean + * - Bean corresponding to os_vrt_route_tbl + * @return - deletion status + * @throws SQLException + */ + public int delete(Connection connection, StaticRouteBean staticRouteBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.DEL_ROUTE_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, staticRouteBean.getVtnName()); + statement.setString(2, staticRouteBean.getVrtName()); + statement.setString(3, staticRouteBean.getRouteName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + return status; + } + + /** + * Retrieve Static-Route list from database + * + * @param connection + * - DB Connection instance + * @param staticRouteBean + * - Bean corresponding to os_vrt_route_tbl + * @return - list of static-routes + * @throws SQLException + */ + public List getList(Connection connection, + StaticRouteBean staticRouteBean) throws SQLException { + final List routeList = new ArrayList(); + final String sql = VtnOpenStackSQLFactory.SEL_ROUTE_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + routeList.add(resultSet.getString(1)); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return routeList; + } + + /** + * Check the existence of Static Router + * + * @param connection + * - DB Connection instance + * @param staticRouteBean + * - Bean corresponding to os_vrt_route_tbl + * @return - true, if resource found + * @throws SQLException + */ + public boolean isStaticRouteFound(Connection connection, + StaticRouteBean staticRouteBean) throws SQLException { + boolean isFound = false; + final String sql = VtnOpenStackSQLFactory.CHK_ROUTE_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, staticRouteBean.getVtnName()); + statement.setString(2, staticRouteBean.getVrtName()); + statement.setString(3, staticRouteBean.getRouteName()); + resultSet = statement.executeQuery(); + if (resultSet.next() && resultSet.getInt(1) > 0) { + isFound = true; + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return isFound; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VBridgeDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VBridgeDao.java new file mode 100644 index 00000000..9acb0e76 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VBridgeDao.java @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeBean; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_vbr_tbl table + */ +public class VBridgeDao { + + private static final Logger LOG = Logger.getLogger(VBridgeDao.class + .getName()); + + /** + * Get resource counter for Network + * + * @param connection + * - DB Connection instance + * @return - next incremented counter + * @throws SQLException + */ + public int getNextId(Connection connection, String vtnName) + throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VBR_ID_SQL; + int vbrResourceId = -1; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vtnName); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + vbrResourceId = resultSet.getInt(1) + 1; + LOG.debug("Auto generated resource counter : " + vbrResourceId); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return vbrResourceId; + } + + /** + * Insert Network information into database + * + * @param connection + * - DB Connection instance + * @param vBridgeBean + * - Bean corresponding to os_vbr_tbl + * @return - insertion status + * @throws SQLException + */ + public int insert(Connection connection, VBridgeBean vBridgeBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.INS_VBR_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, vBridgeBean.getVbrId()); + statement.setString(2, vBridgeBean.getVtnName()); + statement.setString(3, vBridgeBean.getVbrName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + return status; + } + + /** + * Delete Network information from database + * + * @param connection + * - DB Connection instance + * @param vBridgeBean + * - Bean corresponding to os_vbr_tbl + * @return - deletion status + * @throws SQLException + */ + public int delete(Connection connection, VBridgeBean vBridgeBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.DEL_VBR_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, vBridgeBean.getVbrId()); + statement.setString(2, vBridgeBean.getVtnName()); + statement.setString(3, vBridgeBean.getVbrName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Deletion status : " + status); + return status; + } + + /** + * Check the existence of Network + * + * @param connection + * - DB Connection instance + * @param vBridgeBean + * - Bean corresponding to os_vbr_tbl + * @return - true, if resource found + * @throws SQLException + */ + public boolean isVbrFound(Connection connection, VBridgeBean vBridgeBean) + throws SQLException { + boolean isFound = false; + final String sql = VtnOpenStackSQLFactory.CHK_VBR_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vBridgeBean.getVtnName()); + statement.setString(2, vBridgeBean.getVbrName()); + resultSet = statement.executeQuery(); + if (resultSet.next() && resultSet.getInt(1) > 0) { + isFound = true; + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return isFound; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VBridgeInterfaceDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VBridgeInterfaceDao.java new file mode 100644 index 00000000..a6a66f0f --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VBridgeInterfaceDao.java @@ -0,0 +1,306 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_vbr_if_tbl table + */ +public class VBridgeInterfaceDao { + + private static final Logger LOG = Logger + .getLogger(VBridgeInterfaceDao.class.getName()); + + /** + * Get resource counter for Port + * + * @param connection + * - DB Connection instance + * @return - next incremented counter + * @throws SQLException + */ + public int getNextId(Connection connection, String vtnName) + throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VBR_IF_ID_SQL; + int vbrIfResourceId = -1; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vtnName); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + vbrIfResourceId = resultSet.getInt(1) + 1; + LOG.debug("Auto generated resource counter : " + + vbrIfResourceId); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return vbrIfResourceId; + } + + /** + * Insert Port information into database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vbr_if_tbl + * @return - insertion status + * @throws SQLException + */ + public int + insert(Connection connection, VBridgeInterfaceBean vInterfaceBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.INS_VBR_IF_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, vInterfaceBean.getVbrIfId()); + statement.setString(2, vInterfaceBean.getVtnName()); + statement.setString(3, vInterfaceBean.getVbrName()); + statement.setString(4, vInterfaceBean.getVbrIfName()); + statement.setString(5, vInterfaceBean.getMapType()); + statement.setString(6, vInterfaceBean.getLogicalPortId()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + return status; + } + + /** + * Insert Port information into database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vbr_if_tbl + * @return - deletion status + * @throws SQLException + */ + public int + delete(Connection connection, VBridgeInterfaceBean vInterfaceBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.DEL_VBR_IF_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, vInterfaceBean.getVbrIfId()); + statement.setString(2, vInterfaceBean.getVtnName()); + statement.setString(3, vInterfaceBean.getVbrName()); + statement.setString(4, vInterfaceBean.getVbrIfName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Deletion status : " + status); + return status; + } + + /** + * Retrieve map_type information into database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vbr_if_tbl + * @return - map_type + * @throws SQLException + */ + public String getMapType(Connection connection, + VBridgeInterfaceBean vInterfaceBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VBR_IF_MAP_SQL; + String mapType = null; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setString(2, vInterfaceBean.getVbrName()); + statement.setString(3, vInterfaceBean.getVbrIfName()); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + mapType = resultSet.getString(1); + LOG.debug("Auto generated resource counter : " + mapType); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return mapType; + } + + /** + * Retrieve logical_port_id information into database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vbr_if_tbl + * @return - logical_port_id + * @throws SQLException + */ + public String getLogicalPortId(Connection connection, + VBridgeInterfaceBean vInterfaceBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VBR_IF_LP_SQL; + String logicalPortId = null; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setString(2, vInterfaceBean.getVbrName()); + statement.setString(3, vInterfaceBean.getVbrIfName()); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + logicalPortId = resultSet.getString(1); + LOG.debug("Logical Port Id : " + logicalPortId); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return logicalPortId; + } + + /** + * Check the existence of Port + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vbr_if_tbl + * @return - true, if resource found + * @throws SQLException + */ + public boolean isVbrIfFound(Connection connection, + VBridgeInterfaceBean vInterfaceBean) throws SQLException { + boolean isFound = false; + final String sql = VtnOpenStackSQLFactory.CHK_VBR_IF_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setString(2, vInterfaceBean.getVbrName()); + statement.setString(3, vInterfaceBean.getVbrIfName()); + resultSet = statement.executeQuery(); + if (resultSet.next() && resultSet.getInt(1) > 0) { + isFound = true; + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return isFound; + } + + /** + * Update map_type and logical_port_id into database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vbr_if_tbl + * @return - update status + * @throws SQLException + */ + public int updateVlanMapInfo(Connection connection, + VBridgeInterfaceBean vInterfaceBean) throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.UP_VBR_IF_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getMapType()); + statement.setString(2, vInterfaceBean.getLogicalPortId()); + statement.setString(3, vInterfaceBean.getVtnName()); + statement.setString(4, vInterfaceBean.getVbrName()); + statement.setString(5, vInterfaceBean.getVbrIfName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Update status : " + status); + return status; + } + + /** + * Retrieve if_id from database for specific vbr_name and vtn_name + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vbr_if_tbl + * @return - list of if_id + * @throws SQLException + */ + public List getVbrIfIds(Connection connection, + VBridgeInterfaceBean vInterfaceBean) throws SQLException { + List list = new ArrayList(); + final String sql = VtnOpenStackSQLFactory.SEL_VBR_IF_IDS_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setString(2, vInterfaceBean.getVbrName()); + resultSet = statement.executeQuery(); + while (resultSet.next()) { + list.add(resultSet.getInt(1)); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return list; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VRouterDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VRouterDao.java new file mode 100644 index 00000000..940f0cc3 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VRouterDao.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_vrt_tbl table + */ +public class VRouterDao { + + private static final Logger LOG = Logger.getLogger(VRouterDao.class + .getName()); + + /** + * Insert Router information into database + * + * @param connection + * - DB Connection instance + * @param vRouterBean + * - Bean corresponding to os_vrt_tbl + * @return - insertion status + * @throws SQLException + */ + public int insert(Connection connection, VRouterBean vRouterBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.INS_VRT_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vRouterBean.getVtnName()); + statement.setString(2, vRouterBean.getVrtName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + return status; + } + + /** + * Delete Router information into database + * + * @param connection + * - DB Connection instance + * @param vRouterBean + * - Bean corresponding to os_vrt_tbl + * @return - deletion status + * @throws SQLException + */ + public int delete(Connection connection, VRouterBean vRouterBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.DEL_VRT_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vRouterBean.getVtnName()); + statement.setString(2, vRouterBean.getVrtName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Deletion status : " + status); + return status; + } + + /** + * Check the existence of Router + * + * @param connection + * - DB Connection instance + * @param vRouterBean + * - Bean corresponding to os_vrt_tbl + * @return - true, if resource found + * @throws SQLException + */ + public boolean isVrtFound(Connection connection, VRouterBean vRouterBean) + throws SQLException { + boolean isFound = false; + final String sql = VtnOpenStackSQLFactory.CHK_VRT_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vRouterBean.getVtnName()); + statement.setString(2, vRouterBean.getVrtName()); + resultSet = statement.executeQuery(); + if (resultSet.next() && resultSet.getInt(1) > 0) { + isFound = true; + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return isFound; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VRouterInterfaceDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VRouterInterfaceDao.java new file mode 100644 index 00000000..671277ca --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VRouterInterfaceDao.java @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_vrt_if_tbl table + */ +public class VRouterInterfaceDao { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(VRouterInterfaceDao.class.getName()); + + /** + * Get resource counter for Router interface + * + * @param connection + * - DB Connection instance + * @return - next incremented counter + * @throws SQLException + */ + public int getNextId(Connection connection, String vtnName) + throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VRT_IF_ID_SQL; + int vrtIfResourceId = -1; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vtnName); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + vrtIfResourceId = resultSet.getInt(1) + 1; + LOG.debug("Auto generated resource counter : " + + vrtIfResourceId); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return vrtIfResourceId; + } + + /** + * Insert Router interface information into database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vrt_if_tbl + * @return - insertion status + * @throws SQLException + */ + public int + insert(Connection connection, VRouterInterfaceBean vInterfaceBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.INS_VRT_IF_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, vInterfaceBean.getVrtIfId()); + statement.setString(2, vInterfaceBean.getVtnName()); + statement.setString(3, vInterfaceBean.getVrtName()); + statement.setString(4, vInterfaceBean.getVrtIfName()); + statement.setString(5, vInterfaceBean.getVbrName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + return status; + } + + /** + * Retrieve vbr_name from database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vrt_if_tbl + * @return - retrieved vbr_name + * @throws SQLException + */ + public String getVbridgeName(Connection connection, + VRouterInterfaceBean vInterfaceBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VRT_IF_VBR_SQL; + String vbrName = null; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setInt(2, vInterfaceBean.getVrtIfId()); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + vbrName = resultSet.getString(1); + LOG.debug("Retrieved vbr_name : " + vbrName); + } + } finally { + if (statement != null) { + statement.close(); + } + } + return vbrName; + } + + /** + * Delete Router interface information from database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vrt_if_tbl + * @return - deletion status + * @throws SQLException + */ + public int + delete(Connection connection, VRouterInterfaceBean vInterfaceBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.DEL_VRT_IF_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setString(2, vInterfaceBean.getVrtName()); + statement.setInt(3, vInterfaceBean.getVrtIfId()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Deletion status : " + status); + return status; + } + + /** + * Check the existence of Router interface + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vrt_if_tbl + * @return - true, if resource found + * @throws SQLException + */ + public boolean isVrtIfFound(Connection connection, + VRouterInterfaceBean vInterfaceBean) throws SQLException { + boolean isFound = false; + final String sql = VtnOpenStackSQLFactory.CHK_VRT_IF_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setString(2, vInterfaceBean.getVrtName()); + statement.setString(3, vInterfaceBean.getVrtIfName()); + resultSet = statement.executeQuery(); + if (resultSet.next() && resultSet.getInt(1) > 0) { + isFound = true; + } + } finally { + if (statement != null) { + statement.close(); + } + } + return isFound; + } + + /** + * Retrieve list of counters from database + * + * @param connection + * - DB Connection instance + * @param vInterfaceBean + * - Bean corresponding to os_vrt_if_tbl + * @return - retrieved vbr_name + * @throws SQLException + */ + public List getVrtIfIds(Connection connection, + VRouterInterfaceBean vInterfaceBean) throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VRT_IF_IDS_SQL; + List ids = new ArrayList(); + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vInterfaceBean.getVtnName()); + statement.setString(2, vInterfaceBean.getVrtName()); + resultSet = statement.executeQuery(); + while (resultSet.next()) { + ids.add(resultSet.getInt(1)); + } + } finally { + if (statement != null) { + statement.close(); + } + } + return ids; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VtnDao.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VtnDao.java new file mode 100644 index 00000000..48744ab1 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/VtnDao.java @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.VtnOpenStackSQLFactory; + +/** + * Data Access Object Class for os_vtn_tbl table + */ +public class VtnDao { + + private static final Logger LOG = Logger.getLogger(VtnDao.class.getName()); + + /** + * Get resource counter for Tenant + * + * @param connection + * - DB Connection instance + * @return - next incremented counter + * @throws SQLException + */ + public int getNextId(Connection connection) throws SQLException { + final String sql = VtnOpenStackSQLFactory.SEL_VTN_ID_SQL; + int vtnResourceId = -1; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + resultSet = statement.executeQuery(); + if (resultSet.next()) { + vtnResourceId = resultSet.getInt(1) + 1; + LOG.debug("Auto generated resource counter : " + vtnResourceId); + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return vtnResourceId; + } + + /** + * Insert Tenant information into database + * + * @param connection + * - DB Connection instance + * @param vtnBean + * - Bean corresponding to os_vtn_tbl + * @return - insertion status + * @throws SQLException + */ + public int insert(Connection connection, VtnBean vtnBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.INS_VTN_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, vtnBean.getVtnId()); + statement.setString(2, vtnBean.getVtnName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Insertion status : " + status); + return status; + } + + /** + * Delete Tenant information into database + * + * @param connection + * - DB Connection instance + * @param vtnBean + * - Bean corresponding to os_vtn_tbl + * @return - deletion status + * @throws SQLException + */ + public int delete(Connection connection, VtnBean vtnBean) + throws SQLException { + int status; + final String sql = VtnOpenStackSQLFactory.DEL_VTN_SQL; + PreparedStatement statement = null; + try { + statement = connection.prepareStatement(sql); + statement.setInt(1, vtnBean.getVtnId()); + statement.setString(2, vtnBean.getVtnName()); + status = statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + LOG.debug("Deletion status : " + status); + return status; + } + + /** + * Check the existence of Tenant + * + * @param connection + * - DB Connection instance + * @param vtnBean + * - Bean corresponding to os_vtn_tbl + * @return - true, if resource found + * @throws SQLException + */ + public boolean isVtnFound(Connection connection, VtnBean vtnBean) + throws SQLException { + boolean isFound = false; + final String sql = VtnOpenStackSQLFactory.CHK_VTN_SQL; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + statement = connection.prepareStatement(sql); + statement.setString(1, vtnBean.getVtnName()); + resultSet = statement.executeQuery(); + if (resultSet.next() && resultSet.getInt(1) > 0) { + isFound = true; + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (statement != null) { + statement.close(); + } + } + return isFound; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/package-info.java new file mode 100644 index 00000000..a0c908ec --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dao/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains DAO classes for OpenStack resources + */ +package org.opendaylight.vtn.javaapi.openstack.dao; \ No newline at end of file diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/ConnectionProperties.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/ConnectionProperties.java new file mode 100644 index 00000000..e386a66e --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/ConnectionProperties.java @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dbmanager; + +/** + * Bean Class for DB Connection Properties + */ +public class ConnectionProperties { + + private String dbDriver, dbURL, dbUsername, dbPassword; + + private int maxPossibleConnections; + private int initialConnections; + + private boolean waitforUsedConnections; + + /** + * Getter for dbDriver + * + * @return + */ + public String getDbDriver() { + return dbDriver; + } + + /** + * Setter for dbDriver + * + * @return + */ + public void setDbDriver(String dbDriver) { + this.dbDriver = dbDriver; + } + + /** + * Getter for dbURL + * + * @return + */ + public String getDbURL() { + return dbURL; + } + + /** + * Setter for dbURL + * + * @return + */ + public void setDbURL(String dbURL) { + this.dbURL = dbURL; + } + + /** + * Getter for dbUsername + * + * @return + */ + public String getDbUsername() { + return dbUsername; + } + + /** + * Setter for dbUsername + * + * @return + */ + public void setDbUsername(String dbUsername) { + this.dbUsername = dbUsername; + } + + /** + * Getter for dbPassword + * + * @return + */ + public String getDbPassword() { + return dbPassword; + } + + /** + * Setter for dbPassword + * + * @return + */ + public void setDbPassword(String dbPassword) { + this.dbPassword = dbPassword; + } + + /** + * Getter for maxPossibleConnections + * + * @return + */ + public int getMaxPossibleConnections() { + return maxPossibleConnections; + } + + /** + * Setter for maxPossibleConnections + * + * @return + */ + public void setMaxPossibleConnections(int maxPossibleConnections) { + this.maxPossibleConnections = maxPossibleConnections; + } + + /** + * Getter for initialConnections + * + * @return + */ + public int getInitialConnections() { + return initialConnections; + } + + /** + * Setter for initialConnections + * + * @return + */ + public void setInitialConnections(int initialConnections) { + this.initialConnections = initialConnections; + } + + /** + * Getter for waitforUsedConnections + * + * @return + */ + public boolean isWaitforUsedConnections() { + return waitforUsedConnections; + } + + /** + * Setter for waitforUsedConnections + * + * @return + */ + public void setWaitforUsedConnections(boolean waitforUsedConnections) { + this.waitforUsedConnections = waitforUsedConnections; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/DataBaseConnectionPool.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/DataBaseConnectionPool.java new file mode 100644 index 00000000..176ea10d --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/DataBaseConnectionPool.java @@ -0,0 +1,290 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dbmanager; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Vector; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.exception.VtnServiceExceptionHandler; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; + +/** + * DataBase Connection Pool Class. Implements the connection pooling mechanism + * for OpenStack operations + */ +public class DataBaseConnectionPool implements Runnable { + + private static final Logger LOG = Logger + .getLogger(DataBaseConnectionPool.class.getName()); + + private final ConnectionProperties connectionProperties; + + private boolean pendingConnection = false; + + private Vector availableConnections, usedConnections; + + /** + * Constructor of Database Connection Pooling. Initialize the connection + * pool with initial connection pool size + * + * @param connectionProperties + * @param exceptionHandler + * @throws VtnServiceException + */ + public DataBaseConnectionPool(ConnectionProperties connectionProperties, + final VtnServiceExceptionHandler exceptionHandler) + throws VtnServiceException { + + LOG.trace("Start DataBaseConnectionPool()"); + + this.connectionProperties = connectionProperties; + + if (this.connectionProperties.getInitialConnections() > this.connectionProperties + .getMaxPossibleConnections()) { + this.connectionProperties + .setInitialConnections(this.connectionProperties + .getMaxPossibleConnections()); + } + + this.availableConnections = new Vector( + connectionProperties.getInitialConnections()); + this.usedConnections = new Vector(); + + try { + // create connection with initial connection pool size + for (int i = 0; i < this.connectionProperties + .getInitialConnections(); i++) { + this.availableConnections.addElement(createConnection()); + } + } catch (final SQLException e) { + LOG.error("Connection Pooling Initialization Error."); + exceptionHandler + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.DB_CONN_INIT_ERROR + .getErrorCode(), + UncJavaAPIErrorCode.DB_CONN_INIT_ERROR + .getErrorMessage(), e); + } + + LOG.debug("Connection Pool Initialized with " + + this.connectionProperties.getInitialConnections()); + + LOG.trace("Complete DataBaseConnectionPool()"); + } + + /** + * Returns the instance of connection for connection pool. If connection is + * not available in connection pool then create new connection till max + * connection pool size + * + * @return - Connection instance + * @throws SQLException + */ + public synchronized Connection getConnection() throws SQLException { + + LOG.trace("Start DataBaseConnectionPool#getConnection()"); + + if (!availableConnections.isEmpty()) { + /* + * if connection is available in prepared connection pool, the + * return from connection pool. Update the available connection and + * used connection list as per result of operation + */ + LOG.debug("Connection can be provided by initialized connection pool."); + final Connection connection = availableConnections.lastElement(); + availableConnections + .removeElementAt(availableConnections.size() - 1); + + if (connection.isClosed()) { + LOG.warning("Connection had been closed. Create new connection and return"); + notifyAll(); + return getConnection(); + } else { + LOG.debug("Use connection : " + connection); + usedConnections.addElement(connection); + LOG.trace("Complete DataBaseConnectionPool#getConnection()"); + return connection; + } + } else { + LOG.debug("Connection cannot be provided by initialized connection pool."); + /* + * If connection is not available then create new connection after + * checking max connection pool size + */ + if ((countConnections() < connectionProperties + .getMaxPossibleConnections()) && !pendingConnection) { + LOG.debug("Initial connections are in use, create new back ground connection."); + createBackGroundConnection(); + } else if (!connectionProperties.isWaitforUsedConnections()) { + /* + * if waiting is allowed in system, the throw error in case of + * connection pool size is already reached to its maximum value + */ + LOG.error("Waiting is not required, throw error."); + throw new SQLException("Connection limit reached"); + } + try { + // wait for connections to be free, if wait is allowed + LOG.debug("Wait is possible, so wait till other connections is freed."); + wait(); + } catch (final InterruptedException ie) { + LOG.debug("Wait is interuppted by some other thread."); + } + return getConnection(); + } + } + + /** + * Create new connection as new thread + */ + private void createBackGroundConnection() { + + LOG.trace("Start DataBaseConnectionPool#createBackGroundConnection()"); + + LOG.debug("Back ground connection required, means some connection is in pending state."); + pendingConnection = true; + try { + LOG.debug("Create connection and return."); + final Thread connectThread = new Thread(this); + connectThread.start(); + } catch (final OutOfMemoryError oome) { + LOG.fatal("Out of memory space error : " + oome); + } + + LOG.trace("Complete DataBaseConnectionPool#createBackGroundConnection()"); + } + + /** + * Start thread to create connection, add newly created connection to + * available connection list + */ + @Override + public void run() { + + LOG.trace("Start DataBaseConnectionPool#run()"); + + try { + final Connection connection = createConnection(); + synchronized (this) { + availableConnections.addElement(connection); + pendingConnection = false; + notifyAll(); + } + } catch (final Exception e) { + LOG.error("Error ocurred while creating new connection."); + } + + LOG.trace("Complete DataBaseConnectionPool#run()"); + } + + /** + * Create connection by using JDBC APIs + * + * @return + * @throws SQLException + */ + private Connection createConnection() throws SQLException { + + LOG.trace("Start DataBaseConnectionPool#createConnection()"); + + try { + Class.forName(connectionProperties.getDbDriver()); + final Connection connection = DriverManager.getConnection( + connectionProperties.getDbURL(), + connectionProperties.getDbUsername(), + connectionProperties.getDbPassword()); + connection.setAutoCommit(false); + LOG.trace("Complete DataBaseConnectionPool#createConnection()"); + return connection; + } catch (final ClassNotFoundException cnfe) { + LOG.error("Can't find class for driver : " + + connectionProperties.getDbDriver()); + throw new SQLException("Can't find class for driver: " + + connectionProperties.getDbDriver()); + } + } + + /** + * Free specify connection to make it available for new requests + * + * @param connection + */ + public synchronized void freeConnection(Connection connection) { + + LOG.trace("Start DataBaseConnectionPool#freeConnection()"); + + usedConnections.removeElement(connection); + availableConnections.addElement(connection); + notifyAll(); + + LOG.trace("Complete DataBaseConnectionPool#freeConnection()"); + } + + /** + * Get the count of connection available to be used + * + * @return + */ + public synchronized int countConnections() { + + LOG.trace("Return from DataBaseConnectionPool#countConnections()"); + + return availableConnections.size() + usedConnections.size(); + } + + /** + * Close all connections and re-initialize available and used connection + * lists with no connections + */ + public synchronized void closeAllConnections() { + + LOG.trace("Start DataBaseConnectionPool#closeAllConnections()"); + + closeConnections(availableConnections); + availableConnections = new Vector(); + closeConnections(usedConnections); + usedConnections = new Vector(); + + LOG.trace("Complete DataBaseConnectionPool#closeAllConnections()"); + } + + /** + * Close all JDBC connection specified by vector + * + * @param connections + */ + private void closeConnections(Vector connections) { + + LOG.trace("Start DataBaseConnectionPool#closeConnections()"); + + try { + for (int i = 0; i < connections.size(); i++) { + + final Connection connection = connections.elementAt(i); + if (!connection.isClosed()) { + LOG.debug("Close connections, if it is not closed."); + connection.close(); + } + } + } catch (final SQLException sqle) { + LOG.error("Error occurred while closing the connection : " + sqle); + } + + LOG.trace("Complete DataBaseConnectionPool#closeConnections()"); + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/ResourceIdManager.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/ResourceIdManager.java new file mode 100644 index 00000000..e95d17bb --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/ResourceIdManager.java @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dbmanager; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.StaticRouteBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dao.FreeCounterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.StaticRouteDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeInterfaceDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterInterfaceDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; + +/** + * ResourceId Manager class that contains interface for management of + * auto-generated resource ids in the system + */ +public class ResourceIdManager { + + private static final Logger LOG = Logger.getLogger(ResourceIdManager.class + .getName()); + + /** + * Generated resource id for specified resource First check the available + * counter, otherwise increment counter and return + * + * @param connection + * - DB Connection instance + * @param freeCounterBean + * - Bean corresponding to os_free_counter_tbl + * @return - generated resource-id, -1 is error occurred + * @throws SQLException + */ + public int getResourceId(Connection connection, + FreeCounterBean freeCounterBean) throws SQLException { + LOG.trace("Start ResourceIdManager#getResourceId()"); + int resourceCounter = -1; + /* + * Check if any resource counter is available that can be used + */ + final FreeCounterDao freeCounterDao = new FreeCounterDao(); + resourceCounter = freeCounterDao + .getCounter(connection, freeCounterBean); + + freeCounterBean.setResourceCounter(resourceCounter); + + /* + * resource counter is available in free resource counter pool then use + * the same after deleting that from free resource counter pool. On the + * other hand increment counter and return. + */ + if (resourceCounter != -1) { + if (freeCounterDao.deleteCounter(connection, freeCounterBean) != 1) { + LOG.error("Error in deletion of resource counter from os_free_counter_tbl."); + resourceCounter = -1; + } + } else { + LOG.info("Resource counter is not available in os_free_counter_tbl."); + + LOG.debug("Resource counter required to be generated for : " + + freeCounterBean.getResourceId() + " and vtn_name : " + + freeCounterBean.getVtnName()); + + if (freeCounterBean.getResourceId().equalsIgnoreCase( + VtnServiceOpenStackConsts.TENANT_RES_ID)) { + LOG.debug("Resource generation for VTN."); + final VtnDao vtnDao = new VtnDao(); + resourceCounter = vtnDao.getNextId(connection); + } else if (freeCounterBean.getResourceId().equalsIgnoreCase( + VtnServiceOpenStackConsts.NETWORK_RES_ID)) { + LOG.debug("Resource generation for vBridge."); + final VBridgeDao vBridgeDao = new VBridgeDao(); + resourceCounter = vBridgeDao.getNextId(connection, + freeCounterBean.getVtnName()); + } else if (freeCounterBean.getResourceId().equalsIgnoreCase( + VtnServiceOpenStackConsts.PORT_RES_ID)) { + LOG.debug("Resource generation for port/router interface."); + final VBridgeInterfaceDao vbrInterfaceDao = new VBridgeInterfaceDao(); + int portResourceCounter = vbrInterfaceDao.getNextId(connection, + freeCounterBean.getVtnName()); + final VRouterInterfaceDao vrtInterfaceDao = new VRouterInterfaceDao(); + int interfaceResourceCounter = vrtInterfaceDao.getNextId( + connection, freeCounterBean.getVtnName()); + resourceCounter = portResourceCounter + + interfaceResourceCounter - 1; + } + } + LOG.info("Resource counter that will be used : " + resourceCounter); + LOG.trace("Complete ResourceIdManager#getResourceId()"); + return resourceCounter; + } + + /** + * Delete resource information from corresponding database table and update + * free resource counter pool, if resource was auto-generated + * + * @param connection + * - DB Connection instance + * @param freeCounterBean + * - Bean corresponding to os_free_counter_tbl + * @param resourceBean + * - Bean corresponding to resource specific table + * @return - true is operation executed successfully + * @throws SQLException + */ + public boolean deleteResourceId(Connection connection, + FreeCounterBean freeCounterBean, Object resourceBean) + throws SQLException { + LOG.trace("Start ResourceIdManager#deleteResourceId()"); + + List ifIds = null; + boolean result = false; + int deletionStatus = -1; + + if (resourceBean instanceof VtnBean) { + final VtnDao vtnDao = new VtnDao(); + deletionStatus = vtnDao.delete(connection, (VtnBean) resourceBean); + } else if (resourceBean instanceof VBridgeBean) { + final VBridgeInterfaceDao vrtInterfaceDao = new VBridgeInterfaceDao(); + VBridgeInterfaceBean vInterfaceBean = new VBridgeInterfaceBean(); + vInterfaceBean.setVbrName(((VBridgeBean) resourceBean) + .getVbrName()); + ifIds = vrtInterfaceDao.getVbrIfIds(connection, vInterfaceBean); + final VBridgeDao vBridgeDao = new VBridgeDao(); + deletionStatus = vBridgeDao.delete(connection, + (VBridgeBean) resourceBean); + } else if (resourceBean instanceof VRouterBean) { + final VRouterInterfaceDao vrtInterfaceDao = new VRouterInterfaceDao(); + VRouterInterfaceBean vInterfaceBean = new VRouterInterfaceBean(); + vInterfaceBean.setVtnName(freeCounterBean.getVtnName()); + vInterfaceBean + .setVrtName(((VRouterBean) resourceBean).getVrtName()); + ifIds = vrtInterfaceDao.getVrtIfIds(connection, vInterfaceBean); + final VRouterDao vRouterDao = new VRouterDao(); + deletionStatus = vRouterDao.delete(connection, + (VRouterBean) resourceBean); + } else if (resourceBean instanceof VRouterInterfaceBean) { + final VRouterInterfaceDao vInterfaceDao = new VRouterInterfaceDao(); + deletionStatus = vInterfaceDao.delete(connection, + (VRouterInterfaceBean) resourceBean); + } else if (resourceBean instanceof VBridgeInterfaceBean) { + final VBridgeInterfaceDao vInterfaceDao = new VBridgeInterfaceDao(); + deletionStatus = vInterfaceDao.delete(connection, + (VBridgeInterfaceBean) resourceBean); + } else if (resourceBean instanceof StaticRouteBean) { + final StaticRouteDao staticRouteDao = new StaticRouteDao(); + deletionStatus = staticRouteDao.delete(connection, + (StaticRouteBean) resourceBean); + } + + if (deletionStatus == 1) { + result = manageCounter(connection, freeCounterBean, resourceBean, + ifIds); + } + + LOG.debug("Status of operation : " + result); + LOG.trace("Complete ResourceIdManager#deleteResourceId()"); + return result; + } + + /** + * Manages the counters for all kind of resources available for OpenStack + * operations + * + * @param connection + * @param freeCounterBean + * @param resourceBean + * @param ifIds2 + * @return + * @throws SQLException + */ + private boolean manageCounter(Connection connection, + FreeCounterBean freeCounterBean, Object resourceBean, + List ifIds) throws SQLException { + boolean result = false; + final FreeCounterDao freeCounterDao = new FreeCounterDao(); + + /* + * delete child counters in case of parent entity is deleted + */ + if (freeCounterBean.getResourceId().equalsIgnoreCase( + VtnServiceOpenStackConsts.TENANT_RES_ID)) { + FreeCounterBean localBean = new FreeCounterBean(); + localBean.setVtnName(((VtnBean) resourceBean).getVtnName()); + freeCounterDao.deleteVtnChilds(connection, localBean); + } else if (freeCounterBean.getResourceId().equalsIgnoreCase( + VtnServiceOpenStackConsts.NETWORK_RES_ID) + || freeCounterBean.getResourceId().equalsIgnoreCase( + VtnServiceOpenStackConsts.ROUTER_RES_ID)) { + if (ifIds.size() > 0) { + // insert unused counter into os_free_resource_counter table + FreeCounterBean localBean = new FreeCounterBean(); + localBean.setResourceId(VtnServiceOpenStackConsts.PORT); + localBean.setVtnName(freeCounterBean.getVtnName()); + for (int i = 0; i < ifIds.size(); i++) { + localBean.setResourceCounter(ifIds.get(i)); + freeCounterDao.insertCounter(connection, localBean); + } + } + } + + /* + * if resource counter is 0, then no need to insert resource counter in + * pool + */ + if (freeCounterBean.getResourceCounter() == 0) { + LOG.debug("Resource counter is not auto-generated, insertion not required in os_res_counter table."); + result = true; + } else { + LOG.debug("Resource is auto-generated, insertion required in os_res_counter table."); + result = freeCounterDao.insertCounter(connection, freeCounterBean) == 1; + } + return result; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/VtnOpenStackSQLFactory.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/VtnOpenStackSQLFactory.java new file mode 100644 index 00000000..81861d6e --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/VtnOpenStackSQLFactory.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.dbmanager; + +/** + * SQL Factory class for all OpenStack related operations + */ +public class VtnOpenStackSQLFactory { + + /* CRUD SQLs for os_free_counter_tbl */ + public static final String SEL_FC_SQL = "select os_res_counter from os_free_counter_tbl where os_res_id = ? and os_vtn_name = ? order by os_res_counter limit 1"; + public static final String DEL_FC_SQL = "delete from os_free_counter_tbl where os_res_id = ? and os_vtn_name = ? and os_res_counter = ?"; + public static final String INS_FC_SQL = "insert into os_free_counter_tbl(os_res_counter,os_vtn_name,os_res_id) values(?,?,?)"; + public static final String DEL_VTN_CHILD_SQL = "delete from os_free_counter_tbl where os_vtn_name = ? and os_res_id != ?"; + public static final String DEL_NODE_CHILD_SQL = "delete from os_free_counter_tbl where os_vtn_name = ?"; + + /* CRUD SQLs for os_vtn_tbl */ + public static final String CHK_VTN_SQL = "select count(*) from os_vtn_tbl where os_vtn_name = ?"; + public static final String SEL_VTN_ID_SQL = "select count(*) from os_vtn_tbl where os_vtn_id != 0"; + public static final String INS_VTN_SQL = "insert into os_vtn_tbl values(?, ?)"; + public static final String DEL_VTN_SQL = "delete from os_vtn_tbl where os_vtn_id = ? and os_vtn_name = ?"; + + /* CRUD SQLs for os_vbr_tbl */ + public static final String CHK_VBR_SQL = "select count(*) from os_vbr_tbl where os_vtn_name = ? and os_vbr_name = ?"; + public static final String SEL_VBR_ID_SQL = "select count(*) from os_vbr_tbl where os_vtn_name = ? and os_vbr_id != 0"; + public static final String INS_VBR_SQL = "insert into os_vbr_tbl(os_vbr_id, os_vtn_name, os_vbr_name) values(?, ?, ?)"; + public static final String DEL_VBR_SQL = "delete from os_vbr_tbl where os_vbr_id = ? and os_vtn_name = ? and os_vbr_name = ?"; + + /* CRUD SQLs for os_vbr_if_tbl */ + public static final String CHK_VBR_IF_SQL = "select count(*) from os_vbr_if_tbl where os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_name=?"; + public static final String SEL_VBR_IF_ID_SQL = "select count(*) from os_vbr_if_tbl where os_vtn_name = ? and os_vbr_if_id != 0"; + public static final String SEL_VBR_IF_MAP_SQL = "select os_map_type from os_vbr_if_tbl where os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_name=?"; + public static final String SEL_VBR_IF_LP_SQL = "select os_logical_port_id from os_vbr_if_tbl where os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_name=?"; + public static final String INS_VBR_IF_SQL = "insert into os_vbr_if_tbl(os_vbr_if_id, os_vtn_name, os_vbr_name, os_vbr_if_name, os_map_type, os_logical_port_id) values(?, ?, ?, ?, ?, ?)"; + public static final String UP_VBR_IF_SQL = "update os_vbr_if_tbl set os_map_type = ?, os_logical_port_id = ? where os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_name= ?"; + public static final String DEL_VBR_IF_SQL = "delete from os_vbr_if_tbl where os_vbr_if_id = ? and os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_name=?"; + public static final String SEL_VBR_IF_IDS_SQL = "select os_vbr_if_id from os_vbr_if_tbl where os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_id != 0"; + + /* CRUD SQLs for os_vbr_if_filter_tbl */ + public static final String INS_VBR_IF_FL_SQL = "insert into os_vbr_if_filter_tbl(os_vtn_name, os_vbr_name, os_vbr_if_name, os_vbr_if_filter_name) values(?, ?, ?, ?)"; + public static final String SEL_VBR_IF_FL_SQL = "select os_vbr_if_filter_name from os_vbr_if_filter_tbl where os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_name=?"; + public static final String DEL_VBR_IF_FL_SQL = "delete from os_vbr_if_filter_tbl where os_vtn_name = ? and os_vbr_name = ? and os_vbr_if_name=?"; + + /* CRUD SQLs for os_vrt_tbl */ + public static final String CHK_VRT_SQL = "select count(*) from os_vrt_tbl where os_vtn_name = ? and os_vrt_name = ?"; + public static final String INS_VRT_SQL = "insert into os_vrt_tbl(os_vtn_name, os_vrt_name) values(?, ?)"; + public static final String DEL_VRT_SQL = "delete from os_vrt_tbl where os_vtn_name = ? and os_vrt_name = ?"; + + /* CRUD SQLs for os_controller_tbl */ + public static final String SEL_DEST_CTRL_SQL = "select os_controller_id from os_controller_tbl"; + public static final String INS_DEST_CTRL_SQL = "insert into os_controller_tbl(os_controller_id) values(?)"; + public static final String DEL_DEST_CTRL_SQL = "delete from os_controller_tbl"; + + /* CRUD SQLs for os_vrt_route_tbl */ + public static final String CHK_ROUTE_SQL = "select count(*) from os_vrt_route_tbl where os_vtn_name = ? and os_vrt_name = ? and os_vrt_route_name = ?"; + public static final String SEL_ROUTE_SQL = "select os_vrt_route_name from os_vrt_route_tbl where os_vtn_name = ? and os_vrt_name = ?"; + public static final String INS_ROUTE_SQL = "insert into os_vrt_route_tbl(os_vtn_name, os_vrt_name, os_vrt_route_name) values(?, ?, ?)"; + public static final String DEL_ROUTE_SQL = "delete from os_vrt_route_tbl where os_vtn_name = ? and os_vrt_name = ? and os_vrt_route_name = ?"; + + /* CRUD SQLs for os_vrt_if_tbl */ + public static final String CHK_VRT_IF_SQL = "select count(*) from os_vrt_if_tbl where os_vtn_name = ? and os_vrt_name = ? and os_vrt_if_name=?"; + public static final String SEL_VRT_IF_ID_SQL = "select count(*) from os_vrt_if_tbl where os_vtn_name = ? and os_vrt_if_id != 0"; + public static final String SEL_VRT_IF_IDS_SQL = "select os_vrt_if_id from os_vrt_if_tbl where os_vtn_name = ? and os_vrt_name = ? and os_vrt_if_id != 0"; + public static final String SEL_VRT_IF_VBR_SQL = "select os_vbr_name from os_vrt_if_tbl where os_vtn_name = ? and os_vrt_if_id = ?"; + public static final String INS_VRT_IF_SQL = "insert into os_vrt_if_tbl(os_vrt_if_id, os_vtn_name, os_vrt_name, os_vrt_if_name, os_vbr_name) values(?, ?, ?, ?, ?)"; + public static final String DEL_VRT_IF_SQL = "delete from os_vrt_if_tbl where os_vtn_name = ? and os_vrt_name = ? and os_vrt_if_id = ?"; +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/package-info.java new file mode 100644 index 00000000..d9c5f965 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/dbmanager/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains DB Utility classes for OpenStack resources + */ +package org.opendaylight.vtn.javaapi.openstack.dbmanager; \ No newline at end of file diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/DestinationControllerResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/DestinationControllerResourceValidator.java new file mode 100644 index 00000000..4e019ed8 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/DestinationControllerResourceValidator.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.validation; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * Destination Controller Validation Resource class. Contains methods to + * validate URI, parameters of PUT request body + * + */ +public class DestinationControllerResourceValidator extends VtnServiceValidator { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(DestinationControllerResourceValidator.class.getName()); + + /* instance for common validation operation */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Constructor that provide reference of actual Resource class to instance + * variable resource + * + * @param resource + * - Resource class reference + */ + public DestinationControllerResourceValidator( + final AbstractResource resource) { + LOG.debug("No use of resource instance : " + resource); + } + + /** + * Calls the respective validation method according to type of method + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validate + * (java.lang.String, com.google.gson.JsonObject) + */ + @Override + public void validate(String method, JsonObject requestBody) + throws VtnServiceException { + LOG.info("Start DestinationControllerResourceValidator#validate()"); + boolean isValid = true; + try { + if (requestBody != null && VtnServiceConsts.PUT.equals(method)) { + isValid = validatePut(requestBody); + } else if (requestBody != null + && VtnServiceConsts.GET.equals(method)) { + isValid = true; + } else { + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Invalid value : " + e.getMessage()); + isValid = false; + } catch (final ClassCastException e) { + LOG.error("Invalid type : " + e.getMessage()); + isValid = false; + } + + /* + * throw exception in case of validation fail + */ + if (!isValid) { + LOG.error("Validation failure"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Complete DestinationControllerResourceValidator#validate()"); + } + + /** + * Validates the parameters of PUT request body + * + * @param requestBody + * - JSON request body corresponding to PUT operation + * @return - validation status as true or false + */ + private boolean validatePut(JsonObject requestBody) { + LOG.trace("Start DestinationControllerResourceValidator#validatePut()"); + boolean isValid = true; + // validation of id + if (requestBody.has(VtnServiceOpenStackConsts.ID)) { + final JsonElement id = requestBody + .get(VtnServiceOpenStackConsts.ID); + if (id.isJsonNull() + || id.getAsString().isEmpty() + || !validator.isValidMaxLengthAlphaNum(id.getAsString(), + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ID + + VtnServiceConsts.COLON + + (id.isJsonNull() ? id : id.getAsString())); + } + } else { + isValid = false; + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT + .getMessage()); + } + LOG.trace("Complete DestinationControllerResourceValidator#validatePut()"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/NetworkResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/NetworkResourceValidator.java new file mode 100644 index 00000000..1b172026 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/NetworkResourceValidator.java @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.validation; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.openstack.NetworkResource; +import org.opendaylight.vtn.javaapi.resources.openstack.NetworksResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * Network Validation Resource class. Contains methods to validate URI, + * parameters of POST and PUT request body + * + */ +public class NetworkResourceValidator extends VtnServiceValidator { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(NetworkResourceValidator.class.getName()); + + /* AbstractResource reference pointing to actual Resource class */ + private final AbstractResource resource; + + /* instance for common validation operation */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Constructor that provide reference of actual Resource class to instance + * variable resource + * + * @param resource + * - Resource class reference + */ + public NetworkResourceValidator(final AbstractResource resource) { + this.resource = resource; + } + + /** + * Calls the respective validation method according to type of method + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validate + * (java.lang.String, com.google.gson.JsonObject) + */ + @Override + public void validate(String method, JsonObject requestBody) + throws VtnServiceException { + LOG.info("Start NetworkResourceValidator#validate()"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.POST.equalsIgnoreCase(method)) { + isValid = validatePost(validator, requestBody); + } else if (isValid && requestBody != null + && VtnServiceConsts.PUT.equals(method)) { + isValid = validatePut(validator, requestBody); + } else if (isValid) { + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Invalid value : " + e.getMessage()); + isValid = false; + } catch (final ClassCastException e) { + LOG.error("Invalid type : " + e.getMessage()); + isValid = false; + } + + /* + * throw exception in case of validation fail + */ + if (!isValid) { + LOG.error("Validation failure"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Complete NetworkResourceValidator#validate()"); + } + + /** + * Validate resource specific URI parameters + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validateUri + * () + */ + @Override + public boolean validateUri() throws VtnServiceException { + LOG.trace("Start NetworkResourceValidator#validateUri()"); + boolean isValid = true; + if (resource instanceof NetworkResource) { + // validation of tenant_id + final String tenantId = ((NetworkResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of net_id + if (isValid) { + final String netId = ((NetworkResource) resource).getNetId(); + if (netId == null + || netId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(netId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.NET_ID + + VtnServiceConsts.COLON + netId); + } + } + } else if (resource instanceof NetworksResource) { + // validation of tenant_id + final String tenantId = ((NetworksResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + } + LOG.trace("Complete NetworkResourceValidator#validateUri()"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/PortResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/PortResourceValidator.java new file mode 100644 index 00000000..23c68387 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/PortResourceValidator.java @@ -0,0 +1,327 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.validation; + +import java.math.BigInteger; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.openstack.PortResource; +import org.opendaylight.vtn.javaapi.resources.openstack.PortsResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * Port Validation Resource class. Contains methods to validate URI, parameters + * of POST request body + * + */ +public class PortResourceValidator extends VtnServiceValidator { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(PortResourceValidator.class.getName()); + + /* AbstractResource reference pointing to actual Resource class */ + private final AbstractResource resource; + + /* instance for common validation operation */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Constructor that provide reference of actual Resource class to instance + * variable resource + * + * @param resource + * - Resource class reference + */ + public PortResourceValidator(final AbstractResource resource) { + this.resource = resource; + } + + /* + * Calls the respective validation method according to type of method + * + * @see + * org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validate + * (java.lang.String, com.google.gson.JsonObject) + */ + @Override + public void validate(String method, JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start PortResourceValidator#validate()"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.POST.equalsIgnoreCase(method)) { + isValid = validatePost(requestBody); + } else if (isValid) { + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Invalid value : " + e.getMessage()); + isValid = false; + } catch (final ClassCastException e) { + LOG.error("Invalid type : " + e.getMessage()); + isValid = false; + } + + /* + * throw exception in case of validation fail + */ + if (!isValid) { + LOG.error("Validation failure"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.trace("Complete PortResourceValidator#validate()"); + } + + /** + * Validate resource specific URI parameters + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validateUri + * () + */ + @Override + public boolean validateUri() throws VtnServiceException { + LOG.trace("Start PortResourceValidator#validateUri()"); + boolean isValid = true; + if (resource instanceof PortResource) { + // validation of tenant_id + final String tenantId = ((PortResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of net_id + if (isValid) { + final String netId = ((PortResource) resource).getNetId(); + if (netId == null + || netId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(netId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.NET_ID + + VtnServiceConsts.COLON + netId); + } + } + + // validation of port_id + if (isValid) { + final String portId = ((PortResource) resource).getPortId(); + if (portId == null + || portId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(portId, + VtnServiceJsonConsts.LEN_24)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.PORT_ID + + VtnServiceConsts.COLON + portId); + } + } + } else if (resource instanceof PortsResource) { + // validation of tenant_id + final String tenantId = ((PortsResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of net_id + if (isValid) { + final String netId = ((PortsResource) resource).getNetId(); + if (netId == null + || netId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(netId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.NET_ID + + VtnServiceConsts.COLON + netId); + } + } + } + LOG.trace("Complete PortResourceValidator#validateUri()"); + return isValid; + } + + /** + * Validates the parameters of POST request body + * + * @param requestBody + * - JSON request body corresponding to POST operation + * @return + */ + public boolean validatePost(final JsonObject requestBody) { + LOG.trace("Start PortResourceValidator#validatePost()"); + boolean isValid = true; + // validation of mandatory parameters + if (requestBody == null + || !requestBody.has(VtnServiceOpenStackConsts.PORT) + || !requestBody.has(VtnServiceOpenStackConsts.DATAPATH_ID) + || !requestBody.has(VtnServiceOpenStackConsts.VID)) { + isValid = false; + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT + .getMessage()); + } else { + // validation of id + if (requestBody.has(VtnServiceOpenStackConsts.ID)) { + final JsonElement id = requestBody + .get(VtnServiceOpenStackConsts.ID); + if (id.isJsonNull() + || id.getAsString().isEmpty() + || !validator.isValidMaxLengthAlphaNum( + id.getAsString(), VtnServiceJsonConsts.LEN_24)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ID + + VtnServiceConsts.COLON + + (id.isJsonNull() ? id : id.getAsString())); + } + } + + // validation of datapath_id + if (isValid) { + final JsonElement datapathId = requestBody + .get(VtnServiceOpenStackConsts.DATAPATH_ID); + setInvalidParameter(VtnServiceOpenStackConsts.DATAPATH_ID); + if (datapathId.isJsonNull() + || !isValidDataPathId(datapathId.getAsString())) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.DATAPATH_ID + + VtnServiceConsts.COLON + + (datapathId.isJsonNull() ? datapathId + : datapathId.getAsString())); + } + } + + // validation of port + if (isValid) { + final JsonElement port = requestBody + .get(VtnServiceOpenStackConsts.PORT); + if (!port.isJsonNull() + && !port.getAsString().equalsIgnoreCase( + VtnServiceOpenStackConsts.NULL)) { + if (port.getAsString().isEmpty()) { + isValid = false; + } else { + try { + isValid = validator.isValidBigIntegerRangeString( + new BigInteger(port.getAsString()), + VtnServiceJsonConsts.BIG_VAL0, + VtnServiceJsonConsts.BIG_VAL_4294967040); + } catch (Exception e) { + isValid = false; + } + } + + // set message as per above checks + if (!isValid) { + setInvalidParameter(VtnServiceOpenStackConsts.PORT + + VtnServiceConsts.COLON + + (port.isJsonNull() ? port : port + .getAsString())); + } + } + } + + // validation of vid + if (isValid) { + final JsonElement vid = requestBody + .get(VtnServiceOpenStackConsts.VID); + setInvalidParameter(VtnServiceOpenStackConsts.VID); + if (vid.isJsonNull() || vid.getAsString().isEmpty()) { + isValid = false; + } else { + try { + isValid = validator.isValidRange(vid.getAsString(), + VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_4095); + if (Integer.parseInt(vid.getAsString()) == VtnServiceJsonConsts.VAL_65535) { + isValid = true; + } + } catch (Exception e) { + isValid = false; + } + } + + // set message as per above checks + if (!isValid) { + setInvalidParameter(VtnServiceOpenStackConsts.VID + + VtnServiceConsts.COLON + + (vid.isJsonNull() ? vid : vid.getAsString())); + } + } + } + + // validation of port and datapath_id combination + if (isValid) { + final JsonElement port = requestBody + .get(VtnServiceOpenStackConsts.PORT); + final JsonElement datapathid = requestBody + .get(VtnServiceOpenStackConsts.DATAPATH_ID); + if (datapathid.getAsString().isEmpty() + && (!port.isJsonNull() && !port.getAsString() + .equalsIgnoreCase(VtnServiceOpenStackConsts.NULL))) { + isValid = false; + setInvalidParameter("port specified, but datapath_id not specified"); + } + } + + LOG.trace("Complete PortResourceValidator#validatePost()"); + return isValid; + } + + /** + * Check the validity of datapath_id parameter + * + * @param datapathId + * - string representing datapath_id + * @return - result as true or false + */ + private boolean isValidDataPathId(String datapathId) { + boolean isValid = true; + if (!datapathId.equalsIgnoreCase(VtnServiceConsts.EMPTY_STRING)) { + try { + isValid = (datapathId.substring(0, 2).equalsIgnoreCase("0X")) ? datapathId + .matches(VtnServiceOpenStackConsts.OS_DATAPATH_ID_REGEX) + : validator.isValidBigIntegerRangeString(new BigInteger( + datapathId), VtnServiceJsonConsts.BIG_VAL0, + VtnServiceJsonConsts.BIG_VAL_18446744073709551999); + } catch (Exception e) { + isValid = false; + } + if (isValid) { + isValid = !datapathId + .equalsIgnoreCase(VtnServiceOpenStackConsts.INVALID_DATA_PATH_ID); + } + } + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouteResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouteResourceValidator.java new file mode 100644 index 00000000..c9aa6ca4 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouteResourceValidator.java @@ -0,0 +1,294 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.validation; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.conversion.IpAddressUtil; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.openstack.RouteResource; +import org.opendaylight.vtn.javaapi.resources.openstack.RoutesResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * Route Validation Resource class. Contains methods to validate URI, parameters + * of POST request body + * + */ +public class RouteResourceValidator extends VtnServiceValidator { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(RouteResourceValidator.class.getName()); + + /* AbstractResource reference pointing to actual Resource class */ + private final AbstractResource resource; + + /* instance for common validation operation */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Constructor that provide reference of actual Resource class to instance + * variable resource + * + * @param resource + * - Resource class reference + */ + public RouteResourceValidator(final AbstractResource resource) { + this.resource = resource; + } + + /** + * Calls the respective validation method according to type of method + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validate + * (java.lang.String, com.google.gson.JsonObject) + */ + @Override + public void validate(String method, JsonObject requestBody) + throws VtnServiceException { + LOG.info("Start RouteResourceValidator#validate()"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.POST.equalsIgnoreCase(method)) { + isValid = validatePost(requestBody); + } else if (isValid && requestBody != null + && VtnServiceConsts.GET.equalsIgnoreCase(method)) { + isValid = true; + } else if (isValid) { + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Invalid value : " + e.getMessage()); + isValid = false; + } catch (final ClassCastException e) { + LOG.error("Invalid type : " + e.getMessage()); + isValid = false; + } + + /* + * throw exception in case of validation fail + */ + if (!isValid) { + LOG.error("Validation failure"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Complete RouteResourceValidator#validate()"); + } + + /** + * Validate resource specific URI parameters + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validateUri + * () + */ + @Override + public boolean validateUri() throws VtnServiceException { + LOG.info("Start RouteResourceValidator#validateUri()"); + boolean isValid = true; + if (resource instanceof RouteResource) { + // validation of tenant_id + final String tenantId = ((RouteResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of router_id + if (isValid) { + final String routerId = ((RouteResource) resource) + .getRouterId(); + if (routerId == null + || routerId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(routerId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ROUTER_ID + + VtnServiceConsts.COLON + routerId); + } + } + + // validation of route_id + if (isValid) { + final String routeId = ((RouteResource) resource).getRouteId(); + setInvalidParameter(VtnServiceOpenStackConsts.ID); + if (routeId == null || routeId.isEmpty() + || !isValidRouteId(routeId)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ROUTE_ID + + VtnServiceConsts.COLON + routeId); + } + } + } else if (resource instanceof RoutesResource) { + // validation of tenant_id + final String tenantId = ((RoutesResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of router_id + if (isValid) { + final String routerId = ((RoutesResource) resource) + .getRouterId(); + if (routerId == null + || routerId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(routerId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ROUTER_ID + + VtnServiceConsts.COLON + routerId); + } + } + } + LOG.info("Complete RouteResourceValidator#validateUri()"); + return isValid; + } + + /** + * Validates the parameters of POST request body + * + * @param requestBody + * - JSON request body corresponding to POST operation + * @return - validation status as true or false + */ + private boolean validatePost(JsonObject requestBody) { + LOG.trace("Start RouteResourceValidator#validatePost()"); + boolean isValid = true; + + // validation of mandatory parameters + if (requestBody == null + || !requestBody.has(VtnServiceOpenStackConsts.DESTNATION) + || !requestBody.has(VtnServiceOpenStackConsts.NEXTHOP)) { + isValid = false; + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT + .getMessage()); + } else { + final JsonElement destination = requestBody + .get(VtnServiceOpenStackConsts.DESTNATION); + + // validation of destination + if (destination.isJsonNull() || destination.getAsString().isEmpty() + || !isValidDestination(destination.getAsString())) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.DESTNATION + + VtnServiceConsts.COLON + + (destination.isJsonNull() ? destination : destination + .getAsString())); + } + + final JsonElement nexthop = requestBody + .get(VtnServiceOpenStackConsts.NEXTHOP); + + // validation of nexthop + if (isValid) { + if (nexthop.isJsonNull() + || nexthop.getAsString().isEmpty() + || IpAddressUtil.textToNumericFormatV4(nexthop + .getAsString()) == null) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.NEXTHOP + + VtnServiceConsts.COLON + + (nexthop.isJsonNull() ? nexthop : nexthop + .getAsString())); + } + } + + /* + * Check special case for IP address in POST operation + */ + if (isValid) { + final String nexthopIp = requestBody.get( + VtnServiceOpenStackConsts.NEXTHOP).getAsString(); + if (VtnServiceOpenStackConsts.DEFAULT_IP.equals(nexthopIp)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.NEXTHOP + + VtnServiceConsts.COLON + nexthopIp); + } + } + + if (isValid) { + final String destinationIp = requestBody.get( + VtnServiceOpenStackConsts.DESTNATION).getAsString(); + if (VtnServiceOpenStackConsts.DEFAULT_IP.equals(destinationIp + .split(VtnServiceConsts.SLASH)[0])) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.DESTNATION + + VtnServiceConsts.COLON + destinationIp); + } + } + } + LOG.trace("Complete RouteResourceValidator#validatePost()"); + return isValid; + } + + /** + * Check the validity of destination IP address + * + * @param cidrDestination + * - CIDR formatted IP address + * @return - status as true or false + */ + private boolean isValidDestination(String cidrDestination) { + boolean isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.DESTNATION); + final String[] destination = cidrDestination + .split(VtnServiceConsts.SLASH); + if (destination != null && destination.length == 2) { + try { + isValid = IpAddressUtil.textToNumericFormatV4(destination[0]) != null + && validator.isValidRange(destination[1], 0, 32); + } catch (Exception e) { + isValid = false; + } + } + return isValid; + } + + /** + * Check the validity of OpenStack format route_id + * + * @param routeId + * - OpenStack formatted route_id + * @return - result as true or false + */ + private boolean isValidRouteId(String routeId) { + boolean isValid = false; + final String[] routeIdparts = routeId.split(VtnServiceConsts.HYPHEN); + if (routeIdparts != null && routeIdparts.length == 3) { + isValid = IpAddressUtil.textToNumericFormatV4(routeIdparts[0]) != null + && IpAddressUtil.textToNumericFormatV4(routeIdparts[1]) != null + && IpAddressUtil.textToNumericFormatV4(routeIdparts[2]) != null; + } + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouterInterfaceResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouterInterfaceResourceValidator.java new file mode 100644 index 00000000..a58f128a --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouterInterfaceResourceValidator.java @@ -0,0 +1,335 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.validation; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.conversion.IpAddressUtil; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.openstack.RouterInterfaceResource; +import org.opendaylight.vtn.javaapi.resources.openstack.RouterInterfacesResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * Router Interface Validation Resource class. Contains methods to validate URI, + * parameters of POST and PUT request body + * + */ +public class RouterInterfaceResourceValidator extends VtnServiceValidator { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(RouterInterfaceResourceValidator.class.getName()); + + /* AbstractResource reference pointing to actual Resource class */ + private final AbstractResource resource; + + /* instance for common validation operation */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Constructor that provide reference of actual Resource class to instance + * variable resource + * + * @param resource + * - Resource class reference + */ + public RouterInterfaceResourceValidator(final AbstractResource resource) { + this.resource = resource; + } + + /** + * Calls the respective validation method according to type of method + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validate + * (java.lang.String, com.google.gson.JsonObject) + */ + @Override + public void validate(String method, JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start RouterInterfaceResourceValidator#validate()"); + + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.POST.equalsIgnoreCase(method)) { + isValid = validatePost(requestBody); + } else if (isValid && requestBody != null + && VtnServiceConsts.PUT.equals(method)) { + isValid = validatePut(requestBody); + } else if (isValid) { + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Invalid value : " + e.getMessage()); + isValid = false; + } catch (final ClassCastException e) { + LOG.error("Invalid type : " + e.getMessage()); + isValid = false; + } + + /* + * throw exception in case of validation fail + */ + if (!isValid) { + LOG.error("Validation failure"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + + LOG.trace("Complete RouterInterfaceResourceValidator#validate()"); + } + + /** + * Validates the parameters of PUT request body + * + * @param requestBody + * - JSON request body corresponding to PUT operation + * @return - validation status as true or false + */ + private boolean validatePut(JsonObject requestBody) { + boolean isValid = true; + // validation of ip_address + if (requestBody.has(VtnServiceOpenStackConsts.IP_ADDRESS)) { + final JsonElement ipAddress = requestBody + .get(VtnServiceOpenStackConsts.IP_ADDRESS); + + if (ipAddress.isJsonNull() || ipAddress.getAsString().isEmpty() + || !isValidIP(ipAddress.getAsString())) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.IP_ADDRESS + + VtnServiceConsts.COLON + + (ipAddress.isJsonNull() ? ipAddress : ipAddress + .getAsString())); + } + } + + // validation of mac_address + if (isValid && requestBody.has(VtnServiceOpenStackConsts.MAC_ADDRESS)) { + final JsonElement macAddress = requestBody + .get(VtnServiceOpenStackConsts.MAC_ADDRESS); + + if (macAddress.isJsonNull() || macAddress.getAsString().isEmpty() + || !isValidMac(macAddress.getAsString())) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.MAC_ADDRESS + + VtnServiceConsts.COLON + + (macAddress.isJsonNull() ? macAddress : macAddress + .getAsString())); + } + } + return isValid; + } + + /** + * Validates the parameters of POST request body + * + * @param requestBody + * - JSON request body corresponding to POST operation + * @return - validation status as true or false + */ + private boolean validatePost(JsonObject requestBody) { + + boolean isValid = true; + + // validation of mandatory parameter + if (requestBody == null + || !requestBody.has(VtnServiceOpenStackConsts.NET_ID)) { + isValid = false; + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT + .getMessage()); + } else { + final JsonElement netId = requestBody + .get(VtnServiceOpenStackConsts.NET_ID); + + // validation of net_id + if (netId.isJsonNull() + || netId.getAsString().isEmpty() + || !validator.isValidMaxLengthAlphaNum(netId.getAsString(), + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.NET_ID + + VtnServiceConsts.COLON + + (netId.isJsonNull() ? netId : netId.getAsString())); + } + + if (isValid) { + isValid = validatePut(requestBody); + } + /* + * Check special case for IP address in POST operation + */ + if (isValid + && requestBody.has(VtnServiceOpenStackConsts.IP_ADDRESS)) { + final String ipAddress = requestBody.get( + VtnServiceOpenStackConsts.IP_ADDRESS).getAsString(); + if (VtnServiceOpenStackConsts.DEFAULT_IP.equals(ipAddress + .split(VtnServiceConsts.SLASH)[0])) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.IP_ADDRESS + + VtnServiceConsts.COLON + ipAddress); + } + } + + /* + * Check special case for MAC address in POST operation + */ + if (isValid + && requestBody.has(VtnServiceOpenStackConsts.MAC_ADDRESS)) { + final String macAddress = requestBody.get( + VtnServiceOpenStackConsts.MAC_ADDRESS).getAsString(); + if (VtnServiceOpenStackConsts.DEFAULT_MAC.equals(macAddress)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.MAC_ADDRESS + + VtnServiceConsts.COLON + macAddress); + } + } + } + return isValid; + } + + /** + * Validate resource specific URI parameters + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validateUri + * () + */ + @Override + public boolean validateUri() throws VtnServiceException { + LOG.info("Start RouterInterfaceResourceValidator#validateUri()"); + boolean isValid = true; + if (resource instanceof RouterInterfaceResource) { + // validation of tenant_id + final String tenantId = ((RouterInterfaceResource) resource) + .getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of router_id + if (isValid) { + final String routerId = ((RouterInterfaceResource) resource) + .getRouterId(); + if (routerId == null + || routerId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(routerId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ROUTER_ID + + VtnServiceConsts.COLON + routerId); + } + } + + // validation of if_id + if (isValid) { + final String ifId = ((RouterInterfaceResource) resource) + .getInterfaceId(); + if (ifId == null || ifId.isEmpty()) { + isValid = false; + } else { + try { + isValid = validator.isValidRange(ifId, 1, 393216); + } catch (Exception e) { + isValid = false; + } + } + // set message as per above checks + if (!isValid) { + setInvalidParameter(VtnServiceOpenStackConsts.IF_ID + + VtnServiceConsts.COLON + ifId); + } + } + } else if (resource instanceof RouterInterfacesResource) { + // validation of tenant_id + final String tenantId = ((RouterInterfacesResource) resource) + .getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of router_id + if (isValid) { + final String routerId = ((RouterInterfacesResource) resource) + .getRouterId(); + if (routerId == null + || routerId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(routerId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ROUTER_ID + + VtnServiceConsts.COLON + routerId); + } + } + } + LOG.info("Complete RouterInterfaceResourceValidator#validateUri()"); + return isValid; + } + + /** + * Check the validity of IP address in CIDR notation + * + * @param cidrDestination + * - CIDR format IP address string + * @return - result as true or false + */ + private boolean isValidIP(String cidrDestination) { + boolean isValid = false; + if (VtnServiceOpenStackConsts.DEFAULT_CIDR_IP.equals(cidrDestination)) { + isValid = true; + } else { + setInvalidParameter(VtnServiceOpenStackConsts.IP_ADDRESS); + final String[] destination = cidrDestination + .split(VtnServiceConsts.SLASH); + if (destination != null && destination.length == 2) { + try { + isValid = IpAddressUtil + .textToNumericFormatV4(destination[0]) != null + && validator.isValidRange(destination[1], 1, 30); + } catch (Exception e) { + isValid = false; + } + } + } + return isValid; + } + + /** + * Check the validity of OpenStack format MAC address + * + * @param macAddress + * - OpenStack format MAC address + * @return - result as true or false + */ + private boolean isValidMac(String macAddress) { + return macAddress.matches(VtnServiceOpenStackConsts.OS_MAC_ADD_REGEX); + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouterResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouterResourceValidator.java new file mode 100644 index 00000000..6101e4ce --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/RouterResourceValidator.java @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.validation; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.openstack.RouterResource; +import org.opendaylight.vtn.javaapi.resources.openstack.RoutersResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * Router Validation Resource class. Contains methods to validate URI, + * parameters of POST and PUT request body + * + */ +public class RouterResourceValidator extends VtnServiceValidator { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(RouterResourceValidator.class.getName()); + + /* AbstractResource reference pointing to actual Resource class */ + private final AbstractResource resource; + + /* instance for common validation operation */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Constructor that provide reference of actual Resource class to instance + * variable resource + * + * @param resource + * - Resource class reference + */ + public RouterResourceValidator(final AbstractResource resource) { + this.resource = resource; + } + + /** + * Calls the respective validation method according to type of method + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validate + * (java.lang.String, com.google.gson.JsonObject) + */ + @Override + public void validate(String method, JsonObject requestBody) + throws VtnServiceException { + LOG.info("Start RouterResourceValidator#validate()"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.POST.equalsIgnoreCase(method)) { + isValid = validatePost(validator, requestBody); +// } else if (isValid && requestBody != null +// && VtnServiceConsts.PUT.equals(method)) { +// isValid = validatePut(validator, requestBody); + } else if (isValid) { + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Invalid value : " + e.getMessage()); + isValid = false; + } catch (final ClassCastException e) { + LOG.error("Invalid type : " + e.getMessage()); + isValid = false; + } + + /* + * throw exception in case of validation fail + */ + if (!isValid) { + LOG.error("Validation failure"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Complete RouterResourceValidator#validate()"); + } + + /** + * Validate resource specific URI parameters + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validateUri + * () + */ + @Override + public boolean validateUri() throws VtnServiceException { + LOG.trace("Start RouterResourceValidator#validateUri()"); + boolean isValid = true; + if (resource instanceof RouterResource) { + // validation of tenant_id + final String tenantId = ((RouterResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + + // validation of router_id + if (isValid) { + final String routerId = ((RouterResource) resource) + .getRouterId(); + if (routerId == null + || routerId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(routerId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ROUTER_ID + + VtnServiceConsts.COLON + routerId); + } + } + } else if (resource instanceof RoutersResource) { + // validation of tenant_id + final String tenantId = ((RoutersResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + } + LOG.trace("Complete RouterResourceValidator#validateUri()"); + return isValid; + } + +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/TenantResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/TenantResourceValidator.java new file mode 100644 index 00000000..bc00c734 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/TenantResourceValidator.java @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.openstack.validation; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.openstack.TenantResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * Tenant Validation Resource class. Contains methods to validate URI, + * parameters of POST and PUT request body + * + */ +public class TenantResourceValidator extends VtnServiceValidator { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(TenantResourceValidator.class.getName()); + + /* AbstractResource reference pointing to actual Resource class */ + private final AbstractResource resource; + + /* instance for common validation operation */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Constructor that provide reference of actual Resource class to instance + * variable resource + * + * @param resource + * - Resource class reference + */ + public TenantResourceValidator(final AbstractResource resource) { + this.resource = resource; + } + + /** + * Calls the respective validation method according to type of method + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validate + * (java.lang.String, com.google.gson.JsonObject) + */ + @Override + public void validate(String method, JsonObject requestBody) + throws VtnServiceException { + LOG.info("Start TenantResourceValidator#validate()"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.POST.equalsIgnoreCase(method)) { + isValid = validatePost(validator, requestBody); + } else if (isValid && requestBody != null + && VtnServiceConsts.PUT.equals(method)) { + isValid = validatePut(validator, requestBody); + } else if (isValid) { + setInvalidParameter(UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Invalid value : " + e.getMessage()); + isValid = false; + } catch (final ClassCastException e) { + LOG.error("Invalid type : " + e.getMessage()); + isValid = false; + } + + /* + * throw exception in case of validation fail + */ + if (!isValid) { + LOG.error("Validation failure"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Complete TenantResourceValidator#validate()"); + } + + /** + * Validate resource specific URI parameters + * + * @see org.opendaylight.vtn.javaapi.validation.VtnServiceValidator#validateUri + * () + */ + @Override + public boolean validateUri() throws VtnServiceException { + LOG.info("Start TenantResourceValidator#validateUri()"); + boolean isValid = true; + if (resource instanceof TenantResource) { + // validation of tenant_id + final String tenantId = ((TenantResource) resource).getTenantId(); + if (tenantId == null + || tenantId.isEmpty() + || !validator.isValidMaxLengthAlphaNum(tenantId, + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.TENANT_ID + + VtnServiceConsts.COLON + tenantId); + } + } + LOG.info("Complete TenantResourceValidator#validateUri()"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/package-info.java new file mode 100644 index 00000000..3917ec71 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/openstack/validation/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Validation classes for OpenStack resources + */ +package org.opendaylight.vtn.javaapi.openstack.validation; \ No newline at end of file diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/package-info.java new file mode 100644 index 00000000..2b1aaf0d --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/package-info.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API interfacing classes + * and interfaces for platform layer APIs + */ +package org.opendaylight.vtn.javaapi; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/reflect/AnnotationReflect.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/reflect/AnnotationReflect.java index 06c9254e..ed85d1ec 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/reflect/AnnotationReflect.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/reflect/AnnotationReflect.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -118,9 +118,8 @@ public final class AnnotationReflect { return returnKey; } // iterate for each value of KeySet in scanned resource classes - //for (final String key : PackageScan.getCachedResources().keySet()) { PackageScan pscan = PackageScan.getInstance(); - for (final String key: pscan.getAllPaths()) { + for (final String key : pscan.getAllPaths()) { if (returnKey != null) { break; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/reflect/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/reflect/package-info.java new file mode 100644 index 00000000..0e96c1cb --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/reflect/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * package contains Java API Resource resolver class(s). + */ +package org.opendaylight.vtn.javaapi.reflect; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbortCandidateConfigResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbortCandidateConfigResource.java index 8c4d7ff3..cb56b4a0 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbortCandidateConfigResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbortCandidateConfigResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -57,7 +57,8 @@ public class AbortCandidateConfigResource extends AbstractResource { * the vtn service exception */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts AbortCandidateConfigResource#put()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -89,7 +90,7 @@ public class AbortCandidateConfigResource extends AbstractResource { .setIpcUint32Value(getConfigID())); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final String operationType = IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_0)); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbstractResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbstractResource.java index 3e440f16..7d91a830 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbstractResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AbstractResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -9,6 +9,7 @@ package org.opendaylight.vtn.javaapi.resources; import java.lang.reflect.Method; +import java.sql.Connection; import java.util.List; import com.google.gson.JsonArray; @@ -17,7 +18,6 @@ import org.opendaylight.vtn.core.ipc.ClientSession; import org.opendaylight.vtn.core.ipc.IpcDataUnit; import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.VtnServiceResource; -import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; import org.opendaylight.vtn.javaapi.connection.IpcConnPool; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; @@ -26,14 +26,12 @@ import org.opendaylight.vtn.javaapi.exception.VtnServiceExceptionHandler; import org.opendaylight.vtn.javaapi.init.VtnServiceConfiguration; import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor; -import org.opendaylight.vtn.javaapi.ipc.conversion.IpcDataUnitWrapper; import org.opendaylight.vtn.javaapi.ipc.conversion.IpcLogicalResponseFactory; import org.opendaylight.vtn.javaapi.ipc.conversion.IpcPhysicalResponseFactory; import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; -import org.opendaylight.vtn.javaapi.ipc.enums.UncOption2Enum; import org.opendaylight.vtn.javaapi.ipc.enums.UncSYSMGEnums; import org.opendaylight.vtn.javaapi.ipc.enums.UncSessionEnums; import org.opendaylight.vtn.javaapi.ipc.enums.UncTCEnums; @@ -55,6 +53,9 @@ public abstract class AbstractResource implements VtnServiceResource { private long sessionID = VtnServiceConsts.INVALID_SESSIONID; private IpcConnPool connPool; + /* OpenStack DB Connection instance */ + Connection openStackConnection; + public AbstractResource() { } @@ -72,8 +73,7 @@ public abstract class AbstractResource implements VtnServiceResource { @Override public int delete() throws VtnServiceException { LOG.trace("Return from AbstractResource#delete"); - createErrorInfo(UncResultCode.UNC_CLIENT_ERROR.getValue(), - VtnServiceConsts.RESOURCE_METHOD_INCORRECT); + createErrorInfo(UncResultCode.UNC_METHOD_NOT_ALLOWED.getValue()); return UncResultCode.UNC_CLIENT_ERROR.getValue(); } @@ -83,8 +83,7 @@ public abstract class AbstractResource implements VtnServiceResource { @Override public int delete(final JsonObject queryString) throws VtnServiceException { LOG.trace("Return from AbstractResource#delete"); - createErrorInfo(UncResultCode.UNC_CLIENT_ERROR.getValue(), - VtnServiceConsts.RESOURCE_METHOD_INCORRECT); + createErrorInfo(UncResultCode.UNC_METHOD_NOT_ALLOWED.getValue()); return UncResultCode.UNC_CLIENT_ERROR.getValue(); } @@ -94,8 +93,7 @@ public abstract class AbstractResource implements VtnServiceResource { @Override public int get() throws VtnServiceException { LOG.trace("Return from AbstractResource#get"); - createErrorInfo(UncResultCode.UNC_CLIENT_ERROR.getValue(), - VtnServiceConsts.RESOURCE_METHOD_INCORRECT); + createErrorInfo(UncResultCode.UNC_METHOD_NOT_ALLOWED.getValue()); return UncResultCode.UNC_CLIENT_ERROR.getValue(); } @@ -105,8 +103,7 @@ public abstract class AbstractResource implements VtnServiceResource { @Override public int get(final JsonObject queryString) throws VtnServiceException { LOG.trace("Return from AbstractResource#get"); - createErrorInfo(UncResultCode.UNC_CLIENT_ERROR.getValue(), - VtnServiceConsts.RESOURCE_METHOD_INCORRECT); + createErrorInfo(UncResultCode.UNC_METHOD_NOT_ALLOWED.getValue()); return UncResultCode.UNC_CLIENT_ERROR.getValue(); } @@ -136,8 +133,7 @@ public abstract class AbstractResource implements VtnServiceResource { @Override public int post(final JsonObject requestBody) throws VtnServiceException { LOG.trace("Return from AbstractResource#post"); - createErrorInfo(UncResultCode.UNC_CLIENT_ERROR.getValue(), - VtnServiceConsts.RESOURCE_METHOD_INCORRECT); + createErrorInfo(UncResultCode.UNC_METHOD_NOT_ALLOWED.getValue()); return UncResultCode.UNC_CLIENT_ERROR.getValue(); } @@ -147,8 +143,7 @@ public abstract class AbstractResource implements VtnServiceResource { @Override public int put(final JsonObject requestBody) throws VtnServiceException { LOG.trace("Return from AbstractResource#put"); - createErrorInfo(UncResultCode.UNC_CLIENT_ERROR.getValue(), - VtnServiceConsts.RESOURCE_METHOD_INCORRECT); + createErrorInfo(UncResultCode.UNC_METHOD_NOT_ALLOWED.getValue()); return UncResultCode.UNC_CLIENT_ERROR.getValue(); } @@ -259,6 +254,33 @@ public abstract class AbstractResource implements VtnServiceResource { .getValue()) { error.addProperty(VtnServiceJsonConsts.MSG, UncCommonEnum.UncResultCode.UNC_CLIENT_ERROR.getMessage()); + } else if (code == UncCommonEnum.UncResultCode.UNC_INVALID_ARGUMENT + .getValue()) { + error.addProperty(VtnServiceJsonConsts.MSG, + UncCommonEnum.UncResultCode.UNC_INVALID_ARGUMENT + .getMessage()); + } else if (code == UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT + .getValue()) { + error.addProperty(VtnServiceJsonConsts.MSG, + UncCommonEnum.UncResultCode.UNC_INVALID_FORMAT.getMessage()); + } else if (code == UncCommonEnum.UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()) { + error.addProperty(VtnServiceJsonConsts.MSG, + UncCommonEnum.UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getMessage()); + } else if (code == UncCommonEnum.UncResultCode.UNC_CTRL_NOT_FOUND + .getValue()) { + error.addProperty(VtnServiceJsonConsts.MSG, + UncCommonEnum.UncResultCode.UNC_CTRL_NOT_FOUND.getMessage()); + } else if (code == UncCommonEnum.UncResultCode.UNC_CONFLICT_FOUND + .getValue()) { + error.addProperty(VtnServiceJsonConsts.MSG, + UncCommonEnum.UncResultCode.UNC_CONFLICT_FOUND.getMessage()); + } else if (code == UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getValue()) { + error.addProperty(VtnServiceJsonConsts.MSG, + UncCommonEnum.UncResultCode.UNC_METHOD_NOT_ALLOWED + .getMessage()); } else { error.addProperty(VtnServiceJsonConsts.MSG, "Invalid error code"); } @@ -273,7 +295,7 @@ public abstract class AbstractResource implements VtnServiceResource { * * @param errorMessage */ - public void createErrorInfo(int errorCode, String errorMessage) { + public void createErrorInfo(final int errorCode, final String errorMessage) { LOG.trace("Complete AbstractResource#createErrorInfo"); final JsonObject errorJsonObject = new JsonObject(); final JsonObject error = new JsonObject(); @@ -289,7 +311,8 @@ public abstract class AbstractResource implements VtnServiceResource { * * @param errorMessage */ - public void createSessionErrorInfo(UncSessionEnums.UsessIpcErrE errorEnum) { + public void createSessionErrorInfo( + final UncSessionEnums.UsessIpcErrE errorEnum) { LOG.trace("Complete AbstractResource#createSessionErrorInfo"); final JsonObject errorJsonObject = new JsonObject(); final JsonObject error = new JsonObject(); @@ -305,7 +328,7 @@ public abstract class AbstractResource implements VtnServiceResource { * * @param errorMessage */ - public void createTcErrorInfo(UncTCEnums.OperationStatus errorEnum) { + public void createTcErrorInfo(final UncTCEnums.OperationStatus errorEnum) { LOG.trace("Complete AbstractResource#createTcErrorInfo"); final JsonObject errorJsonObject = new JsonObject(); final JsonObject error = new JsonObject(); @@ -321,7 +344,8 @@ public abstract class AbstractResource implements VtnServiceResource { * * @param errorMessage */ - public void createNoMgErrorInfo(UncSYSMGEnums.NodeIpcErrorT errorEnum) { + public void + createNoMgErrorInfo(final UncSYSMGEnums.NodeIpcErrorT errorEnum) { LOG.trace("Complete AbstractResource#createNoMgErrorInfo"); final JsonObject errorJsonObject = new JsonObject(); final JsonObject error = new JsonObject(); @@ -369,20 +393,21 @@ public abstract class AbstractResource implements VtnServiceResource { * @throws VtnServiceException */ public JsonObject getResponseJsonArrayPhysical( - final JsonObject requestBody, IpcRequestProcessor requestProcessor, - Object responseGenerator, JsonArray responseArray, - String JsonArrayName, String IndexName, - IpcRequestPacketEnum requestPackeEnumName, - List uriParameters, String methodName) + final JsonObject requestBody, + final IpcRequestProcessor requestProcessor, + final Object responseGenerator, final JsonArray responseArray, + final String JsonArrayName, final String IndexName, + final IpcRequestPacketEnum requestPackeEnumName, + final List uriParameters, final String methodName) throws VtnServiceException { // session reset requestProcessor.setServiceInfo(UncUPPLEnums.UPPL_IPC_SVC_NAME, UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal()); int status = ClientSession.RESP_FATAL; int memberIndex = 0; - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); - int max_rep_count = Integer.parseInt(configuration + final int max_rep_count = Integer.parseInt(configuration .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); memberIndex = responseArray.size(); if (memberIndex != 0) { @@ -406,13 +431,6 @@ public abstract class AbstractResource implements VtnServiceResource { requestProcessor.createIpcRequestPacket(requestPackeEnumName, requestBody, uriParameters); - // for testing only - requestProcessor - .getRequestPacket() - .setOption2( - IpcDataUnitWrapper - .setIpcUint32Value(UncOption2Enum.UNC_OPT2_NEIGHBOR - .ordinal())); status = requestProcessor.processIpcRequest(); if (status == ClientSession.RESP_FATAL) { @@ -462,7 +480,7 @@ public abstract class AbstractResource implements VtnServiceResource { memberIndex = memberArray.size(); } } - JsonObject root = new JsonObject(); + final JsonObject root = new JsonObject(); root.add(JsonArrayName, responseArray); return root; } @@ -484,19 +502,20 @@ public abstract class AbstractResource implements VtnServiceResource { * @throws VtnServiceException */ public JsonObject getResponseJsonArrayLogical(final JsonObject requestBody, - IpcRequestProcessor requestProcessor, Object responseGenerator, - JsonArray responseArray, String JsonArrayName, String IndexName, - IpcRequestPacketEnum requestPackeEnumName, - List uriParameters, String methodName) + final IpcRequestProcessor requestProcessor, + final Object responseGenerator, final JsonArray responseArray, + final String JsonArrayName, final String IndexName, + final IpcRequestPacketEnum requestPackeEnumName, + final List uriParameters, final String methodName) throws VtnServiceException { // session reset requestProcessor.setServiceInfo(UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); int status = ClientSession.RESP_FATAL; int memberIndex = 0; - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); - int max_rep_count = Integer.parseInt(configuration + final int max_rep_count = Integer.parseInt(configuration .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); memberIndex = responseArray.size(); if (memberIndex != 0) { @@ -520,13 +539,6 @@ public abstract class AbstractResource implements VtnServiceResource { requestProcessor.createIpcRequestPacket(requestPackeEnumName, requestBody, uriParameters); - // for testing only - requestProcessor - .getRequestPacket() - .setOption2( - IpcDataUnitWrapper - .setIpcUint32Value(UncOption2Enum.UNC_OPT2_NEIGHBOR - .ordinal())); status = requestProcessor.processIpcRequest(); if (status == ClientSession.RESP_FATAL) { @@ -576,8 +588,71 @@ public abstract class AbstractResource implements VtnServiceResource { memberIndex = memberArray.size(); } } - JsonObject root = new JsonObject(); + final JsonObject root = new JsonObject(); root.add(JsonArrayName, responseArray); return root; } + + /** + * + * @param errorMassage + * @param resourceName + * @param resourceValue + * @return + */ + public String getCutomErrorMessage(String errorMassage, + String resourceName, String resourceValue) { + LOG.trace("Start AbstractResource#getConflictMessage()"); + StringBuilder errorMessage = new StringBuilder(); + errorMessage.append(errorMassage); + errorMessage.append(VtnServiceConsts.OPEN_SMALL_BRACES); + errorMessage.append(resourceName); + errorMessage.append(VtnServiceConsts.COLON); + errorMessage.append(resourceValue); + errorMessage.append(VtnServiceConsts.CLOSE_SMALL_BRACES); + + LOG.trace("Complete AbstractResource#getConflictMessage()"); + return errorMessage.toString(); + } + + /** + * Getter for openStackConnection + * + * @return + */ + public Connection getOpenStackConnection() { + return openStackConnection; + } + + /** + * Setter for openStackConnection + * + * @param openStackConnection + */ + public void setOpenStackConnection(Connection openStackConnection) { + this.openStackConnection = openStackConnection; + } + + /** + * Check for 400, 404, 409 and 503 errors returns from platform layer + * components + * + * @param info + */ + protected void checkForSpecificErrors(JsonObject info) { + if (info != null && !info.isJsonNull() + && info.has(VtnServiceJsonConsts.ERROR)) { + int errorCode = info.get(VtnServiceJsonConsts.ERROR) + .getAsJsonObject().get(VtnServiceJsonConsts.CODE) + .getAsInt(); + if (errorCode == UncResultCode.UNC_INVALID_FORMAT.getValue() + || errorCode == UncResultCode.UNC_NOT_FOUND.getValue() + || errorCode == UncResultCode.UNC_CONFLICT_FOUND.getValue() + || errorCode == UncResultCode.UNC_TOO_MANY_ENTITIES_FOUND + .getValue() + || errorCode == UncResultCode.UNC_SERVICE_UNAVILABLE + .getValue()) + createErrorInfo(errorCode); + } + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AcquireConfigModeResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AcquireConfigModeResource.java index 4df3a1de..b991a6e0 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AcquireConfigModeResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AcquireConfigModeResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -57,7 +57,8 @@ public class AcquireConfigModeResource extends AbstractResource { * the vtn service exception */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts AcquireConfigModeResource#post()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -85,7 +86,7 @@ public class AcquireConfigModeResource extends AbstractResource { .setIpcUint32Value(getSessionID())); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final String operationType = IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_0)); @@ -95,14 +96,10 @@ public class AcquireConfigModeResource extends AbstractResource { final int operationStatus = Integer.parseInt(IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_2))); - final String configId = IpcDataUnitWrapper - .getIpcDataUnitValue(session - .getResponse(VtnServiceJsonConsts.VAL_3)); LOG.info("Response received successfully"); LOG.info("OperationType " + operationType); LOG.info("SessionId " + sessionId); LOG.info("OperationStatus " + operationStatus); - LOG.info("ConfigId " + configId); if (operationStatus != UncTCEnums.OperationStatus.TC_OPER_SUCCESS .getCode()) { createTcErrorInfo(UncIpcErrorCode.getTcCodes(operationStatus)); @@ -110,6 +107,10 @@ public class AcquireConfigModeResource extends AbstractResource { status = UncCommonEnum.UncResultCode.UNC_SERVER_ERROR .getValue(); } else { + final String configId = IpcDataUnitWrapper + .getIpcDataUnitValue(session + .getResponse(VtnServiceJsonConsts.VAL_3)); + LOG.info("ConfigId " + configId); final JsonObject response = new JsonObject(); final JsonObject config = new JsonObject(); config.addProperty(VtnServiceJsonConsts.CONFIGID, configId); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ApiVersionResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ApiVersionResource.java index f970ce76..9a14a8c9 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ApiVersionResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ApiVersionResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -39,7 +39,7 @@ public class ApiVersionResource extends AbstractResource { * Implementation of get method of JavaAPI version */ @Override - public int get() { + public final int get() { LOG.trace("Start ApiVersionResource#get()"); int status = UncResultCode.UNC_SERVER_ERROR.getValue(); final JsonObject root = new JsonObject(); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AutoSaveResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AutoSaveResource.java index 6647d800..dff35085 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AutoSaveResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/AutoSaveResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -58,7 +58,8 @@ public class AutoSaveResource extends AbstractResource { * the vtn service exception */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts AutoSaveResource#put()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -98,7 +99,7 @@ public class AutoSaveResource extends AbstractResource { .setIpcUint32Value(getSessionID())); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final String operationType = IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_0)); @@ -169,7 +170,7 @@ public class AutoSaveResource extends AbstractResource { * the vtn service exception */ @Override - public int get() throws VtnServiceException { + public final int get() throws VtnServiceException { LOG.trace("Starts AutoSaveResource#get()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -187,7 +188,7 @@ public class AutoSaveResource extends AbstractResource { .setIpcUint32Value(getSessionID())); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final String operationType = IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_0)); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ClearStartupConfigurationResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ClearStartupConfigurationResource.java new file mode 100644 index 00000000..be4e1f65 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ClearStartupConfigurationResource.java @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.resources; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.ipc.IpcException; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.conversion.IpcDataUnitWrapper; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncIpcErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncTCEnums; +import org.opendaylight.vtn.javaapi.validation.ClearStartupConfigurationResourceValidator; + +/** + * The Class ClearStartupConfigurationResource implements the put method of + * Clear Startup Configuration API. + * + */ + +@UNCVtnService(path = "/configuration/startup") +public class ClearStartupConfigurationResource extends AbstractResource { + private static final Logger LOG = Logger + .getLogger(ClearStartupConfigurationResource.class.getName()); + + /** + * Instantiates a new Clear Startup Configuration resource. + */ + public ClearStartupConfigurationResource() { + super(); + LOG.trace("Start ClearStartupConfigurationResource#ClearStartupConfigurationResource()"); + setValidator(new ClearStartupConfigurationResourceValidator(this)); + LOG.trace("Complete ClearStartupConfigurationResource#ClearStartupConfigurationResource()"); + } + + /** + * Implementation of Put method of Clear Startup Configuration API + * + * @param requestBody + * the request Json Object + * + * @return Error code + * @throws VtnServiceException + * the vtn service exception + */ + @Override + public final int put(final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Starts ClearStartupConfigurationResource#put()"); + ClientSession session = null; + int status = ClientSession.RESP_FATAL; + try { + LOG.debug("Start Ipc framework call"); + session = getConnPool().getSession(UncTCEnums.UNC_CHANNEL_NAME, + UncTCEnums.TC_SERVICE_NAME, + UncTCEnums.ServiceID.TC_STARTUP_DB_SERVICES.ordinal(), + getExceptionHandler()); + LOG.info("Session created successfully"); + if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.STARTUP) + && requestBody + .getAsJsonObject(VtnServiceJsonConsts.STARTUP) + .getAsJsonPrimitive(VtnServiceJsonConsts.OPERATION) + .getAsString() + .equalsIgnoreCase(VtnServiceJsonConsts.CLEAR)) { + session.addOutput(IpcDataUnitWrapper + .setIpcUint32Value(UncTCEnums.ServiceType.TC_OP_CLEAR_STARTUP + .ordinal())); + } else { + LOG.warning("Request body is not correct"); + } + session.addOutput(IpcDataUnitWrapper + .setIpcUint32Value(getSessionID())); + LOG.info("Request packet created successfully"); + status = session.invoke(); + LOG.info("Request packet processed with status:" + status); + final String operationType = IpcDataUnitWrapper + .getIpcDataUnitValue(session + .getResponse(VtnServiceJsonConsts.VAL_0)); + final String sessionId = IpcDataUnitWrapper.getIpcDataUnitValue( + session.getResponse(VtnServiceJsonConsts.VAL_1)).toString(); + final int operationStatus = Integer.parseInt(IpcDataUnitWrapper + .getIpcDataUnitValue(session + .getResponse(VtnServiceJsonConsts.VAL_2))); + LOG.info("Response retreived successfully"); + LOG.info("Operation type= " + operationType); + LOG.info("SessionId= " + sessionId); + LOG.info("OperationStatus= " + operationStatus); + if (operationStatus != UncTCEnums.OperationStatus.TC_OPER_SUCCESS + .getCode()) { + createTcErrorInfo(UncIpcErrorCode.getTcCodes(operationStatus)); + LOG.info("Request not processed successfully"); + status = UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue(); + } else { + LOG.info("Request processed successfully"); + status = UncCommonEnum.UncResultCode.UNC_SUCCESS.getValue(); + } + LOG.debug("Complete Ipc framework call"); + } catch (final VtnServiceException e) { + LOG.info("Error occured while performing getSession operation"); + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); + throw e; + } catch (final IpcException e) { + LOG.info("Error occured while performing addOutput operation"); + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); + } finally { + if (status == ClientSession.RESP_FATAL) { + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); + status = UncResultCode.UNC_SERVER_ERROR.getValue(); + } + // destroy session by common handler + getConnPool().destroySession(session); + } + LOG.trace("Completed ClearStartupConfigurationResource#put()"); + return status; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ConfigResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ConfigResource.java index c7645a5c..bbfd00c5 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ConfigResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ConfigResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -9,6 +9,9 @@ package org.opendaylight.vtn.javaapi.resources; +import java.sql.Connection; +import java.sql.SQLException; + import com.google.gson.JsonObject; import org.opendaylight.vtn.core.ipc.ClientSession; import org.opendaylight.vtn.core.ipc.IpcException; @@ -19,6 +22,7 @@ import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceIpcConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; import org.opendaylight.vtn.javaapi.ipc.conversion.IpcDataUnitWrapper; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; @@ -59,10 +63,12 @@ public class ConfigResource extends AbstractResource { * the vtn service exception */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts ConfigResource#put()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; + int operationStatus = -99999; try { LOG.debug("Start Ipc framework call"); if (requestBody != null) { @@ -116,7 +122,7 @@ public class ConfigResource extends AbstractResource { LOG.warning("Request body is not correct"); } status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final int operationType = Integer.parseInt(IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_0))); @@ -124,7 +130,7 @@ public class ConfigResource extends AbstractResource { .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_1)); String configId = null; - int operationStatus = VtnServiceIpcConsts.INVALID_OPEARTION_STATUS; + operationStatus = VtnServiceIpcConsts.INVALID_OPEARTION_STATUS; if (operationType == UncTCEnums.ServiceType.TC_OP_CANDIDATE_COMMIT .ordinal()) { configId = IpcDataUnitWrapper.getIpcDataUnitValue(session @@ -155,7 +161,7 @@ public class ConfigResource extends AbstractResource { } LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { - LOG.info("Error occured while performing getSession operation"); + LOG.error("Error occured while performing getSession operation"); getExceptionHandler() .raise(Thread.currentThread().getStackTrace()[1] .getClassName() @@ -167,7 +173,7 @@ public class ConfigResource extends AbstractResource { .getErrorMessage(), e); throw e; } catch (final IpcException e) { - LOG.info("Error occured while performing addOutput operation"); + LOG.error("Error occured while performing addOutput operation"); getExceptionHandler() .raise(Thread.currentThread().getStackTrace()[1] .getClassName() @@ -185,8 +191,50 @@ public class ConfigResource extends AbstractResource { } // destroy session by common handler getConnPool().destroySession(session); + performOpenStackDBOperation(operationStatus); } LOG.trace("Completed ConfigResource#put()"); return status; } + + /** + * Perform DB commit or rollback, as per status if UNC commit operation + * + * @param operationStatus + * @throws VtnServiceException + * + */ + private void performOpenStackDBOperation(int operationStatus) + throws VtnServiceException { + Connection connection = getOpenStackConnection(); + // perform only when connection is not null + if (connection != null) { + try { + if (operationStatus == UncTCEnums.OperationStatus.TC_OPER_SUCCESS + .getCode()) { + LOG.debug("Commit operation"); + connection.commit(); + } else { + LOG.debug("Rollback operation"); + connection.rollback(); + } + } catch (SQLException e) { + LOG.error("Error occured performing database commit/rollback operation"); + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.INTERNAL_ERROR + .getErrorCode(), + UncJavaAPIErrorCode.INTERNAL_ERROR + .getErrorMessage(), e); + } finally { + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/DifferenceConfigResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/DifferenceConfigResource.java index 34411d2d..95aef412 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/DifferenceConfigResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/DifferenceConfigResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -58,7 +58,7 @@ public class DifferenceConfigResource extends AbstractResource { * the vtn service exception */ @Override - public int get() throws VtnServiceException { + public final int get() throws VtnServiceException { LOG.trace("Starts DifferenceConfigResource#get()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -181,10 +181,10 @@ public class DifferenceConfigResource extends AbstractResource { * @param dirtyStatus * the dirty status */ - private void createResponse(String dirtyStatus) { + private void createResponse(final String dirtyStatus) { LOG.trace("Starts DifferenceConfigResource#createResponse()"); - JsonObject response = new JsonObject(); - JsonObject dirtyJson = new JsonObject(); + final JsonObject response = new JsonObject(); + final JsonObject dirtyJson = new JsonObject(); if (UncStructIndexEnum.DirtyStatus.TRUE.getValue().equals(dirtyStatus)) { dirtyJson.addProperty(VtnServiceJsonConsts.DIFF_STATUS, VtnServiceJsonConsts.TRUE); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReadLockResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReadLockResource.java index 3c11d384..a2cd6cc6 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReadLockResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReadLockResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -56,7 +56,8 @@ public class ReadLockResource extends AbstractResource { * the vtn service exception */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts ReadLockResource#put()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -89,7 +90,7 @@ public class ReadLockResource extends AbstractResource { } LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final String operationType = IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_0)); @@ -162,7 +163,7 @@ public class ReadLockResource extends AbstractResource { * the vtn service exception */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts ReadLockResource#delete()"); int status = ClientSession.RESP_FATAL; ClientSession session = null; @@ -180,7 +181,7 @@ public class ReadLockResource extends AbstractResource { .setIpcUint32Value(getSessionID())); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final String operationType = IpcDataUnitWrapper .getIpcDataUnitValue(session.getResponse(0)); final String sessionId = IpcDataUnitWrapper diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReleaseConfigModeResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReleaseConfigModeResource.java index 229d6534..c37c001e 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReleaseConfigModeResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/ReleaseConfigModeResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -41,7 +41,7 @@ public class ReleaseConfigModeResource extends AbstractResource { * * @return the config id */ - public String getConfigId() { + public final String getConfigId() { return configId; } @@ -71,7 +71,7 @@ public class ReleaseConfigModeResource extends AbstractResource { * the vtn service exception */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts ReleaseConfigModeResource#delete()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -90,7 +90,7 @@ public class ReleaseConfigModeResource extends AbstractResource { .setIpcUint32Value(getConfigId())); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); final String operationType = IpcDataUnitWrapper .getIpcDataUnitValue(session .getResponse(VtnServiceJsonConsts.VAL_0)); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionResource.java index 1446e15e..e77a8ecf 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -58,7 +58,7 @@ public class SessionResource extends AbstractResource { * * @return the session id */ - public String getSessionId() { + public final String getSessionId() { return sessionId; } @@ -70,7 +70,7 @@ public class SessionResource extends AbstractResource { * the vtn service exception */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts SessionResource#delete()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -107,7 +107,7 @@ public class SessionResource extends AbstractResource { session.addOutput(usessIpcReqSessDel); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); if (status != UncSessionEnums.UsessIpcErrE.USESS_E_OK.ordinal()) { LOG.info("Error occurred while performing operation"); createSessionErrorInfo(UncIpcErrorCode.getSessionCodes(status)); @@ -161,7 +161,7 @@ public class SessionResource extends AbstractResource { * the vtn service exception */ @Override - public int get() throws VtnServiceException { + public final int get() throws VtnServiceException { LOG.trace("Starts SessionResource#get()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -199,7 +199,7 @@ public class SessionResource extends AbstractResource { session.addOutput(usessIpcReqSessDetail); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); if (status != UncSessionEnums.UsessIpcErrE.USESS_E_OK.ordinal()) { LOG.info("Error occurred while performing operation"); createSessionErrorInfo(UncIpcErrorCode.getSessionCodes(status)); @@ -291,7 +291,7 @@ public class SessionResource extends AbstractResource { .equals(UncSessionEnums.UsessTypeE.USESS_TYPE_WEB_UI.getValue())) { sessJson.addProperty(VtnServiceJsonConsts.TYPE, VtnServiceJsonConsts.WEBUI); - } else{ + } else { LOG.debug("Incorrect value for type"); } LOG.debug("type:" @@ -307,7 +307,7 @@ public class SessionResource extends AbstractResource { } else if (VtnServiceIpcConsts.USESS_USER_WEB_OPER.equals(userName)) { sessJson.addProperty(VtnServiceJsonConsts.USERNAME, VtnServiceJsonConsts.OPER); - } else{ + } else { LOG.debug("Incorrect value for user_name"); } // add user type to response json @@ -323,7 +323,7 @@ public class SessionResource extends AbstractResource { .equals(UncSessionEnums.UserTypeE.USER_TYPE_OPER.getValue())) { sessJson.addProperty(VtnServiceJsonConsts.USERTYPE, VtnServiceJsonConsts.OPER); - } else{ + } else { LOG.debug("Incorrect value for user_type"); } LOG.debug("usertype:" @@ -393,7 +393,7 @@ public class SessionResource extends AbstractResource { .getValue())) { sessJson.addProperty(VtnServiceJsonConsts.MODE, VtnServiceJsonConsts.UNKNOWN); - } else{ + } else { LOG.debug("Incorrect value for mode"); } LOG.debug("mode: " @@ -416,7 +416,7 @@ public class SessionResource extends AbstractResource { .getValue())) { sessJson.addProperty(VtnServiceJsonConsts.CONFIGSTATUS, VtnServiceJsonConsts.ENABLE); - } else{ + } else { LOG.debug("Incorrect value for config_status"); } LOG.debug("configstatus: " diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionsResource.java index 91379c4e..b1b5be5b 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/SessionsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -61,7 +61,8 @@ public class SessionsResource extends AbstractResource { * the vtn service exception */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts SessionsResource#post()"); ClientSession session = null; ClientSession sessionEnable = null; @@ -134,27 +135,27 @@ public class SessionsResource extends AbstractResource { usessIpcReqSessAdd .set(VtnServiceIpcConsts.LOGIN_NAME, IpcDataUnitWrapper - .setIpcUint8ArrayValue(VtnServiceJsonConsts.NONE)); + .setIpcUint8ArrayValue(VtnServiceConsts.EMPTY_STRING)); } // add type to usess_ipc_req_sess_add structure if (sessionJson.has(VtnServiceJsonConsts.TYPE) && sessionJson.getAsJsonPrimitive( VtnServiceJsonConsts.TYPE).getAsString() != null - && sessionJson + && sessionJson .getAsJsonPrimitive(VtnServiceJsonConsts.TYPE) .getAsString().trim() .equalsIgnoreCase(VtnServiceJsonConsts.WEBAPI)) { usessIpcReqSessAdd - .set(VtnServiceIpcConsts.SESS_TYPE, - IpcDataUnitWrapper - .setIpcInt32Value(UncSessionEnums.UsessTypeE.USESS_TYPE_WEB_API - .ordinal())); + .set(VtnServiceIpcConsts.SESS_TYPE, + IpcDataUnitWrapper + .setIpcInt32Value(UncSessionEnums.UsessTypeE.USESS_TYPE_WEB_API + .ordinal())); } else { usessIpcReqSessAdd - .set(VtnServiceIpcConsts.SESS_TYPE, - IpcDataUnitWrapper - .setIpcInt32Value(UncSessionEnums.UsessTypeE.USESS_TYPE_WEB_UI - .ordinal())); + .set(VtnServiceIpcConsts.SESS_TYPE, + IpcDataUnitWrapper + .setIpcInt32Value(UncSessionEnums.UsessTypeE.USESS_TYPE_WEB_UI + .ordinal())); } LOG.debug("sess_type: " + IpcDataUnitWrapper.getIpcStructUint32Value( @@ -183,7 +184,7 @@ public class SessionsResource extends AbstractResource { usessIpcReqSessAdd .set(VtnServiceJsonConsts.INFO, IpcDataUnitWrapper - .setIpcUint8ArrayValue(VtnServiceJsonConsts.NONE)); + .setIpcUint8ArrayValue(VtnServiceConsts.EMPTY_STRING)); } session.addOutput(usessIpcReqSessAdd); LOG.info("Request packet created successfully"); @@ -191,7 +192,8 @@ public class SessionsResource extends AbstractResource { LOG.info("Request packet processed with status:" + status); if (status != UncSessionEnums.UsessIpcErrE.USESS_E_OK.ordinal()) { LOG.info("Error occurred while performing operation"); - createSessionErrorInfo(UncIpcErrorCode.getSessionCodes(status)); + createSessionErrorInfo(UncIpcErrorCode + .getSessionCodes(status)); status = UncResultCode.UNC_SERVER_ERROR.getValue(); } else { LOG.info("Opeartion successfully performed"); @@ -199,28 +201,26 @@ public class SessionsResource extends AbstractResource { final IpcStruct responseStruct = (IpcStruct) session .getResponse(0); final JsonObject sessionInfo = new JsonObject(); - final String sessionId = IpcDataUnitWrapper.getIpcStructUint32Value( - responseStruct, VtnServiceIpcConsts.ID) - .toString(); - sessionInfo.addProperty( - VtnServiceJsonConsts.SESSIONID, sessionId); + final String sessionId = IpcDataUnitWrapper + .getIpcStructUint32Value(responseStruct, + VtnServiceIpcConsts.ID).toString(); + sessionInfo.addProperty(VtnServiceJsonConsts.SESSIONID, + sessionId); response.add(VtnServiceJsonConsts.SESSION, sessionInfo); setInfo(response); if (sessionJson.has(VtnServiceJsonConsts.USERNAME) && sessionJson - .getAsJsonPrimitive( - VtnServiceJsonConsts.USERNAME) + .getAsJsonPrimitive( + VtnServiceJsonConsts.USERNAME) .getAsString() .equalsIgnoreCase( VtnServiceJsonConsts.ADMIN)) { - sessionEnable = getConnPool() - .getSession( - UncSessionEnums.UNCD_IPC_CHANNEL, - UncSessionEnums.UNCD_IPC_SERVICE, - UncSessionEnums.ServiceID.kUsessEnable - .ordinal(), - getExceptionHandler()); + sessionEnable = getConnPool().getSession( + UncSessionEnums.UNCD_IPC_CHANNEL, + UncSessionEnums.UNCD_IPC_SERVICE, + UncSessionEnums.ServiceID.kUsessEnable + .ordinal(), getExceptionHandler()); LOG.info("Session created successfully"); // create request packet for IPC call based on API key // and JsonObject @@ -231,17 +231,17 @@ public class SessionsResource extends AbstractResource { final IpcStruct usessIpcReqSessIdCurrent = new IpcStruct( UncStructEnum.UsessIpcSessId.getValue()); usessIpcReqSessIdCurrent - .set(VtnServiceIpcConsts.ID, IpcDataUnitWrapper - .setIpcUint32Value(sessionId)); + .set(VtnServiceIpcConsts.ID, IpcDataUnitWrapper + .setIpcUint32Value(sessionId)); usessIpcReqSessEnable.set(VtnServiceIpcConsts.CURRENT, usessIpcReqSessIdCurrent); usessIpcReqSessEnable - .set(VtnServiceIpcConsts.ENABLE_PASSWORD, - IpcDataUnitWrapper - .setIpcUint8ArrayValue(sessionJson - .getAsJsonPrimitive( - VtnServiceJsonConsts.PASSWORD) - .getAsString())); + .set(VtnServiceIpcConsts.ENABLE_PASSWORD, + IpcDataUnitWrapper + .setIpcUint8ArrayValue(sessionJson + .getAsJsonPrimitive( + VtnServiceJsonConsts.PASSWORD) + .getAsString())); sessionEnable.addOutput(usessIpcReqSessEnable); LOG.info("Request packet created successfully"); status = sessionEnable.invoke(); @@ -293,7 +293,7 @@ public class SessionsResource extends AbstractResource { } // destroy session by common handler getConnPool().destroySession(session); - if(sessionEnable != null){ + if (sessionEnable != null) { getConnPool().destroySession(sessionEnable); } } @@ -312,7 +312,8 @@ public class SessionsResource extends AbstractResource { * the vtn service exception */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("starts SessionsResource#get()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -553,21 +554,26 @@ public class SessionsResource extends AbstractResource { // add mode to response json if (IpcDataUnitWrapper .getIpcStructUint32Value(responseStruct, - VtnServiceIpcConsts.SESS_MODE).toString() - .equals(UncSessionEnums.UsessModeE.USESS_MODE_OPER.getValue())) { + VtnServiceIpcConsts.SESS_MODE) + .toString() + .equals(UncSessionEnums.UsessModeE.USESS_MODE_OPER + .getValue())) { sessJson.addProperty(VtnServiceJsonConsts.MODE, VtnServiceJsonConsts.OPER); } else if (IpcDataUnitWrapper .getIpcStructUint32Value(responseStruct, VtnServiceIpcConsts.SESS_MODE) .toString() - .equals(UncSessionEnums.UsessModeE.USESS_MODE_ENABLE.getValue())) { + .equals(UncSessionEnums.UsessModeE.USESS_MODE_ENABLE + .getValue())) { sessJson.addProperty(VtnServiceJsonConsts.MODE, VtnServiceJsonConsts.ENABLE); } else if (IpcDataUnitWrapper .getIpcStructUint32Value(responseStruct, - VtnServiceIpcConsts.SESS_MODE).toString() - .equals(UncSessionEnums.UsessModeE.USESS_MODE_DEL.getValue())) { + VtnServiceIpcConsts.SESS_MODE) + .toString() + .equals(UncSessionEnums.UsessModeE.USESS_MODE_DEL + .getValue())) { sessJson.addProperty(VtnServiceJsonConsts.MODE, VtnServiceJsonConsts.DEL); } else if (IpcDataUnitWrapper @@ -582,8 +588,8 @@ public class SessionsResource extends AbstractResource { LOG.debug("Incorrect value for mode"); } LOG.debug("mode: " - + IpcDataUnitWrapper.getIpcStructUint32Value(responseStruct, - VtnServiceIpcConsts.SESS_MODE)); + + IpcDataUnitWrapper.getIpcStructUint32Value( + responseStruct, VtnServiceIpcConsts.SESS_MODE)); // add configstatus to response json if (IpcDataUnitWrapper .getIpcStructUint32Value(responseStruct, @@ -605,7 +611,8 @@ public class SessionsResource extends AbstractResource { LOG.debug("Incorrect value for config_status"); } LOG.debug("configstatus: " - + IpcDataUnitWrapper.getIpcStructUint32Value(responseStruct, + + IpcDataUnitWrapper.getIpcStructUint32Value( + responseStruct, VtnServiceIpcConsts.CONFIG_STATUS)); } sessArray.add(sessJson); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/UTResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/UTResource.java deleted file mode 100644 index 123f5bac..00000000 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/UTResource.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2012-2013 NEC Corporation - * All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this - * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.vtn.javaapi.resources; - -import org.opendaylight.vtn.javaapi.annotation.UNCField; -import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; - -@UNCVtnService(path = "/test/{test_name}") -public class UTResource extends AbstractResource { - - @UNCField("test_name") - private String testName; - - private UTResource() { - } - -} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/UserResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/UserResource.java index fb6856c9..1277f6f5 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/UserResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/UserResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,7 @@ import org.opendaylight.vtn.javaapi.validation.UserResourceValidator; @UNCVtnService(path = "/users/{username}/password") public class UserResource extends AbstractResource { - private static final Logger LOG = Logger.getLogger(ConfigResource.class + private static final Logger LOG = Logger.getLogger(UserResource.class .getName()); @UNCField("username") @@ -46,7 +46,7 @@ public class UserResource extends AbstractResource { * * @return the user name */ - public String getUserName() { + public final String getUserName() { return userName; } @@ -71,7 +71,8 @@ public class UserResource extends AbstractResource { * the vtn service exception */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts UserResource#put()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -98,8 +99,10 @@ public class UserResource extends AbstractResource { // set user name LOG.info("set user name for : " + getUserName()); - usessIpcReqUserPasswd.set(VtnServiceIpcConsts.SESS_UNAME, - IpcDataUnitWrapper.setIpcUint8ArrayValue(getUNCUserName(getUserName()))); + usessIpcReqUserPasswd + .set(VtnServiceIpcConsts.SESS_UNAME, + IpcDataUnitWrapper + .setIpcUint8ArrayValue(getUNCUserName(getUserName()))); // set password LOG.info("set password"); @@ -112,7 +115,7 @@ public class UserResource extends AbstractResource { session.addOutput(usessIpcReqUserPasswd); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); if (status != UncSessionEnums.UsessIpcErrE.USESS_E_OK.ordinal()) { LOG.info("Error occurred while performing operation"); createSessionErrorInfo(UncIpcErrorCode.getSessionCodes(status)); @@ -158,18 +161,19 @@ public class UserResource extends AbstractResource { LOG.trace("Completed UserResource#put()"); return status; } - + /** * Convert the higher level user name to USESS user name + * * @param userName * @return */ - private String getUNCUserName(String userName) { + private String getUNCUserName(final String userName) { LOG.debug("User name : " + userName); String uncUserName = null; if (userName.equalsIgnoreCase(VtnServiceJsonConsts.ADMIN)) { uncUserName = VtnServiceIpcConsts.USESS_USER_WEB_ADMIN; - } else if (userName.equalsIgnoreCase(VtnServiceJsonConsts.OPER)){ + } else if (userName.equalsIgnoreCase(VtnServiceJsonConsts.OPER)) { uncUserName = VtnServiceIpcConsts.USESS_USER_WEB_OPER; } LOG.debug("UNC user name : " + uncUserName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/ArpEntryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/ArpEntryResource.java index 44e75f5b..54700e83 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/ArpEntryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/ArpEntryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -48,6 +48,7 @@ public class ArpEntryResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger.getLogger(ArpEntryResource.class .getName()); + /** * Instantiates a new ARP entry resource. */ @@ -57,18 +58,21 @@ public class ArpEntryResource extends AbstractResource { setValidator(new ArpEntryResourceValidator(this)); LOG.trace("Complete ArpEntryResource#ArpEntryResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } + /** * Implementation of get method of ArpEntry API * @@ -79,7 +83,8 @@ public class ArpEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start ArpEntryResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -131,7 +136,7 @@ public class ArpEntryResource extends AbstractResource { .ordinal())); } LOG.debug("Request packet created successfully"); - status =requestProcessor.processIpcRequest(); + status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getARPEntryResponse( @@ -165,6 +170,7 @@ public class ArpEntryResource extends AbstractResource { LOG.trace("Completed ArpEntryResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/VersionResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/CoordinatorVersionResource.java similarity index 57% rename from coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/VersionResource.java rename to coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/CoordinatorVersionResource.java index 91a5d4cc..e1b796f8 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/VersionResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/CoordinatorVersionResource.java @@ -1,12 +1,13 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.vtn.javaapi.resources.physical; + +package org.opendaylight.vtn.javaapi.resources.logical; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -26,30 +27,31 @@ import org.opendaylight.vtn.javaapi.ipc.enums.UncIpcErrorCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncSYSMGEnums; import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.validation.physical.VersionResourceValidator; +import org.opendaylight.vtn.javaapi.validation.logical.CoordinatorVersionResourceValidator; /** - * The Class VersionResource get method. + * The Class CoordinatorVersionResource implements get method. + * */ -@UNCVtnService(path = "/unc/version") -public class VersionResource extends AbstractResource { +@UNCVtnService(path = "/coordinator_version") +public class CoordinatorVersionResource extends AbstractResource { /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(VersionResource.class - .getName()); + private static final Logger LOG = Logger + .getLogger(CoordinatorVersionResource.class.getName()); /** - * Instantiates a new Version resource. + * Instantiates a new ARP entry resource. */ - public VersionResource() { + public CoordinatorVersionResource() { super(); - LOG.trace("Start VersionResource#VersionResource()"); - setValidator(new VersionResourceValidator(this)); - LOG.trace("Complete VersionResource#VersionResource()"); + LOG.trace("Start CoordinatorVersionResource#CoordinatorVersionResource()"); + setValidator(new CoordinatorVersionResourceValidator(this)); + LOG.trace("Complete CoordinatorVersionResource#CoordinatorVersionResource()"); } /** - * Implementation of Get method of Version API + * Implementation of Get method of Coordinator Version API * * @param requestBody * the request Json object @@ -58,8 +60,8 @@ public class VersionResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get() throws VtnServiceException { - LOG.trace("Starts VersionResource#get()"); + public final int get() throws VtnServiceException { + LOG.trace("Start CoordinatorVersionResource#get()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; try { @@ -71,14 +73,14 @@ public class VersionResource extends AbstractResource { .ordinal(), getExceptionHandler()); LOG.info("Session created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); if (status != UncSYSMGEnums.NodeIpcErrorT.NOMG_E_OK.ordinal()) { LOG.info("error occurred while performing operation"); createNoMgErrorInfo(UncIpcErrorCode.getNodeCodes(status)); status = UncResultCode.UNC_SERVER_ERROR.getValue(); } else { LOG.info("Operation successfully performed"); - final JsonObject response = createGetResponse(session); + final JsonObject response = createCoordinatorVersionResponse(session); setInfo(response); status = UncResultCode.UNC_SUCCESS.getValue(); } @@ -114,42 +116,51 @@ public class VersionResource extends AbstractResource { // destroy session by common handler getConnPool().destroySession(session); } - LOG.trace("Completed VersionResource#get()"); + LOG.trace("Completed CoordinatorVersionResource#get()"); return status; } /** - * Creating Response for get Version API + * Creating Response for get Coordinator Version API * * @param ClientSession * Object * @return Response Json Object */ - private JsonObject createGetResponse(final ClientSession session) throws IpcException { - LOG.trace("Starts VersionResource#createGetResponse()"); + private JsonObject createCoordinatorVersionResponse( + final ClientSession session) throws IpcException { + LOG.trace("Starts CoordinatorVersionResource#createCoordinatorVersionResponse()"); final int count = session.getResponseCount(); final JsonObject response = new JsonObject(); - final JsonObject versionJson = new JsonObject(); - final IpcStruct versionStruct = (IpcStruct) session + final JsonObject coordinatorVersionJson = new JsonObject(); + final IpcStruct coordinatorVersionStruct = (IpcStruct) session .getResponse(VtnServiceJsonConsts.VAL_0); - String major = IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.MAJOR); - LOG.debug("major: "+ IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.MAJOR)); - String minor = IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.MINOR); - LOG.debug("minor: "+ IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.MINOR)); - String revision = IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.REVISION); - LOG.debug("revision: "+ IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.REVISION)); - String patchLevel = IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.PATCHLEVEL); - LOG.debug("patchLevel: "+ IpcDataUnitWrapper.getIpcStructUint16Value(versionStruct, - VtnServiceIpcConsts.PATCHLEVEL)); - String version = VtnServiceJsonConsts.V + major + VtnServiceConsts.DOT + minor + VtnServiceConsts.DOT + revision + VtnServiceConsts.DOT + patchLevel; - versionJson.addProperty(VtnServiceJsonConsts.VERSIONNO, version); + final String major = IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, VtnServiceIpcConsts.MAJOR); + LOG.debug("major: " + + IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, VtnServiceIpcConsts.MAJOR)); + final String minor = IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, VtnServiceIpcConsts.MINOR); + LOG.debug("minor: " + + IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, VtnServiceIpcConsts.MINOR)); + final String revision = IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, VtnServiceIpcConsts.REVISION); + LOG.debug("revision: " + + IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, VtnServiceIpcConsts.REVISION)); + final String patchLevel = IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, VtnServiceIpcConsts.PATCHLEVEL); + LOG.debug("patchLevel: " + + IpcDataUnitWrapper.getIpcStructUint16Value( + coordinatorVersionStruct, + VtnServiceIpcConsts.PATCHLEVEL)); + final String version = VtnServiceJsonConsts.V + major + + VtnServiceConsts.DOT + minor + VtnServiceConsts.DOT + + revision + VtnServiceConsts.DOT + patchLevel; + coordinatorVersionJson.addProperty(VtnServiceJsonConsts.VERSION, + version); final JsonArray patchJsonArray = new JsonArray(); JsonObject patchJson = null; for (int i = VtnServiceJsonConsts.VAL_1; i < count; i++) { @@ -159,9 +170,11 @@ public class VersionResource extends AbstractResource { .getResponse(i))); patchJsonArray.add(patchJson); } - versionJson.add(VtnServiceJsonConsts.PATCHES, patchJsonArray); - response.add(VtnServiceJsonConsts.VERSION, versionJson); - LOG.trace("Complted VersionResource#createGetResponse()"); + coordinatorVersionJson + .add(VtnServiceJsonConsts.PATCHES, patchJsonArray); + response.add(VtnServiceJsonConsts.COORDINATOR_VERSION, + coordinatorVersionJson); + LOG.trace("Completed CoordinatorVersionResource#createCoordinatorVersionResponse()"); return response; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfaceResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfaceResource.java index 6edc1fcc..ed82cff6 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfaceResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfaceResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -33,7 +33,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.InterfaceResourceValidato /** * The Class DhcpRelayInterfaceResource implements delete and get methods. */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/dhcprelay/interfaces/{if_name}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/dhcprelay/interfaces/{if_name}") public class DhcpRelayInterfaceResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -44,26 +45,31 @@ public class DhcpRelayInterfaceResource extends AbstractResource { /** The if name. */ @UNCField("if_name") private String ifName; + /** * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vrt name */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } + /** * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } + private static final Logger LOG = Logger .getLogger(DhcpRelayInterfaceResource.class.getName()); + /** * Instantiates a new dhcp relay interface resource. */ @@ -73,6 +79,7 @@ public class DhcpRelayInterfaceResource extends AbstractResource { setValidator(new InterfaceResourceValidator(this)); LOG.trace("Complete DhcpRelayInterfaceResource#DhcpRelayInterfaceResource()"); } + /** * Implementation of delete method of Dhcp Relay Interface * @@ -80,7 +87,7 @@ public class DhcpRelayInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start DhcpRelayInterfaceResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -128,6 +135,7 @@ public class DhcpRelayInterfaceResource extends AbstractResource { LOG.trace("Complete DhcpRelayInterfaceResource#delete()"); return status; } + /** * Implementation of get method of Dhcp Relay Interface * @@ -138,7 +146,8 @@ public class DhcpRelayInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayInterfaceResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -159,7 +168,7 @@ public class DhcpRelayInterfaceResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getDhcpRelayInterfaceResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -191,12 +200,13 @@ public class DhcpRelayInterfaceResource extends AbstractResource { LOG.trace("Completed DhcpRelayInterfaceResource#get()"); return status; } + /** * Add URI parameters to list * * @return */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start DhcpRelayInterfaceResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfacesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfacesResource.java index 7097bf13..a203e8e3 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfacesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayInterfacesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.InterfaceResourceValidato /** * The Class DhcpRelayInterfacesResource implements post and get methods. */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/dhcprelay/interfaces") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/dhcprelay/interfaces") public class DhcpRelayInterfacesResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -47,14 +48,14 @@ public class DhcpRelayInterfacesResource extends AbstractResource { /** * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vrt name */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } @@ -81,7 +82,8 @@ public class DhcpRelayInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayInterfacesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -142,7 +144,8 @@ public class DhcpRelayInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayInterfacesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -162,7 +165,7 @@ public class DhcpRelayInterfacesResource extends AbstractResource { uriParameterList); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getDhcpRelayInterfaceResponse( * requestProcessor.getIpcResponsePacket(), requestBody, @@ -173,7 +176,7 @@ public class DhcpRelayInterfacesResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.INTERFACES).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.INTERFACES).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, requestProcessor, responseGenerator, responseArray, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayResource.java index 0fcca080..b1d757f4 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -43,6 +43,7 @@ public class DhcpRelayResource extends AbstractResource { private String vrtName; private static final Logger LOG = Logger.getLogger(DhcpRelayResource.class .getName()); + /** * Instantiates a new dhcp relay resource. */ @@ -52,18 +53,21 @@ public class DhcpRelayResource extends AbstractResource { setValidator(new DhcpRelayResourceValidator(this)); LOG.trace("Complete DhcpRelayResource#DhcpRelayResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } + /** * Implementation of get method of DhcpRelay * @@ -74,7 +78,8 @@ public class DhcpRelayResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -95,7 +100,7 @@ public class DhcpRelayResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getDhcpRelayResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -112,9 +117,7 @@ public class DhcpRelayResource extends AbstractResource { UncJavaAPIErrorCode.IPC_SERVER_ERROR .getErrorMessage(), e); throw e; - } - - finally { + } finally { if (status == ClientSession.RESP_FATAL) { if (null != requestProcessor.getErrorJson()) { setInfo(requestProcessor.getErrorJson()); @@ -129,6 +132,7 @@ public class DhcpRelayResource extends AbstractResource { LOG.trace("Complete DhcpRelayResource#get()"); return status; } + /** * Implementation of put method of DhcpRelay * @@ -139,7 +143,8 @@ public class DhcpRelayResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -187,12 +192,13 @@ public class DhcpRelayResource extends AbstractResource { LOG.trace("Completed DhcpRelayResource#put()"); return status; } + /** * Add URI parameters to list * * @return */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start DhcpRelayResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServerResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServerResource.java index 8073f3a5..1638ecf8 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServerResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServerResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -33,7 +33,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.DhcpRelayServerResourceVa /** * The Class DhcpRelayServerResource implements delete and get methods. */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/dhcprelay/servers/{ipaddr}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/dhcprelay/servers/{ipaddr}") public class DhcpRelayServerResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -46,6 +47,7 @@ public class DhcpRelayServerResource extends AbstractResource { private String ipaddr; private static final Logger LOG = Logger .getLogger(DhcpRelayServerResource.class.getName()); + /** * Instantiates a new dhcp relay server resource. */ @@ -55,24 +57,28 @@ public class DhcpRelayServerResource extends AbstractResource { setValidator(new DhcpRelayServerResourceValidator(this)); LOG.trace("Complete DhcpRelayServerResource#DhcpRelayServerResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } + /** * @return the ipAddr */ - public String getIpaddr() { + public final String getIpaddr() { return ipaddr; } + /** * Implementation of delete method of Dhcp Relay Server * @@ -80,7 +86,7 @@ public class DhcpRelayServerResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start DhcpRelayServerResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -128,6 +134,7 @@ public class DhcpRelayServerResource extends AbstractResource { LOG.trace("Complete DhcpRelayServerResource#delete()"); return status; } + /** * Implementation of get method of Dhcp Relay Server * @@ -138,7 +145,8 @@ public class DhcpRelayServerResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayServerResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -160,7 +168,7 @@ public class DhcpRelayServerResource extends AbstractResource { status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); LOG.debug("Complete Ipc framework call"); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getDHCPRelayServerResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -191,12 +199,13 @@ public class DhcpRelayServerResource extends AbstractResource { LOG.trace("Complete DhcpRelayServerResource#get()"); return status; } + /** * Add URI parameters to list * * @return */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start DhcpRelayServerResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServersResource.java index 8aa8911f..caea7a1c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServersResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/DhcpRelayServersResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -48,7 +48,7 @@ public class DhcpRelayServersResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -56,7 +56,7 @@ public class DhcpRelayServersResource extends AbstractResource { * * @return the vrt name */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } @@ -83,7 +83,8 @@ public class DhcpRelayServersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayServersResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -143,7 +144,8 @@ public class DhcpRelayServersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayServersResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -165,7 +167,7 @@ public class DhcpRelayServersResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getDHCPRelayServerResponse( * requestProcessor.getIpcResponsePacket(), requestBody, @@ -176,7 +178,7 @@ public class DhcpRelayServersResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.SERVERS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.SERVERS).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, requestProcessor, responseGenerator, responseArray, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntriesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntriesResource.java index c8727b5e..d04aa1aa 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntriesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntriesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -39,7 +39,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.FlowFilterEntriesResource */ /* This class handles post and get methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/flowfilters/{ff_type}/flowfilterentries") +@UNCVtnService( + path = "/vtns/{vtn_name}/flowfilters/{ff_type}/flowfilterentries") public class FlowFilterEntriesResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -49,6 +50,7 @@ public class FlowFilterEntriesResource extends AbstractResource { private String ffType; private static final Logger LOG = Logger .getLogger(FlowFilterEntriesResource.class.getName()); + /** * Instantiates a new flow filter entries resource. */ @@ -58,18 +60,21 @@ public class FlowFilterEntriesResource extends AbstractResource { setValidator(new FlowFilterEntriesResourceValidator(this)); LOG.trace("Start FlowFilterEntriesResource#FlowFilterEntriesResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } + /** * Implementation of post method of FlowFilterEntries * @@ -80,7 +85,8 @@ public class FlowFilterEntriesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowFilterEntriesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -128,6 +134,7 @@ public class FlowFilterEntriesResource extends AbstractResource { LOG.trace("Completed FlowFilterEntriesResource#post()"); return status; } + /** * Implementation of get method of FlowFilterEntries * @@ -138,7 +145,8 @@ public class FlowFilterEntriesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowFilterEntriesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -161,37 +169,43 @@ public class FlowFilterEntriesResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); - /*setInfo(responseGenerator.getVtnFlowFilterEntryResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST));*/ - JsonObject responseJson = responseGenerator.getVtnFlowFilterEntryResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.FLOWFILTERENTRIES).isJsonArray()) { - JsonArray responseArray = responseJson.get( - VtnServiceJsonConsts.FLOWFILTERENTRIES).getAsJsonArray(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + /* + * setInfo(responseGenerator.getVtnFlowFilterEntryResponse( + * requestProcessor.getIpcResponsePacket(), requestBody, + * VtnServiceJsonConsts.LIST)); + */ + JsonObject responseJson = responseGenerator + .getVtnFlowFilterEntryResponse( + requestProcessor.getIpcResponsePacket(), + requestBody, VtnServiceJsonConsts.LIST); + if (responseJson.get(VtnServiceJsonConsts.FLOWFILTERENTRIES) + .isJsonArray()) { + final JsonArray responseArray = responseJson.get( + VtnServiceJsonConsts.FLOWFILTERENTRIES) + .getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.FLOWFILTERENTRIES, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.FLOWFILTERENTRIES, VtnServiceJsonConsts.SEQNUM, IpcRequestPacketEnum.KT_VTN_FLOWFILTER_ENTRY_GET, - uriParameterList,VtnServiceIpcConsts.GET_VTN_FLOW_FILETER_ENTRY_RESPONSE); + uriParameterList, + VtnServiceIpcConsts.GET_VTN_FLOW_FILETER_ENTRY_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -208,12 +222,13 @@ public class FlowFilterEntriesResource extends AbstractResource { LOG.trace("Completed FlowFilterEntriesResource#get()"); return status; } + /** * Add URI parameters to list * * @return parameter list */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { final List uriParameters = new ArrayList(); LOG.trace("Start FlowFilterEntriesResource#getUriParameters()"); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntryResource.java index 8bab0426..bf21254c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterEntryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,6 +13,7 @@ import java.util.List; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.ipc.IpcUint32; import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.annotation.UNCField; import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; @@ -25,6 +26,7 @@ import org.opendaylight.vtn.javaapi.ipc.conversion.IpcLogicalResponseFactory; import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncDataType; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncOperationEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncOption1Enum; @@ -36,7 +38,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.FlowFilterEntryResourceVa * The Class FlowFilterEntryResource implements delete, get and put methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") +@UNCVtnService( + path = "/vtns/{vtn_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") public class FlowFilterEntryResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -47,26 +50,31 @@ public class FlowFilterEntryResource extends AbstractResource { /** The seqnum. */ @UNCField("seqnum") private String seqnum; + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } + /** * @return the seqnum */ - public String getSeqnum() { + public final String getSeqnum() { return seqnum; } + private static final Logger LOG = Logger .getLogger(FlowFilterEntryResource.class.getName()); + /** * Instantiates a new flow filter entry resource. */ @@ -76,6 +84,7 @@ public class FlowFilterEntryResource extends AbstractResource { setValidator(new FlowFilterEntryResourceValidator(this)); LOG.trace("Start FlowFilterEntryResource#FlowFilterEntryResource()"); } + /** * Implementation of put method of FlowFilterEntry * @@ -86,7 +95,8 @@ public class FlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowFilterEntryResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -134,6 +144,7 @@ public class FlowFilterEntryResource extends AbstractResource { LOG.trace("Completed FlowFilterEntryResource#put()"); return status; } + /** * Implementation of delete method of FlowFilterEntry * @@ -141,7 +152,7 @@ public class FlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts FlowFilterEntryResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -189,6 +200,7 @@ public class FlowFilterEntryResource extends AbstractResource { LOG.trace("Complete FlowFilterEntryResource#delete()"); return status; } + /** * Implementation of get method of FlowFilterEntry * @@ -199,7 +211,8 @@ public class FlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowFilterEntryResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -222,10 +235,29 @@ public class FlowFilterEntryResource extends AbstractResource { requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_VTN_FLOWFILTER_ENTRY_GET, requestBody, getUriParameters()); + requestProcessor.getRequestPacket().setDataType( + new IpcUint32(UncDataType.UNC_DT_RUNNING.ordinal())); + requestBody.addProperty(VtnServiceJsonConsts.TARGETDB, + VtnServiceJsonConsts.RUNNING); } else { - requestProcessor.createIpcRequestPacket( - IpcRequestPacketEnum.KT_VTN_FLOWFILTER_ENTRY_GET_STATE, - requestBody, getUriParameters()); + if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.get(VtnServiceJsonConsts.OP) + .getAsString() + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + requestProcessor + .createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTN_FLOWFILTER_ENTRY_GET_STATE, + requestBody, getUriParameters()); + } else { + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTN_FLOWFILTER_ENTRY_GET, + requestBody, getUriParameters()); + requestProcessor.getRequestPacket().setDataType( + new IpcUint32(UncDataType.UNC_DT_RUNNING.ordinal())); + requestBody.addProperty(VtnServiceJsonConsts.TARGETDB, + VtnServiceJsonConsts.RUNNING); + } } requestProcessor.getRequestPacket().setOperation( IpcDataUnitWrapper @@ -236,16 +268,22 @@ public class FlowFilterEntryResource extends AbstractResource { || (requestBody.has(VtnServiceJsonConsts.TARGETDB) && requestBody .get(VtnServiceJsonConsts.TARGETDB).getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.STATE))) { - requestProcessor - .getRequestPacket() - .setOption1( - IpcDataUnitWrapper - .setIpcUint32Value((UncOption1Enum.UNC_OPT1_DETAIL - .ordinal()))); + if(requestBody != null + && requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.get(VtnServiceJsonConsts.OP) + .getAsString() + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)){ + requestProcessor + .getRequestPacket() + .setOption1( + IpcDataUnitWrapper + .setIpcUint32Value((UncOption1Enum.UNC_OPT1_DETAIL + .ordinal()))); + } } - status= requestProcessor.processIpcRequest(); + status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVtnFlowFilterEntryResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -278,12 +316,13 @@ public class FlowFilterEntryResource extends AbstractResource { LOG.trace("Complete FlowFilterEntryResource#get()"); return status; } + /** * Add URI parameters to list * * @return parameter list */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start FlowFilterEntryResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterResource.java index 8f4e219b..9ebd127c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFilterResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -41,27 +41,32 @@ public class FlowFilterResource extends AbstractResource { /** The Vtn name. */ @UNCField("vtn_name") private String vtnName; + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** The FlowFilter type. */ @UNCField("ff_type") private String ffType; + /** * Gets the ff type. * * @return the ff type */ - public String getFfType() { + public final String getFfType() { return ffType; } + private static final Logger LOG = Logger.getLogger(FlowFilterResource.class .getName()); + /** * Instantiates a new flow filter resource. */ @@ -71,6 +76,7 @@ public class FlowFilterResource extends AbstractResource { setValidator(new FlowFilterResourceValidator(this)); LOG.trace("Complete FlowFilterResource#FlowFilterResource()"); } + /** * Implementation of Delete method of Flow Filter API * @@ -78,7 +84,7 @@ public class FlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts FlowFilterResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -137,7 +143,8 @@ public class FlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowFilterResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -155,7 +162,7 @@ public class FlowFilterResource extends AbstractResource { IpcRequestPacketEnum.KT_VTN_FLOWFILTER_GET, requestBody, getUriParameters()); LOG.debug("Request packet created successfully"); - status=requestProcessor.processIpcRequest(); + status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getFlowFilterResponse( @@ -189,6 +196,7 @@ public class FlowFilterResource extends AbstractResource { LOG.trace("Completed FlowFilterResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFiltersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFiltersResource.java index 87663eec..3e255c08 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFiltersResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowFiltersResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -41,6 +41,7 @@ public class FlowFiltersResource extends AbstractResource { private String vtnName; private static final Logger LOG = Logger .getLogger(FlowFiltersResource.class.getName()); + /** * Instantiates a new flow filters resource. */ @@ -50,14 +51,16 @@ public class FlowFiltersResource extends AbstractResource { setValidator(new FlowFilterResourceValidator(this)); LOG.trace("Completed FlowFiltersResource#FlowFiltersResource()"); } + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Implementation of Post method of Flow Fliter API * @@ -68,7 +71,8 @@ public class FlowFiltersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowFiltersResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -124,6 +128,7 @@ public class FlowFiltersResource extends AbstractResource { LOG.trace("Completed FlowFiltersResource#post()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntriesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntriesResource.java index fa1bd435..cd50112c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntriesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntriesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -40,15 +40,18 @@ public class FlowListEntriesResource extends AbstractResource { /** the FlowList Name. */ @UNCField("fl_name") private String flName; + /** * @return the fl name */ - public String getFlName() { + public final String getFlName() { return flName; } + /** The Constant LOG. */ private static final Logger LOG = Logger .getLogger(FlowListEntriesResource.class.getName()); + /** * Instantiates a new flow list entrys resource. */ @@ -58,6 +61,7 @@ public class FlowListEntriesResource extends AbstractResource { setValidator(new FlowListEntryResourceValidator(this)); LOG.trace("Start FlowListEntriesResource#FlowListEntriesResource()"); } + /** * Implementation of post method of FlowListEntries * @@ -68,7 +72,8 @@ public class FlowListEntriesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowListEntriesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -92,14 +97,14 @@ public class FlowListEntriesResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -117,6 +122,7 @@ public class FlowListEntriesResource extends AbstractResource { LOG.trace("Completed FlowListEntriesResource#post()"); return status; } + /** * Implementation of get method of FlowListEntries * @@ -127,7 +133,8 @@ public class FlowListEntriesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowListEntriesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -150,37 +157,42 @@ public class FlowListEntriesResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); - /* setInfo(responseGenerator.getFlowListEntryResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST));*/ - JsonObject responseJson = responseGenerator.getFlowListEntryResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.FLOWLISTENTRIES).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + /* + * setInfo(responseGenerator.getFlowListEntryResponse( + * requestProcessor.getIpcResponsePacket(), requestBody, + * VtnServiceJsonConsts.LIST)); + */ + JsonObject responseJson = responseGenerator + .getFlowListEntryResponse( + requestProcessor.getIpcResponsePacket(), + requestBody, VtnServiceJsonConsts.LIST); + if (responseJson.get(VtnServiceJsonConsts.FLOWLISTENTRIES) + .isJsonArray()) { + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.FLOWLISTENTRIES).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.FLOWLISTENTRIES, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.FLOWLISTENTRIES, VtnServiceJsonConsts.SEQNUM, IpcRequestPacketEnum.KT_FLOWLIST_ENTRY_GET, - uriParameterList,VtnServiceIpcConsts.GET_FLOW_LIST_ENTRY_RESPONSE); + uriParameterList, + VtnServiceIpcConsts.GET_FLOW_LIST_ENTRY_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -199,18 +211,20 @@ public class FlowListEntriesResource extends AbstractResource { LOG.trace("Completed FlowListEntriesResource#get()"); return status; } + /** * Add URI parameters to list * * @return */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start FlowListEntriesResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(flName); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { - uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX).getAsString()); + uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX) + .getAsString()); } LOG.trace("Completed FlowListEntriesResource#getUriParameters()"); return uriParameters; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntryResource.java index d1d5af78..4ee8efa8 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListEntryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,24 +38,29 @@ public class FlowListEntryResource extends AbstractResource { /** The FlowList name. */ @UNCField("fl_name") private String flName; + /** * @return the fl name */ - public String getFlName() { + public final String getFlName() { return flName; } + /** The seqnum. */ @UNCField("seqnum") private String seqnum; + /** * * @return the seqnum */ - public String getSeqnum() { + public final String getSeqnum() { return seqnum; } + private static final Logger LOG = Logger .getLogger(FlowListEntryResource.class.getName()); + /** * Instantiates a new flow list entry resource. */ @@ -65,6 +70,7 @@ public class FlowListEntryResource extends AbstractResource { setValidator(new FlowListEntryResourceValidator(this)); LOG.trace("Complete FlowListEntryResource#FlowListEntryResource()"); } + /** * Implementation of delete method of FlowListEntry * @@ -72,7 +78,7 @@ public class FlowListEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts FlowListEntryResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -94,7 +100,7 @@ public class FlowListEntryResource extends AbstractResource { status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); LOG.debug("Complete Ipc framework call"); - + } catch (final VtnServiceException e) { getExceptionHandler() .raise(Thread.currentThread().getStackTrace()[1] @@ -121,6 +127,7 @@ public class FlowListEntryResource extends AbstractResource { LOG.trace("Completed FlowListEntryResource#delete()"); return status; } + /** * Implementation of get method of FlowListEntry * @@ -131,7 +138,8 @@ public class FlowListEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowListEntryResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -152,7 +160,7 @@ public class FlowListEntryResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getFlowListEntryResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -184,6 +192,7 @@ public class FlowListEntryResource extends AbstractResource { LOG.trace("Completed FlowListEntryResource#get()"); return status; } + /** * Implementation of put method of FlowListEntry * @@ -194,7 +203,8 @@ public class FlowListEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowListEntryResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -242,6 +252,7 @@ public class FlowListEntryResource extends AbstractResource { LOG.trace("Completed FlowListEntryResource#put()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListResource.java index 00e00423..ad0b569e 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,16 +37,19 @@ public class FlowListResource extends AbstractResource { /** The FlowList Name. */ @UNCField("fl_name") private String flName; + /** * Gets the fl name. * * @return the fl name */ - public String getFlName() { + public final String getFlName() { return flName; } + private static final Logger LOG = Logger.getLogger(FlowListResource.class .getName()); + /** * Instantiates a new flow list resource. */ @@ -56,6 +59,7 @@ public class FlowListResource extends AbstractResource { setValidator(new FlowListResourceValidator(this)); LOG.trace("Completed FlowListResource#FlowListResource()"); } + /** * Implementation of delete method of FlowList * @@ -63,7 +67,7 @@ public class FlowListResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts FlowListRsesource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -111,6 +115,7 @@ public class FlowListResource extends AbstractResource { LOG.trace("Completed FlowListRsesource#delete()"); return status; } + /** * Implementation of get method of Flow List * @@ -121,7 +126,8 @@ public class FlowListResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowListRsesource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -142,7 +148,7 @@ public class FlowListResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getFlowListResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -174,6 +180,7 @@ public class FlowListResource extends AbstractResource { LOG.trace("Completed FlowListRsesource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListsResource.java index 256b1d9e..c3bafe97 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/FlowListsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,6 +38,7 @@ public class FlowListsResource extends AbstractResource { private static final Logger LOG = Logger.getLogger(FlowListsResource.class .getName()); + /** * Instantiates a new flow lists resource. */ @@ -47,6 +48,7 @@ public class FlowListsResource extends AbstractResource { setValidator(new FlowListResourceValidator(this)); LOG.trace("Completed FlowListsResource#FlowListsResource()"); } + /** * Implementation of post method of Flow Lists * @@ -57,7 +59,8 @@ public class FlowListsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowListsRsesource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -82,14 +85,14 @@ public class FlowListsResource extends AbstractResource { } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -106,6 +109,7 @@ public class FlowListsResource extends AbstractResource { LOG.trace("Completed FlowListsRsesource#post()"); return status; } + /** * Implementation of get method of Flow Lists * @@ -116,7 +120,8 @@ public class FlowListsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts FlowListsRsesource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -139,7 +144,7 @@ public class FlowListsResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getFlowListResponse( * requestProcessor.getIpcResponsePacket(), requestBody, @@ -149,16 +154,15 @@ public class FlowListsResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.FLOWLISTS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.FLOWLISTS).getAsJsonArray(); - responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.FLOWLISTS, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.FLOWLISTS, VtnServiceJsonConsts.FLNAME, - IpcRequestPacketEnum.KT_FLOWLIST_GET, - uriParameterList,VtnServiceIpcConsts.GET_FLOW_LIST_RESPONSE); + IpcRequestPacketEnum.KT_FLOWLIST_GET, uriParameterList, + VtnServiceIpcConsts.GET_FLOW_LIST_RESPONSE); } setInfo(responseJson); @@ -167,14 +171,14 @@ public class FlowListsResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -191,12 +195,13 @@ public class FlowListsResource extends AbstractResource { LOG.trace("Complete FlowListsRsesource#get()"); return status; } + /** * Add URI parameters to list * * @return */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start FlowListsRsesource#getUriParameters()"); final List uriParameters = new ArrayList(); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/HostAddressResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/HostAddressResource.java index 40d8ac52..9a67f4b1 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/HostAddressResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/HostAddressResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -47,22 +47,25 @@ public class HostAddressResource extends AbstractResource { private String vbrName; private static final Logger LOG = Logger .getLogger(HostAddressResource.class.getName()); + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the vbr name. * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } + /** * Instantiates a new host address resource. */ @@ -72,6 +75,7 @@ public class HostAddressResource extends AbstractResource { setValidator(new HostAddressResourceValidator(this)); LOG.trace("Complete HostAddressResource#HostAddressResource()"); } + /** * Implementation of Delete method of Host Address API * @@ -79,7 +83,7 @@ public class HostAddressResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start HostAddressResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -128,6 +132,7 @@ public class HostAddressResource extends AbstractResource { LOG.trace("Complete HostAddressResource#delete()"); return status; } + /** * Implementation of Put method of Host Address API * @@ -138,7 +143,8 @@ public class HostAddressResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start HostAddressResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -186,6 +192,7 @@ public class HostAddressResource extends AbstractResource { LOG.trace("Complete HostAddressResource#put()"); return status; } + /** * Implementation of get method of Host Address API * @@ -196,7 +203,8 @@ public class HostAddressResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject queryString) throws VtnServiceException { + public final int get(final JsonObject queryString) + throws VtnServiceException { LOG.trace("Start HostAddressResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -250,6 +258,7 @@ public class HostAddressResource extends AbstractResource { LOG.trace("Complete HostAddressResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/IpRouteResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/IpRouteResource.java index 4190d9db..7279c4b7 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/IpRouteResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/IpRouteResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -51,7 +51,7 @@ public class IpRouteResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -60,7 +60,7 @@ public class IpRouteResource extends AbstractResource { * * @return the vrt name */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } @@ -85,7 +85,8 @@ public class IpRouteResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start IpRouteResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -155,6 +156,6 @@ public class IpRouteResource extends AbstractResource { uriParameters.add(vtnName); uriParameters.add(vrtName); LOG.trace("Completed IpRouteResource#getUriParameters()"); - return uriParameters; + return uriParameters; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/L2DomainResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/L2DomainResource.java index efe2019b..59c547ce 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/L2DomainResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/L2DomainResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -65,14 +65,14 @@ public class L2DomainResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -86,7 +86,8 @@ public class L2DomainResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start L2DomainResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/MacEntryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/MacEntryResource.java index a0387a35..216ceba8 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/MacEntryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/MacEntryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -58,7 +58,7 @@ public class MacEntryResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -67,7 +67,7 @@ public class MacEntryResource extends AbstractResource { * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -91,7 +91,8 @@ public class MacEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start MacEntryResourc#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRouteResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRouteResource.java index 24b4dd36..ed8b61a7 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRouteResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRouteResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -34,7 +34,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.StaticIpRouteResourceVali * The Class StaticIpRouteResource implements delete, get and put methods. */ /* This class handles delete, get and put methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/static_iproutes/{static_iproute_id}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/static_iproutes/{static_iproute_id}") public class StaticIpRouteResource extends AbstractResource { /** The vtn name. */ @@ -53,7 +54,7 @@ public class StaticIpRouteResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -61,7 +62,7 @@ public class StaticIpRouteResource extends AbstractResource { * * @return the vrt name */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } @@ -69,7 +70,7 @@ public class StaticIpRouteResource extends AbstractResource { * * @return the static ip route id */ - public String getStaticIpRouteId() { + public final String getStaticIpRouteId() { return staticIpRouteId; } @@ -93,7 +94,7 @@ public class StaticIpRouteResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start StaticIpRouteResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -152,7 +153,8 @@ public class StaticIpRouteResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start StaticIpRouteResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -173,7 +175,7 @@ public class StaticIpRouteResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getStaticIpRouteResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -206,65 +208,65 @@ public class StaticIpRouteResource extends AbstractResource { return status; } -// /** -// * Implementation of put method of Static Ip Routes -// * -// * @param requestBody -// * the request Json object -// * -// * @return Error code -// * @throws VtnServiceException -// */ -// @Override -// public int put(final JsonObject requestBody) throws VtnServiceException { -// LOG.trace("Start StaticIpRouteResource#put()"); -// ClientSession session = null; -// IpcRequestProcessor requestProcessor = null; -// int status = ClientSession.RESP_FATAL; -// try { -// LOG.debug("Start Ipc framework call"); -// session = getConnPool().getSession( -// UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, -// UncUPLLEnums.UPLL_IPC_SERVICE_NAME, -// UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(), -// getExceptionHandler()); -// LOG.debug("Session created successfully"); -// requestProcessor = new IpcRequestProcessor(session, getSessionID(), -// getConfigID(), getExceptionHandler()); -// requestProcessor.createIpcRequestPacket( -// IpcRequestPacketEnum.KT_VRT_IPROUTE_UPDATE, requestBody, -// getUriParameters()); -// LOG.debug("Request Packet created successfully"); -// status = requestProcessor.processIpcRequest(); -// LOG.debug("Request packet processed with status" + status); -// LOG.debug("Complete Ipc framework call"); -// } catch (final VtnServiceException e) { -// getExceptionHandler() -// .raise(Thread.currentThread().getStackTrace()[1] -// .getClassName() -// + VtnServiceConsts.HYPHEN -// + Thread.currentThread().getStackTrace()[1] -// .getMethodName(), -// UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), -// UncJavaAPIErrorCode.IPC_SERVER_ERROR -// .getErrorMessage(), e); -// throw e; -// } finally { -// if (status == ClientSession.RESP_FATAL) { -// if (null != requestProcessor.getErrorJson()) { -// setInfo(requestProcessor.getErrorJson()); -// } else { -// createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR -// .getValue()); -// } -// status = UncResultCode.UNC_SERVER_ERROR.getValue(); -// } -// getConnPool().destroySession(session); -// } -// -// LOG.trace("Complete StaticIpRouteResource#put()"); -// return status; -// } + // /** + // * Implementation of put method of Static Ip Routes + // * + // * @param requestBody + // * the request Json object + // * + // * @return Error code + // * @throws VtnServiceException + // */ + // @Override + // public int put(final JsonObject requestBody) throws VtnServiceException { + // LOG.trace("Start StaticIpRouteResource#put()"); + // ClientSession session = null; + // IpcRequestProcessor requestProcessor = null; + // int status = ClientSession.RESP_FATAL; + // try { + // LOG.debug("Start Ipc framework call"); + // session = getConnPool().getSession( + // UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + // UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + // UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(), + // getExceptionHandler()); + // LOG.debug("Session created successfully"); + // requestProcessor = new IpcRequestProcessor(session, getSessionID(), + // getConfigID(), getExceptionHandler()); + // requestProcessor.createIpcRequestPacket( + // IpcRequestPacketEnum.KT_VRT_IPROUTE_UPDATE, requestBody, + // getUriParameters()); + // LOG.debug("Request Packet created successfully"); + // status = requestProcessor.processIpcRequest(); + // LOG.debug("Request packet processed with status" + status); + // LOG.debug("Complete Ipc framework call"); + // } catch (final VtnServiceException e) { + // getExceptionHandler() + // .raise(Thread.currentThread().getStackTrace()[1] + // .getClassName() + // + VtnServiceConsts.HYPHEN + // + Thread.currentThread().getStackTrace()[1] + // .getMethodName(), + // UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + // UncJavaAPIErrorCode.IPC_SERVER_ERROR + // .getErrorMessage(), e); + // throw e; + // } finally { + // if (status == ClientSession.RESP_FATAL) { + // if (null != requestProcessor.getErrorJson()) { + // setInfo(requestProcessor.getErrorJson()); + // } else { + // createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + // .getValue()); + // } + // status = UncResultCode.UNC_SERVER_ERROR.getValue(); + // } + // getConnPool().destroySession(session); + // } + // + // LOG.trace("Complete StaticIpRouteResource#put()"); + // return status; + // } /** * Add URI parameters to list diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRoutesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRoutesResource.java index 1292a108..4a1cd420 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRoutesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/StaticIpRoutesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -50,14 +50,14 @@ public class StaticIpRoutesResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vrt name */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } @@ -84,7 +84,8 @@ public class StaticIpRoutesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start StaticIpRoutesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -99,15 +100,15 @@ public class StaticIpRoutesResource extends AbstractResource { LOG.debug("Session created successfully"); requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(), getExceptionHandler()); - /*if (requestBody != null - && requestBody.has(VtnServiceJsonConsts.STATIC_IPROUTE) - && !((JsonObject) requestBody - .get(VtnServiceJsonConsts.STATIC_IPROUTE)) - .has(VtnServiceJsonConsts.NMG_NAME)) { - ((JsonObject) requestBody - .get(VtnServiceJsonConsts.STATIC_IPROUTE)).addProperty( - VtnServiceJsonConsts.NMG_NAME, ""); - }*/ + /* + * if (requestBody != null && + * requestBody.has(VtnServiceJsonConsts.STATIC_IPROUTE) && + * !((JsonObject) requestBody + * .get(VtnServiceJsonConsts.STATIC_IPROUTE)) + * .has(VtnServiceJsonConsts.NMG_NAME)) { ((JsonObject) requestBody + * .get(VtnServiceJsonConsts.STATIC_IPROUTE)).addProperty( + * VtnServiceJsonConsts.NMG_NAME, ""); } + */ final List uriParameterList = getUriParameters(requestBody); requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_VRT_IPROUTE_CREATE, requestBody, @@ -119,7 +120,7 @@ public class StaticIpRoutesResource extends AbstractResource { String ipAddr = null; String nextHopAddr = null; String prefix = null; - //String nmgName = null; + // String nmgName = null; String staticIpRouteId = null; if (requestBody != null && requestBody.has(VtnServiceJsonConsts.STATIC_IPROUTE) @@ -141,14 +142,16 @@ public class StaticIpRoutesResource extends AbstractResource { prefix = ((JsonObject) requestBody .get(VtnServiceJsonConsts.STATIC_IPROUTE)).get( VtnServiceJsonConsts.PREFIX).getAsString(); - /* nmgName = ((JsonObject) requestBody - .get(VtnServiceJsonConsts.STATIC_IPROUTE)).get( - VtnServiceJsonConsts.NMG_NAME).getAsString();*/ + /* + * nmgName = ((JsonObject) requestBody + * .get(VtnServiceJsonConsts.STATIC_IPROUTE)).get( + * VtnServiceJsonConsts.NMG_NAME).getAsString(); + */ staticIpRouteId = ipAddr + VtnServiceJsonConsts.HYPHEN + nextHopAddr + VtnServiceJsonConsts.HYPHEN + prefix; } - JsonObject root = new JsonObject(); - JsonObject staticIpRoute = new JsonObject(); + final JsonObject root = new JsonObject(); + final JsonObject staticIpRoute = new JsonObject(); staticIpRoute.addProperty(VtnServiceJsonConsts.STATICIPROUTEID, staticIpRouteId); root.add(VtnServiceJsonConsts.STATIC_IPROUTE, staticIpRoute); @@ -192,7 +195,8 @@ public class StaticIpRoutesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start StaticIpRoutesResource#get()"); ClientSession session = null; @@ -215,7 +219,7 @@ public class StaticIpRoutesResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getStaticIpRouteResponse( * requestProcessor.getIpcResponsePacket(), requestBody, @@ -227,7 +231,7 @@ public class StaticIpRoutesResource extends AbstractResource { requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.STATIC_IPROUTES) .isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.STATIC_IPROUTES).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, requestProcessor, responseGenerator, responseArray, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntriesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntriesResource.java index 0aeac4b2..4c98236d 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntriesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntriesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,7 +37,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VBridgeFlowFilterEntriesR * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/flowfilters/{ff_type}/flowfilterentries") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/flowfilters/{ff_type}/flowfilterentries") public class VBridgeFlowFilterEntriesResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -66,21 +67,21 @@ public class VBridgeFlowFilterEntriesResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } @@ -94,7 +95,8 @@ public class VBridgeFlowFilterEntriesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterEntriesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -154,7 +156,8 @@ public class VBridgeFlowFilterEntriesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterEntriesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -182,20 +185,27 @@ public class VBridgeFlowFilterEntriesResource extends AbstractResource { * requestProcessor.getIpcResponsePacket(), requestBody, * VtnServiceJsonConsts.LIST)); */ - JsonObject responseJson = responseGenerator.getVBridgeFlowFilterEntryResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.FLOWFILTERENTRIES).isJsonArray()) { - JsonArray responseArray = responseJson.get( - VtnServiceJsonConsts.FLOWFILTERENTRIES).getAsJsonArray(); - responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.FLOWFILTERENTRIES, - VtnServiceJsonConsts.SEQNUM, - IpcRequestPacketEnum.KT_VBR_FLOWFILTER_ENTRY_GET, - uriParameterList,VtnServiceIpcConsts.GET_VBRIDGE_FLOW_FILTER_ENTRY_RESPONSE); - } - setInfo(responseJson); + JsonObject responseJson = responseGenerator + .getVBridgeFlowFilterEntryResponse( + requestProcessor.getIpcResponsePacket(), + requestBody, VtnServiceJsonConsts.LIST); + if (responseJson.get(VtnServiceJsonConsts.FLOWFILTERENTRIES) + .isJsonArray()) { + final JsonArray responseArray = responseJson.get( + VtnServiceJsonConsts.FLOWFILTERENTRIES) + .getAsJsonArray(); + responseJson = getResponseJsonArrayLogical( + requestBody, + requestProcessor, + responseGenerator, + responseArray, + VtnServiceJsonConsts.FLOWFILTERENTRIES, + VtnServiceJsonConsts.SEQNUM, + IpcRequestPacketEnum.KT_VBR_FLOWFILTER_ENTRY_GET, + uriParameterList, + VtnServiceIpcConsts.GET_VBRIDGE_FLOW_FILTER_ENTRY_RESPONSE); + } + setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntryResource.java index f17dbc97..652775bd 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterEntryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -39,7 +39,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VBridgeFlowFilterEntryRes * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") public class VBridgeFlowFilterEntryResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -71,28 +72,28 @@ public class VBridgeFlowFilterEntryResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } /** * @return the seqNum */ - public String getSeqnum() { + public final String getSeqnum() { return seqnum; } @@ -103,7 +104,7 @@ public class VBridgeFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterEntryResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -122,7 +123,7 @@ public class VBridgeFlowFilterEntryResource extends AbstractResource { IpcRequestPacketEnum.KT_VBR_FLOWFILTER_ENTRY_DELETE, getNullJsonObject(), getUriParameters()); LOG.debug("Request packet created successfully"); - status= requestProcessor.processIpcRequest(); + status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { @@ -162,7 +163,8 @@ public class VBridgeFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterEntryResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -221,7 +223,8 @@ public class VBridgeFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterEntryResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterResource.java index f5414a4a..f9d6eda6 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFilterResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -34,7 +34,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.FlowFilterResourceValidat * The Class VBridgeFlowFilterResource implements delete and get methods. * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/flowfilters/{ff_type}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/flowfilters/{ff_type}") public class VBridgeFlowFilterResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -65,21 +66,21 @@ public class VBridgeFlowFilterResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } @@ -91,7 +92,7 @@ public class VBridgeFlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -110,10 +111,10 @@ public class VBridgeFlowFilterResource extends AbstractResource { IpcRequestPacketEnum.KT_VBR_FLOWFILTER_DELETE, getNullJsonObject(), getUriParameters()); LOG.debug("Request packet created successfully"); - status= requestProcessor.processIpcRequest(); + status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); LOG.debug("Complete Ipc framework call"); - }catch (final VtnServiceException e) { + } catch (final VtnServiceException e) { getExceptionHandler() .raise(Thread.currentThread().getStackTrace()[1] .getClassName() @@ -150,7 +151,8 @@ public class VBridgeFlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFiltersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFiltersResource.java index 4944acec..d9c82c3c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFiltersResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeFlowFiltersResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -54,19 +54,21 @@ public class VBridgeFlowFiltersResource extends AbstractResource { setValidator(new FlowFilterResourceValidator(this)); LOG.trace("Complete VBridgeFlowFiltersResource#VBridgeFlowFiltersResources()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } + /** * Implementation of Post method of VBridgeFlowFilter API * @@ -77,7 +79,8 @@ public class VBridgeFlowFiltersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFiltersResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -132,7 +135,7 @@ public class VBridgeFlowFiltersResource extends AbstractResource { * * @return parameter list */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start VBridgeFlowFiltersResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntriesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntriesResource.java index 78c70e99..5619533e 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntriesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntriesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,7 +37,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VBridgeFlowFilterEntriesR * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries") public class VBridgeInterfaceFlowFilterEntriesResource extends AbstractResource { /** The VTN name. */ @UNCField("vtn_name") @@ -70,28 +71,28 @@ public class VBridgeInterfaceFlowFilterEntriesResource extends AbstractResource /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } /** * @return the ifName */ - public String getIfName() { + public final String getIfName() { return ifName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } @@ -105,7 +106,8 @@ public class VBridgeInterfaceFlowFilterEntriesResource extends AbstractResource * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFilterEntriesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -165,7 +167,8 @@ public class VBridgeInterfaceFlowFilterEntriesResource extends AbstractResource * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFilterEntries#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -201,10 +204,14 @@ public class VBridgeInterfaceFlowFilterEntriesResource extends AbstractResource requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.FLOWFILTERENTRIES) .isJsonArray()) { - JsonArray responseArray = responseJson.get( - VtnServiceJsonConsts.FLOWFILTERENTRIES).getAsJsonArray(); - responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, responseArray, + final JsonArray responseArray = responseJson.get( + VtnServiceJsonConsts.FLOWFILTERENTRIES) + .getAsJsonArray(); + responseJson = getResponseJsonArrayLogical( + requestBody, + requestProcessor, + responseGenerator, + responseArray, VtnServiceJsonConsts.FLOWFILTERENTRIES, VtnServiceJsonConsts.SEQNUM, IpcRequestPacketEnum.KT_VBRIF_FLOWFILTER_ENTRY_GET, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntryResource.java index 2c7fb64f..b0f80618 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterEntryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,7 +37,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VBridgeFlowFilterEntryRes * get methods. * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") public class VBridgeInterfaceFlowFilterEntryResource extends AbstractResource { /** The VTN name. */ @@ -58,8 +59,7 @@ public class VBridgeInterfaceFlowFilterEntryResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger - .getLogger(VBridgeInterfaceFlowFilterEntryResource.class - .getName()); + .getLogger(VBridgeInterfaceFlowFilterEntryResource.class.getName()); /** * Instantiates a new v bridge interface flow filter entry resource. @@ -74,35 +74,35 @@ public class VBridgeInterfaceFlowFilterEntryResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } /** * @return the ifName */ - public String getIfName() { + public final String getIfName() { return ifName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } /** * @return the seqnum */ - public String getSeqnum() { + public final String getSeqnum() { return seqnum; } @@ -116,7 +116,8 @@ public class VBridgeInterfaceFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFilterEntryResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -173,7 +174,7 @@ public class VBridgeInterfaceFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFilterEntryResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -232,7 +233,8 @@ public class VBridgeInterfaceFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFilterEntryResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterResource.java index f3a3a728..86c19cf9 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFilterResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,7 +36,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.FlowFilterResourceValidat * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters/{ff_type}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters/{ff_type}") public class VBridgeInterfaceFlowFilterResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -68,28 +69,28 @@ public class VBridgeInterfaceFlowFilterResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vbrName */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } /** * @return the ifName */ - public String getIfName() { + public final String getIfName() { return ifName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } @@ -101,7 +102,7 @@ public class VBridgeInterfaceFlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFilterResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -160,7 +161,8 @@ public class VBridgeInterfaceFlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFilterResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -181,7 +183,7 @@ public class VBridgeInterfaceFlowFilterResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVBridgeInterfaceFlowFilterResource( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -219,7 +221,7 @@ public class VBridgeInterfaceFlowFilterResource extends AbstractResource { * * @return */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start VBridgeInterfaceFlowFilterResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFiltersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFiltersResource.java index b927e850..32fadaa9 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFiltersResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceFlowFiltersResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,7 +31,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.FlowFilterResourceValidat * The Class VBridgeInterfaceFlowFiltersResource implements post method. */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/flowfilters") public class VBridgeInterfaceFlowFiltersResource extends AbstractResource { /** The VTN name. */ @UNCField("vtn_name") @@ -45,8 +46,7 @@ public class VBridgeInterfaceFlowFiltersResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger - .getLogger(VBridgeInterfaceFlowFiltersResource.class - .getName()); + .getLogger(VBridgeInterfaceFlowFiltersResource.class.getName()); /** * Instantiates a new v bridge interface flow filters resource. @@ -63,7 +63,7 @@ public class VBridgeInterfaceFlowFiltersResource extends AbstractResource { * * @return the VTN name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -72,7 +72,7 @@ public class VBridgeInterfaceFlowFiltersResource extends AbstractResource { * * @return the VBR name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -81,7 +81,7 @@ public class VBridgeInterfaceFlowFiltersResource extends AbstractResource { * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } @@ -95,7 +95,8 @@ public class VBridgeInterfaceFlowFiltersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceFlowFiltersResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -149,7 +150,7 @@ public class VBridgeInterfaceFlowFiltersResource extends AbstractResource { * * @return */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start VBridgeInterfaceFlowFiltersResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/PortMapResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfacePortMapResource.java similarity index 90% rename from coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/PortMapResource.java rename to coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfacePortMapResource.java index 4cc2c4e8..e4fd608c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/PortMapResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfacePortMapResource.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -35,8 +35,9 @@ import org.opendaylight.vtn.javaapi.validation.logical.PortMapResourceValidator; * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/portmap") -public class PortMapResource extends AbstractResource { +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}/portmap") +public class VBridgeInterfacePortMapResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") private String vtnName; @@ -48,15 +49,15 @@ public class PortMapResource extends AbstractResource { private String ifName; /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(PortMapResource.class - .getName()); + private static final Logger LOG = Logger + .getLogger(VBridgeInterfacePortMapResource.class.getName()); /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -65,7 +66,7 @@ public class PortMapResource extends AbstractResource { * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -74,14 +75,14 @@ public class PortMapResource extends AbstractResource { * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } /** * Instantiates a new port map resource. */ - public PortMapResource() { + public VBridgeInterfacePortMapResource() { super(); LOG.trace("Start PortMapResource#PortMapResource()"); setValidator(new PortMapResourceValidator(this)); @@ -95,7 +96,7 @@ public class PortMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start PortMapResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -115,7 +116,7 @@ public class PortMapResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status" + status); + LOG.debug("Request packet processed with status" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() @@ -154,7 +155,8 @@ public class PortMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start PortMapResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -175,10 +177,11 @@ public class PortMapResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getPortMapResponse( requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.SHOW,VtnServiceJsonConsts.VBRIDGE_INTERFACE_PORTMAP)); + VtnServiceJsonConsts.SHOW, + VtnServiceJsonConsts.VBRIDGE_INTERFACE_PORTMAP)); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { @@ -218,7 +221,8 @@ public class PortMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start PortMapResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceResource.java index a4a1f874..1396779c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfaceResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,7 +37,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.InterfaceResourceValidato * The Class VBridgeInterfaceResource. */ /* This class handles delete, put and get methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/interfaces/{if_name}") public class VBridgeInterfaceResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -54,7 +55,7 @@ public class VBridgeInterfaceResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -63,7 +64,7 @@ public class VBridgeInterfaceResource extends AbstractResource { * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -72,7 +73,7 @@ public class VBridgeInterfaceResource extends AbstractResource { * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } @@ -97,7 +98,7 @@ public class VBridgeInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VBridgeInterfaceResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -156,7 +157,8 @@ public class VBridgeInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -176,7 +178,8 @@ public class VBridgeInterfaceResource extends AbstractResource { getUriParameters()); LOG.debug("Request Packet created successfully for 1st call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -189,7 +192,7 @@ public class VBridgeInterfaceResource extends AbstractResource { } JsonObject neighbor = null; JsonObject vbrInterfaceJson = null; - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); String dataType = VtnServiceJsonConsts.STATE; if (requestBody.has(VtnServiceJsonConsts.TARGETDB)) { dataType = requestBody.get(VtnServiceJsonConsts.TARGETDB) @@ -199,7 +202,8 @@ public class VBridgeInterfaceResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); LOG.debug("Response object created successfully for 1st request"); - if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) && !(vbrInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { + if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) + && !(vbrInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { requestProcessor.setServiceInfo( UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); @@ -214,7 +218,8 @@ public class VBridgeInterfaceResource extends AbstractResource { .ordinal()))); LOG.debug("Request packet created successfully for 2nd call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 2nd call with status" + status); + LOG.debug("Request packet processed for 2nd call with status" + + status); neighbor = responseGenerator.getNeighborResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); @@ -263,7 +268,8 @@ public class VBridgeInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfaceResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -317,7 +323,7 @@ public class VBridgeInterfaceResource extends AbstractResource { * * @return parameter list */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start VBridgeInterfaceResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfacesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfacesResource.java index 90070401..c8fbc4f9 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfacesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeInterfacesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -59,7 +59,7 @@ public class VBridgeInterfacesResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -68,7 +68,7 @@ public class VBridgeInterfacesResource extends AbstractResource { * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -96,7 +96,8 @@ public class VBridgeInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfacesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -156,7 +157,8 @@ public class VBridgeInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeInterfacesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -177,7 +179,8 @@ public class VBridgeInterfacesResource extends AbstractResource { uriParameterList); LOG.debug("Request Packet created successfully for 1st call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -191,7 +194,7 @@ public class VBridgeInterfacesResource extends AbstractResource { IpcDataUnit[] responsePacket = null; JsonObject neighbor = null; JsonObject vbrInterfaceJson = null; - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); String dataType = VtnServiceJsonConsts.STATE; if (requestBody.has(VtnServiceJsonConsts.TARGETDB)) { dataType = requestBody.get(VtnServiceJsonConsts.TARGETDB) @@ -202,25 +205,25 @@ public class VBridgeInterfacesResource extends AbstractResource { opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); } JsonObject interfaceJson = null; - JsonArray interfaceArray = new JsonArray(); + final JsonArray interfaceArray = new JsonArray(); responsePacket = requestProcessor.getIpcResponsePacket(); vbrInterfaceJson = responseGenerator.getVBridgeInterfaceResponse( responsePacket, requestBody, VtnServiceJsonConsts.LIST); - if (vbrInterfaceJson.get(VtnServiceJsonConsts.INTERFACES).isJsonArray()) { - JsonArray responseArray = vbrInterfaceJson.get( - VtnServiceJsonConsts.INTERFACES) - .getAsJsonArray(); + if (vbrInterfaceJson.get(VtnServiceJsonConsts.INTERFACES) + .isJsonArray()) { + final JsonArray responseArray = vbrInterfaceJson.get( + VtnServiceJsonConsts.INTERFACES).getAsJsonArray(); vbrInterfaceJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.INTERFACES, - VtnServiceJsonConsts.IFNAME, - IpcRequestPacketEnum.KT_VBR_IF_GET, - uriParameterList,VtnServiceIpcConsts.GET_VBRIDGE_INTERFACE_RESPONSE); + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.INTERFACES, + VtnServiceJsonConsts.IFNAME, + IpcRequestPacketEnum.KT_VBR_IF_GET, uriParameterList, + VtnServiceIpcConsts.GET_VBRIDGE_INTERFACE_RESPONSE); } LOG.debug("Response object created successfully for 1st request"); if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) && opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { - Iterator interfaceIterator = vbrInterfaceJson + final Iterator interfaceIterator = vbrInterfaceJson .get(VtnServiceJsonConsts.INTERFACES).getAsJsonArray() .iterator(); requestProcessor.setServiceInfo( @@ -228,7 +231,7 @@ public class VBridgeInterfacesResource extends AbstractResource { UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); while (interfaceIterator.hasNext()) { interfaceJson = interfaceIterator.next().getAsJsonObject(); - String ifName = interfaceJson.get( + final String ifName = interfaceJson.get( VtnServiceJsonConsts.IFNAME).getAsString(); requestBody.addProperty(VtnServiceJsonConsts.INDEX, ifName); requestProcessor.createIpcRequestPacket( @@ -248,7 +251,8 @@ public class VBridgeInterfacesResource extends AbstractResource { .ordinal())); LOG.debug("Request packet created successfully for 2nd call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 2nd call with status" + status); + LOG.debug("Request packet processed for 2nd call with status" + + status); responsePacket = requestProcessor.getIpcResponsePacket(); neighbor = responseGenerator.getNeighborResponse( responsePacket, requestBody, @@ -295,7 +299,7 @@ public class VBridgeInterfacesResource extends AbstractResource { * * @return parameter list */ - private List getUriParameters(final JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start VBridgeInterfacesResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeResource.java index 582bca6f..d66e9920 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgeResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -63,7 +63,7 @@ public class VBridgeResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -72,7 +72,7 @@ public class VBridgeResource extends AbstractResource { * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -83,7 +83,7 @@ public class VBridgeResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VBridgeResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -142,7 +142,8 @@ public class VBridgeResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -201,7 +202,8 @@ public class VBridgeResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -222,7 +224,7 @@ public class VBridgeResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVBridgeResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgesResource.java index 5ebaf55d..64123cc9 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBridgesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -62,7 +62,7 @@ public class VBridgesResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -76,7 +76,8 @@ public class VBridgesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -100,14 +101,14 @@ public class VBridgesResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -135,7 +136,8 @@ public class VBridgesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -158,7 +160,7 @@ public class VBridgesResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getVBridgeResponse( * requestProcessor.getIpcResponsePacket(), requestBody, @@ -168,29 +170,29 @@ public class VBridgesResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.VBRIDGES).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VBRIDGES).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.VBRIDGES, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.VBRIDGES, VtnServiceJsonConsts.VBRIDGENAME, - IpcRequestPacketEnum.KT_VBRIDGE_GET, - uriParameterList,VtnServiceIpcConsts.GET_VBRIDGE_RESPONSE); + IpcRequestPacketEnum.KT_VBRIDGE_GET, uriParameterList, + VtnServiceIpcConsts.GET_VBRIDGE_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -213,7 +215,7 @@ public class VBridgesResource extends AbstractResource { * * @return parameter list */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start VBridgesResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfaceResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfaceResource.java index 57cd9e12..563e4d47 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfaceResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfaceResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,7 +36,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.InterfaceResourceValidato * The Class VBypassInterfaceResource. */ /* This class handles put, delete and get methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbypasses/{vbypass_name}/interfaces/{if_name}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbypasses/{vbypass_name}/interfaces/{if_name}") public class VBypassInterfaceResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -47,32 +48,37 @@ public class VBypassInterfaceResource extends AbstractResource { /** The interface name. */ @UNCField("if_name") private String ifName; + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the vbypass name. * * @return the vbypass name */ - public String getVbypassName() { + public final String getVbypassName() { return vbypassName; } + /** * Gets the if name. * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } + private static final Logger LOG = Logger .getLogger(VBypassInterfaceResource.class.getName()); + /** * Instantiates a new VBypass interface resource. */ @@ -82,6 +88,7 @@ public class VBypassInterfaceResource extends AbstractResource { setValidator(new InterfaceResourceValidator(this)); LOG.trace("Completed VBypassInterfaceResource#VBypassInterfacesResource()"); } + /** * Implementation of Put method of VBypass Interface API * @@ -92,7 +99,8 @@ public class VBypassInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VBypassInterfaceResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -115,14 +123,14 @@ public class VBypassInterfaceResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -139,6 +147,7 @@ public class VBypassInterfaceResource extends AbstractResource { LOG.trace("Completed VBypassInterfaceResource#put()"); return status; } + /** * Implementation of Delete method of VBypass Interface API * @@ -146,7 +155,7 @@ public class VBypassInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("starts VBypassInterfaceResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -169,14 +178,14 @@ public class VBypassInterfaceResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -193,6 +202,7 @@ public class VBypassInterfaceResource extends AbstractResource { LOG.trace("Completed VBypassInterfaceResource#delete()"); return status; } + /** * Implementation of get method of VBypass Interface API * @@ -203,7 +213,8 @@ public class VBypassInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VBypassInterfaceResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -223,7 +234,8 @@ public class VBypassInterfaceResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully for 1st request"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -231,21 +243,24 @@ public class VBypassInterfaceResource extends AbstractResource { + VtnServiceConsts.HYPHEN + Thread.currentThread().getStackTrace()[1] .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); } JsonObject neighbor = null; JsonObject vbypassInterfaceJson = null; - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); String dataType = null; if (requestBody.has(VtnServiceJsonConsts.TARGETDB)) { dataType = requestBody.get(VtnServiceJsonConsts.TARGETDB) .getAsString(); } - vbypassInterfaceJson = responseGenerator.getVBypassInterfaceResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.SHOW); - if (VtnServiceJsonConsts.STATE.equalsIgnoreCase(dataType) && !(vbypassInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { + vbypassInterfaceJson = responseGenerator + .getVBypassInterfaceResponse( + requestProcessor.getIpcResponsePacket(), + requestBody, VtnServiceJsonConsts.SHOW); + if (VtnServiceJsonConsts.STATE.equalsIgnoreCase(dataType) + && !(vbypassInterfaceJson + .get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { requestProcessor.setServiceInfo( UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); @@ -253,34 +268,35 @@ public class VBypassInterfaceResource extends AbstractResource { IpcRequestPacketEnum.KT_VUNK_IF_GET, requestBody, getUriParameters()); requestProcessor - .getRequestPacket() - .setOption2( - IpcDataUnitWrapper - .setIpcUint32Value(UncOption2Enum.UNC_OPT2_NEIGHBOR - .ordinal())); + .getRequestPacket() + .setOption2( + IpcDataUnitWrapper + .setIpcUint32Value(UncOption2Enum.UNC_OPT2_NEIGHBOR + .ordinal())); LOG.debug("Request packet created successfully for 2nd request"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet for 2nd request processed with status" + status); + LOG.debug("Request packet for 2nd request processed with status" + + status); neighbor = responseGenerator.getNeighborResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); vbypassInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) - .getAsJsonObject() - .add(VtnServiceJsonConsts.NEIGHBOR, neighbor); + .getAsJsonObject() + .add(VtnServiceJsonConsts.NEIGHBOR, neighbor); } setInfo(vbypassInterfaceJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -297,6 +313,7 @@ public class VBypassInterfaceResource extends AbstractResource { LOG.trace("Completed VBypassInterfaceResource#get()"); return status; } + /** * Add URI parameters to list * @@ -304,7 +321,7 @@ public class VBypassInterfaceResource extends AbstractResource { */ private List getUriParameters() { LOG.trace("Start VBypassInterfaceResource#getUriParameters()"); - List uriParameters = new ArrayList(); + final List uriParameters = new ArrayList(); uriParameters.add(vtnName); uriParameters.add(vbypassName); uriParameters.add(ifName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfacesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfacesResource.java index f9b081fb..e810d966 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfacesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassInterfacesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -48,24 +48,28 @@ public class VBypassInterfacesResource extends AbstractResource { /** The vbypass name. */ @UNCField("vbypass_name") private String vbypassName; + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the vbypass name. * * @return the vbypass name */ - public String getVbypassName() { + public final String getVbypassName() { return vbypassName; } + private static final Logger LOG = Logger .getLogger(VBypassInterfacesResource.class.getName()); + /** * Instantiates a new vBypass interfaces resource. */ @@ -75,6 +79,7 @@ public class VBypassInterfacesResource extends AbstractResource { setValidator(new InterfaceResourceValidator(this)); LOG.trace("Completed VBypassInterfacesResource#VBypassInterfacesResource()"); } + /** * Implementation of Post method of VBypass Interface API * @@ -85,7 +90,8 @@ public class VBypassInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBypassInterfacesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -108,14 +114,14 @@ public class VBypassInterfacesResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -132,6 +138,7 @@ public class VBypassInterfacesResource extends AbstractResource { LOG.trace("Completed VBypassInterfacesResource#post()"); return status; } + /** * Implementation of Get method of VBypass Interface API * @@ -142,7 +149,8 @@ public class VBypassInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VBypassInterfaceResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -164,7 +172,8 @@ public class VBypassInterfacesResource extends AbstractResource { uriParameterList); LOG.debug("Request packet created successfully for 1st request"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet for 1st request processed with status" + status); + LOG.debug("Request packet for 1st request processed with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -172,12 +181,12 @@ public class VBypassInterfacesResource extends AbstractResource { + VtnServiceConsts.HYPHEN + Thread.currentThread().getStackTrace()[1] .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); } JsonObject neighbor = null; JsonObject vbypassInterfacesJson = null; - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); String dataType = null; if (requestBody.has(VtnServiceJsonConsts.TARGETDB)) { dataType = requestBody.get(VtnServiceJsonConsts.TARGETDB) @@ -188,27 +197,32 @@ public class VBypassInterfacesResource extends AbstractResource { opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); } JsonObject interfacesJson = null; - JsonArray interfaceArray = new JsonArray(); - /*vbypassInterfacesJson = responseGenerator.getVBypassInterfaceResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST);*/ - vbypassInterfacesJson = responseGenerator.getVBypassInterfaceResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST); - if (vbypassInterfacesJson.get(VtnServiceJsonConsts.INTERFACES).isJsonArray()) { - JsonArray responseArray = vbypassInterfacesJson.get( + final JsonArray interfaceArray = new JsonArray(); + /* + * vbypassInterfacesJson = + * responseGenerator.getVBypassInterfaceResponse( + * requestProcessor.getIpcResponsePacket(), requestBody, + * VtnServiceJsonConsts.LIST); + */ + vbypassInterfacesJson = responseGenerator + .getVBypassInterfaceResponse( + requestProcessor.getIpcResponsePacket(), + requestBody, VtnServiceJsonConsts.LIST); + if (vbypassInterfacesJson.get(VtnServiceJsonConsts.INTERFACES) + .isJsonArray()) { + final JsonArray responseArray = vbypassInterfacesJson.get( VtnServiceJsonConsts.INTERFACES).getAsJsonArray(); - vbypassInterfacesJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, + vbypassInterfacesJson = getResponseJsonArrayLogical( + requestBody, requestProcessor, responseGenerator, responseArray, VtnServiceJsonConsts.INTERFACES, VtnServiceJsonConsts.IFNAME, - IpcRequestPacketEnum.KT_VUNK_IF_GET, - uriParameterList,VtnServiceIpcConsts.GET_VBYPASS_INTERFACE_RESPONSE); + IpcRequestPacketEnum.KT_VUNK_IF_GET, uriParameterList, + VtnServiceIpcConsts.GET_VBYPASS_INTERFACE_RESPONSE); } if (VtnServiceJsonConsts.STATE.equalsIgnoreCase(dataType) && opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { - Iterator interfaceIterator = vbypassInterfacesJson + final Iterator interfaceIterator = vbypassInterfacesJson .get(VtnServiceJsonConsts.INTERFACES).getAsJsonArray() .iterator(); requestProcessor.setServiceInfo( @@ -216,27 +230,28 @@ public class VBypassInterfacesResource extends AbstractResource { UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); while (interfaceIterator.hasNext()) { interfacesJson = interfaceIterator.next().getAsJsonObject(); - String ifName = interfacesJson.get( + final String ifName = interfacesJson.get( VtnServiceJsonConsts.IFNAME).getAsString(); requestBody.addProperty(VtnServiceJsonConsts.INDEX, ifName); requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_VUNK_IF_GET, requestBody, getUriParameters(requestBody)); requestProcessor - .getRequestPacket() - .setOption2( - IpcDataUnitWrapper - .setIpcUint32Value(UncOption2Enum.UNC_OPT2_NEIGHBOR - .ordinal())); + .getRequestPacket() + .setOption2( + IpcDataUnitWrapper + .setIpcUint32Value(UncOption2Enum.UNC_OPT2_NEIGHBOR + .ordinal())); requestProcessor - .getRequestPacket() - .setOperation( - IpcDataUnitWrapper - .setIpcUint32Value(UncOperationEnum.UNC_OP_READ - .ordinal())); + .getRequestPacket() + .setOperation( + IpcDataUnitWrapper + .setIpcUint32Value(UncOperationEnum.UNC_OP_READ + .ordinal())); LOG.debug("Request packet created successfully for 2nd request"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet for 2nd request processed with status" + status); + LOG.debug("Request packet for 2nd request processed with status" + + status); neighbor = responseGenerator.getNeighborResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); @@ -252,14 +267,14 @@ public class VBypassInterfacesResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -276,14 +291,15 @@ public class VBypassInterfacesResource extends AbstractResource { LOG.trace("Completed VBypassInterfacesResource#get()"); return status; } + /** * Add URI parameters to list * * @return parameter list */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start VBypassInterfacesResource#getUriParameters()"); - List uriParameters = new ArrayList(); + final List uriParameters = new ArrayList(); uriParameters.add(vtnName); uriParameters.add(vbypassName); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassResource.java index 46b3c7f6..ff6012f6 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,12 +37,14 @@ public class VBypassResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") private String vtnName; + /** * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** The vbypass name. */ @UNCField("vbypass_name") private String vbypassName; @@ -50,11 +52,13 @@ public class VBypassResource extends AbstractResource { /** * @return the VBypass name */ - public String getVbypassName() { + public final String getVbypassName() { return vbypassName; } + private static final Logger LOG = Logger.getLogger(VBypassResource.class .getName()); + /** * Instantiates a new VBypass resource. */ @@ -64,6 +68,7 @@ public class VBypassResource extends AbstractResource { setValidator(new VBypassResourceValidator(this)); LOG.trace("Completed VBypassResource#VBypassResource()"); } + /** * Implementation of put method of VBypass * @@ -74,7 +79,8 @@ public class VBypassResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VBypassResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -122,6 +128,7 @@ public class VBypassResource extends AbstractResource { LOG.trace("Completed VBypassResource#put()"); return status; } + /** * Implementation of delete method of VBypass * @@ -129,7 +136,7 @@ public class VBypassResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts VBypassResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -177,6 +184,7 @@ public class VBypassResource extends AbstractResource { LOG.trace("Completed VBypassResource#delete()"); return status; } + /** * Implementation of get method of VBypass * @@ -187,7 +195,8 @@ public class VBypassResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VBypassResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -208,7 +217,7 @@ public class VBypassResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVBypassResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -240,6 +249,7 @@ public class VBypassResource extends AbstractResource { LOG.trace("Completed VBypassResource#get()"); return status; } + /** * Add URI parameters to list * @@ -247,7 +257,7 @@ public class VBypassResource extends AbstractResource { */ private List getUriParameters() { LOG.trace("Start VBypassResource#getUriParameters()"); - List uriParameters = new ArrayList(); + final List uriParameters = new ArrayList(); uriParameters.add(vtnName); uriParameters.add(vbypassName); LOG.trace("Completed VBypassResource#getUriParameters()"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassesResource.java index f259cfba..d5dd5e62 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VBypassesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -39,16 +39,19 @@ public class VBypassesResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") private String vtnName; + /** * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + private static final Logger LOG = Logger.getLogger(VBypassesResource.class .getName()); + /** - * Instantiates a new VBypasse resource. + * Instantiates a new VBypasse resource. */ public VBypassesResource() { super(); @@ -56,6 +59,7 @@ public class VBypassesResource extends AbstractResource { setValidator(new VBypassResourceValidator(this)); LOG.trace("Completed VBypassesResource#VBypassesResource()"); } + /** * Implementation of post method of VBypass * @@ -66,7 +70,8 @@ public class VBypassesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VBypassesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -90,14 +95,14 @@ public class VBypassesResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -115,6 +120,7 @@ public class VBypassesResource extends AbstractResource { return status; } + /** * Implementation of get method of VBypass * @@ -125,7 +131,8 @@ public class VBypassesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("starts VBypassesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -148,37 +155,39 @@ public class VBypassesResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); - /*setInfo(responseGenerator.getVBypassResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST));*/ + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + /* + * setInfo(responseGenerator.getVBypassResponse( + * requestProcessor.getIpcResponsePacket(), requestBody, + * VtnServiceJsonConsts.LIST)); + */ JsonObject responseJson = responseGenerator.getVBypassResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.VBYPASSES).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VBYPASSES).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.VBYPASSES, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.VBYPASSES, VtnServiceJsonConsts.VBYPASS_NAME, - IpcRequestPacketEnum.KT_VUNKNOWN_GET, - uriParameterList,VtnServiceIpcConsts.GET_VBYPASS_RESPONSE); + IpcRequestPacketEnum.KT_VUNKNOWN_GET, uriParameterList, + VtnServiceIpcConsts.GET_VBYPASS_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -195,14 +204,15 @@ public class VBypassesResource extends AbstractResource { LOG.trace("Completed VBypassesResource#get()"); return status; } + /** * Add URI parameters to list * * @return parameter list */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start VBypassesResource#getUriParameters()"); - List uriParameters = new ArrayList(); + final List uriParameters = new ArrayList(); uriParameters.add(vtnName); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinkResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinkResource.java index 65e9ceca..9ff08140 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinkResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinkResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -51,7 +51,7 @@ public class VLinkResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -60,7 +60,7 @@ public class VLinkResource extends AbstractResource { * * @return the vlk name */ - public String getVlkName() { + public final String getVlkName() { return vlkName; } @@ -89,7 +89,8 @@ public class VLinkResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VLinkResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -145,7 +146,7 @@ public class VLinkResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VLinkResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -204,7 +205,8 @@ public class VLinkResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VLinkResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -222,14 +224,14 @@ public class VLinkResource extends AbstractResource { requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_VLINK_GET, requestBody, getUriParameters()); - IpcStruct valStruct = new IpcStruct( + final IpcStruct valStruct = new IpcStruct( UncStructEnum.ValVlink.getValue()); requestProcessor.getRequestPacket().setValStruct(valStruct); if (requestBody.get(VtnServiceJsonConsts.TARGETDB).getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.STATE)) { LOG.debug("Add ValVlinkSt in Request Packet"); - IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; - IpcStruct valStructSt = new IpcStruct( + final IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; + final IpcStruct valStructSt = new IpcStruct( UncStructEnum.ValVlinkSt.getValue()); extraDataUnits[0] = valStructSt; requestProcessor.getRequestPacket().setExtraDataUnits( @@ -238,7 +240,7 @@ public class VLinkResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVLinkResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -276,7 +278,7 @@ public class VLinkResource extends AbstractResource { * * @return parameter list */ - private List getUriParameters() { + private List getUriParameters() { LOG.trace("Start VLinkResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinksResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinksResource.java index 3a31cccc..46074d06 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinksResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VLinksResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -55,7 +55,7 @@ public class VLinksResource extends AbstractResource { * * @return the VTN name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -81,7 +81,8 @@ public class VLinksResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VLinksResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -140,7 +141,8 @@ public class VLinksResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VLinksResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -163,7 +165,7 @@ public class VLinksResource extends AbstractResource { status = requestProcessor.processIpcRequest(); final List uriParameterList = getUriParameters(requestBody); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getVLinkResponse( * requestProcessor.getIpcResponsePacket(), requestBody, @@ -173,14 +175,14 @@ public class VLinksResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.VLINKS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VLINKS).getAsJsonArray(); responseJson = getResponseJsonArrayLink(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.VLINKS, - VtnServiceJsonConsts.VLKNAME, - IpcRequestPacketEnum.KT_VLINK_GET, - uriParameterList,VtnServiceIpcConsts.GET_VLINKS_RESPONSE); + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.VLINKS, + VtnServiceJsonConsts.VLKNAME, + IpcRequestPacketEnum.KT_VLINK_GET, uriParameterList, + VtnServiceIpcConsts.GET_VLINKS_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); @@ -213,8 +215,8 @@ public class VLinksResource extends AbstractResource { } private void getModifiedRequestPacket(final JsonObject requestBody, - IpcRequestProcessor requestProcessor) { - IpcStruct valStruct = new IpcStruct( + final IpcRequestProcessor requestProcessor) { + final IpcStruct valStruct = new IpcStruct( UncStructEnum.ValVlink.getValue()); requestProcessor.getRequestPacket().setValStruct(valStruct); if (requestBody.has(VtnServiceJsonConsts.VNODE1NAME) @@ -230,10 +232,9 @@ public class VLinksResource extends AbstractResource { .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); valStruct.set(VtnServiceJsonConsts.VNODE1NAME, - IpcDataUnitWrapper - .setIpcUint8ArrayValue(requestBody.get( - VtnServiceJsonConsts.VNODE1NAME) - .getAsString())); + IpcDataUnitWrapper.setIpcUint8ArrayValue(requestBody + .get(VtnServiceJsonConsts.VNODE1NAME) + .getAsString())); } if (requestBody.has(VtnServiceJsonConsts.VNODE2NAME)) { valStruct @@ -244,10 +245,9 @@ public class VLinksResource extends AbstractResource { .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID .ordinal())); valStruct.set(VtnServiceJsonConsts.VNODE2NAME, - IpcDataUnitWrapper - .setIpcUint8ArrayValue(requestBody.get( - VtnServiceJsonConsts.VNODE2NAME) - .getAsString())); + IpcDataUnitWrapper.setIpcUint8ArrayValue(requestBody + .get(VtnServiceJsonConsts.VNODE2NAME) + .getAsString())); } } if (requestBody.get(VtnServiceJsonConsts.TARGETDB).getAsString() @@ -255,8 +255,8 @@ public class VLinksResource extends AbstractResource { && !requestBody.get(VtnServiceJsonConsts.OP).getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.COUNT)) { LOG.debug("Add ValVlinkSt to Request Packet"); - IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; - IpcStruct valStructSt = new IpcStruct( + final IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; + final IpcStruct valStructSt = new IpcStruct( UncStructEnum.ValVlinkSt.getValue()); extraDataUnits[0] = valStructSt; requestProcessor.getRequestPacket().setExtraDataUnits( @@ -282,23 +282,23 @@ public class VLinksResource extends AbstractResource { LOG.trace("Completed VLinksResource#getUriParameters()"); return uriParameters; } - - public JsonObject getResponseJsonArrayLink(final JsonObject requestBody, - IpcRequestProcessor requestProcessor, - Object responseGenerator, JsonArray responseArray, - String JsonArrayName, String IndexName, - IpcRequestPacketEnum requestPackeEnumName, - List uriParameters, String methodName) - throws VtnServiceException { - //session reset - requestProcessor.setServiceInfo( - UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + + private final JsonObject getResponseJsonArrayLink( + final JsonObject requestBody, + final IpcRequestProcessor requestProcessor, + final Object responseGenerator, final JsonArray responseArray, + final String JsonArrayName, final String IndexName, + final IpcRequestPacketEnum requestPackeEnumName, + final List uriParameters, final String methodName) + throws VtnServiceException { + // session reset + requestProcessor.setServiceInfo(UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); int status = ClientSession.RESP_FATAL; int memberIndex = 0; - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); - int max_rep_count = Integer.parseInt(configuration + final int max_rep_count = Integer.parseInt(configuration .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); memberIndex = responseArray.size(); if (memberIndex != 0) { @@ -331,19 +331,19 @@ public class VLinksResource extends AbstractResource { + VtnServiceConsts.HYPHEN + Thread.currentThread().getStackTrace()[1] .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); } try { Method method; - final Class sourceClass = IpcLogicalResponseFactory.class; // get the method name to get the IpcLogicalResponseFactory // object for given key method = sourceClass.getMethod(methodName, new Class[] { IpcDataUnit[].class, - JsonObject.class, String.class }); + JsonObject.class, String.class }); // get IpcLogicalResponseFactory object memberArray = ((JsonObject) method.invoke( responseGenerator, @@ -357,8 +357,9 @@ public class VLinksResource extends AbstractResource { + VtnServiceConsts.HYPHEN + Thread.currentThread().getStackTrace()[1] .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); } if (null != memberArray && !memberArray.isJsonNull() && memberArray.size() > 0) { @@ -369,7 +370,7 @@ public class VLinksResource extends AbstractResource { memberIndex = memberArray.size(); } } - JsonObject root = new JsonObject(); + final JsonObject root = new JsonObject(); root.add(JsonArrayName, responseArray); return root; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntriesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntriesResource.java index 56a3341d..e8c5d0b9 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntriesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntriesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,7 +38,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VBridgeFlowFilterEntriesR * */ /* This class handles post and get methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries") public class VRouterInterfaceFlowFilterEntriesResource extends AbstractResource { /** The VTN name. */ @@ -72,28 +73,28 @@ public class VRouterInterfaceFlowFilterEntriesResource extends AbstractResource /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } /** * @return the ifName */ - public String getIfName() { + public final String getIfName() { return ifName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } @@ -107,7 +108,8 @@ public class VRouterInterfaceFlowFilterEntriesResource extends AbstractResource * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFilterEntriesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -167,7 +169,8 @@ public class VRouterInterfaceFlowFilterEntriesResource extends AbstractResource * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFilterEntriesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -202,10 +205,14 @@ public class VRouterInterfaceFlowFilterEntriesResource extends AbstractResource requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.FLOWFILTERENTRIES) .isJsonArray()) { - JsonArray responseArray = responseJson.get( - VtnServiceJsonConsts.FLOWFILTERENTRIES).getAsJsonArray(); - responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, responseArray, + final JsonArray responseArray = responseJson.get( + VtnServiceJsonConsts.FLOWFILTERENTRIES) + .getAsJsonArray(); + responseJson = getResponseJsonArrayLogical( + requestBody, + requestProcessor, + responseGenerator, + responseArray, VtnServiceJsonConsts.FLOWFILTERENTRIES, VtnServiceJsonConsts.SEQNUM, IpcRequestPacketEnum.KT_VRTIF_FLOWFILTER_ENTRY_GET, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntryResource.java index 593f1dd8..04597505 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterEntryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,7 +38,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VBridgeFlowFilterEntryRes * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries/{seqnum}") public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { /** The VTN name. */ @@ -59,8 +60,7 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger - .getLogger(VRouterInterfaceFlowFilterEntryResource.class - .getName()); + .getLogger(VRouterInterfaceFlowFilterEntryResource.class.getName()); /** * Instantiates a new v router interface flow filter entry resource. @@ -77,7 +77,7 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * * @return the VTN name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -86,7 +86,7 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * * @return the VRT name */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } @@ -95,7 +95,7 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } @@ -104,7 +104,7 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * * @return the FF type */ - public String getFfType() { + public final String getFfType() { return ffType; } @@ -113,7 +113,7 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * * @return the Sequence Number */ - public String getSeqnum() { + public final String getSeqnum() { return seqnum; } @@ -127,7 +127,8 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFilterEntryResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -184,7 +185,7 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFilterEntryResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -243,7 +244,8 @@ public class VRouterInterfaceFlowFilterEntryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFilterEntryResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterResource.java index 174e7245..7e7ef01f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFilterResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.FlowFilterResourceValidat * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters/{ff_type}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters/{ff_type}") public class VRouterInterfaceFlowFilterResource extends AbstractResource { /** The VTN name. */ @@ -68,28 +69,28 @@ public class VRouterInterfaceFlowFilterResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } /** * @return the ifName */ - public String getIfName() { + public final String getIfName() { return ifName; } /** * @return the ffType */ - public String getFfType() { + public final String getFfType() { return ffType; } @@ -101,7 +102,7 @@ public class VRouterInterfaceFlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFilterResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -160,7 +161,8 @@ public class VRouterInterfaceFlowFilterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFilterResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -181,7 +183,7 @@ public class VRouterInterfaceFlowFilterResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVRouterInterfaceFlowFilterResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFiltersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFiltersResource.java index 35ecac5b..01e7d3c6 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFiltersResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceFlowFiltersResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -33,7 +33,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.FlowFilterResourceValidat * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters") public class VRouterInterfaceFlowFiltersResource extends AbstractResource { /** The VTN name. */ @@ -48,8 +49,7 @@ public class VRouterInterfaceFlowFiltersResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger - .getLogger(VRouterInterfaceFlowFiltersResource.class - .getName()); + .getLogger(VRouterInterfaceFlowFiltersResource.class.getName()); /** * Instantiates a new v router interface flow filters resource. @@ -64,21 +64,21 @@ public class VRouterInterfaceFlowFiltersResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } /** * @return the ifName */ - public String getIfName() { + public final String getIfName() { return ifName; } @@ -92,7 +92,8 @@ public class VRouterInterfaceFlowFiltersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceFlowFiltersResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceResource.java index fe2b93a1..be02ef5a 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfaceResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,7 +36,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VRouterInterfaceResourceV /** * The Class VRouterInterfaceResource implements put, delete and get methods. */ -@UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}") public class VRouterInterfaceResource extends AbstractResource { /** The vtn name. */ @@ -54,21 +55,21 @@ public class VRouterInterfaceResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } /** * @return the ifName */ - public String getIfName() { + public final String getIfName() { return ifName; } @@ -92,7 +93,7 @@ public class VRouterInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VRouterInterfaceResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -152,7 +153,8 @@ public class VRouterInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -172,7 +174,8 @@ public class VRouterInterfaceResource extends AbstractResource { getUriParameters()); LOG.debug("Request Packet created successfully for 1st call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -195,7 +198,8 @@ public class VRouterInterfaceResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); LOG.debug("Response object created successfully for 1st request"); - if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) && !(vrtInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { + if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) + && !(vrtInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { requestProcessor.setServiceInfo( UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); @@ -210,7 +214,8 @@ public class VRouterInterfaceResource extends AbstractResource { .ordinal()))); LOG.debug("Request packet created successfully for 2nd call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 2nd call with status" + status); + LOG.debug("Request packet processed for 2nd call with status" + + status); neighbor = responseGenerator.getNeighborResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); @@ -258,7 +263,8 @@ public class VRouterInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfacesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfacesResource.java index bbb32233..03f88c9f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfacesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterInterfacesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -54,14 +54,14 @@ public class VRouterInterfacesResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } @@ -88,7 +88,8 @@ public class VRouterInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfacesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -109,7 +110,8 @@ public class VRouterInterfacesResource extends AbstractResource { uriParameterList); LOG.debug("Request Packet created successfully for 1st call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -137,18 +139,18 @@ public class VRouterInterfacesResource extends AbstractResource { vrtInterfacesJson = responseGenerator.getVRouterInterfaceResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); - if (vrtInterfacesJson.get(VtnServiceJsonConsts.INTERFACES).isJsonArray()) { - JsonArray responseArray = vrtInterfacesJson.get( - VtnServiceJsonConsts.INTERFACES) - .getAsJsonArray(); + if (vrtInterfacesJson.get(VtnServiceJsonConsts.INTERFACES) + .isJsonArray()) { + final JsonArray responseArray = vrtInterfacesJson.get( + VtnServiceJsonConsts.INTERFACES).getAsJsonArray(); vrtInterfacesJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.INTERFACES, - VtnServiceJsonConsts.IFNAME, - IpcRequestPacketEnum.KT_VRT_IF_GET, - uriParameterList,VtnServiceIpcConsts.GET_VROUTER_INTERFACE_RESPONSE); + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.INTERFACES, + VtnServiceJsonConsts.IFNAME, + IpcRequestPacketEnum.KT_VRT_IF_GET, uriParameterList, + VtnServiceIpcConsts.GET_VROUTER_INTERFACE_RESPONSE); } - LOG.debug("Response object created successfully for 1st request"); + LOG.debug("Response object created successfully for 1st request"); if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) && opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { final Iterator interfaceIterator = vrtInterfacesJson @@ -179,7 +181,8 @@ public class VRouterInterfacesResource extends AbstractResource { .ordinal())); LOG.debug("Request packet created successfully for 2nd call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 2nd call with status" + status); + LOG.debug("Request packet processed for 2nd call with status" + + status); neighbor = responseGenerator.getNeighborResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); @@ -231,7 +234,8 @@ public class VRouterInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfacesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterResource.java index e82150ef..a11377dd 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRouterResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -41,21 +41,24 @@ public class VRouterResource extends AbstractResource { /** The vrt name. */ @UNCField("vrt_name") private String vrtName; + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vrtName */ - public String getVrtName() { + public final String getVrtName() { return vrtName; } private static final Logger LOG = Logger.getLogger(VRouterResource.class .getName()); + /** * Instantiates a new VRouter resource. */ @@ -65,6 +68,7 @@ public class VRouterResource extends AbstractResource { setValidator(new VRouterResourceValidator(this)); LOG.trace("Complete VRouterResource#VRouterResource()"); } + /** * Implementation of delete method of VRouter * @@ -72,7 +76,7 @@ public class VRouterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VRouterResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -120,6 +124,7 @@ public class VRouterResource extends AbstractResource { LOG.trace("Complete VRouterResource#delete()"); return status; } + /** * Implementation of get method of VRouter * @@ -130,7 +135,8 @@ public class VRouterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -151,7 +157,7 @@ public class VRouterResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVRouterResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -183,6 +189,7 @@ public class VRouterResource extends AbstractResource { LOG.trace("Complete VRoutersResource#get()"); return status; } + /** * Implementation of Put method of VRouter * @@ -193,7 +200,8 @@ public class VRouterResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -241,6 +249,7 @@ public class VRouterResource extends AbstractResource { LOG.trace("Complete VRouterResource#put()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRoutersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRoutersResource.java index 91316785..616b4c43 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRoutersResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VRoutersResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -56,7 +56,7 @@ public class VRoutersResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -70,7 +70,8 @@ public class VRoutersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRoutersResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -130,7 +131,8 @@ public class VRoutersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRoutersResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -152,7 +154,7 @@ public class VRoutersResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getVRouterResponse( * requestProcessor.getIpcResponsePacket(), requestBody, @@ -162,7 +164,7 @@ public class VRoutersResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.VROUTERS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VROUTERS).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, requestProcessor, responseGenerator, responseArray, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupResource.java index 2d605823..b8dc111b 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -50,24 +50,28 @@ public class VTepGroupResource extends AbstractResource { private String vtepgroupName; private static final Logger LOG = Logger.getLogger(VTepGroupResource.class .getSimpleName()); + public VTepGroupResource() { super(); LOG.trace("Start VTepGroupResource#VTepGroupResource()"); setValidator(new VTepGroupResourceValidator(this)); LOG.trace("Complete VTepGroupResource#VTepGroupResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vtepgroupName */ - public String getVtepgroupName() { + public final String getVtepgroupName() { return vtepgroupName; } + /** * Implementation of Put method of VTepGroup API * @@ -78,7 +82,8 @@ public class VTepGroupResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VTepGroupResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -86,11 +91,12 @@ public class VTepGroupResource extends AbstractResource { int status = ClientSession.RESP_FATAL; final JsonObject getRequestBody = new JsonObject(); // pending query for the same will update once query will be resolved - getRequestBody.addProperty(VtnServiceJsonConsts.TARGETDB, VtnServiceJsonConsts.STATE); + getRequestBody.addProperty(VtnServiceJsonConsts.TARGETDB, + VtnServiceJsonConsts.STATE); status = get(getRequestBody); LOG.debug("Request packet processed with status" + status); if (status == VtnServiceConsts.RESPONSE_SUCCESS) { - JsonObject root = getInfo(); + final JsonObject root = getInfo(); try { LOG.debug("Start Ipc framework call"); // Deleting all the member data. @@ -121,8 +127,9 @@ public class VTepGroupResource extends AbstractResource { for (final JsonElement jsonElement : vTepGroupMemberArray) { status = ClientSession.RESP_FATAL; requestProcessor.setServiceInfo( - UncUPLLEnums.UPLL_IPC_SERVICE_NAME, - UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal()); + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID + .ordinal()); requestProcessor .createIpcRequestPacket( IpcRequestPacketEnum.KT_VTEP_GRP_MEMBER_DELETE, @@ -132,7 +139,8 @@ public class VTepGroupResource extends AbstractResource { ipcRollback.pushIpcPacket(requestProcessor .getRequestPacket()); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status" + status); + LOG.debug("Request packet processed with status" + + status); if (status == ClientSession.RESP_FATAL) { ipcRollback .rollBackIpcRequest(requestProcessor); @@ -144,7 +152,7 @@ public class VTepGroupResource extends AbstractResource { } LOG.debug("Deletion of member data finished successfully.."); // creating Data members along with VtepGroup - //status = ClientSession.RESP_FATAL; + // status = ClientSession.RESP_FATAL; if (null != requestBody && requestBody.has(VtnServiceJsonConsts.VTEPGROUP)) { vTepGroup = requestBody @@ -159,12 +167,13 @@ public class VTepGroupResource extends AbstractResource { final JsonArray vTepGroupMemberArray = vTepGroup.get( VtnServiceJsonConsts.VTEPGROUPMEMBERNAME) .getAsJsonArray(); - if (vTepGroupMemberArray.size() > 0) { + if (vTepGroupMemberArray.size() > 0) { for (final JsonElement jsonElement : vTepGroupMemberArray) { status = ClientSession.RESP_FATAL; requestProcessor.setServiceInfo( - UncUPLLEnums.UPLL_IPC_SERVICE_NAME, - UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal()); + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID + .ordinal()); requestProcessor .createIpcRequestPacket( IpcRequestPacketEnum.KT_VTEP_GRP_MEMBER_CREATE, @@ -174,7 +183,8 @@ public class VTepGroupResource extends AbstractResource { .getRequestPacket()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status" + status); + LOG.debug("Request packet processed with status" + + status); if (status == ClientSession.RESP_FATAL) { ipcRollback .rollBackIpcRequest(requestProcessor); @@ -215,6 +225,7 @@ public class VTepGroupResource extends AbstractResource { setInfo(null); return status; } + /** * Implementation of Delete method of VTep Group Resource API * @@ -222,7 +233,7 @@ public class VTepGroupResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("starts VTepGroupResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -271,6 +282,7 @@ public class VTepGroupResource extends AbstractResource { LOG.trace("Completed VTepGroupResource#delete()"); return status; } + /** * Implementation of get method of Vtep group Interface API * @@ -281,7 +293,8 @@ public class VTepGroupResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("starts VTepGroupResource#get()"); ClientSession session = null; final JsonObject root = new JsonObject(); @@ -302,7 +315,8 @@ public class VTepGroupResource extends AbstractResource { getUriParameters(requestBody)); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -313,11 +327,11 @@ public class VTepGroupResource extends AbstractResource { UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); } - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); JsonObject vtepGroup = responseGenerator.getVTepGroupResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); - if(!(vtepGroup.get(VtnServiceJsonConsts.VTEPGROUP) instanceof JsonNull)){ + if (!(vtepGroup.get(VtnServiceJsonConsts.VTEPGROUP) instanceof JsonNull)) { requestProcessor.setServiceInfo( UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); @@ -351,9 +365,9 @@ public class VTepGroupResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), vtepGroup .getAsJsonObject(VtnServiceJsonConsts.VTEPGROUP)); - JsonArray memberJsonArray = vtepGroup + final JsonArray memberJsonArray = vtepGroup .getAsJsonArray(VtnServiceJsonConsts.MEMBERVTEPS); - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); final int max_rep_count = Integer.parseInt(configuration .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); @@ -361,7 +375,7 @@ public class VTepGroupResource extends AbstractResource { if (memberJsonArray.size() >= max_rep_count) { while (memberIndex >= max_rep_count) { memberIndex = memberJsonArray.size(); - JsonObject memberJson = (JsonObject) vtepGroup + final JsonObject memberJson = (JsonObject) vtepGroup .getAsJsonArray( VtnServiceJsonConsts.MEMBERVTEPS).get( memberIndex - 1); @@ -394,7 +408,7 @@ public class VTepGroupResource extends AbstractResource { } else { setInfo(vtepGroup); } - + LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupsResource.java index 6fc84ab0..fc9a8b23 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepGroupsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -49,18 +49,21 @@ public class VTepGroupsResource extends AbstractResource { private String vtnName; private static final Logger LOG = Logger.getLogger(VTepGroupsResource.class .getSimpleName()); + public VTepGroupsResource() { super(); LOG.trace("Start VTepGroupsResource#VTunnelsResource()"); setValidator(new VTepGroupResourceValidator(this)); LOG.trace("Complete VTepGroupsResource#VTunnelsResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Implementation of Post method of VTepGroup API * @@ -71,7 +74,8 @@ public class VTepGroupsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("starts VTepGroupResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -116,10 +120,10 @@ public class VTepGroupsResource extends AbstractResource { .get(VtnServiceJsonConsts.VTEPGROUPMEMBERNAME) .getAsJsonArray(); if (vTepGroupMemberArray.size() > 0) { - requestProcessor.setServiceInfo( - UncUPLLEnums.UPLL_IPC_SERVICE_NAME, - UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal()); - + requestProcessor.setServiceInfo( + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal()); + for (final JsonElement jsonElement : vTepGroupMemberArray) { requestBody.add( VtnServiceJsonConsts.INDEX, @@ -168,6 +172,7 @@ public class VTepGroupsResource extends AbstractResource { LOG.trace("Completed VTepGroupsResource#create()"); return status; } + /** * Implementation of Get method of VTepGroup API * @@ -178,7 +183,8 @@ public class VTepGroupsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepGroupResource#get()"); ClientSession session = null; JsonObject root = new JsonObject(); @@ -206,7 +212,8 @@ public class VTepGroupsResource extends AbstractResource { opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); } status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -217,28 +224,30 @@ public class VTepGroupsResource extends AbstractResource { UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); } - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); - JsonObject VtepGrp = responseGenerator.getVTepGroupResponse( + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final JsonObject VtepGrp = responseGenerator.getVTepGroupResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); - - requestProcessor.setServiceInfo( - UncUPLLEnums.UPLL_IPC_SERVICE_NAME, - UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); - + + requestProcessor.setServiceInfo(UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); + JsonArray vTepGroupArr = null; if (VtnServiceJsonConsts.DETAIL.equalsIgnoreCase(opType)) { - Iterator vtepGrpItr = VtepGrp.getAsJsonArray( - VtnServiceJsonConsts.VTEPGROUPS).iterator(); + final Iterator vtepGrpItr = VtepGrp + .getAsJsonArray(VtnServiceJsonConsts.VTEPGROUPS) + .iterator(); vTepGroupArr = new JsonArray(); - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); final int max_rep_count = Integer.parseInt(configuration .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); while (vtepGrpItr.hasNext()) { JsonObject vTepGroup = (JsonObject) vtepGrpItr.next(); - requestBody.addProperty(VtnServiceJsonConsts.INDEX,vTepGroup.get(VtnServiceJsonConsts.VTEPGROUPNAME).getAsString()); + requestBody.addProperty(VtnServiceJsonConsts.INDEX, + vTepGroup.get(VtnServiceJsonConsts.VTEPGROUPNAME) + .getAsString()); requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_VTEP_GRP_MEMBER_GET, requestBody, getUriParameters(requestBody)); @@ -250,16 +259,17 @@ public class VTepGroupsResource extends AbstractResource { .setIpcUint32Value(UncOperationEnum.UNC_OP_READ_SIBLING_BEGIN .ordinal())); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 2nd call with status" + status); + LOG.debug("Request packet processed for 2nd call with status" + + status); vTepGroup = responseGenerator.getVtepGroupMembers( requestProcessor.getIpcResponsePacket(), vTepGroup); - JsonArray memberJsonArray = vTepGroup + final JsonArray memberJsonArray = vTepGroup .getAsJsonArray(VtnServiceJsonConsts.MEMBERVTEPS); if (memberJsonArray.size() >= max_rep_count) { int memberIndex = memberJsonArray.size(); while (memberIndex >= max_rep_count) { memberIndex = memberJsonArray.size(); - JsonObject memberJson = (JsonObject) vTepGroup + final JsonObject memberJson = (JsonObject) vTepGroup .getAsJsonArray( VtnServiceJsonConsts.MEMBERVTEPS) .get(memberIndex - 1); @@ -330,6 +340,7 @@ public class VTepGroupsResource extends AbstractResource { LOG.trace("Completed VTepGroupsResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacePortMapResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacePortMapResource.java index afe80ba7..452a7c65 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacePortMapResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacePortMapResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,11 +31,13 @@ import org.opendaylight.vtn.javaapi.resources.AbstractResource; import org.opendaylight.vtn.javaapi.validation.logical.PortMapResourceValidator; /** - * The Class VTepInterfacePortMapResource implements delete, put and get methods. - * + * The Class VTepInterfacePortMapResource implements delete, put and get + * methods. + * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vteps/{vtep_name}/interfaces/{if_name}/portmap") +@UNCVtnService( + path = "/vtns/{vtn_name}/vteps/{vtep_name}/interfaces/{if_name}/portmap") public class VTepInterfacePortMapResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -48,31 +50,36 @@ public class VTepInterfacePortMapResource extends AbstractResource { private String ifName; /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(VTepInterfacePortMapResource.class.getSimpleName()); + private static final Logger LOG = Logger + .getLogger(VTepInterfacePortMapResource.class.getSimpleName()); + /** * Gets the vtn name. - * + * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the vbr name. - * + * * @return the vbr name */ - public String getVtepName() { + public final String getVtepName() { return vtepName; } + /** * Gets the if name. - * + * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } + /** * Instantiates a new port map resource. */ @@ -90,32 +97,43 @@ public class VTepInterfacePortMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VTepInterfacePortMapResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; int status = ClientSession.RESP_FATAL; try { - session = getConnPool().getSession(UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,UncUPLLEnums.UPLL_IPC_SERVICE_NAME,UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(),getExceptionHandler()); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(), + getExceptionHandler()); LOG.debug("Session created successfully"); - requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(),getExceptionHandler()); - requestProcessor.createIpcRequestPacket(IpcRequestPacketEnum.KT_VTEP_IF_UPDATE,getNullJsonObject(),getUriParameters()); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTEP_IF_UPDATE, + getNullJsonObject(), getUriParameters()); LOG.debug("Request packet created successfully"); - status= requestProcessor.processIpcRequest(); + status = requestProcessor.processIpcRequest(); } catch (final VtnServiceException e) { - getExceptionHandler().raise( - Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1].getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage(), e); + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { - if(null != requestProcessor.getErrorJson()){ + if (null != requestProcessor.getErrorJson()) { setInfo(requestProcessor.getErrorJson()); } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR.getValue()); + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); } status = UncResultCode.UNC_SERVER_ERROR.getValue(); } @@ -124,45 +142,62 @@ public class VTepInterfacePortMapResource extends AbstractResource { LOG.trace("Complete VTepInterfacePortMapResource#delete()"); return status; } + /** * Implementation of get method of VTep Interface PortMap API * - * @param requestBody the request Json object + * @param requestBody + * the request Json object * * @return Error code * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepInterfacePortMapResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; int status = ClientSession.RESP_FATAL; try { - session = getConnPool().getSession(UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,UncUPLLEnums.UPLL_IPC_SERVICE_NAME,UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(),getExceptionHandler()); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(), + getExceptionHandler()); LOG.debug("Session created successfully"); - requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(),getExceptionHandler()); - requestProcessor.createIpcRequestPacket(IpcRequestPacketEnum.KT_VTEP_IF_GET, requestBody,getUriParameters()); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTEP_IF_GET, requestBody, + getUriParameters()); LOG.debug("Request Packet created successfully"); - status= requestProcessor.processIpcRequest(); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); - setInfo(responseGenerator.getPortMapResponse(requestProcessor.getIpcResponsePacket(),requestBody,VtnServiceJsonConsts.SHOW,VtnServiceJsonConsts.VTEP_INTERFACE_PORTMAP)); + status = requestProcessor.processIpcRequest(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + setInfo(responseGenerator.getPortMapResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.SHOW, + VtnServiceJsonConsts.VTEP_INTERFACE_PORTMAP)); LOG.debug("response object created successfully"); LOG.debug("Ipc framework call complete"); } catch (final VtnServiceException e) { - getExceptionHandler().raise( - Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1].getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage(), e); + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { - if(null != requestProcessor.getErrorJson()){ + if (null != requestProcessor.getErrorJson()) { setInfo(requestProcessor.getErrorJson()); } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR.getValue()); + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); } status = UncResultCode.UNC_SERVER_ERROR.getValue(); } @@ -175,38 +210,51 @@ public class VTepInterfacePortMapResource extends AbstractResource { /** * Implementation of Put method of PortMap API * - * @param requestBody the request Json object + * @param requestBody + * the request Json object * * @return Error code * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepInterfacePortMapResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; int status = ClientSession.RESP_FATAL; try { - session = getConnPool().getSession(UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,UncUPLLEnums.UPLL_IPC_SERVICE_NAME,UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(),getExceptionHandler()); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(), + getExceptionHandler()); LOG.debug("Session created successfully"); - requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(),getExceptionHandler()); - requestProcessor.createIpcRequestPacket(IpcRequestPacketEnum.KT_VTEP_IF_UPDATE, requestBody,getUriParameters()); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTEP_IF_UPDATE, requestBody, + getUriParameters()); LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); - }catch (final VtnServiceException e) { - getExceptionHandler().raise( - Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1].getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage(), e); + } catch (final VtnServiceException e) { + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { - if(null != requestProcessor.getErrorJson()){ + if (null != requestProcessor.getErrorJson()) { setInfo(requestProcessor.getErrorJson()); } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR.getValue()); + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); } status = UncResultCode.UNC_SERVER_ERROR.getValue(); } @@ -215,8 +263,10 @@ public class VTepInterfacePortMapResource extends AbstractResource { LOG.trace("Complete VTepInterfacePortMapResource#put()"); return status; } + /** * Add URI parameters to list + * * @return */ private List getUriParameters() { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfaceResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfaceResource.java index d7ece952..ca6c01bd 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfaceResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfaceResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -47,30 +47,34 @@ public class VTepInterfaceResource extends AbstractResource { /** The if name. */ @UNCField("if_name") private String ifName; + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the v tep name. * * @return the v tep name */ - public String getvTepName() { + public final String getvTepName() { return vTepName; } + /** * Gets the if name. * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } + /** The Constant LOG. */ private static final Logger LOG = Logger .getLogger(VTepInterfaceResource.class.getName()); @@ -84,6 +88,7 @@ public class VTepInterfaceResource extends AbstractResource { setValidator(new InterfaceResourceValidator(this)); LOG.trace("Completed VTepInterfaceResource#VTepInterfaceResource()"); } + /** * Implementation of Put method of VtepInterface API * @@ -94,7 +99,8 @@ public class VTepInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepInterfaceResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -142,6 +148,7 @@ public class VTepInterfaceResource extends AbstractResource { LOG.trace("Completed VTepInterfaceResource#put()"); return status; } + /** * Implementation of Delete method of VtepInterface API * @@ -150,7 +157,7 @@ public class VTepInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VTepInterfaceResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -198,6 +205,7 @@ public class VTepInterfaceResource extends AbstractResource { LOG.trace("Complete VTepInterfaceResource#delete()"); return status; } + /** * Implementation of Get method of VtepInterface API * @@ -208,7 +216,8 @@ public class VTepInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepInterfaceResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -235,7 +244,8 @@ public class VTepInterfaceResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully for 1st call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -246,13 +256,14 @@ public class VTepInterfaceResource extends AbstractResource { UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); } - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); vtepInterfaceJson = responseGenerator.getVTepInterfaceResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); LOG.debug("Complete Ipc framework call one"); // Condition check for second call - if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) && !(vtepInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { + if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) + && !(vtepInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { requestProcessor.setServiceInfo( UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); @@ -267,7 +278,8 @@ public class VTepInterfaceResource extends AbstractResource { .setIpcUint32Value((UncOption2Enum.UNC_OPT2_NEIGHBOR .ordinal()))); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 2nd call with status" + status); + LOG.debug("Request packet processed for 2nd call with status" + + status); neighbor = responseGenerator.getNeighborResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); @@ -305,6 +317,7 @@ public class VTepInterfaceResource extends AbstractResource { LOG.trace("Completed VTepInterfaceResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacesResource.java index f20b00aa..54282c5c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepInterfacesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -48,25 +48,29 @@ public class VTepInterfacesResource extends AbstractResource { /** The VTEP name. */ @UNCField("vtep_name") private String vTepName; + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the v tep name. * * @return the v tep name */ - public String getvTepName() { + public final String getvTepName() { return vTepName; } + /** The Constant LOG. */ private static final Logger LOG = Logger .getLogger(VTepInterfacesResource.class.getName()); + /** * Instantiates a new v tep interfaces resource. */ @@ -76,6 +80,7 @@ public class VTepInterfacesResource extends AbstractResource { setValidator(new InterfaceResourceValidator(this)); LOG.trace("Completed VTepInterfacesResource#VTepInterfacesResource()"); } + /** * Implementation of Post method of VtepInterface API * @@ -86,7 +91,8 @@ public class VTepInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepInterfacesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -133,6 +139,7 @@ public class VTepInterfacesResource extends AbstractResource { LOG.trace("Completed VTepInterfacesResource#post()"); return status; } + /** * Implementation of Get method of VtepInterface API * @@ -143,7 +150,8 @@ public class VTepInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepInterfacesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -176,7 +184,8 @@ public class VTepInterfacesResource extends AbstractResource { getUriParameters(requestBody)); LOG.debug("Request packet created successfully for 1st call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 1st call with status" + status); + LOG.debug("Request packet processed for 1st call with status" + + status); LOG.debug("Complete Ipc framework call one"); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( @@ -194,16 +203,16 @@ public class VTepInterfacesResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); final List uriParameterList = getUriParameters(requestBody); - if (vTepInterfaceJson.get(VtnServiceJsonConsts.INTERFACES).isJsonArray()) { - JsonArray responseArray = vTepInterfaceJson.get( - VtnServiceJsonConsts.INTERFACES) - .getAsJsonArray(); + if (vTepInterfaceJson.get(VtnServiceJsonConsts.INTERFACES) + .isJsonArray()) { + final JsonArray responseArray = vTepInterfaceJson.get( + VtnServiceJsonConsts.INTERFACES).getAsJsonArray(); vTepInterfaceJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.INTERFACES, - VtnServiceJsonConsts.IFNAME, - IpcRequestPacketEnum.KT_VTEP_IF_GET, - uriParameterList,VtnServiceIpcConsts.GET_VTEP_INTERFACE_RESPONSE); + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.INTERFACES, + VtnServiceJsonConsts.IFNAME, + IpcRequestPacketEnum.KT_VTEP_IF_GET, uriParameterList, + VtnServiceIpcConsts.GET_VTEP_INTERFACE_RESPONSE); } LOG.trace("Response Packet created successfully for 1st request"); if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) @@ -236,7 +245,8 @@ public class VTepInterfacesResource extends AbstractResource { .ordinal())); LOG.debug("Request packet created successfully for 2nd call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed for 2nd call with status" + status); + LOG.debug("Request packet processed for 2nd call with status" + + status); neighbor = responseGenerator.getNeighborResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); @@ -275,6 +285,7 @@ public class VTepInterfacesResource extends AbstractResource { LOG.trace("Completed VTepInterfacesResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepResource.java index b9a7ac1b..0f269067 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -48,6 +48,7 @@ public class VTepResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger.getLogger(VTepResource.class .getName()); + /** * Instantiates a new v tep resource. */ @@ -57,18 +58,21 @@ public class VTepResource extends AbstractResource { setValidator(new VTepResourceValidator(this)); LOG.trace("Completed VTepResource#VTepResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vTepName */ - public String getvTepName() { + public final String getvTepName() { return vTepName; } + /** * Implementation of Put method of Vtep API * @@ -79,7 +83,8 @@ public class VTepResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -127,6 +132,7 @@ public class VTepResource extends AbstractResource { LOG.trace("Completed VTepResource#put()"); return status; } + /** * Implementation of Delete method of Vtep API * @@ -134,7 +140,7 @@ public class VTepResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VTepResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -181,6 +187,7 @@ public class VTepResource extends AbstractResource { LOG.trace("Completed VTepResource#delete()"); return status; } + /** * Implementation of Get method of Vtep API * @@ -191,7 +198,8 @@ public class VTepResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -210,18 +218,18 @@ public class VTepResource extends AbstractResource { IpcRequestPacketEnum.KT_VTEP_GET, requestBody, getUriParameters()); LOG.debug("Request packet created successfully"); - + if (requestBody != null && ((requestBody.has(VtnServiceJsonConsts.TARGETDB) && requestBody .get(VtnServiceJsonConsts.TARGETDB).getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.STATE)))) { - - IpcStruct valStruct = new IpcStruct( + + final IpcStruct valStruct = new IpcStruct( UncStructEnum.ValVtep.getValue()); requestProcessor.getRequestPacket().setValStruct(valStruct); LOG.debug("Add ValVTepSt in Request Packet"); - IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; - IpcStruct valStructSt = new IpcStruct( + final IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; + final IpcStruct valStructSt = new IpcStruct( UncStructEnum.ValVtepSt.getValue()); extraDataUnits[0] = valStructSt; requestProcessor.getRequestPacket().setExtraDataUnits( @@ -229,7 +237,7 @@ public class VTepResource extends AbstractResource { } status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVtepResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -261,6 +269,7 @@ public class VTepResource extends AbstractResource { LOG.trace("Completed VTepResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepsResource.java index 772a29c8..05e164a1 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTepsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -60,7 +60,7 @@ public class VTepsResource extends AbstractResource { /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -74,7 +74,8 @@ public class VTepsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepsResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -133,7 +134,8 @@ public class VTepsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepsResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -159,12 +161,12 @@ public class VTepsResource extends AbstractResource { .get(VtnServiceJsonConsts.OP).getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.COUNT)))) { - IpcStruct valStruct = new IpcStruct( + final IpcStruct valStruct = new IpcStruct( UncStructEnum.ValVtep.getValue()); requestProcessor.getRequestPacket().setValStruct(valStruct); LOG.debug("Add ValVTepSt in Request Packet"); - IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; - IpcStruct valStructSt = new IpcStruct( + final IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; + final IpcStruct valStructSt = new IpcStruct( UncStructEnum.ValVtepSt.getValue()); extraDataUnits[0] = valStructSt; requestProcessor.getRequestPacket().setExtraDataUnits( @@ -173,26 +175,23 @@ public class VTepsResource extends AbstractResource { LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getVtepResponse( * requestProcessor.getIpcResponsePacket(), requestBody, * VtnServiceJsonConsts.LIST)); */ - JsonObject responseJson = responseGenerator - .getVtepResponse( - requestProcessor.getIpcResponsePacket(), - requestBody, VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.VTEPS) - .isJsonArray()) { - JsonArray responseArray = responseJson.get( + JsonObject responseJson = responseGenerator.getVtepResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.LIST); + if (responseJson.get(VtnServiceJsonConsts.VTEPS).isJsonArray()) { + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VTEPS).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, requestProcessor, responseGenerator, responseArray, VtnServiceJsonConsts.VTEPS, VtnServiceJsonConsts.VTEPNAME, - IpcRequestPacketEnum.KT_VTEP_GET, - uriParameterList, + IpcRequestPacketEnum.KT_VTEP_GET, uriParameterList, VtnServiceIpcConsts.GET_VTEP_RESPONSE); } setInfo(responseJson); @@ -230,7 +229,7 @@ public class VTepsResource extends AbstractResource { * * @return parameter list */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start VTepsResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(vtnName); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacePortMapResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacePortMapResource.java index 959a9331..120299a2 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacePortMapResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacePortMapResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,11 +31,13 @@ import org.opendaylight.vtn.javaapi.resources.AbstractResource; import org.opendaylight.vtn.javaapi.validation.logical.PortMapResourceValidator; /** - * The Class VTunnelInterfacePortMapResource implements delete, put and get methods. - * + * The Class VTunnelInterfacePortMapResource implements delete, put and get + * methods. + * */ -@UNCVtnService(path = "/vtns/{vtn_name}/vtunnels/{vtunnel_name}/interfaces/{if_name}/portmap") +@UNCVtnService( + path = "/vtns/{vtn_name}/vtunnels/{vtunnel_name}/interfaces/{if_name}/portmap") public class VTunnelInterfacePortMapResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -48,31 +50,36 @@ public class VTunnelInterfacePortMapResource extends AbstractResource { private String ifName; /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(VTunnelInterfacePortMapResource.class.getSimpleName()); + private static final Logger LOG = Logger + .getLogger(VTunnelInterfacePortMapResource.class.getSimpleName()); + /** * Gets the vtn name. - * + * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the vbr name. - * + * * @return the vbr name */ - public String getVtunnelName() { + public final String getVtunnelName() { return vtunnelName; } + /** * Gets the if name. - * + * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } + /** * Instantiates a new port map resource. */ @@ -90,32 +97,43 @@ public class VTunnelInterfacePortMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VTunnelInterfacePortMapResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; int status = ClientSession.RESP_FATAL; try { - session = getConnPool().getSession(UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,UncUPLLEnums.UPLL_IPC_SERVICE_NAME,UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(),getExceptionHandler()); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(), + getExceptionHandler()); LOG.debug("Session created successfully"); - requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(),getExceptionHandler()); - requestProcessor.createIpcRequestPacket(IpcRequestPacketEnum.KT_VTUNNEL_IF_UPDATE,getNullJsonObject(),getUriParameters()); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTUNNEL_IF_UPDATE, + getNullJsonObject(), getUriParameters()); LOG.debug("Request packet created successfully"); - status= requestProcessor.processIpcRequest(); + status = requestProcessor.processIpcRequest(); } catch (final VtnServiceException e) { - getExceptionHandler().raise( - Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1].getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage(), e); + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { - if(null != requestProcessor.getErrorJson()){ + if (null != requestProcessor.getErrorJson()) { setInfo(requestProcessor.getErrorJson()); } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR.getValue()); + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); } status = UncResultCode.UNC_SERVER_ERROR.getValue(); } @@ -124,45 +142,62 @@ public class VTunnelInterfacePortMapResource extends AbstractResource { LOG.trace("Complete VTunnelInterfacePortMapResource#delete()"); return status; } + /** * Implementation of get method of VTep Interface PortMap API * - * @param requestBody the request Json object + * @param requestBody + * the request Json object * * @return Error code * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelInterfacePortMapResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; int status = ClientSession.RESP_FATAL; try { - session = getConnPool().getSession(UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,UncUPLLEnums.UPLL_IPC_SERVICE_NAME,UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(),getExceptionHandler()); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(), + getExceptionHandler()); LOG.debug("Session created successfully"); - requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(),getExceptionHandler()); - requestProcessor.createIpcRequestPacket(IpcRequestPacketEnum.KT_VTUNNEL_IF_GET, requestBody,getUriParameters()); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTUNNEL_IF_GET, requestBody, + getUriParameters()); LOG.debug("Request Packet created successfully"); - status= requestProcessor.processIpcRequest(); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); - setInfo(responseGenerator.getPortMapResponse(requestProcessor.getIpcResponsePacket(),requestBody,VtnServiceJsonConsts.SHOW,VtnServiceJsonConsts.VTUNNEL_INTERFACE_PORTMAP)); + status = requestProcessor.processIpcRequest(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + setInfo(responseGenerator.getPortMapResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.SHOW, + VtnServiceJsonConsts.VTUNNEL_INTERFACE_PORTMAP)); LOG.debug("response object created successfully"); LOG.debug("Ipc framework call complete"); } catch (final VtnServiceException e) { - getExceptionHandler().raise( - Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1].getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage(), e); + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { - if(null != requestProcessor.getErrorJson()){ + if (null != requestProcessor.getErrorJson()) { setInfo(requestProcessor.getErrorJson()); } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR.getValue()); + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); } status = UncResultCode.UNC_SERVER_ERROR.getValue(); } @@ -175,38 +210,51 @@ public class VTunnelInterfacePortMapResource extends AbstractResource { /** * Implementation of Put method of PortMap API * - * @param requestBody the request Json object + * @param requestBody + * the request Json object * * @return Error code * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelInterfacePortMapResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; int status = ClientSession.RESP_FATAL; try { - session = getConnPool().getSession(UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,UncUPLLEnums.UPLL_IPC_SERVICE_NAME,UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(),getExceptionHandler()); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(), + getExceptionHandler()); LOG.debug("Session created successfully"); - requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(),getExceptionHandler()); - requestProcessor.createIpcRequestPacket(IpcRequestPacketEnum.KT_VTUNNEL_IF_UPDATE, requestBody,getUriParameters()); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTUNNEL_IF_UPDATE, requestBody, + getUriParameters()); LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); - }catch (final VtnServiceException e) { - getExceptionHandler().raise( - Thread.currentThread().getStackTrace()[1].getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1].getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage(), e); + } catch (final VtnServiceException e) { + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { - if(null != requestProcessor.getErrorJson()){ + if (null != requestProcessor.getErrorJson()) { setInfo(requestProcessor.getErrorJson()); } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR.getValue()); + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); } status = UncResultCode.UNC_SERVER_ERROR.getValue(); } @@ -215,8 +263,10 @@ public class VTunnelInterfacePortMapResource extends AbstractResource { LOG.trace("Complete VTunnelInterfacePortMapResource#put()"); return status; } + /** * Add URI parameters to list + * * @return */ private List getUriParameters() { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfaceResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfaceResource.java index 43e36478..0684e6bf 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfaceResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfaceResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -39,7 +39,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.InterfaceResourceValidato * @version 1.0 */ /* This class handles put, delete and get methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/vtunnels/{vtunnel_name}/interfaces/{if_name}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vtunnels/{vtunnel_name}/interfaces/{if_name}") public class VTunnelInterfaceResource extends AbstractResource { /** The VTN name. */ @UNCField("vtn_name") @@ -50,32 +51,37 @@ public class VTunnelInterfaceResource extends AbstractResource { /** The if name. */ @UNCField("if_name") private String ifName; + /** * Gets the vtn name. * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the v tunnel name. * * @return the v tunnel name */ - public String getvTunnelName() { + public final String getvTunnelName() { return vTunnelName; } + /** * Gets the if name. * * @return the if name */ - public String getIfName() { + public final String getIfName() { return ifName; } + private static final Logger LOG = Logger .getLogger(VTunnelInterfaceResource.class.getName()); + /** * Instantiates a new Interface Resource Validator resource. */ @@ -85,6 +91,7 @@ public class VTunnelInterfaceResource extends AbstractResource { setValidator(new InterfaceResourceValidator(this)); LOG.trace("Completed VTunnelInterfaceResource#VTunnelInterfaceResource()"); } + /** * Implementation of Put method of VTunnel Interface API * @@ -95,7 +102,8 @@ public class VTunnelInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelInterfaceResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -144,6 +152,7 @@ public class VTunnelInterfaceResource extends AbstractResource { LOG.trace("Completed VTunnelInterfaceResource#put()"); return status; } + /** * Implementation of Delete method of VTunnel Interface Resource API * @@ -151,7 +160,7 @@ public class VTunnelInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VTunnelInterfaceResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -200,6 +209,7 @@ public class VTunnelInterfaceResource extends AbstractResource { LOG.trace("Completed VTunnelInterfaceResource#delete()"); return status; } + /** * Implementation of get method of VTunnel Interface API * @@ -210,7 +220,8 @@ public class VTunnelInterfaceResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("starts VTunnelInterfaceResource#get()"); ClientSession session = null; @@ -231,7 +242,8 @@ public class VTunnelInterfaceResource extends AbstractResource { getUriParameters()); LOG.debug("Request Packet created successfully for 1st call"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet for 1st call processed with status" + status); + LOG.debug("Request packet for 1st call processed with status" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -255,7 +267,9 @@ public class VTunnelInterfaceResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW); LOG.trace("Response Packet created successfully for 1st request"); - if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) && !(vtunnelInterfaceJson.get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { + if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) + && !(vtunnelInterfaceJson + .get(VtnServiceJsonConsts.INTERFACE) instanceof JsonNull)) { requestProcessor.setServiceInfo( UncUPLLEnums.UPLL_IPC_SERVICE_NAME, UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal()); @@ -309,6 +323,7 @@ public class VTunnelInterfaceResource extends AbstractResource { LOG.trace("Completed VTunnelInterfaceResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacesResource.java index 26ca049c..79352654 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelInterfacesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -54,19 +54,22 @@ public class VTunnelInterfacesResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Gets the v tunnel name. * * @return the v tunnel name */ - public String getvTunnelName() { + public final String getvTunnelName() { return vTunnelName; } + private static final Logger LOG = Logger .getLogger(VTunnelInterfacesResource.class.getName()); + /** * Instantiates a new Interface Resource Validator resource. */ @@ -76,6 +79,7 @@ public class VTunnelInterfacesResource extends AbstractResource { setValidator(new InterfaceResourceValidator(this)); LOG.trace("Completed VTunnelInterfacesResource#VTunnelInterfaceResource()"); } + /** * Implementation of Post method of VTunnel Interface API * @@ -86,7 +90,8 @@ public class VTunnelInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelInterfacesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -135,6 +140,7 @@ public class VTunnelInterfacesResource extends AbstractResource { LOG.trace("Complete VTunnelInterfacesResource#post()"); return status; } + /** * Implementation of Get method of VTunnel Interface API * @@ -145,7 +151,8 @@ public class VTunnelInterfacesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelInterfacesResource#get()"); ClientSession session = null; @@ -195,16 +202,17 @@ public class VTunnelInterfacesResource extends AbstractResource { .getVTunnelInterfaceResourceResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); - if (vtunnelInterfacesJson.get(VtnServiceJsonConsts.INTERFACES).isJsonArray()) { - JsonArray responseArray = vtunnelInterfacesJson.get( - VtnServiceJsonConsts.INTERFACES) - .getAsJsonArray(); - vtunnelInterfacesJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.INTERFACES, - VtnServiceJsonConsts.IFNAME, - IpcRequestPacketEnum.KT_VTUNNEL_IF_GET, - uriParameterList,VtnServiceIpcConsts.GET_VTUNNEL_INTERFACE_RESPONSE); + if (vtunnelInterfacesJson.get(VtnServiceJsonConsts.INTERFACES) + .isJsonArray()) { + final JsonArray responseArray = vtunnelInterfacesJson.get( + VtnServiceJsonConsts.INTERFACES).getAsJsonArray(); + vtunnelInterfacesJson = getResponseJsonArrayLogical( + requestBody, requestProcessor, responseGenerator, + responseArray, VtnServiceJsonConsts.INTERFACES, + VtnServiceJsonConsts.IFNAME, + IpcRequestPacketEnum.KT_VTUNNEL_IF_GET, + uriParameterList, + VtnServiceIpcConsts.GET_VTUNNEL_INTERFACE_RESPONSE); } LOG.trace("Response Packet created successfully for 1st request"); if ((VtnServiceJsonConsts.STATE).equalsIgnoreCase(dataType) @@ -277,6 +285,7 @@ public class VTunnelInterfacesResource extends AbstractResource { LOG.trace("Completed VTunnelInterfaceResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelResource.java index 89b5e50a..0aae5029 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -44,20 +44,24 @@ public class VTunnelResource extends AbstractResource { /** The v tunnel name. */ @UNCField("vtunnel_name") private String vTunnelName; + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * @return the vTunnelName */ - public String getvTunnelName() { + public final String getvTunnelName() { return vTunnelName; } + private static final Logger LOG = Logger.getLogger(VTunnelResource.class .getName()); + /** * Instantiates a new v tunnel resource. */ @@ -67,6 +71,7 @@ public class VTunnelResource extends AbstractResource { setValidator(new VTunnelResourceValidator(this)); LOG.trace("Complete VTunnelResource#VTunnelResource()"); } + /** * Implementation of put method of VTunnels * @@ -77,7 +82,8 @@ public class VTunnelResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelResource#put()"); ClientSession session = null; @@ -126,6 +132,7 @@ public class VTunnelResource extends AbstractResource { LOG.trace("Complete VTunnelResource#put()"); return status; } + /** * Implementation of delete method of VTunnels * @@ -133,7 +140,7 @@ public class VTunnelResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VTunnelResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -182,6 +189,7 @@ public class VTunnelResource extends AbstractResource { LOG.trace("Complete VTunnelResource#delete()"); return status; } + /** * Implementation of get method of VTunnels * @@ -214,12 +222,12 @@ public class VTunnelResource extends AbstractResource { && requestBody.get(VtnServiceJsonConsts.TARGETDB) .getAsString() .equalsIgnoreCase(VtnServiceJsonConsts.STATE)) { - IpcStruct valStruct = new IpcStruct( + final IpcStruct valStruct = new IpcStruct( UncStructEnum.ValVtunnel.getValue()); requestProcessor.getRequestPacket().setValStruct(valStruct); LOG.debug("Add ValVtunnelSt in Request Packet"); - IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; - IpcStruct valStructSt = new IpcStruct( + final IpcDataUnit[] extraDataUnits = new IpcDataUnit[1]; + final IpcStruct valStructSt = new IpcStruct( UncStructEnum.ValVtunnelSt.getValue()); extraDataUnits[0] = valStructSt; requestProcessor.getRequestPacket().setExtraDataUnits( @@ -229,7 +237,7 @@ public class VTunnelResource extends AbstractResource { status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); LOG.debug("Complete Ipc framework call"); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVTunnelResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); @@ -260,6 +268,7 @@ public class VTunnelResource extends AbstractResource { LOG.trace("Complete VTunnelResource#get()"); return status; } + /** * Add URI parameters to list * @@ -267,7 +276,7 @@ public class VTunnelResource extends AbstractResource { */ private List getUriParameters() { LOG.trace("Start VTunnelResource#getUriParameters()"); - List uriParameters = new ArrayList(); + final List uriParameters = new ArrayList(); uriParameters.add(vtnName); uriParameters.add(vTunnelName); LOG.trace("Completed VTunnelResource#getUriParameters()"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelsResource.java index 876cf730..bb35fd1b 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VTunnelsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -45,7 +45,7 @@ public class VTunnelsResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -72,7 +72,8 @@ public class VTunnelsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelsResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -132,7 +133,8 @@ public class VTunnelsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelsResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -166,26 +168,23 @@ public class VTunnelsResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); /* * setInfo(responseGenerator.getVTunnelResponse( * requestProcessor.getIpcResponsePacket(), requestBody, * VtnServiceJsonConsts.LIST)); */ - JsonObject responseJson = responseGenerator - .getVTunnelResponse( - requestProcessor.getIpcResponsePacket(), - requestBody, VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.VTUNNELS) - .isJsonArray()) { - JsonArray responseArray = responseJson.get( + JsonObject responseJson = responseGenerator.getVTunnelResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.LIST); + if (responseJson.get(VtnServiceJsonConsts.VTUNNELS).isJsonArray()) { + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VTUNNELS).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, requestProcessor, responseGenerator, responseArray, VtnServiceJsonConsts.VTUNNELS, VtnServiceJsonConsts.VTUNNELNAME, - IpcRequestPacketEnum.KT_VTUNNEL_GET, - uriParameterList, + IpcRequestPacketEnum.KT_VTUNNEL_GET, uriParameterList, VtnServiceIpcConsts.GET_VTUNNEL_RESPONSE); } setInfo(responseJson); @@ -225,9 +224,9 @@ public class VTunnelsResource extends AbstractResource { * the request body * @return the uri parameters */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Start VTunnelsResource#getUriParameters()"); - List uriParameters = new ArrayList(); + final List uriParameters = new ArrayList(); uriParameters.add(vtnName); if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX) diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapResource.java index 84c0cd12..f0f85a3d 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,7 +36,8 @@ import org.opendaylight.vtn.javaapi.validation.logical.VLanMapResourceValidator; * @version 1.0 */ /* This class handles delete, put and get methods */ -@UNCVtnService(path = "/vtns/{vtn_name}/vbridges/{vbr_name}/vlanmaps/{vlanmap_id}") +@UNCVtnService( + path = "/vtns/{vtn_name}/vbridges/{vbr_name}/vlanmaps/{vlanmap_id}") public class VlanMapResource extends AbstractResource { /** The vtn name. */ @UNCField("vtn_name") @@ -56,7 +57,7 @@ public class VlanMapResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -65,7 +66,7 @@ public class VlanMapResource extends AbstractResource { * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -74,7 +75,7 @@ public class VlanMapResource extends AbstractResource { * * @return the vlan map id */ - public String getVlanMapId() { + public final String getVlanMapId() { return vlanMapId; } @@ -95,7 +96,7 @@ public class VlanMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Start VlanMapResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -154,7 +155,8 @@ public class VlanMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VlanMapResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -213,7 +215,8 @@ public class VlanMapResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VlanMapResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -234,7 +237,7 @@ public class VlanMapResource extends AbstractResource { LOG.debug("Request Packet created successfully"); status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); - IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); setInfo(responseGenerator.getVlanMapResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapsResource.java index e3cc0d8b..683a5a14 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VlanMapsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -55,7 +55,7 @@ public class VlanMapsResource extends AbstractResource { * * @return the vtn name */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } @@ -64,7 +64,7 @@ public class VlanMapsResource extends AbstractResource { * * @return the vbr name */ - public String getVbrName() { + public final String getVbrName() { return vbrName; } @@ -88,7 +88,8 @@ public class VlanMapsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VlanMapsResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -171,7 +172,8 @@ public class VlanMapsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VlanMapsResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -203,14 +205,15 @@ public class VlanMapsResource extends AbstractResource { requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.VLANMAPS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VLANMAPS).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.VLANMAPS, - VtnServiceJsonConsts.VLANMAPID, - IpcRequestPacketEnum.KT_VBR_VLANMAP_GET, - uriParameterList,VtnServiceIpcConsts.GET_VBRIDGE_VLANMAP_RESPONSE); + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.VLANMAPS, + VtnServiceJsonConsts.VLANMAPID, + IpcRequestPacketEnum.KT_VBR_VLANMAP_GET, + uriParameterList, + VtnServiceIpcConsts.GET_VBRIDGE_VLANMAP_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnDataFlowResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnDataFlowResource.java new file mode 100644 index 00000000..0c0a6df0 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnDataFlowResource.java @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.resources.logical; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor; +import org.opendaylight.vtn.javaapi.ipc.conversion.IpcLogicalResponseFactory; +import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncUPLLEnums; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.validation.logical.VtnDataFlowResourceValidator; + +/** + * The Class VtnDataFlowResource implements get methods. + */ +@UNCVtnService(path = "/vtns/{vtn_name}/dataflows") +public class VtnDataFlowResource extends AbstractResource { + + /** + * Instantiates a new VTN Data Flow resource. + */ + public VtnDataFlowResource() { + super(); + LOG.trace("Start VtnDataFlowResource#VtnDataFlowResource()"); + setValidator(new VtnDataFlowResourceValidator(this)); + LOG.trace("Completed VtnDataFlowResource#VtnDataFlowResource()"); + } + + /** The LOG. */ + private static final Logger LOG = Logger + .getLogger(VtnDataFlowResource.class.getName()); + + /** The vtn name. */ + @UNCField("vtn_name") + private String vtnName; + + /** + * Gets the vtn name. + * + * @return the vtn name + */ + public final String getVtnName() { + return vtnName; + } + + /** + * Implementation of get method of VTN Data Flow API + * + * @param requestBody + * the request Json object + * + * @return Error code + * @throws VtnServiceException + */ + @Override + public final int get(final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start VtnDataFlowResource#get()"); + ClientSession session = null; + IpcRequestProcessor requestProcessor = null; + int status = ClientSession.RESP_FATAL; + try { + LOG.debug("Start Ipc framework call"); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(), + getExceptionHandler()); + LOG.debug("Session created successfully"); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTN_DATAFLOW_GET, requestBody, + getUriParameters()); + LOG.debug("Request packet created successfully"); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet processed with status" + status); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + setInfo(responseGenerator.getVtnDataFlowResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.SHOW)); + LOG.debug("Response object created successfully"); + LOG.debug("Complete Ipc framework call"); + } catch (final VtnServiceException e) { + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); + throw e; + } finally { + if (status == ClientSession.RESP_FATAL) { + if (null != requestProcessor.getErrorJson()) { + setInfo(requestProcessor.getErrorJson()); + } else { + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); + } + status = UncResultCode.UNC_SERVER_ERROR.getValue(); + } + getConnPool().destroySession(session); + } + LOG.trace("Completed VtnDataFlowResource#get()"); + return status; + } + + /** + * Add URI parameters to list + * + * @return + */ + private List getUriParameters() { + LOG.trace("Start VtnDataFlowResource#getUriParameters()"); + final List uriParameters = new ArrayList(); + uriParameters.add(vtnName); + LOG.trace("Completed VtnDataFlowResource#getUriParameters()"); + return uriParameters; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnMappingResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnMappingResource.java new file mode 100644 index 00000000..6039dc55 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnMappingResource.java @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.resources.logical; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor; +import org.opendaylight.vtn.javaapi.ipc.conversion.IpcLogicalResponseFactory; +import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncUPLLEnums; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.validation.logical.VtnMappingResourceValidator; + +/** + * The Class VtnMappingResource implements get methods. + */ +@UNCVtnService(path = "/vtns/{vtn_name}/mappings/{mapping_id}") +public class VtnMappingResource extends AbstractResource { + + /** The Constant LOG. */ + private static final Logger LOG = Logger.getLogger(VtnMappingResource.class + .getName()); + + /** The vtn name. */ + @UNCField("vtn_name") + private String vtnName; + + /** The mapping id. */ + @UNCField("mapping_id") + private String mappingId; + + /** + * @return the vtnName + */ + public final String getVtnName() { + return vtnName; + } + + /** + * @return the mappingId + */ + public final String getMappingId() { + return mappingId; + } + + /** + * Instantiates a new VTN Mapping resource. + */ + public VtnMappingResource() { + LOG.trace("Start VtnMappingResource#VtnMappingResource()"); + setValidator(new VtnMappingResourceValidator(this)); + LOG.trace("Completed VtnMappingResource#VtnMappingResource()"); + } + + /** + * Implementation of get method of vtn mapping API + * + * @param requestBody + * the request Json object + * + * @return Error code + * @throws VtnServiceException + */ + @Override + public final int get(final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start VtnMappingResource#get()"); + ClientSession session = null; + IpcRequestProcessor requestProcessor = null; + int status = ClientSession.RESP_FATAL; + try { + LOG.debug("Start Ipc framework call"); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(), + getExceptionHandler()); + LOG.debug("Session created successfully"); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTN_MAPPING_CONTROLLER_GET, + requestBody, getUriParameters()); + LOG.debug("Request packet created successfully"); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet processed with status" + status); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + setInfo(responseGenerator.getVtnMappingResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.SHOW)); + LOG.debug("Response object created successfully"); + LOG.debug("Complete Ipc framework call"); + } catch (final VtnServiceException e) { + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); + throw e; + } finally { + if (status == ClientSession.RESP_FATAL) { + if (null != requestProcessor.getErrorJson()) { + setInfo(requestProcessor.getErrorJson()); + } else { + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); + } + status = UncResultCode.UNC_SERVER_ERROR.getValue(); + } + getConnPool().destroySession(session); + } + LOG.trace("Completed VtnMappingResource#get()"); + return status; + } + + /** + * Add URI parameters to list + * + * @return + */ + private List getUriParameters() { + LOG.trace("Start VtnMappingResource#getUriParameters()"); + final List uriParameters = new ArrayList(); + uriParameters.add(vtnName); + uriParameters.add(mappingId); + LOG.trace("Completed VtnMappingResource#getUriParameters()"); + return uriParameters; + } + +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnMappingsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnMappingsResource.java new file mode 100644 index 00000000..6a35a9fa --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnMappingsResource.java @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.resources.logical; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceIpcConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor; +import org.opendaylight.vtn.javaapi.ipc.conversion.IpcLogicalResponseFactory; +import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncUPLLEnums; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.validation.logical.VtnMappingResourceValidator; + +/** + * The Class VtnMappingsResource implements get methods. + */ +@UNCVtnService(path = "/vtns/{vtn_name}/mappings") +public class VtnMappingsResource extends AbstractResource { + + /** The Constant LOG. */ + private static final Logger LOG = Logger + .getLogger(VtnMappingsResource.class.getName()); + + /** The vtn name. */ + @UNCField("vtn_name") + private String vtnName; + + /** + * @return the vtnName + */ + public final String getVtnName() { + return vtnName; + } + + /** + * Instantiates a new VTN Mapping resource. + */ + public VtnMappingsResource() { + LOG.trace("Start VtnMappingsResource#VtnMappingsResource()"); + setValidator(new VtnMappingResourceValidator(this)); + LOG.trace("Completed VtnMappingsResource#VtnMappingsResource()"); + } + + /** + * Implementation of Get method of vtn mapping API + * + * @param requestBody + * the request Json object + * + * @return Error code + * @throws VtnServiceException + */ + @Override + public final int get(final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start VtnMappingsResource#get()"); + ClientSession session = null; + IpcRequestProcessor requestProcessor = null; + int status = ClientSession.RESP_FATAL; + try { + LOG.debug("Start Ipc framework call"); + session = getConnPool().getSession( + UncUPLLEnums.UPLL_IPC_CHANNEL_NAME, + UncUPLLEnums.UPLL_IPC_SERVICE_NAME, + UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(), + getExceptionHandler()); + LOG.debug("Session created successfully"); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + // Uriparamter list + final List uriParameterList = getUriParameters(requestBody); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_VTN_MAPPING_CONTROLLER_GET, + requestBody, uriParameterList); + LOG.debug("Request packet created successfully"); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet processed with status" + status); + final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); + JsonObject responseJson = responseGenerator.getVtnMappingResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.LIST); + + if (responseJson.get(VtnServiceJsonConsts.MAPPINGS).isJsonArray()) { + final JsonArray responseArray = responseJson.get( + VtnServiceJsonConsts.MAPPINGS).getAsJsonArray(); + responseJson = getResponseJsonArrayLogical(requestBody, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.MAPPINGS, + VtnServiceJsonConsts.MAPPINGID, + IpcRequestPacketEnum.KT_VTN_MAPPING_CONTROLLER_GET, + uriParameterList, + VtnServiceIpcConsts.GET_VTN_MAPPING_RESPONSE); + } + setInfo(responseJson); + LOG.debug("Response object created successfully"); + LOG.debug("Complete Ipc framework call"); + } catch (final VtnServiceException e) { + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); + throw e; + } finally { + if (status == ClientSession.RESP_FATAL) { + if (null != requestProcessor.getErrorJson()) { + setInfo(requestProcessor.getErrorJson()); + } else { + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); + } + status = UncResultCode.UNC_SERVER_ERROR.getValue(); + } + getConnPool().destroySession(session); + } + LOG.trace("Completed VtnMappingsResource#get()"); + return status; + } + + /** + * Add URI parameters to list + * + * @return + */ + private List getUriParameters(final JsonObject requestBody) { + LOG.trace("Start VtnMappingsResource#getUriParameters()"); + final List uriParameters = new ArrayList(); + uriParameters.add(vtnName); + if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { + uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX) + .getAsString()); + } + LOG.trace("Completed VtnMappingsResource#getUriParameters()"); + return uriParameters; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnResource.java index e1db38b8..bf7ec976 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -40,6 +40,7 @@ public class VtnResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger.getLogger(VtnResource.class .getName()); + /** * Instantiates a new vtn resource. */ @@ -49,12 +50,14 @@ public class VtnResource extends AbstractResource { setValidator(new VtnResourceValidator(this)); LOG.trace("Completed VtnResource#VtnResource()"); } + /** * @return the vtnName */ - public String getVtnName() { + public final String getVtnName() { return vtnName; } + /** * Implementation of Put method of vtn API * @@ -65,7 +68,8 @@ public class VtnResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts VtnResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -113,6 +117,7 @@ public class VtnResource extends AbstractResource { LOG.trace("Completed VtnResource#put()"); return status; } + /** * Implementation of Delete method of vtn API * @@ -120,7 +125,7 @@ public class VtnResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts VtnResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -168,6 +173,7 @@ public class VtnResource extends AbstractResource { LOG.trace("Completed VtnResource#delete()"); return status; } + /** * Implementation of get method of vtn API * @@ -178,7 +184,8 @@ public class VtnResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VtnResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -231,6 +238,7 @@ public class VtnResource extends AbstractResource { LOG.trace("Completed VtnResource#get()"); return status; } + /** * Add URI parameters to list * diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnStationsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnStationsResource.java index d1a8a5d0..b2c3fafa 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnStationsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnStationsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,6 +36,7 @@ import org.opendaylight.vtn.javaapi.validation.logical.VtnStationsResourceValida public class VtnStationsResource extends AbstractResource { private static final Logger LOG = Logger .getLogger(VtnStationsResource.class.getName()); + /** * Instantiates a new vtn stations resource. */ @@ -44,6 +45,7 @@ public class VtnStationsResource extends AbstractResource { setValidator(new VtnStationsResourceValidator(this)); LOG.trace("Completed VtnStationsResource#VtnStationsResource()"); } + /** * Implementation of get method of VtnStations * @@ -54,7 +56,8 @@ public class VtnStationsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VtnStationsResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnsResource.java index 6492cd82..46c0e7b4 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/VtnsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,6 +38,7 @@ public class VtnsResource extends AbstractResource { /** The Constant LOG. */ private static final Logger LOG = Logger.getLogger(VtnsResource.class .getName()); + /** * Instantiates a new vtns resource. */ @@ -46,6 +47,7 @@ public class VtnsResource extends AbstractResource { setValidator(new VtnResourceValidator(this)); LOG.trace("Completed VtnsResource#VtnsResource()"); } + /** * Implementation of Post method of vtn API * @@ -80,14 +82,14 @@ public class VtnsResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -104,6 +106,7 @@ public class VtnsResource extends AbstractResource { LOG.trace("Completed VtnsResource#put()"); return status; } + /** * Implementation of Get method of vtn API * @@ -138,36 +141,38 @@ public class VtnsResource extends AbstractResource { status = requestProcessor.processIpcRequest(); LOG.debug("Request packet processed with status" + status); final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory(); - /*setInfo(responseGenerator.getVtnResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST));*/ + /* + * setInfo(responseGenerator.getVtnResponse( + * requestProcessor.getIpcResponsePacket(), requestBody, + * VtnServiceJsonConsts.LIST)); + */ JsonObject responseJson = responseGenerator.getVtnResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.VTNS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.VTNS).getAsJsonArray(); responseJson = getResponseJsonArrayLogical(requestBody, - requestProcessor,responseGenerator, - responseArray, VtnServiceJsonConsts.VTNS, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.VTNS, VtnServiceJsonConsts.VTNNAME, - IpcRequestPacketEnum.KT_VTN_GET, - uriParameterList,VtnServiceIpcConsts.GET_VTN_RESPONSE); + IpcRequestPacketEnum.KT_VTN_GET, uriParameterList, + VtnServiceIpcConsts.GET_VTN_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -184,6 +189,7 @@ public class VtnsResource extends AbstractResource { LOG.trace("Completed VtnsResource#get()"); return status; } + /** * Add URI parameters to list * @@ -199,4 +205,4 @@ public class VtnsResource extends AbstractResource { LOG.trace("Completed VtnsResource#getUriParameters()"); return uriParameters; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/package-info.java new file mode 100644 index 00000000..fedbebe7 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/logical/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Resource classes for logical APIs . + */ +package org.opendaylight.vtn.javaapi.resources.logical; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/DestinationControllerResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/DestinationControllerResource.java new file mode 100644 index 00000000..4800b02c --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/DestinationControllerResource.java @@ -0,0 +1,304 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dao.DestinationControllerDao; +import org.opendaylight.vtn.javaapi.openstack.validation.DestinationControllerResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling PUT, DELETE and GET requests for Destination + * Controller + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.DEST_CTRL_PATH) +public class DestinationControllerResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(DestinationControllerResource.class.getName()); + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public DestinationControllerResource() { + setValidator(new DestinationControllerResourceValidator(this)); + } + + /** + * Handler method for PUT operation of DestinationController + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#put(com. + * google.gson.JsonObject) + */ + @Override + public int put(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start TenantResource#put()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + Connection connection = null; + + final String controllerId = requestBody.get( + VtnServiceOpenStackConsts.ID).getAsString(); + + try { + LOG.debug("Set operation for controller_id : " + controllerId); + + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + final RestResource restResource = new RestResource(); + + /* + * execute Get Controller request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.CTRL_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(controllerId); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + errorCode = restResource.get(new JsonObject()); + + if (errorCode == UncResultCode.UNC_SUCCESS.getValue()) { + if (restResource.getInfo().get(VtnServiceJsonConsts.CONTROLLER) + .isJsonNull() + || restResource.getInfo().getAsJsonObject() + .get(VtnServiceJsonConsts.CONTROLLER) + .getAsJsonObject() + .get(VtnServiceJsonConsts.CONTROLLERID) + .getAsString().isEmpty()) { + + LOG.error("Controller does not exist at UNC."); + + createErrorInfo( + UncResultCode.UNC_CTRL_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CTRL_NOT_FOUND + .getMessage(), + VtnServiceJsonConsts.CONTROLLERID, + controllerId)); + } else { + LOG.info("Controller exists at UNC."); + + final DestinationControllerDao destControllerDao = new DestinationControllerDao(); + final int status = destControllerDao + .setDestinationController(connection, controllerId); + + if (status == 1) { + isCommitRequired = true; + errorCode = UncResultCode.UNC_SUCCESS.getValue(); + LOG.info("Database insertion is successful for Controller id."); + } else { + LOG.error("Database insertion is failed for Controller id."); + } + } + } + + /* + * If all processing are OK, commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("commit successful"); + } else { + connection.rollback(); + LOG.info("roll-back successful"); + } + + /* + * set response, if it is not set during processing for set + * destination controller + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + + } catch (final SQLException exception) { + LOG.error("Internal server error ocuurred."); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during setting controller id"); + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND.getMessage(), + VtnServiceJsonConsts.CONTROLLERID, controllerId)); + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete TenantResource#put()"); + return errorCode; + } + + /** + * Handler method for DELETE operation of DestinationController + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#delete() + */ + @Override + public int delete() throws VtnServiceException { + LOG.trace("Start TenantResource#delete()"); + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + LOG.info("Controller exists at UNC."); + + final DestinationControllerDao destControllerDao = new DestinationControllerDao(); + final int status = destControllerDao + .deleteDestinationController(connection); + + if (status == 1) { + isCommitRequired = true; + errorCode = UncResultCode.UNC_SUCCESS.getValue(); + LOG.info("Database deletion is successful for Controller id."); + } else { + LOG.error("Database deletion is failed for Controller id."); + createErrorInfo( + UncResultCode.UNC_CTRL_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CTRL_NOT_FOUND.getMessage(), + VtnServiceJsonConsts.CONTROLLERID, + VtnServiceConsts.EMPTY_STRING)); + } + + /* + * If all processing are OK, commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("commit successful"); + } else { + connection.rollback(); + LOG.info("roll-back successful"); + } + + /* + * set response, if it is not set during processing for set + * destination controller + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error ocuurred."); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete TenantResource#delete()"); + return errorCode; + } + + /** + * Handler method for GET operation of DestinationController + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#get() + */ + @Override + public int get() throws VtnServiceException { + LOG.trace("Start TenantResource#get()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + final DestinationControllerDao destControllerDao = new DestinationControllerDao(); + final String controllerId = destControllerDao + .getDestinationController(connection); + + final JsonObject root = new JsonObject(); + if (controllerId != null && !controllerId.isEmpty()) { + errorCode = UncResultCode.UNC_SUCCESS.getValue(); + LOG.info("Database retrieval is successful for Controller id."); + root.addProperty(VtnServiceOpenStackConsts.ID, controllerId); + setInfo(root); + } else { + LOG.info("Controller id not available."); + createErrorInfo( + UncResultCode.UNC_CTRL_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CTRL_NOT_FOUND.getMessage(), + VtnServiceJsonConsts.CONTROLLERID, + VtnServiceConsts.EMPTY_STRING)); + } + } catch (final SQLException exception) { + LOG.error("Internal server error ocuurred."); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null) { + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete TenantResource#get()"); + return errorCode; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/NetworkResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/NetworkResource.java new file mode 100644 index 00000000..3ef0775f --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/NetworkResource.java @@ -0,0 +1,347 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.VbrResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.NetworkResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling PUT and DELETE requests for Network + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.NETWORK_PATH) +public class NetworkResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(NetworkResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.NET_ID) + private String netId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public NetworkResource() { + setValidator(new NetworkResourceValidator(this)); + } + + /** + * Getter of tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter of netId + * + * @return + */ + public String getNetId() { + return netId; + } + + /** + * Handler method for PUT operation of Network + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#put(com. + * google.gson.JsonObject) + */ + @Override + public int put(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start NetworkResource#put()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + final RestResource restResource = new RestResource(); + + errorCode = updateVBridge(requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("vBridge Update at UNC is successful."); + } else { + LOG.info("vBridge Update at UNC is failed."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource not found error."); + } + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null) { + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete NetworkResource#put()"); + return errorCode; + } + + /** + * Handler method for DELETE operation of Network + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#delete() + */ + @Override + public int delete() throws VtnServiceException { + LOG.trace("Start NetworkResource#delete()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + final VBridgeBean vBridgeBean = new VBridgeBean(); + + final String counter = getNetId().replace( + VtnServiceOpenStackConsts.VBR_PREFIX, + VtnServiceConsts.EMPTY_STRING); + try { + vBridgeBean.setVbrId(Integer.parseInt(counter)); + } catch (final NumberFormatException e) { + LOG.debug("Resource Id was not auto-generated during Create operation : " + + counter); + vBridgeBean.setVbrId(0); + } + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + + vBridgeBean.setVtnName(getTenantId()); + vBridgeBean.setVbrName(getNetId()); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.NETWORK_RES_ID); + freeCounterBean.setVtnName(getTenantId()); + freeCounterBean.setResourceCounter(vBridgeBean.getVbrId()); + + if (resourceIdManager.deleteResourceId(connection, + freeCounterBean, vBridgeBean)) { + LOG.info("Deletion operation from database is successfull."); + + final RestResource restResource = new RestResource(); + + errorCode = deleteVBridge(restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("vBridge Deletion successful at UNC."); + isCommitRequired = true; + } else { + LOG.error("vBridge Deletion failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.info("Deletion operation from database is falied."); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource insertion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource insertion is roll-backed."); + } + + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error ocuurred."); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete NetworkResource#delete()"); + return errorCode; + } + + /** + * Delete VBridge at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int deleteVBridge(final RestResource restResource) { + /* + * execute delete vBridge request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + return restResource.delete(); + } + + /** + * Update VBridge at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int updateVBridge(JsonObject requestBody, + final RestResource restResource) { + /* + * Create request body for vBridge update + */ + final JsonObject vbrRequestBody = VbrResourcesGenerator + .getUpdateVbrRequestBody(requestBody); + + /* + * execute update vBridge request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.put(vbrRequestBody); + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VBridgeBean vBridgeBean = new VBridgeBean(); + vBridgeBean.setVtnName(getTenantId()); + vBridgeBean.setVbrName(getNetId()); + if (new VBridgeDao().isVbrFound(connection, vBridgeBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.NET_ID, getNetId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/NetworksResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/NetworksResource.java new file mode 100644 index 00000000..bd0e9b8a --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/NetworksResource.java @@ -0,0 +1,324 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.VbrResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.DestinationControllerDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.NetworkResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling POST requests for Network + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.NETWORKS_PATH) +public class NetworksResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(NetworksResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public NetworksResource() { + setValidator(new NetworkResourceValidator(this)); + } + + /** + * Getter of tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Handler method for POST operation of Network + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#post(com + * .google.gson.JsonObject) + */ + @Override + public int post(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start NetworksResource#post()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + String generatedVbrName = null; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + int counter = -1; + /* + * auto-generation process, based on the availability of "id" + * parameter in request body + */ + if (!requestBody.has(VtnServiceOpenStackConsts.ID)) { + LOG.info("Resource id auto-generation is required."); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.NETWORK_RES_ID); + freeCounterBean.setVtnName(getTenantId()); + + counter = resourceIdManager.getResourceId(connection, + freeCounterBean); + if (counter != -1) { + LOG.debug("Resource id auto-generation is successfull : " + + counter); + // if id is generated successfully + generatedVbrName = VtnServiceOpenStackConsts.VBR_PREFIX + + counter; + requestBody.addProperty(VtnServiceOpenStackConsts.ID, + generatedVbrName); + } else { + LOG.error("Resource id auto-generation is failed."); + } + } else { + LOG.info("Resource id auto-generation is not required."); + counter = 0; + generatedVbrName = requestBody.get( + VtnServiceOpenStackConsts.ID).getAsString(); + } + + LOG.debug("Counter : " + counter); + LOG.debug("vbr_name : " + generatedVbrName); + + if (counter >= 0 && setControllerId(connection, requestBody)) { + /* + * resource insertion in database, if is is successful then + * continue to execute operations at UNC. Otherwise return + * HTTP 409 + */ + final VBridgeBean vBridgeBean = new VBridgeBean(); + vBridgeBean.setVbrId(counter); + vBridgeBean.setVtnName(getTenantId()); + vBridgeBean.setVbrName(generatedVbrName); + + final VBridgeDao vBridgeDao = new VBridgeDao(); + final int status = vBridgeDao.insert(connection, + vBridgeBean); + + if (status == 1) { + LOG.info("Resource insertion successful at database operation."); + + final RestResource restResource = new RestResource(); + + errorCode = createVBridge(requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("vBridge creation is successful at UNC."); + isCommitRequired = true; + if (counter != 0) { + final JsonObject response = new JsonObject(); + response.addProperty(VtnServiceOpenStackConsts.ID, + generatedVbrName); + setInfo(response); + } + } else { + LOG.error("vBridge creation is failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource insertion failed at database operation."); + } + } else { + LOG.error("Error occurred while generation of id or setting controller_id"); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource insertion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource insertion is roll-backed."); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during creation of resource"); + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND.getMessage(), + VtnServiceOpenStackConsts.NET_ID, + generatedVbrName)); + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete NetworksResource#post()"); + return errorCode; + } + + /** + * Create VBridge at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int createVBridge(JsonObject requestBody, + final RestResource restResource) { + /* + * Create request body for vBridge creation + */ + final JsonObject vbrRequestBody = VbrResourcesGenerator + .getCreateVbrRequestBody(requestBody); + /* + * execute create vBridge request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.post(vbrRequestBody); + } + + /** + * Retrieve controller_id from database and add the parameter in request + * body + * + * @param connection + * - DB Connection instance + * @param requestBody + * - JSON request body + * @return - true, if controller_id is set + * @throws SQLException + */ + private boolean setControllerId(Connection connection, + JsonObject requestBody) throws SQLException { + boolean controllerAvailable = true; + final DestinationControllerDao destControllerDao = new DestinationControllerDao(); + final String controllerId = destControllerDao + .getDestinationController(connection); + + if (controllerId != null && !controllerId.isEmpty()) { + LOG.info("Database retrieval is successful for Controller id : " + + controllerId); + requestBody.addProperty(VtnServiceJsonConsts.CONTROLLERID, + controllerId); + } else { + LOG.error("Database retrieval is failed for Controller id."); + controllerAvailable = false; + createErrorInfo( + UncResultCode.UNC_CTRL_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CTRL_NOT_FOUND.getMessage(), + VtnServiceJsonConsts.CONTROLLERID, + VtnServiceConsts.EMPTY_STRING)); + } + return controllerAvailable; + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/PortResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/PortResource.java new file mode 100644 index 00000000..bdf469ea --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/PortResource.java @@ -0,0 +1,491 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeInterfaceDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.PortResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling DELETE requests for Port + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.PORT_PATH) +public class PortResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(PortResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.NET_ID) + private String netId; + + @UNCField(VtnServiceOpenStackConsts.PORT_ID) + private String portId; + + /** + * Getter of tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter of netId + * + * @return + */ + public String getNetId() { + return netId; + } + + /** + * Getter of portId + * + * @return + */ + public String getPortId() { + return portId; + } + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public PortResource() { + setValidator(new PortResourceValidator(this)); + } + + /** + * Handler method for DELETE operation of Port + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#delete() + */ + @Override + public int delete() throws VtnServiceException { + LOG.trace("Start PortResource#delete()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + final VBridgeInterfaceBean vInterfaceBean = new VBridgeInterfaceBean(); + vInterfaceBean.setVtnName(getTenantId()); + vInterfaceBean.setVbrName(getNetId()); + vInterfaceBean.setVbrIfName(VtnServiceOpenStackConsts.IF_PREFIX + + getPortId()); + + final String counter = getPortId().replace( + VtnServiceOpenStackConsts.IF_PREFIX, + VtnServiceConsts.EMPTY_STRING); + try { + vInterfaceBean.setVbrIfId(Integer.parseInt(counter)); + } catch (final NumberFormatException e) { + LOG.debug("Resource Id was not auto-generated during Create operation : " + + counter); + vInterfaceBean.setVbrIfId(0); + } + + final VBridgeInterfaceDao vBridgeInterfaceDao = new VBridgeInterfaceDao(); + + /* + * retrieve map_type if vlan-map required to + * be delete + */ + final String mapType = vBridgeInterfaceDao.getMapType( + connection, vInterfaceBean); + + /* + * retrieve logical_port_id if vlan-map required to + * be delete + */ + String logicalPortId = vBridgeInterfaceDao + .getLogicalPortId(connection, + vInterfaceBean); + + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.PORT_RES_ID); + freeCounterBean.setVtnName(getTenantId()); + freeCounterBean.setResourceCounter(vInterfaceBean.getVbrIfId()); + + if (resourceIdManager.deleteResourceId(connection, + freeCounterBean, vInterfaceBean)) { + /* + * delete vlan-map or vbridge-interface on the basis of + * entry from database for map_type + */ + if (mapType != null) { + final RestResource restResource = new RestResource(); + if (mapType + .equalsIgnoreCase(VtnServiceJsonConsts.VLANMAP)) { + LOG.info("vlan-map operation were performed during create Port. vlan-map deletion is required."); + int mapModeValue; + // read property for map-mode + mapModeValue = Integer + .parseInt(VtnServiceInitManager + .getConfigurationMap() + .getMapModeValue()); + /* + * map-mode value : 0 - delete vlan-map map-mode + * value : 1 - delete all vlan-map map-mode value : + * 2 - do nothing + */ + if (mapModeValue == 0) { + errorCode = deleteVlanMapModeZero(logicalPortId, + restResource); + } else if (mapModeValue == 1) { + // retrieve list of all vlan-maps + JsonArray vlanmaps = getVlanMapList( + restResource).get( + VtnServiceJsonConsts.VLANMAPS) + .getAsJsonArray(); + if (vlanmaps != null && vlanmaps.size() != 0) { + boolean counterDeletion = deleteIfCounters( + connection, vInterfaceBean, + vBridgeInterfaceDao, + resourceIdManager, freeCounterBean); + if (counterDeletion) { + // delete all vlan-map one by one + for (JsonElement vlanmap : vlanmaps) { + logicalPortId = vlanmap + .getAsJsonObject() + .get(VtnServiceJsonConsts.VLANMAPID) + .getAsString(); + errorCode = deleteVlanMap( + restResource, logicalPortId); + if (errorCode != UncResultCode.UNC_SUCCESS + .getValue()) { + /* + * break if error occurred while + * deletion of vlan-map + */ + break; + } + } + } + } else { + LOG.info("No vlan-map is configured"); + } + } else if (mapModeValue == 2) { + LOG.debug("map-mode value : 2"); + errorCode = UncResultCode.UNC_SUCCESS + .getValue(); + } else { + throw new IllegalArgumentException( + "incorrect map-mode value."); + } + } else if (mapType + .equalsIgnoreCase(VtnServiceJsonConsts.PORTMAP)) { + LOG.info("port-map operation were performed during create Port. vBridge interface deletion is required."); + errorCode = deleteVBridgeInterface(restResource); + } else { + LOG.error("Invalid Map type is resolved"); + } + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("port-map/vlan-map Deletion successful at UNC."); + isCommitRequired = true; + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("port-map/vlan-map Deletion failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Map type is not resolved"); + } + } else { + LOG.error("Deletion operation from database is falied."); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource deletion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource deletion is roll-backed."); + } + + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error ocuurred."); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete PortResource#delete()"); + return errorCode; + } + + /** + * Delete all counters for specific vtn_name and vbr_name + * + * @param connection + * @param vInterfaceBean + * @param vBridgeInterfaceDao + * @param resourceIdManager + * @param freeCounterBean + * @return + * @throws SQLException + */ + private boolean deleteIfCounters(Connection connection, + final VBridgeInterfaceBean vInterfaceBean, + final VBridgeInterfaceDao vBridgeInterfaceDao, + final ResourceIdManager resourceIdManager, + final FreeCounterBean freeCounterBean) throws SQLException { + boolean counterDeletion = true; + for (Integer ifId : vBridgeInterfaceDao.getVbrIfIds(connection, + vInterfaceBean)) { + freeCounterBean.setResourceCounter(ifId); + vInterfaceBean.setVbrIfId(ifId); + vInterfaceBean.setVbrIfName(VtnServiceOpenStackConsts.IF_PREFIX + + ifId); + if (resourceIdManager.deleteResourceId(connection, freeCounterBean, + vInterfaceBean)) { + LOG.debug("counter is deleted for : " + ifId); + } else { + LOG.info("counter deletion is failed for : " + ifId); + counterDeletion = false; + } + } + return counterDeletion; + } + + /** + * Perform delete vlan-map operations in case of map-mode is 0 + * + * @param errorCode + * @param logicalPortId + * @param restResource + * @return + */ + private int deleteVlanMapModeZero(String logicalPortId, + final RestResource restResource) { + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue();; + if (logicalPortId != null + && !logicalPortId.equalsIgnoreCase(VtnServiceJsonConsts.NONE)) { + if (!logicalPortId.equalsIgnoreCase(VtnServiceJsonConsts.NOLPID)) { + /* + * if logical_port_id not provided at the time of creation of + * vlan-map + */ + logicalPortId = VtnServiceJsonConsts.LPID + + VtnServiceConsts.HYPHEN + logicalPortId; + } + errorCode = deleteVlanMap(restResource, logicalPortId); + } + return errorCode; + } + + /** + * Delete Port-Map at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int deleteVBridgeInterface(RestResource restResource) { + int errorCode; + /* + * execute delete port-map request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(VtnServiceOpenStackConsts.IF_PREFIX); + sb.append(getPortId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + errorCode = restResource.delete(); + return errorCode; + } + + /** + * Create Vlan-Map at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int deleteVlanMap(RestResource restResource, String logicalPortId) { + /* + * execute delete vlan-map request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + sb.append(VtnServiceOpenStackConsts.VLANMAP_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(logicalPortId); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + return restResource.delete(); + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VBridgeBean vBridgeBean = new VBridgeBean(); + vBridgeBean.setVtnName(getTenantId()); + vBridgeBean.setVbrName(getNetId()); + if (new VBridgeDao().isVbrFound(connection, vBridgeBean)) { + VBridgeInterfaceBean vInterfaceBean = new VBridgeInterfaceBean(); + vInterfaceBean.setVtnName(getTenantId()); + vInterfaceBean.setVbrName(getNetId()); + vInterfaceBean.setVbrIfName(VtnServiceOpenStackConsts.IF_PREFIX + + getPortId()); + if (new VBridgeInterfaceDao().isVbrIfFound(connection, + vInterfaceBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.PORT_ID, + getPortId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.NET_ID, getNetId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } + + /** + * Retrieve list of vlan-map UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private JsonObject getVlanMapList(RestResource restResource) { + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + sb.append(VtnServiceOpenStackConsts.VLANMAP_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + restResource.get(new JsonObject()); + + return restResource.getInfo(); + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/PortsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/PortsResource.java new file mode 100644 index 00000000..5bac7af0 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/PortsResource.java @@ -0,0 +1,660 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.MapResourceGenerator; +import org.opendaylight.vtn.javaapi.openstack.convertor.VbrResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.DestinationControllerDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeInterfaceDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.PortResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling POST requests for Port + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.PORTS_PATH) +public class PortsResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(PortsResource.class + .getName()); + + private String controllerId = null; + private String logicalPortId = null; + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.NET_ID) + private String netId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public PortsResource() { + setValidator(new PortResourceValidator(this)); + } + + /** + * Getter of tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter of netId + * + * @return + */ + public String getNetId() { + return netId; + } + + /** + * Handler method for POST operation of Port + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#post(com + * .google.gson.JsonObject) + */ + @Override + public int post(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start NetworksResource#post()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + String generatedVbrIfName = null; + + int counter = -1; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + /* + * generate "id" is it is not present in request body + */ + if (!requestBody.has(VtnServiceOpenStackConsts.ID)) { + LOG.info("Resource id auto-generation is required."); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.PORT_RES_ID); + freeCounterBean.setVtnName(getTenantId()); + + counter = resourceIdManager.getResourceId(connection, + freeCounterBean); + if (counter != -1) { + LOG.debug("Resource id auto-generation is successfull : " + + counter); + // if id is generated successfully + generatedVbrIfName = VtnServiceOpenStackConsts.IF_PREFIX + + counter; + requestBody.addProperty(VtnServiceOpenStackConsts.ID, + generatedVbrIfName); + } + } else { + generatedVbrIfName = VtnServiceOpenStackConsts.IF_PREFIX + + requestBody.get(VtnServiceOpenStackConsts.ID) + .getAsString(); + requestBody.addProperty(VtnServiceOpenStackConsts.ID, + generatedVbrIfName); + counter = 0; + } + + LOG.debug("Counter : " + counter); + LOG.debug("if_name : " + generatedVbrIfName); + + if (counter >= 0) { + /* + * resource insertion in database, if is is successful then + * continue to execute operations at UNC. Otherwise return + * HTTP 409 + */ + final VBridgeInterfaceBean vInterfaceBean = new VBridgeInterfaceBean(); + + vInterfaceBean.setVbrIfId(counter); + vInterfaceBean.setVtnName(getTenantId()); + vInterfaceBean.setVbrName(getNetId()); + vInterfaceBean.setVbrIfName(generatedVbrIfName); + /* + * initialize with default port-map setting. It should be + * updated when vlan-map operation is performed + */ + vInterfaceBean.setMapType(VtnServiceJsonConsts.PORTMAP); + vInterfaceBean.setLogicalPortId(VtnServiceJsonConsts.NONE); + + final VBridgeInterfaceDao vInterfaceDao = new VBridgeInterfaceDao(); + int status = vInterfaceDao.insert(connection, + vInterfaceBean); + + if (status == 1) { + LOG.info("Resource insertion successful at database operation."); + + final RestResource restResource = new RestResource(); + + final JsonElement port = requestBody + .get(VtnServiceOpenStackConsts.PORT); + + if (port.isJsonNull() + || port.getAsString().equalsIgnoreCase( + VtnServiceOpenStackConsts.NULL)) { + /* + * if port is specified as NULL then vlan-map + * operations are required to be performed + */ + errorCode = performVlanMapOperations(requestBody, + restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("vlan-map Creation at UNC is successful."); + + vInterfaceBean + .setMapType(VtnServiceJsonConsts.VLANMAP); + vInterfaceBean.setLogicalPortId(logicalPortId); + + /** + * if operation is performed for vlan-map then + * update map_type and logical_port_id in + * database + */ + if (vInterfaceDao.updateVlanMapInfo(connection, + vInterfaceBean) == 1) { + isCommitRequired = true; + if (counter != 0) { + final JsonObject response = new JsonObject(); + response.addProperty( + VtnServiceOpenStackConsts.ID, + String.valueOf(counter)); + setInfo(response); + } + LOG.info("map_type and logical_port_id successfully updated in database."); + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("map_type and logical_port_id update failed in database."); + } + } else { + LOG.error("vlan-map Creation at UNC is failed."); + } + } else { + /* + * if port is not specified as NULL then port-map + * operations are required to be performed + */ + if (setControllerId(connection, requestBody) == Boolean.TRUE) { + errorCode = performPortMapOperations( + requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + isCommitRequired = true; + if (counter != 0) { + final JsonObject response = new JsonObject(); + response.addProperty( + VtnServiceOpenStackConsts.ID, + String.valueOf(counter)); + setInfo(response); + } + LOG.info("port-map Creation at UNC is successful."); + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("port-map Creation at UNC is failed."); + } + } else { + LOG.error("Error ocurred while setting controller_id"); + } + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource insertion failed at database operation."); + } + } else { + LOG.error("Error occurred while generation of id."); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource deletion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource deletion is roll-backed."); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during creation of resource"); + if (counter != 0) { + generatedVbrIfName = String.valueOf(counter); + } + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND.getMessage(), + VtnServiceOpenStackConsts.IF_ID, + generatedVbrIfName)); + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete NetworksResource#post()"); + return errorCode; + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VBridgeBean vBridgeBean = new VBridgeBean(); + vBridgeBean.setVtnName(getTenantId()); + vBridgeBean.setVbrName(getNetId()); + if (new VBridgeDao().isVbrFound(connection, vBridgeBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.NET_ID, getNetId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } + + /** + * Perform port-map creation related operation at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int performPortMapOperations(JsonObject requestBody, + RestResource restResource) { + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + /* + * Create request body for vBridge interface creation + */ + final JsonObject vbrIfRequestBody = VbrResourcesGenerator + .getCreateVbrIfRequestBody(requestBody); + + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + errorCode = restResource.post(vbrIfRequestBody); + + if (errorCode == UncResultCode.UNC_SUCCESS.getValue()) { + final String portName = getPortName(requestBody, restResource); + if (portName != null) { + requestBody + .addProperty(VtnServiceJsonConsts.PORTNAME, portName); + errorCode = createPortMap(requestBody, restResource); + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + LOG.error("Port Name not found."); + } + } + + return errorCode; + } + + /** + * Retrieve port_name from UNC for given port_id + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private String + getPortName(JsonObject requestBody, RestResource restResource) { + String portName = null; + final JsonObject portNameRequestBody = MapResourceGenerator + .getPortNameRequestBody(requestBody); + + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.CTRL_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(this.controllerId); + sb.append(VtnServiceOpenStackConsts.SWITCH_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getSwitchId(requestBody.get( + VtnServiceOpenStackConsts.DATAPATH_ID).getAsString())); + sb.append(VtnServiceOpenStackConsts.PHY_PORTS_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + if (restResource.get(portNameRequestBody) == UncResultCode.UNC_SUCCESS + .getValue()) { + JsonArray ports = restResource.getInfo() + .get(VtnServiceJsonConsts.PORTS).getAsJsonArray(); + if (ports != null && ports.size() > 0) { + portName = ports.get(0).getAsJsonObject() + .get(VtnServiceJsonConsts.PORTNAME).getAsString(); + } + } + + return portName; + } + + /** + * Retrieve controller_id from database and set to request body + * + * @param connection + * - DB Connection instance + * @param requestBody + * - OpenStack JSON request body + * @return - true, only if controller_id is set + * @throws SQLException + */ + private boolean setControllerId(Connection connection, + JsonObject requestBody) throws SQLException { + boolean status = true; + final DestinationControllerDao destControllerDao = new DestinationControllerDao(); + final String controllerId = destControllerDao + .getDestinationController(connection); + + if (controllerId != null && !controllerId.isEmpty()) { + LOG.info("Database retrieval is successful for Controller id : " + + controllerId); + requestBody.addProperty(VtnServiceJsonConsts.CONTROLLERID, + controllerId); + this.controllerId = controllerId; + } else { + LOG.error("Database retrieval is failed for Controller id."); + createErrorInfo( + UncResultCode.UNC_CTRL_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CTRL_NOT_FOUND.getMessage(), + VtnServiceJsonConsts.CONTROLLERID, + VtnServiceConsts.EMPTY_STRING)); + status = false; + } + return status; + } + + /** + * Resolve switch_id from datapath_id + * + * @param datapathId + * - OpenStack formatted datapath_id + * @return - switch_id + */ + private String getSwitchId(String datapathId) { + datapathId = datapathId.substring(2, datapathId.length()); + final StringBuilder sb = new StringBuilder(); + for (int toPrepend = 16 - datapathId.length(); toPrepend > 0; toPrepend--) { + sb.append('0'); + } + datapathId = sb.append(datapathId).toString(); + final String logicalPortIdPartFirst = datapathId.substring(0, 4); + final String logicalPortIdPartSecond = datapathId.substring(4, 8); + final String logicalPortIdPartThird = datapathId.substring(8, 12); + final String logicalPortIdPartFour = datapathId.substring(12, 16); + + return logicalPortIdPartFirst + VtnServiceConsts.HYPHEN + + logicalPortIdPartSecond + VtnServiceConsts.HYPHEN + + logicalPortIdPartThird + VtnServiceConsts.HYPHEN + + logicalPortIdPartFour; + } + + /** + * Perform Vlan-Map related operations at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int performVlanMapOperations(JsonObject requestBody, + RestResource restResource) { + int errorCode = UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue(); + int mapModeValue; + // read property for map-mode + mapModeValue = Integer.parseInt(VtnServiceInitManager + .getConfigurationMap().getMapModeValue()); + + if (mapModeValue == 0) { + // if map-mode is specified as 0, then return conflict error if + // count from UNC is greater than 0. If count is 0 then create + // vlan-map + if (getVlanMapCount(restResource) > 0) { + createErrorInfo(UncResultCode.UNC_CONFLICT_FOUND.getValue()); + } else { + errorCode = createVlanMap(requestBody, restResource); + } + } else if (mapModeValue == 1 || mapModeValue == 2) { + // if map-mode value is 1 or 2 then create vlan-map without + // checking count + errorCode = createVlanMap(requestBody, restResource); + } else { + throw new IllegalArgumentException("incorrect map-mode value."); + } + return errorCode; + } + + /** + * Retrieve vlan-map count from UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int getVlanMapCount(RestResource restResource) { + int count = -1; + JsonObject vlanmapRequestBody; + /* + * Create request body for vlan-map count + */ + vlanmapRequestBody = MapResourceGenerator.getVLanMapCountRequestBody(); + + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + sb.append(VtnServiceOpenStackConsts.VLANMAP_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + if (restResource.get(vlanmapRequestBody) == UncResultCode.UNC_SUCCESS + .getValue()) { + count = restResource.getInfo().get(VtnServiceJsonConsts.VLANMAPS) + .getAsJsonObject().get(VtnServiceJsonConsts.COUNT) + .getAsInt(); + } + return count; + } + + /** + * Create Vlan-Map at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int + createVlanMap(JsonObject requestBody, RestResource restResource) { + /* + * Create request body for vlan-map creation + */ + final JsonObject vlanmapRequestBody = MapResourceGenerator + .getCreateVlanMapRequestBody(requestBody); + + if (vlanmapRequestBody.get(VtnServiceJsonConsts.VLANMAP) + .getAsJsonObject().has(VtnServiceJsonConsts.LOGICAL_PORT_ID)) { + logicalPortId = vlanmapRequestBody + .get(VtnServiceJsonConsts.VLANMAP).getAsJsonObject() + .get(VtnServiceJsonConsts.LOGICAL_PORT_ID).getAsString(); + } else { + logicalPortId = VtnServiceJsonConsts.NOLPID; + } + + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + sb.append(VtnServiceOpenStackConsts.VLANMAP_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.post(vlanmapRequestBody); + } + + /** + * Create Port-Map at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int + createPortMap(JsonObject requestBody, RestResource restResource) { + /* + * Create request body for port-map creation + */ + final JsonObject vlanmapRequestBody = MapResourceGenerator + .getCreatePortMapRequestBody(requestBody); + + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getNetId()); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(requestBody.get(VtnServiceOpenStackConsts.ID).getAsString()); + sb.append(VtnServiceOpenStackConsts.PORTMAP_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.put(vlanmapRequestBody); + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouteResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouteResource.java new file mode 100644 index 00000000..422da5ab --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouteResource.java @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.apache.commons.net.util.SubnetUtils; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.StaticRouteBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dao.StaticRouteDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.RouteResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling DELETE requests for Static Routes + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.ROUTE_PATH) +public class RouteResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(RouteResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.ROUTER_ID) + private String routerId; + + @UNCField(VtnServiceOpenStackConsts.ROUTE_ID) + private String routeId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public RouteResource() { + setValidator(new RouteResourceValidator(this)); + } + + /** + * Getter for tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter for routerId + * + * @return + */ + public String getRouterId() { + return routerId; + } + + /** + * Getter for routeId + * + * @return + */ + public String getRouteId() { + return routeId; + } + + /** + * Handler method for DELETE operation of Route + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#delete() + */ + @Override + public int delete() throws VtnServiceException { + LOG.trace("Start RoutesResource#delete()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + final StaticRouteBean staticRouteBean = new StaticRouteBean(); + staticRouteBean.setVtnName(getTenantId()); + staticRouteBean.setVrtName(getRouterId()); + staticRouteBean.setRouteName(getRouteId()); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.DEFAULT_ROUTE); + freeCounterBean.setVtnName(getTenantId()); + freeCounterBean.setResourceCounter(0); + + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + + if (resourceIdManager.deleteResourceId(connection, + freeCounterBean, staticRouteBean)) { + LOG.info("Deletion operation from database is successfull."); + + final RestResource restResource = new RestResource(); + + errorCode = deleteStaticRoute(restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("static-route Deletion successful at UNC."); + isCommitRequired = true; + } else { + LOG.error("static-route Deletion failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.info("Deletion operation from database is falied."); + connection.rollback(); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource deletion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource deletion is roll-backed."); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete RoutesResource#delete()"); + return errorCode; + } + + /** + * Delete Static-Route at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int deleteStaticRoute(final RestResource restResource) { + /* + * execute delete static-route request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getRouterId()); + sb.append(VtnServiceOpenStackConsts.STATIC_ROUTE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(convertRouteId(getRouteId())); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.delete(); + } + + /** + * Convert UNC formatted route_id from OpenStack formatted route_id + * + * @param requestBody + * - OpenStack request body + * @return - generated route_id + */ + private String convertRouteId(String osRouteId) { + final String[] routeId = osRouteId.split(VtnServiceConsts.HYPHEN); + final SubnetUtils subnetUtils = new SubnetUtils(routeId[0], routeId[2]); + final String staticIpRouteId = routeId[0] + + VtnServiceConsts.HYPHEN + + routeId[1] + + VtnServiceConsts.HYPHEN + + subnetUtils.getInfo().getCidrSignature() + .split(VtnServiceConsts.SLASH)[1]; + return staticIpRouteId; + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VRouterBean vRouterBean = new VRouterBean(); + vRouterBean.setVtnName(getTenantId()); + vRouterBean.setVrtName(getRouterId()); + if (new VRouterDao().isVrtFound(connection, vRouterBean)) { + StaticRouteBean staticRouteBean = new StaticRouteBean(); + staticRouteBean.setVtnName(getTenantId()); + staticRouteBean.setVrtName(getRouterId()); + staticRouteBean.setRouteName(getRouteId()); + if (new StaticRouteDao().isStaticRouteFound(connection, + staticRouteBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTE_ID, + getRouteId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTER_ID, + getRouterId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterInterfaceResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterInterfaceResource.java new file mode 100644 index 00000000..227f0abf --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterInterfaceResource.java @@ -0,0 +1,469 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.VrtResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterInterfaceDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.RouterInterfaceResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling PUT and DELETE requests for Router Interface + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.ROUTER_INTERFACE_PATH) +public class RouterInterfaceResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(RouterInterfaceResource.class.getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.ROUTER_ID) + private String routerId; + + @UNCField(VtnServiceOpenStackConsts.IF_ID) + private String interfaceId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public RouterInterfaceResource() { + setValidator(new RouterInterfaceResourceValidator(this)); + } + + /** + * Getter of tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter of routerId + * + * @return + */ + public String getRouterId() { + return routerId; + } + + /** + * Getter of interfaceId + * + * @return + */ + public String getInterfaceId() { + return interfaceId; + } + + /** + * Handler method for PUT operation of Router Interface + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#put(com. + * google.gson.JsonObject) + */ + @Override + public int put(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start RouterInterfaceResource#put()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + final RestResource restResource = new RestResource(); + + errorCode = updateVRouterInterface(requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("vBridge Update at UNC is successful."); + } else { + LOG.info("vBridge Update at UNC is failed."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource not found error."); + } + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null) { + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + + LOG.trace("Complete RouterInterfaceResource#put()"); + return errorCode; + } + + /** + * Handler method for DELETE operation of Router Interface + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#delete() + */ + @Override + public int delete() throws VtnServiceException { + LOG.trace("Start RouterInterfaceResource#delete()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + final VRouterInterfaceBean vInterfaceBean = new VRouterInterfaceBean(); + vInterfaceBean.setVrtIfId(Integer.parseInt(getInterfaceId())); + vInterfaceBean.setVtnName(getTenantId()); + vInterfaceBean.setVrtName(getRouterId()); + vInterfaceBean.setVrtIfName(VtnServiceOpenStackConsts.IF_PREFIX + + getInterfaceId()); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.PORT_RES_ID); + freeCounterBean.setVtnName(getTenantId()); + freeCounterBean.setResourceCounter(vInterfaceBean.getVrtIfId()); + + final VRouterInterfaceDao vInterfaceDao = new VRouterInterfaceDao(); + final String vbrName = vInterfaceDao.getVbridgeName(connection, + vInterfaceBean); + + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + + if (resourceIdManager.deleteResourceId(connection, + freeCounterBean, vInterfaceBean)) { + LOG.info("Deletion operation from database is successfull."); + + final RestResource restResource = new RestResource(); + + errorCode = deleteVLink(restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + errorCode = deleteVRouterInterface(restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + + if (vbrName != null) { + errorCode = deleteVBridgeInterface( + restResource, vbrName); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("vBridge/vRouter interface and vLink Deletion successful at UNC."); + isCommitRequired = true; + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("vBridge interface Deletion failed at UNC."); + } + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("vbr_name not found."); + } + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("vRouter interface Deletion failed at UNC."); + } + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + LOG.error("vlink Deletion failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.info("Deletion operation from database is falied."); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource deletion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource deletion is roll-backed."); + } + + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error ocuurred."); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete RouterInterfaceResource#delete()"); + return errorCode; + } + + /** + * Update vRouter interface at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int updateVRouterInterface(JsonObject requestBody, + final RestResource restResource) { + /* + * Create request body for vRouter interface update + */ + final JsonObject vrtIfRequestBody = VrtResourcesGenerator + .getUpdateVrtIfRequestBody(requestBody); + + /* + * execute update vRouter interface request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getRouterId()); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(VtnServiceOpenStackConsts.IF_PREFIX); + sb.append(getInterfaceId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.put(vrtIfRequestBody); + } + + /** + * Delete vBridge interface at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int + deleteVBridgeInterface(RestResource restResource, String vbrName) { + int errorCode; + /* + * execute delete vBridge interface request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(vbrName); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(VtnServiceOpenStackConsts.IF_PREFIX); + sb.append(getInterfaceId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + errorCode = restResource.delete(); + return errorCode; + } + + /** + * Delete vRouter interface at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int deleteVRouterInterface(RestResource restResource) { + /* + * execute delete vRouter interface request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getRouterId()); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(VtnServiceOpenStackConsts.IF_PREFIX); + sb.append(getInterfaceId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.delete(); + } + + /** + * Delete vLink at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int deleteVLink(RestResource restResource) { + /* + * execute delete vLink request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VLINK_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(VtnServiceOpenStackConsts.VLK_PREFIX); + sb.append(getInterfaceId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.delete(); + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VRouterBean vRouterBean = new VRouterBean(); + vRouterBean.setVtnName(getTenantId()); + vRouterBean.setVrtName(getRouterId()); + if (new VRouterDao().isVrtFound(connection, vRouterBean)) { + VRouterInterfaceBean vInterfaceBean = new VRouterInterfaceBean(); + vInterfaceBean.setVtnName(getTenantId()); + vInterfaceBean.setVrtName(getRouterId()); + vInterfaceBean.setVrtIfName(VtnServiceOpenStackConsts.IF_PREFIX + + getInterfaceId()); + if (new VRouterInterfaceDao().isVrtIfFound(connection, + vInterfaceBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.IF_ID, + getInterfaceId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTER_ID, + getRouterId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterInterfacesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterInterfacesResource.java new file mode 100644 index 00000000..b88d7f33 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterInterfacesResource.java @@ -0,0 +1,444 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VBridgeBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterInterfaceBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.VbrResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.convertor.VrtResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.VBridgeDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterInterfaceDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.RouterInterfaceResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling POST requests for Router Interface + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.ROUTER_INTERFACES_PATH) +public class RouterInterfacesResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger + .getLogger(RouterInterfacesResource.class.getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.ROUTER_ID) + private String routerId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public RouterInterfacesResource() { + setValidator(new RouterInterfaceResourceValidator(this)); + } + + /** + * Getter of tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter of routerId + * + * @return + */ + public String getRouterId() { + return routerId; + } + + /** + * Handler method for POST operation of Router Interface + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#post(com + * .google.gson.JsonObject) + */ + @Override + public int post(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start RouterInterfacesResource#post()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + String generatedIfName = null; + Connection connection = null; + int counter = -1; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection, requestBody)) { + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + + /* + * generate "id" for vBridge interface, vRouter interface and + * vLink + */ + LOG.info("Resource id auto-generation is required."); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.PORT_RES_ID); + freeCounterBean.setVtnName(getTenantId()); + + counter = resourceIdManager.getResourceId(connection, + freeCounterBean); + + if (counter != -1) { + LOG.debug("Resource id auto-generation is successfull : " + + counter); + + if (counter > VtnServiceOpenStackConsts.MAX_ROUTER_IF_LIMIT) { + LOG.warning("Router interface creation reached at maximum limit"); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + return errorCode; + } + + // if id is generated successfully + generatedIfName = VtnServiceOpenStackConsts.IF_PREFIX + + counter; + + requestBody.addProperty(VtnServiceOpenStackConsts.ID, + generatedIfName); + + requestBody.addProperty(VtnServiceJsonConsts.VLKNAME, + VtnServiceOpenStackConsts.VLK_PREFIX + counter); + } else { + LOG.error("Resource id auto-generation is failed."); + } + + if (counter >= 1) { + /* + * resource insertion in database, if is is successful then + * continue to execute operations at UNC. Otherwise return + * HTTP 409 + */ + final VRouterInterfaceBean vInterfaceBean = new VRouterInterfaceBean(); + vInterfaceBean.setVrtIfId(counter); + vInterfaceBean.setVtnName(getTenantId()); + vInterfaceBean.setVrtName(getRouterId()); + vInterfaceBean.setVrtIfName(generatedIfName); + vInterfaceBean.setVbrName(requestBody.get( + VtnServiceOpenStackConsts.NET_ID).getAsString()); + + final VRouterInterfaceDao vInterfaceDao = new VRouterInterfaceDao(); + final int status = vInterfaceDao.insert(connection, + vInterfaceBean); + + if (status == 1) { + LOG.info("Resource insertion successful at database operation."); + + final RestResource restResource = new RestResource(); + + errorCode = createVBridgeInterface(requestBody, + restResource); + + if (errorCode == UncResultCode.UNC_SUCCESS.getValue()) { + errorCode = createVRouterInterface(requestBody, + restResource); + + if (errorCode == UncResultCode.UNC_SUCCESS + .getValue()) { + errorCode = createVLink(requestBody, + restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("vlink creation is successful at UNC."); + isCommitRequired = true; + final JsonObject response = new JsonObject(); + response.addProperty( + VtnServiceOpenStackConsts.ID, + String.valueOf(counter)); + setInfo(response); + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("vlink creation is failed at UNC."); + } + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("vRouter interface creation is failed at UNC."); + } + } else { + errorCode = UncResultCode.UNC_SERVER_ERROR + .getValue(); + LOG.error("vBridge interface creation is failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource insertion failed at database operation."); + } + } else { + LOG.error("Error occurred while generation of id or setting controller_id"); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource insertion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource insertion is roll-backed."); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during creation of resource"); + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND.getMessage(), + VtnServiceOpenStackConsts.IF_ID, + String.valueOf(counter))); + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete RouterInterfacesResource#post()"); + return errorCode; + } + + /** + * Create vRouter interface at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int createVRouterInterface(JsonObject requestBody, + RestResource restResource) { + /* + * Create request body for vRouter interface creation + */ + final JsonObject vrtIfRequestBody = VrtResourcesGenerator + .getCreateVrtIfRequestBody(requestBody); + + /* + * execute create vRouter interface request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getRouterId()); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.post(vrtIfRequestBody); + } + + /** + * Create vBridge interface at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int createVBridgeInterface(JsonObject requestBody, + RestResource restResource) { + /* + * Create request body for vBridge interface creation + */ + final JsonObject vbrIfRequestBody = VbrResourcesGenerator + .getCreateVbrIfRequestBody(requestBody); + + /* + * execute create vBridge interface request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VBRIDGE_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(requestBody.get(VtnServiceOpenStackConsts.NET_ID) + .getAsString()); + sb.append(VtnServiceOpenStackConsts.INTERFACE_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.post(vbrIfRequestBody); + } + + /** + * Create vLink at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int createVLink(JsonObject requestBody, RestResource restResource) { + /* + * Create request body for vlink creation + */ + final JsonObject vlinkRequestBody = new JsonObject(); + final JsonObject vlink = new JsonObject(); + + vlink.addProperty(VtnServiceJsonConsts.VLKNAME, + requestBody.get(VtnServiceJsonConsts.VLKNAME).getAsString()); + + vlink.addProperty(VtnServiceJsonConsts.VNODE1NAME, + requestBody.get(VtnServiceOpenStackConsts.NET_ID).getAsString()); + vlink.addProperty(VtnServiceJsonConsts.IF1NAME, + requestBody.get(VtnServiceOpenStackConsts.ID).getAsString()); + + vlink.addProperty(VtnServiceJsonConsts.VNODE2NAME, getRouterId()); + vlink.addProperty(VtnServiceJsonConsts.IF2NAME, + requestBody.get(VtnServiceOpenStackConsts.ID).getAsString()); + + vlinkRequestBody.add(VtnServiceJsonConsts.VLINK, vlink); + + /* + * execute create vBridge interface request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VLINK_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.post(vlinkRequestBody); + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection, + JsonObject requestBody) throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VRouterBean vRouterBean = new VRouterBean(); + vRouterBean.setVtnName(getTenantId()); + vRouterBean.setVrtName(getRouterId()); + if (new VRouterDao().isVrtFound(connection, vRouterBean)) { + VBridgeBean vBridgeBean = new VBridgeBean(); + vBridgeBean.setVtnName(getTenantId()); + vBridgeBean.setVbrName(requestBody.get( + VtnServiceOpenStackConsts.NET_ID).getAsString()); + if (new VBridgeDao().isVbrFound(connection, vBridgeBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.NET_ID, + requestBody.get( + VtnServiceOpenStackConsts.NET_ID) + .getAsString())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTER_ID, + getRouterId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterResource.java new file mode 100644 index 00000000..a34695d4 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RouterResource.java @@ -0,0 +1,335 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.RouterResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling PUT and DELETE requests for Router + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.ROUTER_PATH) +public class RouterResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(RouterResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.ROUTER_ID) + private String routerId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public RouterResource() { + setValidator(new RouterResourceValidator(this)); + } + + /** + * Getter for tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter for routerId + * + * @return + */ + public String getRouterId() { + return routerId; + } + +// /** +// * Handler method for PUT operation of Router +// * +// * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#put(com. +// * google.gson.JsonObject) +// */ +// @Override +// public int put(JsonObject requestBody) throws VtnServiceException { +// LOG.trace("Start RouterResource#put()"); +// +// int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); +// +// Connection connection = null; +// +// try { +// connection = VtnServiceInitManager.getDbConnectionPoolMap() +// .getConnection(); +// +// /* +// * Check for instances that they exists or not, if not then return +// * 404 error +// */ +// if (checkForNotFoundResources(connection)) { +// +// final RestResource restResource = new RestResource(); +// +// errorCode = updateVRouter(requestBody, restResource); +// +// if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS +// .getValue()) { +// LOG.error("vRouter Update at UNC is successful."); +// } else { +// LOG.info("vRouter Update at UNC is failed."); +// } +// checkForSpecificErrors(restResource.getInfo()); +// } else { +// LOG.error("Resource not found error."); +// } +// /* +// * set response, if it is not set during above processing +// */ +// if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { +// if (getInfo() == null) { +// createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR +// .getValue()); +// } +// } +// } catch (final SQLException exception) { +// LOG.error("Internal server error : " + exception); +// errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); +// createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); +// } finally { +// if (connection != null) { +// LOG.info("Free connection..."); +// VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( +// connection); +// } +// } +// LOG.trace("Complete RouterResource#put()"); +// return errorCode; +// } + + /** + * Handler method for DELETE operation of Router + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#delete(com + * .google.gson.JsonObject) + */ + @Override + public int delete() throws VtnServiceException { + LOG.trace("Start RouterResource#delete()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + final VRouterBean vRouterBean = new VRouterBean(); + vRouterBean.setVtnName(getTenantId()); + vRouterBean.setVrtName(getRouterId()); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.ROUTER_RES_ID); + freeCounterBean.setVtnName(getTenantId()); + freeCounterBean.setResourceCounter(0); + + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + + if (resourceIdManager.deleteResourceId(connection, + freeCounterBean, vRouterBean)) { + LOG.info("Deletion operation from database is successfull."); + + final RestResource restResource = new RestResource(); + + errorCode = deleteVRouter(restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("vRouter Deletion successful at UNC."); + isCommitRequired = true; + } else { + LOG.error("vRouter Deletion failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.info("Deletion operation from database is falied."); + connection.rollback(); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource insertion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource insertion is roll-backed."); + } + + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error ocuurred."); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete RouterResource#delete()"); + return errorCode; + } + +// /** +// * Update vRouter at UNC +// * +// * @param requestBody +// * - OpenStack request body +// * @param restResource +// * - RestResource instance +// * @return - erorrCode, 200 for Success +// */ +// private int updateVRouter(JsonObject requestBody, +// final RestResource restResource) { +// /* +// * Create request body for vRouter update +// */ +// final JsonObject vrtRequestBody = VrtResourcesGenerator +// .getUpdateVrtRequestBody(requestBody); +// +// /* +// * execute update vBridge request +// */ +// StringBuilder sb = new StringBuilder(); +// sb.append(VtnServiceOpenStackConsts.VTN_PATH); +// sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); +// sb.append(getTenantId()); +// sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); +// sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); +// sb.append(getRouterId()); +// +// restResource.setPath(sb.toString()); +// restResource.setSessionID(getSessionID()); +// restResource.setConfigID(getConfigID()); +// +// return restResource.put(vrtRequestBody); +// } + + /** + * Delete vRouter at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int deleteVRouter(final RestResource restResource) { + /* + * execute delete vRouter request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getRouterId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + return restResource.delete(); + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VRouterBean vRouterBean = new VRouterBean(); + vRouterBean.setVtnName(getTenantId()); + vRouterBean.setVrtName(getRouterId()); + if (new VRouterDao().isVrtFound(connection, vRouterBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTER_ID, + getRouterId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RoutersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RoutersResource.java new file mode 100644 index 00000000..d961decb --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RoutersResource.java @@ -0,0 +1,307 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.VrtResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.DestinationControllerDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.validation.RouterResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling PUT and DELETE requests for Static Routes + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.ROUTERS_PATH) +public class RoutersResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(RoutersResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public RoutersResource() { + setValidator(new RouterResourceValidator(this)); + } + + /** + * Getter for tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Handler method for POST operation of Router + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#post(com + * .google.gson.JsonObject) + */ + @Override + public int post(JsonObject requestBody) throws VtnServiceException { + + LOG.trace("Start RoutersResource#post()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + String generatedVrtName = null; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + /* + * generate "id" is it is not present in request body + */ + if (!requestBody.has(VtnServiceOpenStackConsts.ID)) { + LOG.info("Resource id auto-generation is required."); + generatedVrtName = VtnServiceOpenStackConsts.VRT_PREFIX; + requestBody.addProperty(VtnServiceOpenStackConsts.ID, + generatedVrtName); + } else { + LOG.info("Resource id auto-generation is not required."); + generatedVrtName = requestBody.get( + VtnServiceOpenStackConsts.ID).getAsString(); + } + + LOG.debug("vrt_name : " + generatedVrtName); + + if (setControllerId(connection, requestBody)) { + /* + * resource insertion in database, if is is successful then + * continue to execute operations at UNC. Otherwise return + * HTTP 409 + */ + final VRouterBean vRouterBean = new VRouterBean(); + vRouterBean.setVrtName(generatedVrtName); + vRouterBean.setVtnName(getTenantId()); + + final VRouterDao vRouterDao = new VRouterDao(); + final int status = vRouterDao.insert(connection, + vRouterBean); + + if (status == 1) { + LOG.info("Resource insertion successful at database operation."); + + final RestResource restResource = new RestResource(); + + errorCode = createVRouter(requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("vRouter creation is successful at UNC."); + isCommitRequired = true; + if (generatedVrtName.equals(VtnServiceOpenStackConsts.VRT_PREFIX)) { + final JsonObject response = new JsonObject(); + response.addProperty(VtnServiceOpenStackConsts.ID, + generatedVrtName); + setInfo(response); + } + } else { + LOG.error("vRouter creation is failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource insertion failed at database operation."); + } + } else { + LOG.error("Errot occurred while setting controller_id"); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource insertion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource insertion is roll-backed."); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during creation of resource"); + if (exception.getMessage().contains("pk_os_vrt")) { + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND + .getMessage(), + VtnServiceOpenStackConsts.ROUTER_ID, + generatedVrtName)); + } else { + createErrorInfo(UncResultCode.UNC_CONFLICT_FOUND.getValue()); + } + + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete RoutersResource#post()"); + return errorCode; + } + + /** + * Create vRouter at UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int createVRouter(JsonObject requestBody, + final RestResource restResource) { + /* + * Create request body for vRouter creation + */ + final JsonObject vrtRequestBody = VrtResourcesGenerator + .getCreateVrtRequestBody(requestBody); + + /* + * execute create vRouter request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.post(vrtRequestBody); + } + + /** + * Retrieve controller_id from database and add the parameter in request + * body + * + * @param connection + * - DB Connection instance + * @param requestBody + * - JSON request body + * @return - true, if controller_id is set + * @throws SQLException + */ + private boolean setControllerId(Connection connection, + JsonObject requestBody) throws SQLException { + boolean controllerAvailable = true; + final DestinationControllerDao destControllerDao = new DestinationControllerDao(); + final String controllerId = destControllerDao + .getDestinationController(connection); + + if (controllerId != null && !controllerId.isEmpty()) { + LOG.info("Database retrieval is successful for Controller id : " + + controllerId); + requestBody.addProperty(VtnServiceJsonConsts.CONTROLLERID, + controllerId); + } else { + LOG.error("Database retrieval is failed for Controller id."); + controllerAvailable = false; + createErrorInfo( + UncResultCode.UNC_CTRL_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CTRL_NOT_FOUND.getMessage(), + VtnServiceJsonConsts.CONTROLLERID, + VtnServiceConsts.EMPTY_STRING)); + } + return controllerAvailable; + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RoutesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RoutesResource.java new file mode 100644 index 00000000..69ea859d --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/RoutesResource.java @@ -0,0 +1,402 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.apache.commons.net.util.SubnetUtils; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.StaticRouteBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VRouterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.StaticRouteResourceGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.StaticRouteDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VRouterDao; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.validation.RouteResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling POST and GET requests for Static Routes + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.ROUTES_PATH) +public class RoutesResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(RoutesResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + @UNCField(VtnServiceOpenStackConsts.ROUTER_ID) + private String routerId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public RoutesResource() { + setValidator(new RouteResourceValidator(this)); + } + + /** + * Getter for tenantId + * + * @return + */ + public String getTenantId() { + return tenantId; + } + + /** + * Getter for routerId + * + * @return + */ + public String getRouterId() { + return routerId; + } + + /** + * Handler method for POST operation of Route + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#post(com + * .google.gson.JsonObject) + */ + @Override + public int post(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start RoutesResource#post()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + String generatedRouteId = null; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + generatedRouteId = convertRouteId(requestBody); + + StaticRouteBean staticRouteBean = new StaticRouteBean(); + staticRouteBean.setVtnName(getTenantId()); + staticRouteBean.setVrtName(getRouterId()); + staticRouteBean.setRouteName(generatedRouteId); + + StaticRouteDao stRouteDao = new StaticRouteDao(); + final int status = stRouteDao.insert(connection, + staticRouteBean); + if (status == 1) { + LOG.info("Resource insertion successful at database operation."); + + final RestResource restResource = new RestResource(); + + errorCode = createStaticRoute(requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("static-route is successful at UNC."); + isCommitRequired = true; + final JsonObject response = new JsonObject(); + response.addProperty(VtnServiceOpenStackConsts.ID, + generatedRouteId); + setInfo(response); + } else { + LOG.error("static-route creation is failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource insertion failed at database operation."); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, the commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("Resource insertion successful in database."); + } else { + connection.rollback(); + LOG.info("Resource insertion is roll-backed."); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during creation of resource"); + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTE_ID, + generatedRouteId)); + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete RoutesResource#post()"); + return errorCode; + } + + /** + * Handler method for GET operation of Route + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#get(com. + * google.gson.JsonObject) + */ + @Override + public int get(JsonObject queryString) throws VtnServiceException { + LOG.trace("Start RoutesResource#get()"); + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + String generatedRouteId = null; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + final RestResource restResource = new RestResource(); + + errorCode = getStaticRoutes(restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("static-route retrieval is successful at UNC."); + final JsonObject response = StaticRouteResourceGenerator + .convertListResponseBody(restResource.getInfo()); + setInfo(response); + } else { + LOG.error("static-route retrieval is failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource not found error."); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during creation of resource"); + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTE_ID, + generatedRouteId)); + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null) { + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete RoutesResource#get()"); + return errorCode; + } + + /** + * Get Static-Route from UNC + * + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int getStaticRoutes(final RestResource restResource) { + /* + * Create request body for static-route list + */ + final JsonObject staticRouteRequestBody = StaticRouteResourceGenerator + .getListRequestBody(); + + /* + * execute list static-route request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getRouterId()); + sb.append(VtnServiceOpenStackConsts.STATIC_ROUTE_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.get(staticRouteRequestBody); + } + + /** + * Create Static-Route at UNC + * + * @param requestBody + * - OpenStack request body + * @param restResource + * - RestResource instance + * @return - erorrCode, 200 for Success + */ + private int createStaticRoute(JsonObject requestBody, + final RestResource restResource) { + /* + * Create request body for static-route creation + */ + final JsonObject staticRouteRequestBody = StaticRouteResourceGenerator + .getCreateStaticRouteRequestBody(requestBody); + + /* + * execute create static-route request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + sb.append(VtnServiceOpenStackConsts.VROUTER_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getRouterId()); + sb.append(VtnServiceOpenStackConsts.STATIC_ROUTE_PATH); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.post(staticRouteRequestBody); + } + + /** + * Generate UNC formatted route_id + * + * @param requestBody + * - OpenStack request body + * @return - generated route_id + */ + private String convertRouteId(JsonObject requestBody) { + final SubnetUtils subnetUtils = new SubnetUtils(requestBody.get( + VtnServiceOpenStackConsts.DESTNATION).getAsString()); + final String routeId = requestBody + .get(VtnServiceOpenStackConsts.DESTNATION).getAsString() + .split(VtnServiceConsts.SLASH)[0] + + VtnServiceConsts.HYPHEN + + requestBody.get(VtnServiceOpenStackConsts.NEXTHOP) + .getAsString() + + VtnServiceConsts.HYPHEN + + subnetUtils.getInfo().getNetmask(); + return routeId; + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + VRouterBean vRouterBean = new VRouterBean(); + vRouterBean.setVtnName(getTenantId()); + vRouterBean.setVrtName(getRouterId()); + if (new VRouterDao().isVrtFound(connection, vRouterBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.ROUTER_ID, + getRouterId())); + } + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/TenantResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/TenantResource.java new file mode 100644 index 00000000..1cb6785a --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/TenantResource.java @@ -0,0 +1,305 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.VtnResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.TenantResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling PUT and DELETE requests for Tenants + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.TENANT_PATH) +public class TenantResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(TenantResource.class + .getName()); + + @UNCField(VtnServiceOpenStackConsts.TENANT_ID) + private String tenantId; + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public TenantResource() { + setValidator(new TenantResourceValidator(this)); + } + + public String getTenantId() { + return tenantId; + } + + /** + * Handler method for PUT operation of Tenant + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#put(com. + * google.gson.JsonObject) + */ + @Override + public int put(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start TenantsResource#put()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + final RestResource restResource = new RestResource(); + + errorCode = updateVtn(requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("VTN Update at UNC is successful."); + } else { + LOG.info("VTN Update at UNC is failed."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource not found error."); + } + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null) { + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete TenantsResource#put()"); + return errorCode; + } + + /** + * Handler method for DELETE operation of Tenant + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#delete() + */ + @Override + public int delete() throws VtnServiceException { + LOG.trace("Start TenantResource#delete()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + /* + * Check for instances that they exists or not, if not then return + * 404 error + */ + if (checkForNotFoundResources(connection)) { + + final VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + + final String counter = getTenantId().replace( + VtnServiceOpenStackConsts.VTN_PREFIX, + VtnServiceConsts.EMPTY_STRING); + try { + vtnBean.setVtnId(Integer.parseInt(counter)); + } catch (final NumberFormatException e) { + LOG.debug("Resource Id was not auto-generated during Create operation : " + + counter); + vtnBean.setVtnId(0); + } + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.TENANT_RES_ID); + freeCounterBean + .setVtnName(VtnServiceOpenStackConsts.DEFAULT_VTN); + freeCounterBean.setResourceCounter(vtnBean.getVtnId()); + + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + + if (resourceIdManager.deleteResourceId(connection, + freeCounterBean, vtnBean)) { + LOG.info("Deletion operation from database is successfull."); + + final RestResource restResource = new RestResource(); + + errorCode = deleteVtn(restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.error("VTN Deletion successful at UNC."); + isCommitRequired = true; + } else { + LOG.error("VTN Deletion failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.info("Deletion operation from database is falied."); + connection.rollback(); + } + } else { + LOG.error("Resource not found error."); + } + + /* + * If all processing are OK, commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("commit successful"); + } else { + connection.rollback(); + LOG.info("roll-back successful"); + } + + /* + * set response, if it is not set during above processing + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR.getValue()); + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete TenantResource#delete()"); + return errorCode; + } + + /** + * + * @param requestBody + * @param restResource + * @return + */ + private int updateVtn(JsonObject requestBody, + final RestResource restResource) { + /* + * Create request body for VTN update + */ + final JsonObject vtnRequestBody = VtnResourcesGenerator + .getUpdateVtnRequestBody(requestBody); + + /* + * execute update VTN request + */ + StringBuilder sb = new StringBuilder(); + sb.append(VtnServiceOpenStackConsts.VTN_PATH); + sb.append(VtnServiceOpenStackConsts.URI_CONCATENATOR); + sb.append(getTenantId()); + + restResource.setPath(sb.toString()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + return restResource.put(vtnRequestBody); + } + + /** + * + * @param restResource + * @return + */ + private int deleteVtn(final RestResource restResource) { + /* + * execute delete VTN request + */ + restResource.setPath(VtnServiceOpenStackConsts.VTN_PATH + + VtnServiceOpenStackConsts.URI_CONCATENATOR + getTenantId()); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + return restResource.delete(); + } + + /** + * Checks that specified instances in URI exists in system or not. If they + * are not exists then prepare error JSON for 404 Not Found + * + * @param connection + * - Database Connection instance + * @return - true, only if all instances exist + * @throws SQLException + */ + private boolean checkForNotFoundResources(Connection connection) + throws SQLException { + boolean notFoundStatus = false; + VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnName(getTenantId()); + if (new VtnDao().isVtnFound(connection, vtnBean)) { + notFoundStatus = true; + } else { + createErrorInfo( + UncResultCode.UNC_NOT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_NOT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, getTenantId())); + } + return notFoundStatus; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/TenantsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/TenantsResource.java new file mode 100644 index 00000000..fdebb0b5 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/TenantsResource.java @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.resources.openstack; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.openstack.beans.FreeCounterBean; +import org.opendaylight.vtn.javaapi.openstack.beans.VtnBean; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.convertor.VtnResourcesGenerator; +import org.opendaylight.vtn.javaapi.openstack.dao.VtnDao; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ResourceIdManager; +import org.opendaylight.vtn.javaapi.openstack.validation.TenantResourceValidator; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * Resource class for handling POST requests for Tenants + */ +@UNCVtnService(path = VtnServiceOpenStackConsts.TENANTS_PATH) +public class TenantsResource extends AbstractResource { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(TenantsResource.class + .getName()); + + /** + * Constructor that initialize the validation instance for current resource + * instance + */ + public TenantsResource() { + setValidator(new TenantResourceValidator(this)); + } + + /** + * Handler method for POST operation of Tenant + * + * @see org.opendaylight.vtn.javaapi.resources.AbstractResource#post(com + * .google.gson.JsonObject) + */ + @Override + public int post(JsonObject requestBody) throws VtnServiceException { + LOG.trace("Start TenantsResource#post()"); + + int errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + + boolean isCommitRequired = false; + String generatedVtnName = null; + Connection connection = null; + + try { + connection = VtnServiceInitManager.getDbConnectionPoolMap() + .getConnection(); + + final ResourceIdManager resourceIdManager = new ResourceIdManager(); + int counter = -1; + /* + * auto-generation process, based on the availability of "id" + * parameter in request body + */ + if (!requestBody.has(VtnServiceOpenStackConsts.ID)) { + LOG.info("Resource id auto-generation is required."); + + final FreeCounterBean freeCounterBean = new FreeCounterBean(); + freeCounterBean + .setResourceId(VtnServiceOpenStackConsts.TENANT_RES_ID); + freeCounterBean + .setVtnName(VtnServiceOpenStackConsts.DEFAULT_VTN); + + counter = resourceIdManager.getResourceId(connection, + freeCounterBean); + + if (counter != -1) { + LOG.info("Resource id auto-generation is successful."); + generatedVtnName = VtnServiceOpenStackConsts.VTN_PREFIX + + counter; + requestBody.addProperty(VtnServiceOpenStackConsts.ID, + generatedVtnName); + } else { + LOG.error("Resource id auto-generation is failed."); + } + } else { + LOG.info("Resource id auto-generation is not required."); + counter = 0; + generatedVtnName = requestBody + .get(VtnServiceOpenStackConsts.ID).getAsString(); + } + + LOG.debug("Counter : " + counter); + LOG.debug("vtn_name : " + generatedVtnName); + + if (counter >= 0) { + /* + * resource insertion in database, if is is successful then + * continue to execute operations at UNC. Otherwise return HTTP + * 409 + */ + + final VtnBean vtnBean = new VtnBean(); + vtnBean.setVtnId(counter); + vtnBean.setVtnName(generatedVtnName); + + final VtnDao vtnDao = new VtnDao(); + final int status = vtnDao.insert(connection, vtnBean); + if (status == 1) { + LOG.info("Resource insertion successful at database operation."); + + final RestResource restResource = new RestResource(); + + errorCode = createVtn(requestBody, restResource); + + if (errorCode == UncCommonEnum.UncResultCode.UNC_SUCCESS + .getValue()) { + LOG.info("VTN creation is successful at UNC."); + isCommitRequired = true; + if (counter != 0) { + final JsonObject response = new JsonObject(); + response.addProperty(VtnServiceOpenStackConsts.ID, + generatedVtnName); + setInfo(response); + } + } else { + LOG.error("VTN creation is failed at UNC."); + } + checkForSpecificErrors(restResource.getInfo()); + } else { + LOG.error("Resource insertion failed at database operation."); + } + } + + /* + * If all processing are OK, commit all the database transaction + * made for current connection. Otherwise do the roll-back + */ + if (isCommitRequired) { + // connection.commit(); + setOpenStackConnection(connection); + LOG.info("commit successful"); + } else { + connection.rollback(); + LOG.info("roll-back successful"); + } + + /* + * set response, if it is not set during processing for create + * tenant + */ + if (errorCode != UncResultCode.UNC_SUCCESS.getValue()) { + if (getInfo() == null) { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } + + } catch (final SQLException exception) { + LOG.error("Internal server error : " + exception); + errorCode = UncResultCode.UNC_SERVER_ERROR.getValue(); + if (exception.getSQLState().equalsIgnoreCase( + VtnServiceOpenStackConsts.CONFLICT_SQL_STATE)) { + LOG.error("Conflict found during creation of resource"); + createErrorInfo( + UncResultCode.UNC_CONFLICT_FOUND.getValue(), + getCutomErrorMessage( + UncResultCode.UNC_CONFLICT_FOUND.getMessage(), + VtnServiceOpenStackConsts.TENANT_ID, + generatedVtnName)); + } else { + createErrorInfo(UncResultCode.UNC_INTERNAL_SERVER_ERROR + .getValue()); + } + } finally { + if (connection != null && !isCommitRequired) { + try { + connection.rollback(); + LOG.info("roll-back successful."); + } catch (final SQLException e) { + LOG.error("Rollback error : " + e); + } + LOG.info("Free connection..."); + VtnServiceInitManager.getDbConnectionPoolMap().freeConnection( + connection); + } + } + LOG.trace("Complete TenantsResource#post()"); + return errorCode; + } + + /** + * + * @param requestBody + * @param restResource + * @return + */ + private int createVtn(JsonObject requestBody, + final RestResource restResource) { + int errorCode; + /* + * Create request body for VTN creation + */ + final JsonObject vtnRequestBody = VtnResourcesGenerator + .getCreateVtnRequestBody(requestBody); + + /* + * execute create VTN request + */ + restResource.setPath(VtnServiceOpenStackConsts.VTN_PATH); + restResource.setSessionID(getSessionID()); + restResource.setConfigID(getConfigID()); + + errorCode = restResource.post(vtnRequestBody); + return errorCode; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/package-info.java new file mode 100644 index 00000000..ad1304fa --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/openstack/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Resource classes for OpenStack resources + */ +package org.opendaylight.vtn.javaapi.resources.openstack; \ No newline at end of file diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/package-info.java new file mode 100644 index 00000000..3004e132 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/package-info.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Resource interfaces + * and classes for TC and Session APIs + */ +package org.opendaylight.vtn.javaapi.resources; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/AlarmResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/AlarmResource.java index b3559067..58dbc229 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/AlarmResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/AlarmResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -57,12 +57,13 @@ public class AlarmResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start Alarm#put()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; try { - LOG.debug("Start Ipc framework call"); + LOG.debug("Start Ipc framework call"); session = getConnPool().getSession( UncSYSMGEnums.SYSMG_IPC_CHANNEL_NAME, UncSYSMGEnums.NOMG_IPC_SERVICE_NAME, @@ -74,7 +75,7 @@ public class AlarmResource extends AbstractResource { .getAsString().trim())); LOG.info("Request packet created successfully"); status = session.invoke(); - LOG.info("Request packet processed with status:" +status); + LOG.info("Request packet processed with status:" + status); if (status != UncSYSMGEnums.NodeIpcErrorT.NOMG_E_OK.ordinal()) { LOG.info("Error occurred while performing operation"); createNoMgErrorInfo(UncIpcErrorCode.getNodeCodes(status)); @@ -83,7 +84,7 @@ public class AlarmResource extends AbstractResource { LOG.info("Opeartion successfully performed"); status = UncResultCode.UNC_SUCCESS.getValue(); } - LOG.debug("Complete Ipc framework call"); + LOG.debug("Complete Ipc framework call"); } catch (final IpcException e) { getExceptionHandler() .raise(Thread.currentThread().getStackTrace()[1] @@ -117,7 +118,7 @@ public class AlarmResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get() throws VtnServiceException { + public final int get() throws VtnServiceException { LOG.trace("Start AlarmResourcee#get()"); ClientSession session = null; int status = ClientSession.RESP_FATAL; @@ -129,7 +130,7 @@ public class AlarmResource extends AbstractResource { UncSYSMGEnums.NodeMgrServiceID.kAlarmStatusListGet .ordinal(), getExceptionHandler()); status = session.invoke(); - LOG.info("Request packet processed with status:"+status); + LOG.info("Request packet processed with status:" + status); if (status != UncSYSMGEnums.NodeIpcErrorT.NOMG_E_OK.ordinal()) { LOG.info("Error occurred while performing operation"); createNoMgErrorInfo(UncIpcErrorCode.getNodeCodes(status)); @@ -192,44 +193,96 @@ public class AlarmResource extends AbstractResource { LOG.trace("Start AlarmResource#createGetResponse()"); final int count = session.getResponseCount(); final JsonArray alarmJsonArray = new JsonArray(); - //LOG.info("response:"+ ipcResponseStruct.toString()); + // LOG.info("response:"+ ipcResponseStruct.toString()); // convert IPC Structure into Json final JsonObject response = new JsonObject(); for (int i = VtnServiceJsonConsts.VAL_1; i < count; i++) { - final JsonObject sessionDetails = new JsonObject(); - final IpcStruct ipcResponseStruct = (IpcStruct) session.getResponse(i++); - // add AlarmNo to response json - sessionDetails.addProperty(VtnServiceJsonConsts.ALARMNO, IpcDataUnitWrapper.getIpcStructUint64Value(ipcResponseStruct, VtnServiceJsonConsts.ALARMNO).toString()); - // add TimeStamp to response json - sessionDetails.addProperty(VtnServiceJsonConsts.TIMESTAMP, IpcDataUnitWrapper.getIpcStructInt64Value(ipcResponseStruct, VtnServiceIpcConsts.TIME_STAMP).toString()); - // add type to response json - if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct,VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_EMERG.getValue())){ - sessionDetails.addProperty( VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.EMERGENCY); - } else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_ALERT.getValue())){ - sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.ALERT); - }else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_CRITICAL.getValue())){ - sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.CRITICAL); - }else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_ERROR.getValue())){ - sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.ERROR); - }else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_WARNING.getValue())){ - sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.WARNING); - }else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_NOTICE.getValue())){ - sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.NOTICE); - }else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_INFO.getValue())){ - sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.INFORMATION); - }else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.SEVERITY).toString().equals(UncSYSMGEnums.AlarmLevelT.ALM_DEBUG.getValue())){ - sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY,VtnServiceJsonConsts.DEBUG); - } - // add user name to response json - if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct,VtnServiceJsonConsts.TYPE).toString().equals(VtnServiceJsonConsts.ONE)){ - sessionDetails.addProperty( VtnServiceJsonConsts.TYPE,VtnServiceJsonConsts.OCCURRED); - } else if(IpcDataUnitWrapper.getIpcStructUint8Value(ipcResponseStruct, VtnServiceJsonConsts.TYPE).toString().equals(VtnServiceJsonConsts.TWO)){ - sessionDetails.addProperty(VtnServiceJsonConsts.TYPE,VtnServiceJsonConsts.RECOVERED); - } - sessionDetails.addProperty(VtnServiceJsonConsts.VTNNAME, ((IpcString)session.getResponse(i++)).toString()); - sessionDetails.addProperty(VtnServiceJsonConsts.SUMMARY, ((IpcString)session.getResponse(i++)).toString()); - sessionDetails.addProperty(VtnServiceJsonConsts.MESSAGE, ((IpcString)session.getResponse(i++)).toString()); - alarmJsonArray.add(sessionDetails); + final JsonObject sessionDetails = new JsonObject(); + final IpcStruct ipcResponseStruct = (IpcStruct) session + .getResponse(i++); + // add AlarmNo to response json + sessionDetails.addProperty( + VtnServiceJsonConsts.ALARMNO, + IpcDataUnitWrapper.getIpcStructUint64Value( + ipcResponseStruct, VtnServiceJsonConsts.ALARMNO) + .toString()); + // add TimeStamp to response json + sessionDetails.addProperty( + VtnServiceJsonConsts.TIMESTAMP, + IpcDataUnitWrapper.getIpcStructInt64Value( + ipcResponseStruct, VtnServiceIpcConsts.TIME_STAMP) + .toString()); + // add type to response json + if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_EMERG.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.EMERGENCY); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_ALERT.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.ALERT); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_CRITICAL.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.CRITICAL); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_ERROR.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.ERROR); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_WARNING.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.WARNING); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_NOTICE.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.NOTICE); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_INFO.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.INFORMATION); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.SEVERITY).toString() + .equals(UncSYSMGEnums.AlarmLevelT.ALM_DEBUG.getValue())) { + sessionDetails.addProperty(VtnServiceJsonConsts.SEVERITY, + VtnServiceJsonConsts.DEBUG); + } + // add user name to response json + if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.TYPE).toString() + .equals(VtnServiceJsonConsts.ONE)) { + sessionDetails.addProperty(VtnServiceJsonConsts.TYPE, + VtnServiceJsonConsts.OCCURRED); + } else if (IpcDataUnitWrapper + .getIpcStructUint8Value(ipcResponseStruct, + VtnServiceJsonConsts.TYPE).toString() + .equals(VtnServiceJsonConsts.TWO)) { + sessionDetails.addProperty(VtnServiceJsonConsts.TYPE, + VtnServiceJsonConsts.RECOVERED); + } + sessionDetails.addProperty(VtnServiceJsonConsts.VTNNAME, + ((IpcString) session.getResponse(i++)).toString()); + sessionDetails.addProperty(VtnServiceJsonConsts.SUMMARY, + ((IpcString) session.getResponse(i++)).toString()); + sessionDetails.addProperty(VtnServiceJsonConsts.MESSAGE, + ((IpcString) session.getResponse(i++)).toString()); + alarmJsonArray.add(sessionDetails); } response.add(VtnServiceJsonConsts.ALARMS, alarmJsonArray); LOG.trace("Completed AlarmResource#createGetResponse()"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundariesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundariesResource.java index 16c2a4aa..4499bfaf 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundariesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundariesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -58,7 +58,8 @@ public class BoundariesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts BoundariesResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -116,7 +117,8 @@ public class BoundariesResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts BoundariesResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -155,23 +157,20 @@ public class BoundariesResource extends AbstractResource { * requestProcessor.getIpcResponsePacket(), requestBody, * VtnServiceJsonConsts.LIST)); */ - JsonObject responseJson = responseGenerator - .getBoundaryResponse( - requestProcessor.getIpcResponsePacket(), - requestBody, VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.BOUNDARIES) - .isJsonArray()) { - JsonArray responseArray = responseJson.get( - VtnServiceJsonConsts.BOUNDARIES).getAsJsonArray(); - responseJson = getResponseJsonArrayPhysical(requestBody, - requestProcessor, responseGenerator, responseArray, - VtnServiceJsonConsts.BOUNDARIES, - VtnServiceJsonConsts.BOUNDARYID, - IpcRequestPacketEnum.KT_BOUNDARY_GET, - uriParameterList, - VtnServiceIpcConsts.GET_BOUNDARY_RESPONSE); - } - setInfo(responseJson); + JsonObject responseJson = responseGenerator.getBoundaryResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.LIST); + if (responseJson.get(VtnServiceJsonConsts.BOUNDARIES).isJsonArray()) { + final JsonArray responseArray = responseJson.get( + VtnServiceJsonConsts.BOUNDARIES).getAsJsonArray(); + responseJson = getResponseJsonArrayPhysical(requestBody, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.BOUNDARIES, + VtnServiceJsonConsts.BOUNDARYID, + IpcRequestPacketEnum.KT_BOUNDARY_GET, uriParameterList, + VtnServiceIpcConsts.GET_BOUNDARY_RESPONSE); + } + setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundaryResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundaryResource.java index bc56785a..315f8ce1 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundaryResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/BoundaryResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -45,7 +45,7 @@ public class BoundaryResource extends AbstractResource { * * @return the boundary id */ - public String getboundaryId() { + public final String getboundaryId() { return boundaryId; } @@ -69,7 +69,8 @@ public class BoundaryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts BoundaryResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -88,7 +89,7 @@ public class BoundaryResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() @@ -124,7 +125,7 @@ public class BoundaryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts BoundaryResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -143,7 +144,7 @@ public class BoundaryResource extends AbstractResource { getNullJsonObject(), getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() @@ -182,7 +183,8 @@ public class BoundaryResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts BoundaryResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -201,7 +203,7 @@ public class BoundaryResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); setInfo(responseGenerator.getBoundaryResponse( requestProcessor.getIpcResponsePacket(), requestBody, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllerDataFlowResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllerDataFlowResource.java new file mode 100644 index 00000000..b9d10057 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllerDataFlowResource.java @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.resources.physical; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.ipc.IpcUint32; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.annotation.UNCField; +import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor; +import org.opendaylight.vtn.javaapi.ipc.conversion.IpcPhysicalResponseFactory; +import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncOperationEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncOption1Enum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncUPPLEnums; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.logical.FlowFiltersResource; +import org.opendaylight.vtn.javaapi.validation.physical.ControllerDataFlowResourceValidator; + +/** + * The Class ControllerDataFlowResource implements get methods. + * + */ + +@UNCVtnService(path = "/controllers/{controller_id}/dataflows") +public class ControllerDataFlowResource extends AbstractResource { + + /** The controller_id. */ + @UNCField("controller_id") + private String controllerId; + /** + * logger to debug. + */ + private static final Logger LOG = Logger + .getLogger(FlowFiltersResource.class.getName()); + + /** + * Instantiates a new Controller Data Flow resource. + */ + public ControllerDataFlowResource() { + super(); + LOG.trace("Start " + + "ControllerDataFlowResource#ControllerDataFlowResource()"); + setValidator(new ControllerDataFlowResourceValidator(this)); + LOG.trace("Completed " + + "ControllerDataFlowResource#ControllerDataFlowResource()"); + } + + /** + * Gets the Controller Id. + * + * @return the controller_id + */ + public final String getControllerId() { + return controllerId; + } + + /** + * Implementation of Get method of ControllerDataFlowResource API. + * + * @param requestBody + * the request JSON object + * + * @return Error code + * @throws VtnServiceException + * , in case vtn excpetion occurs + */ + @Override + public final int get(final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start ControllerDataFlowResource#get()"); + ClientSession session = null; + IpcRequestProcessor requestProcessor = null; + int status = ClientSession.RESP_FATAL; + try { + LOG.debug("Start Ipc framework call"); + session = getConnPool().getSession(UncUPPLEnums.UPPL_IPC_CHN_NAME, + UncUPPLEnums.UPPL_IPC_SVC_NAME, + UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal(), + getExceptionHandler()); + LOG.debug("Session created successfully"); + requestProcessor = new IpcRequestProcessor(session, getSessionID(), + getConfigID(), getExceptionHandler()); + requestProcessor.createIpcRequestPacket( + IpcRequestPacketEnum.KT_CTR_DATAFLOW_GET, requestBody, + getUriParameters(requestBody)); + requestProcessor.getRequestPacket().setOperation( + new IpcUint32(UncOperationEnum.UNC_OP_READ.ordinal())); + + LOG.debug("Request packet created successfully"); + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.get(VtnServiceJsonConsts.OP).getAsString() + .equals(VtnServiceJsonConsts.DETAIL)) { + requestProcessor.getRequestPacket() + .setOption1( + new IpcUint32(UncOption1Enum.UNC_OPT1_DETAIL + .ordinal())); + } + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet processed with status" + status); + final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); + setInfo(responseGenerator.getControllerDataFlowResponse( + requestProcessor.getIpcResponsePacket(), requestBody, + VtnServiceJsonConsts.DETAIL)); + LOG.debug("Response object created successfully"); + LOG.debug("Complete Ipc framework call"); + } catch (final VtnServiceException e) { + getExceptionHandler() + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage(), e); + throw e; + } finally { + if (status == ClientSession.RESP_FATAL) { + if (null != requestProcessor.getErrorJson()) { + setInfo(requestProcessor.getErrorJson()); + } else { + createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR + .getValue()); + } + status = UncResultCode.UNC_SERVER_ERROR.getValue(); + } + getConnPool().destroySession(session); + } + LOG.trace("Completed ControllerDataFlowResource#get()"); + return status; + } + + /** + * Add URI parameters to list. + * + * @param requestBody + * , for request purpose . + * @return List , containing all URI paramters + */ + + private List getUriParameters(final JsonObject requestBody) { + LOG.trace("Start ControllerDataFlowResource#getUriParameters()"); + final List uriParameters = new ArrayList(); + uriParameters.add(controllerId); + LOG.trace("Completed ControllerDataFlowResource#getUriParameters()"); + return uriParameters; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllerResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllerResource.java index 0b7546fd..72b8c5af 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllerResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllerResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -51,7 +51,7 @@ public class ControllerResource extends AbstractResource { /** * @return the controllerId */ - public String getControllerId() { + public final String getControllerId() { return controllerId; } @@ -65,7 +65,8 @@ public class ControllerResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts ControllerResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -84,18 +85,18 @@ public class ControllerResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -120,7 +121,7 @@ public class ControllerResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts ControllerResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -139,18 +140,18 @@ public class ControllerResource extends AbstractResource { getNullJsonObject(), getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -178,7 +179,8 @@ public class ControllerResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts ControllerResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -197,7 +199,7 @@ public class ControllerResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); setInfo(responseGenerator.getControllerResponse( requestProcessor.getIpcResponsePacket(), requestBody, @@ -206,14 +208,14 @@ public class ControllerResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllersResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllersResource.java index 181450c2..b753fed4 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllersResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/ControllersResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -56,7 +56,8 @@ public class ControllersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts ControllersResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -114,7 +115,8 @@ public class ControllersResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts ControllersResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -144,14 +146,16 @@ public class ControllersResource extends AbstractResource { JsonObject responseJson = responseGenerator.getControllerResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.CONTROLLERS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + if (responseJson.get(VtnServiceJsonConsts.CONTROLLERS) + .isJsonArray()) { + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.CONTROLLERS).getAsJsonArray(); responseJson = getResponseJsonArrayPhysical(requestBody, requestProcessor, responseGenerator, responseArray, VtnServiceJsonConsts.CONTROLLERS, VtnServiceJsonConsts.CONTROLLERID, - IpcRequestPacketEnum.KT_CONTROLLER_GET, uriParameterList, + IpcRequestPacketEnum.KT_CONTROLLER_GET, + uriParameterList, VtnServiceIpcConsts.GET_CONTROLLER_RESPONSE); } setInfo(responseJson); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/LinkResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DataFlowResource.java similarity index 62% rename from coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/LinkResource.java rename to coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DataFlowResource.java index 09b1875b..3a3afece 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/LinkResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DataFlowResource.java @@ -1,20 +1,18 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.vtn.javaapi.resources.physical; -import java.util.ArrayList; -import java.util.List; +package org.opendaylight.vtn.javaapi.resources.physical; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.ipc.IpcUint32; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.javaapi.annotation.UNCField; import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; @@ -25,59 +23,45 @@ import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncOperationEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncUPPLEnums; import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.validation.physical.LinkResourceValidator; +import org.opendaylight.vtn.javaapi.validation.physical.DataFlowResourceValidator; /** - * The Class LinkResource implements get method. + * The Class DataFlowResource implements get methods. + * */ -@UNCVtnService(path = "/controllers/{controller_id}/links/{link_name}") -public class LinkResource extends AbstractResource { - private static final Logger LOG = Logger.getLogger(LinkResource.class +@UNCVtnService(path = "/dataflows") +public class DataFlowResource extends AbstractResource { + /** The LOG. */ + private static final Logger LOG = Logger.getLogger(DataFlowResource.class .getName()); - /** The controller Id. */ - @UNCField("controller_id") - private String controllerId; - /** The Switch Id */ - @UNCField("link_name") - private String linkName; - - /** - * Instantiates a new Link Resource. - */ - public LinkResource() { - LOG.trace("Start LinkResource#LinkResource()"); - setValidator(new LinkResourceValidator(this)); - LOG.trace("Completed LinkResource#LinkResource()"); - } /** - * @return the controllerId + * Instantiates a new Data Flow resource. */ - public String getControllerId() { - return controllerId; + public DataFlowResource() { + super(); + LOG.trace("Start DataFlowResource#DataFlowResource()"); + setValidator(new DataFlowResourceValidator(this)); + LOG.trace("Completed DataFlowResource#DataFlowResource()"); } /** - * @return the Link Name - */ - public String getLinkName() { - return linkName; - } - - /** - * Implementation of get method of Link API + * Implementation of Get method of DataFlowResource API. * * @param requestBody - * the request Json object + * the request JSON object * * @return Error code * @throws VtnServiceException + * ,in case of wrong request paramter. */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { - LOG.trace("Starts LinkResource#get()"); + public final int get(final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start DataFlowResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; int status = ClientSession.RESP_FATAL; @@ -91,13 +75,17 @@ public class LinkResource extends AbstractResource { requestProcessor = new IpcRequestProcessor(session, getSessionID(), getConfigID(), getExceptionHandler()); requestProcessor.createIpcRequestPacket( - IpcRequestPacketEnum.KT_LINK_GET, requestBody, - getUriParameters()); + IpcRequestPacketEnum.KT_DATAFLOW_GET, requestBody, + getNullListObject()); + + requestProcessor.getRequestPacket().setOperation( + new IpcUint32(UncOperationEnum.UNC_OP_READ.ordinal())); + LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status" + status); final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); - setInfo(responseGenerator.getLinkResponse( + setInfo(responseGenerator.getDataFlowResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.SHOW)); LOG.debug("Response object created successfully"); @@ -125,21 +113,7 @@ public class LinkResource extends AbstractResource { } getConnPool().destroySession(session); } - LOG.trace("Completed LinkResource#get()"); + LOG.trace("Completed DataFlowResource#get()"); return status; } - - /** - * Add URI parameters to list - * - * @return parameter list - */ - private List getUriParameters() { - LOG.trace("Starts LinkResource#getUriParameters()"); - final List uriParameters = new ArrayList(); - uriParameters.add(controllerId); - uriParameters.add(linkName); - LOG.trace("Completed LinkResource#getUriParameters()"); - return uriParameters; - } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainLogicalPortResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainLogicalPortResource.java deleted file mode 100644 index b7171b92..00000000 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainLogicalPortResource.java +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright (c) 2012-2013 NEC Corporation - * All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this - * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.vtn.javaapi.resources.physical; - -import java.util.ArrayList; -import java.util.List; - -import com.google.gson.JsonArray; -import com.google.gson.JsonNull; -import com.google.gson.JsonObject; -import org.opendaylight.vtn.core.ipc.ClientSession; -import org.opendaylight.vtn.core.ipc.IpcDataUnit; -import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.javaapi.annotation.UNCField; -import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; -import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; -import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; -import org.opendaylight.vtn.javaapi.exception.VtnServiceException; -import org.opendaylight.vtn.javaapi.init.VtnServiceConfiguration; -import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; -import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor; -import org.opendaylight.vtn.javaapi.ipc.conversion.IpcDataUnitWrapper; -import org.opendaylight.vtn.javaapi.ipc.conversion.IpcPhysicalResponseFactory; -import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; -import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; -import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; -import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; -import org.opendaylight.vtn.javaapi.ipc.enums.UncOperationEnum; -import org.opendaylight.vtn.javaapi.ipc.enums.UncUPPLEnums; -import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.validation.physical.DomainLogicalPortResourceValidator; - -/** - * The Class DomainLogicalPortResource implements get method. - */ -@UNCVtnService(path = "/controllers/{controller_id}/domains/{domain_id}/logical_ports/{logical_port_id}") -public class DomainLogicalPortResource extends AbstractResource { - /** - * @return the controllerId - */ - @UNCField("controller_id") - private String controllerId; - /** - * Getter for domainId - * - * @return - */ - @UNCField("domain_id") - private String domainId; - /** - * Getter for logicalPortId - * - * @return - */ - @UNCField("logical_port_id") - private String logicalPortId; - private static final Logger LOG = Logger - .getLogger(DomainLogicalPortResource.class.getName()); - - /** - * Instantiates a new DomainLogicalPortResource resource. - */ - public DomainLogicalPortResource() { - super(); - LOG.trace("Start DomainLogicalPortResourceValidator()"); - setValidator(new DomainLogicalPortResourceValidator(this)); - LOG.trace("Complete DomainLogicalPortResourceValidator()"); - } - - /** - * Implementation of get method of DomainLogicalPort API - * - * @param requestBody - * the request Json object - * - * @return Error code - * @throws VtnServiceException - */ - @Override - public int get(JsonObject queryString) throws VtnServiceException { - LOG.trace("Start DomainLogicalPortResource#get()"); - ClientSession session = null; - JsonObject memberLastIndex = null; - IpcRequestProcessor requestProcessor = null; - IpcDataUnit[] resp = null; - int status = ClientSession.RESP_FATAL; - try { - LOG.debug("Start Ipc framework call"); - // Get session from connection pool of UPLL server connections - session = getConnPool().getSession(UncUPPLEnums.UPPL_IPC_CHN_NAME, - UncUPPLEnums.UPPL_IPC_SVC_NAME, - UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal(), - getExceptionHandler()); - LOG.debug("Session created successfully"); - final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); - String dataType = VtnServiceJsonConsts.STATE; - if (queryString.has(VtnServiceJsonConsts.TARGETDB)) { - dataType = queryString.get(VtnServiceJsonConsts.TARGETDB) - .getAsString(); - } - requestProcessor = new IpcRequestProcessor(session, getSessionID(), - getConfigID(), getExceptionHandler()); - requestProcessor.createIpcRequestPacket( - IpcRequestPacketEnum.KT_LOGICAL_PORT_GET, queryString, - getUriParameters()); - LOG.debug("Request packet for 1st call created successfully"); - status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet for 1st call processed with status:"+status); - if (status == ClientSession.RESP_FATAL) { - throw new VtnServiceException( - Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); - } - JsonObject root = responseGenerator.getDomainLogicalPortResponse( - requestProcessor.getIpcResponsePacket(), queryString, - VtnServiceJsonConsts.SHOW); - JsonArray memberArray = null; - JsonArray memberArrayNew = null; - if (VtnServiceJsonConsts.STATE.equalsIgnoreCase(dataType) && !(root.get(VtnServiceJsonConsts.LOGICALPORT) instanceof JsonNull)) { - requestProcessor.setServiceInfo(UncUPPLEnums.UPPL_IPC_SVC_NAME, - UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal()); - requestProcessor.createIpcRequestPacket( - IpcRequestPacketEnum.KT_LOGICAL_PORT_MEMBER_GET, - queryString, getUriParametersMember(root)); - requestProcessor - .getRequestPacket() - .setOperation( - IpcDataUnitWrapper - .setIpcUint32Value(UncOperationEnum.UNC_OP_READ_SIBLING_BEGIN - .ordinal())); - LOG.debug("Request packet 2nd call created successfully"); - status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet 2nd call processed with status:"+status); - if (status == ClientSession.RESP_FATAL) { - throw new VtnServiceException( - Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage()); - } - memberArray = responseGenerator - .getDomainLogicalPortMemberResponse(requestProcessor - .getIpcResponsePacket()); - int memberIndex = 0; - VtnServiceConfiguration configuration = VtnServiceInitManager - .getConfigurationMap(); - int max_rep_count = Integer.parseInt(configuration - .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); - memberIndex = memberArray.size(); - if (memberArray.size() >= max_rep_count) { - while (memberIndex >= max_rep_count) { - memberIndex = memberArray.size(); - memberLastIndex = (JsonObject) memberArray - .get(memberIndex - 1); - requestProcessor - .createIpcRequestPacket( - IpcRequestPacketEnum.KT_LOGICAL_PORT_MEMBER_GET, - queryString, - getUriParametersMemberGreaterThanDefault( - root, memberLastIndex)); - requestProcessor - .getRequestPacket() - .setOperation( - IpcDataUnitWrapper - .setIpcUint32Value(UncOperationEnum.UNC_OP_READ_SIBLING - .ordinal())); - status = requestProcessor.processIpcRequest(); - if (status == ClientSession.RESP_FATAL) { - throw new VtnServiceException( - Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread() - .getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage()); - } - resp = requestProcessor.getIpcResponsePacket(); - memberArrayNew = responseGenerator - .getDomainLogicalPortMemberResponse(resp); - if (null != memberArrayNew - && !memberArrayNew.isJsonNull()) { - memberArray.getAsJsonArray().addAll(memberArrayNew); - } else { - break; - } - memberIndex++; - } - } - if (null != memberArray) { - root.get(VtnServiceJsonConsts.LOGICALPORT) - .getAsJsonObject() - .add(VtnServiceJsonConsts.MEMBER_PORTS, memberArray); - } - } - setInfo(root); - LOG.debug("Response object created successfully"); - LOG.debug("Complete Ipc framework call"); - } catch (final VtnServiceException e) { - getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); - throw e; - } finally { - /* - * Handle the case, where error info required to be set for failures - * If error cause can be found from UPLL layer then, set the error - * according to error code Otherwise set the error as IPC server - * error - */ - if (status == ClientSession.RESP_FATAL) { - if (null != requestProcessor.getErrorJson()) { - setInfo(requestProcessor.getErrorJson()); - } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR - .getValue()); - } - status = UncResultCode.UNC_SERVER_ERROR.getValue(); - } - // destroy the session in all cases - getConnPool().destroySession(session); - } - LOG.trace("Completed DomainLogicalPortResource#get()"); - return status; - } - - /** - * Getter for controller id - * - * @return - */ - public String getControllerId() { - return controllerId; - } - - /** - * Getter for domain id - * - * @return - */ - public String getDomainId() { - return domainId; - } - - /** - * Getter for port id - * - * @return - */ - public String getLogicalPortId() { - return logicalPortId; - } - - /** - * Add URI parameters to list - * - * @return parameter list - */ - private List getUriParameters() { - LOG.trace("Starts DomainLogicalPortResource#getUriParameters()"); - final List uriParameters = new ArrayList(); - uriParameters.add(controllerId); - uriParameters.add(domainId); - uriParameters.add(logicalPortId); - LOG.trace("Completed DomainLogicalPortResource#getUriParameters()"); - return uriParameters; - } - - /** - * Add URI Member parameters to list - * - * @return parameter list - */ - private List getUriParametersMember(JsonObject root) { - LOG.trace("Starts DomainLogicalPortResource#getUriParametersMember()"); - final List uriParameters = new ArrayList(); - uriParameters.add(controllerId); - uriParameters.add(domainId); - uriParameters.add(logicalPortId); - // uriParameters.add(((JsonObject)root.get(VtnServiceJsonConsts.LOGICALPORT)).get(VtnServiceJsonConsts.SWITCHID).getAsString()); - // uriParameters.add(((JsonObject)root.get(VtnServiceJsonConsts.LOGICALPORT)).get(VtnServiceJsonConsts.PORTNAME).getAsString()); - LOG.trace("Completed DomainLogicalPortResource#getUriParametersMember()"); - return uriParameters; - } - - private List getUriParametersMemberGreaterThanDefault( - JsonObject logicalPortsJson, final JsonObject memberLastIndex) { - LOG.trace("Starts DomainLogicalPortResource#getUriParametersMemberGreaterThanDefault()"); - final List uriParameters = new ArrayList(); - uriParameters.add(controllerId); - uriParameters.add(domainId); - uriParameters.add(logicalPortsJson.get( - VtnServiceJsonConsts.LOGICAL_PORT_ID).getAsString()); - if (memberLastIndex.has(VtnServiceJsonConsts.SWITCHID)) { - uriParameters.add(memberLastIndex - .get(VtnServiceJsonConsts.SWITCHID).getAsString()); - } else { - uriParameters.add(VtnServiceJsonConsts.SWITCHID_NOT_FOUND); - } - if (memberLastIndex.has(VtnServiceJsonConsts.PORTNAME)) { - uriParameters.add(memberLastIndex - .get(VtnServiceJsonConsts.PORTNAME).getAsString()); - } else { - uriParameters.add(VtnServiceJsonConsts.PORTID_NOT_FOUND); - } - LOG.trace("Completed DomainLogicalPortResource#getUriParametersMemberGreaterThanDefault()"); - return uriParameters; - } -} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainLogicalPortsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainLogicalPortsResource.java index e8e40db6..3ace72c0 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainLogicalPortsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainLogicalPortsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -40,7 +40,8 @@ import org.opendaylight.vtn.javaapi.validation.physical.DomainLogicalPortResourc /** * The Class DomainLogicalPortsResource implements get method. */ -@UNCVtnService(path = "/controllers/{controller_id}/domains/{domain_id}/logical_ports") +@UNCVtnService( + path = "/controllers/{controller_id}/domains/{domain_id}/logical_ports") public class DomainLogicalPortsResource extends AbstractResource { /** * @return the controllerId @@ -66,11 +67,11 @@ public class DomainLogicalPortsResource extends AbstractResource { } - public String getcontrollerId() { + public final String getcontrollerId() { return controllerId; } - public String getdomainId() { + public final String getdomainId() { return domainId; } @@ -84,7 +85,8 @@ public class DomainLogicalPortsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(JsonObject queryString) throws VtnServiceException { + public final int get(final JsonObject queryString) + throws VtnServiceException { LOG.trace("Starts DomainLogicalPortsResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -111,51 +113,187 @@ public class DomainLogicalPortsResource extends AbstractResource { IpcRequestPacketEnum.KT_LOGICAL_PORT_GET, queryString, getUriParameters(queryString)); LOG.debug("Request packet for 1st created successfully"); - status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet 1st call processed with status:"+status); - if (status == ClientSession.RESP_FATAL) { - throw new VtnServiceException( - Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); - } - resp = requestProcessor.getIpcResponsePacket(); - JsonObject root = responseGenerator.getDomainLogicalPortResponse( - resp, queryString, VtnServiceJsonConsts.LIST); - String opType = VtnServiceJsonConsts.NORMAL; - if (queryString.has(VtnServiceJsonConsts.OP)) { - opType = queryString.get(VtnServiceJsonConsts.OP).getAsString(); - } - JsonArray logicalPortsArray = new JsonArray(); - JsonArray memberArray = null; - JsonArray memberArrayNew = null; - if (VtnServiceJsonConsts.STATE.equalsIgnoreCase(dataType) - && VtnServiceJsonConsts.DETAIL.equalsIgnoreCase(opType)) { - final Iterator logicalPortIterator = root - .get(VtnServiceJsonConsts.LOGICALPORTS) - .getAsJsonArray().iterator(); - requestProcessor.setServiceInfo(UncUPPLEnums.UPPL_IPC_SVC_NAME, - UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal()); - while (logicalPortIterator.hasNext()) { - JsonObject logicalPortsJson = (JsonObject) logicalPortIterator - .next(); + + if (!queryString.has(VtnServiceJsonConsts.LOGICAL_PORT_ID)) { + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet 1st call processed with status:" + + status); + if (status == ClientSession.RESP_FATAL) { + throw new VtnServiceException( + Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); + } + resp = requestProcessor.getIpcResponsePacket(); + final JsonObject root = responseGenerator + .getDomainLogicalPortResponse(resp, queryString); + String opType = VtnServiceJsonConsts.NORMAL; + if (queryString.has(VtnServiceJsonConsts.OP)) { + opType = queryString.get(VtnServiceJsonConsts.OP) + .getAsString(); + } + final JsonArray logicalPortsArray = new JsonArray(); + JsonArray memberArray = null; + JsonArray memberArrayNew = null; + if (VtnServiceJsonConsts.STATE.equalsIgnoreCase(dataType) + && VtnServiceJsonConsts.DETAIL.equalsIgnoreCase(opType)) { + final Iterator logicalPortIterator = root + .get(VtnServiceJsonConsts.LOGICALPORTS) + .getAsJsonArray().iterator(); + requestProcessor.setServiceInfo( + UncUPPLEnums.UPPL_IPC_SVC_NAME, + UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal()); + while (logicalPortIterator.hasNext()) { + final JsonObject logicalPortsJson = (JsonObject) logicalPortIterator + .next(); + requestProcessor + .createIpcRequestPacket( + IpcRequestPacketEnum.KT_LOGICAL_PORT_MEMBER_GET, + queryString, + getUriParametersMember(logicalPortsJson)); + requestProcessor + .getRequestPacket() + .setOperation( + IpcDataUnitWrapper + .setIpcUint32Value(UncOperationEnum.UNC_OP_READ_SIBLING_BEGIN + .ordinal())); + LOG.debug("Request packet for 2nd call created successfully"); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet 2nd call processed with status:" + + status); + if (status == ClientSession.RESP_FATAL) { + throw new VtnServiceException( + Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread() + .getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); + } + resp = requestProcessor.getIpcResponsePacket(); + memberArray = responseGenerator + .getDomainLogicalPortMemberResponse(resp); + int memberIndex = 0; + final VtnServiceConfiguration configuration = VtnServiceInitManager + .getConfigurationMap(); + final int max_rep_count = Integer + .parseInt(configuration + .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); + memberIndex = memberArray.size(); + if (memberArray.size() >= max_rep_count) { + while (memberIndex >= max_rep_count) { + memberIndex = memberArray.size(); + memberLastIndex = (JsonObject) memberArray + .get(memberIndex - 1); + requestProcessor + .createIpcRequestPacket( + IpcRequestPacketEnum.KT_LOGICAL_PORT_MEMBER_GET, + queryString, + getUriParametersMemberGreaterThanDefault( + logicalPortsJson, + memberLastIndex)); + requestProcessor + .getRequestPacket() + .setOperation( + IpcDataUnitWrapper + .setIpcUint32Value(UncOperationEnum.UNC_OP_READ_SIBLING + .ordinal())); + status = requestProcessor.processIpcRequest(); + if (status == ClientSession.RESP_FATAL) { + throw new VtnServiceException( + Thread.currentThread() + .getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread() + .getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); + } + resp = requestProcessor.getIpcResponsePacket(); + memberArrayNew = responseGenerator + .getDomainLogicalPortMemberResponse(resp); + if (null != memberArrayNew + && !memberArrayNew.isJsonNull()) { + memberArray.getAsJsonArray().addAll( + memberArrayNew); + } else { + break; + } + memberIndex++; + } + } + logicalPortsJson.add(VtnServiceJsonConsts.MEMBERPORTS, + memberArray); + logicalPortsArray.add(logicalPortsJson); + } + root.add(VtnServiceJsonConsts.LOGICALPORTS, + logicalPortsArray); + } + setInfo(root); + } else { + requestProcessor.getRequestPacket().setOperation( + IpcDataUnitWrapper + .setIpcUint32Value(UncOperationEnum.UNC_OP_READ + .ordinal())); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet for 1st call processed with status:" + + status); + if (status == ClientSession.RESP_FATAL) { + throw new VtnServiceException( + Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); + } + final JsonObject root = responseGenerator + .getDomainLogicalPortResponse( + requestProcessor.getIpcResponsePacket(), + queryString); + JsonArray memberArray = null; + JsonArray memberArrayNew = null; + String opType = VtnServiceJsonConsts.NORMAL; + if (queryString.has(VtnServiceJsonConsts.OP)) { + opType = queryString.get(VtnServiceJsonConsts.OP) + .getAsString(); + } + if (VtnServiceJsonConsts.STATE.equalsIgnoreCase(dataType) + && opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL) + && (root.get(VtnServiceJsonConsts.LOGICALPORTS) + .getAsJsonArray().size() != 0)) { + requestProcessor.setServiceInfo( + UncUPPLEnums.UPPL_IPC_SVC_NAME, + UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal()); requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_LOGICAL_PORT_MEMBER_GET, queryString, - getUriParametersMember(logicalPortsJson)); + getUriParametersMemberShow(queryString)); requestProcessor .getRequestPacket() .setOperation( IpcDataUnitWrapper .setIpcUint32Value(UncOperationEnum.UNC_OP_READ_SIBLING_BEGIN .ordinal())); - LOG.debug("Request packet for 2nd call created successfully"); + LOG.debug("Request packet 2nd call created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet 2nd call processed with status:"+status); + LOG.debug("Request packet 2nd call processed with status:" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -169,13 +307,13 @@ public class DomainLogicalPortsResource extends AbstractResource { UncJavaAPIErrorCode.IPC_SERVER_ERROR .getErrorMessage()); } - resp = requestProcessor.getIpcResponsePacket(); memberArray = responseGenerator - .getDomainLogicalPortMemberResponse(resp); + .getDomainLogicalPortMemberResponse(requestProcessor + .getIpcResponsePacket()); int memberIndex = 0; - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); - int max_rep_count = Integer.parseInt(configuration + final int max_rep_count = Integer.parseInt(configuration .getConfigValue(VtnServiceConsts.MAX_REP_DEFAULT)); memberIndex = memberArray.size(); if (memberArray.size() >= max_rep_count) { @@ -188,8 +326,7 @@ public class DomainLogicalPortsResource extends AbstractResource { IpcRequestPacketEnum.KT_LOGICAL_PORT_MEMBER_GET, queryString, getUriParametersMemberGreaterThanDefault( - logicalPortsJson, - memberLastIndex)); + root, memberLastIndex)); requestProcessor .getRequestPacket() .setOperation( @@ -223,13 +360,21 @@ public class DomainLogicalPortsResource extends AbstractResource { memberIndex++; } } - logicalPortsJson.add(VtnServiceJsonConsts.MEMBERPORTS, - memberArray); - logicalPortsArray.add(logicalPortsJson); + if (null != memberArray) { + final JsonArray resultJsonArray = new JsonArray(); + final JsonObject logicalPortJson = (JsonObject) root + .get(VtnServiceJsonConsts.LOGICALPORTS) + .getAsJsonArray() + .get(VtnServiceJsonConsts.VAL_0); + logicalPortJson.add(VtnServiceJsonConsts.MEMBER_PORTS, + memberArray); + resultJsonArray.add(logicalPortJson); + root.add(VtnServiceJsonConsts.LOGICALPORTS, + resultJsonArray); + } } - root.add(VtnServiceJsonConsts.LOGICALPORTS, logicalPortsArray); + setInfo(root); } - setInfo(root); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { @@ -271,7 +416,7 @@ public class DomainLogicalPortsResource extends AbstractResource { * * @return */ - public String getControllerId() { + public final String getControllerId() { return controllerId; } @@ -280,7 +425,7 @@ public class DomainLogicalPortsResource extends AbstractResource { * * @return */ - public String getDomainId() { + public final String getDomainId() { return domainId; } @@ -289,12 +434,17 @@ public class DomainLogicalPortsResource extends AbstractResource { * * @return parameter list */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Starts LogicalPortsResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(controllerId); uriParameters.add(domainId); - if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { + if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.LOGICAL_PORT_ID)) { + uriParameters.add(requestBody.get( + VtnServiceJsonConsts.LOGICAL_PORT_ID).getAsString()); + } else if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.INDEX)) { uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX) .getAsString()); } @@ -307,21 +457,42 @@ public class DomainLogicalPortsResource extends AbstractResource { * * @return parameter list */ - private List getUriParametersMember(JsonObject logicalPortsJson) { + private List getUriParametersMember( + final JsonObject logicalPortsJson) { LOG.trace("Starts LogicalPortsResource#getUriParametersMember()"); final List uriParameters = new ArrayList(); uriParameters.add(controllerId); uriParameters.add(domainId); uriParameters.add(logicalPortsJson.get( VtnServiceJsonConsts.LOGICAL_PORT_ID).getAsString()); - // uriParameters.add((logicalPortsJson.get(VtnServiceJsonConsts.SWITCHID).getAsString())); - // uriParameters.add((logicalPortsJson.get(VtnServiceJsonConsts.PORTNAME).getAsString())); + LOG.trace("Completed LogicalPortsResource#getUriParametersMember()"); return uriParameters; } - private List getUriParametersMemberGreaterThanDefault( - JsonObject logicalPortsJson, final JsonObject memberLastIndex) { + /** + * Add URI Member parameters to Show + * + * @return parameter list + */ + private List getUriParametersMemberShow( + final JsonObject logicalPortsJson) { + LOG.trace("Starts DomainLogicalPortResource#getUriParametersMember()"); + final List uriParameters = new ArrayList(); + uriParameters.add(controllerId); + uriParameters.add(domainId); + if (logicalPortsJson.has(VtnServiceJsonConsts.LOGICAL_PORT_ID)) { + uriParameters.add(logicalPortsJson.get( + VtnServiceJsonConsts.LOGICAL_PORT_ID).getAsString()); + } + LOG.trace("Completed DomainLogicalPortResource#getUriParametersMember()"); + return uriParameters; + } + + private List + getUriParametersMemberGreaterThanDefault( + final JsonObject logicalPortsJson, + final JsonObject memberLastIndex) { LOG.trace("Starts LogicalPortsResource#getUriParametersMemberGreaterThanDefault()"); final List uriParameters = new ArrayList(); uriParameters.add(controllerId); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainResource.java index f6583c85..d62ebef0 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -43,7 +43,7 @@ public class DomainResource extends AbstractResource { * * @return the controller id */ - public String getcontrollerId() { + public final String getcontrollerId() { return controllerId; } @@ -56,11 +56,13 @@ public class DomainResource extends AbstractResource { * * @return the domain id */ - public String getdomainId() { + public final String getdomainId() { return domainId; } + private static final Logger LOG = Logger.getLogger(DomainResource.class .getName()); + /** * Instantiates a new Domain resource. */ @@ -81,7 +83,8 @@ public class DomainResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts DomainResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -100,7 +103,7 @@ public class DomainResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); setInfo(responseGenerator.getDomainResponse( requestProcessor.getIpcResponsePacket(), requestBody, @@ -109,14 +112,14 @@ public class DomainResource extends AbstractResource { LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -143,7 +146,7 @@ public class DomainResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int delete() throws VtnServiceException { + public final int delete() throws VtnServiceException { LOG.trace("Starts DomainResource#delete()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -162,18 +165,18 @@ public class DomainResource extends AbstractResource { getNullJsonObject(), getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -201,7 +204,8 @@ public class DomainResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int put(final JsonObject requestBody) throws VtnServiceException { + public final int put(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts DomainResource#put()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -220,18 +224,18 @@ public class DomainResource extends AbstractResource { getUriParameters()); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainsResource.java index 4533dd1c..bfbea848 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/DomainsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -44,7 +44,7 @@ public class DomainsResource extends AbstractResource { * * @return the controller id */ - public String getControllerId() { + public final String getControllerId() { return controllerId; } @@ -71,7 +71,8 @@ public class DomainsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts DomainsResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -92,38 +93,41 @@ public class DomainsResource extends AbstractResource { uriParameterList); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); - /*setInfo(responseGenerator.getDomainResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST));*/ + /* + * setInfo(responseGenerator.getDomainResponse( + * requestProcessor.getIpcResponsePacket(), requestBody, + * VtnServiceJsonConsts.LIST)); + */ JsonObject responseJson = responseGenerator.getDomainResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.DOMAINS).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.DOMAINS).getAsJsonArray(); responseJson = getResponseJsonArrayPhysical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.DOMAINS, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.DOMAINS, VtnServiceJsonConsts.DOMAINID, IpcRequestPacketEnum.KT_CTR_DOMAIN_GET, - uriParameterList,VtnServiceIpcConsts.GET_DOMAIN_RESPONSE); + uriParameterList, + VtnServiceIpcConsts.GET_DOMAIN_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -151,7 +155,8 @@ public class DomainsResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int post(final JsonObject requestBody) throws VtnServiceException { + public final int post(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts DomainsResource#post()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -170,18 +175,18 @@ public class DomainsResource extends AbstractResource { getUriParameters(requestBody)); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/LinksResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/LinksResource.java index 1a66d588..55f61439 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/LinksResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/LinksResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,6 +28,7 @@ import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncOperationEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncOption2Enum; import org.opendaylight.vtn.javaapi.ipc.enums.UncUPPLEnums; import org.opendaylight.vtn.javaapi.resources.AbstractResource; @@ -38,6 +39,9 @@ import org.opendaylight.vtn.javaapi.validation.physical.LinkResourceValidator; */ @UNCVtnService(path = "/controllers/{controller_id}/links") public class LinksResource extends AbstractResource { + /** + * Logger for debugging purpose . + */ private static final Logger LOG = Logger.getLogger(LinksResource.class .getName()); /** The controller Id. */ @@ -56,21 +60,23 @@ public class LinksResource extends AbstractResource { /** * @return the controllerId */ - public String getControllerId() { + public final String getControllerId() { return controllerId; } /** - * Implementation of get method of Link API + * Implementation of get method of Link API. * * @param requestBody * the request Json object * * @return Error code * @throws VtnServiceException + * , in case of error . */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts LinksResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -88,25 +94,36 @@ public class LinksResource extends AbstractResource { requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_LINK_GET, requestBody, uriParameterList); - getModifiedRequestPacket(requestBody, requestProcessor); - LOG.debug("Request packet created successfully"); - status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:" + status); - final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); - JsonObject responseJson = responseGenerator.getLinkResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST); - if (responseJson.get(VtnServiceJsonConsts.LINKS).isJsonArray()) { - JsonArray responseArray = responseJson.get( - VtnServiceJsonConsts.LINKS).getAsJsonArray(); - responseJson = getResponseJsonArrayPhysical(requestBody, - requestProcessor, responseGenerator, responseArray, - VtnServiceJsonConsts.LINKS, - VtnServiceJsonConsts.LINKNAME, - IpcRequestPacketEnum.KT_LINK_GET, uriParameterList, - VtnServiceIpcConsts.GET_LINK_RESPONSE); + if (!requestBody.has(VtnServiceJsonConsts.LINKNAME)) { + getModifiedRequestPacket(requestBody, requestProcessor); + LOG.debug("Request packet created successfully"); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet processed with status:" + status); + final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); + JsonObject responseJson = responseGenerator.getLinkResponse( + requestProcessor.getIpcResponsePacket(), requestBody); + if (responseJson.get(VtnServiceJsonConsts.LINKS).isJsonArray()) { + final JsonArray responseArray = responseJson.get( + VtnServiceJsonConsts.LINKS).getAsJsonArray(); + responseJson = getResponseJsonArrayPhysical(requestBody, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.LINKS, + VtnServiceJsonConsts.LINKNAME, + IpcRequestPacketEnum.KT_LINK_GET, uriParameterList, + VtnServiceIpcConsts.GET_LINK_RESPONSE); + } + setInfo(responseJson); + } else { + requestProcessor.getRequestPacket().setOperation( + IpcDataUnitWrapper + .setIpcUint32Value(UncOperationEnum.UNC_OP_READ + .ordinal())); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet processed with status:" + status); + final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); + setInfo(responseGenerator.getLinkResponse( + requestProcessor.getIpcResponsePacket(), requestBody)); } - setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { @@ -136,43 +153,57 @@ public class LinksResource extends AbstractResource { return status; } + /** + * @param requestBody + * , for handling request. + * @param requestProcessor + * , for processing the request . + */ private void getModifiedRequestPacket(final JsonObject requestBody, - IpcRequestProcessor requestProcessor) { - if ((requestBody.has(VtnServiceJsonConsts.SWITCH1ID) - && requestBody.has(VtnServiceJsonConsts.SWITCH2ID)) || requestBody.has(VtnServiceJsonConsts.INDEX)) { - requestProcessor - .getRequestPacket() - .setOption2( - IpcDataUnitWrapper - .setIpcUint32Value(UncOption2Enum.UNC_OPT2_MATCH_BOTH_SWITCH - .ordinal())); - } else if (requestBody.has(VtnServiceJsonConsts.SWITCH1ID)) { - requestProcessor - .getRequestPacket() - .setOption2( - IpcDataUnitWrapper - .setIpcUint32Value(UncOption2Enum.UNC_OPT2_MATCH_SWITCH1 - .ordinal())); - } else if (requestBody.has(VtnServiceJsonConsts.SWITCH2ID)) { - requestProcessor - .getRequestPacket() - .setOption2( - IpcDataUnitWrapper - .setIpcUint32Value(UncOption2Enum.UNC_OPT2_MATCH_SWITCH2 - .ordinal())); - } + final IpcRequestProcessor requestProcessor) { + if ((requestBody.has(VtnServiceJsonConsts.SWITCH1ID) && requestBody + .has(VtnServiceJsonConsts.SWITCH2ID)) + || requestBody.has(VtnServiceJsonConsts.INDEX)) { + requestProcessor + .getRequestPacket() + .setOption2( + IpcDataUnitWrapper + .setIpcUint32Value(UncOption2Enum.UNC_OPT2_MATCH_BOTH_SWITCH + .ordinal())); + } else if (requestBody.has(VtnServiceJsonConsts.SWITCH1ID)) { + requestProcessor + .getRequestPacket() + .setOption2( + IpcDataUnitWrapper + .setIpcUint32Value(UncOption2Enum.UNC_OPT2_MATCH_SWITCH1 + .ordinal())); + } else if (requestBody.has(VtnServiceJsonConsts.SWITCH2ID)) { + requestProcessor + .getRequestPacket() + .setOption2( + IpcDataUnitWrapper + .setIpcUint32Value(UncOption2Enum.UNC_OPT2_MATCH_SWITCH2 + .ordinal())); + } } /** - * Add URI parameters to list + * Add URI parameters to list. * - * @return parameter list + * @param requestBody + * , to handle the request . + * @return List , containing all URI paramters . */ private List getUriParameters(final JsonObject requestBody) { LOG.trace("Starts LinksResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(controllerId); - if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { + if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.LINKNAME)) { + uriParameters.add(requestBody.get(VtnServiceJsonConsts.LINKNAME) + .getAsString()); + } else if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.INDEX)) { uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX) .getAsString()); } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchPortResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchPortResource.java deleted file mode 100644 index dd0fc3bf..00000000 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchPortResource.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (c) 2012-2013 NEC Corporation - * All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this - * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.vtn.javaapi.resources.physical; - -import java.util.ArrayList; -import java.util.List; - -import com.google.gson.JsonNull; -import com.google.gson.JsonObject; -import org.opendaylight.vtn.core.ipc.ClientSession; -import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.javaapi.annotation.UNCField; -import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; -import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; -import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; -import org.opendaylight.vtn.javaapi.exception.VtnServiceException; -import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor; -import org.opendaylight.vtn.javaapi.ipc.conversion.IpcPhysicalResponseFactory; -import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; -import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; -import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; -import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; -import org.opendaylight.vtn.javaapi.ipc.enums.UncUPPLEnums; -import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.validation.physical.SwitchPortResourceValidator; - -@UNCVtnService(path = "/controllers/{controller_id}/switches/{switch_id}/ports/{port_name}") -public class SwitchPortResource extends AbstractResource { - private static final Logger LOG = Logger.getLogger(SwitchPortResource.class - .getName()); - - /** The controller Id. */ - @UNCField("controller_id") - private String controllerId; - /** The Switch Id */ - @UNCField("switch_id") - private String switchId; - /** The Switch Id */ - @UNCField("port_name") - private String portName; - - /** - * Instantiates a new Port Resource. - */ - public SwitchPortResource() { - LOG.trace("Start SwitchPortResource#SwitchPortResource()"); - setValidator(new SwitchPortResourceValidator(this)); - LOG.trace("Completed SwitchPortResource#SwitchPortResource()"); - } - - /** - * Get method for getting switch port details. - */ - @Override - public int get(final JsonObject requestBody) throws VtnServiceException { - LOG.trace("Starts SwitchPortResource#get()"); - ClientSession session = null; - IpcRequestProcessor requestProcessor = null; - int status = ClientSession.RESP_FATAL; - try { - LOG.debug("Start Ipc framework call"); - session = getConnPool().getSession(UncUPPLEnums.UPPL_IPC_CHN_NAME, - UncUPPLEnums.UPPL_IPC_SVC_NAME, - UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal(), - getExceptionHandler()); - LOG.debug("Session created successfully"); - requestProcessor = new IpcRequestProcessor(session, getSessionID(), - getConfigID(), getExceptionHandler()); - requestProcessor.createIpcRequestPacket( - IpcRequestPacketEnum.KT_PORT_GET, requestBody, - getUriParameters()); - LOG.debug("Request Packet for 1st call created successfully"); - status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet 1st call processed with status:"+status); - if (status == ClientSession.RESP_FATAL) { - throw new VtnServiceException( - Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); - } - JsonObject root = null; - final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); - root = responseGenerator.getSwitchPortResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.SHOW); - if(!(root.get(VtnServiceJsonConsts.PORT) instanceof JsonNull)){ - requestProcessor.setServiceInfo(UncUPPLEnums.UPPL_IPC_SVC_NAME, - UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal()); - requestProcessor.createIpcRequestPacket( - IpcRequestPacketEnum.KT_PORT_GET_MEMBER, requestBody, - getUriParameters()); - LOG.debug("Request Packet 2nd call created successfully"); - status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet 2nd call processed with status:"+status); - if (status == ClientSession.RESP_FATAL) { - throw new VtnServiceException( - Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); - } - root = responseGenerator.getSwitchPortMemberResponse( - requestProcessor.getIpcResponsePacket(), root, - VtnServiceJsonConsts.SHOW); - } - setInfo(root); - LOG.debug("Response object created successfully"); - LOG.debug("Complete Ipc framework call"); - } - catch (final VtnServiceException e) { - getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); - throw e; - } finally { - if (status == ClientSession.RESP_FATAL) { - if (null != requestProcessor - && null != requestProcessor.getErrorJson()) { - setInfo(requestProcessor.getErrorJson()); - } else { - createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR - .getValue()); - } - status = UncResultCode.UNC_SERVER_ERROR.getValue(); - } - getConnPool().destroySession(session); - } - LOG.trace("Complete SwitchPortResource#get()"); - return status; - } - - /** - * This method will add all the uri parameters to the parameter list - * - * @return uriparameters - */ - private List getUriParameters() { - LOG.trace("Starts SwitchPortResource#getUriParameters()"); - final List uriParameters = new ArrayList(); - uriParameters.add(controllerId); - uriParameters.add(switchId); - uriParameters.add(portName); - LOG.trace("Complete SwitchPortResource#getUriParameters()"); - return uriParameters; - } - - /** - * @return the controllerId - */ - public String getControllerId() { - return controllerId; - } - - /** - * @return the Switch Id - */ - public String getSwitchId() { - return switchId; - } - - /** - * @return the Port Name - */ - public String getPortName() { - return portName; - } -} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchPortsResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchPortsResource.java index 4736ba02..daf7e615 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchPortsResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchPortsResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -14,6 +14,7 @@ import java.util.List; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.ipc.IpcStruct; import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.annotation.UNCField; import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; @@ -29,20 +30,29 @@ import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncOperationEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncOption1Enum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncPhysicalStructIndexEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncStructEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncStructIndexEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncUPPLEnums; import org.opendaylight.vtn.javaapi.resources.AbstractResource; import org.opendaylight.vtn.javaapi.validation.physical.SwitchPortResourceValidator; +/** + * + */ @UNCVtnService(path = "/controllers/{controller_id}/switches/{switch_id}/ports") public class SwitchPortsResource extends AbstractResource { - + /** + * + */ private static final Logger LOG = Logger .getLogger(SwitchPortsResource.class.getName()); /** The controller Id. */ @UNCField("controller_id") private String controllerId; - /** The Switch Id */ + /** The Switch Id. */ @UNCField("switch_id") private String switchId; @@ -57,13 +67,21 @@ public class SwitchPortsResource extends AbstractResource { /** * Get Switch Port list information by calling get API of SwitchPorts - * resources + * resources. + * + * @param requestBody + * , handles request Json. + * @throws VtnServiceException + * , In case any Exception is thrown. + * @return result code ,as an integer for status of opetration */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts SwitchPortsResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; + JsonObject root = null; int status = ClientSession.RESP_FATAL; try { LOG.debug("Start Ipc framework call"); @@ -77,52 +95,126 @@ public class SwitchPortsResource extends AbstractResource { requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_PORT_GET, requestBody, getUriParameters(requestBody)); - String opType = VtnServiceJsonConsts.NORMAL; - if (requestBody.has(VtnServiceJsonConsts.OP)) { - opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); - } + LOG.debug("Request Packet 1st call created successfully"); - status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet 1st call processed with status:"+status); - if (status == ClientSession.RESP_FATAL) { - throw new VtnServiceException( - Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), - UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorMessage()); - } - /* - * get type (show or list) will be required to resolve root json - * name here it will be Ports for list - */ - JsonObject root = null; + final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); - final List uriParameterList = getUriParameters(requestBody); - if (opType.equalsIgnoreCase(VtnServiceJsonConsts.COUNT) - || opType.equalsIgnoreCase(VtnServiceJsonConsts.NORMAL)) { + JsonArray switchPortArray = null; + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.get(VtnServiceJsonConsts.OP).getAsString() + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + requestProcessor + .getRequestPacket() + .setOption1( + IpcDataUnitWrapper + .setIpcUint32Value(UncOption1Enum.UNC_OPT1_DETAIL + .ordinal())); + } + if (!requestBody.has(VtnServiceJsonConsts.PORTNAME)) { + + if (requestBody.has(VtnServiceJsonConsts.PORT_ID)) { + final IpcStruct valPortStruct = new IpcStruct( + UncStructEnum.ValPort.getValue()); + valPortStruct + .set(VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortIndex.kIdxPortNumber + .ordinal(), + IpcDataUnitWrapper + .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal())); + + valPortStruct.set(VtnServiceIpcConsts.PORT_NUMBER, + IpcDataUnitWrapper.setIpcUint32Value(requestBody + .get(VtnServiceJsonConsts.PORT_ID) + .getAsInt())); + + final IpcStruct valPortStStruct = new IpcStruct( + UncStructEnum.ValPortSt.getValue()); + valPortStStruct + .set(VtnServiceIpcConsts.VALID, + UncPhysicalStructIndexEnum.UpplValPortStIndex.kIdxPortSt + .ordinal(), + IpcDataUnitWrapper + .setIpcUint8Value(UncStructIndexEnum.Valid.UNC_VF_VALID + .ordinal())); + + valPortStStruct.set(VtnServiceJsonConsts.PORT, + valPortStruct); + + requestProcessor.getRequestPacket().setValStruct( + valPortStStruct); + } + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet 1st call processed with status:" + + status); + if (status == ClientSession.RESP_FATAL) { + throw new VtnServiceException( + Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); + } + root = responseGenerator.getSwitchPortResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST); + requestProcessor.getIpcResponsePacket(), requestBody); + + if (root.get(VtnServiceJsonConsts.PORTS).isJsonArray()) { + switchPortArray = root + .getAsJsonArray(VtnServiceJsonConsts.PORTS); + + root = getResponseJsonArrayPhysical( + requestBody, + requestProcessor, + responseGenerator, + switchPortArray, + VtnServiceJsonConsts.PORTS, + VtnServiceJsonConsts.PORTNAME, + IpcRequestPacketEnum.KT_PORT_GET, + getUriParameters(requestBody), + VtnServiceIpcConsts.GET_SWITCH_PORT_INTERFACE_RESPONSE); + } + } else { + requestProcessor.getRequestPacket().setOperation( + IpcDataUnitWrapper + .setIpcUint32Value(UncOperationEnum.UNC_OP_READ + .ordinal())); + status = requestProcessor.processIpcRequest(); + LOG.debug("Request packet 1st call processed with status:" + + status); + if (status == ClientSession.RESP_FATAL) { + throw new VtnServiceException( + Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), + UncJavaAPIErrorCode.IPC_SERVER_ERROR + .getErrorMessage()); + } + root = responseGenerator.getSwitchPortResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST); - JsonArray switchPortArray = root - .getAsJsonArray(VtnServiceJsonConsts.PORTS); - JsonArray switchPortArrayRes = new JsonArray(); - root = getResponseJsonArrayPhysical(requestBody, - requestProcessor, responseGenerator, - switchPortArray, VtnServiceJsonConsts.PORTS, - VtnServiceJsonConsts.PORTNAME, - IpcRequestPacketEnum.KT_PORT_GET, - uriParameterList,VtnServiceIpcConsts.GET_SWITCH_PORT_INTERFACE_RESPONSE); + requestProcessor.getIpcResponsePacket(), requestBody); + } + + String opType = VtnServiceJsonConsts.NORMAL; + if (requestBody.has(VtnServiceJsonConsts.OP)) { + opType = requestBody.get(VtnServiceJsonConsts.OP).getAsString(); + } + + if (opType.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL) + || opType.equalsIgnoreCase(VtnServiceJsonConsts.INFO)) { requestProcessor.setServiceInfo(UncUPPLEnums.UPPL_IPC_SVC_NAME, UncUPPLEnums.ServiceID.UPPL_SVC_READREQ.ordinal()); + switchPortArray = root + .getAsJsonArray(VtnServiceJsonConsts.PORTS); for (int index = 0; index < switchPortArray.size(); index++) { - JsonObject switchPort = (JsonObject) switchPortArray + final JsonObject switchPort = (JsonObject) switchPortArray .get(index); requestBody.addProperty(VtnServiceJsonConsts.INDEX, switchPort.get(VtnServiceJsonConsts.PORTNAME) @@ -138,7 +230,8 @@ public class SwitchPortsResource extends AbstractResource { .ordinal())); LOG.debug("Request Packet for 2nd created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet 2nd call processed with status:"+status); + LOG.debug("Request packet 2nd call processed with status:" + + status); if (status == ClientSession.RESP_FATAL) { throw new VtnServiceException( Thread.currentThread().getStackTrace()[1] @@ -152,12 +245,10 @@ public class SwitchPortsResource extends AbstractResource { UncJavaAPIErrorCode.IPC_SERVER_ERROR .getErrorMessage()); } - switchPortArrayRes.add(responseGenerator - .getSwitchPortMemberResponse( - requestProcessor.getIpcResponsePacket(), - switchPort, VtnServiceJsonConsts.LIST)); + responseGenerator.getSwitchPortMemberResponse( + requestProcessor.getIpcResponsePacket(), + switchPort, VtnServiceJsonConsts.LIST); } - root.add(VtnServiceJsonConsts.PORTS, switchPortArrayRes); } setInfo(root); LOG.debug("Response object created successfully"); @@ -191,15 +282,23 @@ public class SwitchPortsResource extends AbstractResource { } /** - * Add URI parameters to list - * @return + * Add URI parameters to list. + * + * @param requestBody + * , handles request Json + * @return List , as list of strings consisting all URI paramters. */ - private List getUriParameters(JsonObject requestBody) { + private List getUriParameters(final JsonObject requestBody) { LOG.trace("Starts SwitchPortsResource#getUriParameters()"); final List uriParameters = new ArrayList(); uriParameters.add(controllerId); uriParameters.add(switchId); - if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) { + if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.PORTNAME)) { + uriParameters.add(requestBody.get(VtnServiceJsonConsts.PORTNAME) + .getAsString()); + } else if (requestBody != null + && requestBody.has(VtnServiceJsonConsts.INDEX)) { uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX) .getAsString()); } @@ -210,14 +309,14 @@ public class SwitchPortsResource extends AbstractResource { /** * @return the controllerId */ - public String getControllerId() { + public final String getControllerId() { return controllerId; } /** * @return the controllerId */ - public String getSwitchId() { + public final String getSwitchId() { return switchId; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchResource.java index fce525d3..2d9bc260 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,6 +13,7 @@ import java.util.List; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.ipc.ClientSession; +import org.opendaylight.vtn.core.ipc.IpcUint32; import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.annotation.UNCField; import org.opendaylight.vtn.javaapi.annotation.UNCVtnService; @@ -25,6 +26,8 @@ import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum; import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.ipc.enums.UncOperationEnum; +import org.opendaylight.vtn.javaapi.ipc.enums.UncOption1Enum; import org.opendaylight.vtn.javaapi.ipc.enums.UncUPPLEnums; import org.opendaylight.vtn.javaapi.resources.AbstractResource; import org.opendaylight.vtn.javaapi.resources.logical.VtnsResource; @@ -61,7 +64,7 @@ public class SwitchResource extends AbstractResource { * * @return the controller Id */ - public String getControllerId() { + public final String getControllerId() { return controllerId; } @@ -70,7 +73,7 @@ public class SwitchResource extends AbstractResource { * * @return the Switch Id */ - public String getSwitchId() { + public final String getSwitchId() { return switchId; } @@ -83,7 +86,8 @@ public class SwitchResource extends AbstractResource { * @throws VtnServiceException */ @Override - public int get(final JsonObject requestBody) throws VtnServiceException { + public final int get(final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Starts SwitchResource#get()"); ClientSession session = null; IpcRequestProcessor requestProcessor = null; @@ -100,9 +104,21 @@ public class SwitchResource extends AbstractResource { requestProcessor.createIpcRequestPacket( IpcRequestPacketEnum.KT_SWITCH_GET, requestBody, getUriParameters()); + + requestProcessor.getRequestPacket().setOperation( + new IpcUint32(UncOperationEnum.UNC_OP_READ.ordinal())); + + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.get(VtnServiceJsonConsts.OP).getAsString() + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { + requestProcessor.getRequestPacket() + .setOption1( + new IpcUint32(UncOption1Enum.UNC_OPT1_DETAIL + .ordinal())); + } LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); setInfo(responseGenerator.getSwitchResponse( requestProcessor.getIpcResponsePacket(), requestBody, diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchesResource.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchesResource.java index 72e5a73a..ff0755ac 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchesResource.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/SwitchesResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -96,38 +96,35 @@ public class SwitchesResource extends AbstractResource { uriParameterList); LOG.debug("Request packet created successfully"); status = requestProcessor.processIpcRequest(); - LOG.debug("Request packet processed with status:"+status); + LOG.debug("Request packet processed with status:" + status); final IpcPhysicalResponseFactory responseGenerator = new IpcPhysicalResponseFactory(); - /*setInfo(responseGenerator.getSwitchResponse( - requestProcessor.getIpcResponsePacket(), requestBody, - VtnServiceJsonConsts.LIST));*/ JsonObject responseJson = responseGenerator.getSwitchResponse( requestProcessor.getIpcResponsePacket(), requestBody, VtnServiceJsonConsts.LIST); if (responseJson.get(VtnServiceJsonConsts.SWITCHES).isJsonArray()) { - JsonArray responseArray = responseJson.get( + final JsonArray responseArray = responseJson.get( VtnServiceJsonConsts.SWITCHES).getAsJsonArray(); responseJson = getResponseJsonArrayPhysical(requestBody, - requestProcessor, responseGenerator, - responseArray, VtnServiceJsonConsts.SWITCHES, + requestProcessor, responseGenerator, responseArray, + VtnServiceJsonConsts.SWITCHES, VtnServiceJsonConsts.SWITCHID, - IpcRequestPacketEnum.KT_SWITCH_GET, - uriParameterList,VtnServiceIpcConsts.GET_SWITCH_RESPONSE); + IpcRequestPacketEnum.KT_SWITCH_GET, uriParameterList, + VtnServiceIpcConsts.GET_SWITCH_RESPONSE); } setInfo(responseJson); LOG.debug("Response object created successfully"); LOG.debug("Complete Ipc framework call"); } catch (final VtnServiceException e) { getExceptionHandler() - .raise(Thread.currentThread().getStackTrace()[1] - .getClassName() - + VtnServiceConsts.HYPHEN - + Thread.currentThread().getStackTrace()[1] - .getMethodName(), + .raise(Thread.currentThread().getStackTrace()[1] + .getClassName() + + VtnServiceConsts.HYPHEN + + Thread.currentThread().getStackTrace()[1] + .getMethodName(), UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(), UncJavaAPIErrorCode.IPC_SERVER_ERROR - .getErrorMessage(), e); + .getErrorMessage(), e); throw e; } finally { if (status == ClientSession.RESP_FATAL) { @@ -148,6 +145,8 @@ public class SwitchesResource extends AbstractResource { /** * Add URI parameters to list * + * @param requestBody + * ,for handling the request. * @return */ private List getUriParameters(final JsonObject requestBody) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/package-info.java new file mode 100644 index 00000000..716cacaa --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/resources/physical/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Resource classes for physical APIs. + */ +package org.opendaylight.vtn.javaapi.resources.physical; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/VtnIniParser.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/VtnIniParser.java new file mode 100644 index 00000000..c259ff78 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/VtnIniParser.java @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.vtn.javaapi.util; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.openstack.dbmanager.ConnectionProperties; + +public class VtnIniParser { + + /* Logger instance */ + private static final Logger LOG = Logger.getLogger(VtnIniParser.class + .getName()); + + private static VtnIniParser parser = null; + private Pattern iniSectionPattern = Pattern + .compile("\\s*\\[([^]]*)\\]\\s*"); + private Pattern iniKeys = Pattern.compile("\\s*([^=]*)=(.*)"); + private Map> iniEntriesMap = new HashMap>(); + + /** + * Constructor that initialize with loading of ini file + * + * @param path + * @throws IOException + */ + public VtnIniParser(String path) throws IOException { + load(path); + } + + /** + * Get instance of parser + * + * @param path + * @return + */ + public static VtnIniParser getInstance(String path) { + try { + if (parser == null) { + parser = new VtnIniParser(path); + } + } catch (IOException exception) { + LOG.error("ERROR Occurecd in the UNCINIParser#getInstance:- " + + exception.toString()); + } + return parser; + } + + /** + * Load parser for ini with specified file path + * + * @param path + * - ini file path + * @throws IOException + */ + public void load(String path) throws IOException { + BufferedReader br = null; + try { + br = new BufferedReader(new FileReader(path)); + String row; + String iniSectionStr = null; + while ((row = br.readLine()) != null) { + Matcher m = iniSectionPattern.matcher(row); + if (m.matches()) { + iniSectionStr = m.group(1).trim(); + } else if (iniSectionStr != null) { + m = iniKeys.matcher(row); + if (m.matches()) { + String key = m.group(1).trim(); + String value = m.group(2).trim(); + Map kv = iniEntriesMap + .get(iniSectionStr); + if (kv == null) { + iniEntriesMap.put(iniSectionStr, + kv = new HashMap()); + } + kv.put(key, value); + } + } + } + } catch (Exception e) { + LOG.error("ERROR Occurecd in the UNCINIParser#load:- " + + e.toString()); + } finally { + if (br != null) { + br.close(); + } + } + } + + /** + * Get string values for specified key + * + * @param section + * @param key + * @return - string value corresponding to key + */ + public String getString(String section, String key) { + Map kv = iniEntriesMap.get(section); + return kv.get(key); + } + + /** + * Load Connection properties with INI file entries + * + * @return + */ + public ConnectionProperties loadConnectionProperties() { + final ConnectionProperties connectionProperties = new ConnectionProperties(); + + Map kv = iniEntriesMap + .get(VtnServiceOpenStackConsts.UNC_DB_DSN); + + /** + * set database connection properties + */ + connectionProperties.setDbDriver(VtnServiceOpenStackConsts.DB_DRIVER); + + connectionProperties.setDbURL(VtnServiceOpenStackConsts.DB_URL_PREFIX + + kv.get(VtnServiceOpenStackConsts.DB_IP) + + VtnServiceConsts.COLON + + kv.get(VtnServiceOpenStackConsts.DB_PORT) + + VtnServiceConsts.SLASH + + kv.get(VtnServiceOpenStackConsts.DB_NAME)); + + connectionProperties.setDbPassword(kv + .get(VtnServiceOpenStackConsts.DB_PASSWORD)); + + connectionProperties.setDbUsername(kv + .get(VtnServiceOpenStackConsts.DB_USER)); + + /** + * set connection pool properties + */ + connectionProperties.setInitialConnections(Integer + .parseInt(VtnServiceInitManager.getConfigurationMap() + .getConfigValue( + VtnServiceOpenStackConsts.DB_INIT_CONN_SIZE))); + + connectionProperties.setMaxPossibleConnections(Integer + .parseInt(VtnServiceInitManager.getConfigurationMap() + .getConfigValue( + VtnServiceOpenStackConsts.DB_MAX_CONN_SIZE))); + + connectionProperties.setWaitforUsedConnections(Boolean + .parseBoolean(VtnServiceInitManager.getConfigurationMap() + .getConfigValue( + VtnServiceOpenStackConsts.DB_WAIT_CONDITION))); + return connectionProperties; + } + +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/VtnServiceUtil.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/VtnServiceUtil.java index ac66d366..1a766bc5 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/VtnServiceUtil.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/VtnServiceUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -16,9 +16,16 @@ import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; public class VtnServiceUtil { + private static final Logger LOG = Logger.getLogger(VtnServiceUtil.class + .getName()); + /** * Check the validity of Json Object * @@ -44,11 +51,11 @@ public class VtnServiceUtil { */ public static JsonObject trimParamValues(final JsonObject jsonObject) { // extract all the entries in Json Object - Set> jsonSet = jsonObject.entrySet(); + final Set> jsonSet = jsonObject.entrySet(); /* * iterate the loop for each entry */ - for (Entry entry : jsonSet) { + for (final Entry entry : jsonSet) { /* * if entry is type of Json Object */ @@ -56,24 +63,18 @@ public class VtnServiceUtil { && entry.getValue().isJsonObject()) { VtnServiceUtil.trimParamValues((JsonObject) entry.getValue()); continue; - } - /* - * if entry is type of Json array - */ - else if (!(entry.getValue() instanceof JsonNull) + } else if (!(entry.getValue() instanceof JsonNull) && entry.getValue().isJsonArray()) { - JsonArray array = (JsonArray) entry.getValue(); + final JsonArray array = (JsonArray) entry.getValue(); for (int index = 0; index < array.size(); index++) { - VtnServiceUtil.trimParamValues(array.get(index) - .getAsJsonObject()); - continue; + if (array.get(index).isJsonObject()) { + VtnServiceUtil.trimParamValues(array.get(index) + .getAsJsonObject()); + continue; + } } continue; - } - /* - * if entry is primitive type value - */ - else if (!(entry.getValue() instanceof JsonNull) + } else if (!(entry.getValue() instanceof JsonNull) && !entry.getValue().getAsString() .equals(entry.getValue().getAsString().trim())) { entry.setValue(new JsonPrimitive(entry.getValue().getAsString() @@ -82,7 +83,7 @@ public class VtnServiceUtil { } return jsonObject; } - + /** * Remove the parameters of given Json which contain empty string * @@ -90,43 +91,55 @@ public class VtnServiceUtil { * object that require to be update * @return Updated Json Object */ - public static JsonObject removeEmptyParamas(final JsonObject jsonObject){ + public static JsonObject removeEmptyParamas(final JsonObject jsonObject) { // extract all the entries in Json Object - Set> jsonSet = jsonObject.entrySet(); + final Set> jsonSet = jsonObject.entrySet(); /* * iterate the loop for each entry */ - for (Entry entry : jsonSet) { + for (final Entry entry : jsonSet) { /* * if entry is type of Json Object */ if (!(entry.getValue() instanceof JsonNull) && entry.getValue().isJsonObject()) { - VtnServiceUtil.removeEmptyParamas((JsonObject) entry.getValue()); + VtnServiceUtil + .removeEmptyParamas((JsonObject) entry.getValue()); continue; - } - /* - * if entry is type of Json array - */ - else if (!(entry.getValue() instanceof JsonNull) + } else if (!(entry.getValue() instanceof JsonNull) && entry.getValue().isJsonArray()) { - JsonArray array = (JsonArray) entry.getValue(); + final JsonArray array = (JsonArray) entry.getValue(); for (int index = 0; index < array.size(); index++) { VtnServiceUtil.removeEmptyParamas(array.get(index) .getAsJsonObject()); continue; } continue; - } - /* - * if entry is primitive type value - */ - else if (!(entry.getValue() instanceof JsonNull) + } else if (!(entry.getValue() instanceof JsonNull) && entry.getValue().getAsString() - .equals("")) { + .equals(VtnServiceConsts.EMPTY_STRING)) { jsonObject.remove(entry.getKey()); } } return jsonObject; } + + /** + * + * @param resource + * @return + */ + public static boolean isOpenStackResurce(AbstractResource resource) { + LOG.trace("Start VtnServiceUtil#isOpenStackResurce()"); + boolean status = false; + if (resource == null) { + LOG.debug("Decision cannot be taken that request came for UNC core APIs or UNC OpenStack APIs"); + } else if (resource.getClass().getCanonicalName() + .startsWith(VtnServiceOpenStackConsts.OS_RESOURCE_PKG)) { + LOG.debug("Request came for UNC OpenStack APIs"); + status = true; + } + LOG.trace("Complete VtnServiceUtil#isOpenStackResurce()"); + return status; + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/package-info.java new file mode 100644 index 00000000..d42bfcf7 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/util/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java Api utility classes. + */ +package org.opendaylight.vtn.javaapi.util; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AbortCandidateConfigResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AbortCandidateConfigResourceValidator.java index 5f104d1c..7657314b 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AbortCandidateConfigResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AbortCandidateConfigResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -23,10 +23,7 @@ import org.opendaylight.vtn.javaapi.resources.AbstractResource; public class AbortCandidateConfigResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger - .getLogger(AbortCandidateConfigResourceValidator.class - .getName()); - - final CommonValidator validator = new CommonValidator(); + .getLogger(AbortCandidateConfigResourceValidator.class.getName()); /** The instance of AbstractResource. */ private final AbstractResource resource; @@ -46,15 +43,16 @@ public class AbortCandidateConfigResourceValidator extends VtnServiceValidator { * Validate request Json for put method of Abort Candidate Configuration API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start AbortCandidateConfigResourceValidator#validate()"); LOG.info("Validating request for " + method + " of AbortCandidateConfigResourceValidator"); boolean isValid = false; if (requestBody != null && VtnServiceConsts.PUT.equals(method)) { isValid = validatePut(requestBody); - }else { + } else { setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); isValid = false; } @@ -99,4 +97,4 @@ public class AbortCandidateConfigResourceValidator extends VtnServiceValidator { LOG.trace("Complete AbortCandidateConfigResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ApiVersionResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ApiVersionResourceValidator.java index 586b5dbc..4335aa74 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ApiVersionResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ApiVersionResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -39,8 +39,9 @@ public class ApiVersionResourceValidator extends VtnServiceValidator { * Validate request for Show API Version */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.info("No validation required for Get Api Version"); } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AutoSaveResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AutoSaveResourceValidator.java index 15dfc7bb..525e7164 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AutoSaveResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/AutoSaveResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,9 +29,6 @@ public class AutoSaveResourceValidator extends VtnServiceValidator { /** The the instance of AbstractResource. */ private final AbstractResource resource; - /** The validator. */ - final CommonValidator validator = new CommonValidator(); - /** * Instantiates a new auto save resource validator. * @@ -48,15 +45,16 @@ public class AutoSaveResourceValidator extends VtnServiceValidator { * Auto-save Status API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("AutoSaveResourceValidator#validate()"); LOG.info("Validating request for " + method + " of AutoSaveResourceValidator"); boolean isValid = false; if (requestBody != null && VtnServiceConsts.PUT.equals(method)) { isValid = validatePut(requestBody); - }else { + } else { setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); isValid = false; } @@ -104,4 +102,4 @@ public class AutoSaveResourceValidator extends VtnServiceValidator { LOG.trace("Complete AutoSaveResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ClearStartupConfigurationResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ClearStartupConfigurationResourceValidator.java new file mode 100644 index 00000000..e4bc06a3 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ClearStartupConfigurationResourceValidator.java @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.validation; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; + +/** + * The Class ClearStartupConfigurationResourceValidator validates request Json + * object for Clear Startup Configuration API. + */ +public class ClearStartupConfigurationResourceValidator extends + VtnServiceValidator { + + private static final Logger LOG = Logger + .getLogger(ClearStartupConfigurationResourceValidator.class + .getName()); + + private final CommonValidator validator = new CommonValidator(); + + /** The instance of AbstractResource. */ + private final AbstractResource resource; + + /** + * Instantiates a new ClearStartup Configuration Resource validator. + * + * @param resource + * the instance of AbstractResource + */ + public ClearStartupConfigurationResourceValidator( + final AbstractResource resource) { + this.resource = resource; + LOG.info(this.resource.toString()); + } + + /** + * Validate request Json for put method of Clear Startup Configuration API. + */ + @Override + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start ClearStartupConfigurationResourceValidator#validate()"); + LOG.info("Validating request for " + method + + " of ClearStartupConfigurationResourceValidator"); + boolean isValid = false; + try { + if (requestBody != null && VtnServiceConsts.PUT.equals(method)) { + isValid = validatePut(requestBody); + } else { + setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Inside catch:NumberFormatException"); + if (method.equals(VtnServiceConsts.GET)) { + setInvalidParameter(validator.getInvalidParameter()); + } + isValid = false; + } + if (!isValid) { + LOG.error("Validation failed"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Validation successful"); + LOG.trace("Complete ClearStartupConfigurationResourceValidator#validate()"); + } + + /** + * Validate put request json for Clear Startup Configuration API. + * + * @param requestBody + * the request Json object + * @return true, if successful + */ + private boolean validatePut(final JsonObject requestBody) { + LOG.trace("Start ClearStartupConfigurationResourceValidator#validatePut()"); + boolean isValid = false; + setInvalidParameter(VtnServiceJsonConsts.STARTUP); + if (requestBody.has(VtnServiceJsonConsts.STARTUP) + && requestBody.get(VtnServiceJsonConsts.STARTUP).isJsonObject()) { + final JsonObject startup = requestBody + .getAsJsonObject(VtnServiceJsonConsts.STARTUP); + setInvalidParameter(VtnServiceJsonConsts.OPERATION); + if (startup.has(VtnServiceJsonConsts.OPERATION) + && startup.getAsJsonPrimitive( + VtnServiceJsonConsts.OPERATION).getAsString() != null + && !startup + .getAsJsonPrimitive(VtnServiceJsonConsts.OPERATION) + .getAsString().trim().isEmpty()) { + isValid = startup + .getAsJsonPrimitive(VtnServiceJsonConsts.OPERATION) + .getAsString().trim() + .equalsIgnoreCase(VtnServiceJsonConsts.CLEAR); + } + } + LOG.trace("Complete ClearStartupConfigurationResourceValidator#validatePut()"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/CommonValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/CommonValidator.java index 4c819e26..bf726208 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/CommonValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/CommonValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,11 +28,11 @@ public class CommonValidator { private String invalidParameter = null; - public String getInvalidParameter() { + public final String getInvalidParameter() { return invalidParameter; } - public void setInvalidParameter(final String invalidParameter) { + public final void setInvalidParameter(final String invalidParameter) { this.invalidParameter = invalidParameter; } @@ -43,7 +43,8 @@ public class CommonValidator { * the request Json object * @return true, if is valid get */ - public boolean isValidGet(final JsonObject requestBody, final boolean opFlag) { + public final boolean isValidGet(final JsonObject requestBody, + final boolean opFlag) { LOG.trace("Start CommonValidator#isValidGet"); boolean isValid = true; @@ -82,7 +83,7 @@ public class CommonValidator { if (requestBody.has(VtnServiceJsonConsts.INDEX) && requestBody.getAsJsonPrimitive( VtnServiceJsonConsts.INDEX).getAsString() != null - && !requestBody + && !requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.INDEX) .getAsString().isEmpty()) { isValid = isValidMaxLengthAlphaNum(requestBody @@ -107,7 +108,7 @@ public class CommonValidator { * the request Json object * @return true, if is valid get for int index */ - public boolean isValidGetForIntIndex(final JsonObject requestBody, + public final boolean isValidGetForIntIndex(final JsonObject requestBody, final boolean opFlag) { LOG.trace("Start CommonValidator#isValidGetForIntIndex"); boolean isValid = true; @@ -150,8 +151,8 @@ public class CommonValidator { requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.INDEX) .getAsString().trim(), - VtnServiceJsonConsts.VAL_1, - VtnServiceJsonConsts.VAL_65535); + VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_65535); } // validation for key: max_repitition @@ -172,16 +173,16 @@ public class CommonValidator { * the value of targetdb in the request Json object * @return true, if is valid request db */ - public boolean isValidRequestDB(final JsonObject requestBody) { + public final boolean isValidRequestDB(final JsonObject requestBody) { LOG.trace("Start CommonValidator#isValidRequestDB"); boolean isValid = true; if (requestBody.has(VtnServiceJsonConsts.TARGETDB) && requestBody - .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) - .getAsString() != null + .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) + .getAsString() != null && !requestBody - .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) - .getAsString().trim().isEmpty()) { + .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) + .getAsString().trim().isEmpty()) { final String targetdb = requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) .getAsString().trim(); @@ -205,14 +206,73 @@ public class CommonValidator { * the value of operation in the request Json object * @return true, if is valid operation */ - public boolean isValidOperation(final JsonObject requestBody) { + public final boolean isValidOperation(final JsonObject requestBody) { LOG.trace("Start CommonValidator#isValidOperation"); boolean isValid = true; if (requestBody.has(VtnServiceJsonConsts.OP) && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString() != null + .getAsString() != null && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { + final String operation = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.OP).getAsString() + .trim(); + isValid = operation.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL) + || operation.equalsIgnoreCase(VtnServiceJsonConsts.COUNT); + } else { + requestBody.remove(VtnServiceJsonConsts.OP); + requestBody.addProperty(VtnServiceJsonConsts.OP, + VtnServiceJsonConsts.NORMAL); + } + LOG.trace("Complete CommonValidator#isValidOperation"); + return isValid; + } + + /** + * Checks if is operation is count or detail. + * + * @param operation + * the value of operation in the request Json object + * @return true, if is valid operation + */ + public final boolean isValidOperationInfo(final JsonObject requestBody) { + LOG.trace("Start CommonValidator#isValidOperation"); + boolean isValid = true; + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString() != null + && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim().isEmpty()) { + final String operation = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.OP).getAsString() + .trim(); + isValid = operation.equalsIgnoreCase(VtnServiceJsonConsts.DETAIL) + || operation.equalsIgnoreCase(VtnServiceJsonConsts.COUNT) + || operation.equalsIgnoreCase(VtnServiceJsonConsts.INFO); + } else { + requestBody.remove(VtnServiceJsonConsts.OP); + requestBody.addProperty(VtnServiceJsonConsts.OP, + VtnServiceJsonConsts.NORMAL); + } + LOG.trace("Complete CommonValidator#isValidOperation"); + return isValid; + } + + /** + * Checks if is operation is count or detail. + * + * @param operation + * the value of operation in the request Json object + * @return true, if is valid operation + */ + public final boolean isValidOperationShow(final JsonObject requestBody) { + LOG.trace("Start CommonValidator#isValidOperation"); + boolean isValid = true; + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString() != null + && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim().isEmpty()) { final String operation = requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.OP).getAsString() .trim(); @@ -239,9 +299,9 @@ public class CommonValidator { boolean isValid = true; if (requestBody.has(VtnServiceJsonConsts.OP) && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString() != null + .getAsString() != null && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) .getAsString().trim() .equalsIgnoreCase(VtnServiceJsonConsts.COUNT); @@ -254,6 +314,34 @@ public class CommonValidator { return isValid; } + /** + * Checks if is operation is detail. + * + * @param operation + * the value of operation in the request Json object + * @return true, if is valid operation + */ + public final boolean + isValidOperationForDetail(final JsonObject requestBody) { + LOG.trace("Start CommonValidator#isValidOperationForDetail"); + boolean isValid = true; + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString() != null + && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim().isEmpty()) { + isValid = requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim() + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL); + } else { + requestBody.remove(VtnServiceJsonConsts.OP); + requestBody.addProperty(VtnServiceJsonConsts.OP, + VtnServiceJsonConsts.NORMAL); + } + LOG.trace("Complete CommonValidator#isValidOperationForDetail"); + return isValid; + } + /** * Checks if is valid max repetition count. * @@ -261,21 +349,21 @@ public class CommonValidator { * the value of max repetition count in the request Json object * @return true, if is valid operation */ - public boolean isValidMaxRepetition(final JsonObject requestBody) { + public final boolean isValidMaxRepetition(final JsonObject requestBody) { LOG.trace("Start CommonValidator#isValidMaxRepetition"); boolean isValid = true; if (requestBody.has(VtnServiceJsonConsts.MAX) && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.MAX) - .getAsString() != null + .getAsString() != null && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.MAX) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { final String max = requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.MAX).getAsString() .trim(); isValid = isValidRange(max, VtnServiceJsonConsts.LONG_VAL_1, VtnServiceJsonConsts.LONG_VAL_4294967295); } else { - VtnServiceConfiguration configuration = VtnServiceInitManager + final VtnServiceConfiguration configuration = VtnServiceInitManager .getConfigurationMap(); requestBody.remove(VtnServiceJsonConsts.MAX); requestBody.addProperty(VtnServiceJsonConsts.MAX, configuration @@ -296,10 +384,11 @@ public class CommonValidator { * the maximum value possible * @return true, if is valid range */ - public boolean isValidRange(final String input, final int min, final int max) { + public final boolean isValidRange(final String input, final int min, + final int max) { LOG.trace("Inside CommonValidator#isValidRange (int)"); if (!(input.equals(VtnServiceConsts.EMPTY_STRING))) { - int inputResult = Integer.parseInt(input); + final int inputResult = Integer.parseInt(input); return inputResult >= min && inputResult <= max; } else { return true; @@ -314,7 +403,7 @@ public class CommonValidator { * * @return true, if is valid alarm range */ - public boolean isValidAlarmRange(final BigInteger input, + public final boolean isValidBigIntegerRangeString(final BigInteger input, final BigInteger min, final BigInteger max) { LOG.trace("Inside CommonValidator#isValidRange (BigInteger)"); if (input.compareTo(min) == -1 || input.compareTo(max) == 1) { @@ -338,10 +427,11 @@ public class CommonValidator { * @return true,if it is valid range */ - public boolean isValidRange(final String input, final Long min, final Long max) { + public final boolean isValidRange(final String input, final Long min, + final Long max) { LOG.trace("Inside CommonValidator#isValidRange (Long)"); if (!(input.equals(VtnServiceConsts.EMPTY_STRING))) { - long inputResult = Long.parseLong(input); + final long inputResult = Long.parseLong(input); return inputResult >= min && inputResult <= max; } else { return true; @@ -356,9 +446,9 @@ public class CommonValidator { * * @return true, if is valid mac address */ - public boolean isValidMacAddress(final String input) { + public final boolean isValidMacAddress(final String input) { LOG.trace("Inside CommonValidator#isValidMacAddress"); - if(VtnServiceConsts.EMPTY_STRING.equals(input)){ + if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; } return input.matches(VtnServiceConsts.MAC_ADD_REGEX); @@ -371,7 +461,7 @@ public class CommonValidator { * the value to be validated * @return true, if is valid ether type */ - public boolean isValidEtherType(final String input) { + public final boolean isValidEtherType(final String input) { LOG.trace("Inside CommonValidator#isValidEtherType"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -390,7 +480,7 @@ public class CommonValidator { * the value to be validated * @return true, if is valid IP v4 address */ - public boolean isValidIpV4(final String input) { + public final boolean isValidIpV4(final String input) { LOG.trace("Inside CommonValidator#isValidIpV4"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -408,7 +498,7 @@ public class CommonValidator { * the value to be validated * @return true, if is valid IP v6 address */ - public boolean isValidIpV6(final String input) { + public final boolean isValidIpV6(final String input) { LOG.trace("Inside CommonValidator#isValidIpV6"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -428,7 +518,7 @@ public class CommonValidator { * the maximum length * @return true, if is valid max length */ - public boolean isValidMaxLength(final String input, final int length) { + public final boolean isValidMaxLength(final String input, final int length) { LOG.trace("Inside CommonValidator#isValidMaxLength"); return input.length() <= length; } @@ -442,7 +532,8 @@ public class CommonValidator { * * @return true, if is valid alpha numeric value */ - public boolean isValidMaxLengthAlphaNum(final String input, final int length) { + public final boolean isValidMaxLengthAlphaNum(final String input, + final int length) { LOG.trace("Inside CommonValidator#isValidMaxLengthAlphaNum"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -458,7 +549,7 @@ public class CommonValidator { * the value to be validated * @return true, if is valid type */ - public boolean isValidType(final String input) { + public final boolean isValidType(final String input) { LOG.trace("Start CommonValidator#isValidType"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -476,10 +567,11 @@ public class CommonValidator { /** * Check validation for Audit Status Parameter + * * @param input * @return */ - public boolean isValidAuditStatus(final String input) { + public final boolean isValidAuditStatus(final String input) { LOG.trace("Inside CommonValidator#isValidAuditStatus"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -498,7 +590,8 @@ public class CommonValidator { * the maximum length possible * @return true, if is valid physical Id */ - public boolean isValidPhysicalId(final String linkName, final int length) { + public final boolean isValidPhysicalId(final String linkName, + final int length) { LOG.trace("Inside CommonValidator#isValidPhysicalId"); if (VtnServiceConsts.EMPTY_STRING.equals(linkName)) { return true; @@ -517,7 +610,7 @@ public class CommonValidator { * the maximum length possible * @return true, if is valid value */ - public boolean isValidVersion(final String input, final int length) { + public final boolean isValidVersion(final String input, final int length) { LOG.trace("Inside CommonValidator#isValidVersion"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -537,7 +630,7 @@ public class CommonValidator { * the maximum length possible * @return true, if is valid value */ - public boolean isValidDomainId(final String input, final int length) { + public final boolean isValidDomainId(final String input, final int length) { LOG.trace("Inside CommonValidator#isValidDomainId"); if (VtnServiceConsts.EMPTY_STRING.equals(input)) { return true; @@ -554,26 +647,27 @@ public class CommonValidator { * the request Json object * @return true, if successful */ - public boolean isValidFlowFilterEntry(final JsonObject requestBody) { + public final boolean isValidFlowFilterEntry(final JsonObject requestBody) { LOG.trace("Start CommonValidator#isValidFlowFilterEntry()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.FLOWFILTERENTRY); if (requestBody.has(VtnServiceJsonConsts.FLOWFILTERENTRY) && requestBody.get(VtnServiceJsonConsts.FLOWFILTERENTRY) - .isJsonObject()) { + .isJsonObject()) { isValid = true; final JsonObject ffEntry = requestBody .getAsJsonObject(VtnServiceJsonConsts.FLOWFILTERENTRY); // validation for key: fl_name setInvalidParameter(VtnServiceJsonConsts.FLNAME); if (ffEntry.has(VtnServiceJsonConsts.FLNAME) - && ffEntry.getAsJsonPrimitive( - VtnServiceJsonConsts.FLNAME).getAsString() != null - && !ffEntry.get(VtnServiceJsonConsts.FLNAME) - .getAsString().trim().isEmpty()) { - isValid = isValidMaxLengthAlphaNum(ffEntry - .getAsJsonPrimitive(VtnServiceJsonConsts.FLNAME) - .getAsString().trim(), VtnServiceJsonConsts.LEN_32); + && ffEntry.getAsJsonPrimitive(VtnServiceJsonConsts.FLNAME) + .getAsString() != null + && !ffEntry.get(VtnServiceJsonConsts.FLNAME).getAsString() + .trim().isEmpty()) { + isValid = isValidMaxLengthAlphaNum( + ffEntry.getAsJsonPrimitive(VtnServiceJsonConsts.FLNAME) + .getAsString().trim(), + VtnServiceJsonConsts.LEN_32); } // validation for key: action_type if (isValid) { @@ -587,9 +681,9 @@ public class CommonValidator { isValid = actionType .equalsIgnoreCase(VtnServiceJsonConsts.PASS) || actionType - .equalsIgnoreCase(VtnServiceJsonConsts.DROP) + .equalsIgnoreCase(VtnServiceJsonConsts.DROP) || actionType - .equalsIgnoreCase(VtnServiceJsonConsts.REDIRECT); + .equalsIgnoreCase(VtnServiceJsonConsts.REDIRECT); } } // validation for key: nmg_name @@ -598,7 +692,7 @@ public class CommonValidator { if (ffEntry.has(VtnServiceJsonConsts.NMGNAME) && ffEntry.getAsJsonPrimitive( VtnServiceJsonConsts.NMGNAME).getAsString() != null - && !ffEntry.get(VtnServiceJsonConsts.NMGNAME) + && !ffEntry.get(VtnServiceJsonConsts.NMGNAME) .getAsString().trim().isEmpty()) { isValid = isValidMaxLengthAlphaNum(ffEntry .getAsJsonPrimitive(VtnServiceJsonConsts.NMGNAME) @@ -612,12 +706,11 @@ public class CommonValidator { && ffEntry.getAsJsonPrimitive( VtnServiceJsonConsts.PRIORITY).getAsString() != null) { isValid = isValidRange( - ffEntry - .getAsJsonPrimitive( - VtnServiceJsonConsts.PRIORITY) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_0, - VtnServiceJsonConsts.VAL_7); + ffEntry.getAsJsonPrimitive( + VtnServiceJsonConsts.PRIORITY) + .getAsString().trim(), + VtnServiceJsonConsts.VAL_0, + VtnServiceJsonConsts.VAL_7); } } // validation for key: dscp @@ -625,15 +718,13 @@ public class CommonValidator { setInvalidParameter(VtnServiceJsonConsts.DSCP); if (ffEntry.has(VtnServiceJsonConsts.DSCP) && ffEntry - .getAsJsonPrimitive(VtnServiceJsonConsts.DSCP) - .getAsString() != null) { + .getAsJsonPrimitive(VtnServiceJsonConsts.DSCP) + .getAsString() != null) { isValid = isValidRange( - ffEntry - .getAsJsonPrimitive( - VtnServiceJsonConsts.DSCP) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_0, - VtnServiceJsonConsts.VAL_63); + ffEntry.getAsJsonPrimitive( + VtnServiceJsonConsts.DSCP).getAsString() + .trim(), VtnServiceJsonConsts.VAL_0, + VtnServiceJsonConsts.VAL_63); } } } @@ -641,15 +732,17 @@ public class CommonValidator { return isValid; } - - /** Validate redirectdst Json Object in request Json object for FlowFilterEntry APIs + /** + * Validate redirectdst Json Object in request Json object for + * FlowFilterEntry APIs * * @param ffEntry * the request Json object to be validated * @return true, if successful */ - public boolean isValidRedirectDst(boolean isValid, final JsonObject ffEntry) { - LOG.trace("Start CommonValidator#isValidRedirectDst()"); + public final boolean isValidRedirectDst(boolean isValid, + final JsonObject ffEntry) { + LOG.trace("Start CommonValidator#isValidRedirectDst()"); setInvalidParameter(VtnServiceJsonConsts.REDIRECTDST); if (ffEntry.has(VtnServiceJsonConsts.REDIRECTDST)) { final JsonObject dest = ffEntry @@ -659,46 +752,42 @@ public class CommonValidator { setInvalidParameter(VtnServiceJsonConsts.VNODENAME); if (dest.has(VtnServiceJsonConsts.VNODENAME) && dest.getAsJsonPrimitive( - VtnServiceJsonConsts.VNODENAME) - .getAsString() != null) { + VtnServiceJsonConsts.VNODENAME).getAsString() != null) { isValid = isValidMaxLengthAlphaNum( dest.getAsJsonPrimitive( VtnServiceJsonConsts.VNODENAME) .getAsString().trim(), - VtnServiceJsonConsts.LEN_31) - || dest.getAsJsonPrimitive( - VtnServiceJsonConsts.VNODENAME) - .getAsString().trim().isEmpty(); + VtnServiceJsonConsts.LEN_31) + || dest.getAsJsonPrimitive( + VtnServiceJsonConsts.VNODENAME) + .getAsString().trim().isEmpty(); } } // validation for key: if_name (optional) if (isValid) { setInvalidParameter(VtnServiceJsonConsts.IFNAME); if (dest.has(VtnServiceJsonConsts.IFNAME) - && dest.getAsJsonPrimitive( - VtnServiceJsonConsts.IFNAME) + && dest.getAsJsonPrimitive(VtnServiceJsonConsts.IFNAME) .getAsString() != null) { isValid = isValidMaxLengthAlphaNum( - dest.getAsJsonPrimitive( - VtnServiceJsonConsts.IFNAME) + dest.getAsJsonPrimitive(VtnServiceJsonConsts.IFNAME) .getAsString().trim(), - VtnServiceJsonConsts.LEN_31) - || dest.getAsJsonPrimitive( - VtnServiceJsonConsts.IFNAME) - .getAsString().trim().isEmpty(); + VtnServiceJsonConsts.LEN_31) + || dest.getAsJsonPrimitive( + VtnServiceJsonConsts.IFNAME).getAsString() + .trim().isEmpty(); } } + // validation for key: macdstaddr (optional) if (isValid) { setInvalidParameter(VtnServiceJsonConsts.MACDSTADDR); if (dest.has(VtnServiceJsonConsts.MACDSTADDR) && dest.getAsJsonPrimitive( - VtnServiceJsonConsts.MACDSTADDR) - .getAsString() != null) { + VtnServiceJsonConsts.MACDSTADDR).getAsString() != null) { isValid = isValidMacAddress(dest - .getAsJsonPrimitive( - VtnServiceJsonConsts.MACDSTADDR) - .getAsString().trim()); + .getAsJsonPrimitive(VtnServiceJsonConsts.MACDSTADDR) + .getAsString().trim()); } } // validation for key: macsrcaddr (optional) @@ -707,16 +796,74 @@ public class CommonValidator { if (isValid && dest.has(VtnServiceJsonConsts.MACSRCADDR) && dest.getAsJsonPrimitive( - VtnServiceJsonConsts.MACSRCADDR) - .getAsString() != null) { + VtnServiceJsonConsts.MACSRCADDR).getAsString() != null) { isValid = isValidMacAddress(dest - .getAsJsonPrimitive( - VtnServiceJsonConsts.MACSRCADDR) - .getAsString().trim()); + .getAsJsonPrimitive(VtnServiceJsonConsts.MACSRCADDR) + .getAsString().trim()); } } } LOG.trace("Complete CommonValidator#isValidRedirectDst()"); return isValid; } + + // + + /** + * Checks if is valid tagetdb db. + * + * @param targetdb + * the value of targetdb in the request Json object + * @return true, if is valid request db + */ + public final boolean isValidRequestDBState(final JsonObject requestBody) { + LOG.trace("Start CommonValidator#isValidRequestDBState"); + boolean isValid = true; + if (requestBody.has(VtnServiceJsonConsts.TARGETDB) + && requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) + .getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) + .getAsString().trim().isEmpty()) { + final String targetdb = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) + .getAsString().trim(); + isValid = targetdb.equalsIgnoreCase(VtnServiceJsonConsts.STATE); + } else { + requestBody.remove(VtnServiceJsonConsts.TARGETDB); + requestBody.addProperty(VtnServiceJsonConsts.TARGETDB, + VtnServiceJsonConsts.STATE); + } + LOG.trace("Complete CommonValidator#isValidRequestDBState"); + return isValid; + } + + /** + * Checks if is valid mapping Id. + * + * @param targetdb + * the value of mapping id in the request Json object + * @return true, if is valid request mapping id + */ + public final boolean isValidMappingId(final String[] mappingId) { + LOG.trace("Start CommonValidator#isValidMappingId"); + boolean isValid = false; + + if (mappingId.length == VtnServiceJsonConsts.VAL_2 + && null != mappingId[VtnServiceJsonConsts.VAL_0] + && !mappingId[VtnServiceJsonConsts.VAL_0].trim().isEmpty() + && null != mappingId[VtnServiceJsonConsts.VAL_1] + && !mappingId[VtnServiceJsonConsts.VAL_1].trim().isEmpty() + && isValidMaxLengthAlphaNum( + mappingId[VtnServiceJsonConsts.VAL_0], + VtnServiceJsonConsts.LEN_31) + && isValidDomainId(mappingId[VtnServiceJsonConsts.VAL_1], + VtnServiceJsonConsts.LEN_31)) { + isValid = true; + } + LOG.trace("Complete CommonValidator#isValidMappingId"); + return isValid; + } + } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigModeResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigModeResourceValidator.java index f617b5d9..c1bed4a4 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigModeResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigModeResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -33,7 +33,7 @@ public class ConfigModeResourceValidator extends VtnServiceValidator { private final AbstractResource resource; /** The validator. */ - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new configuration mode resource validator. @@ -51,7 +51,7 @@ public class ConfigModeResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start ConfigModeResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -76,8 +76,9 @@ public class ConfigModeResourceValidator extends VtnServiceValidator { * Validate request json for Acquire Configuration Mode API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start ConfigModeResourceValidator#validate()"); LOG.info("Validating request for " + method + " of ConfigModeResourceValidator"); @@ -122,4 +123,4 @@ public class ConfigModeResourceValidator extends VtnServiceValidator { LOG.trace("Complete ConfigModeResourceValidator#validatePost()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigResourceValidator.java index bcb334d2..49e58626 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ConfigResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,8 +25,6 @@ public class ConfigResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(ConfigResourceValidator.class.getName()); - final CommonValidator validator = new CommonValidator(); - /** * Instantiates a new config resource validator. * @@ -41,15 +39,16 @@ public class ConfigResourceValidator extends VtnServiceValidator { * Configuration API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start ConfigResourceValidator#validate()"); LOG.info("Validating request for " + method + " of ConfigResourceValidator"); boolean isValid = false; if (requestBody != null && VtnServiceConsts.PUT.equals(method)) { isValid = validatePut(requestBody); - }else { + } else { setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); isValid = false; } @@ -98,4 +97,4 @@ public class ConfigResourceValidator extends VtnServiceValidator { LOG.trace("Complete ConfigResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/DifferenceConfigResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/DifferenceConfigResourceValidator.java index c26c722c..a25d148c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/DifferenceConfigResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/DifferenceConfigResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -14,9 +14,10 @@ import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; import org.opendaylight.vtn.javaapi.resources.AbstractResource; -public class DifferenceConfigResourceValidator extends VtnServiceValidator{ +public class DifferenceConfigResourceValidator extends VtnServiceValidator { - private static final Logger LOG = Logger.getLogger(DifferenceConfigResourceValidator.class.getName()); + private static final Logger LOG = Logger + .getLogger(DifferenceConfigResourceValidator.class.getName()); public DifferenceConfigResourceValidator(final AbstractResource resource) { @@ -26,8 +27,9 @@ public class DifferenceConfigResourceValidator extends VtnServiceValidator{ * Validate request Json for UNC Difference Config API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.info("Validation not required for Diffrence Config API"); } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ReadLockResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ReadLockResourceValidator.java index 54fbf41c..b010e828 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ReadLockResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/ReadLockResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -27,7 +27,7 @@ public class ReadLockResourceValidator extends VtnServiceValidator { .getLogger(ReadLockResourceValidator.class.getName()); /** The validator. */ - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new read lock resource validator. @@ -43,8 +43,9 @@ public class ReadLockResourceValidator extends VtnServiceValidator { * Validate request json for Read Lock API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("ReadLockResourceValidator#validate()"); LOG.info("Validating request for " + method + " of ReadLockResourceValidator"); @@ -52,7 +53,7 @@ public class ReadLockResourceValidator extends VtnServiceValidator { try { if (requestBody != null && VtnServiceConsts.PUT.equals(method)) { isValid = validatePut(requestBody); - }else { + } else { setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); isValid = false; } @@ -105,4 +106,4 @@ public class ReadLockResourceValidator extends VtnServiceValidator { LOG.trace("Complete ReadLockResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/SessionResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/SessionResourceValidator.java index f931e4b2..eefdd77e 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/SessionResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/SessionResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ public class SessionResourceValidator extends VtnServiceValidator { /** The instance of AbstractResource. */ private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new session resource validator. @@ -48,7 +48,7 @@ public class SessionResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start SessionResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -57,10 +57,10 @@ public class SessionResourceValidator extends VtnServiceValidator { && ((SessionResource) resource).getSessionId() != null && !((SessionResource) resource).getSessionId().trim() .isEmpty()) { - /*if (Long.parseLong(((SessionResource) resource).getSessionId() - .trim()) >= 0) { - isValid = true; - }*/ + /* + * if (Long.parseLong(((SessionResource) resource).getSessionId() + * .trim()) >= 0) { isValid = true; } + */ isValid = validator.isValidRange(((SessionResource) resource) .getSessionId().trim(), VtnServiceJsonConsts.LONG_VAL_1, VtnServiceJsonConsts.LONG_VAL_4294967295); @@ -77,8 +77,9 @@ public class SessionResourceValidator extends VtnServiceValidator { * Validate request json for Create Session API and List Sessions API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start SessionResourceValidator#validate()"); LOG.info("Validating request for " + method + " of SessionResourceValidator"); @@ -212,9 +213,11 @@ public class SessionResourceValidator extends VtnServiceValidator { .trim() .equalsIgnoreCase(VtnServiceJsonConsts.OPER); } else { - requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION).remove(VtnServiceJsonConsts.USERNAME); - requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION).addProperty(VtnServiceJsonConsts.USERNAME, - VtnServiceJsonConsts.OPER); + requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION) + .remove(VtnServiceJsonConsts.USERNAME); + requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION) + .addProperty(VtnServiceJsonConsts.USERNAME, + VtnServiceJsonConsts.OPER); } } // validation for key: type @@ -239,9 +242,11 @@ public class SessionResourceValidator extends VtnServiceValidator { .equalsIgnoreCase( VtnServiceJsonConsts.WEBUI); } else { - requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION).remove(VtnServiceJsonConsts.TYPE); - requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION).addProperty(VtnServiceJsonConsts.TYPE, - VtnServiceJsonConsts.WEBUI); + requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION) + .remove(VtnServiceJsonConsts.TYPE); + requestBody.getAsJsonObject(VtnServiceJsonConsts.SESSION) + .addProperty(VtnServiceJsonConsts.TYPE, + VtnServiceJsonConsts.WEBUI); } } // validation for key: info @@ -263,4 +268,4 @@ public class SessionResourceValidator extends VtnServiceValidator { LOG.trace("Complete SessionResourceValidator#validatePost()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/UserResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/UserResourceValidator.java index c7554ee8..01b6d2f3 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/UserResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/UserResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ public class UserResourceValidator extends VtnServiceValidator { private final AbstractResource resource; /** The validator. */ - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new user resource validator. @@ -48,7 +48,7 @@ public class UserResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start UserResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -69,8 +69,9 @@ public class UserResourceValidator extends VtnServiceValidator { * Validate request json for Set Password API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start UserResourceValidator#validate()"); LOG.info("Validating request for " + method + " of UserResourceValidator"); @@ -113,9 +114,9 @@ public class UserResourceValidator extends VtnServiceValidator { .getAsJsonObject() .getAsJsonPrimitive(VtnServiceJsonConsts.PASSWORD) .getAsString() != null) { - String password = requestBody.get(VtnServiceJsonConsts.PASSWORD) - .getAsJsonObject().get(VtnServiceJsonConsts.PASSWORD) - .getAsString(); + final String password = requestBody + .get(VtnServiceJsonConsts.PASSWORD).getAsJsonObject() + .get(VtnServiceJsonConsts.PASSWORD).getAsString(); requestBody.remove(VtnServiceJsonConsts.PASSWORD); requestBody.addProperty(VtnServiceJsonConsts.PASSWORD, password); } @@ -135,4 +136,4 @@ public class UserResourceValidator extends VtnServiceValidator { LOG.trace("Complete UserResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/VtnServiceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/VtnServiceValidator.java index 5e175ad3..2c662a81 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/VtnServiceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/VtnServiceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -8,12 +8,14 @@ */ package org.opendaylight.vtn.javaapi.validation; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.openstack.constants.VtnServiceOpenStackConsts; import org.opendaylight.vtn.javaapi.resources.AbstractResource; /** @@ -33,7 +35,7 @@ public abstract class VtnServiceValidator { * @param listOpFlag * the new list op flag */ - protected void setListOpFlag(final boolean listOpFlag) { + protected final void setListOpFlag(final boolean listOpFlag) { this.listOpFlag = listOpFlag; } @@ -42,7 +44,7 @@ public abstract class VtnServiceValidator { * * @return true, if is list op flag */ - public boolean isListOpFlag() { + public final boolean isListOpFlag() { return listOpFlag; } @@ -52,7 +54,7 @@ public abstract class VtnServiceValidator { * @param requestBody * the request body */ - public void updateOpParameterForList(final JsonObject requestBody) { + public final void updateOpParameterForList(final JsonObject requestBody) { if (listOpFlag && !requestBody.has(VtnServiceJsonConsts.OP)) { requestBody.addProperty(VtnServiceJsonConsts.OP, VtnServiceJsonConsts.NORMAL); @@ -64,7 +66,16 @@ public abstract class VtnServiceValidator { * * @return the invalid parameter */ - public String getInvalidParameter() { + public final String getInvalidParameter() { + int colonIndex = invalidParameter.indexOf(VtnServiceConsts.COLON); + if (colonIndex > -1 + && invalidParameter.substring(colonIndex + 1).length() > VtnServiceOpenStackConsts.MAX_MSG_LEN) { + LOG.debug("message length is more than 1024, required to truncate"); + String firstPart = invalidParameter.substring(0, colonIndex + 1); + String secondPart = invalidParameter.substring(colonIndex + 1) + .substring(0, VtnServiceOpenStackConsts.MAX_MSG_LEN); + invalidParameter = firstPart + secondPart; + } return invalidParameter; } @@ -74,7 +85,7 @@ public abstract class VtnServiceValidator { * @param invalidParameter * the new invalid parameter */ - public void setInvalidParameter(final String invalidParameter) { + public final void setInvalidParameter(final String invalidParameter) { this.invalidParameter = invalidParameter; } @@ -125,7 +136,7 @@ public abstract class VtnServiceValidator { } /** - * Default implementation of Validate uri method. + * Default implementation of Validate URI method. * * @return true, if successful * @throws VtnServiceException @@ -135,4 +146,87 @@ public abstract class VtnServiceValidator { LOG.trace("Return from VtnServiceValidator#validate"); return true; } + + /** + * Validates the parameters of POST request body + * + * @param validator + * - instance for CommonValidator + * @param requestBody + * - JSON object contains "id" and "description" parameters + * @return - validation status as true or false + */ + public boolean validatePost(final CommonValidator validator, + final JsonObject requestBody) { + LOG.trace("Start VtnServiceValidator#validatePost()"); + boolean isValid = true; + // validation of id + if (requestBody != null + && requestBody.has(VtnServiceOpenStackConsts.ID)) { + final JsonElement id = requestBody + .get(VtnServiceOpenStackConsts.ID); + if (id.isJsonNull() + || id.getAsString().isEmpty() + || !validator.isValidMaxLengthAlphaNum(id.getAsString(), + VtnServiceJsonConsts.LEN_31)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.ID + + VtnServiceConsts.COLON + + (id.isJsonNull() ? id : id.getAsString())); + } + } + + if (isValid) { + isValid = validatePut(validator, requestBody); + } + + LOG.trace("Complete VtnServiceValidator#validatePost()"); + return isValid; + } + + /** + * Validates the parameters of PUT request body + * + * @param validator + * - instance for CommonValidator + * @param requestBody + * - JSON object "description" parameter + * @return - validation status as true or false + */ + public boolean validatePut(final CommonValidator validator, + final JsonObject requestBody) { + LOG.trace("Start VtnServiceValidator#validatePut()"); + boolean isValid = true; + // validation of description + if (requestBody != null + && requestBody.has(VtnServiceOpenStackConsts.DESCRIPTION)) { + final JsonElement description = requestBody + .get(VtnServiceOpenStackConsts.DESCRIPTION); + if (!description.isJsonNull()) { + if (hasInvaidDescChars(description.getAsString()) + || !validator.isValidMaxLength( + description.getAsString(), + VtnServiceJsonConsts.LEN_127)) { + isValid = false; + setInvalidParameter(VtnServiceOpenStackConsts.DESCRIPTION + + VtnServiceConsts.COLON + + description.getAsString()); + } + } + } + LOG.trace("Complete VtnServiceValidator#validatePut()"); + return isValid; + } + + /** + * Check if description string contains invalid characters or not + * + * @param description + * - string that required to validate + * @return - result as true or false + */ + private boolean hasInvaidDescChars(String description) { + return ((description.contains(VtnServiceConsts.QUESTION_MARK)) || (description + .contains(VtnServiceConsts.QUOTE_CHAR))); + } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/ArpEntryResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/ArpEntryResourceValidator.java index 73e43b4d..e3b1e7e5 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/ArpEntryResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/ArpEntryResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class ArpEntryResourceValidator extends VtnServiceValidator { .getLogger(ArpEntryResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new arp entry resource validator. @@ -47,7 +47,7 @@ public class ArpEntryResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start ArpEntryResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -81,8 +81,9 @@ public class ArpEntryResourceValidator extends VtnServiceValidator { * Validate request Json object for get method of ArpEntry API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start ArpEntryResourceValidator#validate()"); LOG.info("Validating request for " + method + " of ArpEntryResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/CoordinatorVersionResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/CoordinatorVersionResourceValidator.java new file mode 100644 index 00000000..c6238a2b --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/CoordinatorVersionResourceValidator.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.validation.logical; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; +import org.opendaylight.vtn.javaapi.validation.physical.VersionResourceValidator; + +/** + * The Class CoordinatorVersionResourceValidator validates request Json object + * for Show Coordinator Version API. + */ +public class CoordinatorVersionResourceValidator extends VtnServiceValidator { + /** + * Logger for debugging purpose. + */ + private static final Logger LOG = Logger + .getLogger(VersionResourceValidator.class.getName()); + + /** + * validator object for common validations. + * + * @param resource + * ,Abtsract class object + */ + public CoordinatorVersionResourceValidator(final AbstractResource resource) { + + } + + /** + * Validate request Json for Show Coordinator Version PI. + * + * @param requestBody + * , for request. + * @param method + * , for method. + * @throws VtnServiceException + * , in case of failure + */ + @Override + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { + LOG.info("No validation required for Show Coordinator Version"); + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayResourceValidator.java index 95696d83..de59c7e5 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class DhcpRelayResourceValidator extends VtnServiceValidator { .getLogger(DhcpRelayResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new DHCP relay resource validator. @@ -47,7 +47,7 @@ public class DhcpRelayResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start DhcpRelayResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -82,8 +82,9 @@ public class DhcpRelayResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put method of DhcpRelay API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayResourceValidator#validate()"); LOG.info("Validating request for " + method + " of DhcpRelayResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayServerResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayServerResourceValidator.java index f282e12f..a779a7d7 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayServerResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/DhcpRelayServerResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,7 +31,7 @@ public class DhcpRelayServerResourceValidator extends VtnServiceValidator { .getLogger(DhcpRelayServerResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new DHCP relay server resource validator. @@ -49,7 +49,7 @@ public class DhcpRelayServerResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start DhcpRelayServerResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -119,8 +119,9 @@ public class DhcpRelayServerResourceValidator extends VtnServiceValidator { * DhcpRelayServer API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DhcpRelayServerResourceValidator#validate()"); LOG.info("Validating request for " + method + " of DhcpRelayServerResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntriesResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntriesResourceValidator.java index e1807872..8f5a83d8 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntriesResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntriesResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,7 +28,7 @@ public class FlowFilterEntriesResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(FlowFilterEntriesResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new flow filter entries resource validator. @@ -46,7 +46,7 @@ public class FlowFilterEntriesResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start FlowFilterEntriesResourceValidator#validateUri()"); boolean isValid = false; // For FlowFilterEntriesResource instance @@ -87,8 +87,9 @@ public class FlowFilterEntriesResourceValidator extends VtnServiceValidator { * API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start FlowFilterEntriesResourceValidator#validate()"); LOG.info("Validating request for " + method + " of FlowFilterEntriesResourceValidator"); @@ -159,9 +160,10 @@ public class FlowFilterEntriesResourceValidator extends VtnServiceValidator { .getAsString() != null && !ffEntry.getAsJsonPrimitive(VtnServiceJsonConsts.SEQNUM) .getAsString().trim().isEmpty()) { - isValid = validator.isValidRange(ffEntry - .getAsJsonPrimitive(VtnServiceJsonConsts.SEQNUM) - .getAsString().trim(), VtnServiceJsonConsts.VAL_1, + isValid = validator.isValidRange( + ffEntry.getAsJsonPrimitive(VtnServiceJsonConsts.SEQNUM) + .getAsString().trim(), + VtnServiceJsonConsts.VAL_1, VtnServiceJsonConsts.VAL_65535); } else { isValid = false; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntryResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntryResourceValidator.java index 9be0ee33..89252c6f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntryResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterEntryResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,7 +28,7 @@ public class FlowFilterEntryResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(FlowFilterEntryResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new flow filter entry resource validator. @@ -46,7 +46,7 @@ public class FlowFilterEntryResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start FlowFilterEntryResourceValidator#validateUri()"); boolean isValid = false; // For FlowFilterEntriesResource instance @@ -80,9 +80,9 @@ public class FlowFilterEntryResourceValidator extends VtnServiceValidator { if (((FlowFilterEntryResource) resource).getSeqnum() != null && !((FlowFilterEntryResource) resource).getSeqnum() .trim().isEmpty()) { - isValid = validator.isValidRange(((FlowFilterEntryResource) resource) - .getSeqnum().trim(), - VtnServiceJsonConsts.VAL_1, + isValid = validator.isValidRange( + ((FlowFilterEntryResource) resource).getSeqnum() + .trim(), VtnServiceJsonConsts.VAL_1, VtnServiceJsonConsts.VAL_65535); } else { isValid = false; @@ -98,8 +98,9 @@ public class FlowFilterEntryResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put method of FlowFilterEntry API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start FlowFilterEntryResourceValidator#validate()"); LOG.info("Validating request for " + method + " of FlowFilterEntryResourceValidator"); @@ -153,16 +154,16 @@ public class FlowFilterEntryResourceValidator extends VtnServiceValidator { private boolean validateGet(final JsonObject requestBody) { LOG.trace("Start FlowFilterEntryResourceValidator#validateGet()"); boolean isValid = false; - + // validation for key: targetdb setInvalidParameter(VtnServiceJsonConsts.TARGETDB); isValid = validator.isValidRequestDB(requestBody); - if (isValid + if (isValid && requestBody.has(VtnServiceJsonConsts.OP) && requestBody - .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB) + .getAsJsonPrimitive(VtnServiceJsonConsts.OP) .getAsString().trim() - .equalsIgnoreCase(VtnServiceJsonConsts.STATE)) { + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL)) { // validation for key: controller_id(mandatory) setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); if (requestBody.has(VtnServiceJsonConsts.CONTROLLERID) @@ -174,7 +175,7 @@ public class FlowFilterEntryResourceValidator extends VtnServiceValidator { } else { isValid = false; } - + if (isValid) { // validation for key: domain_id(mandatory) setInvalidParameter(VtnServiceJsonConsts.DOMAINID); @@ -187,9 +188,9 @@ public class FlowFilterEntryResourceValidator extends VtnServiceValidator { } else { isValid = false; } - } + } } - + // validation for key: op if (isValid) { setInvalidParameter(VtnServiceJsonConsts.OP); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterResourceValidator.java index 3f4bf791..19c25924 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowFilterResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,7 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(FlowFilterResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new flow filter resource validator. @@ -54,7 +54,7 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { * */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start FlowFilterResourceValidator#validateUri()"); boolean isValid = false; // For FlowFilterResource instance @@ -84,22 +84,20 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { } } setListOpFlag(false); - } - // For FlowFiltersResource instance - else if (resource instanceof FlowFiltersResource + } else if (resource instanceof FlowFiltersResource && ((FlowFiltersResource) resource).getVtnName() != null && !((FlowFiltersResource) resource).getVtnName().trim() .isEmpty()) { + // For FlowFiltersResource instance isValid = validator.isValidMaxLengthAlphaNum( ((FlowFiltersResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); setListOpFlag(true); - } - // For VBridgeFlowFiltersResource instance - else if (resource instanceof VBridgeFlowFiltersResource + } else if (resource instanceof VBridgeFlowFiltersResource && ((VBridgeFlowFiltersResource) resource).getVtnName() != null && !((VBridgeFlowFiltersResource) resource).getVtnName().trim() .isEmpty()) { + // For VBridgeFlowFiltersResource instance isValid = validator .isValidMaxLengthAlphaNum( ((VBridgeFlowFiltersResource) resource) @@ -120,12 +118,11 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { } } setListOpFlag(true); - } - // For VBridgeFlowFilterResource instance - else if (resource instanceof VBridgeFlowFilterResource + } else if (resource instanceof VBridgeFlowFilterResource && ((VBridgeFlowFilterResource) resource).getVtnName() != null && !((VBridgeFlowFilterResource) resource).getVtnName().trim() .isEmpty()) { + // For VBridgeFlowFilterResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeFlowFilterResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -159,13 +156,12 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { } } setListOpFlag(false); - } - // For VBridgeInterfaceFlowFiltersResource instance - else if (resource instanceof VBridgeInterfaceFlowFiltersResource + } else if (resource instanceof VBridgeInterfaceFlowFiltersResource && ((VBridgeInterfaceFlowFiltersResource) resource) .getVtnName() != null && !((VBridgeInterfaceFlowFiltersResource) resource) .getVtnName().trim().isEmpty()) { + // For VBridgeInterfaceFlowFiltersResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFiltersResource) resource) .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -200,12 +196,11 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { } } setListOpFlag(true); - } - // For VBridgeInterfaceFlowFilterResource instance - else if (resource instanceof VBridgeInterfaceFlowFilterResource + } else if (resource instanceof VBridgeInterfaceFlowFilterResource && ((VBridgeInterfaceFlowFilterResource) resource).getVtnName() != null && !((VBridgeInterfaceFlowFilterResource) resource) .getVtnName().isEmpty()) { + // For VBridgeInterfaceFlowFilterResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFilterResource) resource) .getVtnName(), VtnServiceJsonConsts.LEN_31); @@ -255,13 +250,12 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { } } setListOpFlag(false); - } - // For VRouterInterfaceFlowFiltersResource instance - else if (resource instanceof VRouterInterfaceFlowFiltersResource + } else if (resource instanceof VRouterInterfaceFlowFiltersResource && ((VRouterInterfaceFlowFiltersResource) resource) .getVtnName() != null && !((VRouterInterfaceFlowFiltersResource) resource) .getVtnName().trim().isEmpty()) { + // For VRouterInterfaceFlowFiltersResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFiltersResource) resource) .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -296,12 +290,11 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { } } setListOpFlag(true); - } - // For VRouterInterfaceFlowFilterResource instance - else if (resource instanceof VRouterInterfaceFlowFilterResource + } else if (resource instanceof VRouterInterfaceFlowFilterResource && ((VRouterInterfaceFlowFilterResource) resource).getVtnName() != null && !((VRouterInterfaceFlowFilterResource) resource) .getVtnName().trim().isEmpty()) { + // For VRouterInterfaceFlowFilterResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFilterResource) resource) .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -352,6 +345,7 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { } setListOpFlag(false); } + LOG.trace("Complete FlowFilterResourceValidator#validateUri()"); return isValid; } @@ -360,8 +354,9 @@ public class FlowFilterResourceValidator extends VtnServiceValidator { * Validate request json for get and post method of FlowFilter API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start FlowFilterResourceValidator#validate()"); LOG.info("Validating request for " + method + " of FlowFilterResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListEntryResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListEntryResourceValidator.java index 00fa7b92..825007a6 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListEntryResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListEntryResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(FlowListEntryResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new flow list entry resource validator. @@ -47,7 +47,7 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start FlowListEntryResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -65,9 +65,9 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { if (((FlowListEntryResource) resource).getSeqnum() != null && !((FlowListEntryResource) resource).getSeqnum() .trim().isEmpty()) { - isValid = validator.isValidRange(((FlowListEntryResource) resource) - .getSeqnum().trim(), - VtnServiceJsonConsts.VAL_1, + isValid = validator.isValidRange( + ((FlowListEntryResource) resource).getSeqnum() + .trim(), VtnServiceJsonConsts.VAL_1, VtnServiceJsonConsts.VAL_65535); } else { isValid = false; @@ -92,8 +92,9 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { * FlowListEntry API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start FlowListEntryResourceValidator#validate()"); LOG.info("Validating request for " + method + " of FlowListEntryResourceValidator"); @@ -334,12 +335,9 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { if (flowListEntry.has(VtnServiceJsonConsts.IPPROTO) && flowListEntry.getAsJsonPrimitive( VtnServiceJsonConsts.IPPROTO).getAsString() != null) { - isValid = validator.isValidRange( - flowListEntry - .getAsJsonPrimitive( - VtnServiceJsonConsts.IPPROTO) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_1, + isValid = validator.isValidRange(flowListEntry + .getAsJsonPrimitive(VtnServiceJsonConsts.IPPROTO) + .getAsString().trim(), VtnServiceJsonConsts.VAL_1, VtnServiceJsonConsts.VAL_255); } } @@ -349,12 +347,9 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { if (flowListEntry.has(VtnServiceJsonConsts.IPDSCP) && flowListEntry.getAsJsonPrimitive( VtnServiceJsonConsts.IPDSCP).getAsString() != null) { - isValid = validator.isValidRange( - flowListEntry - .getAsJsonPrimitive( - VtnServiceJsonConsts.IPDSCP) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_0, + isValid = validator.isValidRange(flowListEntry + .getAsJsonPrimitive(VtnServiceJsonConsts.IPDSCP) + .getAsString().trim(), VtnServiceJsonConsts.VAL_0, VtnServiceJsonConsts.VAL_63); } } @@ -364,12 +359,9 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { if (flowListEntry.has(VtnServiceJsonConsts.L4DSTPORT) && flowListEntry.getAsJsonPrimitive( VtnServiceJsonConsts.L4DSTPORT).getAsString() != null) { - isValid = validator.isValidRange( - flowListEntry - .getAsJsonPrimitive( - VtnServiceJsonConsts.L4DSTPORT) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_0, + isValid = validator.isValidRange(flowListEntry + .getAsJsonPrimitive(VtnServiceJsonConsts.L4DSTPORT) + .getAsString().trim(), VtnServiceJsonConsts.VAL_0, VtnServiceJsonConsts.VAL_65535); } } @@ -395,14 +387,11 @@ public class FlowListEntryResourceValidator extends VtnServiceValidator { if (flowListEntry.has(VtnServiceJsonConsts.L4SRCPORT) && flowListEntry.getAsJsonPrimitive( VtnServiceJsonConsts.L4SRCPORT).getAsString() != null) { - isValid = validator.isValidRange( - flowListEntry - .getAsJsonPrimitive( - VtnServiceJsonConsts.L4SRCPORT) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_0, + isValid = validator.isValidRange(flowListEntry + .getAsJsonPrimitive(VtnServiceJsonConsts.L4SRCPORT) + .getAsString().trim(), VtnServiceJsonConsts.VAL_0, - VtnServiceJsonConsts.VAL_65535); + VtnServiceJsonConsts.VAL_65535); } } // validation for key: l4srcendport diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListResourceValidator.java index 5e31b5e8..a8a6f339 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/FlowListResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class FlowListResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(FlowListResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new flow list resource validator. @@ -47,7 +47,7 @@ public class FlowListResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start FlowListResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -71,8 +71,9 @@ public class FlowListResourceValidator extends VtnServiceValidator { * Validate request Json object for get and post method of FlowList API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start FlowListResourceValidator#validate()"); LOG.info("Validating request for " + method diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/HostAddressResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/HostAddressResourceValidator.java index f0f56c9c..1d73ba59 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/HostAddressResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/HostAddressResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class HostAddressResourceValidator extends VtnServiceValidator { .getLogger(HostAddressResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new host address resource validator. @@ -47,7 +47,7 @@ public class HostAddressResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start HostAddressResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -83,8 +83,9 @@ public class HostAddressResourceValidator extends VtnServiceValidator { * API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start HostAddressResourceValidator#validate()"); boolean isValid = false; try { @@ -160,11 +161,9 @@ public class HostAddressResourceValidator extends VtnServiceValidator { && ipaddr.getAsJsonPrimitive( VtnServiceJsonConsts.PREFIX).getAsString() != null) { isValid = validator.isValidRange( - ipaddr - .getAsJsonPrimitive( - VtnServiceJsonConsts.PREFIX) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_1, + ipaddr.getAsJsonPrimitive( + VtnServiceJsonConsts.PREFIX).getAsString() + .trim(), VtnServiceJsonConsts.VAL_1, VtnServiceJsonConsts.VAL_30); } else { isValid = false; @@ -174,4 +173,4 @@ public class HostAddressResourceValidator extends VtnServiceValidator { LOG.trace("Complete HostAddressResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/InterfaceResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/InterfaceResourceValidator.java index 9ba5d311..f66ed518 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/InterfaceResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/InterfaceResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,7 +37,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(InterfaceResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new interface resource validator. @@ -61,7 +61,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start InterfaceResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -69,7 +69,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { if (resource instanceof VBypassInterfaceResource && ((VBypassInterfaceResource) resource).getVtnName() != null && !((VBypassInterfaceResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBypassInterfaceResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -77,11 +77,12 @@ public class InterfaceResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBYPASS_NAME); if (((VBypassInterfaceResource) resource).getVbypassName() != null - && !((VBypassInterfaceResource) resource).getVbypassName() - .trim().isEmpty()) { + && !((VBypassInterfaceResource) resource) + .getVbypassName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VBypassInterfaceResource) resource).getVbypassName() - .trim(), VtnServiceJsonConsts.LEN_31); + ((VBypassInterfaceResource) resource) + .getVbypassName().trim(), + VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -91,10 +92,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.IFNAME); if (((VBypassInterfaceResource) resource).getIfName() != null && !((VBypassInterfaceResource) resource).getIfName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBypassInterfaceResource) resource).getIfName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -103,21 +104,19 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof VBypassInterfacesResource && ((VBypassInterfacesResource) resource).getVtnName() != null && !((VBypassInterfacesResource) resource).getVtnName().trim() - .isEmpty()) { - isValid = validator - .isValidMaxLengthAlphaNum( - ((VBypassInterfacesResource) resource) - .getVtnName().trim(), - VtnServiceJsonConsts.LEN_31); + .isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum( + ((VBypassInterfacesResource) resource).getVtnName().trim(), + VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBYPASS_NAME); if (((VBypassInterfacesResource) resource).getVbypassName() != null && !((VBypassInterfacesResource) resource) - .getVbypassName().trim().isEmpty()) { + .getVbypassName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBypassInterfacesResource) resource) - .getVbypassName().trim(), + .getVbypassName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -127,7 +126,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof VTunnelInterfaceResource && ((VTunnelInterfaceResource) resource).getVtnName() != null && !((VTunnelInterfaceResource) resource).getVtnName().trim() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTunnelInterfaceResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -136,10 +135,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.VTUNNELNAME); if (((VTunnelInterfaceResource) resource).getvTunnelName() != null && !((VTunnelInterfaceResource) resource) - .getvTunnelName().trim().isEmpty()) { + .getvTunnelName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTunnelInterfaceResource) resource) - .getvTunnelName().trim(), + .getvTunnelName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -150,10 +149,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.IFNAME); if (((VTunnelInterfaceResource) resource).getIfName() != null && !((VTunnelInterfaceResource) resource).getIfName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTunnelInterfaceResource) resource).getIfName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -162,7 +161,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof VTunnelInterfacesResource && ((VTunnelInterfacesResource) resource).getVtnName() != null && !((VTunnelInterfacesResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTunnelInterfacesResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -171,10 +170,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.VTUNNELNAME); if (((VTunnelInterfacesResource) resource).getvTunnelName() != null && !((VTunnelInterfacesResource) resource) - .getvTunnelName().trim().isEmpty()) { + .getvTunnelName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTunnelInterfacesResource) resource) - .getvTunnelName().trim(), + .getvTunnelName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -184,7 +183,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof VBridgeInterfaceResource && ((VBridgeInterfaceResource) resource).getVtnName() != null && !((VBridgeInterfaceResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfaceResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -193,10 +192,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.VBRNAME); if (((VBridgeInterfaceResource) resource).getVbrName() != null && !((VBridgeInterfaceResource) resource).getVbrName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfaceResource) resource).getVbrName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -206,10 +205,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.IFNAME); if (((VBridgeInterfaceResource) resource).getIfName() != null && !((VBridgeInterfaceResource) resource).getIfName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfaceResource) resource).getIfName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -218,7 +217,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof VBridgeInterfacesResource && ((VBridgeInterfacesResource) resource).getVtnName() != null && !((VBridgeInterfacesResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfacesResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -227,10 +226,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.VBRNAME); if (((VBridgeInterfacesResource) resource).getVbrName() != null && !((VBridgeInterfacesResource) resource).getVbrName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfacesResource) resource).getVbrName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -239,21 +238,21 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof DhcpRelayInterfaceResource && ((DhcpRelayInterfaceResource) resource).getVtnName() != null && !((DhcpRelayInterfaceResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((DhcpRelayInterfaceResource) resource) - .getVtnName().trim(), + .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VRTNAME); if (((DhcpRelayInterfaceResource) resource).getVrtName() != null && !((DhcpRelayInterfaceResource) resource) - .getVrtName().trim().isEmpty()) { + .getVrtName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((DhcpRelayInterfaceResource) resource) - .getVrtName().trim(), + .getVrtName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -264,10 +263,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.IFNAME); if (((DhcpRelayInterfaceResource) resource).getIfName() != null && !((DhcpRelayInterfaceResource) resource).getIfName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((DhcpRelayInterfaceResource) resource).getIfName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -276,19 +275,19 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof DhcpRelayInterfacesResource && ((DhcpRelayInterfacesResource) resource).getVtnName() != null && !((DhcpRelayInterfacesResource) resource).getVtnName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((DhcpRelayInterfacesResource) resource).getVtnName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VRTNAME); if (((DhcpRelayInterfacesResource) resource).getVrtName() != null && !((DhcpRelayInterfacesResource) resource) - .getVrtName().trim().isEmpty()) { + .getVrtName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((DhcpRelayInterfacesResource) resource) - .getVrtName().trim(), + .getVrtName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -298,7 +297,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof VTepInterfaceResource && ((VTepInterfaceResource) resource).getVtnName() != null && !((VTepInterfaceResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTepInterfaceResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -307,10 +306,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.VTEPNAME); if (((VTepInterfaceResource) resource).getvTepName() != null && !((VTepInterfaceResource) resource).getvTepName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTepInterfaceResource) resource).getvTepName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -320,10 +319,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.IFNAME); if (((VTepInterfaceResource) resource).getIfName() != null && !((VTepInterfaceResource) resource).getIfName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTepInterfaceResource) resource).getIfName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -332,7 +331,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { } else if (resource instanceof VTepInterfacesResource && ((VTepInterfacesResource) resource).getVtnName() != null && !((VTepInterfacesResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTepInterfacesResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -341,10 +340,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { + VtnServiceJsonConsts.VTEPNAME); if (((VTepInterfacesResource) resource).getvTepName() != null && !((VTepInterfacesResource) resource).getvTepName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VTepInterfacesResource) resource).getvTepName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -359,8 +358,9 @@ public class InterfaceResourceValidator extends VtnServiceValidator { * validate request Json for get, put and post method of Interface API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start InterfaceResourceValidator#validate()"); LOG.info("Validating request for " + method + " of InterfaceResourceValidator"); @@ -429,9 +429,9 @@ public class InterfaceResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.OP); if (requestBody.has(VtnServiceJsonConsts.OP) && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString() != null + .getAsString() != null && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) .getAsString().trim() .equalsIgnoreCase(VtnServiceJsonConsts.COUNT); @@ -455,7 +455,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.INTERFACE); if (requestBody.has(VtnServiceJsonConsts.INTERFACE) && requestBody.get(VtnServiceJsonConsts.INTERFACE) - .isJsonObject()) { + .isJsonObject()) { final JsonObject commonInterface = requestBody .getAsJsonObject(VtnServiceJsonConsts.INTERFACE); // validation for key: if_name(mandatory) @@ -463,7 +463,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { if (commonInterface.has(VtnServiceJsonConsts.IFNAME) && commonInterface.getAsJsonPrimitive( VtnServiceJsonConsts.IFNAME).getAsString() != null - && !commonInterface + && !commonInterface .getAsJsonPrimitive(VtnServiceJsonConsts.IFNAME) .getAsString().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum(commonInterface @@ -493,7 +493,7 @@ public class InterfaceResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.INTERFACE); if (requestBody.has(VtnServiceJsonConsts.INTERFACE) && requestBody.get(VtnServiceJsonConsts.INTERFACE) - .isJsonObject()) { + .isJsonObject()) { isValid = true; final JsonObject commonInterface = requestBody .getAsJsonObject(VtnServiceJsonConsts.INTERFACE); @@ -502,10 +502,10 @@ public class InterfaceResourceValidator extends VtnServiceValidator { if (commonInterface.has(VtnServiceJsonConsts.DESCRIPTION) && commonInterface.getAsJsonPrimitive( VtnServiceJsonConsts.DESCRIPTION).getAsString() != null - && !commonInterface + && !commonInterface .getAsJsonPrimitive( VtnServiceJsonConsts.DESCRIPTION) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = validator.isValidMaxLength(commonInterface .getAsJsonPrimitive(VtnServiceJsonConsts.DESCRIPTION) .getAsString().trim(), VtnServiceJsonConsts.LEN_127); @@ -519,11 +519,11 @@ public class InterfaceResourceValidator extends VtnServiceValidator { final String adminStatus = commonInterface .getAsJsonPrimitive( VtnServiceJsonConsts.ADMINSTATUS) - .getAsString().trim(); + .getAsString().trim(); isValid = adminStatus .equalsIgnoreCase(VtnServiceJsonConsts.ENABLE) || adminStatus - .equalsIgnoreCase(VtnServiceJsonConsts.DISABLE); + .equalsIgnoreCase(VtnServiceJsonConsts.DISABLE); } } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/IpRouteResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/IpRouteResourceValidator.java index 7aff97af..3aa2ba03 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/IpRouteResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/IpRouteResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ public class IpRouteResourceValidator extends VtnServiceValidator { .getLogger(IpRouteResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new Ip Route resource validator. @@ -48,7 +48,7 @@ public class IpRouteResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start IpRouteResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -82,8 +82,9 @@ public class IpRouteResourceValidator extends VtnServiceValidator { * Validate request Json object for get method of IpRoute API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start IpRouteResourceValidator#validate()"); LOG.info("Validating request for " + method + " of IpRouteResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/L2DomainResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/L2DomainResourceValidator.java index 5c948705..655e9fdc 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/L2DomainResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/L2DomainResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class L2DomainResourceValidator extends VtnServiceValidator { .getLogger(L2DomainResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new l2 domain resource validator. @@ -47,7 +47,7 @@ public class L2DomainResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start L2DomainResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -81,8 +81,9 @@ public class L2DomainResourceValidator extends VtnServiceValidator { * Validate request Json object for get method of L2DomainResource */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start L2DomainResourceValidator#validate()"); LOG.info("Validating request for " + method + " of L2DomainResourceValidator"); @@ -129,4 +130,4 @@ public class L2DomainResourceValidator extends VtnServiceValidator { LOG.trace("Complete L2DomainResourceValidator#validateGet()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/MacEntryResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/MacEntryResourceValidator.java index 12b08083..0378bf8f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/MacEntryResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/MacEntryResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class MacEntryResourceValidator extends VtnServiceValidator { .getLogger(MacEntryResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new mac entry resource validator. @@ -47,7 +47,7 @@ public class MacEntryResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start MacEntryResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -81,8 +81,9 @@ public class MacEntryResourceValidator extends VtnServiceValidator { * Validate request Json object for get method of MacEntry API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start MacEntryResourceValidator#validate()"); LOG.info("Validating request for " + method + " of MacEntryResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/PortMapResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/PortMapResourceValidator.java index fbc81bdc..074ead12 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/PortMapResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/PortMapResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,7 +15,7 @@ import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.resources.logical.PortMapResource; +import org.opendaylight.vtn.javaapi.resources.logical.VBridgeInterfacePortMapResource; import org.opendaylight.vtn.javaapi.resources.logical.VTepInterfacePortMapResource; import org.opendaylight.vtn.javaapi.resources.logical.VTunnelInterfacePortMapResource; import org.opendaylight.vtn.javaapi.validation.CommonValidator; @@ -31,7 +31,7 @@ public class PortMapResourceValidator extends VtnServiceValidator { .getLogger(PortMapResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new port map resource validator. @@ -49,25 +49,27 @@ public class PortMapResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start PortMapResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VTNNAME); - if (resource instanceof PortMapResource - && ((PortMapResource) resource).getVtnName() != null - && !((PortMapResource) resource).getVtnName().trim().isEmpty()) { + if (resource instanceof VBridgeInterfacePortMapResource + && ((VBridgeInterfacePortMapResource) resource).getVtnName() != null + && !((VBridgeInterfacePortMapResource) resource).getVtnName() + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((PortMapResource) resource).getVtnName().trim(), - VtnServiceJsonConsts.LEN_31); + ((VBridgeInterfacePortMapResource) resource).getVtnName() + .trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBRNAME); - if (((PortMapResource) resource).getVbrName() != null - && !((PortMapResource) resource).getVbrName().trim() - .isEmpty()) { + if (((VBridgeInterfacePortMapResource) resource).getVbrName() != null + && !((VBridgeInterfacePortMapResource) resource) + .getVbrName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((PortMapResource) resource).getVbrName().trim(), + ((VBridgeInterfacePortMapResource) resource) + .getVbrName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -76,70 +78,85 @@ public class PortMapResourceValidator extends VtnServiceValidator { if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.IFNAME); - if (((PortMapResource) resource).getIfName() != null - && !((PortMapResource) resource).getIfName().trim() - .isEmpty()) { + if (((VBridgeInterfacePortMapResource) resource).getIfName() != null + && !((VBridgeInterfacePortMapResource) resource) + .getIfName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((PortMapResource) resource).getIfName().trim(), + ((VBridgeInterfacePortMapResource) resource) + .getIfName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } } setListOpFlag(false); - } - else if (resource instanceof VTunnelInterfacePortMapResource + } else if (resource instanceof VTunnelInterfacePortMapResource && ((VTunnelInterfacePortMapResource) resource).getVtnName() != null - && !((VTunnelInterfacePortMapResource) resource).getVtnName().trim().isEmpty()) { + && !((VTunnelInterfacePortMapResource) resource).getVtnName() + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VTunnelInterfacePortMapResource) resource).getVtnName().trim(), - VtnServiceJsonConsts.LEN_31); - if (isValid){ - setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VTUNNELNAME); - if(((VTunnelInterfacePortMapResource) resource).getVtunnelName() != null - && !((VTunnelInterfacePortMapResource) resource).getVtunnelName().trim().isEmpty()) { + ((VTunnelInterfacePortMapResource) resource).getVtnName() + .trim(), VtnServiceJsonConsts.LEN_31); + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.VTUNNELNAME); + if (((VTunnelInterfacePortMapResource) resource) + .getVtunnelName() != null + && !((VTunnelInterfacePortMapResource) resource) + .getVtunnelName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VTunnelInterfacePortMapResource) resource).getVtunnelName().trim(), + ((VTunnelInterfacePortMapResource) resource) + .getVtunnelName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } } - if (isValid){ - setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.IFNAME); - if(((VTunnelInterfacePortMapResource) resource).getIfName() != null - && !((VTunnelInterfacePortMapResource) resource).getIfName().trim().isEmpty()) { + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.IFNAME); + if (((VTunnelInterfacePortMapResource) resource).getIfName() != null + && !((VTunnelInterfacePortMapResource) resource) + .getIfName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VTunnelInterfacePortMapResource) resource).getIfName().trim(), + ((VTunnelInterfacePortMapResource) resource) + .getIfName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } } setListOpFlag(false); - }else if (resource instanceof VTepInterfacePortMapResource + } else if (resource instanceof VTepInterfacePortMapResource && ((VTepInterfacePortMapResource) resource).getVtnName() != null - && !((VTepInterfacePortMapResource) resource).getVtnName().trim().isEmpty()) { + && !((VTepInterfacePortMapResource) resource).getVtnName() + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VTepInterfacePortMapResource) resource).getVtnName().trim(), - VtnServiceJsonConsts.LEN_31); - if (isValid){ - setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VTEPNAME); - if(((VTepInterfacePortMapResource) resource).getVtepName() != null - && !((VTepInterfacePortMapResource) resource).getVtepName().trim().isEmpty()) { + ((VTepInterfacePortMapResource) resource).getVtnName() + .trim(), VtnServiceJsonConsts.LEN_31); + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.VTEPNAME); + if (((VTepInterfacePortMapResource) resource).getVtepName() != null + && !((VTepInterfacePortMapResource) resource) + .getVtepName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VTepInterfacePortMapResource) resource).getVtepName().trim(), + ((VTepInterfacePortMapResource) resource) + .getVtepName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } } - if (isValid){ - setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.IFNAME); - if(((VTepInterfacePortMapResource) resource).getIfName() != null - && !((VTepInterfacePortMapResource) resource).getIfName().trim().isEmpty()) { + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.IFNAME); + if (((VTepInterfacePortMapResource) resource).getIfName() != null + && !((VTepInterfacePortMapResource) resource) + .getIfName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VTepInterfacePortMapResource) resource).getIfName().trim(), + ((VTepInterfacePortMapResource) resource) + .getIfName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -155,8 +172,9 @@ public class PortMapResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put method of PortMap API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start PortMapResourceValidator#validate()"); LOG.info("Validating request for " + method + " of PortMapResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/StaticIpRouteResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/StaticIpRouteResourceValidator.java index 0de82734..d441f80b 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/StaticIpRouteResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/StaticIpRouteResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -47,7 +47,7 @@ public class StaticIpRouteResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start StaticIpRouteResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -138,8 +138,9 @@ public class StaticIpRouteResourceValidator extends VtnServiceValidator { * StaticIpRoute API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start StaticIpRouteResourceValidator#validate()"); LOG.info("Validating request for " + method + " of StaticIpRouteResourceValidator"); @@ -150,9 +151,9 @@ public class StaticIpRouteResourceValidator extends VtnServiceValidator { && VtnServiceConsts.GET.equals(method)) { isValid = validateGet(requestBody, isListOpFlag()); updateOpParameterForList(requestBody); -// } else if (isValid && requestBody != null -// && VtnServiceConsts.PUT.equals(method)) { -// isValid = validatePut(requestBody); + // } else if (isValid && requestBody != null + // && VtnServiceConsts.PUT.equals(method)) { + // isValid = validatePut(requestBody); } else if (isValid && requestBody != null && VtnServiceConsts.POST.equals(method)) { isValid = validatePost(requestBody); @@ -272,32 +273,29 @@ public class StaticIpRouteResourceValidator extends VtnServiceValidator { if (staticIp.has(VtnServiceJsonConsts.PREFIX) && staticIp.getAsJsonPrimitive( VtnServiceJsonConsts.PREFIX).getAsString() != null) { - isValid = validator.isValidRange( - staticIp - .getAsJsonPrimitive( - VtnServiceJsonConsts.PREFIX) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_0, + isValid = validator.isValidRange(staticIp + .getAsJsonPrimitive(VtnServiceJsonConsts.PREFIX) + .getAsString().trim(), VtnServiceJsonConsts.VAL_0, VtnServiceJsonConsts.VAL_32); } else { isValid = false; } } // validation for key: nmg_name(mandatory) -// if (isValid) { -// setInvalidParameter(VtnServiceJsonConsts.NMGNAME); -// if (staticIp.has(VtnServiceJsonConsts.NMGNAME) -// && staticIp.getAsJsonPrimitive( -// VtnServiceJsonConsts.NMGNAME).getAsString() != null -// && !staticIp -// .getAsJsonPrimitive( -// VtnServiceJsonConsts.NMGNAME) -// .getAsString().trim().isEmpty()) { -// isValid = validator.isValidMaxLengthAlphaNum(staticIp -// .getAsJsonPrimitive(VtnServiceJsonConsts.NMGNAME) -// .getAsString().trim(), VtnServiceJsonConsts.LEN_31); -// } -// } + // if (isValid) { + // setInvalidParameter(VtnServiceJsonConsts.NMGNAME); + // if (staticIp.has(VtnServiceJsonConsts.NMGNAME) + // && staticIp.getAsJsonPrimitive( + // VtnServiceJsonConsts.NMGNAME).getAsString() != null + // && !staticIp + // .getAsJsonPrimitive( + // VtnServiceJsonConsts.NMGNAME) + // .getAsString().trim().isEmpty()) { + // isValid = validator.isValidMaxLengthAlphaNum(staticIp + // .getAsJsonPrimitive(VtnServiceJsonConsts.NMGNAME) + // .getAsString().trim(), VtnServiceJsonConsts.LEN_31); + // } + // } if (isValid) { isValid = validatePut(requestBody); } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntriesResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntriesResourceValidator.java index 7bc031b6..42e9f5e8 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntriesResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntriesResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -32,7 +32,7 @@ public class VBridgeFlowFilterEntriesResourceValidator extends .getLogger(VBridgeFlowFilterEntriesResourceValidator.class .getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new v bridge flow filter entries resource validator. @@ -53,7 +53,7 @@ public class VBridgeFlowFilterEntriesResourceValidator extends * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VBridgeFlowFilterEntriesResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -65,16 +65,16 @@ public class VBridgeFlowFilterEntriesResourceValidator extends .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeFlowFilterEntriesResource) resource).getVtnName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBRNAME); if (((VBridgeFlowFilterEntriesResource) resource).getVbrName() != null && !((VBridgeFlowFilterEntriesResource) resource) - .getVbrName().trim().isEmpty()) { + .getVbrName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeFlowFilterEntriesResource) resource) - .getVbrName().trim(), + .getVbrName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -85,11 +85,11 @@ public class VBridgeFlowFilterEntriesResourceValidator extends + VtnServiceJsonConsts.FFTYPE); if (((VBridgeFlowFilterEntriesResource) resource).getFfType() != null && !((VBridgeFlowFilterEntriesResource) resource) - .getFfType().trim().isEmpty()) { + .getFfType().trim().isEmpty()) { isValid = VtnServiceJsonConsts.IN .equalsIgnoreCase(((VBridgeFlowFilterEntriesResource) resource) .getFfType().trim()) - || VtnServiceJsonConsts.OUT + || VtnServiceJsonConsts.OUT .equalsIgnoreCase(((VBridgeFlowFilterEntriesResource) resource) .getFfType().trim()); } else { @@ -97,28 +97,26 @@ public class VBridgeFlowFilterEntriesResourceValidator extends } } setListOpFlag(true); - } - - // For VBridgeInterfaceFlowFilterEntriesResource instance - else if (resource instanceof VBridgeInterfaceFlowFilterEntriesResource + } else if (resource instanceof VBridgeInterfaceFlowFilterEntriesResource && ((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getVtnName() != null + .getVtnName() != null && !((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getVtnName().trim().isEmpty()) { + .getVtnName().trim().isEmpty()) { + // For VBridgeInterfaceFlowFilterEntriesResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); + .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBRNAME); if (((VBridgeInterfaceFlowFilterEntriesResource) resource) .getVbrName() != null && !((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getVbrName().trim().isEmpty()) { + .getVbrName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getVbrName().trim(), + .getVbrName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -130,11 +128,11 @@ public class VBridgeFlowFilterEntriesResourceValidator extends if (((VBridgeInterfaceFlowFilterEntriesResource) resource) .getIfName() != null && !((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getIfName().trim().isEmpty()) { + .getIfName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getIfName().trim(), + .getIfName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -146,11 +144,11 @@ public class VBridgeFlowFilterEntriesResourceValidator extends if (((VBridgeInterfaceFlowFilterEntriesResource) resource) .getFfType() != null && !((VBridgeInterfaceFlowFilterEntriesResource) resource) - .getFfType().trim().isEmpty()) { + .getFfType().trim().isEmpty()) { isValid = VtnServiceJsonConsts.IN .equalsIgnoreCase(((VBridgeInterfaceFlowFilterEntriesResource) resource) .getFfType().trim()) - || VtnServiceJsonConsts.OUT + || VtnServiceJsonConsts.OUT .equalsIgnoreCase(((VBridgeInterfaceFlowFilterEntriesResource) resource) .getFfType().trim()); } else { @@ -158,28 +156,26 @@ public class VBridgeFlowFilterEntriesResourceValidator extends } } setListOpFlag(true); - } - - // For VRouterInterfaceFlowFilterEntriesResource instance - else if (resource instanceof VRouterInterfaceFlowFilterEntriesResource + } else if (resource instanceof VRouterInterfaceFlowFilterEntriesResource && ((VRouterInterfaceFlowFilterEntriesResource) resource) - .getVtnName() != null + .getVtnName() != null && !((VRouterInterfaceFlowFilterEntriesResource) resource) - .getVtnName().trim().isEmpty()) { + .getVtnName().trim().isEmpty()) { + // For VRouterInterfaceFlowFilterEntriesResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFilterEntriesResource) resource) - .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); + .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VRTNAME); if (((VRouterInterfaceFlowFilterEntriesResource) resource) .getVrtName() != null && !((VRouterInterfaceFlowFilterEntriesResource) resource) - .getVrtName().trim().isEmpty()) { + .getVrtName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFilterEntriesResource) resource) - .getVrtName().trim(), + .getVrtName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -191,11 +187,11 @@ public class VBridgeFlowFilterEntriesResourceValidator extends if (((VRouterInterfaceFlowFilterEntriesResource) resource) .getIfName() != null && !((VRouterInterfaceFlowFilterEntriesResource) resource) - .getIfName().trim().isEmpty()) { + .getIfName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFilterEntriesResource) resource) - .getIfName().trim(), + .getIfName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -207,11 +203,11 @@ public class VBridgeFlowFilterEntriesResourceValidator extends if (((VRouterInterfaceFlowFilterEntriesResource) resource) .getFfType() != null && !((VRouterInterfaceFlowFilterEntriesResource) resource) - .getFfType().trim().isEmpty()) { + .getFfType().trim().isEmpty()) { isValid = VtnServiceJsonConsts.IN .equalsIgnoreCase(((VRouterInterfaceFlowFilterEntriesResource) resource) .getFfType().trim()) - || VtnServiceJsonConsts.OUT + || VtnServiceJsonConsts.OUT .equalsIgnoreCase(((VRouterInterfaceFlowFilterEntriesResource) resource) .getFfType().trim()); } else { @@ -220,6 +216,7 @@ public class VBridgeFlowFilterEntriesResourceValidator extends } setListOpFlag(true); } + LOG.trace("Complete VBridgeFlowFilterEntriesResourceValidator#validateUri()"); return isValid; } @@ -230,8 +227,9 @@ public class VBridgeFlowFilterEntriesResourceValidator extends * VrouterInterfaceFlowFilterEntry API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterEntriesResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VBridgeFlowFilterEntriesResourceValidator"); @@ -293,17 +291,18 @@ public class VBridgeFlowFilterEntriesResourceValidator extends setInvalidParameter(VtnServiceJsonConsts.FLOWFILTERENTRY); if (requestBody.has(VtnServiceJsonConsts.FLOWFILTERENTRY) && requestBody.get(VtnServiceJsonConsts.FLOWFILTERENTRY) - .isJsonObject()) { + .isJsonObject()) { final JsonObject ffEntry = requestBody .getAsJsonObject(VtnServiceJsonConsts.FLOWFILTERENTRY); // validation for key: seqnum(mandatory) setInvalidParameter(VtnServiceJsonConsts.SEQNUM); if (ffEntry.has(VtnServiceJsonConsts.SEQNUM) && ffEntry.getAsJsonPrimitive(VtnServiceJsonConsts.SEQNUM) - .getAsString() != null) { - isValid = validator.isValidRange(ffEntry - .getAsJsonPrimitive(VtnServiceJsonConsts.SEQNUM) - .getAsString().trim(), VtnServiceJsonConsts.VAL_1, + .getAsString() != null) { + isValid = validator.isValidRange( + ffEntry.getAsJsonPrimitive(VtnServiceJsonConsts.SEQNUM) + .getAsString().trim(), + VtnServiceJsonConsts.VAL_1, VtnServiceJsonConsts.VAL_65535); } if (isValid) { diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntryResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntryResourceValidator.java index 8a30ab97..8de861df 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntryResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeFlowFilterEntryResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -27,12 +27,11 @@ import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; * VrouterInterfaceFlowFilterEntry API. */ public class VBridgeFlowFilterEntryResourceValidator extends -VtnServiceValidator { + VtnServiceValidator { private static final Logger LOG = Logger - .getLogger(VBridgeFlowFilterEntryResourceValidator.class - .getName()); + .getLogger(VBridgeFlowFilterEntryResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new vbridge flow filter entry resource validator. @@ -53,7 +52,7 @@ VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VBridgeFlowFilterEntryResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -62,19 +61,19 @@ VtnServiceValidator { if (resource instanceof VBridgeFlowFilterEntryResource && ((VBridgeFlowFilterEntryResource) resource).getVtnName() != null && !((VBridgeFlowFilterEntryResource) resource).getVtnName() - .trim().isEmpty()) { + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeFlowFilterEntryResource) resource).getVtnName() - .trim(), VtnServiceJsonConsts.LEN_31); + .trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBRNAME); if (((VBridgeFlowFilterEntryResource) resource).getVbrName() != null && !((VBridgeFlowFilterEntryResource) resource) - .getVbrName().trim().isEmpty()) { + .getVbrName().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeFlowFilterEntryResource) resource) - .getVbrName().trim(), + .getVbrName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -85,13 +84,13 @@ VtnServiceValidator { + VtnServiceJsonConsts.FFTYPE); if (((VBridgeFlowFilterEntryResource) resource).getFfType() != null && !((VBridgeFlowFilterEntryResource) resource) - .getFfType().trim().isEmpty()) { + .getFfType().trim().isEmpty()) { isValid = ((VBridgeFlowFilterEntryResource) resource) .getFfType().trim() .equalsIgnoreCase(VtnServiceJsonConsts.IN) || ((VBridgeFlowFilterEntryResource) resource) - .getFfType().trim() - .equalsIgnoreCase(VtnServiceJsonConsts.OUT); + .getFfType().trim() + .equalsIgnoreCase(VtnServiceJsonConsts.OUT); } else { isValid = false; } @@ -101,40 +100,37 @@ VtnServiceValidator { + VtnServiceJsonConsts.SEQNUM); if (((VBridgeFlowFilterEntryResource) resource).getSeqnum() != null && !((VBridgeFlowFilterEntryResource) resource) - .getSeqnum().trim().isEmpty()) { - isValid = validator - .isValidRange( - ((VBridgeFlowFilterEntryResource) resource) - .getSeqnum().trim(), - VtnServiceJsonConsts.VAL_1, - VtnServiceJsonConsts.VAL_65535); + .getSeqnum().trim().isEmpty()) { + isValid = validator.isValidRange( + ((VBridgeFlowFilterEntryResource) resource) + .getSeqnum().trim(), + VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_65535); } else { isValid = false; } } setListOpFlag(false); - } - - // For VBridgeInterfaceFlowFilterEntryResource instance - else if (resource instanceof VBridgeInterfaceFlowFilterEntryResource + } else if (resource instanceof VBridgeInterfaceFlowFilterEntryResource && ((VBridgeInterfaceFlowFilterEntryResource) resource) - .getVtnName() != null + .getVtnName() != null && !((VBridgeInterfaceFlowFilterEntryResource) resource) - .getVtnName().trim().isEmpty()) { + .getVtnName().trim().isEmpty()) { + // For VBridgeInterfaceFlowFilterEntryResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFilterEntryResource) resource) - .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); + .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBRNAME); if (((VBridgeInterfaceFlowFilterEntryResource) resource) .getVbrName() != null && !((VBridgeInterfaceFlowFilterEntryResource) resource) - .getVbrName().trim().isEmpty()) { + .getVbrName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFilterEntryResource) resource) - .getVbrName().trim(), + .getVbrName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -146,11 +142,11 @@ VtnServiceValidator { if (((VBridgeInterfaceFlowFilterEntryResource) resource) .getIfName() != null && !((VBridgeInterfaceFlowFilterEntryResource) resource) - .getIfName().trim().isEmpty()) { + .getIfName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VBridgeInterfaceFlowFilterEntryResource) resource) - .getIfName().trim(), + .getIfName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -162,13 +158,13 @@ VtnServiceValidator { if (((VBridgeInterfaceFlowFilterEntryResource) resource) .getFfType() != null && !((VBridgeInterfaceFlowFilterEntryResource) resource) - .getFfType().trim().isEmpty()) { + .getFfType().trim().isEmpty()) { isValid = ((VBridgeInterfaceFlowFilterEntryResource) resource) .getFfType().trim() .equalsIgnoreCase(VtnServiceJsonConsts.IN) || ((VBridgeInterfaceFlowFilterEntryResource) resource) - .getFfType().trim() - .equalsIgnoreCase(VtnServiceJsonConsts.OUT); + .getFfType().trim() + .equalsIgnoreCase(VtnServiceJsonConsts.OUT); } else { isValid = false; } @@ -179,40 +175,38 @@ VtnServiceValidator { if (((VBridgeInterfaceFlowFilterEntryResource) resource) .getSeqnum() != null && !((VBridgeInterfaceFlowFilterEntryResource) resource) - .getSeqnum().trim().isEmpty()) { + .getSeqnum().trim().isEmpty()) { isValid = validator .isValidRange( ((VBridgeInterfaceFlowFilterEntryResource) resource) .getSeqnum().trim(), - VtnServiceJsonConsts.VAL_1, - VtnServiceJsonConsts.VAL_65535); + VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_65535); } else { isValid = false; } } setListOpFlag(false); - } - - // For VRouterInterfaceFlowFilterEntryResource instance - else if (resource instanceof VRouterInterfaceFlowFilterEntryResource + } else if (resource instanceof VRouterInterfaceFlowFilterEntryResource && ((VRouterInterfaceFlowFilterEntryResource) resource) - .getVtnName() != null + .getVtnName() != null && !((VRouterInterfaceFlowFilterEntryResource) resource) - .getVtnName().trim().isEmpty()) { + .getVtnName().trim().isEmpty()) { + // For VRouterInterfaceFlowFilterEntryResource instance isValid = validator.isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFilterEntryResource) resource) - .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); + .getVtnName().trim(), VtnServiceJsonConsts.LEN_31); if (isValid) { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VRTNAME); if (((VRouterInterfaceFlowFilterEntryResource) resource) .getVrtName() != null && !((VRouterInterfaceFlowFilterEntryResource) resource) - .getVrtName().trim().isEmpty()) { + .getVrtName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFilterEntryResource) resource) - .getVrtName().trim(), + .getVrtName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -224,11 +218,11 @@ VtnServiceValidator { if (((VRouterInterfaceFlowFilterEntryResource) resource) .getIfName() != null && !((VRouterInterfaceFlowFilterEntryResource) resource) - .getIfName().trim().isEmpty()) { + .getIfName().trim().isEmpty()) { isValid = validator .isValidMaxLengthAlphaNum( ((VRouterInterfaceFlowFilterEntryResource) resource) - .getIfName().trim(), + .getIfName().trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; @@ -240,13 +234,13 @@ VtnServiceValidator { if (((VRouterInterfaceFlowFilterEntryResource) resource) .getFfType() != null && !((VRouterInterfaceFlowFilterEntryResource) resource) - .getFfType().trim().isEmpty()) { + .getFfType().trim().isEmpty()) { isValid = ((VRouterInterfaceFlowFilterEntryResource) resource) .getFfType().trim() .equalsIgnoreCase(VtnServiceJsonConsts.IN) || ((VRouterInterfaceFlowFilterEntryResource) resource) - .getFfType().trim() - .equalsIgnoreCase(VtnServiceJsonConsts.OUT); + .getFfType().trim() + .equalsIgnoreCase(VtnServiceJsonConsts.OUT); } else { isValid = false; } @@ -257,19 +251,20 @@ VtnServiceValidator { if (((VRouterInterfaceFlowFilterEntryResource) resource) .getSeqnum() != null && !((VRouterInterfaceFlowFilterEntryResource) resource) - .getSeqnum().trim().isEmpty()) { + .getSeqnum().trim().isEmpty()) { isValid = validator .isValidRange( ((VRouterInterfaceFlowFilterEntryResource) resource) .getSeqnum().trim(), - VtnServiceJsonConsts.VAL_1, - VtnServiceJsonConsts.VAL_65535); + VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_65535); } else { isValid = false; } } setListOpFlag(false); } + LOG.trace("Complete VBridgeFlowFilterEntryResourceValidator#validateUri()"); return isValid; } @@ -280,8 +275,9 @@ VtnServiceValidator { * VrouterInterfaceFlowFilterEntry API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeFlowFilterEntryResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VBridgeFlowFilterEntryResourceValidator"); @@ -295,7 +291,7 @@ VtnServiceValidator { } else if (isValid && requestBody != null && VtnServiceConsts.PUT.equals(method)) { isValid = validatePut(requestBody); - if(validator.getInvalidParameter()!=null){ + if (validator.getInvalidParameter() != null) { setInvalidParameter(validator.getInvalidParameter()); } } else if (isValid) { @@ -303,7 +299,7 @@ VtnServiceValidator { isValid = false; } } catch (final NumberFormatException e) { - if(method.equals(VtnServiceConsts.PUT)){ + if (method.equals(VtnServiceConsts.PUT)) { setInvalidParameter(validator.getInvalidParameter()); } LOG.error("Inside catch:NumberFormatException"); @@ -338,30 +334,30 @@ VtnServiceValidator { private boolean validateGet(final JsonObject requestBody) { LOG.trace("Start VBridgeFlowFilterEntryResourceValidator#validateGet()"); boolean isValid = false; -// // validation for key: controller_id(mandatory) -// setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); -// if (requestBody.has(VtnServiceJsonConsts.CONTROLLERID) -// && requestBody.getAsJsonPrimitive( -// VtnServiceJsonConsts.CONTROLLERID).getAsString() != null) { -// isValid = validator.isValidMaxLengthAlphaNum(requestBody -// .getAsJsonPrimitive(VtnServiceJsonConsts.CONTROLLERID) -// .getAsString().trim(), VtnServiceJsonConsts.LEN_31); -// } - + // // validation for key: controller_id(mandatory) + // setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); + // if (requestBody.has(VtnServiceJsonConsts.CONTROLLERID) + // && requestBody.getAsJsonPrimitive( + // VtnServiceJsonConsts.CONTROLLERID).getAsString() != null) { + // isValid = validator.isValidMaxLengthAlphaNum(requestBody + // .getAsJsonPrimitive(VtnServiceJsonConsts.CONTROLLERID) + // .getAsString().trim(), VtnServiceJsonConsts.LEN_31); + // } + // validation for key: targetdb(optional) -// if (isValid) { - setInvalidParameter(VtnServiceJsonConsts.TARGETDB); - isValid = validator.isValidRequestDB(requestBody); -// } - + // if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.TARGETDB); + isValid = validator.isValidRequestDB(requestBody); + // } + // validation for key: op(optinal) if (isValid) { setInvalidParameter(VtnServiceJsonConsts.OP); if (requestBody.has(VtnServiceJsonConsts.OP) && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString() != null + .getAsString() != null && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.OP) .getAsString() @@ -391,7 +387,7 @@ VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.FLOWFILTERENTRY); if (requestBody.has(VtnServiceJsonConsts.FLOWFILTERENTRY) && requestBody.get(VtnServiceJsonConsts.FLOWFILTERENTRY) - .isJsonObject()) { + .isJsonObject()) { isValid = true; final JsonObject ffEntry = requestBody .getAsJsonObject(VtnServiceJsonConsts.FLOWFILTERENTRY); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeResourceValidator.java index 45da8667..b65d261e 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBridgeResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class VBridgeResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(VBridgeResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new Vbridge resource validator. @@ -47,7 +47,7 @@ public class VBridgeResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VBridgeResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -88,8 +88,9 @@ public class VBridgeResourceValidator extends VtnServiceValidator { * Validate request json for get, put and post method of VBridge API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBridgeResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VBridgeResourceValidator"); @@ -282,4 +283,4 @@ public class VBridgeResourceValidator extends VtnServiceValidator { LOG.trace("Complete VBridgeResourceValidator#validatePost()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBypassResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBypassResourceValidator.java index d0b1c856..1416d59f 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBypassResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VBypassResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -21,15 +21,15 @@ import org.opendaylight.vtn.javaapi.validation.CommonValidator; import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; /** - * The Class VBypassResourceValidator validates request Json object for - * VBypass API. + * The Class VBypassResourceValidator validates request Json object for VBypass + * API. */ public class VBypassResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(VBypassResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new VBypass resource validator. @@ -47,7 +47,7 @@ public class VBypassResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VBypassResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -62,11 +62,11 @@ public class VBypassResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.VBYPASS_NAME); if (((VBypassResource) resource).getVbypassName() != null - && !((VBypassResource) resource).getVbypassName().trim() - .isEmpty()) { + && !((VBypassResource) resource).getVbypassName() + .trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( - ((VBypassResource) resource).getVbypassName().trim(), - VtnServiceJsonConsts.LEN_31); + ((VBypassResource) resource).getVbypassName() + .trim(), VtnServiceJsonConsts.LEN_31); } else { isValid = false; } @@ -75,7 +75,7 @@ public class VBypassResourceValidator extends VtnServiceValidator { } else if (resource instanceof VBypassesResource && ((VBypassesResource) resource).getVtnName() != null && !((VBypassesResource) resource).getVtnName().trim() - .isEmpty()) { + .isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( ((VBypassesResource) resource).getVtnName().trim(), VtnServiceJsonConsts.LEN_31); @@ -89,8 +89,9 @@ public class VBypassResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put and post method of VBypass API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VBypassResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VBypassResourceValidator"); @@ -152,16 +153,14 @@ public class VBypassResourceValidator extends VtnServiceValidator { boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.VBYPASS); if (requestBody.has(VtnServiceJsonConsts.VBYPASS) - && requestBody.get(VtnServiceJsonConsts.VBYPASS) - .isJsonObject()) { + && requestBody.get(VtnServiceJsonConsts.VBYPASS).isJsonObject()) { final JsonObject vBypass = requestBody .getAsJsonObject(VtnServiceJsonConsts.VBYPASS); // validation for key: VBYPASS_NAME(mandatory) setInvalidParameter(VtnServiceJsonConsts.VBYPASS_NAME); if (vBypass.has(VtnServiceJsonConsts.VBYPASS_NAME) - && vBypass - .getAsJsonPrimitive(VtnServiceJsonConsts.VBYPASS_NAME) - .getAsString() != null) { + && vBypass.getAsJsonPrimitive( + VtnServiceJsonConsts.VBYPASS_NAME).getAsString() != null) { isValid = validator.isValidMaxLengthAlphaNum(vBypass .getAsJsonPrimitive(VtnServiceJsonConsts.VBYPASS_NAME) .getAsString().trim(), VtnServiceJsonConsts.LEN_31); @@ -192,29 +191,30 @@ public class VBypassResourceValidator extends VtnServiceValidator { * @param vBypass * @return */ - private boolean commonValidations(boolean isValid, final JsonObject vBypass) { + private boolean + commonValidations(boolean isValid, final JsonObject vBypass) { LOG.trace("Start VBypassResourceValidator#commonValidations()"); // validation for key: description setInvalidParameter(VtnServiceJsonConsts.DESCRIPTION); if (vBypass.has(VtnServiceJsonConsts.DESCRIPTION) - && vBypass.getAsJsonPrimitive( - VtnServiceJsonConsts.DESCRIPTION).getAsString() != null - && !vBypass - .getAsJsonPrimitive( - VtnServiceJsonConsts.DESCRIPTION) - .getAsString().trim().isEmpty()) { - isValid = validator.isValidMaxLength( - vBypass.getAsJsonPrimitive( - VtnServiceJsonConsts.DESCRIPTION) - .getAsString().trim(), + && vBypass.getAsJsonPrimitive(VtnServiceJsonConsts.DESCRIPTION) + .getAsString() != null + && !vBypass + .getAsJsonPrimitive(VtnServiceJsonConsts.DESCRIPTION) + .getAsString().trim().isEmpty()) { + isValid = validator + .isValidMaxLength( + vBypass.getAsJsonPrimitive( + VtnServiceJsonConsts.DESCRIPTION) + .getAsString().trim(), VtnServiceJsonConsts.LEN_127); } // validation for key: type if (isValid) { setInvalidParameter(VtnServiceJsonConsts.TYPE); if (vBypass.has(VtnServiceJsonConsts.TYPE) - && vBypass.getAsJsonPrimitive( - VtnServiceJsonConsts.TYPE).getAsString() != null) { + && vBypass.getAsJsonPrimitive(VtnServiceJsonConsts.TYPE) + .getAsString() != null) { isValid = validType(vBypass .getAsJsonPrimitive(VtnServiceJsonConsts.TYPE) .getAsString().trim()); @@ -225,17 +225,14 @@ public class VBypassResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); if (vBypass.has(VtnServiceJsonConsts.CONTROLLERID) && vBypass.getAsJsonPrimitive( - VtnServiceJsonConsts.CONTROLLERID) - .getAsString() != null - && !vBypass + VtnServiceJsonConsts.CONTROLLERID).getAsString() != null + && !vBypass .getAsJsonPrimitive( VtnServiceJsonConsts.CONTROLLERID) - .getAsString().trim().isEmpty()) { - isValid = validator.isValidMaxLengthAlphaNum( - vBypass.getAsJsonPrimitive( - VtnServiceJsonConsts.CONTROLLERID) - .getAsString().trim(), - VtnServiceJsonConsts.LEN_31); + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum(vBypass + .getAsJsonPrimitive(VtnServiceJsonConsts.CONTROLLERID) + .getAsString().trim(), VtnServiceJsonConsts.LEN_31); } } LOG.trace("Complete VBypassResourceValidator#commonValidations()"); @@ -257,8 +254,7 @@ public class VBypassResourceValidator extends VtnServiceValidator { boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.VBYPASS); if (requestBody.has(VtnServiceJsonConsts.VBYPASS) - && requestBody.get(VtnServiceJsonConsts.VBYPASS) - .isJsonObject()) { + && requestBody.get(VtnServiceJsonConsts.VBYPASS).isJsonObject()) { isValid = true; final JsonObject vBypass = requestBody .getAsJsonObject(VtnServiceJsonConsts.VBYPASS); @@ -269,10 +265,10 @@ public class VBypassResourceValidator extends VtnServiceValidator { if (vBypass.has(VtnServiceJsonConsts.DOMAINID) && vBypass.getAsJsonPrimitive( VtnServiceJsonConsts.DOMAINID).getAsString() != null - && !vBypass + && !vBypass .getAsJsonPrimitive( VtnServiceJsonConsts.DOMAINID) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = validator.isValidDomainId(vBypass .getAsJsonPrimitive(VtnServiceJsonConsts.DOMAINID) .getAsString().trim(), VtnServiceJsonConsts.LEN_31); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLanMapResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLanMapResourceValidator.java index f9e654c5..466cf092 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLanMapResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLanMapResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ public class VLanMapResourceValidator extends VtnServiceValidator { .getLogger(VLanMapResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new vlan map resource validator. @@ -48,7 +48,7 @@ public class VLanMapResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VLanMapResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -135,8 +135,9 @@ public class VLanMapResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put and post method of VLanMap API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VLanMapResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VLanMapResourceValidator"); @@ -303,15 +304,14 @@ public class VLanMapResourceValidator extends VtnServiceValidator { if (vLanMap.has(VtnServiceJsonConsts.VLANID) && vLanMap.has(VtnServiceJsonConsts.NO_VLAN_ID)) { isValid = false; - } - // validation for key: vlan_id - else if (vLanMap.has(VtnServiceJsonConsts.VLANID)) { + } else if (vLanMap.has(VtnServiceJsonConsts.VLANID)) { setInvalidParameter(VtnServiceJsonConsts.VLANID); if (vLanMap.getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) .getAsString() != null && !vLanMap .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) .getAsString().trim().isEmpty()) { + // validation for key: vlan_id isValid = validator.isValidRange(vLanMap .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) .getAsString().trim(), VtnServiceJsonConsts.VAL_1, @@ -319,9 +319,7 @@ public class VLanMapResourceValidator extends VtnServiceValidator { } else { isValid = false; } - } - // validation for key: no_vlan_id - else if (vLanMap.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + } else if (vLanMap.has(VtnServiceJsonConsts.NO_VLAN_ID)) { setInvalidParameter(VtnServiceJsonConsts.NO_VLAN_ID); if (vLanMap.getAsJsonPrimitive(VtnServiceJsonConsts.NO_VLAN_ID) .getAsString() != null @@ -329,6 +327,7 @@ public class VLanMapResourceValidator extends VtnServiceValidator { .getAsJsonPrimitive( VtnServiceJsonConsts.NO_VLAN_ID) .getAsString().trim().isEmpty()) { + // validation for key: no_vlan_id final String no_vlan_id = vLanMap .getAsJsonPrimitive(VtnServiceJsonConsts.NO_VLAN_ID) .getAsString().trim(); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLinkResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLinkResourceValidator.java index d71a3b6a..0bd82dff 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLinkResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VLinkResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -24,21 +24,28 @@ import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; * The Class VLinkResourceValidator validates request Json object for Vlink API. */ public class VLinkResourceValidator extends VtnServiceValidator { - + /** + * logger for debugging. + */ private static final Logger LOG = Logger .getLogger(VLinkResourceValidator.class.getName()); - + /** + * Abstract resource. + */ private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + /** + * common validations. + */ + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new vlink resource validator. * - * @param resource + * @param mappingResource * the instance of AbstractResource */ - public VLinkResourceValidator(final AbstractResource resource) { - this.resource = resource; + public VLinkResourceValidator(final AbstractResource mappingResource) { + this.resource = mappingResource; } /** @@ -47,7 +54,7 @@ public class VLinkResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VLinkResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -87,9 +94,18 @@ public class VLinkResourceValidator extends VtnServiceValidator { /** * Validate request Json object for get, put and post method of Vlink API. */ + /** + * @param method + * , to get type of method + * @param requestBody + * , for request + * @throws VtnServiceException + * , for vtn exception + */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VLinkResourceValidator#validate()"); LOG.info("Validating request for " + method + " of FlowListResourceValidator"); @@ -437,9 +453,7 @@ public class VLinkResourceValidator extends VtnServiceValidator { if (boundary.has(VtnServiceJsonConsts.VLANID) && boundary.has(VtnServiceJsonConsts.NO_VLAN_ID)) { isValid = false; - } - // validation for key: boundary_id(optional) - else if (boundary.has(VtnServiceJsonConsts.VLANID)) { + } else if (boundary.has(VtnServiceJsonConsts.VLANID)) { setInvalidParameter(VtnServiceJsonConsts.VLANID); if (boundary .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) @@ -448,19 +462,16 @@ public class VLinkResourceValidator extends VtnServiceValidator { .getAsJsonPrimitive( VtnServiceJsonConsts.VLANID) .getAsString().trim().isEmpty()) { - isValid = validator - .isValidRange( - boundary.getAsJsonPrimitive( - VtnServiceJsonConsts.VLANID) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_1, - VtnServiceJsonConsts.VAL_4095); + isValid = validator.isValidRange( + boundary.getAsJsonPrimitive( + VtnServiceJsonConsts.VLANID) + .getAsString().trim(), + VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_4095); } else { isValid = false; } - } - // validation for key: no_vlan_id - else if (boundary.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + } else if (boundary.has(VtnServiceJsonConsts.NO_VLAN_ID)) { setInvalidParameter(VtnServiceJsonConsts.NO_VLAN_ID); if (boundary.getAsJsonPrimitive( VtnServiceJsonConsts.NO_VLAN_ID).getAsString() != null @@ -476,9 +487,7 @@ public class VLinkResourceValidator extends VtnServiceValidator { } else { isValid = false; } - }/* else { - isValid = false; - }*/ + } if (isValid) { setInvalidParameter(VtnServiceJsonConsts.BOUNDARYID); if (boundary.has(VtnServiceJsonConsts.BOUNDARYID) @@ -496,9 +505,7 @@ public class VLinkResourceValidator extends VtnServiceValidator { .getAsString().trim().isEmpty(); } } - }/* else { - isValid = false; - }*/ + } } LOG.trace("Complete VLinkResourceValidator#commonValidation()"); return isValid; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterInterfaceResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterInterfaceResourceValidator.java index 322fbfa0..d813d709 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterInterfaceResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterInterfaceResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ public class VRouterInterfaceResourceValidator extends VtnServiceValidator { .getLogger(VRouterInterfaceResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new vrouter interface resource validator. @@ -48,7 +48,7 @@ public class VRouterInterfaceResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VRouterInterfaceResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -118,8 +118,9 @@ public class VRouterInterfaceResourceValidator extends VtnServiceValidator { * VrouterInterface API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterInterfaceResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VRouterInterfaceResourceValidator"); @@ -215,7 +216,6 @@ public class VRouterInterfaceResourceValidator extends VtnServiceValidator { private boolean validatePut(final JsonObject requestBody) throws VtnServiceException { LOG.trace("Start VRouterInterfaceResourceValidator#validatePost()"); - final CommonValidator validator = new CommonValidator(); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.INTERFACE); if (requestBody.has(VtnServiceJsonConsts.INTERFACE) @@ -273,12 +273,9 @@ public class VRouterInterfaceResourceValidator extends VtnServiceValidator { if (isValid) { setInvalidParameter(VtnServiceJsonConsts.PREFIX); if (vRouterInterface.has(VtnServiceJsonConsts.PREFIX)) { - isValid = validator.isValidRange( - vRouterInterface - .getAsJsonPrimitive( - VtnServiceJsonConsts.PREFIX) - .getAsString().trim(), - VtnServiceJsonConsts.VAL_1, + isValid = validator.isValidRange(vRouterInterface + .getAsJsonPrimitive(VtnServiceJsonConsts.PREFIX) + .getAsString().trim(), VtnServiceJsonConsts.VAL_1, VtnServiceJsonConsts.VAL_30); } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterResourceValidator.java index 7102e1df..47bae930 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VRouterResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class VRouterResourceValidator extends VtnServiceValidator { private static final Logger LOG = Logger .getLogger(VRouterResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new vrouter resource validator. @@ -47,7 +47,7 @@ public class VRouterResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VRouterResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -88,8 +88,9 @@ public class VRouterResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put and post method of VRouter API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VRouterResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VRouterResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepGroupResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepGroupResourceValidator.java index 3be235f8..acdeffff 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepGroupResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepGroupResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -34,7 +34,7 @@ public class VTepGroupResourceValidator extends VtnServiceValidator { .getLogger(VTepGroupResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new v tep group resource validator. @@ -52,7 +52,7 @@ public class VTepGroupResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VTepGroupResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -96,8 +96,9 @@ public class VTepGroupResourceValidator extends VtnServiceValidator { * API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepGroupResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VTepGroupResourceValidator"); @@ -264,4 +265,4 @@ public class VTepGroupResourceValidator extends VtnServiceValidator { LOG.trace("Complete VTepGroupResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepResourceValidator.java index c1bd62a3..40c8c8cb 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTepResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class VTepResourceValidator extends VtnServiceValidator { .getLogger(VTepResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new v tep resource validator. @@ -47,7 +47,7 @@ public class VTepResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VTepResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -88,8 +88,9 @@ public class VTepResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put and post method of VTep API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTepResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VTepResourceValidator"); @@ -276,4 +277,4 @@ public class VTepResourceValidator extends VtnServiceValidator { LOG.trace("Complete VTepResourceValidator#validatePut()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTunnelResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTunnelResourceValidator.java index 8efe8066..93118c13 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTunnelResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VTunnelResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ public class VTunnelResourceValidator extends VtnServiceValidator { .getLogger(VTunnelResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new v tunnel resource validator. @@ -48,7 +48,7 @@ public class VTunnelResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VTunnelResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -89,8 +89,9 @@ public class VTunnelResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put and post method of VTunnel API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VTunnelResource#validate()"); LOG.info("Validating request for " + method + " of VTunnelResourceValidator"); @@ -181,7 +182,8 @@ public class VTunnelResourceValidator extends VtnServiceValidator { } } if (isValid) { - // validation for key: description(optional), vtn_name(optional), vtepgroup_name(optional), label(optional) + // validation for key: description(optional), + // vtn_name(optional), vtepgroup_name(optional), label(optional) isValid = commonValidations(isValid, vTunnel); } // validation for key: DomainId(optional) @@ -207,35 +209,37 @@ public class VTunnelResourceValidator extends VtnServiceValidator { * @param vTunnel * @return */ - private boolean commonValidations(boolean isValid, final JsonObject vTunnel) { + private boolean + commonValidations(boolean isValid, final JsonObject vTunnel) { LOG.trace("Start VTunnelResourceValidator#commonValidations()"); // validation for key: description(optional) setInvalidParameter(VtnServiceJsonConsts.DESCRIPTION); if (vTunnel.has(VtnServiceJsonConsts.DESCRIPTION) - && vTunnel.getAsJsonPrimitive( - VtnServiceJsonConsts.DESCRIPTION).getAsString() != null) { - isValid = validator.isValidMaxLength( - vTunnel.getAsJsonPrimitive( - VtnServiceJsonConsts.DESCRIPTION) - .getAsString().trim(), + && vTunnel.getAsJsonPrimitive(VtnServiceJsonConsts.DESCRIPTION) + .getAsString() != null) { + isValid = validator + .isValidMaxLength( + vTunnel.getAsJsonPrimitive( + VtnServiceJsonConsts.DESCRIPTION) + .getAsString().trim(), VtnServiceJsonConsts.LEN_127) - || vTunnel + || vTunnel .getAsJsonPrimitive( VtnServiceJsonConsts.DESCRIPTION) - .getAsString().trim().isEmpty(); + .getAsString().trim().isEmpty(); } // validation for key: vtn_name(optional) if (isValid) { setInvalidParameter(VtnServiceJsonConsts.VTNNAME); if (vTunnel.has(VtnServiceJsonConsts.VTNNAME) - && vTunnel.getAsJsonPrimitive( - VtnServiceJsonConsts.VTNNAME).getAsString() != null) { + && vTunnel.getAsJsonPrimitive(VtnServiceJsonConsts.VTNNAME) + .getAsString() != null) { isValid = validator.isValidMaxLengthAlphaNum(vTunnel .getAsJsonPrimitive(VtnServiceJsonConsts.VTNNAME) .getAsString().trim(), VtnServiceJsonConsts.LEN_31) || vTunnel - .getAsJsonPrimitive( - VtnServiceJsonConsts.VTNNAME) + .getAsJsonPrimitive( + VtnServiceJsonConsts.VTNNAME) .getAsString().trim().isEmpty(); } } @@ -244,17 +248,14 @@ public class VTunnelResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.VTEPGROUPNAME); if (vTunnel.has(VtnServiceJsonConsts.VTEPGROUPNAME) && vTunnel.getAsJsonPrimitive( - VtnServiceJsonConsts.VTEPGROUPNAME) - .getAsString() != null) { - isValid = validator.isValidMaxLengthAlphaNum( - vTunnel.getAsJsonPrimitive( - VtnServiceJsonConsts.VTEPGROUPNAME) - .getAsString().trim(), - VtnServiceJsonConsts.LEN_31) - || vTunnel + VtnServiceJsonConsts.VTEPGROUPNAME).getAsString() != null) { + isValid = validator.isValidMaxLengthAlphaNum(vTunnel + .getAsJsonPrimitive(VtnServiceJsonConsts.VTEPGROUPNAME) + .getAsString().trim(), VtnServiceJsonConsts.LEN_31) + || vTunnel .getAsJsonPrimitive( VtnServiceJsonConsts.VTEPGROUPNAME) - .getAsString().trim().isEmpty(); + .getAsString().trim().isEmpty(); } } // validation for key: label(optional) @@ -291,7 +292,8 @@ public class VTunnelResourceValidator extends VtnServiceValidator { isValid = true; final JsonObject vTunnel = requestBody .getAsJsonObject(VtnServiceJsonConsts.VTUNNEL); - // validation for key: description(optional), vtn_name(optional), vtepgroup_name(optional), label(optional) + // validation for key: description(optional), vtn_name(optional), + // vtepgroup_name(optional), label(optional) isValid = commonValidations(isValid, vTunnel); // validation for key: controller_id(optional) if (isValid) { @@ -299,15 +301,16 @@ public class VTunnelResourceValidator extends VtnServiceValidator { if (vTunnel.has(VtnServiceJsonConsts.CONTROLLERID) && vTunnel.getAsJsonPrimitive( VtnServiceJsonConsts.CONTROLLERID) - .getAsString() != null && !vTunnel + .getAsString() != null + && !vTunnel .getAsJsonPrimitive( VtnServiceJsonConsts.CONTROLLERID) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = validator.isValidMaxLengthAlphaNum( vTunnel.getAsJsonPrimitive( VtnServiceJsonConsts.CONTROLLERID) .getAsString().trim(), - VtnServiceJsonConsts.LEN_31); + VtnServiceJsonConsts.LEN_31); } } // validation for key: DomainId(optional) @@ -315,10 +318,11 @@ public class VTunnelResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.DOMAINID); if (vTunnel.has(VtnServiceJsonConsts.DOMAINID) && vTunnel.getAsJsonPrimitive( - VtnServiceJsonConsts.DOMAINID).getAsString() != null && !vTunnel + VtnServiceJsonConsts.DOMAINID).getAsString() != null + && !vTunnel .getAsJsonPrimitive( VtnServiceJsonConsts.DOMAINID) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = validator.isValidDomainId(vTunnel .getAsJsonPrimitive(VtnServiceJsonConsts.DOMAINID) .getAsString().trim(), VtnServiceJsonConsts.LEN_31); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnDataFlowResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnDataFlowResourceValidator.java new file mode 100644 index 00000000..cd22ffd4 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnDataFlowResourceValidator.java @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.validation.logical; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.logical.VtnDataFlowResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * The Class VtnDataFlowResourceValidator validates request Json and URI object + * for VTN Data Flow . + */ +public class VtnDataFlowResourceValidator extends VtnServiceValidator { + /** + * logger for debugging purpose. + */ + private static final Logger LOG = Logger + .getLogger(VtnDataFlowResourceValidator.class.getName()); + + /** + * Abstract resouce reference. + */ + private final AbstractResource resource; + /** + * Common validator object for common validation methods. + */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Instantiates a new VTN Data Flow resource validator. + * + * @param resource1 + * the instance of AbstractResource. + */ + public VtnDataFlowResourceValidator(final AbstractResource resource1) { + this.resource = resource1; + } + + /** + * Validate URI parameters for VTN Data Flow API. + * + * @return true, if successful + */ + @Override + public final boolean validateUri() { + LOG.trace("Start VtnDataFlowResourceValidator#validateUri()"); + boolean isValid = false; + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.VTNNAME); + if (resource instanceof VtnDataFlowResource + && ((VtnDataFlowResource) resource).getVtnName() != null + && !((VtnDataFlowResource) resource).getVtnName().trim() + .isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum( + ((VtnDataFlowResource) resource).getVtnName().trim(), + VtnServiceJsonConsts.LEN_31); + } + LOG.trace("Complete VtnDataFlowResourceValidator#validateUri()"); + return isValid; + } + + /** + * Validate request JSON for get methods of VTN Data Flow API. + */ + /** + * @param method + * , for put get post delete. + * @param requestBody + * , for requested params + * @throws VtnServiceException + * ,in case of exception regarding vtn + */ + @Override + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start VtnDataFlowResourceValidator#validate()"); + LOG.info("Validating request for " + method + + " of VtnDataFlowResourceValidator"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.GET.equals(method)) { + isValid = isValidateGet(requestBody); + } else if (isValid) { + setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Inside catch:NumberFormatException"); + isValid = false; + } + // Throws exception if validation fails + if (!isValid) { + LOG.error("Validation failed"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Validation successful"); + LOG.trace("Complete VtnDataFlowResourceValidator#validate()"); + } + + /** + * Validate request JSON for get method of VTN Data Flow API. + * + * @param requestBody + * the request Json object + * @return true, if successful + * @throws VtnServiceException + */ + private boolean isValidateGet(final JsonObject requestBody) { + LOG.trace("Start VtnDataFlowResourceValidator#isValidateGet()"); + boolean isValid = true; + // validation for key:vnode_name(mandatory) + setInvalidParameter(VtnServiceJsonConsts.VNODENAME); + + if (requestBody.has(VtnServiceJsonConsts.VNODENAME) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.VNODENAME).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.VNODENAME) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.VNODENAME) + .getAsString().trim(), VtnServiceJsonConsts.LEN_31); + } else { + isValid = false; + } + // validation for key: srcmacaddr(mandatory) + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.SRCMACADDR); + if (requestBody.has(VtnServiceJsonConsts.SRCMACADDR) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.SRCMACADDR).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.SRCMACADDR) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMacAddress(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.SRCMACADDR) + .getAsString().trim()); + } else { + isValid = false; + } + } + + // validation for key: vlan_id or no_vlan_id(One of them is Mandatory) + if (isValid) { + // Only vlan_id or no_vlan_id is allowed in request body + setInvalidParameter(VtnServiceJsonConsts.VLANID + + VtnServiceJsonConsts.SLASH + + VtnServiceJsonConsts.NO_VLAN_ID); + if (requestBody.has(VtnServiceJsonConsts.VLANID) + && requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + isValid = false; + } else if (requestBody.has(VtnServiceJsonConsts.VLANID)) { + setInvalidParameter(VtnServiceJsonConsts.VLANID); + if (requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) + .getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidRange(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) + .getAsString().trim(), VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_4095); + } else { + isValid = false; + } + } else if (requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + setInvalidParameter(VtnServiceJsonConsts.NO_VLAN_ID); + if (requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.NO_VLAN_ID).getAsString() != null + && !requestBody + .getAsJsonPrimitive( + VtnServiceJsonConsts.NO_VLAN_ID) + .getAsString().trim().isEmpty()) { + isValid = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.NO_VLAN_ID) + .getAsString().trim() + .equalsIgnoreCase(VtnServiceJsonConsts.TRUE); + } else { + isValid = false; + + } + } else { + isValid = false; + } + } + + LOG.trace("Complete VtnDataFlowResourceValidator#isValidateGet"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnMappingResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnMappingResourceValidator.java new file mode 100644 index 00000000..d695ac17 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnMappingResourceValidator.java @@ -0,0 +1,219 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.validation.logical; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.logical.VtnMappingResource; +import org.opendaylight.vtn.javaapi.resources.logical.VtnMappingsResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * The Class VtnMappingResourceValidator validates request Json object for VTN + * Mapping API. + */ +public class VtnMappingResourceValidator extends VtnServiceValidator { + /** + * logger for debugging purpose. + */ + private static final Logger LOG = Logger + .getLogger(VtnMappingResourceValidator.class.getName()); + + /** + * Abstract resouce reference. + */ + private final AbstractResource resource; + /** + * Common validator object for common validation methods. + */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Instantiates a new Vtn mapping resource validator. + * + * @param mappingResource + * , the instance of AbstractResource + */ + public VtnMappingResourceValidator(final AbstractResource mappingResource) { + this.resource = mappingResource; + } + + /** + * Validate uri parameters for Vtn Mapping API. + * + * @return true, if successful + */ + @Override + public final boolean validateUri() { + LOG.trace("Start VtnMappingResourceValidator#validateUri()"); + boolean isValid = false; + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.VTNNAME); + if (resource instanceof VtnMappingsResource + && ((VtnMappingsResource) resource).getVtnName() != null + && !((VtnMappingsResource) resource).getVtnName().trim() + .isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum( + ((VtnMappingsResource) resource).getVtnName().trim(), + VtnServiceJsonConsts.LEN_31); + setListOpFlag(true); + } else if (resource instanceof VtnMappingResource + && ((VtnMappingResource) resource).getVtnName() != null + && !((VtnMappingResource) resource).getVtnName().trim() + .isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum( + ((VtnMappingResource) resource).getVtnName().trim(), + VtnServiceJsonConsts.LEN_31); + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.MAPPINGID); + if (((VtnMappingResource) resource).getMappingId() != null + && !((VtnMappingResource) resource).getMappingId() + .trim().isEmpty()) { + final String[] mappingId = ((VtnMappingResource) resource) + .getMappingId().trim() + .split(VtnServiceJsonConsts.HYPHEN); + isValid = validator.isValidMappingId(mappingId); + } else { + isValid = false; + } + } + setListOpFlag(false); + } + LOG.trace("Completed VtnMappingResourceValidator#validateUri()"); + return isValid; + } + + /** + * Validate request json for get, put and post method of VBridge API. + * + * @param method + * , for method type get,put post delete + * @param requestBody + * , for request + * @throws VtnServiceException + * , for vtn exceptions + */ + @Override + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start VtnMappingResourceValidator#validate()"); + LOG.info("Validating request for " + method + + " of VtnMappingResourceValidator"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.GET.equals(method)) { + isValid = isValidGetForMappingIdIndex(requestBody, + isListOpFlag()); + setInvalidParameter(validator.getInvalidParameter()); + updateOpParameterForList(requestBody); + } else { + setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Inside catch:NumberFormatException"); + if (method.equals(VtnServiceConsts.GET)) { + setInvalidParameter(validator.getInvalidParameter()); + } + isValid = false; + } catch (final ClassCastException e) { + if (method.equals(VtnServiceConsts.GET)) { + setInvalidParameter(validator.getInvalidParameter()); + } + LOG.error("Inside catch:ClassCastException"); + isValid = false; + } + // Throws exception if validation fails + if (!isValid) { + LOG.error("Validation failed"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Validation successful"); + LOG.trace("Complete VtnMappingResourceValidator#validate()"); + } + + /** + * @param requestBody + * , for request + * @param opFlag + * , for getting option1 type + * @return true , if parameter are in corret format values + */ + public final boolean isValidGetForMappingIdIndex( + final JsonObject requestBody, final boolean opFlag) { + LOG.trace("Start CommonValidator#isValidGetForMappingIdIndex"); + boolean isValid = true; + + // validation for key: targetdb + setInvalidParameter(VtnServiceJsonConsts.TARGETDB); + isValid = validator.isValidRequestDBState(requestBody); + + /* + * Remove unwanted parameters from request body for Show APIs + */ + if (!opFlag) { + if (requestBody.has(VtnServiceJsonConsts.OP)) { + requestBody.remove(VtnServiceJsonConsts.OP); + } else { + LOG.debug("No need to remove"); + } + if (requestBody.has(VtnServiceJsonConsts.INDEX)) { + requestBody.remove(VtnServiceJsonConsts.INDEX); + } else { + LOG.debug("No need to remove"); + } + if (requestBody.has(VtnServiceJsonConsts.MAX)) { + requestBody.remove(VtnServiceJsonConsts.MAX); + } else { + LOG.debug("No need to remove"); + } + } else { + // validation for key: op + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.OP); + isValid = validator.isValidOperationForDetail(requestBody); + } + // validation for key: index where index is combination of + // controller id and domain id + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.INDEX); + if (requestBody.has(VtnServiceJsonConsts.INDEX) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.INDEX).getAsString() != null) { + final String[] mappingId = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.INDEX) + .getAsString().trim() + .split(VtnServiceJsonConsts.HYPHEN); + isValid = validator.isValidMappingId(mappingId); + } + } + // validation for key: max_repitition + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.MAX); + isValid = validator.isValidMaxRepetition(requestBody); + } + } + LOG.trace("Complete CommonValidator#isValidGetForMappingIdIndex"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnResourceValidator.java index 9900dc56..49ea3ec2 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class VtnResourceValidator extends VtnServiceValidator { .getLogger(VtnResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new vtn resource validator. @@ -47,7 +47,7 @@ public class VtnResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start VtnResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -71,8 +71,9 @@ public class VtnResourceValidator extends VtnServiceValidator { * Validate request Json object for get, put and post method of Vtn API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start VtnResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VtnResourceValidator"); @@ -172,11 +173,12 @@ public class VtnResourceValidator extends VtnServiceValidator { .getAsJsonObject(VtnServiceJsonConsts.VTN) .getAsJsonPrimitive( VtnServiceJsonConsts.DESCRIPTION) - .getAsString() != null && !requestBody + .getAsString() != null + && !requestBody .getAsJsonObject(VtnServiceJsonConsts.VTN) .getAsJsonPrimitive( VtnServiceJsonConsts.DESCRIPTION) - .getAsString().trim().isEmpty()) { + .getAsString().trim().isEmpty()) { isValid = validator.isValidMaxLength(requestBody .getAsJsonObject(VtnServiceJsonConsts.VTN) .getAsJsonPrimitive(VtnServiceJsonConsts.DESCRIPTION) diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnStationsResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnStationsResourceValidator.java index 9b7065a8..fda22fd9 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnStationsResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/VtnStationsResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class VtnStationsResourceValidator extends VtnServiceValidator { .getLogger(VtnStationsResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new vtn stations resource validator. @@ -122,14 +122,14 @@ public class VtnStationsResourceValidator extends VtnServiceValidator { if (requestBody.has(VtnServiceJsonConsts.VLANID) && requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { isValid = false; - } // validation for key: vlan_id - else if (requestBody.has(VtnServiceJsonConsts.VLANID)) { + } else if (requestBody.has(VtnServiceJsonConsts.VLANID)) { setInvalidParameter(VtnServiceJsonConsts.VLANID); if (requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) .getAsString() != null && !requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) .getAsString().trim().isEmpty()) { + // validation for key: vlan_id isValid = validator.isValidRange(requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) .getAsString().trim(), VtnServiceJsonConsts.VAL_1, @@ -137,8 +137,8 @@ public class VtnStationsResourceValidator extends VtnServiceValidator { } else { isValid = false; } - } // validation for key: no_vlan_id - else if (requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + } else if (requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + // validation for key: no_vlan_id setInvalidParameter(VtnServiceJsonConsts.NO_VLAN_ID); if (requestBody.getAsJsonPrimitive( VtnServiceJsonConsts.NO_VLAN_ID).getAsString() != null @@ -268,7 +268,8 @@ public class VtnStationsResourceValidator extends VtnServiceValidator { .getAsJsonPrimitive(VtnServiceJsonConsts.IFNAME) .getAsString().trim().isEmpty(); } - }// validation for key: domain_id + } + // validation for key: domain_id if (isValid) { setInvalidParameter(VtnServiceJsonConsts.DOMAINID); if (requestBody.has(VtnServiceJsonConsts.DOMAINID) @@ -290,4 +291,4 @@ public class VtnStationsResourceValidator extends VtnServiceValidator { LOG.trace("Complete VtnStationsResourceValidator#validateGet()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/package-info.java new file mode 100644 index 00000000..452b785a --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/logical/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Resource classes for logical APIs. + */ +package org.opendaylight.vtn.javaapi.validation.logical; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/package-info.java new file mode 100644 index 00000000..6d373f7e --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/package-info.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Java API Resource validation interfaces + * and classes for TC and Session APIs + */ +package org.opendaylight.vtn.javaapi.validation; + diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/AlarmResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/AlarmResourceValidator.java index 4a9ff982..8e9f4d43 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/AlarmResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/AlarmResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,7 +31,7 @@ public class AlarmResourceValidator extends VtnServiceValidator { .getLogger(AlarmResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new alarm resource validator. @@ -49,7 +49,7 @@ public class AlarmResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start AlarmResourceValidator#validateUri()"); boolean isValid = false; if (resource instanceof AlarmResource) { @@ -64,8 +64,9 @@ public class AlarmResourceValidator extends VtnServiceValidator { * Validate request JSON for Clear Alarms API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start AlarmResourceValidator#validate()"); LOG.info("Validating request for " + method + " of AlarmResourceValidator"); @@ -114,9 +115,11 @@ public class AlarmResourceValidator extends VtnServiceValidator { && !requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.ALARMNO) .getAsString().trim().isEmpty()) { - isValid = validator.isValidAlarmRange(new BigInteger(requestBody - .getAsJsonPrimitive(VtnServiceJsonConsts.ALARMNO) - .getAsString().trim()), VtnServiceJsonConsts.BIG_VAL0, + isValid = validator.isValidBigIntegerRangeString(new BigInteger( + requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.ALARMNO) + .getAsString().trim()), + VtnServiceJsonConsts.BIG_VAL0, VtnServiceJsonConsts.BIG_VAL_9999999999999999999); } else { isValid = false; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/BoundaryResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/BoundaryResourceValidator.java index 76bc02dd..b6c13281 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/BoundaryResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/BoundaryResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,7 +29,7 @@ public class BoundaryResourceValidator extends VtnServiceValidator { .getLogger(BoundaryResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new Boundary resource validator. @@ -47,7 +47,7 @@ public class BoundaryResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start BoundaryResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -72,8 +72,9 @@ public class BoundaryResourceValidator extends VtnServiceValidator { * Validate request json for put, post and get methods of Boundary API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start BoundaryResourceValidator#validate()"); LOG.info("Validating request for " + method + " of VtnResourceValidator"); diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/ControllerDataFlowResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/ControllerDataFlowResourceValidator.java new file mode 100644 index 00000000..29ae90e5 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/ControllerDataFlowResourceValidator.java @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.validation.physical; + +import java.math.BigInteger; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.physical.ControllerDataFlowResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * The Class DataFlowResourceValidator validates . + */ +public class ControllerDataFlowResourceValidator extends VtnServiceValidator { + /** + * . Logger is used for debugging purpose + */ + private static final Logger LOG = Logger + .getLogger(BoundaryResourceValidator.class.getName()); + /** + * . AbsractResouce class refernce + */ + private final AbstractResource resource; + private final CommonValidator validator = new CommonValidator(); + + /** + * Instantiates a new Controller Data Flow resource Validator. the instance + * of AbstractResource. + * + * @param mappingResource + * ,AbstarctResouce refernce assigned to derived class + */ + public ControllerDataFlowResourceValidator( + final AbstractResource mappingResource) { + this.resource = mappingResource; + } + + /** + * Validate uri for ControllerDataFlowResource API. + * + * @return true, if successful + */ + @Override + public final boolean validateUri() { + LOG.trace("Start ControllerDataFlowResourceValidator#validateUri()"); + boolean isValid = false; + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.CONTROLLERID); + if (resource instanceof ControllerDataFlowResource + && ((ControllerDataFlowResource) resource).getControllerId() != null + && !((ControllerDataFlowResource) resource).getControllerId() + .trim().isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum( + ((ControllerDataFlowResource) resource).getControllerId() + .trim(), VtnServiceJsonConsts.LEN_31); + setListOpFlag(true); + } + + LOG.trace("Complete ControllerDataFlowResourceValidator#validateUri()"); + return isValid; + } + + /** + * . Validate request json for get method of Controller Data Flow API. + */ + /** + * @param method + * , contains info about get,post ,delete. + * @param requestBody + * , contains request param. + * @throws VtnServiceException + * , vtnexcpetion is thrown. + */ + @Override + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start ControllerDataFlowResourceValidator#validate()"); + LOG.info("Validating request for " + method + + " of ControllerDataFlowResourceValidator"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.GET.equals(method)) { + isValid = isValidateGet(requestBody, isListOpFlag()); + updateOpParameterForList(requestBody); + } else if (isValid) { + setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Inside catch:NumberFormatException"); + isValid = false; + } + // Throws exception if validation fails + if (!isValid) { + LOG.error("Validation failed"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Validation successful"); + LOG.trace("Complete ControllerDataFlowResourceValidator#validate()"); + } + + /** + * . Validate request json for get method of Controller Data Flow API + * + * @param requestBody + * the request Json object + * @return true, if successful + * @throws VtnServiceException + * @param opFlag + * , opertion type + */ + private boolean isValidateGet(final JsonObject requestBody, + final boolean opFlag) { + LOG.trace("Start ControllerDataFlowResourceValidator#isValidateGet()"); + boolean isValid = true; + setInvalidParameter(VtnServiceJsonConsts.URI + + VtnServiceJsonConsts.CONTROLLERID); + if (resource instanceof ControllerDataFlowResource + && ((ControllerDataFlowResource) resource).getControllerId() != null + && !((ControllerDataFlowResource) resource).getControllerId() + .trim().isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum( + ((ControllerDataFlowResource) resource).getControllerId() + .trim(), VtnServiceJsonConsts.LEN_31); + setListOpFlag(true); + } + setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); + if (requestBody.has(VtnServiceJsonConsts.CONTROLLERID) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.CONTROLLERID).getAsString() != null) { + isValid = validator.isValidMaxLengthAlphaNum(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.CONTROLLERID) + .getAsString().trim(), VtnServiceJsonConsts.LEN_31); + } + + setInvalidParameter(VtnServiceJsonConsts.FLOW_ID); + if (requestBody.has(VtnServiceJsonConsts.FLOW_ID) + && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.FLOW_ID) + .getAsString() != null) { + isValid = validator.isValidBigIntegerRangeString(new BigInteger( + requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.FLOW_ID) + .getAsString().trim()), + VtnServiceJsonConsts.BIG_VAL0, + VtnServiceJsonConsts.BIG_VAL_18446744073709551615); + } + + LOG.trace("Complete ControllerDataFlowResourceValidator#isValidateGet"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/ControllerResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/ControllerResourceValidator.java index 127cfd03..c2b1d767 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/ControllerResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/ControllerResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -26,7 +26,7 @@ public class ControllerResourceValidator extends VtnServiceValidator { .getLogger(ControllerResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new controller resource validator. @@ -44,7 +44,7 @@ public class ControllerResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start ControllerResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); @@ -68,8 +68,9 @@ public class ControllerResourceValidator extends VtnServiceValidator { * Validate request json for put, post and get method of controller API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start ControlleResourceValidator#validate()"); LOG.info("Validating request for " + method + " of ControllerResourceValidator"); @@ -86,7 +87,7 @@ public class ControllerResourceValidator extends VtnServiceValidator { } else if (isValid && requestBody != null && VtnServiceConsts.PUT.equals(method)) { isValid = validatePut(requestBody); - }else if (isValid) { + } else if (isValid) { setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); isValid = false; } @@ -114,7 +115,7 @@ public class ControllerResourceValidator extends VtnServiceValidator { * * @return true, if is valid get */ - public boolean validateGet(final JsonObject requestBody, + public final boolean validateGet(final JsonObject requestBody, final boolean opFlag) { LOG.trace("Start ControllerResourceValidator#isValidGet"); boolean isValid = true; diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DataFlowResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DataFlowResourceValidator.java new file mode 100644 index 00000000..736d578d --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DataFlowResourceValidator.java @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.javaapi.validation.physical; + +import com.google.gson.JsonObject; +import org.opendaylight.vtn.core.util.Logger; +import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts; +import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; +import org.opendaylight.vtn.javaapi.exception.VtnServiceException; +import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.javaapi.resources.physical.DataFlowResource; +import org.opendaylight.vtn.javaapi.validation.CommonValidator; +import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; + +/** + * The Class DataFlowResourceValidator validates request Json object for + * DataFlowResource API. + */ +public class DataFlowResourceValidator extends VtnServiceValidator { + /** + * Logger to debug. + */ + private static final Logger LOG = Logger + .getLogger(DataFlowResourceValidator.class.getName()); + /** + * Abstract clas resouce refrence. + */ + private final AbstractResource resource; + /** + * Common vaildator class object to invoke common validation methods. + */ + private final CommonValidator validator = new CommonValidator(); + + /** + * Instantiates a new Data Flow resource Validator. the instance of + * AbstractResource + */ + /** + * @param mappingResource + * ,resouce class object + */ + public DataFlowResourceValidator(final AbstractResource mappingResource) { + this.resource = mappingResource; + } + + /** + * Validate uri for DataFlowResource API. + * + * @return true, if successful + */ + @Override + public final boolean validateUri() { + LOG.trace("Start DataFlowResourceValidator#validateUri()"); + boolean isValid = false; + if (resource instanceof DataFlowResource) { + isValid = true; + setListOpFlag(true); + } + LOG.trace("Complete DataFlowResourceValidator#validateUri()"); + return isValid; + } + + /** + * Validate request JSON for get methods of Data Flow API. + */ + /** + * @param method + * , contains info about get,post ,delete. + * @param requestBody + * , contains request param. + * @throws VtnServiceException + * , vtnexcpetion is thrown. + */ + @Override + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { + LOG.trace("Start DataFlowResourceValidator#validate()"); + LOG.info("Validating request for " + method + + " of DataFlowResourceValidator"); + boolean isValid = false; + try { + isValid = validateUri(); + if (isValid && requestBody != null + && VtnServiceConsts.GET.equals(method)) { + isValid = isValidateGet(requestBody, isListOpFlag()); + updateOpParameterForList(requestBody); + } else if (isValid) { + setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); + isValid = false; + } + } catch (final NumberFormatException e) { + LOG.error("Inside catch:NumberFormatException"); + isValid = false; + } + // Throws exception if validation fails + if (!isValid) { + LOG.error("Validation failed"); + throw new VtnServiceException(Thread.currentThread() + .getStackTrace()[1].getMethodName(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(), + UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage()); + } + LOG.info("Validation successful"); + LOG.trace("Complete DataFlowResourceValidator#validate()"); + } + + /** + * Validate request json for get method of Data Flow API. + * + * @param requestBody + * the request Json object + * @return true, if successful. + * @param opFlag + * ,set for opertaion type + */ + private boolean isValidateGet(final JsonObject requestBody, + final boolean opFlag) { + LOG.trace("Start DataFlowResourceValidator#isValidateGet()"); + boolean isValid = false; + // validation for key:controller_id(mandatory) + setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); + if (requestBody.has(VtnServiceJsonConsts.CONTROLLERID) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.CONTROLLERID).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.CONTROLLERID) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMaxLengthAlphaNum(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.CONTROLLERID) + .getAsString().trim(), VtnServiceJsonConsts.LEN_31); + } + // validation for key:switch_id(mandatory) + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.SWITCHID); + if (requestBody.has(VtnServiceJsonConsts.SWITCHID) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.SWITCHID).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.SWITCHID) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMaxLength(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.SWITCHID) + .getAsString().trim(), VtnServiceJsonConsts.LEN_255); + } else { + isValid = false; + } + } + // validation for key:port_name(mandatory) + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.PORTNAME); + if (requestBody.has(VtnServiceJsonConsts.PORTNAME) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.PORTNAME).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.PORTNAME) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMaxLength(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.PORTNAME) + .getAsString().trim(), VtnServiceJsonConsts.LEN_31); + } else { + isValid = false; + } + } + + // validation for key: vlan_id or no_vlan_id(mandatory one of them) + if (isValid) { + // only vlan_id or no_vlan_id is allowed + setInvalidParameter(VtnServiceJsonConsts.VLANID + + VtnServiceJsonConsts.SLASH + + VtnServiceJsonConsts.NO_VLAN_ID); + if (requestBody.has(VtnServiceJsonConsts.VLANID) + && requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + isValid = false; + } else if (requestBody.has(VtnServiceJsonConsts.VLANID)) { + setInvalidParameter(VtnServiceJsonConsts.VLANID); + if (requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) + .getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidRange(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.VLANID) + .getAsString().trim(), VtnServiceJsonConsts.VAL_1, + VtnServiceJsonConsts.VAL_4095); + } else { + isValid = false; + } + } else if (requestBody.has(VtnServiceJsonConsts.NO_VLAN_ID)) { + setInvalidParameter(VtnServiceJsonConsts.NO_VLAN_ID); + if (requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.NO_VLAN_ID).getAsString() != null + && !requestBody + .getAsJsonPrimitive( + VtnServiceJsonConsts.NO_VLAN_ID) + .getAsString().trim().isEmpty()) { + isValid = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.NO_VLAN_ID) + .getAsString().trim() + .equalsIgnoreCase(VtnServiceJsonConsts.TRUE); + } else { + isValid = false; + } + } else { + isValid = false; + } + } + + // validation for key: srcmacaddr(mandatory) + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.SRCMACADDR); + if (requestBody.has(VtnServiceJsonConsts.SRCMACADDR) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.SRCMACADDR).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.SRCMACADDR) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMacAddress(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.SRCMACADDR) + .getAsString().trim()); + } else { + isValid = false; + } + } + LOG.trace("Complete DataFlowResourceValidator#isValidateGet"); + return isValid; + } +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainLogicalPortResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainLogicalPortResourceValidator.java index 71bd38c5..29420ca2 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainLogicalPortResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainLogicalPortResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,7 +15,6 @@ import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.resources.physical.DomainLogicalPortResource; import org.opendaylight.vtn.javaapi.resources.physical.DomainLogicalPortsResource; import org.opendaylight.vtn.javaapi.validation.CommonValidator; import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; @@ -30,7 +29,7 @@ public class DomainLogicalPortResourceValidator extends VtnServiceValidator { .getLogger(DomainLogicalPortResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new DomainLogicalPort resource validator. @@ -48,48 +47,12 @@ public class DomainLogicalPortResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start DomainLogicalPortResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.CONTROLLERID); - if (resource instanceof DomainLogicalPortResource - && ((DomainLogicalPortResource) resource).getControllerId() != null - && !((DomainLogicalPortResource) resource).getControllerId() - .trim().isEmpty()) { - isValid = validator.isValidMaxLengthAlphaNum( - ((DomainLogicalPortResource) resource).getControllerId() - .trim(), VtnServiceJsonConsts.LEN_31); - if (isValid) { - setInvalidParameter(VtnServiceJsonConsts.URI - + VtnServiceJsonConsts.DOMAINID); - if (((DomainLogicalPortResource) resource).getDomainId() != null - && !((DomainLogicalPortResource) resource) - .getDomainId().trim().isEmpty()) { - isValid = validator.isValidDomainId( - ((DomainLogicalPortResource) resource) - .getDomainId().trim(), - VtnServiceJsonConsts.LEN_31); - } else { - isValid = false; - } - } - if (isValid) { - setInvalidParameter(VtnServiceJsonConsts.URI - + VtnServiceJsonConsts.LOGICAL_PORT_ID); - if (((DomainLogicalPortResource) resource).getLogicalPortId() != null - && !((DomainLogicalPortResource) resource) - .getLogicalPortId().trim().isEmpty()) { - isValid = validator.isValidMaxLength( - ((DomainLogicalPortResource) resource) - .getLogicalPortId().trim(), - VtnServiceJsonConsts.LEN_319); - } else { - isValid = false; - } - } - setListOpFlag(false); - } else if (resource instanceof DomainLogicalPortsResource) { + if (resource instanceof DomainLogicalPortsResource) { if (((DomainLogicalPortsResource) resource).getcontrollerId() != null && !((DomainLogicalPortsResource) resource) .getcontrollerId().trim().isEmpty()) { @@ -119,8 +82,9 @@ public class DomainLogicalPortResourceValidator extends VtnServiceValidator { } @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DomainLogicalPortResourceValidator#validate()"); LOG.info("Validating request for " + method + " of DomainLogicalPortResourceValidator"); @@ -234,6 +198,23 @@ public class DomainLogicalPortResourceValidator extends VtnServiceValidator { */ } } + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.LOGICAL_PORT_ID); + if (requestBody.has(VtnServiceJsonConsts.LOGICAL_PORT_ID) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.LOGICAL_PORT_ID).getAsString() != null + && !requestBody + .getAsJsonPrimitive( + VtnServiceJsonConsts.LOGICAL_PORT_ID) + .getAsString().isEmpty()) { + isValid = validator.isValidMaxLength( + requestBody + .getAsJsonPrimitive( + VtnServiceJsonConsts.LOGICAL_PORT_ID) + .getAsString().trim(), + VtnServiceJsonConsts.LEN_319); + } + } LOG.trace("Complete DomainLogicalPortResourceValidator#isValidGet"); return isValid; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainResourceValidator.java index ce8e69f1..041b5901 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/DomainResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ public class DomainResourceValidator extends VtnServiceValidator { .getLogger(DomainResourceValidator.class.getName()); private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new Domain resource validator. @@ -48,7 +48,7 @@ public class DomainResourceValidator extends VtnServiceValidator { * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start DomainResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI @@ -91,8 +91,9 @@ public class DomainResourceValidator extends VtnServiceValidator { * Validate request json for Domain API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start DomainResourceValidator#validate()"); LOG.info("Validating request for " + method + " of DomainResourceValidator"); @@ -181,6 +182,7 @@ public class DomainResourceValidator extends VtnServiceValidator { } /** + * * @param isValid * @param domain * @return @@ -301,4 +303,4 @@ public class DomainResourceValidator extends VtnServiceValidator { LOG.trace("Complete DomainResourceValidator#validateGet()"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/LinkResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/LinkResourceValidator.java index 5df3c697..a8835892 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/LinkResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/LinkResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,7 +15,6 @@ import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.resources.physical.LinkResource; import org.opendaylight.vtn.javaapi.resources.physical.LinksResource; import org.opendaylight.vtn.javaapi.validation.CommonValidator; import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; @@ -25,55 +24,42 @@ import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; * API. */ public class LinkResourceValidator extends VtnServiceValidator { - + /** + * Logger for debugging purpose. + */ private static final Logger LOG = Logger .getLogger(LinkResourceValidator.class.getName()); - + /** + * resource , the instance of AbstractResource. + */ private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + /** + * validator object for common validations. + */ + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new link resource validator. * - * @param switchResource - * the instance of AbstractResource + * @param resource + * , the instance of AbstractResource */ public LinkResourceValidator(final AbstractResource resource) { this.resource = resource; } /** - * Validate uri parameters for Link API + * Validate uri parameters for Link API . * * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start LinkResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.CONTROLLERID); - if (resource instanceof LinkResource - && ((LinkResource) resource).getControllerId() != null - && !((LinkResource) resource).getControllerId().trim() - .isEmpty()) { - isValid = validator.isValidMaxLengthAlphaNum( - ((LinkResource) resource).getControllerId().trim(), - VtnServiceJsonConsts.LEN_31); - if (isValid) { - setInvalidParameter(VtnServiceJsonConsts.URI - + VtnServiceJsonConsts.LINKNAME); - if (((LinkResource) resource).getLinkName() != null - && !((LinkResource) resource).getLinkName().trim() - .isEmpty()) { - isValid = linkNameValidator(((LinkResource) resource) - .getLinkName().trim()); - } else { - isValid = false; - } - } - setListOpFlag(false); - } else if (resource instanceof LinksResource + if (resource instanceof LinksResource && ((LinksResource) resource).getControllerId() != null && !((LinksResource) resource).getControllerId().trim() .isEmpty()) { @@ -87,7 +73,7 @@ public class LinkResourceValidator extends VtnServiceValidator { } /** - * Validate link name + * Validate link name . * * @param link * value to be validated @@ -121,11 +107,20 @@ public class LinkResourceValidator extends VtnServiceValidator { } /** - * Validate request json get method of Link API + * Validate request JSON for get methods of Data Flow API. + */ + /** + * @param method + * , contains info about get,post ,delete. + * @param requestBody + * , contains request param. + * @throws VtnServiceException + * , vtnexcpetion is thrown. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start LinkResourceValidator#validate()"); LOG.info("Validating request for " + method + " of LinkResourceValidator"); @@ -136,7 +131,7 @@ public class LinkResourceValidator extends VtnServiceValidator { && VtnServiceConsts.GET.equals(method)) { isValid = validateGet(requestBody, isListOpFlag()); updateOpParameterForList(requestBody); - }else if (isValid) { + } else if (isValid) { setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION); isValid = false; } @@ -157,14 +152,15 @@ public class LinkResourceValidator extends VtnServiceValidator { } /** - * Validate get request json for Link API + * Validate get request json for Link API . * * @param requestBody - * the request Json object - * + * , the request Json object . + * @param opFlag + * , to resolve operation type . * @return true, if is valid get */ - public boolean validateGet(final JsonObject requestBody, + public final boolean validateGet(final JsonObject requestBody, final boolean opFlag) { LOG.trace("Start LinkResourceValidator#ValidGet"); boolean isValid = true; @@ -212,10 +208,7 @@ public class LinkResourceValidator extends VtnServiceValidator { setInvalidParameter(VtnServiceJsonConsts.INDEX); if (requestBody.has(VtnServiceJsonConsts.INDEX) && requestBody.getAsJsonPrimitive( - VtnServiceJsonConsts.INDEX).getAsString() != null - && !requestBody - .getAsJsonPrimitive(VtnServiceJsonConsts.INDEX) - .getAsString().isEmpty()) { + VtnServiceJsonConsts.INDEX).getAsString() != null) { isValid = linkNameValidator(requestBody .getAsJsonPrimitive(VtnServiceJsonConsts.INDEX) .getAsString().trim()); @@ -263,6 +256,18 @@ public class LinkResourceValidator extends VtnServiceValidator { .getAsString().trim(), VtnServiceJsonConsts.LEN_255); } } + // validation for key: Link Name + if (isValid) { + setInvalidParameter(VtnServiceJsonConsts.LINKNAME); + if (requestBody.has(VtnServiceJsonConsts.LINKNAME) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.LINKNAME).getAsString() != null) { + isValid = linkNameValidator(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.LINKNAME) + .getAsString().trim()); + } + } + LOG.trace("Complete LinkResourceValidator#isValidGet"); return isValid; } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchPortResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchPortResourceValidator.java index 451d5880..ad6b1cf4 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchPortResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchPortResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,7 +15,6 @@ import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts; import org.opendaylight.vtn.javaapi.exception.VtnServiceException; import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode; import org.opendaylight.vtn.javaapi.resources.AbstractResource; -import org.opendaylight.vtn.javaapi.resources.physical.SwitchPortResource; import org.opendaylight.vtn.javaapi.resources.physical.SwitchPortsResource; import org.opendaylight.vtn.javaapi.validation.CommonValidator; import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; @@ -25,69 +24,42 @@ import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; * API. */ public class SwitchPortResourceValidator extends VtnServiceValidator { - + /** + * logger object for debugging. + */ private static final Logger LOG = Logger .getLogger(SwitchPortResourceValidator.class.getName()); - + /** + * Abstract resource. + */ private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + /** + * Common validator class for common validations. + */ + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new switch port resource validator. * - * @param resource + * @param resource1 * the instance of AbstractResource */ - public SwitchPortResourceValidator(final AbstractResource resource) { - this.resource = resource; + public SwitchPortResourceValidator(final AbstractResource resource1) { + this.resource = resource1; } /** - * Validate uri parameters for Port API + * Validate uri parameters for Port API. * * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start SwitchPortResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.URI + VtnServiceJsonConsts.CONTROLLERID); - if (resource instanceof SwitchPortResource - && ((SwitchPortResource) resource).getControllerId() != null - && !((SwitchPortResource) resource).getControllerId().trim() - .isEmpty()) { - isValid = validator.isValidMaxLengthAlphaNum( - ((SwitchPortResource) resource).getControllerId().trim(), - VtnServiceJsonConsts.LEN_31); - if (isValid) { - setInvalidParameter(VtnServiceJsonConsts.URI - + VtnServiceJsonConsts.SWITCHID); - if (((SwitchPortResource) resource).getSwitchId() != null - && !((SwitchPortResource) resource).getSwitchId() - .trim().isEmpty()) { - isValid = validator.isValidMaxLength( - ((SwitchPortResource) resource).getSwitchId() - .trim(), VtnServiceJsonConsts.LEN_255); - } else { - isValid = false; - } - } - if (isValid) { - setInvalidParameter(VtnServiceJsonConsts.URI - + VtnServiceJsonConsts.PORTNAME); - if (((SwitchPortResource) resource).getPortName() != null - && !((SwitchPortResource) resource).getPortName() - .trim().isEmpty()) { - isValid = validator.isValidMaxLength( - ((SwitchPortResource) resource).getPortName() - .trim(), VtnServiceJsonConsts.LEN_31); - } else { - isValid = false; - } - } - setListOpFlag(false); - } else if (resource instanceof SwitchPortsResource + if (resource instanceof SwitchPortsResource && ((SwitchPortsResource) resource).getControllerId() != null && !((SwitchPortsResource) resource).getControllerId().trim() .isEmpty()) { @@ -115,8 +87,9 @@ public class SwitchPortResourceValidator extends VtnServiceValidator { * Validate get request json for Port API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start SwitchPortResourceValidator#validate()"); LOG.info("Validating request for " + method + " of SwitchPortResourceValidator"); @@ -148,13 +121,15 @@ public class SwitchPortResourceValidator extends VtnServiceValidator { } /** - * Validate get request json for Port API + * Validate get request json for Port API. * + * @param opFlag + * ,opflag set * @param requestBody * the request Json object * @return true, if is valid get */ - public boolean validateGet(final JsonObject requestBody, + public final boolean validateGet(final JsonObject requestBody, final boolean opFlag) { LOG.trace("Start SwitchPortResourceValidator#ValidGet"); boolean isValid = true; @@ -195,7 +170,7 @@ public class SwitchPortResourceValidator extends VtnServiceValidator { // validation for key: op if (isValid) { setInvalidParameter(VtnServiceJsonConsts.OP); - isValid = validator.isValidOperation(requestBody); + isValid = validator.isValidOperationInfo(requestBody); } // validation for key: index if (isValid) { @@ -225,7 +200,37 @@ public class SwitchPortResourceValidator extends VtnServiceValidator { */ } } - LOG.trace("Complete SwitchResourceValidator#isValidGet"); + if (isValid) { + // validation for key: Port Name(Optional) + setInvalidParameter(VtnServiceJsonConsts.PORTNAME); + if (requestBody.has(VtnServiceJsonConsts.PORTNAME) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.PORTNAME).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.PORTNAME) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidMaxLength(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.PORTNAME) + .getAsString().trim(), VtnServiceJsonConsts.LEN_31); + } + } + + if (isValid) { + // validation for key: Port Id(Optional) + setInvalidParameter(VtnServiceJsonConsts.PORT_ID); + if (requestBody.has(VtnServiceJsonConsts.PORT_ID) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.PORT_ID).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.PORT_ID) + .getAsString().trim().isEmpty()) { + isValid = validator.isValidRange(requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.PORT_ID) + .getAsString().trim(), VtnServiceJsonConsts.LONG_VAL_0, + VtnServiceJsonConsts.LONG_VAL_4294967295); + } + } + LOG.trace("Complete SwitchPortResourceValidator#isValidGet"); return isValid; } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchResourceValidator.java index 6573948c..27ea455c 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/SwitchResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,30 +25,37 @@ import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator; * API. */ public class SwitchResourceValidator extends VtnServiceValidator { - + /** + * Logger for debugging purpose. + */ private static final Logger LOG = Logger .getLogger(SwitchResourceValidator.class.getName()); - + /** + * resource , the instance of AbstractResource. + */ private final AbstractResource resource; - final CommonValidator validator = new CommonValidator(); + /** + * validator object for common validations. + */ + private final CommonValidator validator = new CommonValidator(); /** * Instantiates a new switch resource validator. * - * @param switchResource - * the instance of AbstractResource + * @param resource + * , the instance of AbstractResource. */ public SwitchResourceValidator(final AbstractResource resource) { this.resource = resource; } /** - * Validate uri parameters for Switch API + * Validate uri parameters for Switch API. * * @return true, if successful */ @Override - public boolean validateUri() { + public final boolean validateUri() { LOG.trace("Start SwitchResourceValidator#validateUri()"); boolean isValid = false; setInvalidParameter(VtnServiceJsonConsts.CONTROLLERID); @@ -89,8 +96,9 @@ public class SwitchResourceValidator extends VtnServiceValidator { * Validate get request json for Switch API */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.trace("Start SwitchResourceValidator#validate()"); LOG.info("Validating request for " + method + " of SwitchResourceValidator"); @@ -122,18 +130,19 @@ public class SwitchResourceValidator extends VtnServiceValidator { } /** - * Validate get request json for Switch API + * Validate get request json for Switch API. * * @param requestBody - * the request Json object - * @return true, if is valid get + * , the request Json object . + * @return true, if is valid get . + * @param opFlag + * ,to reolve type of operations . */ - public boolean validateGet(final JsonObject requestBody, + public final boolean validateGet(final JsonObject requestBody, final boolean opFlag) { LOG.trace("Start SwitchResourceValidator#ValidateGet"); boolean isValid = true; // validation for key: targetdb - // updated check for targetdb setInvalidParameter(VtnServiceJsonConsts.TARGETDB); if (requestBody.has(VtnServiceJsonConsts.TARGETDB) && requestBody @@ -151,11 +160,24 @@ public class SwitchResourceValidator extends VtnServiceValidator { VtnServiceJsonConsts.STATE); } if (!opFlag) { - if (requestBody.has(VtnServiceJsonConsts.OP)) { - requestBody.remove(VtnServiceJsonConsts.OP); + // validation for key: op + setInvalidParameter(VtnServiceJsonConsts.OP); + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString() != null + && !requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim().isEmpty()) { + final String operation = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim(); + isValid = operation + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL); } else { - LOG.debug("No need to remove"); + requestBody.remove(VtnServiceJsonConsts.OP); + requestBody.addProperty(VtnServiceJsonConsts.OP, + VtnServiceJsonConsts.NORMAL); } + if (requestBody.has(VtnServiceJsonConsts.INDEX)) { requestBody.remove(VtnServiceJsonConsts.INDEX); } else { @@ -170,7 +192,24 @@ public class SwitchResourceValidator extends VtnServiceValidator { if (isValid) { // validation for key: op setInvalidParameter(VtnServiceJsonConsts.OP); - isValid = validator.isValidOperation(requestBody); + if (requestBody.has(VtnServiceJsonConsts.OP) + && requestBody.getAsJsonPrimitive( + VtnServiceJsonConsts.OP).getAsString() != null + && !requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim().isEmpty()) { + final String operation = requestBody + .getAsJsonPrimitive(VtnServiceJsonConsts.OP) + .getAsString().trim(); + isValid = operation + .equalsIgnoreCase(VtnServiceJsonConsts.DETAIL) + || operation + .equalsIgnoreCase(VtnServiceJsonConsts.COUNT); + } else { + requestBody.remove(VtnServiceJsonConsts.OP); + requestBody.addProperty(VtnServiceJsonConsts.OP, + VtnServiceJsonConsts.NORMAL); + } } if (isValid) { // validation for key: index @@ -207,4 +246,4 @@ public class SwitchResourceValidator extends VtnServiceValidator { LOG.trace("Complete SwitchResourceValidator#ValidateGet"); return isValid; } -} \ No newline at end of file +} diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/VersionResourceValidator.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/VersionResourceValidator.java index 36a1ff7d..de4d6913 100644 --- a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/VersionResourceValidator.java +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/VersionResourceValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,8 +31,9 @@ public class VersionResourceValidator extends VtnServiceValidator { * Validate request Json for UNC Version API. */ @Override - public void validate(final String method, final JsonObject requestBody) - throws VtnServiceException { + public final void + validate(final String method, final JsonObject requestBody) + throws VtnServiceException { LOG.info("No validation required for Show Version"); } } diff --git a/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/package-info.java b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/package-info.java new file mode 100644 index 00000000..97c29e59 --- /dev/null +++ b/coordinator/java/vtn-javaapi/src/org/opendaylight/vtn/javaapi/validation/physical/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * package contains Java API Resource classes for physical APIs. + */ +package org.opendaylight.vtn.javaapi.validation.physical; + diff --git a/coordinator/java/vtn-webapi/Makefile b/coordinator/java/vtn-webapi/Makefile index 7a783394..09efce97 100644 --- a/coordinator/java/vtn-webapi/Makefile +++ b/coordinator/java/vtn-webapi/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -22,8 +22,9 @@ JAVA_IMPL_TITLE = $(JAVA_SPEC_TITLE) # Use PFC-IPC and PFC-Core utility library. JAVA_LIBS = pfc_ipc.jar pfc_util.jar vtn-javaapi.jar -# Use both Google gson and org.json. -JAVA_EXTLIBS = $(GOOGLE_GSON) $(ORG_JSON) +# Define external libraries. +JAVA_EXTLIBS = $(GOOGLE_GSON) $(ORG_JSON) $(COMMONS_NET) +JAVA_EXTLIBS += $(POSTGRESQL_JDBC) # Replace keywords in properties file. JAVA_TEXT_FILTERS = -f UNC_JAVA_LIBDIR '$(INST_JAVADIR)/jar' diff --git a/coordinator/java/vtn-webapi/src/mapmode.properties b/coordinator/java/vtn-webapi/src/mapmode.properties new file mode 100644 index 00000000..dfa1d43b --- /dev/null +++ b/coordinator/java/vtn-webapi/src/mapmode.properties @@ -0,0 +1,11 @@ +# +# Copyright (c) 2013-2014 NEC Corporation +# All rights reserved. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License v1.0 which accompanies this +# distribution, and is available at http://www.eclipse.org/legal/epl-v10.html +# + +#define map mode property for Create Port operation +vlanmap_mode=1 diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ApplicationConstants.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/constants/ApplicationConstants.java similarity index 57% rename from coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ApplicationConstants.java rename to coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/constants/ApplicationConstants.java index f20ef180..d28de156 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ApplicationConstants.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/constants/ApplicationConstants.java @@ -1,184 +1,172 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.vtn.webapi.enums; + +package org.opendaylight.vtn.webapi.constants; /** - * The Class ApplicationConstants.This class contains all the constants used in the web api application + * The Class ApplicationConstants.This class contains all the constants used in + * the web api application */ public final class ApplicationConstants { - + /** * Instantiates a new application constants. */ - private ApplicationConstants() { + private ApplicationConstants() { } - + + /** The Constant RESPONSE_SUCCESS. */ + public static final int SUCCESS = 200; + /** The Constant ZERO. */ public static final int ZERO = 0; - + /** The Constant FOUR for XML length. */ public static final int FOUR = 4; - + /** The Constant FIVE for JSON length. */ public static final int FIVE = 5; - + /** The Constant TIMEOUT. */ public static final String TIMEOUT = "timeout"; - + /** The Constant READLOCK. */ public static final String READLOCK = "readlock"; - + /** The Constant TYPE_XML. */ public static final String TYPE_XML = ".xml"; - + /** The Constant TYPE_JSON. */ public static final String TYPE_JSON = ".json"; - + /** The Constant ACCESS_PROPERTY_PATH. */ public static final String ACCESS_PROPERTY_PATH = "/access.properties"; - + + /** The Constant PWD_PROPERTY_PATH. */ + public static final String PWD_PROPERTY_PATH = "/pwd.properties"; + /** The Constant WEBAPI_CONF_PROPERTY_PATH. */ public static final String WEBAPI_CONF_PROPERTY_PATH = "/webapiconf.properties"; - - /** The Constant EMPTY_STRING. */ - public static final String EMPTY_STRING = ""; - - /** The Constant DEFAULT_ERROR_DESCRIPTION. */ - public final static String DEFAULT_ERROR_DESCRIPTION = "internal server error"; - + + /** The Constant BLANK_STR. */ + public static final String BLANK_STR = ""; + /** The Constant OPERATION. */ public static final String OPERATION = "operation"; - + /** The Constant OPERATION_COMMIT. */ public static final String OPERATION_COMMIT = "commit"; - + /** The Constant OPERATION_SAVE. */ public static final String OPERATION_SAVE = "save"; - + /** The Constant CONFIGURATION_STRING. */ public static final String CONFIGURATION_STRING = "configuration"; - + /** The Constant COLON. */ public static final String COLON = ":"; - + /** The Constant ONE. */ public static final int ONE = 1; /* HTTP Error codes and error descriptions */ - //error codes + // error codes /** The Constant VTN_ERRORCODE_PREFIX. */ public static final String VTN_ERRORCODE_PREFIX = "vtns_err_"; - - /** The Constant STATUS_OK. */ - public static final String STATUS_OK = "200"; - - /** The Constant BAD_REQUEST_ERROR. */ - public static final String BAD_REQUEST_ERROR = "400"; - - /** The Constant USER_UNAUTHORISED_ERROR. */ - public static final String USER_UNAUTHORISED_ERROR = "401"; - - /** The Constant FORBIDDEN_ERROR. */ - public static final String FORBIDDEN_ERROR = "403"; - - /** The Constant RESOURCE_NOT_FOUND_ERROR. */ - public static final String RESOURCE_NOT_FOUND_ERROR = "404"; - - /** The Constant METHOD_NOT_ALLOWED_ERROR. */ - public static final String METHOD_NOT_ALLOWED_ERROR = "405"; - - /** The Constant INTERNAL_SERVER_ERROR. */ - public static final String INTERNAL_SERVER_ERROR = "500"; - + /** The Constant ACCESS_ALL. */ public static final String ACCESS_ALL = "ALL"; - + /** The Constant COMMA_STR. */ public static final String COMMA_STR = ","; - + /** The Constant ROLE_ADMIN. */ public static final String ROLE_ADMIN = "admin"; - + /** The Constant ROLE_OPERATOR. */ public static final String ROLE_OPERATOR = "oper"; - + /** The Constant HTTP_GET. */ - public static final String HTTP_GET = "get"; - + public static final String GET_METHOD_NAME = "get"; + /** The Constant CONFIG_MODE. */ public static final String CONFIG_MODE = "configmode"; - + /** The Constant SESSION_OBJECT. */ - public static final String SESSION_OBJECT = "session"; - + public static final String SESSION = "session"; + /** The Constant SESSION_ID_STR. */ public static final String SESSION_ID_STR = "session_id"; - + /** The Constant CONFIG_ID_STR. */ public static final String CONFIG_ID_STR = "config_id"; - + /** The Constant ENCODE_UTF8_FORMAT. */ public static final String ENCODE_UTF8_FORMAT = "UTF-8"; - + /** The Constant SESSION_TYPE. */ public static final String SESSION_TYPE = "webapi"; - + /** The Constant TYPE. */ public static final String TYPE = "type"; - + /** The Constant STATUS_SUCCESS. */ public static final String STATUS_SUCCESS = "success"; - + /** The Constant ERR_CODE. */ - public static final String ERR_CODE = "code"; - + public static final String ERR_CODE = "err_code"; + /** The Constant ERR_DESCRIPTION. */ - public static final String ERR_DESCRIPTION = "msg"; - + public static final String ERR_DESCRIPTION = "err_msg"; + /** The Constant TO_REMOVE_XML_ATTR_START. */ public static final String TO_REMOVE_XML_ATTR_START = ""; - + /** The Constant TO_REMOVE_XML_ATTR_END. */ public static final String TO_REMOVE_XML_ATTR_END = ""; - + /** The Constant JSON_GARBAGE. */ public static final String JSON_GARBAGE = "@"; - + /** The Constant CONTEXTPATH. */ public static final String CONTEXTPATH = "/vtn-webapi"; - + /** The Constant OP. */ public static final String OP = "op"; - + /** The Constant COUNT. */ public static final String COUNT = "/count"; - + /** The Constant DETAIL. */ public static final String DETAIL = "/detail"; - + /** The Constant SLASH. */ public static final char SLASH = '/'; /** The Constant ERROR. */ public static final String ERROR = "error"; - + public static final String GETLISTAPI = "getListAPI"; - public static final CharSequence CONTROLLERSTR = "/controllers"; + public static final String ROUTERS = "/routers"; + public static final String TENANTS = "/tenants"; + + public static final CharSequence CONTROLLERSTR = "/controllers"; + public static final CharSequence DOMAINSTR = "/domains"; - + public static final CharSequence LOGICALPORTSSTR = "/logicalports"; public static final String SESSIONSTR = "/sessions/"; - + public static final String ALARMSTR = "/unc/alarms"; - + public static final String UNC_WEB_ADMIN = "UNC_WEB_ADMIN"; public static final String UNC_WEB_OPER = "UNC_WEB_OPER"; @@ -186,23 +174,25 @@ public final class ApplicationConstants { public static final String CANDIDATE = "candidate"; public static final String OPERATION_ABORT = "abort"; - + public static final String WILD_CARD_STAR = "*"; - + public static final String CHAR_ENCODING = "UTF-8"; - + public static final String XSLT_FILE = "org/opendaylight/vtn/webapi/utils/tranformXslt.xslt"; - + + public static final String NEW_LINE = "\n"; + public static final String LINE_FEED = "[\\n\\r]"; - + public static final String XML_STANDALONE = "yes"; - + public static final char LESS_THAN = '<'; - public static final char GREATER_THAN = '>'; + public static final char GREATER_THAN = '>'; public static final String NULL_STRING = "null"; - + public static final String DUMMY_JSON = "{\"dummy\" : {}}"; public static final String DUMMY_XML = " dummy=\"\""; @@ -210,16 +200,82 @@ public final class ApplicationConstants { public static final String EMPTY_JSON = "{}"; public static final String EMPTY_JSON_ARRAY = "[]"; - + public static final String vtepgroup = "vtepgroup"; public static final String member_vteps = "member_vteps"; - + public static final String member_vtep = "member_vtep"; public static final String ipaddrs = "ipaddrs"; - + public static final String ipv6addr = "ipv6addrs"; - + public static final String DOT_ZERO = "0"; -} + + public static final String POST_METHOD_NAME = "POST"; + + public static final String PUT_METHOD_NAME = "PUT"; + + public static final String DELETE_METHOD_NAME = "delete"; + + public static final String HTTP_HEADER_ACCEPT = "Accept"; + + public static final String DOT_REGEX = "."; + + public static final String QUESTION_MARK_CHAR = "?"; + + public static final String DEFAULT_ACCEPT = "*/*"; + + public static final String HYPHEN = "-"; + + public static final String INFO = "/info"; + + public static final String RETRY_AFTER = "Retry-After"; + + public static final String MD5 = "MD5"; + + public static final String DEFAULT_PASSWD = "adminpass"; + + public static final String TARGETDB = "targetdb"; + + public static final String inport = "inport"; + public static final String macdstaddr = "macdstaddr"; + public static final String macdstaddr_mask = "macdstaddr_mask"; + public static final String macsrcaddr = "macsrcaddr"; + public static final String macsrcaddr_mask = "macsrcaddr_mask"; + public static final String macethertype = "macethertype"; + public static final String vlan_id = "vlan_id"; + public static final String vlan_priority = "vlan_priority"; + public static final String iptos = "iptos"; + public static final String ipproto = "ipproto"; + public static final String ipdstaddr = "ipdstaddr"; + public static final String ipdstaddr_mask = "ipdstaddr_mask"; + public static final String ipsrcaddr = "ipsrcaddr"; + public static final String ipsrcaddr_mask = "ipsrcaddr_mask"; + public static final String l4dstport_icmptype = "l4dstport_icmptype"; + public static final String l4dstport_icmptype_mask = "l4dstport_icmptype_mask"; + public static final String l4srcport_icmptype = "l4srcport_icmptype"; + public static final String l4srcport_icmptype_mask = "l4srcport_icmptype_mask"; + public static final String ipv6dstaddr = "ipv6dstaddr"; + public static final String ipv6dstaddr_mask = "ipv6dstaddr_mask"; + public static final String ipv6srcaddr = "ipv6srcaddr"; + public static final String ipv6srcaddr_mask = "ipv6srcaddr_mask"; + public static final String outputport = "outputport"; + public static final String enqueueport = "enqueueport"; + public static final String queue_id = "queue_id"; + public static final String setmacdstaddr = "setmacdstaddr"; + public static final String setmacsrcaddr = "setmacsrcaddr"; + public static final String setvlan_id = "setvlan_id"; + public static final String setvlan_priority = "setvlan_priority"; + public static final String setipdstaddr = "setipdstaddr"; + public static final String setipsrcaddr = "setipsrcaddr"; + public static final String setiptos = "setiptos"; + public static final String setl4dstport_icmptype = "setl4dstport_icmptype"; + public static final String setl4srcport_icmptype = "setl4srcport_icmptype"; + public static final String setipv6dstaddr = "setipv6dstaddr"; + public static final String setipv6srcaddr = "setipv6srcaddr"; + + public static final String OS_RESOURCE_PKG = "org.opendaylight.vtn.javaapi.resources.openstack."; + public static final String SEMI_COLON = ";"; +} diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/constants/package-info.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/constants/package-info.java new file mode 100644 index 00000000..a39f0307 --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/constants/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains contains All constants classes . + */ +package org.opendaylight.vtn.webapi.constants; + diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/endpoint/VtnServiceWebAPIServlet.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/endpoint/VtnServiceWebAPIServlet.java index 56decf01..0f0eea30 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/endpoint/VtnServiceWebAPIServlet.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/endpoint/VtnServiceWebAPIServlet.java @@ -1,11 +1,12 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.endpoint; import java.io.IOException; @@ -21,313 +22,494 @@ import org.json.JSONObject; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.javaapi.init.VtnServiceInitManager; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; +import org.opendaylight.vtn.webapi.enums.ContentTypeEnum; +import org.opendaylight.vtn.webapi.enums.HttpErrorCodeEnum; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; import org.opendaylight.vtn.webapi.services.VtnServiceWebAPIHandler; +import org.opendaylight.vtn.webapi.utils.ConfigurationManager; import org.opendaylight.vtn.webapi.utils.DataConverter; import org.opendaylight.vtn.webapi.utils.InitManager; import org.opendaylight.vtn.webapi.utils.VtnServiceCommonUtil; import org.opendaylight.vtn.webapi.utils.VtnServiceWebUtil; /** - * The Class VtnServiceWebAPIServle is the end point for all request coming to Web API will be handled here first + * The Class VtnServiceWebAPIServle is the end point for all request coming to + * Web API will be handled here first */ public class VtnServiceWebAPIServlet extends HttpServlet { - /** The Constant serialVersionUID. */ private static final long serialVersionUID = 9136213504159408769L; - - /** The Constant LOGGER. */ - private static final Logger LOG = Logger.getLogger(VtnServiceWebAPIServlet.class.getName()); - - /** The vtn service web api controller. */ - private VtnServiceWebAPIHandler vtnServiceWebAPIHandler; + /** The Constant LOGGER. */ + private static final Logger LOG = Logger + .getLogger(VtnServiceWebAPIServlet.class.getName()); /** * Initialize the HttpServlet and will initialize LOGGING and Configuration. - * - * @param config the config + * + * @param config + * the config * @see Servlet#init(ServletConfig) */ - @Override - public void init(final ServletConfig config){ - try{ + @Override + public void init(final ServletConfig config) { + LOG.trace("Start VtnServiceWebAPIServlet#init()"); + try { super.init(); - LOG.trace("Servlet initialization starts..."); InitManager.initialize(); - LOG.trace("Servlet initialized successfully..."); - }catch (VtnServiceWebAPIException vtnException) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(vtnException.getErrorCode())); - }catch (ServletException se) { - LOG.error("Servlet Initialization failed error "+se.getMessage()); - }catch (Exception e) { - LOG.error("Servlet Initialization failed error " +e.getMessage()); + LOG.info("Successful initialization of VTN Service"); + } catch (final Exception e) { + LOG.error("Servlet Initialization failed error " + e.getMessage()); } + LOG.trace("Complete VtnServiceWebAPIServlet#init()"); } - - /** - * Service Method will be called each time when a request will come to web API and it will validate the same for authentication and authorization + + /** + * Service Method will be called each time when a request will come to web + * API and it will validate the same for authentication and authorization * After this will route the call to the specified method. - * - * @param request the request - * @param response the response - * @throws ServletException the servlet exception - * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) + * + * @param request + * the request + * @param response + * the response + * @throws ServletException + * the servlet exception + * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse + * response) */ @Override - protected void service(final HttpServletRequest request, final HttpServletResponse response) { - LOG.trace("Authentication process is initializing."); + protected void service(final HttpServletRequest request, + final HttpServletResponse response) { + LOG.trace("Start VtnServiceWebAPIServlet#service()"); JSONObject serviceErrorJSON = null; - try{ + VtnServiceWebAPIHandler vtnServiceWebAPIHandler = null; + try { vtnServiceWebAPIHandler = new VtnServiceWebAPIHandler(); vtnServiceWebAPIHandler.validate(request); super.service(request, response); - LOG.trace("Authentication process initialized."); - } catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (ServletException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); - }catch (Exception e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - finally{ - if(null != serviceErrorJSON){ + } catch (final VtnServiceWebAPIException e) { + VtnServiceCommonUtil.logErrorDetails(e.getErrorCode()); + LOG.error("VTN Service erorr occurred : " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e + .getErrorCode()); + } catch (final ClassCastException e) { + LOG.error("Internal server error " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_BAD_REQUEST + .getCode()); + } catch (final Exception e) { + LOG.error("Internal server error " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } finally { + if (null != serviceErrorJSON) { try { - final String responseString = DataConverter.getConvertedResponse(serviceErrorJSON, VtnServiceCommonUtil.getContentType(request.getRequestURI())); - setResponseHeader(request, response, responseString); + createErrorResponse(request, response, serviceErrorJSON); } catch (IOException e) { - LOG.error("Servlet writer failed error "+e.getMessage()); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); } catch (NumberFormatException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(e.getErrorCode()); } } } - + LOG.info("Successful Validation of VTN Service Request"); + LOG.trace("Complete VtnServiceWebAPIServlet#service()"); } - + /** - * Do get.This method will get the json/xml data from java API and will write the same on servlet output - * - * @param request the request - * @param response the response - * @throws ServletException the servlet exception - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) + * Do get.This method will get the json/xml data from java API and will + * write the same on servlet output + * + * @param request + * the request + * @param response + * the response + * @throws ServletException + * the servlet exception + * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse + * response) */ @Override - protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException { - LOG.trace("HTTP GET method is processing."); + protected void doGet(final HttpServletRequest request, + final HttpServletResponse response) throws ServletException { + LOG.trace("Start VtnServiceWebAPIServlet#doGet()"); JSONObject serviceErrorJSON = null; - try { - vtnServiceWebAPIHandler = new VtnServiceWebAPIHandler(); - final String responseString = vtnServiceWebAPIHandler.get(request); - setResponseHeader(request, response, responseString); - LOG.trace("HTTP GET method finished processing."); - }catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); - }finally{ - if(null != serviceErrorJSON){ - try { - final String responseString = DataConverter.getConvertedResponse(serviceErrorJSON, VtnServiceCommonUtil.getContentType(request.getRequestURI())); - setResponseHeader(request, response, responseString); - } catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - } catch (NumberFormatException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); - } + VtnServiceWebAPIHandler vtnServiceWebAPIHandler = null; + try { + vtnServiceWebAPIHandler = new VtnServiceWebAPIHandler(); + final String responseString = vtnServiceWebAPIHandler.get(request); + response.setStatus(HttpServletResponse.SC_OK); + setResponseHeader(request, response, responseString, + VtnServiceCommonUtil.getContentType(request)); + } catch (final IOException e) { + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_BAD_REQUEST + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e + .getErrorCode()); + } finally { + if (null != serviceErrorJSON) { + try { + createErrorResponse(request, response, serviceErrorJSON); + } catch (IOException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (NumberFormatException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(e.getErrorCode()); } } - + } + LOG.info("Successful processing for GET request."); + LOG.trace("Complete VtnServiceWebAPIServlet#doGet()"); } /** - * Do post.This method will be used to post the data either in xml or json to the java api - * by converting all the request to JSON and getting response in specified format. - * - * @param request the request - * @param response the response - * @throws ServletException the servlet exception - * @throws IOException Signals that an I/O exception has occurred. - * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) + * Do post.This method will be used to post the data either in xml or json + * to the java api by converting all the request to JSON and getting + * response in specified format. + * + * @param request + * the request + * @param response + * the response + * @throws ServletException + * the servlet exception + * @throws IOException + * Signals that an I/O exception has occurred. + * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse + * response) */ @Override - protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { - LOG.trace("HTTP POST method start processing."); + protected void doPost(final HttpServletRequest request, + final HttpServletResponse response) throws ServletException, + IOException { + LOG.trace("Start VtnServiceWebAPIServlet#doPost()"); JSONObject serviceErrorJSON = null; - try{ + VtnServiceWebAPIHandler vtnServiceWebAPIHandler = null; + try { vtnServiceWebAPIHandler = new VtnServiceWebAPIHandler(); final String responseString = vtnServiceWebAPIHandler.post(request); - setResponseHeader(request, response, responseString); - LOG.trace("HTTP POST method finished processing."); - } - catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - }catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); - } - finally{ - if(null != serviceErrorJSON){ + response.setStatus(HttpServletResponse.SC_CREATED); + setResponseHeader(request, response, responseString, + VtnServiceCommonUtil.getContentType(request)); + } catch (final IOException e) { + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e + .getErrorCode()); + } finally { + if (null != serviceErrorJSON) { try { - final String responseString = DataConverter.getConvertedResponse(serviceErrorJSON, VtnServiceCommonUtil.getContentType(request.getRequestURI())); - setResponseHeader(request, response, responseString); + createErrorResponse(request, response, serviceErrorJSON); } catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); } catch (NumberFormatException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(e.getErrorCode()); } } - } + } + LOG.info("Successful processing for POST request."); + LOG.trace("Complete VtnServiceWebAPIServlet#doPost()"); } /** - * Do put.This method will be used to post the data either in xml or json to the java api - * by converting all the request to JSON and getting response in specified format. - * - * @param request the request - * @param response the response + * Do put.This method will be used to post the data either in xml or json to + * the java api by converting all the request to JSON and getting response + * in specified format. + * + * @param request + * the request + * @param response + * the response * @see HttpServlet#doPut(HttpServletRequest, HttpServletResponse) */ @Override - protected void doPut(final HttpServletRequest request, final HttpServletResponse response) { - LOG.trace("HTTP PUT method start processing."); + protected void doPut(final HttpServletRequest request, + final HttpServletResponse response) { + LOG.trace("Start VtnServiceWebAPIServlet#init()"); JSONObject serviceErrorJSON = null; - try{ + VtnServiceWebAPIHandler vtnServiceWebAPIHandler = null; + try { vtnServiceWebAPIHandler = new VtnServiceWebAPIHandler(); - final String responseString = vtnServiceWebAPIHandler.put(request); - setResponseHeader(request, response, responseString); - LOG.trace("HTTP PUT method finished processing."); - } - catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - }catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); - }finally{ - if(null != serviceErrorJSON){ + final String responseString = vtnServiceWebAPIHandler.put(request); + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + setResponseHeader(request, response, responseString, + VtnServiceCommonUtil.getContentType(request)); + } catch (final IOException e) { + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e + .getErrorCode()); + } finally { + if (null != serviceErrorJSON) { try { - final String responseString = DataConverter.getConvertedResponse(serviceErrorJSON, VtnServiceCommonUtil.getContentType(request.getRequestURI())); - setResponseHeader(request, response, responseString); + createErrorResponse(request, response, serviceErrorJSON); } catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); } catch (NumberFormatException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(e.getErrorCode()); } } } - - - + LOG.info("Successful processing for PUT request."); + LOG.trace("Complete VtnServiceWebAPIServlet#doPut()"); } /** - * Do delete.This method will be used to post the data either in xml or json to the java api - * by converting all the request to JSON and getting response in specified format. - * - * @param request the request - * @param response the response + * Do delete.This method will be used to post the data either in xml or json + * to the java api by converting all the request to JSON and getting + * response in specified format. + * + * @param request + * the request + * @param response + * the response * @see HttpServlet#doDelete(HttpServletRequest, HttpServletResponse) */ @Override - protected void doDelete(final HttpServletRequest request, final HttpServletResponse response){ - LOG.trace("HTTP DELETE method start processing."); + protected void doDelete(final HttpServletRequest request, + final HttpServletResponse response) { + LOG.trace("Start VtnServiceWebAPIServlet#doDelete()"); JSONObject serviceErrorJSON = null; - try{ + VtnServiceWebAPIHandler vtnServiceWebAPIHandler = null; + try { vtnServiceWebAPIHandler = new VtnServiceWebAPIHandler(); - final String responseString = vtnServiceWebAPIHandler.delete(request); - setResponseHeader(request, response, responseString); - LOG.trace("HTTP DELETE method finished processing."); - } - catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - }catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); - }finally{ - if(null != serviceErrorJSON){ + final String responseString = vtnServiceWebAPIHandler + .delete(request); + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + setResponseHeader(request, response, responseString, + VtnServiceCommonUtil.getContentType(request)); + } catch (final IOException e) { + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e + .getErrorCode()); + } finally { + if (null != serviceErrorJSON) { try { - final String responseString = DataConverter.getConvertedResponse(serviceErrorJSON, VtnServiceCommonUtil.getContentType(request.getRequestURI())); - setResponseHeader(request, response, responseString); + createErrorResponse(request, response, serviceErrorJSON); } catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); } catch (NumberFormatException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } catch (VtnServiceWebAPIException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(e.getErrorCode())); - serviceErrorJSON = VtnServiceWebUtil.prepareErrResponseJson(e.getErrorCode(), e.getErrorDescription()); + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()); + } catch (final VtnServiceWebAPIException e) { + LOG.error("VTN Service erorr occurred " + e.getMessage()); + serviceErrorJSON = VtnServiceWebUtil + .prepareErrResponseJson(e.getErrorCode()); } } } - - + LOG.info("Successful processing for DELETE request."); + LOG.trace("Complete VtnServiceWebAPIServlet#doDelete()"); } - /** - * destroy method to finalize Servlet instances and used objects in the Web API. - * - * @param request the request - * @param response the response + * destroy method to finalize Servlet instances and used objects in the Web + * API. + * + * @param request + * the request + * @param response + * the response * @see HttpServlet#doPut(HttpServletRequest, HttpServletResponse) */ @Override public void destroy() { LOG.trace("Servlet instance is now eligible for garbage collection."); super.destroy(); + VtnServiceInitManager.getInstance().destroy(); } /** * Set response header information - * - * @param request the request - * @param response the response + * + * @param request + * the request + * @param response + * the response * @see HttpServlet#doPut(HttpServletRequest, HttpServletResponse) */ - private void setResponseHeader(final HttpServletRequest request,final HttpServletResponse response, final String responseString) throws IOException, VtnServiceWebAPIException { - LOG.debug("Start setResponseHeader"); - response.setContentType(VtnServiceCommonUtil.getContentType(request.getRequestURI())); + private void setResponseHeader(final HttpServletRequest request, + final HttpServletResponse response, final String responseString, + final String contentType) throws IOException, + VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIServlet#setResponseHeader()"); + response.setContentType(contentType); response.setCharacterEncoding(ApplicationConstants.CHAR_ENCODING); - if(null != responseString && !responseString.isEmpty()){ - // Set response status in cases where returned response in not success from JavaAPI - JsonObject responseJson = DataConverter.getConvertedRequestObject(responseString, VtnServiceCommonUtil.getContentType(request.getRequestURI())); - if(responseJson.has(ApplicationConstants.ERROR)){ - LOG.debug("Set HTTP response status : " + responseJson.get(ApplicationConstants.ERROR).getAsJsonObject().get(ApplicationConstants.ERR_CODE).getAsInt()); - response.setStatus(responseJson.get(ApplicationConstants.ERROR).getAsJsonObject().get(ApplicationConstants.ERR_CODE).getAsInt()); + if (null != responseString && !responseString.isEmpty()) { + // Set response status in cases where returned response in not + // success from JavaAPI + final JsonObject responseJson = DataConverter + .getConvertedRequestObject(responseString, contentType); + if (responseJson.has(ApplicationConstants.ERROR)) { + String actualErrorCode = responseJson + .get(ApplicationConstants.ERROR).getAsJsonObject() + .get(ApplicationConstants.ERR_CODE).getAsString(); + int errorCode = Integer.parseInt(actualErrorCode + .substring(0, 3)); + + /* + * If service is unavailable then retry-after header required to + * be set + */ + if (actualErrorCode.equalsIgnoreCase(String + .valueOf(HttpErrorCodeEnum.UNC_SERVICE_UNAVAILABLE + .getCode()))) { + response.setHeader( + ApplicationConstants.RETRY_AFTER, + ConfigurationManager.getInstance().getConfProperty( + ApplicationConstants.RETRY_AFTER)); + } + + LOG.debug("Set HTTP response status : " + errorCode); + response.setStatus(errorCode); + if (actualErrorCode.equalsIgnoreCase(String + .valueOf(HttpErrorCodeEnum.UNC_CUSTOM_NOT_FOUND.getCode())) + || VtnServiceCommonUtil.isOpenStackResurce(request)) { + + errorCode = responseJson.get(ApplicationConstants.ERROR) + .getAsJsonObject() + .get(ApplicationConstants.ERR_CODE).getAsInt(); + if (errorCode == HttpErrorCodeEnum.UNC_CUSTOM_NOT_FOUND + .getCode()) { + errorCode = HttpErrorCodeEnum.UNC_NOT_FOUND.getCode(); + responseJson + .get(ApplicationConstants.ERROR) + .getAsJsonObject() + .addProperty( + ApplicationConstants.ERR_DESCRIPTION, + HttpErrorCodeEnum.UNC_CUSTOM_NOT_FOUND + .getMessage()); + } + /** + * transform JSON object for error JSONs. err_code and + * err_msg parameters are not required to be nested inside + * error + */ + responseJson.addProperty(ApplicationConstants.ERR_CODE, + String.valueOf(errorCode)); + + /** + * changes the message for 500 error code UNC error message + * are not required to return to OpenStack API user + */ + if (actualErrorCode + .equalsIgnoreCase(String + .valueOf(HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()))) { + responseJson.addProperty( + ApplicationConstants.ERR_DESCRIPTION, + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getMessage()); + } else { + responseJson + .addProperty( + ApplicationConstants.ERR_DESCRIPTION, + responseJson + .get(ApplicationConstants.ERROR) + .getAsJsonObject() + .get(ApplicationConstants.ERR_DESCRIPTION) + .getAsString()); + } + // error nested json is not required so remove the same + responseJson.remove(ApplicationConstants.ERROR); + + response.getWriter().write(responseJson.toString()); + } } else { response.getWriter().write(responseString); } } - LOG.debug("Complete setResponseHeader"); + LOG.info("Http Response Header Set Successfully"); + LOG.trace("Complete VtnServiceWebAPIServlet#setResponseHeader()"); + } + + /** + * Prepare error response and header in case of error conditions + * + * @param request + * @param response + * @param serviceErrorJSON + * @throws VtnServiceWebAPIException + * @throws IOException + */ + private void createErrorResponse(final HttpServletRequest request, + final HttpServletResponse response, JSONObject serviceErrorJSON) + throws VtnServiceWebAPIException, IOException { + String contentType = VtnServiceCommonUtil.getContentType(request); + if (contentType == null + || !contentType + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_JSON + .getContentType()) + || !contentType + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_XML + .getContentType())) { + contentType = ContentTypeEnum.APPLICATION_JSON.getContentType(); + } + final String responseString = DataConverter.getConvertedResponse( + serviceErrorJSON, contentType); + setResponseHeader(request, response, responseString, contentType); } + } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/endpoint/package-info.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/endpoint/package-info.java new file mode 100644 index 00000000..aa709c95 --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/endpoint/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains WebAPI Servlet class which be used as an interface for the incoming request from web client . + */ +package org.opendaylight.vtn.webapi.endpoint; + diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ContentTypeEnum.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ContentTypeEnum.java index 7cf7891d..20666d8c 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ContentTypeEnum.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ContentTypeEnum.java @@ -1,39 +1,42 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.enums; /** - * The Enum ContentTypeEnum.This enum is used for the content type which we are getting in the request + * The Enum ContentTypeEnum.This enum is used for the content type which we are + * getting in the request */ public enum ContentTypeEnum { /** The APPLICATIO n_ xml. */ APPLICATION_XML("application/xml"), - + /** The APPLICATIO n_ json. */ APPLICATION_JSON("application/json"); - + /** The content type. */ private String contentType; - + /** * Instantiates a new content type enum. - * - * @param type the type + * + * @param type + * the type */ - private ContentTypeEnum(final String type){ + private ContentTypeEnum(final String type) { this.contentType = type; } - + /** * Gets the content type. - * + * * @return the content type */ public String getContentType() { diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/HttpErrorCodeEnum.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/HttpErrorCodeEnum.java new file mode 100644 index 00000000..273473ef --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/HttpErrorCodeEnum.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.vtn.webapi.enums; + +public enum HttpErrorCodeEnum { + + UNC_BAD_REQUEST(40001, "Invalid Format"), + UNC_UNAUTHORIZED(40100, "Unauthorized"), + UNC_FORBIDDEN(40300, "Forbidden"), + UNC_NOT_FOUND(40400, "Not Found"), + UNC_CUSTOM_NOT_FOUND(40499, "Not Found"), + UNC_METHOD_NOT_ALLOWED(40500, "Method Not Allowed"), + UNC_NOT_ACCEPTABLE(40600, "Not Acceptable"), + UNC_UNSUPPORTED_MEDIA_TYPE(41500, "Unsupported Media Type"), + UNC_INTERNAL_SERVER_ERROR(50000, "Internal Server Error"), + UNC_SERVICE_UNAVAILABLE(50301, "Server Busy"), + UNC_STATUS_OK(200, "Server Busy"); + + private final int code; + private String message; + + private HttpErrorCodeEnum(final int code, final String messgae) { + this.code = code; + this.message = messgae; + } + + public int getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ResourcePathEnum.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ResourcePathEnum.java index c3a594e6..7501951a 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ResourcePathEnum.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/ResourcePathEnum.java @@ -1,57 +1,59 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.enums; /** - * The Enum ResourcePathEnum.This enum provided the path of resources like session path, config path + * The Enum ResourcePathEnum.This enum provided the path of resources like + * session path, config path */ public enum ResourcePathEnum { - /** The SESSIO n_ path. */ SESSION_PATH("/sessions"), - + /** The ACQUIR e_ confi g_ path. */ ACQUIRE_CONFIG_PATH("/configuration/configmode"), - + /** The RELEAS e_ session. */ RELEASE_SESSION("/sessions/"), - + /** The RELEAS e_ configuration. */ RELEASE_CONFIGURATION("/configuration/configmode/"), - + /** The ACQUIR e_ releas e_ monitorin g_ path. */ ACQUIRE_RELEASE_MONITORING_PATH("/configuration/readlock"), - + /** The COMMI t_ configuration. */ COMMIT_CONFIGURATION("/configuration"), - + /** The ABORT_ configuration. */ ABORT_CONFIGURATION("/configuration/candidate"); /** The path. */ - private String path; - + private String path; + /** * Instantiates a new resource path enum. - * - * @param resourcePath the resource path + * + * @param resourcePath + * the resource path */ private ResourcePathEnum(final String resourcePath) { this.path = resourcePath; } - + /** * Gets the resource path. - * + * * @return the resource path */ - public String getPath(){ + public String getPath() { return path; } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/SessionEnum.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/SessionEnum.java index 569fd381..f027bfc9 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/SessionEnum.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/SessionEnum.java @@ -1,49 +1,45 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.enums; /** - * The Enum SessionEnum.This enum have all the required parameters that will be passed to lower layer for creating session. + * The Enum SessionEnum.This enum have all the required parameters that will be + * passed to lower layer for creating session. */ public enum SessionEnum { /** The USERNAME. */ USERNAME("username"), - + /** The PASSWORD. */ PASSWORD("password"), - + /** The IPADDRESS. */ - IPADDRESS("ipaddr"), - - /** The LOGINNAME. */ - LOGINNAME("login_name"), - - /** The INFO. */ - INFO("info"); - - + IPADDRESS("ipaddr"); + /** The session element. */ private String sessionElement; - + /** * Instantiates a new session enum. - * - * @param element the element + * + * @param element + * the element */ private SessionEnum(final String element) { this.sessionElement = element; } - + /** * Gets the session element. - * + * * @return the session element */ public String getSessionElement() { diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/package-info.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/package-info.java new file mode 100644 index 00000000..28b59237 --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/enums/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains All enums classes . + */ +package org.opendaylight.vtn.webapi.enums; + diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/exception/VtnServiceWebAPIException.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/exception/VtnServiceWebAPIException.java index fde31ee1..28e4c7cc 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/exception/VtnServiceWebAPIException.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/exception/VtnServiceWebAPIException.java @@ -1,86 +1,58 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.exception; -import org.opendaylight.vtn.webapi.utils.VtnServiceCommonUtil; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; /** * The Class VtnServiceException. - * + * * This is a common exception class which will be caught by service and thrown * by all subsequent layers. */ public class VtnServiceWebAPIException extends Exception { - /** The Constant serialVersionUID. */ + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; /** The error code. */ - private String errorCode; - - /** The error description. */ - private String errorDescription; + private int errorCode; - /** - * Instantiates a new vtn service web api exception. - */ - public VtnServiceWebAPIException() { + /** + * Instantiates a new vtn service web api exception. + */ + public VtnServiceWebAPIException() { super(); } - - /** - * Constructor for ServiceException- This constructor will pass the code and description to the Super class constructor. - * - * @param code String - * @param message the message - */ - public VtnServiceWebAPIException(final String code, final String message) { - super(VtnServiceCommonUtil.logErrorDetails(code)); - this.errorDescription = message; - this.errorCode = code; - } - - - /** - * Method getErrorCode. - * - - * @return String */ - public String getErrorCode() { - return errorCode; - } - /** - * Method setErrorCode. - * - * @param errorCode - * String - */ - public void setErrorCode(final String errorCode) { - this.errorCode = errorCode; - } + /** + * Constructor for ServiceException- This constructor will pass the code and + * description to the Super class constructor. + * + * @param code + * String + */ + public VtnServiceWebAPIException(final int code) { + this.errorCode = code; + } - /** - * Method getErrorDescription. - * - - * @return String */ - public String getErrorDescription() { - return errorDescription; - } + /** + * Method getErrorCode. + * + * @return int + */ + public int getErrorCode() { + return errorCode; + } - /** - * Method setErrorDescription. - * - * @param errorDescription - * String - */ - public void setErrorDescription(final String errorDescription) { - this.errorDescription = errorDescription; - } + @Override + public String getMessage() { + return errorCode + ApplicationConstants.COLON + super.getMessage(); + } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/exception/package-info.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/exception/package-info.java new file mode 100644 index 00000000..453709e0 --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/exception/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains VtnServiceException class for handling application level exceptions . + */ +package org.opendaylight.vtn.webapi.exception; + diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/pojo/SessionBean.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/pojo/SessionBean.java index 87d7bb8b..edfc6fc6 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/pojo/SessionBean.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/pojo/SessionBean.java @@ -1,132 +1,92 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.vtn.webapi.pojo; +package org.opendaylight.vtn.webapi.pojo; /** - * The Class SessionBean.This bean class is used as a pojo class for putting the header information - * in this and when required create JSON or XML from the same + * The Class SessionBean.This bean class is used as a pojo class for putting the + * header information in this and when required create JSON or XML from the same */ public class SessionBean { /** The user name. */ private String userName; - + /** The password. */ private String password; - + /** The ip address. */ private String ipAddress; - - /** The login name. */ - private String loginName; - - /** The information. */ - private String information; - + /** The type *. */ private String type; - - + /** * Gets the user name. - * + * * @return the userName */ public String getUserName() { return userName; } - + /** * Sets the user name. - * - * @param userName the userName to set + * + * @param userName + * the userName to set */ public void setUserName(final String userName) { this.userName = userName; } - + /** * Gets the password. - * + * * @return the password */ public String getPassword() { return password; } - + /** * Sets the password. - * - * @param password the password to set + * + * @param password + * the password to set */ public void setPassword(final String password) { this.password = password; } - + /** * Gets the ip address. - * + * * @return the ipAddress */ public String getIpAddress() { return ipAddress; } - + /** * Sets the ip address. - * - * @param ipAddress the ipAddress to set + * + * @param ipAddress + * the ipAddress to set */ public void setIpAddress(final String ipAddress) { this.ipAddress = ipAddress; } - - /** - * Gets the login name. - * - * @return the loginName - */ - public String getLoginName() { - return loginName; - } - - /** - * Sets the login name. - * - * @param loginName the loginName to set - */ - public void setLoginName(final String loginName) { - this.loginName = loginName; - } - - /** - * Gets the information. - * - * @return the information - */ - public String getInformation() { - return information; - } - - /** - * Sets the information. - * - * @param information the information to set - */ - public void setInformation(final String information) { - this.information = information; - } /** * Gets the type. - * + * * @return the type */ public String getType() { @@ -135,12 +95,12 @@ public class SessionBean { /** * Sets the type. - * - * @param type the type to set + * + * @param type + * the type to set */ public void setType(String type) { this.type = type; } - } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/pojo/package-info.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/pojo/package-info.java new file mode 100644 index 00000000..6a94cdf4 --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/pojo/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains SessionBean class. + */ +package org.opendaylight.vtn.webapi.pojo; + diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIController.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIController.java index b1d645a6..22ef1355 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIController.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIController.java @@ -1,642 +1,804 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.services; +import javax.servlet.http.HttpServletResponse; + +import org.json.JSONException; import org.json.JSONObject; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.util.Logger; import org.opendaylight.vtn.javaapi.RestResource; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; +import org.opendaylight.vtn.webapi.enums.HttpErrorCodeEnum; import org.opendaylight.vtn.webapi.enums.ResourcePathEnum; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; import org.opendaylight.vtn.webapi.utils.VtnServiceCommonUtil; import org.opendaylight.vtn.webapi.utils.VtnServiceWebUtil; /** - * The Class VtnServiceWebAPIController.This class will be the interface between WebAPI and Java API - * The actual flow will be covered in this class only. + * The Class VtnServiceWebAPIController.This class will be the interface between + * WebAPI and Java API The actual flow will be covered in this class only. */ public class VtnServiceWebAPIController { /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(VtnServiceWebAPIController.class.getName()); + private static final Logger LOG = Logger + .getLogger(VtnServiceWebAPIController.class.getName()); - /** The response success. */ - private final int RESPONSE_SUCCESS = 200; - - /** The exception status. */ - private boolean exceptionStatus = false; - /** - * This method will get the data from java api in json format and will do not pass any request to java api. - * First of all it will create the session and then acquire readlock from TC through JAva API. - * Then it will call the requested API and if we get success from lower layer then the response jaon will be recived and - * readlock will be released and same for session . - * - * @param sessionJson the session json - * @param resourcePath the resource path + * This method will get the data from java api in json format and will do + * not pass any request to java api. First of all it will create the session + * and then acquire readlock from TC through JAva API. Then it will call the + * requested API and if we get success from lower layer then the response + * jaon will be recived and readlock will be released and same for session . + * + * @param sessionJson + * the session json + * @param resourcePath + * the resource path * @return the jSON object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public JSONObject get(final JsonObject sessionJson, final String resourcePath) throws VtnServiceWebAPIException{ - LOG.trace("Java API calling for GET method initialized."); + public JSONObject get(final JsonObject sessionJson, + final String resourcePath) throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIController#get()"); JSONObject responseJSON = null; long sessionId = 0; boolean isReadlock = true; String responseStr = null; + boolean exceptionStatus = false; final RestResource resource = new RestResource(); - try{ + try { LOG.debug("acquiring session id and readlock from java API"); - //acquire session id + // acquire session id resource.setPath(ResourcePathEnum.SESSION_PATH.getPath()); - if(resource.post(sessionJson) != RESPONSE_SUCCESS){ - isReadlock=false; - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(sessionJson) != ApplicationConstants.SUCCESS) { + isReadlock = false; + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - sessionId = VtnServiceCommonUtil.getSessionFromJson(resource.getInfo()); - //acquire monitoring mode - resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH.getPath()); + sessionId = VtnServiceCommonUtil.getSessionFromJson(resource + .getInfo()); + // acquire monitoring mode + resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH + .getPath()); resource.setSessionID(sessionId); - if(resource.put(VtnServiceWebUtil.prepareAquireReadLockJSON()) != RESPONSE_SUCCESS){ - isReadlock=false; - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.put(VtnServiceWebUtil.prepareAquireReadLockJSON()) != ApplicationConstants.SUCCESS) { + isReadlock = false; + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - //send the api request json + // send the api request json resource.setPath(resourcePath); resource.setSessionID(sessionId); final int status = resource.get(); - LOG.debug("JAVA API returned error code #"+status); - if(status != RESPONSE_SUCCESS){ - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.error("JAVA API returns error # "+resource.getInfo()); + LOG.debug("JAVA API returned error code #" + status); + if (status != ApplicationConstants.SUCCESS) { + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.error("JAVA API returns error # " + resource.getInfo()); throw new VtnServiceWebAPIException(); } - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.debug("JAVA API returned response # "+responseStr); - }catch (VtnServiceWebAPIException vtnException) { + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.debug("JAVA API returned response # " + responseStr); + } catch (final Exception e) { + LOG.error("VTN Service error occurred : " + e.getMessage()); exceptionStatus = true; - }catch (RuntimeException exception) { - exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - finally{ - try{ - //release monitoring mode - if(isReadlock){ - resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH.getPath()); + if (!(e instanceof VtnServiceWebAPIException)) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); + } + } finally { + try { + // release monitoring mode + if (isReadlock) { + resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH + .getPath()); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } - } - if(sessionId != ApplicationConstants.ZERO){ - //release session - resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath()+ sessionId); + } + if (sessionId != ApplicationConstants.ZERO) { + // release session + resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath() + + sessionId); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } + } + if (null == responseStr && !exceptionStatus) { + responseJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_STATUS_OK + .getCode()); + } else { + responseJSON = new JSONObject(responseStr); + } + } catch (final JSONException exception) { + LOG.error("VTN Service error occurred : " + + exception.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - responseJSON = new JSONObject(responseStr); - }catch (Exception exception) { - exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - } + LOG.trace("Complete VtnServiceWebAPIController#get()"); return responseJSON; } - + /** - *This method will get the data from java api in json format and will pass the required request to java api. - * First of all it will create the session and then acquire readlock from TC through JAva API. - * Then it will call the requested API and if we get success from lower layer then the response jaon will be recived and - * readlock will be released and same for session . - * @param sessionJson the session json - * @param reqObject the req object - * @param resourcePath the resource path + * This method will get the data from java api in json format and will pass + * the required request to java api. First of all it will create the session + * and then acquire readlock from TC through JAva API. Then it will call the + * requested API and if we get success from lower layer then the response + * jaon will be recived and readlock will be released and same for session . + * + * @param sessionJson + * the session json + * @param reqObject + * the req object + * @param resourcePath + * the resource path * @return the jSON object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public JSONObject get(final JsonObject sessionJson, final JsonObject reqObject, final String resourcePath) throws VtnServiceWebAPIException { + public JSONObject get(final JsonObject sessionJson, + final JsonObject reqObject, final String resourcePath) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIController#get()"); JSONObject responseJSON = null; long sessionId = 0; boolean isReadlock = true; String responseStr = null; + boolean exceptionStatus = false; final RestResource resource = new RestResource(); - try{ + try { LOG.debug("acquiring session id and readlock from java API"); - //acquire session id + // acquire session id resource.setPath(ResourcePathEnum.SESSION_PATH.getPath()); - if(resource.post(sessionJson) != RESPONSE_SUCCESS){ - isReadlock=false; - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(sessionJson) != ApplicationConstants.SUCCESS) { + isReadlock = false; + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - sessionId = VtnServiceCommonUtil.getSessionFromJson(resource.getInfo()); - //acquire monitoring mode - - resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH.getPath()); + sessionId = VtnServiceCommonUtil.getSessionFromJson(resource + .getInfo()); + // acquire monitoring mode + + resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH + .getPath()); resource.setSessionID(sessionId); - if(resource.put(VtnServiceWebUtil.prepareAquireReadLockJSON()) != RESPONSE_SUCCESS){ + if (resource.put(VtnServiceWebUtil.prepareAquireReadLockJSON()) != ApplicationConstants.SUCCESS) { isReadlock = false; - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - //send the api request json + // send the api request json resource.setPath(resourcePath); resource.setSessionID(sessionId); - LOG.debug("Request object passing to JAVA API #"+reqObject); + LOG.debug("Request object passing to JAVA API #" + reqObject); final int status = resource.get(reqObject); - LOG.debug("JAVA API returned error code #"+status); - if(status != RESPONSE_SUCCESS){ - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.error("JAVA API returns error # "+resource.getInfo()); + LOG.debug("JAVA API returned error code #" + status); + if (status != ApplicationConstants.SUCCESS) { + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.error("JAVA API returns error # " + resource.getInfo()); throw new VtnServiceWebAPIException(); } - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.debug("JAVA API returned response # "+responseStr); - }catch (VtnServiceWebAPIException vtnException) { - exceptionStatus = true; - }catch (RuntimeException exception) { + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.debug("JAVA API returned response # " + responseStr); + } catch (final Exception e) { + LOG.error("VTN Service error occurred : " + e.getMessage()); exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - finally{ - try{ - //release monitoring mode - if(isReadlock){ - resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH.getPath()); + if (!(e instanceof VtnServiceWebAPIException)) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); + } + } finally { + try { + // release monitoring mode + if (isReadlock) { + resource.setPath(ResourcePathEnum.ACQUIRE_RELEASE_MONITORING_PATH + .getPath()); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - - if(sessionId != ApplicationConstants.ZERO){ - //release session - resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath()+ sessionId); + + if (sessionId != ApplicationConstants.ZERO) { + // release session + resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath() + + sessionId); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - responseJSON = new JSONObject(responseStr); - }catch (Exception exception) { - exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); + if (null == responseStr && !exceptionStatus) { + responseJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_STATUS_OK + .getCode()); + } else { + responseJSON = new JSONObject(responseStr); + } + } catch (final JSONException exception) { + LOG.error("VTN Service error occurred : " + + exception.getMessage()); + throw new VtnServiceWebAPIException( + HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } - } + LOG.trace("Complete VtnServiceWebAPIController#get()"); return responseJSON; } - /** - * Post.This method will be required when we have to create any component using Java API. - * This method will work in the following sequence- - * Create session - * acquire config mode - * calling actual Java API which is requested - * release config lock - * release session - * - * @param sessionJson the session json - * @param reqObject the req object - * @param resourcePath the resource path + * Post.This method will be required when we have to create any component + * using Java API. This method will work in the following sequence- Create + * session acquire config mode calling actual Java API which is requested + * release config lock release session + * + * @param sessionJson + * the session json + * @param reqObject + * the req object + * @param resourcePath + * the resource path * @return the jSON object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public JSONObject post(final JsonObject sessionJson, final JsonObject reqObject, final String resourcePath) throws VtnServiceWebAPIException{ - JSONObject responseJSON = null; + public JSONObject post(final JsonObject sessionJson, + final JsonObject reqObject, final String resourcePath) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIController#post()"); + JSONObject responseJSON = null; String responseStr = null; long sessionId = 0; long configId = 0; + boolean exceptionStatus = false; final RestResource resource = new RestResource(); - try{ + try { LOG.debug("acquiring session id and config mode from java API"); - //acquire session id + // acquire session id resource.setPath(ResourcePathEnum.SESSION_PATH.getPath()); - if(resource.post(sessionJson) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(sessionJson) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - sessionId = VtnServiceCommonUtil.getSessionFromJson(resource.getInfo()); - //acquire configure mode + sessionId = VtnServiceCommonUtil.getSessionFromJson(resource + .getInfo()); + // acquire configure mode resource.setPath(ResourcePathEnum.ACQUIRE_CONFIG_PATH.getPath()); resource.setSessionID(sessionId); - if(resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - configId = VtnServiceCommonUtil.getConfigIdFromJson(resource.getInfo()); + configId = VtnServiceCommonUtil.getConfigIdFromJson(resource + .getInfo()); // Abort operation to clear candidate DB responseStr = performAbort(sessionId, configId, resource); - //send the api request json + if (responseStr != null) { + throw new VtnServiceWebAPIException(); + } + // send the api request json resource.setPath(resourcePath); resource.setSessionID(sessionId); resource.setConfigID(configId); - LOG.debug("Request object passing to JAVA API #"+reqObject); + LOG.debug("Request object passing to JAVA API #" + reqObject); final int status = resource.post(reqObject); - LOG.debug("JAVA API returned error code #"+status); - if(status != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - throw new VtnServiceWebAPIException();//to save the below steps execution - } - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.debug("JAVA API returned response # "+responseStr); - //responseStr = performCommit(sessionId, configId, resource); - String commitResponse = performCommit(sessionId, configId, resource); - if(commitResponse != null){ + LOG.debug("JAVA API returned error code #" + status); + if (status != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + throw new VtnServiceWebAPIException();// to save the below steps + // execution + } + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.debug("JAVA API returned response # " + responseStr); + // responseStr = performCommit(sessionId, configId, resource); + final String commitResponse = performCommit(sessionId, configId, + resource); + if (commitResponse != null) { responseStr = commitResponse; + throw new VtnServiceWebAPIException(); } - }catch (VtnServiceWebAPIException vtnException) { - exceptionStatus = true; - }catch (RuntimeException exception) { + } catch (final Exception e) { + LOG.error("VTN Service error occurred : " + e.getMessage()); exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - finally{ - try{ - if(configId != ApplicationConstants.ZERO){ - //release monitoring mode - resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION.getPath()+configId); + if (!(e instanceof VtnServiceWebAPIException)) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); + } + } finally { + try { + if (configId != ApplicationConstants.ZERO) { + // release monitoring mode + resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION + .getPath() + configId); resource.setSessionID(sessionId); resource.setConfigID(configId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(sessionId != ApplicationConstants.ZERO){ - //release session - resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath()+ sessionId); + if (sessionId != ApplicationConstants.ZERO) { + // release session + resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath() + + sessionId); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(null == responseStr && !exceptionStatus){ - responseJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.STATUS_OK, ApplicationConstants.STATUS_SUCCESS); - }else{ + if (null == responseStr && !exceptionStatus) { + responseJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_STATUS_OK + .getCode()); + } else { responseJSON = new JSONObject(responseStr); } - }catch (Exception exception) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); + } catch (final JSONException exception) { + LOG.error("VTN Service error occurred : " + + exception.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - } + LOG.trace("Complete VtnServiceWebAPIController#post()"); return responseJSON; } /** - * Put.This method will be required when we have to update any component using Java API. - * This method will work in the following sequence- - * Create session - * acquire config mode - * calling actual Java API which is requested - * release config lock - * release session - * @param sessionJson the session json - * @param reqObject the req object - * @param resourcePath the resource path + * Put.This method will be required when we have to update any component + * using Java API. This method will work in the following sequence- Create + * session acquire config mode calling actual Java API which is requested + * release config lock release session + * + * @param sessionJson + * the session json + * @param reqObject + * the req object + * @param resourcePath + * the resource path * @return the jSON object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public JSONObject put(final JsonObject sessionJson, final JsonObject reqObject, final String resourcePath) throws VtnServiceWebAPIException { + public JSONObject put(final JsonObject sessionJson, + final JsonObject reqObject, final String resourcePath) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIController#put()"); JSONObject responseJSON = null; String responseStr = null; long sessionId = 0; long configId = 0; + boolean exceptionStatus = false; final RestResource resource = new RestResource(); - try{ + try { LOG.debug("acquiring session id and config mode from java API"); - //acquire session id + // acquire session id resource.setPath(ResourcePathEnum.SESSION_PATH.getPath()); - if(resource.post(sessionJson) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(sessionJson) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - sessionId = VtnServiceCommonUtil.getSessionFromJson(resource.getInfo()); - //acquire configure mode + sessionId = VtnServiceCommonUtil.getSessionFromJson(resource + .getInfo()); + // acquire configure mode resource.setPath(ResourcePathEnum.ACQUIRE_CONFIG_PATH.getPath()); resource.setSessionID(sessionId); - if(resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + throw new VtnServiceWebAPIException(); + } + configId = VtnServiceCommonUtil.getConfigIdFromJson(resource + .getInfo()); + responseStr = performAbort(sessionId, configId, resource); + if (responseStr != null) { throw new VtnServiceWebAPIException(); } - configId = VtnServiceCommonUtil.getConfigIdFromJson(resource.getInfo()); - responseStr = performAbort(sessionId, configId, resource); - //send the api request json + // send the api request json resource.setPath(resourcePath); resource.setConfigID(configId); resource.setSessionID(sessionId); - LOG.debug("Request object passing to JAVA API #"+reqObject); + LOG.debug("Request object passing to JAVA API #" + reqObject); final int status = resource.put(reqObject); - LOG.debug("JAVA API returned error code #"+status); - if(status != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - throw new VtnServiceWebAPIException();//to save the below steps execution - } - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.debug("JAVA API returned response # "+responseStr); - //responseStr = performCommit(sessionId, configId, resource); - String commitResponse = performCommit(sessionId, configId, resource); - if(commitResponse != null){ - responseStr = commitResponse; - } - }catch (VtnServiceWebAPIException vtnException) { - exceptionStatus = true; - }catch (RuntimeException exception) { + LOG.debug("JAVA API returned error code #" + status); + if (status != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + throw new VtnServiceWebAPIException();// to save the below steps + // execution + } + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.debug("JAVA API returned response # " + responseStr); + // responseStr = performCommit(sessionId, configId, resource); + final String commitResponse = performCommit(sessionId, configId, + resource); + if (commitResponse != null) { + responseStr = commitResponse; + throw new VtnServiceWebAPIException(); + } + } catch (final Exception e) { + LOG.error("VTN Service error occurred : " + e.getMessage()); exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - finally{ - try{ - if(configId != ApplicationConstants.ZERO){ - //release monitoring mode - resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION.getPath()+configId); + if (!(e instanceof VtnServiceWebAPIException)) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); + } + } finally { + try { + if (configId != ApplicationConstants.ZERO) { + // release monitoring mode + resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION + .getPath() + configId); resource.setSessionID(sessionId); resource.setConfigID(configId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(sessionId != ApplicationConstants.ZERO){ - //release session - resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath()+ sessionId); + if (sessionId != ApplicationConstants.ZERO) { + // release session + resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath() + + sessionId); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(null == responseStr && !exceptionStatus){ - responseJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.STATUS_OK, ApplicationConstants.STATUS_SUCCESS); - }else{ + if (null == responseStr && !exceptionStatus) { + responseJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_STATUS_OK + .getCode()); + } else { responseJSON = new JSONObject(responseStr); } - }catch (Exception exception) { - exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); + } catch (final JSONException exception) { + LOG.error("VTN Service error occurred : " + + exception.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } } + LOG.trace("Complete VtnServiceWebAPIController#put()"); return responseJSON; } /** - * Delete.This method will be required when we have to delete any component using Java API. - * This method will work in the following sequence- - * Create session - * acquire config mode - * calling actual Java API which is requested - * release config lock - * release session - * @param sessionJson the session json - * @param reqObject the req object - * @param resourcePath the resource path + * Delete.This method will be required when we have to delete any component + * using Java API. This method will work in the following sequence- Create + * session acquire config mode calling actual Java API which is requested + * release config lock release session + * + * @param sessionJson + * the session json + * @param reqObject + * the req object + * @param resourcePath + * the resource path * @return the jSON object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public JSONObject delete(final JsonObject sessionJson, final JsonObject reqObject, final String resourcePath) throws VtnServiceWebAPIException{ + public JSONObject delete(final JsonObject sessionJson, + final JsonObject reqObject, final String resourcePath) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIController#delete()"); JSONObject responseJSON = null; String responseStr = null; long sessionId = 0; long configId = 0; + boolean exceptionStatus = false; final RestResource resource = new RestResource(); - try{ + try { LOG.debug("acquiring session id and config mode from java API"); - //acquire session id + // acquire session id resource.setPath(ResourcePathEnum.SESSION_PATH.getPath()); - if(resource.post(sessionJson) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(sessionJson) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - sessionId = VtnServiceCommonUtil.getSessionFromJson(resource.getInfo()); - //acquire configure mode + sessionId = VtnServiceCommonUtil.getSessionFromJson(resource + .getInfo()); + // acquire configure mode resource.setPath(ResourcePathEnum.ACQUIRE_CONFIG_PATH.getPath()); resource.setSessionID(sessionId); - if(resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - configId = VtnServiceCommonUtil.getConfigIdFromJson(resource.getInfo()); - responseStr = performAbort(sessionId, configId, resource); - //send the api request json + configId = VtnServiceCommonUtil.getConfigIdFromJson(resource + .getInfo()); + responseStr = performAbort(sessionId, configId, resource); + if (responseStr != null) { + throw new VtnServiceWebAPIException(); + } + // send the api request json resource.setPath(resourcePath); resource.setConfigID(configId); resource.setSessionID(sessionId); - LOG.debug("Request object passing to JAVA API #"+reqObject); + LOG.debug("Request object passing to JAVA API #" + reqObject); final int status = resource.delete(reqObject); - LOG.debug("JAVA API returned error code #"+status); - if(status != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - throw new VtnServiceWebAPIException();//to save the below steps execution - } - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.debug("JAVA API returned response # "+responseStr); - //responseStr = performCommit(sessionId, configId, resource); - String commitResponse = performCommit(sessionId, configId, resource); - if(commitResponse != null){ - responseStr = commitResponse; - } - }catch (VtnServiceWebAPIException vtnException) { - exceptionStatus = true; - }catch (Exception exception) { + LOG.debug("JAVA API returned error code #" + status); + if (status != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + throw new VtnServiceWebAPIException();// to save the below steps + // execution + } + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.debug("JAVA API returned response # " + responseStr); + // responseStr = performCommit(sessionId, configId, resource); + final String commitResponse = performCommit(sessionId, configId, + resource); + if (commitResponse != null) { + responseStr = commitResponse; + throw new VtnServiceWebAPIException(); + } + } catch (final Exception e) { + LOG.error("VTN Service error occurred : " + e.getMessage()); exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - finally{ - try{ - if(configId != ApplicationConstants.ZERO){ - //release monitoring mode - resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION.getPath()+configId); + if (!(e instanceof VtnServiceWebAPIException)) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); + } + } finally { + try { + if (configId != ApplicationConstants.ZERO) { + // release monitoring mode + resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION + .getPath() + configId); resource.setSessionID(sessionId); resource.setConfigID(configId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(sessionId != ApplicationConstants.ZERO){ - //release session - resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath()+ sessionId); + if (sessionId != ApplicationConstants.ZERO) { + // release session + resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath() + + sessionId); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(null == responseStr && !exceptionStatus){ - responseJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.STATUS_OK, ApplicationConstants.STATUS_SUCCESS); - }else{ + if (null == responseStr && !exceptionStatus) { + responseJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_STATUS_OK + .getCode()); + } else { responseJSON = new JSONObject(responseStr); } - }catch (Exception exception) { - exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); + } catch (final JSONException exception) { + LOG.error("VTN Service error occurred : " + + exception.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - + } + LOG.trace("Complete VtnServiceWebAPIController#delete()"); return responseJSON; } - + /** - * Delete.This method will be required when we have to delete any component using Java API. - * This method will work in the following sequence- - * Create session - * acquire config mode - * calling actual Java API which is requested - * release config lock - * release session - * @param sessionJson the session json - * @param resourcePath the resource path + * Delete.This method will be required when we have to delete any component + * using Java API. This method will work in the following sequence- Create + * session acquire config mode calling actual Java API which is requested + * release config lock release session + * + * @param sessionJson + * the session json + * @param resourcePath + * the resource path * @return the jSON object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public JSONObject delete(final JsonObject sessionJson, final String resourcePath) throws VtnServiceWebAPIException { + public JSONObject delete(final JsonObject sessionJson, + final String resourcePath) throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIController#delete()"); JSONObject responseJSON = null; String responseStr = null; long sessionId = 0; long configId = 0; + boolean exceptionStatus = false; final RestResource resource = new RestResource(); - try{ + try { LOG.debug("acquiring session id and config mode from java API"); - //acquire session id + // acquire session id resource.setPath(ResourcePathEnum.SESSION_PATH.getPath()); - if(resource.post(sessionJson) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(sessionJson) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; throw new VtnServiceWebAPIException(); } - sessionId = VtnServiceCommonUtil.getSessionFromJson(resource.getInfo()); - //acquire configure mode + sessionId = VtnServiceCommonUtil.getSessionFromJson(resource + .getInfo()); + // acquire configure mode resource.setPath(ResourcePathEnum.ACQUIRE_CONFIG_PATH.getPath()); resource.setSessionID(sessionId); - if(resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.post(VtnServiceWebUtil.prepareAquireConfigJSON()) != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + throw new VtnServiceWebAPIException(); + } + configId = VtnServiceCommonUtil.getConfigIdFromJson(resource + .getInfo()); + responseStr = performAbort(sessionId, configId, resource); + if (responseStr != null) { throw new VtnServiceWebAPIException(); } - configId = VtnServiceCommonUtil.getConfigIdFromJson(resource.getInfo()); - responseStr = performAbort(sessionId, configId, resource); - //send the api request json + // send the api request json resource.setPath(resourcePath); resource.setConfigID(configId); resource.setSessionID(sessionId); final int status = resource.delete(); - LOG.debug("JAVA API returned error code #"+status); - if(status != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - throw new VtnServiceWebAPIException();//to save the below steps execution - } - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - LOG.debug("JAVA API returned response # "+responseStr); - //responseStr = performCommit(sessionId, configId, resource); - String commitResponse = performCommit(sessionId, configId, resource); - if(commitResponse != null){ - responseStr = commitResponse; - } - }catch (VtnServiceWebAPIException vtnException) { - exceptionStatus = true; - }catch (RuntimeException exception) { + LOG.debug("JAVA API returned error code #" + status); + if (status != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + throw new VtnServiceWebAPIException();// to save the below steps + // execution + } + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; + LOG.debug("JAVA API returned response # " + responseStr); + // responseStr = performCommit(sessionId, configId, resource); + final String commitResponse = performCommit(sessionId, configId, + resource); + if (commitResponse != null) { + responseStr = commitResponse; + throw new VtnServiceWebAPIException(); + } + } catch (final Exception e) { + LOG.error("VTN Service error occurred : " + e.getMessage()); exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - finally{ - try{ - if(configId != ApplicationConstants.ZERO){ - //release monitoring mode - resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION.getPath()+configId); + if (!(e instanceof VtnServiceWebAPIException)) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); + } + } finally { + try { + if (configId != ApplicationConstants.ZERO) { + // release monitoring mode + resource.setPath(ResourcePathEnum.RELEASE_CONFIGURATION + .getPath() + configId); resource.setSessionID(sessionId); resource.setConfigID(configId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(sessionId != ApplicationConstants.ZERO){ - //release session - resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath()+ sessionId); + if (sessionId != ApplicationConstants.ZERO) { + // release session + resource.setPath(ResourcePathEnum.RELEASE_SESSION.getPath() + + sessionId); resource.setSessionID(sessionId); - if(resource.delete() != RESPONSE_SUCCESS){ - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + if (resource.delete() != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource + .getInfo().toString() : null; throw new VtnServiceWebAPIException(); } } - if(null == responseStr && !exceptionStatus){ - responseJSON = VtnServiceWebUtil.prepareErrResponseJson(ApplicationConstants.STATUS_OK, ApplicationConstants.STATUS_SUCCESS); - }else{ + if (null == responseStr && !exceptionStatus) { + responseJSON = VtnServiceWebUtil + .prepareErrResponseJson(HttpErrorCodeEnum.UNC_STATUS_OK + .getCode()); + } else { responseJSON = new JSONObject(responseStr); } - }catch (Exception exception) { - exceptionStatus = true; - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); + } catch (final JSONException exception) { + LOG.error("VTN Service error occurred : " + + exception.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - } + LOG.trace("Complete VtnServiceWebAPIController#delete()"); return responseJSON; } /** * Execute commit API for given resource, session and configuration id + * * @param responseStr * @param sessionId * @param configId @@ -644,26 +806,29 @@ public class VtnServiceWebAPIController { * @return : response from JavaAPI * @throws VtnServiceWebAPIException */ - private String performCommit(long sessionId, long configId, final RestResource resource) - throws VtnServiceWebAPIException { - String responseStr = null ; + private String performCommit(long sessionId, long configId, + final RestResource resource) throws VtnServiceWebAPIException { LOG.trace("Start VtnServiceWebAPIController#performCommit()"); + String responseStr = null; resource.setPath(ResourcePathEnum.COMMIT_CONFIGURATION.getPath()); resource.setSessionID(sessionId); resource.setConfigID(configId); - final int commitStatus = resource.put(VtnServiceWebUtil.prepareConfigCommitOrSaveJSON(ApplicationConstants.OPERATION_COMMIT)); - if (commitStatus != RESPONSE_SUCCESS) { - LOG.error("JAVA API returns error # "+resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; + final int commitStatus = resource + .put(VtnServiceWebUtil + .prepareConfigCommitOrSaveJSON(ApplicationConstants.OPERATION_COMMIT)); + if (commitStatus != ApplicationConstants.SUCCESS) { + LOG.error("JAVA API returns error # " + resource.getInfo()); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; performAbort(sessionId, configId, resource); - throw new VtnServiceWebAPIException(); } LOG.trace("Complete VtnServiceWebAPIController#performCommit()"); return responseStr; } - + /** * Execute abort API for given resource, session and configuration id + * * @param responseStr * @param sessionId * @param configId @@ -671,19 +836,21 @@ public class VtnServiceWebAPIController { * @return : response from JavaAPI * @throws VtnServiceWebAPIException */ - private String performAbort(long sessionId, long configId, final RestResource resource) - throws VtnServiceWebAPIException { - String responseStr = null ; + private String performAbort(long sessionId, long configId, + final RestResource resource) throws VtnServiceWebAPIException { LOG.trace("Start VtnServiceWebAPIController#performAbort()"); + String responseStr = null; resource.setPath(ResourcePathEnum.ABORT_CONFIGURATION.getPath()); resource.setSessionID(sessionId); resource.setConfigID(configId); - if (resource.put(VtnServiceWebUtil.prepareCandidateAbortJSON(ApplicationConstants.OPERATION_ABORT)) != RESPONSE_SUCCESS) { + if (resource + .put(VtnServiceWebUtil + .prepareCandidateAbortJSON(ApplicationConstants.OPERATION_ABORT)) != ApplicationConstants.SUCCESS) { LOG.error("JAVA API returns error # " + resource.getInfo()); - responseStr = resource.getInfo() != null? resource.getInfo().toString():null; - throw new VtnServiceWebAPIException(); + responseStr = resource.getInfo() != null ? resource.getInfo() + .toString() : null; } LOG.trace("Complete VtnServiceWebAPIController#performAbort()"); return responseStr; - } + } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIHandler.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIHandler.java index 911624de..3abb6623 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIHandler.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/VtnServiceWebAPIHandler.java @@ -1,11 +1,12 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.services; import java.io.IOException; @@ -17,196 +18,363 @@ import org.json.JSONObject; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; +import org.opendaylight.vtn.webapi.enums.ContentTypeEnum; +import org.opendaylight.vtn.webapi.enums.HttpErrorCodeEnum; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; import org.opendaylight.vtn.webapi.pojo.SessionBean; import org.opendaylight.vtn.webapi.utils.DataConverter; import org.opendaylight.vtn.webapi.utils.VtnServiceCommonUtil; import org.opendaylight.vtn.webapi.utils.VtnServiceWebUtil; - /** - * The Class VtnServiceWebAPIHandler.This class is defined at the handler layer where the actual request - * object is prepared and validated for the correctness.This class will contain get, post, put , validate and delete + * The Class VtnServiceWebAPIHandler.This class is defined at the handler layer + * where the actual request object is prepared and validated for the + * correctness.This class will contain get, post, put , validate and delete */ public class VtnServiceWebAPIHandler { + /** The Constant LOGGER. */ - private static final Logger LOG = Logger.getLogger(VtnServiceWebAPIHandler.class.getName()); - - /** The vtn service web api controller. */ - private final VtnServiceWebAPIController vtnServiceWebAPIController; - - /** The resource path. */ - private String resourcePath; - - /** The content type. */ - private String contentType; - - - /** - * Instantiates a new vtn service web api controller and latter it will be used for calling the method written for java api call. - */ - public VtnServiceWebAPIHandler() { - LOG.trace("Initializing web api handler #VtnServiceWebAPIHandler()"); - this.vtnServiceWebAPIController = new VtnServiceWebAPIController(); - LOG.trace("Web api handler initialized successfully #VtnServiceWebAPIHandler()"); - } + private static final Logger LOG = Logger + .getLogger(VtnServiceWebAPIHandler.class.getName()); /** - * Get. This method will convert the httprequest to JSON format and then will validate the same for json syntax. - * At the same time the count and detail information will be removed from resource path - * it will also decide whether the call is for JSON/XML by passed URI format. - * After getting the response it will convert the same in either format JSON/XML - * @param request the request + * Get. This method will convert the httprequest to JSON format and then + * will validate the same for json syntax. At the same time the count and + * detail information will be removed from resource path it will also decide + * whether the call is for JSON/XML by passed URI format. After getting the + * response it will convert the same in either format JSON/XML + * + * @param request + * the request * @return the string - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public String get(final HttpServletRequest request) throws VtnServiceWebAPIException{ + public String get(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIHandler#get()"); JSONObject serviceResponse = null; JsonObject serviceRequest = new JsonObject(); String responseString = null; - LOG.trace("GET method of web api handler starts #get()"); - this.resourcePath = VtnServiceCommonUtil.getResourceURI(request.getRequestURI()); - this.contentType = VtnServiceCommonUtil.getContentType(request.getRequestURI()); + String resourcePath = VtnServiceCommonUtil.getResourceURI(request + .getRequestURI()); + final String contentType = VtnServiceCommonUtil.getContentType(request); final Map paramsMap = request.getParameterMap(); - serviceRequest = VtnServiceCommonUtil.getOpParameter(serviceRequest, resourcePath); - this.resourcePath = VtnServiceCommonUtil.removeCountOrDetailFromURI(this.resourcePath); + serviceRequest = VtnServiceCommonUtil.getOpParameter(serviceRequest, + resourcePath); + resourcePath = VtnServiceCommonUtil + .removeCountOrDetailFromURI(resourcePath); + final VtnServiceWebAPIController vtnServiceWebAPIController = new VtnServiceWebAPIController(); if (null != paramsMap && !paramsMap.isEmpty()) { - serviceRequest = DataConverter.convertMapToJson(paramsMap, serviceRequest); - serviceResponse = vtnServiceWebAPIController.get(VtnServiceWebUtil.prepareHeaderJson(request), serviceRequest, - this.resourcePath); + serviceRequest = DataConverter.convertMapToJson(paramsMap, + serviceRequest); + serviceResponse = vtnServiceWebAPIController.get( + VtnServiceWebUtil.prepareHeaderJson(request), + serviceRequest, resourcePath); } else { - if (VtnServiceCommonUtil.validateGetAPI(this.resourcePath)) { - serviceResponse = vtnServiceWebAPIController.get(VtnServiceWebUtil.prepareHeaderJson(request), this.resourcePath); + if (VtnServiceCommonUtil.validateGetAPI(resourcePath)) { + serviceResponse = vtnServiceWebAPIController.get( + VtnServiceWebUtil.prepareHeaderJson(request), + resourcePath); } else { - serviceResponse = vtnServiceWebAPIController.get(VtnServiceWebUtil.prepareHeaderJson(request), serviceRequest, - this.resourcePath); + serviceResponse = vtnServiceWebAPIController.get( + VtnServiceWebUtil.prepareHeaderJson(request), + serviceRequest, resourcePath); } } - responseString = DataConverter.getConvertedResponse(serviceResponse, contentType); - LOG.trace("GET method of web api handler ends #get()"); - + responseString = DataConverter.getConvertedResponse(serviceResponse, + contentType); + LOG.debug("responseString : " + responseString); + LOG.trace("Complete VtnServiceWebAPIHandler#get()"); return responseString; } - - /** - * Post. This method will convert the httprequest to JSON format and then will validate the same for json syntax - * it will also decide whether the call is for JSON/XML by passed URI format. - * will prepare the session json also to take session for api call later. - * After getting the response it will convert the same in either format JSON/XML - * @param request the request + * Post. This method will convert the httprequest to JSON format and then + * will validate the same for json syntax it will also decide whether the + * call is for JSON/XML by passed URI format. will prepare the session json + * also to take session for api call later. After getting the response it + * will convert the same in either format JSON/XML + * + * @param request + * the request * @return the string - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public String post(final HttpServletRequest request) throws VtnServiceWebAPIException{ + public String post(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIHandler#post()"); JSONObject serviceResponse = null; JsonObject serviceRequest = null; String responseString = null; - try{ - LOG.trace("POST method of web api handler starts #post()"); - this.resourcePath = VtnServiceCommonUtil.getResourceURI(request.getRequestURI()); - this.contentType = VtnServiceCommonUtil.getContentType(request.getRequestURI()); - serviceRequest = new VtnServiceWebUtil().prepareRequestJson(request, contentType); - JsonObject sessionJson = VtnServiceWebUtil.prepareHeaderJson(request); - serviceResponse = vtnServiceWebAPIController.post(sessionJson, serviceRequest, this.resourcePath); - responseString = DataConverter.getConvertedResponse(serviceResponse, contentType); - LOG.trace("POST method of web api handler ends #post()"); - } catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); + try { + final String resourcePath = VtnServiceCommonUtil + .getResourceURI(request.getRequestURI()); + final String contentType = VtnServiceCommonUtil + .getContentType(request); + serviceRequest = new VtnServiceWebUtil().prepareRequestJson( + request, contentType); + final JsonObject sessionJson = VtnServiceWebUtil + .prepareHeaderJson(request); + final VtnServiceWebAPIController vtnServiceWebAPIController = new VtnServiceWebAPIController(); + serviceResponse = vtnServiceWebAPIController.post(sessionJson, + serviceRequest, resourcePath); + responseString = DataConverter.getConvertedResponse( + serviceResponse, contentType); + LOG.debug("responseString : " + responseString); + } catch (final IOException e) { + LOG.error("Internal server error occurred : " + e.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - + LOG.trace("Complete VtnServiceWebAPIHandler#post()"); return responseString; } - /** - * Put. This method will convert the httprequest to JSON format and then will validate the same for json syntax - * it will also decide whether the call is for JSON/XML by passed URI format. - * will prepare the session json also to take session for api call later. - * After getting the response it will convert the same in either format JSON/XML - * @param request the request + * Put. This method will convert the httprequest to JSON format and then + * will validate the same for json syntax it will also decide whether the + * call is for JSON/XML by passed URI format. will prepare the session json + * also to take session for api call later. After getting the response it + * will convert the same in either format JSON/XML + * + * @param request + * the request * @return the string - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public String put(final HttpServletRequest request) throws VtnServiceWebAPIException{ + public String put(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIHandler#put()"); JSONObject serviceResponse = null; JsonObject serviceRequest = null; String responseString = null; - try{ - LOG.trace("PUT method of web api handler starts #put()"); - this.resourcePath = VtnServiceCommonUtil.getResourceURI(request.getRequestURI()); - this.contentType = VtnServiceCommonUtil.getContentType(request.getRequestURI()); - if (this.resourcePath.equals(ApplicationConstants.ALARMSTR)) { - final Map paramsMap = request.getParameterMap(); + try { + final String resourcePath = VtnServiceCommonUtil + .getResourceURI(request.getRequestURI()); + final String contentType = VtnServiceCommonUtil + .getContentType(request); + if (resourcePath.equals(ApplicationConstants.ALARMSTR)) { + final Map paramsMap = request + .getParameterMap(); if (null != paramsMap && !paramsMap.isEmpty()) { serviceRequest = new JsonObject(); - serviceRequest = DataConverter.convertMapToJson(paramsMap, serviceRequest); + serviceRequest = DataConverter.convertMapToJson(paramsMap, + serviceRequest); } } else { - serviceRequest = new VtnServiceWebUtil().prepareRequestJson(request, contentType); + serviceRequest = new VtnServiceWebUtil().prepareRequestJson( + request, contentType); } - serviceResponse = vtnServiceWebAPIController.put(VtnServiceWebUtil.prepareHeaderJson(request) ,serviceRequest, this.resourcePath); - responseString = DataConverter.getConvertedResponse(serviceResponse, contentType); - LOG.trace("PUT method of web api handler ends #put()"); - } catch (IOException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); - } - return responseString; + final VtnServiceWebAPIController vtnServiceWebAPIController = new VtnServiceWebAPIController(); + serviceResponse = vtnServiceWebAPIController.put( + VtnServiceWebUtil.prepareHeaderJson(request), + serviceRequest, resourcePath); + responseString = DataConverter.getConvertedResponse( + serviceResponse, contentType); + LOG.debug("responseString : " + responseString); + } catch (final IOException e) { + LOG.error("Internal server error occurred : " + e.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - + LOG.trace("Complete VtnServiceWebAPIHandler#put()"); + return responseString; + } /** - * Delete. This method will convert the httprequest to JSON format and then will validate the same for json syntax - * it will also decide whether the call is for JSON/XML by passed URI format. - * will prepare the session json also to take session for api call later. - * After getting the response it will convert the same in either format JSON/XML - * @param request the request + * Delete. This method will convert the httprequest to JSON format and then + * will validate the same for json syntax it will also decide whether the + * call is for JSON/XML by passed URI format. will prepare the session json + * also to take session for api call later. After getting the response it + * will convert the same in either format JSON/XML + * + * @param request + * the request * @return the string - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public String delete(final HttpServletRequest request) throws VtnServiceWebAPIException{ + public String delete(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIHandler#delete()"); JSONObject serviceResponse = null; JsonObject serviceRequest = new JsonObject(); - String responseString = null; - LOG.trace("DELETE method of web api handler starts #delete()"); - this.resourcePath = VtnServiceCommonUtil.getResourceURI(request.getRequestURI()); - this.contentType = VtnServiceCommonUtil.getContentType(request.getRequestURI()); - Map paramsMap = request.getParameterMap(); - if(null != paramsMap && !paramsMap.isEmpty()){ - serviceRequest = DataConverter.convertMapToJson(paramsMap, serviceRequest); - serviceResponse = vtnServiceWebAPIController.delete(VtnServiceWebUtil.prepareHeaderJson(request), serviceRequest, this.resourcePath); - }else{ - serviceResponse = vtnServiceWebAPIController.delete(VtnServiceWebUtil.prepareHeaderJson(request), this.resourcePath); - } - responseString = DataConverter.getConvertedResponse(serviceResponse, contentType); - LOG.trace("DELETE method of web api handler ends#delete()"); + String responseString = null; + final String resourcePath = VtnServiceCommonUtil.getResourceURI(request + .getRequestURI()); + final String contentType = VtnServiceCommonUtil.getContentType(request); + final Map paramsMap = request.getParameterMap(); + final VtnServiceWebAPIController vtnServiceWebAPIController = new VtnServiceWebAPIController(); + if (null != paramsMap && !paramsMap.isEmpty()) { + serviceRequest = DataConverter.convertMapToJson(paramsMap, + serviceRequest); + serviceResponse = vtnServiceWebAPIController.delete( + VtnServiceWebUtil.prepareHeaderJson(request), + serviceRequest, resourcePath); + } else { + serviceResponse = vtnServiceWebAPIController.delete( + VtnServiceWebUtil.prepareHeaderJson(request), resourcePath); + } + responseString = DataConverter.getConvertedResponse(serviceResponse, + contentType); + LOG.debug("responseString : " + responseString); + LOG.trace("Complete VtnServiceWebAPIHandler#delete()"); return responseString; - } - + } + /** - * Validate.This method will validate for the header part coming with the request and check for the authentication and authorization - * It will also check for valid URI, if URI is not valid then it will fail the call and return forbidden error. - * - * @param request the request - * @throws VtnServiceWebAPIException the vtn service web api exception + * Validate.This method will validate for the header part coming with the + * request and check for the authentication and authorization It will also + * check for valid URI, if URI is not valid then it will fail the call and + * return forbidden error. + * + * @param request + * the request + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public void validate(final HttpServletRequest request) throws VtnServiceWebAPIException { - LOG.trace("validate method of web api handler starts #validate()"); - if(!VtnServiceCommonUtil.validateURI(request.getRequestURI(), request.getContentType())){ - throw new VtnServiceWebAPIException(ApplicationConstants.FORBIDDEN_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.FORBIDDEN_ERROR)); + public void validate(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIHandler#validate()"); + if (!VtnServiceCommonUtil.validateMediaType(request)) { + LOG.error("Invalid media type"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_UNSUPPORTED_MEDIA_TYPE.getCode()); + } + + // in case of GET method check the validity of Accept header + if (request.getMethod().equalsIgnoreCase( + ApplicationConstants.GET_METHOD_NAME)) { + final String acceptHeaderValue = request + .getHeader(ApplicationConstants.HTTP_HEADER_ACCEPT); + LOG.debug("Accept header's value : " + acceptHeaderValue); + if (acceptHeaderValue != null) { + String acceptHeader[] = acceptHeaderValue + .split(ApplicationConstants.SEMI_COLON); + if (acceptHeader.length > 0) { + if (acceptHeader[0] + .equalsIgnoreCase(ApplicationConstants.DEFAULT_ACCEPT) + || acceptHeader[0] + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_JSON + .getContentType()) + || acceptHeader[0] + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_XML + .getContentType())) { + LOG.info("Valid value for Accept"); + } else { + LOG.error("Invalid accept hedare value"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_NOT_ACCEPTABLE.getCode()); + } + } else { + LOG.error("Invalid accept hedare value"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_NOT_ACCEPTABLE.getCode()); + } + } + } + + final JsonObject headerInfo = VtnServiceWebUtil + .prepareHeaderJson(request); + final SessionBean bean = VtnServiceCommonUtil + .getSessionObject(headerInfo); + + if (!VtnServiceCommonUtil.authoriseUser(bean, request.getMethod())) { + LOG.error("Unautorized user"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_FORBIDDEN.getCode()); + } + + // perform extra checks for restriction of XML information in OpenStack + // operations + if (VtnServiceCommonUtil.isOpenStackResurce(request)) { + restrictXmlforOpenStack(request); + } + + LOG.trace("Complete VtnServiceWebAPIHandler#validate()"); + } + + /** + * Check for XML restrictions in Content-Type, Accept and URI extension + * + * @param request + * @throws VtnServiceWebAPIException + */ + private void restrictXmlforOpenStack(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebAPIHandler#restrictXmlforOpenStack()"); + if (request.getMethod().equalsIgnoreCase( + ApplicationConstants.POST_METHOD_NAME) + || request.getMethod().equalsIgnoreCase( + ApplicationConstants.PUT_METHOD_NAME)) { + String contentType = request.getContentType().split( + ApplicationConstants.SEMI_COLON)[0]; + if (contentType.equalsIgnoreCase(ContentTypeEnum.APPLICATION_XML + .getContentType())) { + LOG.error("Invalid media type for OpenStack operations"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_UNSUPPORTED_MEDIA_TYPE.getCode()); } - final JsonObject headerInfo = VtnServiceWebUtil.prepareHeaderJson(request); - final SessionBean bean = VtnServiceCommonUtil.getSessionObject(headerInfo); - if(!VtnServiceCommonUtil.authoriseUser(bean, request.getMethod())){ - throw new VtnServiceWebAPIException(ApplicationConstants.USER_UNAUTHORISED_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.USER_UNAUTHORISED_ERROR)); + } + + // in case of GET method check the validity of Accept header + if (request.getMethod().equalsIgnoreCase( + ApplicationConstants.GET_METHOD_NAME)) { + final String acceptHeaderValue = request + .getHeader(ApplicationConstants.HTTP_HEADER_ACCEPT); + LOG.debug("Accept header's value : " + acceptHeaderValue); + if (acceptHeaderValue != null) { + String acceptHeader[] = acceptHeaderValue + .split(ApplicationConstants.SEMI_COLON); + if (acceptHeader.length > 0) { + if (acceptHeader[0] + .equalsIgnoreCase(ApplicationConstants.DEFAULT_ACCEPT) + || acceptHeader[0] + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_JSON + .getContentType())) { + LOG.info("Valid value for Accept"); + } else { + LOG.error("Invalid accept hedare value"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_NOT_ACCEPTABLE.getCode()); + } + } else { + LOG.error("Invalid accept hedare value"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_NOT_ACCEPTABLE.getCode()); + } } - LOG.trace("validate method of web api handler ends #validate()"); + } + String requestURI = request.getRequestURI(); + String finalURI; + if (null != requestURI + && requestURI.startsWith(ApplicationConstants.CONTEXTPATH)) { + finalURI = requestURI.replace(ApplicationConstants.CONTEXTPATH, + ApplicationConstants.BLANK_STR); + final int paramaStartIndex = finalURI + .indexOf(ApplicationConstants.QUESTION_MARK_CHAR); + if (paramaStartIndex != -1) { + finalURI = finalURI.substring(0, paramaStartIndex); + } + + final int extensionStartIndex = finalURI + .lastIndexOf(ApplicationConstants.DOT_REGEX); + if (extensionStartIndex != -1) { + final String extension = finalURI + .substring(extensionStartIndex); + if (null != extension + && (extension.equals(ApplicationConstants.TYPE_XML) || extension + .equals(ApplicationConstants.TYPE_JSON))) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_CUSTOM_NOT_FOUND.getCode()); + } + } + } + LOG.trace("Complete VtnServiceWebAPIHandler#restrictXmlforOpenStack()"); } - - } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/package-info.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/package-info.java new file mode 100644 index 00000000..9832bad2 --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/services/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Service handler(Servlet helper) class and controller class for java API call . + */ +package org.opendaylight.vtn.webapi.services; + diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/ConfigurationManager.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/ConfigurationManager.java index 5504d7eb..ec8434c6 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/ConfigurationManager.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/ConfigurationManager.java @@ -1,159 +1,197 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.utils; -import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; +import org.opendaylight.vtn.webapi.enums.HttpErrorCodeEnum; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; - /** * The Class ConfigurationManager. - * - * This class is used to initialize and Read/Write properties in the config file. - * Values in config file are stored as key-value pairs. + * + * This class is used to initialize and Read/Write properties in the config + * file. Values in config file are stored as key-value pairs. */ public final class ConfigurationManager { - + /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(ConfigurationManager.class.getName()); + private static final Logger LOG = Logger + .getLogger(ConfigurationManager.class.getName()); /** The conf manager. */ private static ConfigurationManager confManager; - + /** The access configuration. */ private static Properties accessConfiguration; - + /** The pwd configuration. */ private static Properties pwdConfiguration; /** The web api configuration. */ private static Properties webAPIConfiguration; + /** * Instantiates a new configuration manager. - * - * @throws VtnServiceWebAPIException the vtn service exception + * + * @throws VtnServiceWebAPIException + * the vtn service exception */ private ConfigurationManager() throws VtnServiceWebAPIException { - LOG.trace("Initialising Configuration Manager"); + LOG.trace("Start ConfigurationManager#ConfigurationManager()"); initConfiguration(); - LOG.trace("Configuration Manager initialised"); + LOG.trace("Complete ConfigurationManager#ConfigurationManager()"); } - + /** * Gets the single instance of ConfigurationManager. - * + * * @return single instance of ConfigurationManager - * @throws VtnServiceWebAPIException the vtn service exception + * @throws VtnServiceWebAPIException + * the vtn service exception */ - public synchronized static ConfigurationManager getInstance() throws VtnServiceWebAPIException { - LOG.trace("Getting instance of configuration manager"); - if(null == confManager){ + public synchronized static ConfigurationManager getInstance() + throws VtnServiceWebAPIException { + LOG.trace("Start ConfigurationManager#getInstance()"); + if (null == confManager) { confManager = new ConfigurationManager(); - } - LOG.trace("Returning instance of configuration manager"); + } + LOG.trace("Complete ConfigurationManager#getInstance()"); return confManager; } - + /** - * Initialize the configuration part and will store the same in configuration objects - * @throws VtnServiceWebAPIException the vtn service exception + * Initialize the configuration part and will store the same in + * configuration objects + * + * @throws VtnServiceWebAPIException + * the vtn service exception */ - public static void initConfiguration() throws VtnServiceWebAPIException{ - LOG.trace("Initilising configuration properties.."); - try{ + public static void initConfiguration() throws VtnServiceWebAPIException { + LOG.trace("Start ConfigurationManager#initConfiguration()"); + try { accessConfiguration = new Properties(); - accessConfiguration.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(ApplicationConstants.ACCESS_PROPERTY_PATH)); - - /*pwdConfiguration = new Properties(); - pwdConfiguration.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(ApplicationConstants.PWD_PROPERTY_PATH));*/ - + accessConfiguration.load(Thread + .currentThread() + .getContextClassLoader() + .getResourceAsStream( + ApplicationConstants.ACCESS_PROPERTY_PATH)); + + pwdConfiguration = new Properties(); + pwdConfiguration + .load(Thread + .currentThread() + .getContextClassLoader() + .getResourceAsStream( + ApplicationConstants.PWD_PROPERTY_PATH)); + webAPIConfiguration = new Properties(); - webAPIConfiguration.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(ApplicationConstants.WEBAPI_CONF_PROPERTY_PATH)); - LOG.trace("configuration properties initialised successfully."); - }catch (FileNotFoundException exception) { - LOG.error(exception.getMessage()); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.INTERNAL_SERVER_ERROR)); - }catch (IOException exception) { - LOG.error(exception.getMessage()); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.INTERNAL_SERVER_ERROR)); + webAPIConfiguration.load(Thread + .currentThread() + .getContextClassLoader() + .getResourceAsStream( + ApplicationConstants.WEBAPI_CONF_PROPERTY_PATH)); + } catch (final IOException exception) { + LOG.error("VTN Service configuration initialization error : " + + exception.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } + LOG.trace("Complete ConfigurationManager#initConfiguration()"); } - - /** - * This method is used to read properties file and returns value based on key. - * - * @param key - Represents the key for which value to be retrieved. - * @return value - Represents corresponding value fetched from config file. - * @throws VtnServiceWebAPIException the vtn service exception - */ - public String getAccessProperty(final String key) throws VtnServiceWebAPIException { - LOG.trace("getAccessProperty start # getAccessProperty()"); - final String value = accessConfiguration.getProperty(key); - //Check if value retrieved is null + + /** + * This method is used to read properties file and returns value based on + * key. + * + * @param key + * - Represents the key for which value to be retrieved. + * @return value - Represents corresponding value fetched from config file. + * @throws VtnServiceWebAPIException + * the vtn service exception + */ + public String getAccessProperty(final String key) + throws VtnServiceWebAPIException { + LOG.trace("Start ConfigurationManager#getAccessProperty()"); + final String value = accessConfiguration.getProperty(key); + // Check if value retrieved is null if (null == value || value.isEmpty()) { - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.INTERNAL_SERVER_ERROR)); + LOG.error("Configuration value not found for Key : " + key); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - LOG.trace("getAccessProperty end # getAccessProperty()"); + LOG.debug("Key : " + key + " Value : " + value); + LOG.trace("Complete ConfigurationManager#getAccessProperty()"); return value; } - + /** * Gets the pWD resource file property. - * - * @param key the key + * + * @param key + * the key * @return the pWD property - * @throws VtnServiceWebAPIException the vtn service exception + * @throws VtnServiceWebAPIException + * the vtn service exception */ - public String getPWDProperty(final String key) throws VtnServiceWebAPIException { - LOG.trace("getPWDProperty start # getPWDProperty()"); - final String value = pwdConfiguration.getProperty(key); - //Check if value retrieved is null + public String getPWDProperty(final String key) + throws VtnServiceWebAPIException { + LOG.trace("Start ConfigurationManager#getPWDProperty()"); + final String value = pwdConfiguration.getProperty(key); + // Check if value retrieved is null if (null == value || value.isEmpty()) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.INTERNAL_SERVER_ERROR)); + LOG.error("Configuration value not found for Key : " + key); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - LOG.trace("getPWDProperty end # getPWDProperty()"); + LOG.debug("Key : " + key + " Value : " + value); + LOG.trace("Complete ConfigurationManager#getPWDProperty()"); return value; } - + /** - * Gets the conf property from webAPIConfiguration object , This object will store the configuration - * related to Web API flow only. - * - * @param key the key + * Gets the conf property from webAPIConfiguration object , This object will + * store the configuration related to Web API flow only. + * + * @param key + * the key * @return the conf property - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public String getConfProperty(final String key) throws VtnServiceWebAPIException { - LOG.trace("getConfProperty start # getConfProperty()"); - final String value = webAPIConfiguration.getProperty(key); - //Check if value retrieved is null - if (null == value || value.isEmpty()) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, ApplicationConstants.DEFAULT_ERROR_DESCRIPTION); + public String getConfProperty(final String key) + throws VtnServiceWebAPIException { + LOG.trace("Start ConfigurationManager#getConfProperty()"); + final String value = webAPIConfiguration.getProperty(key); + // Check if value retrieved is null + if (null == value) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - LOG.trace("getConfProperty end # getConfProperty()"); + LOG.trace("Complete ConfigurationManager#getConfProperty()"); return value; } /** - * This method will destroy the objects which are still opened or live in the memory to flush out the same + * This method will destroy the objects which are still opened or live in + * the memory to flush out the same */ @Override public void finalize() { - confManager = null; - accessConfiguration =null; - pwdConfiguration = null; - webAPIConfiguration = null; + LOG.trace("Start ConfigurationManager#finalize()"); + confManager = null; + accessConfiguration = null; + pwdConfiguration = null; + webAPIConfiguration = null; + LOG.trace("Complete ConfigurationManager#finalize()"); } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/DataConverter.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/DataConverter.java index 1ddc740e..bc253375 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/DataConverter.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/DataConverter.java @@ -1,15 +1,17 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.utils; import java.util.Arrays; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Random; import java.util.Set; @@ -21,115 +23,167 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; import org.opendaylight.vtn.webapi.enums.ContentTypeEnum; +import org.opendaylight.vtn.webapi.enums.HttpErrorCodeEnum; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; /** - * The Class DataConverter.This class will be used for conversion part of request and response as well - * If the request will be in format of XML then needs to convert it in JSON otherwise the same JSON will be - * passed as request object + * The Class DataConverter.This class will be used for conversion part of + * request and response as well If the request will be in format of XML then + * needs to convert it in JSON otherwise the same JSON will be passed as request + * object * */ public final class DataConverter { /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(DataConverter.class.getName()); - + private static final Logger LOG = Logger.getLogger(DataConverter.class + .getName()); + /** * Instantiates a new data converter. */ private DataConverter() { } - + /** * Convert data to json. - * - * @param rawRequestString the raw data - * @param contentType the data type + * + * @param rawRequestString + * the raw data + * @param contentType + * the data type * @return the json object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public static JsonObject getConvertedRequestObject(String rawRequestString, final String contentType) throws VtnServiceWebAPIException{ - JsonObject convertedObj=null; - final JsonParser parser = new JsonParser(); - try{ - LOG.trace("converting request string to JSON Object #getConvertedRequestObject()"); - if(ContentTypeEnum.APPLICATION_XML.getContentType().equals(contentType)){ - final Random random = new Random(); - String randomString = String.valueOf(random.nextInt()); - rawRequestString = rawRequestString.replaceAll(ApplicationConstants.DOT_ZERO, randomString + ApplicationConstants.SESSION_TYPE); - org.json.JSONObject jsonObject = XML.toJSONObject(rawRequestString); - if(ApplicationConstants.vtepgroup.equals(jsonObject.keys().next().toString())){ - XMLTransformationUtil.preProcessJson(jsonObject); + public static JsonObject getConvertedRequestObject(String rawRequestString, + final String contentType) throws VtnServiceWebAPIException { + LOG.trace("Start DataConverter#getConvertedRequestObject()"); + JsonObject convertedObj = null; + final JsonParser parser = new JsonParser(); + try { + if (ContentTypeEnum.APPLICATION_XML.getContentType().equals( + contentType)) { + final Random random = new Random(); + final String randomString = String.valueOf(random.nextInt()); + rawRequestString = rawRequestString.replaceAll( + ApplicationConstants.DOT_ZERO, randomString + + ApplicationConstants.SESSION_TYPE); + final org.json.JSONObject jsonObject = XML + .toJSONObject(rawRequestString); + if (ApplicationConstants.vtepgroup.equals(jsonObject.keys() + .next().toString())) { + XMLTransformationUtil.preProcessJson(jsonObject); + } + LOG.debug("Json before parsing : " + jsonObject); + convertedObj = (JsonObject) parser.parse(jsonObject.toString() + .replaceAll( + randomString + + ApplicationConstants.SESSION_TYPE, + ApplicationConstants.DOT_ZERO)); + } else if (ContentTypeEnum.APPLICATION_JSON.getContentType() + .equals(contentType)) { + convertedObj = (JsonObject) parser.parse(rawRequestString); + } else { + LOG.error("Content-Type is not valid"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_BAD_REQUEST.getCode()); } - LOG.debug("Json before parsing : " + jsonObject); - convertedObj = (JsonObject) parser.parse(jsonObject.toString().replaceAll(randomString + ApplicationConstants.SESSION_TYPE, ApplicationConstants.DOT_ZERO)); - }else{ - convertedObj = (JsonObject) parser.parse(rawRequestString); - } - }catch (JsonSyntaxException jsonSyntaxException) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.BAD_REQUEST_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.BAD_REQUEST_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.BAD_REQUEST_ERROR)); + LOG.debug("Request JSON object for Java API #" + convertedObj); + } catch (JsonSyntaxException e) { + LOG.error("Request Syntax Error : " + e); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_BAD_REQUEST.getCode()); } catch (JSONException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.BAD_REQUEST_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.BAD_REQUEST_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.BAD_REQUEST_ERROR)); + LOG.error("Request Syntax Error : " + e); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_BAD_REQUEST.getCode()); + } catch (NoSuchElementException e) { + LOG.error("Request Syntax Error : " + e); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_BAD_REQUEST.getCode()); } - LOG.trace("converting request string to JSON Object completed #getConvertedRequestObject()"); - LOG.trace("Request JSON object for Java API #" +convertedObj); + LOG.trace("Complete DataConverter#getConvertedRequestObject()"); return convertedObj; } - + /** * Convert map to json. - * - * @param queryStringMap the query string map + * + * @param queryStringMap + * the query string map * @return the json object - * @throws VtnServiceWebAPIException + * @throws VtnServiceWebAPIException */ - public static JsonObject convertMapToJson(final Map queryStringMap, final JsonObject serviceRequest) throws VtnServiceWebAPIException{ - LOG.trace("converting query String Map to JSON Object #convertMapToJson()"); - final Set queryStringKeySet = queryStringMap.keySet(); - JSONObject json = null; - try{ - json = new JSONObject(serviceRequest.toString()); - for (String key : queryStringKeySet) { - final String[] valueList = queryStringMap.get(key); - if(null != valueList && valueList.length > ApplicationConstants.ONE){ - json.put(key, Arrays.asList(valueList)); - }else{ - json.put(key, valueList[ApplicationConstants.ZERO]); + public static JsonObject convertMapToJson( + final Map queryStringMap, + final JsonObject serviceRequest) throws VtnServiceWebAPIException { + LOG.trace("Start DataConverter#convertMapToJson()"); + JsonObject mapJson = null; + final Set queryStringKeySet = queryStringMap.keySet(); + JSONObject json = null; + try { + json = new JSONObject(serviceRequest.toString()); + for (final String key : queryStringKeySet) { + final String[] valueList = queryStringMap.get(key); + if (valueList.length == 1 + && valueList[0] + .equalsIgnoreCase(ApplicationConstants.BLANK_STR)) { + LOG.error("URI parameter containing no values : " + key); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_BAD_REQUEST.getCode()); + } + if (key.equalsIgnoreCase(ApplicationConstants.OP) + || key.equalsIgnoreCase(ApplicationConstants.TARGETDB)) { + LOG.debug("Parameter not required to be added for : " + key); + } else { + if (null != valueList + && valueList.length > ApplicationConstants.ONE) { + json.put(key, Arrays.asList(valueList)); + } else { + json.put(key, valueList[ApplicationConstants.ZERO]); + } + } } + mapJson = (JsonObject) new JsonParser().parse(json.toString()); + LOG.debug("Coverted JSON from Map parameters : " + mapJson); + } catch (final JSONException e) { + LOG.error("Json syntax error : " + e.getMessage()); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - }catch (JSONException je) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.INTERNAL_SERVER_ERROR)); - } - LOG.trace("converting query String Map to JSON Object completed#convertMapToJson()"); - return (JsonObject) new JsonParser().parse(json.toString()); - + LOG.trace("Complete DataConverter#convertMapToJson()"); + return mapJson; } - + /** * Convert json to xml. - * - * @param responseJson the response json - * @param requiredContentType the required content type + * + * @param responseJson + * the response json + * @param requiredContentType + * the required content type * @return the string - * @throws VtnServiceWebAPIException + * @throws VtnServiceWebAPIException */ - public static String getConvertedResponse(final JSONObject responseJson, final String requiredContentType) throws VtnServiceWebAPIException { + public static String getConvertedResponse(final JSONObject responseJson, + final String requiredContentType) throws VtnServiceWebAPIException { + LOG.trace("Start DataConverter#getConvertedResponse()"); String responseString = null; - LOG.trace("converting response JSON to String #getConvertedResponse()"); - LOG.debug("Json : " + responseJson); - try{ + LOG.debug("Json : " + responseJson + " Content-type : " + + requiredContentType); + try { if (null != responseJson) { responseString = responseJson.toString(); // conversion is required only for XML type response type - if (ContentTypeEnum.APPLICATION_XML.getContentType().equals(requiredContentType)) { + if (ContentTypeEnum.APPLICATION_XML.getContentType().equals( + requiredContentType)) { // modify the json object to remove null and empty nested // json and arrays - JSONObject modifiedJson = new JSONObject(responseJson.toString() + final JSONObject modifiedJson = new JSONObject(responseJson + .toString() .replace(ApplicationConstants.NULL_STRING, ApplicationConstants.EMPTY_JSON) .replace(ApplicationConstants.EMPTY_JSON, @@ -137,25 +191,23 @@ public final class DataConverter { .replace(ApplicationConstants.EMPTY_JSON_ARRAY, ApplicationConstants.DUMMY_JSON)); LOG.debug("Modified Json : " + modifiedJson.toString()); - String xml = XMLTransformationUtil.convertJsonToXml(modifiedJson); + final String xml = XMLTransformationUtil + .convertJsonToXml(modifiedJson); LOG.debug("Converted XML : " + xml); // remove non-required dummy xml attributes - responseString = XMLTransformationUtil.convertAllAttributesToElements(xml).replace( + responseString = XMLTransformationUtil + .convertAllAttributesToElements(xml).replace( ApplicationConstants.DUMMY_XML, - ApplicationConstants.EMPTY_STRING); + ApplicationConstants.BLANK_STR); } - LOG.debug("Response String : " + responseString); } - }catch (JSONException e) { - LOG.error(e.getMessage()); - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.INTERNAL_SERVER_ERROR)); - }catch (Exception e) { - LOG.error(e.getMessage()); - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.INTERNAL_SERVER_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.INTERNAL_SERVER_ERROR)); + LOG.debug("Response String : " + responseString); + } catch (final Exception e) { + LOG.error("Internal server error occurred : " + e); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR.getCode()); } - LOG.trace("converting response JSON to String completed #getConvertedResponse()"); + LOG.trace("Complete DataConverter#getConvertedResponse()"); return responseString; } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/InitManager.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/InitManager.java index 061ddfd1..446f7018 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/InitManager.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/InitManager.java @@ -1,11 +1,12 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.utils; import org.opendaylight.vtn.core.util.Logger; @@ -18,65 +19,69 @@ import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; public final class InitManager { /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(InitManager.class.getName()); + private static final Logger LOG = Logger.getLogger(InitManager.class + .getName()); /** The init manager. */ private static InitManager initMngr; - + /** * Instantiates a new inits the manager. - * - * @throws VtnServiceWebAPIException the vtn service exception + * + * @throws VtnServiceWebAPIException + * the vtn service exception */ private InitManager() throws VtnServiceWebAPIException { - LOG.trace("Initilizing configurtation and java api #InitManager"); + LOG.trace("Start InitManager#InitManager()"); initializeConfiguration(); - initializeJavaAPI(); - LOG.trace("Configurtation and java api initialized successfully #InitManager()"); + initializeJavaAPI(); + LOG.trace("Complete InitManager#InitManager()"); } - + /** * Initialize. - * + * * @return the inits the manager - * @throws VtnServiceWebAPIException the vtn service exception + * @throws VtnServiceWebAPIException + * the vtn service exception */ - public synchronized static InitManager initialize() throws VtnServiceWebAPIException { - LOG.trace("creating single instance for initManager #initialize()"); - if(initMngr == null){ + public synchronized static InitManager initialize() + throws VtnServiceWebAPIException { + LOG.trace("Start InitManager#initialize()"); + if (initMngr == null) { initMngr = new InitManager(); } + LOG.trace("Complete InitManager#initialize()"); return initMngr; } - - + /** * Initialize java api. */ private void initializeJavaAPI() { - LOG.trace("Initializing Java API #initializeJavaAPI()"); + LOG.trace("Start InitManager#initializeJavaAPI()"); VtnServiceInitManager.init(); - LOG.trace("Java API Initialized #initializeJavaAPI()"); + LOG.trace("Complete InitManager#initializeJavaAPI()"); } - - /** * Initialize configuration. - * - * @throws VtnServiceWebAPIException the vtn service web api exception + * + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ private void initializeConfiguration() throws VtnServiceWebAPIException { - LOG.trace("Initializing web API configuration #initializeConfiguration()"); + LOG.trace("Start InitManager#initializeConfiguration()"); ConfigurationManager.initConfiguration(); - LOG.trace("Initializing web API configuration #initializeConfiguration()"); + LOG.trace("Complete InitManager#initializeConfiguration()"); } - /** * This method will free the memory which is used by init manager instance */ @Override public void finalize() { + LOG.trace("Start InitManager#finalize()"); initMngr = null; + LOG.trace("Complete InitManager#finalize()"); } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceCommonUtil.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceCommonUtil.java index 4ba5180d..49993eac 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceCommonUtil.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceCommonUtil.java @@ -1,20 +1,26 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.utils; import java.util.Arrays; import java.util.List; +import javax.servlet.http.HttpServletRequest; + import com.google.gson.JsonObject; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.javaapi.RestResource; +import org.opendaylight.vtn.javaapi.resources.AbstractResource; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; import org.opendaylight.vtn.webapi.enums.ContentTypeEnum; +import org.opendaylight.vtn.webapi.enums.HttpErrorCodeEnum; import org.opendaylight.vtn.webapi.enums.SessionEnum; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; import org.opendaylight.vtn.webapi.pojo.SessionBean; @@ -23,342 +29,457 @@ import org.opendaylight.vtn.webapi.pojo.SessionBean; * The Class VtnServiceCommonUtil. */ public final class VtnServiceCommonUtil { - + /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(VtnServiceCommonUtil.class.getName()); + private static final Logger LOG = Logger + .getLogger(VtnServiceCommonUtil.class.getName()); /** * Instantiates a new vtn service common util. */ private VtnServiceCommonUtil() { - } + /** - * Method getErrorDescription - Below method is used to get error description based on error code. - * - * @param errorCode the error code + * Method getErrorDescription - Below method is used to get error + * description based on error code. + * + * @param errorCode + * the error code + * @param description + * the description * @return String - * @throws VtnServiceWebAPIException the vtn service exception */ - public static String getErrorDescription(final String errorCode) throws VtnServiceWebAPIException { - LOG.trace(" Getting error description on the basis of error code #getErrorDescription()"); - return ConfigurationManager.getInstance().getConfProperty(ApplicationConstants.VTN_ERRORCODE_PREFIX + errorCode); + public static String logErrorDetails(final int errorCode) { + LOG.trace("Start VtnServiceCommonUtil#logErrorDetails()"); + final String errorDetails = new StringBuilder().append(errorCode) + .append(ApplicationConstants.HYPHEN) + .append(getErrorMessage(errorCode)).toString(); + LOG.error(errorDetails); + LOG.trace("Complete VtnServiceCommonUtil#logErrorDetails()"); + return errorDetails; } - + /** - * Method getErrorDescription - Below method is used to get error description based on error code. - * - * @param errorCode the error code - * @param description the description - * @return String + * @param errorCode + * @return */ - public static String logErrorDetails(final String errorCode) { - LOG.trace(" Getting error description by appending error code and description #getErrorDescription()"); - String errorDetails = null; - try{ - errorDetails = new StringBuilder().append(errorCode).append("-").append(ConfigurationManager.getInstance().getConfProperty(ApplicationConstants.VTN_ERRORCODE_PREFIX + errorCode)).toString(); - }catch (Exception e) { - LOG.error(logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); + public static String getErrorMessage(final int errorCode) { + String errorMessage; + if (errorCode == HttpErrorCodeEnum.UNC_BAD_REQUEST.getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_BAD_REQUEST.getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_FORBIDDEN.getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_FORBIDDEN.getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_METHOD_NOT_ALLOWED + .getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_METHOD_NOT_ALLOWED + .getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_NOT_ACCEPTABLE.getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_NOT_ACCEPTABLE.getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_NOT_FOUND.getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_NOT_FOUND.getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_SERVICE_UNAVAILABLE + .getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_SERVICE_UNAVAILABLE + .getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_STATUS_OK.getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_STATUS_OK.getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_UNAUTHORIZED.getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_UNAUTHORIZED.getMessage(); + } else if (errorCode == HttpErrorCodeEnum.UNC_UNSUPPORTED_MEDIA_TYPE + .getCode()) { + errorMessage = HttpErrorCodeEnum.UNC_UNSUPPORTED_MEDIA_TYPE + .getMessage(); + } else { + errorMessage = HttpErrorCodeEnum.UNC_INTERNAL_SERVER_ERROR + .getMessage(); } - return errorDetails; + return errorMessage; } - - + /** - * Authenticate user. - * - * @param headerInfo the header info - * @param httpMethod the http method + * Authorize user. + * + * @param bean + * the bean + * @param httpMethod + * the http method * @return true, if successful - * @throws VtnServiceWebAPIException the vtn service exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - /*public static boolean authenticateUser(final JsonObject headerInfo, final String httpMethod) throws VtnServiceWebAPIException{ - LOG.trace(" Authenticating user #authenticateUser() :starts"); - boolean authenticationStatus= false; - String role = null; - String password = null; - final SessionBean bean = getSessionObject(headerInfo); - final ConfigurationManager configurationManager = ConfigurationManager.getInstance(); - final String roleAndPassString = configurationManager.getPWDProperty(bean.getUserName()); - if(null != roleAndPassString && !roleAndPassString.isEmpty() && roleAndPassString.indexOf(ApplicationConstants.COLON) != -1){ - String[] roleAndPassArr = roleAndPassString.split(ApplicationConstants.COLON); - role = roleAndPassArr[ApplicationConstants.ZERO]; - password = roleAndPassArr[ApplicationConstants.ONE]; - } - if(authoriseUser(bean, httpMethod)){ - authenticationStatus = checkRoleAccessability(role, httpMethod, password, bean); - } - LOG.trace(" Authenticating user #authenticateUser() :ends"); - return authenticationStatus; - }*/ - - /** - * Authorise user. - * - * @param bean the bean - * @param httpMethod the http method - * @return true, if successful - * @throws VtnServiceWebAPIException the vtn service web api exception - */ - public static boolean authoriseUser(SessionBean bean, String httpMethod) throws VtnServiceWebAPIException{ - boolean ipStatus = false; - ConfigurationManager configurationManager = ConfigurationManager.getInstance(); - LOG.trace(" Authorizinging user #authoriseUser() : starts"); - final String ipAddresses = configurationManager.getAccessProperty(ApplicationConstants.ACCESS_ALL); - final String httpMethodAccessIpAddress = configurationManager.getAccessProperty(httpMethod.toUpperCase()); - if(ipAddresses != null && ApplicationConstants.WILD_CARD_STAR.equals(ipAddresses.trim())){ + public static boolean authoriseUser(SessionBean bean, String httpMethod) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceCommonUtil#authoriseUser()"); + boolean ipStatus = false; + final ConfigurationManager configurationManager = ConfigurationManager + .getInstance(); + final String ipAddresses = configurationManager + .getAccessProperty(ApplicationConstants.ACCESS_ALL); + LOG.debug("Authorized IP Address from Configuration : " + ipAddresses); + final String httpMethodAccessIpAddress = configurationManager + .getAccessProperty(httpMethod.toUpperCase()); + LOG.debug("Authorized methods from Configuration : " + ipAddresses); + + if (ipAddresses != null + && ApplicationConstants.WILD_CARD_STAR.equals(ipAddresses + .trim())) { ipStatus = true; - } - else if(ipAddresses.indexOf(bean.getIpAddress()) != -1){ + } else if (ipAddresses.indexOf(bean.getIpAddress()) != -1) { ipStatus = true; - } - else if(null != httpMethodAccessIpAddress && !httpMethodAccessIpAddress.isEmpty() && ApplicationConstants.WILD_CARD_STAR.equals(httpMethodAccessIpAddress.trim())){ + } else if (null != httpMethodAccessIpAddress + && !httpMethodAccessIpAddress.isEmpty() + && ApplicationConstants.WILD_CARD_STAR + .equals(httpMethodAccessIpAddress.trim())) { ipStatus = true; - } - else if(null != httpMethodAccessIpAddress && !httpMethodAccessIpAddress.isEmpty() && httpMethodAccessIpAddress.indexOf(bean.getIpAddress()) != -1){ + } else if (null != httpMethodAccessIpAddress + && !httpMethodAccessIpAddress.isEmpty() + && httpMethodAccessIpAddress.indexOf(bean.getIpAddress()) != -1) { ipStatus = true; } - - LOG.trace(" Authorizinging user #authoriseUser() : ends"); - return ipStatus; - } - - /** - * Check role accessability. - * - * @param role the role - * @param httpMethod the http method - * @param password the password - * @param bean the bean - * @return true, if successful - * @throws VtnServiceWebAPIException the vtn service web api exception - */ - /* private static boolean checkRoleAccessability(final String role, final String httpMethod, final String password, final SessionBean bean) throws VtnServiceWebAPIException { - LOG.trace("Validating role and accessability of the user : starts"); - boolean authenticationStatus = false; - if(VtnServiceWebUtil.checkStringForNullOrEmpty(role) && ApplicationConstants.ROLE_ADMIN.equals(role) && (VtnServiceWebUtil.checkStringForNullOrEmpty(password) && password.equals(convertPasswordStrToMd5Str(bean.getPassword())))){ - authenticationStatus = true; - }else if(VtnServiceWebUtil.checkStringForNullOrEmpty(role) && ApplicationConstants.ROLE_OPERATOR.equals(role) && httpMethod.equalsIgnoreCase(ApplicationConstants.HTTP_GET) && (VtnServiceWebUtil.checkStringForNullOrEmpty(password) && password.equals(bean.getPassword()))){ - authenticationStatus = true; - } - LOG.trace("Validating role and accessability of the user : ends"); - return authenticationStatus; - }*/ + LOG.debug("Authorize User Result : " + ipStatus); + LOG.trace("Complete VtnServiceCommonUtil#authoriseUser()"); + return ipStatus; + } /** * Gets the session from json. - * - * @param sessionObjRes the session obj res + * + * @param sessionObjRes + * the session obj res * @return the session from json */ public static long getSessionFromJson(final JsonObject sessionObjRes) { - LOG.trace("Getting session id from recieved session Json response : starts"); + LOG.trace("Start VtnServiceCommonUtil#getSessionFromJson()"); long sessionID = -1; - if(null != sessionObjRes){ - JsonObject sessionJson = sessionObjRes.getAsJsonObject(ApplicationConstants.SESSION_OBJECT); - sessionID = null != sessionJson && sessionJson.has(ApplicationConstants.SESSION_ID_STR) ? sessionJson.getAsJsonPrimitive(ApplicationConstants.SESSION_ID_STR).getAsLong() : -1; + if (null != sessionObjRes) { + final JsonObject sessionJson = sessionObjRes + .getAsJsonObject(ApplicationConstants.SESSION); + + if (null != sessionJson + && sessionJson.has(ApplicationConstants.SESSION_ID_STR)) { + sessionID = sessionJson.getAsJsonPrimitive( + ApplicationConstants.SESSION_ID_STR).getAsLong(); + } } - LOG.trace("Getting session id from recieved session Json response : ends"); + LOG.debug("Session Id : " + sessionID); + LOG.trace("Complete VtnServiceCommonUtil#getSessionFromJson()"); return sessionID; } /** * Gets the config id from json. - * - * @param configObjRes the config obj res + * + * @param configObjRes + * the config obj res * @return the config id from json */ public static long getConfigIdFromJson(final JsonObject configObjRes) { - LOG.trace("Getting config id from recieved config Json response : starts"); + LOG.trace("Start VtnServiceCommonUtil#getConfigIdFromJson()"); long configID = -1; - if(null != configObjRes){ - JsonObject configModeJson = configObjRes.getAsJsonObject(ApplicationConstants.CONFIG_MODE); - configID = null != configModeJson && configModeJson.has(ApplicationConstants.CONFIG_ID_STR) ? configModeJson.getAsJsonPrimitive(ApplicationConstants.CONFIG_ID_STR).getAsInt() : -1; + if (null != configObjRes) { + final JsonObject configModeJson = configObjRes + .getAsJsonObject(ApplicationConstants.CONFIG_MODE); + + if (null != configModeJson + && configModeJson.has(ApplicationConstants.CONFIG_ID_STR)) { + configID = configModeJson.getAsJsonPrimitive( + ApplicationConstants.CONFIG_ID_STR).getAsInt(); + } } - LOG.trace("Getting config id from recieved config Json response : ends"); + LOG.debug("Config Id : " + configID); + LOG.trace("Complete VtnServiceCommonUtil#getConfigIdFromJson()"); return configID; } - + /** * Gets the content type. - * - * @param uri the uri + * + * @param uri + * the uri * @return the content type */ - public static String getContentType(final String uri) { - LOG.trace("Getting content type from URI : starts"); - String contentType = ContentTypeEnum.APPLICATION_JSON.getContentType(); - if(null != uri && (uri.endsWith(ApplicationConstants.TYPE_XML))){ - contentType = ContentTypeEnum.APPLICATION_XML.getContentType(); + public static String getContentType(final HttpServletRequest request) { + LOG.trace("Start VtnServiceCommonUtil#getContentType()"); + + String contentType = null; + LOG.debug("Http Method : " + request.getMethod()); + if (request.getMethod().equalsIgnoreCase( + ApplicationConstants.GET_METHOD_NAME) + || request.getMethod().equalsIgnoreCase( + ApplicationConstants.DELETE_METHOD_NAME)) { + final String requestURI = request.getRequestURI(); + if (requestURI.lastIndexOf(ApplicationConstants.DOT_REGEX) != -1) { + String extension = requestURI.substring(requestURI + .lastIndexOf(ApplicationConstants.DOT_REGEX)); + if (extension.indexOf(ApplicationConstants.QUESTION_MARK_CHAR) != -1) { + extension = extension.substring(0, extension.indexOf("?")); + } + if (null != extension + && (extension + .equalsIgnoreCase(ApplicationConstants.TYPE_XML) || extension + .equalsIgnoreCase(ApplicationConstants.TYPE_JSON))) { + if (extension + .equalsIgnoreCase(ApplicationConstants.TYPE_XML)) { + contentType = ContentTypeEnum.APPLICATION_XML + .getContentType(); + } else if (extension + .equalsIgnoreCase(ApplicationConstants.TYPE_JSON)) { + contentType = ContentTypeEnum.APPLICATION_JSON + .getContentType(); + } + } + } + + if (null == contentType) { + final String acceptHeaderValue = request + .getHeader(ApplicationConstants.HTTP_HEADER_ACCEPT); + if (acceptHeaderValue != null) { + String acceptHeader[] = acceptHeaderValue + .split(ApplicationConstants.SEMI_COLON); + if (acceptHeader.length > 0 + && !acceptHeader[0] + .equalsIgnoreCase(ApplicationConstants.DEFAULT_ACCEPT)) { + if (acceptHeader[0] + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_JSON + .getContentType()) + || acceptHeader[0] + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_XML + .getContentType())) { + contentType = acceptHeader[0]; + } + } + } + } + + if (null == contentType) { + contentType = ContentTypeEnum.APPLICATION_JSON.getContentType(); + } + } else { + contentType = request.getContentType(); + if (contentType != null) { + String content[] = contentType + .split(ApplicationConstants.SEMI_COLON); + if (content.length > 0) { + contentType = content[0]; + } else { + contentType = ContentTypeEnum.APPLICATION_JSON + .getContentType(); + } + } } - LOG.trace("Getting content type from URI : ends"); - LOG.trace("Getting content type from URI :"+contentType); + LOG.debug("Content-Type : " + contentType); + LOG.trace("Complete VtnServiceCommonUtil#getContentType()"); return contentType; } - + /** * Validate uri. - * - * @param uri the uri - * @param contentType the content type + * + * @param uri + * the uri + * @param contentType + * the content type * @return true, if successful */ - public static boolean validateURI(final String uri, final String contentType){ - LOG.trace("validation for URI : starts"); - LOG.debug("uri : " + uri + " content-type : " + contentType); - boolean uriStatus = false; - if(null != uri && (uri.endsWith(ApplicationConstants.TYPE_XML) || uri.endsWith(ApplicationConstants.TYPE_JSON))){ - uriStatus = true; - } - if(uriStatus && (ContentTypeEnum.APPLICATION_JSON.getContentType().equals(contentType) || ContentTypeEnum.APPLICATION_XML.getContentType().equals(contentType))){ - uriStatus = true; - }else{ - uriStatus = false; + public static boolean validateMediaType(final HttpServletRequest request) { + LOG.trace("Start VtnServiceCommonUtil#validateMediaType()"); + boolean isMediaTypeCorrect = true; + if (request.getMethod().equalsIgnoreCase( + ApplicationConstants.POST_METHOD_NAME) + || request.getMethod().equalsIgnoreCase( + ApplicationConstants.PUT_METHOD_NAME)) { + isMediaTypeCorrect = false; + String contentType = request.getContentType(); + if (contentType != null) { + String content[] = contentType + .split(ApplicationConstants.SEMI_COLON); + if (content.length > 0 + && (content[0] + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_JSON + .getContentType()) || content[0] + .equalsIgnoreCase(ContentTypeEnum.APPLICATION_XML + .getContentType()))) { + isMediaTypeCorrect = true; + } + } } - LOG.debug("uri : " + uri + " content-type : " + contentType); - LOG.trace("validation for URI : ends"); - return uriStatus; + LOG.debug("Valid Media Type : " + isMediaTypeCorrect); + LOG.trace("Complete VtnServiceCommonUtil#validateMediaType()"); + return isMediaTypeCorrect; } - + /** * Gets the session object. - * - * @param sessionJson the session json + * + * @param sessionJson + * the session json * @return the session object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public static SessionBean getSessionObject(final JsonObject sessionJson) throws VtnServiceWebAPIException{ - LOG.trace("Preparing session object : starts"); - SessionBean sessionBean = new SessionBean(); - List mandatoryList = Arrays.asList(SessionEnum.USERNAME.getSessionElement(), SessionEnum.PASSWORD.getSessionElement(), SessionEnum.IPADDRESS.getSessionElement()); - JsonObject sessionJsonObj = (JsonObject) sessionJson.get(ApplicationConstants.SESSION_OBJECT); - for (String value : mandatoryList) { - if(!sessionJsonObj.has(value) || null == sessionJsonObj.get(value)){ - throw new VtnServiceWebAPIException(ApplicationConstants.BAD_REQUEST_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.BAD_REQUEST_ERROR)); + public static SessionBean getSessionObject(final JsonObject sessionJson) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceCommonUtil#getSessionObject()"); + final SessionBean sessionBean = new SessionBean(); + final List mandatoryList = Arrays.asList( + SessionEnum.USERNAME.getSessionElement(), + SessionEnum.PASSWORD.getSessionElement(), + SessionEnum.IPADDRESS.getSessionElement()); + final JsonObject sessionJsonObj = (JsonObject) sessionJson + .get(ApplicationConstants.SESSION); + + for (final String value : mandatoryList) { + if (!sessionJsonObj.has(value) || null == sessionJsonObj.get(value)) { + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_UNAUTHORIZED.getCode()); } } - sessionBean.setUserName(sessionJsonObj.get(SessionEnum.USERNAME.getSessionElement()) != null ?sessionJsonObj.get(SessionEnum.USERNAME.getSessionElement()).getAsString() : null ); - sessionBean.setPassword(sessionJsonObj.get(SessionEnum.PASSWORD.getSessionElement()) != null ?sessionJsonObj.get(SessionEnum.PASSWORD.getSessionElement()).getAsString() : null ); - sessionBean.setIpAddress(sessionJsonObj.get(SessionEnum.IPADDRESS.getSessionElement()) != null ?sessionJsonObj.get(SessionEnum.IPADDRESS.getSessionElement()).getAsString() : null ); - sessionBean.setLoginName(sessionJsonObj.get(SessionEnum.LOGINNAME.getSessionElement()) != null ?sessionJsonObj.get(SessionEnum.LOGINNAME.getSessionElement()).getAsString() : null ); - sessionBean.setInformation(sessionJsonObj.get(SessionEnum.INFO.getSessionElement()) != null ?sessionJsonObj.get(SessionEnum.INFO.getSessionElement()).getAsString() : null ); + sessionBean.setUserName(sessionJsonObj.get(SessionEnum.USERNAME + .getSessionElement()) != null ? sessionJsonObj.get( + SessionEnum.USERNAME.getSessionElement()).getAsString() : null); + sessionBean.setPassword(sessionJsonObj.get(SessionEnum.PASSWORD + .getSessionElement()) != null ? sessionJsonObj.get( + SessionEnum.PASSWORD.getSessionElement()).getAsString() : null); + sessionBean + .setIpAddress(sessionJsonObj.get(SessionEnum.IPADDRESS + .getSessionElement()) != null ? sessionJsonObj.get( + SessionEnum.IPADDRESS.getSessionElement()) + .getAsString() : null); + sessionBean.setType(ApplicationConstants.SESSION_TYPE); - LOG.trace("Preparing session object : ends"); + + LOG.debug("Username : " + sessionBean.getUserName()); + LOG.debug("Password : " + sessionBean.getPassword()); + LOG.debug("Type : " + sessionBean.getType()); + + LOG.trace("Complete VtnServiceCommonUtil#getSessionObject()"); return sessionBean; - + } - + /** * Gets the resource uri. - * - * @param requestURI the request uri + * + * @param requestURI + * the request uri * @return the resource uri */ public static String getResourceURI(final String requestURI) { - LOG.trace("Getting requested URI: starts " + requestURI); + LOG.trace("Start VtnServiceCommonUtil#getResourceURI()"); String finalURI = null; - if (null != requestURI) { - if (requestURI.endsWith(ApplicationConstants.TYPE_XML)) { - finalURI = requestURI.substring(ApplicationConstants.ZERO, - requestURI.length() - ApplicationConstants.FOUR); - } else if (requestURI.endsWith(ApplicationConstants.TYPE_JSON)) { - finalURI = requestURI.substring(ApplicationConstants.ZERO, - requestURI.length() - ApplicationConstants.FIVE); + + if (null != requestURI + && requestURI.startsWith(ApplicationConstants.CONTEXTPATH)) { + finalURI = requestURI.replace(ApplicationConstants.CONTEXTPATH, + ApplicationConstants.BLANK_STR); + final int paramaStartIndex = finalURI + .indexOf(ApplicationConstants.QUESTION_MARK_CHAR); + if (paramaStartIndex != -1) { + finalURI = finalURI.substring(0, paramaStartIndex); + } + + final int extensionStartIndex = finalURI + .lastIndexOf(ApplicationConstants.DOT_REGEX); + if (extensionStartIndex != -1) { + final String extension = finalURI + .substring(extensionStartIndex); + if (null != extension + && (extension.equals(ApplicationConstants.TYPE_XML) || extension + .equals(ApplicationConstants.TYPE_JSON))) { + finalURI = finalURI.substring(0, extensionStartIndex); + } } } - if (null != finalURI) { - finalURI = finalURI.replace(ApplicationConstants.CONTEXTPATH, - ApplicationConstants.EMPTY_STRING); - } - LOG.trace("Getting requested URI: ends " + finalURI); + LOG.debug("Final URI : " + finalURI); + LOG.trace("Complete VtnServiceCommonUtil#getResourceURI()"); return finalURI; } - - /** - * Convert password str to md5 str. - * - * @param simplePasswordStr the simple password str - * @return the string - * @throws VtnServiceWebAPIException the vtn service web api exception - */ - /*private static String convertPasswordStrToMd5Str(final String simplePasswordStr) throws VtnServiceWebAPIException{ - LOG.trace("Converting password string to MD5 using MD5 algorithm: starts"); - StringBuffer sb = null; - try { - final java.security.MessageDigest md = java.security.MessageDigest.getInstance(ApplicationConstants.MD5); - final byte[] array = md.digest(simplePasswordStr.getBytes(ApplicationConstants.ENCODE_UTF8_FORMAT)); - sb = new StringBuffer(); - for (int i = 0; i < array.length; ++i) { - sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3)); - } - }catch (final java.security.NoSuchAlgorithmException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.MD5_ALGO_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.MD5_ALGO_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.MD5_ALGO_ERROR)); - } catch (UnsupportedEncodingException e) { - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.UNSUPPORTED_PASSWORD_STRING_FORMAT_ERROR)); - throw new VtnServiceWebAPIException(ApplicationConstants.UNSUPPORTED_PASSWORD_STRING_FORMAT_ERROR, VtnServiceCommonUtil.getErrorDescription(ApplicationConstants.UNSUPPORTED_PASSWORD_STRING_FORMAT_ERROR)); - } - LOG.trace("Converting password string to MD5 using MD5 algorithm: ends"); - return sb.toString(); - }*/ - + /** * Gets the op parameter. - * - * @param serviceRequest the service request - * @param resourcePath the resource path + * + * @param serviceRequest + * the service request + * @param resourcePath + * the resource path * @return the op parameter */ - public static JsonObject getOpParameter(JsonObject serviceRequest, String resourcePath) { - LOG.trace("Getting OP parameter from request URI : starts"); + public static JsonObject getOpParameter(JsonObject serviceRequest, + String resourcePath) { + LOG.trace("Start VtnServiceCommonUtil#getOpParameter()"); String opString = null; - if(null !=resourcePath && (resourcePath.endsWith(ApplicationConstants.COUNT) || resourcePath.endsWith(ApplicationConstants.DETAIL))){ - opString = resourcePath.substring(resourcePath.lastIndexOf(ApplicationConstants.SLASH)+1, resourcePath.length()); + if (null != resourcePath + && (resourcePath.endsWith(ApplicationConstants.COUNT) + || resourcePath.endsWith(ApplicationConstants.DETAIL) || resourcePath + .endsWith(ApplicationConstants.INFO))) { + opString = resourcePath.substring( + resourcePath.lastIndexOf(ApplicationConstants.SLASH) + 1, + resourcePath.length()); } - if(null != opString && !opString.isEmpty()){ + if (null != opString && !opString.isEmpty()) { serviceRequest.addProperty(ApplicationConstants.OP, opString); } - LOG.trace("Getting OP parameter from request URI : ends"); + LOG.trace("Complete VtnServiceCommonUtil#getOpParameter()"); return serviceRequest; } - + /** - * This method will remove /count or /detail from URI and then will return actual resource path. - * - * @param resourcePath the resource path + * This method will remove /count or /detail or /info from URI and then will + * return actual resource path. + * + * @param resourcePath + * the resource path * @return the string */ public static String removeCountOrDetailFromURI(final String resourcePath) { - LOG.trace("Removing detail/count from URI and putting the same in requestJson: starts"); + LOG.trace("Start VtnServiceCommonUtil#removeCountOrDetailFromURI()"); String opString = resourcePath; - if(null !=resourcePath && (resourcePath.endsWith(ApplicationConstants.COUNT) || resourcePath.endsWith(ApplicationConstants.DETAIL))){ - opString = resourcePath.substring(ApplicationConstants.ZERO, resourcePath.lastIndexOf(ApplicationConstants.SLASH)); + if (null != resourcePath + && (resourcePath.endsWith(ApplicationConstants.COUNT) + || resourcePath.endsWith(ApplicationConstants.DETAIL) || resourcePath + .endsWith(ApplicationConstants.INFO))) { + opString = resourcePath.substring(ApplicationConstants.ZERO, + resourcePath.lastIndexOf(ApplicationConstants.SLASH)); } - LOG.trace("Removing detail/count from URI and putting the same in requestJson: end"); + LOG.trace("Complete VtnServiceCommonUtil#removeCountOrDetailFromURI()"); return opString; } - + /** * * @param URI * @return - * @throws VtnServiceWebAPIException + * @throws VtnServiceWebAPIException */ - public static boolean validateGetAPI(String URI) throws VtnServiceWebAPIException{ + public static boolean validateGetAPI(String URI) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceCommonUtil#validateGetAPI()"); boolean status = false; - if(null != URI && !URI.isEmpty()){ - if(URI.trim().contains(ApplicationConstants.CONTROLLERSTR) && URI.trim().contains(ApplicationConstants.DOMAINSTR) && URI.trim().contains(ApplicationConstants.LOGICALPORTSSTR)) + if (null != URI && !URI.isEmpty()) { + if (URI.trim().contains(ApplicationConstants.CONTROLLERSTR) + && URI.trim().contains(ApplicationConstants.DOMAINSTR) + && URI.trim() + .contains(ApplicationConstants.LOGICALPORTSSTR)) { status = true; - else if(URI.trim().startsWith(ApplicationConstants.SESSIONSTR) && URI.trim().length() > ApplicationConstants.SESSIONSTR.length()) + } else if (URI.trim().startsWith(ApplicationConstants.SESSIONSTR) + && URI.trim().length() > ApplicationConstants.SESSIONSTR + .length()) { status = true; - else{ - final String getListAPI = ConfigurationManager.getInstance().getConfProperty(ApplicationConstants.GETLISTAPI); - if(null != getListAPI && !getListAPI.isEmpty()){ - final String[] tempList = getListAPI.split(ApplicationConstants.COMMA_STR); - for(int i=0; i < tempList.length; i++ ){ + } else { + final String getListAPI = ConfigurationManager.getInstance() + .getConfProperty(ApplicationConstants.GETLISTAPI); + if (null != getListAPI && !getListAPI.isEmpty()) { + final String[] tempList = getListAPI + .split(ApplicationConstants.COMMA_STR); + for (int i = 0; i < tempList.length; i++) { final String getStr = tempList[i]; - if(URI.trim().equals(getStr)){ + if (URI.trim().equals(getStr.trim())) { status = true; break; } @@ -366,6 +487,40 @@ public final class VtnServiceCommonUtil { } } } + LOG.trace("Complete VtnServiceCommonUtil#validateGetAPI()"); + return status; + } + + /** + * + * @param request + * @return + * @throws VtnServiceWebAPIException + */ + public static boolean isOpenStackResurce(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceUtil#isOpenStackResurce()"); + boolean status = false; + /* + * get resource path and then resolve the resource corresponding to this + * resource path + */ + final String resourcePath = VtnServiceCommonUtil.removeCountOrDetailFromURI( + VtnServiceCommonUtil.getResourceURI(request.getRequestURI())); + final RestResource restResource = new RestResource(); + restResource.setPath(resourcePath); + final AbstractResource resource = restResource.getResource(); + + if (resource == null) { + LOG.debug("Decision cannot be taken that request came for UNC core APIs or UNC OpenStack APIs"); + throw new VtnServiceWebAPIException( + HttpErrorCodeEnum.UNC_CUSTOM_NOT_FOUND.getCode()); + } else if (resource.getClass().getCanonicalName() + .startsWith(ApplicationConstants.OS_RESOURCE_PKG)) { + LOG.debug("Request came for UNC OpenStack APIs"); + status = true; + } + LOG.trace("Complete VtnServiceUtil#isOpenStackResurce()"); return status; } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceWebUtil.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceWebUtil.java index 09735488..ba605ce5 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceWebUtil.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/VtnServiceWebUtil.java @@ -1,11 +1,12 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.utils; import java.io.BufferedReader; @@ -19,7 +20,8 @@ import org.json.JSONObject; import com.google.gson.JsonObject; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; +import org.opendaylight.vtn.webapi.enums.HttpErrorCodeEnum; import org.opendaylight.vtn.webapi.enums.SessionEnum; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; @@ -27,120 +29,221 @@ import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; * The Class VtnServiceWebUtil. */ public class VtnServiceWebUtil { - + /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(VtnServiceWebUtil.class.getName()); - /** The Constant SESSION. */ - private static final String SESSION = "session"; - - /** The Constant NEW_LINE. */ - private static final String NEW_LINE="\n"; - - /** The Constant OP. */ - private static final String OP = "op"; - + private static final Logger LOG = Logger.getLogger(VtnServiceWebUtil.class + .getName()); + /** * Prepare request json. - * - * @param request the request - * @param contentType the content type + * + * @param request + * the request + * @param contentType + * the content type * @return the json object - * @throws IOException Signals that an I/O exception has occurred. - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws IOException + * Signals that an I/O exception has occurred. + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public JsonObject prepareRequestJson(final HttpServletRequest request, final String contentType) throws IOException, VtnServiceWebAPIException{ - LOG.trace("Preparing request JSON # prepareRequestJson()"); - final BufferedReader reader = request.getReader(); + public JsonObject prepareRequestJson(final HttpServletRequest request, + final String contentType) throws IOException, + VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebUtil#prepareRequestJson()"); JsonObject serviceRequest = null; - final StringBuilder requestStr = new StringBuilder(); - String line = reader.readLine(); - while (line != null) { - requestStr.append(line).append(NEW_LINE); - line = reader.readLine(); - } - reader.close(); - LOG.debug("Request String : " + requestStr.toString()); - serviceRequest = DataConverter.getConvertedRequestObject(requestStr.toString(), contentType); - LOG.debug("Request object json # serviceRequest #"); - return serviceRequest; - + StringBuilder requestStr = null; + BufferedReader reader = request.getReader(); + requestStr = new StringBuilder(); + String line = reader.readLine(); + while (line != null) { + requestStr.append(line).append(ApplicationConstants.NEW_LINE); + line = reader.readLine(); + } + reader.close(); + /* + * exceptional case handle for router-creation operation. + * POST is allowed with no request body + */ + if (VtnServiceCommonUtil.getResourceURI(request.getRequestURI()) + .endsWith(ApplicationConstants.ROUTERS)) { + requestStr = new StringBuilder(); + requestStr.append(ApplicationConstants.EMPTY_JSON); + } + + try { + serviceRequest = DataConverter.getConvertedRequestObject( + requestStr.toString(), contentType); + } catch (ClassCastException e) { + /* + * exceptional case handle for tenant-creation operation. POST is + * allowed with no request body + */ + if (VtnServiceCommonUtil.getResourceURI(request.getRequestURI()) + .endsWith(ApplicationConstants.TENANTS)) { + requestStr = new StringBuilder(); + requestStr.append(ApplicationConstants.EMPTY_JSON); + serviceRequest = DataConverter.getConvertedRequestObject( + requestStr.toString(), contentType); + } else { + throw e; + } + } + LOG.debug("Request String : " + requestStr.toString()); + + LOG.debug("Request Json : " + serviceRequest); + LOG.trace("Complete VtnServiceWebUtil#prepareRequestJson()"); + return serviceRequest; + } - + /** * Prepare header json. - * - * @param request the request + * + * @param request + * the request * @return the json object + * @throws VtnServiceWebAPIException */ - public static JsonObject prepareHeaderJson(final HttpServletRequest request){ - LOG.trace("Preaparing request header json # prepareHeaderJson()"); + public static JsonObject + prepareHeaderJson(final HttpServletRequest request) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebUtil#prepareHeaderJson()"); final JsonObject headerJson = new JsonObject(); final Enumeration headerEnum = request.getHeaderNames(); - if(null !=headerEnum ){ + if (null != headerEnum) { while (headerEnum.hasMoreElements()) { - final String nextElement = (String)headerEnum.nextElement(); - if(SessionEnum.USERNAME.getSessionElement().equals(nextElement) || - SessionEnum.PASSWORD.getSessionElement().equals(nextElement) || - SessionEnum.LOGINNAME.getSessionElement().equals(nextElement) || - SessionEnum.INFO.getSessionElement().equals(nextElement)) - { - headerJson.addProperty(nextElement, request.getHeader(nextElement)); - } + final String nextElement = (String) headerEnum.nextElement(); + if (SessionEnum.USERNAME.getSessionElement() + .equals(nextElement) + || SessionEnum.PASSWORD.getSessionElement().equals( + nextElement)) { + headerJson.addProperty(nextElement, + request.getHeader(nextElement)); + } } - } - headerJson.addProperty(SessionEnum.IPADDRESS.getSessionElement(), request.getRemoteAddr()); - headerJson.addProperty(ApplicationConstants.TYPE, ApplicationConstants.SESSION_TYPE); + + /* + * Set user-name and password, if request came from NEC OpenFlow Plugin + */ + setOpenStackAuthentications(request, headerJson); + + headerJson.addProperty(SessionEnum.IPADDRESS.getSessionElement(), + request.getRemoteAddr()); + headerJson.addProperty(ApplicationConstants.TYPE, + ApplicationConstants.SESSION_TYPE); final JsonObject sessionJson = new JsonObject(); - sessionJson.add(SESSION, headerJson); - LOG.debug("Preaparing request header json # prepareHeaderJson() "); + sessionJson.add(ApplicationConstants.SESSION, headerJson); + LOG.debug("Session Json : " + sessionJson); + LOG.trace("Complete VtnServiceWebUtil#prepareHeaderJson()"); return sessionJson; } - + + /** + * Set/override the user-name and password for the request, if it came from + * NEC OpenFlow Plugin for OpenStack APIs + * + * @param request + * - Http Request Object + * @param headerJson + * - Session Json object + * @throws VtnServiceWebAPIException + */ + private static void setOpenStackAuthentications( + final HttpServletRequest request, final JsonObject headerJson) + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebUtil#setOpenStackAuthentications"); + /* + * If resource is related with OpenStack API resources then add/update + * user-name and password + */ + if (VtnServiceCommonUtil.isOpenStackResurce(request)) { + if (request.getMethod().equalsIgnoreCase( + ApplicationConstants.GET_METHOD_NAME)) { + LOG.debug("Set username and password for oper user"); + // Set for oper user in case of GET operations + headerJson.addProperty( + SessionEnum.USERNAME.getSessionElement(), + ApplicationConstants.ROLE_OPERATOR); + headerJson.addProperty( + SessionEnum.PASSWORD.getSessionElement(), + ApplicationConstants.DEFAULT_PASSWD); + } else { + LOG.debug("Set username and password for admin user"); + // Set for admin in case of operations other than GET + headerJson.addProperty( + SessionEnum.USERNAME.getSessionElement(), + ApplicationConstants.ROLE_ADMIN); + headerJson.addProperty( + SessionEnum.PASSWORD.getSessionElement(), + ApplicationConstants.DEFAULT_PASSWD); + } + } + LOG.debug("Session Json : " + headerJson); + LOG.trace("Start VtnServiceWebUtil#setOpenStackAuthentications"); + } + /** * Prepare aquire config json. - * + * * @return the json object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public static JsonObject prepareAquireConfigJSON() throws VtnServiceWebAPIException { - LOG.trace("Preaparing aquire config json # prepareAquireConfigJSON() "); - JsonObject configJson= new JsonObject(); - configJson.addProperty(OP, ConfigurationManager.getInstance().getConfProperty(OP)); - LOG.debug("Aquire config json prepared # prepareAquireConfigJSON() "); + public static JsonObject prepareAquireConfigJSON() + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebUtil#prepareAquireConfigJSON()"); + final JsonObject configJson = new JsonObject(); + final String opForce = ConfigurationManager.getInstance() + .getConfProperty(ApplicationConstants.OP); + if (!opForce.isEmpty()) { + configJson.addProperty(ApplicationConstants.OP, opForce); + } + LOG.trace("Complete VtnServiceWebUtil#prepareAquireConfigJSON()"); return configJson; } - /** * Prepare aquire read lock json. - * + * * @return the json object - * @throws VtnServiceWebAPIException the vtn service web api exception + * @throws VtnServiceWebAPIException + * the vtn service web api exception */ - public static JsonObject prepareAquireReadLockJSON() throws VtnServiceWebAPIException { - LOG.trace("Preaparing aquire read lock json # prepareAquireReadLockJSON() "); - JsonObject acquireReadLockObj = new JsonObject(); - JsonObject readLockJson = new JsonObject(); - readLockJson.addProperty(ApplicationConstants.TIMEOUT, ConfigurationManager.getInstance().getConfProperty(ApplicationConstants.TIMEOUT)); + public static JsonObject prepareAquireReadLockJSON() + throws VtnServiceWebAPIException { + LOG.trace("Start VtnServiceWebUtil#prepareAquireReadLockJSON()"); + final JsonObject acquireReadLockObj = new JsonObject(); + final JsonObject readLockJson = new JsonObject(); + readLockJson.addProperty( + ApplicationConstants.TIMEOUT, + ConfigurationManager.getInstance().getConfProperty( + ApplicationConstants.TIMEOUT)); acquireReadLockObj.add(ApplicationConstants.READLOCK, readLockJson); - LOG.trace("Aquire read lock json # prepareAquireReadLockJSON() "); + LOG.trace("Complete VtnServiceWebUtil#prepareAquireReadLockJSON()"); return acquireReadLockObj; } /** * Prepare config commit json. - * - * @param operation the operation + * + * @param operation + * the operation * @return the json object */ - public static JsonObject prepareConfigCommitOrSaveJSON(final String operation) { - JsonObject commitConfigJson = new JsonObject(); - JsonObject commitConfigObj = new JsonObject(); + public static JsonObject prepareConfigCommitOrSaveJSON( + final String operation) { + LOG.trace("Start VtnServiceWebUtil#prepareConfigCommitOrSaveJSON()"); + final JsonObject commitConfigJson = new JsonObject(); + final JsonObject commitConfigObj = new JsonObject(); commitConfigJson.addProperty(ApplicationConstants.OPERATION, operation); - commitConfigObj.add(ApplicationConstants.CONFIGURATION_STRING, commitConfigJson); + commitConfigObj.add(ApplicationConstants.CONFIGURATION_STRING, + commitConfigJson); + LOG.trace("Complete VtnServiceWebUtil#prepareConfigCommitOrSaveJSON()"); return commitConfigObj; } + /** * Prepare abort commit json. * @@ -149,50 +252,58 @@ public class VtnServiceWebUtil { * @return the json object */ public static JsonObject prepareCandidateAbortJSON(final String operation) { - JsonObject abortConfigJson = new JsonObject(); - JsonObject abortConfigObj = new JsonObject(); + LOG.trace("Start VtnServiceWebUtil#prepareCandidateAbortJSON()"); + final JsonObject abortConfigJson = new JsonObject(); + final JsonObject abortConfigObj = new JsonObject(); abortConfigJson.addProperty(ApplicationConstants.OPERATION, operation); abortConfigObj.add(ApplicationConstants.CANDIDATE, abortConfigJson); + LOG.trace("Complete VtnServiceWebUtil#prepareCandidateAbortJSON()"); return abortConfigObj; } - - + /** * Prepare err response json. - * - * @param errCode the err code - * @param description the description + * + * @param errCode + * the err code + * @param description + * the description * @return the jSON object - * @throws JSONException + * @throws JSONException */ - public static JSONObject prepareErrResponseJson(final String errCode, final String description) { + public static JSONObject prepareErrResponseJson(final int errCode) { + LOG.trace("Start VtnServiceWebUtil#prepareErrResponseJson()"); JSONObject errJson = null; - if(!ApplicationConstants.STATUS_OK.equals(errCode)){ - JSONObject temErrorJSON = new JSONObject(); + if (HttpErrorCodeEnum.UNC_STATUS_OK.getCode() != errCode) { + final JSONObject temErrorJSON = new JSONObject(); errJson = new JSONObject(); - try{ + try { temErrorJSON.put(ApplicationConstants.ERR_CODE, errCode); - temErrorJSON.put(ApplicationConstants.ERR_DESCRIPTION, description); + temErrorJSON.put(ApplicationConstants.ERR_DESCRIPTION, + VtnServiceCommonUtil.getErrorMessage(errCode)); errJson.put(ApplicationConstants.ERROR, temErrorJSON); - }catch(JSONException e){ - LOG.error(VtnServiceCommonUtil.logErrorDetails(ApplicationConstants.INTERNAL_SERVER_ERROR)); - } + } catch (final JSONException e) { + LOG.error("Internal server error : " + e); + } } + LOG.trace("Complete VtnServiceWebUtil#prepareErrResponseJson()"); return errJson; } - /** * Check string for null or empty. - * - * @param valueStr the value str + * + * @param valueStr + * the value str * @return true, if successful */ public static boolean checkStringForNullOrEmpty(final String valueStr) { + LOG.trace("Start VtnServiceWebUtil#checkStringForNullOrEmpty()"); boolean status = false; - if(null != valueStr && !valueStr.trim().isEmpty()){ + if (null != valueStr && !valueStr.trim().isEmpty()) { status = true; } + LOG.trace("Complete VtnServiceWebUtil#checkStringForNullOrEmpty()"); return status; } } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/XMLTransformationUtil.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/XMLTransformationUtil.java index 492f99f0..cb73e548 100644 --- a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/XMLTransformationUtil.java +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/XMLTransformationUtil.java @@ -1,18 +1,24 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.vtn.webapi.utils; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.StringReader; +import java.util.HashSet; import java.util.Iterator; +import java.util.Set; import javax.xml.transform.OutputKeys; +import javax.xml.transform.TransformerConfigurationException; + import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamResult; @@ -21,7 +27,7 @@ import org.json.JSONException; import org.json.JSONObject; import org.opendaylight.vtn.core.util.Logger; -import org.opendaylight.vtn.webapi.enums.ApplicationConstants; +import org.opendaylight.vtn.webapi.constants.ApplicationConstants; import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; /** @@ -32,8 +38,27 @@ import org.opendaylight.vtn.webapi.exception.VtnServiceWebAPIException; public class XMLTransformationUtil { /** The Constant LOG. */ - private static final Logger LOG = Logger.getLogger(XMLTransformationUtil.class.getName()); - + private static final Logger LOG = Logger + .getLogger(XMLTransformationUtil.class.getName()); + + private static javax.xml.transform.Transformer trans; + + static { + javax.xml.transform.TransformerFactory transFact = javax.xml.transform.TransformerFactory + .newInstance(); + javax.xml.transform.Source xsltSource = new javax.xml.transform.stream.StreamSource( + Thread.currentThread().getContextClassLoader() + .getResource(ApplicationConstants.XSLT_FILE) + .toExternalForm()); + try { + trans = transFact.newTransformer(xsltSource); + trans.setOutputProperty(OutputKeys.STANDALONE, + ApplicationConstants.XML_STANDALONE); + } catch (TransformerConfigurationException e) { + LOG.error("Error ocurred while compilation of XSLT sheet : " + e); + } + } + /** * Convert all elements to attributes in XML string * @@ -42,17 +67,16 @@ public class XMLTransformationUtil { * @return attributed XML string * @throws TransformerException */ + + static Set keySet = null; + public static String convertAllAttributesToElements(String xmlContent) - throws TransformerException { + throws TransformerException, IOException { LOG.trace("Start XMLTransformationUtil#convertAllAttributesToElements()"); - javax.xml.transform.Source xmlSource = new javax.xml.transform.stream.StreamSource( + final javax.xml.transform.Source xmlSource = new javax.xml.transform.stream.StreamSource( new StringReader(xmlContent)); - javax.xml.transform.Source xsltSource = new javax.xml.transform.stream.StreamSource( - Thread.currentThread().getContextClassLoader() - .getResource(ApplicationConstants.XSLT_FILE) - .toExternalForm()); LOG.trace("Complete XMLTransformationUtil#convertAllAttributesToElements()"); - return transformContent(xmlSource, xsltSource); + return transformContent(xmlSource); } /** @@ -62,29 +86,29 @@ public class XMLTransformationUtil { * @param xsltSource * @return * @throws TransformerException + * @throws IOException */ - private static String transformContent( - javax.xml.transform.Source xmlSource, - javax.xml.transform.Source xsltSource) throws TransformerException { + private static String + transformContent(javax.xml.transform.Source xmlSource) + throws TransformerException, IOException { LOG.trace("Start XMLTransformationUtil#transformContent()"); String modifiedContent = null; - javax.xml.transform.TransformerFactory transFact = javax.xml.transform.TransformerFactory - .newInstance(); - ByteArrayOutputStream outStream = new ByteArrayOutputStream(); - StreamResult result = new javax.xml.transform.stream.StreamResult( - outStream); - javax.xml.transform.Transformer trans = transFact - .newTransformer(xsltSource); - trans.setOutputProperty(OutputKeys.STANDALONE, - ApplicationConstants.XML_STANDALONE); - trans.transform(xmlSource, result); - byte[] b = ((ByteArrayOutputStream) result.getOutputStream()) - .toByteArray(); - modifiedContent = new String(b); - // removing any line feed to save bytes. - modifiedContent = modifiedContent.replaceAll( - ApplicationConstants.LINE_FEED, - ApplicationConstants.EMPTY_STRING); + ByteArrayOutputStream outStream = null; + try { + outStream = new ByteArrayOutputStream(); + final StreamResult result = new javax.xml.transform.stream.StreamResult( + outStream); + trans.transform(xmlSource, result); + final byte[] b = ((ByteArrayOutputStream) result.getOutputStream()) + .toByteArray(); + modifiedContent = new String(b); + // removing any line feed to save bytes. + modifiedContent = modifiedContent.replaceAll( + ApplicationConstants.LINE_FEED, + ApplicationConstants.BLANK_STR); + } finally { + outStream.close(); + } LOG.trace("Complete XMLTransformationUtil#transformContent()"); return modifiedContent; } @@ -96,7 +120,7 @@ public class XMLTransformationUtil { * @param responseJson * @return * @throws JSONException - * @throws VtnServiceWebAPIException + * @throws VtnServiceWebAPIException */ public static String convertJsonToXml(Object responseJson) throws JSONException, VtnServiceWebAPIException { @@ -110,12 +134,13 @@ public class XMLTransformationUtil { * @param parentTagName * @return * @throws JSONException - * @throws VtnServiceWebAPIException + * @throws VtnServiceWebAPIException */ public static String convertJsonToXml(Object responseJson, - String parentTagName) throws JSONException, VtnServiceWebAPIException { + String parentTagName) throws JSONException, + VtnServiceWebAPIException { LOG.trace("Start XMLTransformationUtil#convertJsonToXml()"); - StringBuffer xmlString = new StringBuffer(); + final StringBuffer xmlString = new StringBuffer(); // local parameter required for conversion JSONArray jsonArray; JSONObject jsonObject; @@ -140,7 +165,7 @@ public class XMLTransformationUtil { jsonKey = jsonKeys.next().toString(); jsonValue = jsonObject.opt(jsonKey); if (jsonValue == null) { - jsonValue = ApplicationConstants.EMPTY_STRING; + jsonValue = ApplicationConstants.BLANK_STR; } // if element in JSON object is JSON array type then iterate for // all of element recursively @@ -163,10 +188,9 @@ public class XMLTransformationUtil { try { childElementName = ConfigurationManager .getInstance().getConfProperty(jsonKey); - } catch (VtnServiceWebAPIException e) { + } catch (final VtnServiceWebAPIException e) { LOG.error("Property not found for list element"); - if (!(ApplicationConstants.ipaddrs.equals(jsonKey) - || ApplicationConstants.ipv6addr.equals(jsonKey))) { + if (!(checkForJsonKey(jsonKey))) { throw e; } else { flag = true; @@ -174,25 +198,30 @@ public class XMLTransformationUtil { } // sb.append('['); for (counter = 0; counter < length; counter += 1) { - if(childElementName != null){ - xmlString.append(ApplicationConstants.LESS_THAN); + if (childElementName != null) { + xmlString + .append(ApplicationConstants.LESS_THAN); xmlString.append(childElementName); - xmlString.append(ApplicationConstants.GREATER_THAN); + xmlString + .append(ApplicationConstants.GREATER_THAN); } - jsonValue = jsonArray.get(counter); + jsonValue = jsonArray.get(counter); if (jsonValue instanceof JSONArray) { xmlString.append(convertJsonToXml(jsonValue)); } else { if (!(counter == length - 1) && flag) { - jsonValue = jsonValue + ApplicationConstants.COMMA_STR; + jsonValue = jsonValue + + ApplicationConstants.COMMA_STR; } xmlString.append(convertJsonToXml(jsonValue)); } - if(childElementName != null){ - xmlString.append(ApplicationConstants.LESS_THAN); + if (childElementName != null) { + xmlString + .append(ApplicationConstants.LESS_THAN); xmlString.append(ApplicationConstants.SLASH); xmlString.append(childElementName); - xmlString.append(ApplicationConstants.GREATER_THAN); + xmlString + .append(ApplicationConstants.GREATER_THAN); } } // sb.append(']'); @@ -202,7 +231,7 @@ public class XMLTransformationUtil { xmlString.append(ApplicationConstants.GREATER_THAN); flag = false; } - } else if (ApplicationConstants.EMPTY_STRING.equals(jsonValue)) { + } else if (ApplicationConstants.BLANK_STR.equals(jsonValue)) { xmlString.append(ApplicationConstants.LESS_THAN); xmlString.append(jsonKey); xmlString.append(ApplicationConstants.SLASH); @@ -236,18 +265,74 @@ public class XMLTransformationUtil { return xmlString.toString(); } + private static boolean checkForJsonKey(String jsonKey) { + boolean exist = false; + if (keySet == null) { + keySet = new HashSet(); + keySet.add(ApplicationConstants.ipaddrs); + keySet.add(ApplicationConstants.ipv6addr); + keySet.add(ApplicationConstants.inport); + keySet.add(ApplicationConstants.macdstaddr); + keySet.add(ApplicationConstants.macdstaddr_mask); + keySet.add(ApplicationConstants.macsrcaddr); + keySet.add(ApplicationConstants.macsrcaddr_mask); + keySet.add(ApplicationConstants.macethertype); + keySet.add(ApplicationConstants.vlan_id); + keySet.add(ApplicationConstants.vlan_priority); + keySet.add(ApplicationConstants.iptos); + keySet.add(ApplicationConstants.ipproto); + keySet.add(ApplicationConstants.ipdstaddr); + keySet.add(ApplicationConstants.ipdstaddr_mask); + keySet.add(ApplicationConstants.ipsrcaddr); + keySet.add(ApplicationConstants.ipsrcaddr_mask); + keySet.add(ApplicationConstants.l4dstport_icmptype); + keySet.add(ApplicationConstants.l4dstport_icmptype_mask); + keySet.add(ApplicationConstants.l4srcport_icmptype); + keySet.add(ApplicationConstants.l4srcport_icmptype_mask); + keySet.add(ApplicationConstants.ipv6dstaddr); + keySet.add(ApplicationConstants.ipv6dstaddr_mask); + keySet.add(ApplicationConstants.ipv6srcaddr); + keySet.add(ApplicationConstants.ipv6srcaddr_mask); + keySet.add(ApplicationConstants.outputport); + keySet.add(ApplicationConstants.enqueueport); + keySet.add(ApplicationConstants.queue_id); + keySet.add(ApplicationConstants.setmacdstaddr); + keySet.add(ApplicationConstants.setmacsrcaddr); + keySet.add(ApplicationConstants.setvlan_id); + keySet.add(ApplicationConstants.setvlan_priority); + keySet.add(ApplicationConstants.setipdstaddr); + keySet.add(ApplicationConstants.setipsrcaddr); + keySet.add(ApplicationConstants.setiptos); + keySet.add(ApplicationConstants.setl4dstport_icmptype); + keySet.add(ApplicationConstants.setl4srcport_icmptype); + keySet.add(ApplicationConstants.setipv6dstaddr); + keySet.add(ApplicationConstants.setipv6srcaddr); + } + if (keySet.contains(jsonKey)) { + exist = true; + } + return exist; + + } + /** * pre-process request Json for removing unwanted tags + * * @param jsonObject * @return * @throws JSONException * @throws VtnServiceWebAPIException */ - public static JSONObject preProcessJson(JSONObject jsonObject) throws JSONException, VtnServiceWebAPIException { + public static JSONObject preProcessJson(JSONObject jsonObject) + throws JSONException, VtnServiceWebAPIException { // pre-process for vtep-group API - if (ApplicationConstants.vtepgroup.equals(jsonObject.keys().next().toString()) - && jsonObject.getJSONObject(ApplicationConstants.vtepgroup).has(ApplicationConstants.member_vteps)) { - JSONObject memberVtepJson = jsonObject.getJSONObject(ApplicationConstants.vtepgroup).getJSONObject(ApplicationConstants.member_vteps); + if (ApplicationConstants.vtepgroup.equals(jsonObject.keys().next() + .toString()) + && jsonObject.getJSONObject(ApplicationConstants.vtepgroup) + .has(ApplicationConstants.member_vteps)) { + final JSONObject memberVtepJson = jsonObject.getJSONObject( + ApplicationConstants.vtepgroup).getJSONObject( + ApplicationConstants.member_vteps); JSONArray newArray = new JSONArray(); if (memberVtepJson.has(ApplicationConstants.member_vtep)) { // only one instance @@ -259,8 +344,9 @@ public class XMLTransformationUtil { newArray = memberVtepJson .getJSONArray(ApplicationConstants.member_vtep); } - } - jsonObject.getJSONObject(ApplicationConstants.vtepgroup).put(ApplicationConstants.member_vteps, newArray); + } + jsonObject.getJSONObject(ApplicationConstants.vtepgroup).put( + ApplicationConstants.member_vteps, newArray); } return jsonObject; } diff --git a/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/package-info.java b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/package-info.java new file mode 100644 index 00000000..568535c6 --- /dev/null +++ b/coordinator/java/vtn-webapi/src/org/opendaylight/vtn/webapi/utils/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * Package contains Web API initialization, configuration manager, utility , Logger, Enums / constants and data convertor classes . + */ +package org.opendaylight.vtn.webapi.utils; + diff --git a/coordinator/java/vtn-webapi/src/pwd.properties b/coordinator/java/vtn-webapi/src/pwd.properties new file mode 100644 index 00000000..a8b8f35e --- /dev/null +++ b/coordinator/java/vtn-webapi/src/pwd.properties @@ -0,0 +1,12 @@ +# +# Copyright (c) 2013-2014 NEC Corporation +# All rights reserved. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License v1.0 which accompanies this +# distribution, and is available at http://www.eclipse.org/legal/epl-v10.html +# + +#define password for admin and oper users +admin=adminpass +oper=adminpass diff --git a/coordinator/java/vtn-webapi/src/webapiconf.properties b/coordinator/java/vtn-webapi/src/webapiconf.properties index 5b85784c..e0d0cf64 100644 --- a/coordinator/java/vtn-webapi/src/webapiconf.properties +++ b/coordinator/java/vtn-webapi/src/webapiconf.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -7,20 +7,12 @@ # distribution, and is available at http://www.eclipse.org/legal/epl-v10.html # -#Common settings or error codes for VTN service web API -vtns_err_200 = OK -vtns_err_400 = Bad Request -vtns_err_500 = Internal Server Error -vtns_err_401 = User Unauthorized -vtns_err_403 = Forbidden -vtns_err_404 = Resource Not Found -vtns_err_405 = Method Not Allowed - -op=FORCE +op= timeout = 1000 +Retry-After=1 #Default get api list for which blank json should be passed to Java API -getListAPI = /api_version,/unc/version,/unc/alarms,/configuration/diff,/configuration/autosave +getListAPI = /api_version,/unc/version,/unc/alarms,/configuration/diff,/configuration/autosave,/coordinator_version,/destination_controller #Properties corresponding to List and their respective Show APIs flowlists=flowlist @@ -56,3 +48,9 @@ boundaries=boundary alarms=alarm patches=patch sessions=session +dataflows=dataflow +controller_dataflows=controller_dataflow +pathinfos =pathinfo +controller_domain_dataflows=controller_domain_dataflow +mappings=mapping +mappinginfos=mappinginfo diff --git a/coordinator/java/vtn-webapi/src/webapp_connection.properties b/coordinator/java/vtn-webapi/src/webapp_connection.properties index abab9738..9b95366e 100644 --- a/coordinator/java/vtn-webapi/src/webapp_connection.properties +++ b/coordinator/java/vtn-webapi/src/webapp_connection.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -7,6 +7,9 @@ # distribution, and is available at http://www.eclipse.org/legal/epl-v10.html # +#vtn-javaapi.jar file path +javaapi_path=%UNC_JAVA_LIBDIR%/vtn-javaapi.jar + #define default value of max_repetition. max_repetition_default=10000 @@ -24,5 +27,8 @@ max_ipc_conn_pool_size_uncd=4 max_ipc_conn_pool_size_usess=4 max_ipc_conn_pool_size_unc_sysmg=4 -#vtn-javaapi.jar file path -javaapi_path=%UNC_JAVA_LIBDIR%/vtn-javaapi.jar +#Database connection pool properties for vtn-webapi only +ini_filepath=/etc/odbc.ini +db_initial_con_size=5 +db_max_conn_size=10 +db_wait_status=true diff --git a/coordinator/modules/alarm/alarm.cc b/coordinator/modules/alarm/alarm.cc index 390c9beb..7c9373cc 100644 --- a/coordinator/modules/alarm/alarm.cc +++ b/coordinator/modules/alarm/alarm.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,13 +10,12 @@ #include #include -namespace pfc{ -namespace alarm{ +namespace pfc { +namespace alarm { class AlarmModule - : public pfc::core::Module -{ -public: + : public pfc::core::Module { + public: AlarmModule(const pfc_modattr_t *mattr) : pfc::core::Module(mattr) {} ~AlarmModule(void) {} @@ -29,8 +28,7 @@ public: */ alarm_return_code_t -pfc_alarm_initialize(int32_t *fd) -{ +pfc_alarm_initialize(int32_t *fd) { *fd = -1; return ALM_OK; } @@ -38,49 +36,43 @@ pfc_alarm_initialize(int32_t *fd) alarm_return_code_t pfc_alarm_send(const std::string& VTN_name, const std::string& alm_msg, const std::string& alm_msg_summary, - alarm_info_t *data, int32_t fd) -{ + alarm_info_t *data, int32_t fd) { return ALM_OK; } -alarm_return_code_t +alarm_return_code_t pfc_alarm_send_with_key(const std::string& VTN_name, const std::string& alm_msg, const std::string& alm_msg_summary, - alarm_info_with_key_t* data, int32_t fd) -{ + alarm_info_with_key_t* data, int32_t fd) { return ALM_OK; } -alarm_return_code_t +alarm_return_code_t pfc_alarm_send_with_key2(const std::string& VTN_name, const std::string& alm_msg, const std::string& alm_msg_summary, alarm_info_with_key_t* data, int32_t fd, - struct timeval* tv) -{ + struct timeval* tv) { return ALM_OK; } alarm_return_code_t -pfc_alarm_clear (uint8_t apl_No) -{ +pfc_alarm_clear(uint8_t apl_No) { return ALM_OK; } alarm_return_code_t -pfc_alarm_close(int32_t fd) -{ +pfc_alarm_close(int32_t fd) { return ALM_OK; } alarm_return_code_t -pfc_alarm_view_start(void) -{ +pfc_alarm_view_start(void) { return ALM_OK; } -}; -}; +}; // namespace alarm +}; // namespace pfc /* Declare C++ module. */ PFC_MODULE_DECL(pfc::alarm::AlarmModule); diff --git a/coordinator/modules/alarm/include/alarm.hh b/coordinator/modules/alarm/include/alarm.hh index 004ea225..987ef1a7 100644 --- a/coordinator/modules/alarm/include/alarm.hh +++ b/coordinator/modules/alarm/include/alarm.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,12 +10,12 @@ #ifndef ALARM_ALARM_HH #define ALARM_ALARM_HH +#include #include #include -#include -namespace pfc{ -namespace alarm{ +namespace pfc { +namespace alarm { /* * alarm API @@ -27,7 +27,7 @@ typedef struct alarm_info { uint8_t alarm_class; uint8_t apl_No; uint16_t alarm_category; - uint32_t alarm_id ; + uint32_t alarm_id; uint8_t alarm_kind; } alarm_info_t; @@ -40,8 +40,8 @@ typedef struct alarm_info_with_key { uint8_t alarm_kind; } alarm_info_with_key_t; -typedef enum{ - ALM_EMERG=0, +typedef enum { + ALM_EMERG = 0, ALM_ALERT, ALM_CRITICAL, ALM_ERROR, @@ -50,7 +50,7 @@ typedef enum{ ALM_INFO, ALM_DEBUG }alarm_level_t; - + typedef enum { ALM_OK = 0, ALM_EAGAIN, @@ -64,24 +64,24 @@ alarm_return_code_t pfc_alarm_send(const std::string& VTN_name, const std::string& alm_msg, const std::string& alm_msg_summary, alarm_info_t *data, int32_t fd); -alarm_return_code_t +alarm_return_code_t pfc_alarm_send_with_key(const std::string& VTN_name, const std::string& alm_msg, const std::string& alm_msg_summary, alarm_info_with_key_t* data, int32_t fd); -alarm_return_code_t +alarm_return_code_t pfc_alarm_send_with_key2(const std::string& VTN_name, const std::string& alm_msg, const std::string& alm_msg_summary, alarm_info_with_key_t* data, int32_t fd, struct timeval* tv); alarm_return_code_t -pfc_alarm_clear (uint8_t apl_No); +pfc_alarm_clear(uint8_t apl_No); alarm_return_code_t pfc_alarm_close(int32_t fd); alarm_return_code_t pfc_alarm_view_start(void); -}; -}; +}; // namespace alarm +}; // namespace pfc #endif /* !ALARM_ALARM_HH */ diff --git a/coordinator/modules/capa/capa_module.cc b/coordinator/modules/capa/capa_module.cc index a934db82..ecf32f11 100644 --- a/coordinator/modules/capa/capa_module.cc +++ b/coordinator/modules/capa/capa_module.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -76,7 +76,7 @@ pfc_bool_t CapaModule::fini(void) { delete ccc; } ctrlr_common_map_.clear(); -#endif +#endif return PFC_TRUE; } @@ -99,7 +99,6 @@ void CapaModule::LoadParentVersion(pfc_conf_t confp, bool CapaModule::LoadActualVersion(pfc_conf_t confp, const std::string version, std::list &version_list) { - pfc_cfblk_t ver_def_cfblk = pfc_conf_get_map(confp, "version_definition", version.c_str()); @@ -107,7 +106,7 @@ bool CapaModule::LoadActualVersion(pfc_conf_t confp, const std::string version, uint32_t actual_count = 0; uint32_t actual_version_size = 0; uint32_t array_index = 0; - + /* Clear actual version list */ version_list.clear(); @@ -116,7 +115,6 @@ bool CapaModule::LoadActualVersion(pfc_conf_t confp, const std::string version, pfc_log_verbose(" Actual version count is %u", actual_count); for (uint32_t index = 0; index second; std::list actual_version_list; ActualVersion actual; + std::map >::iterator act_ver_it; if (ccc == NULL) { pfc_log_warn("Failed to find Capa controller common"); @@ -157,13 +159,14 @@ bool CapaModule::ValidateVersion(unc_keytype_ctrtype_t ctrlr_type, } memset(&actual, 0, sizeof(ActualVersion)); - if (ccc->actual_version_map_.count(config_version) == 0) { + act_ver_it = ccc->actual_version_map_.find(config_version); + if (act_ver_it == ccc->actual_version_map_.end()) { pfc_log_debug("Configuration version is not a member of " "actual version map"); return false; } - actual_version_list = ccc->actual_version_map_.find(config_version)->second; + actual_version_list = act_ver_it->second; while (!actual_version_list.empty()) { actual = actual_version_list.front(); @@ -172,22 +175,26 @@ bool CapaModule::ValidateVersion(unc_keytype_ctrtype_t ctrlr_type, pfc_log_verbose("Actual version : : (%d.%d.%d.%d)", actual.major1, actual.major2, actual.minor, actual.update); - if ((actual.major1 == -1) || ((uint8_t)actual.major1 < pfc_version_major1)) { + if ((actual.major1 == -1) || + ((uint8_t)actual.major1 < pfc_version_major1)) { return true; - } + } if (((uint8_t)actual.major1 == pfc_version_major1)) { - if ((actual.major2 == -1) || ((uint8_t)actual.major2 < pfc_version_major2)) { + if ((actual.major2 == -1) || + ((uint8_t)actual.major2 < pfc_version_major2)) { return true; } if ((uint8_t)actual.major2 == pfc_version_major2) { - if ((actual.minor == -1) || ((uint8_t)actual.minor < pfc_version_minor)) { + if ((actual.minor == -1) + || ((uint8_t)actual.minor < pfc_version_minor)) { return true; } if ((uint8_t)actual.minor == pfc_version_minor) { - if ((actual.update == -1) || ((uint8_t)actual.update <= pfc_version_update)) { + if ((actual.update == -1) || + ((uint8_t)actual.update <= pfc_version_update)) { return true; } } @@ -212,7 +219,7 @@ bool CapaModule::LoadCapabilityFile(unc_keytype_ctrtype_t ctrlr_type) { } else if (ctrlr_type == UNC_CT_LEGACY) { pfc_log_info("\n \n ******CAPA**** UNC_CT_LEGACY type %d", ctrlr_type); capa_file = CAPA_CONF_FILE_LEGACY; - */ + */ } else if (ctrlr_type == UNC_CT_VNP) { pfc_log_info("\n \n *****CAPA**** UNC_CT_VNP type %d", ctrlr_type); capa_file = CAPA_CONF_FILE_VNP; @@ -228,10 +235,13 @@ bool CapaModule::LoadCapabilityFile(unc_keytype_ctrtype_t ctrlr_type) { /* Lock capability database */ ScopedReadWriteLock lock(capa_module_lock_, true); - if (ctrlr_common_map_.count(ctrlr_type) == 0) { + std::map::iterator ctrlr_comm_it = + ctrlr_common_map_.find(ctrlr_type); + + if (ctrlr_comm_it == ctrlr_common_map_.end()) { return false; } - struct CapaCtrlrCommon *ccc = ctrlr_common_map_.find(ctrlr_type)->second; + struct CapaCtrlrCommon *ccc = ctrlr_comm_it->second; /* Clear file */ ccc->capa_map.clear(); @@ -275,7 +285,8 @@ bool CapaModule::LoadCapabilityFile(unc_keytype_ctrtype_t ctrlr_type) { } pfc_log_verbose("Loading capability for version: %s", version_name); // current_version = version_name; - // TODO Why it is repeated LoadParentCapability(confp, version_name); + // TODO(capa): Why it is repeated + // LoadParentCapability(confp, version_name); CtrlrCapability *cap_ptr = new CtrlrCapability; if (false == cap_ptr->LoadCtrlrCapability(confp, version_name)) { pfc_log_error("Failed to load capability for %s", version_name); @@ -305,11 +316,11 @@ bool CapaModule::LoadCapabilityFile(unc_keytype_ctrtype_t ctrlr_type) { // for that controller type bool CapaModule::LoadCapabilityFiles(void) { - LoadCapabilityFile(UNC_CT_PFC); - // LoadCapabilityFile(UNC_CT_LEGACY); - LoadCapabilityFile(UNC_CT_VNP); - LoadCapabilityFile(UNC_CT_ODC); - return true; + LoadCapabilityFile(UNC_CT_PFC); + // LoadCapabilityFile(UNC_CT_LEGACY); + LoadCapabilityFile(UNC_CT_VNP); + LoadCapabilityFile(UNC_CT_ODC); + return true; } bool CapaModule::GetCreateCapability(unc_keytype_ctrtype_t ctrlr_type, @@ -319,13 +330,16 @@ bool CapaModule::GetCreateCapability(unc_keytype_ctrtype_t ctrlr_type, uint32_t *num_attrs, const uint8_t **attrs) { ScopedReadWriteLock lock(capa_module_lock_, false); - if (ctrlr_common_map_.count(ctrlr_type) == 0) { + std::map::iterator ctrlr_comm_it = + ctrlr_common_map_.find(ctrlr_type); + + if (ctrlr_comm_it == ctrlr_common_map_.end()) { pfc_log_verbose("Bad ctrlr_type %d", ctrlr_type); return false; } - struct CapaCtrlrCommon *ccc = ctrlr_common_map_.find(ctrlr_type)->second; + struct CapaCtrlrCommon *ccc = ctrlr_comm_it->second; std::map::iterator verit = - ccc->capa_map.find(version); + ccc->capa_map.find(version); if (verit == ccc->capa_map.end()) { pfc_log_verbose("Version %s not found", version.c_str()); return false; @@ -342,11 +356,14 @@ bool CapaModule::GetUpdateCapability(unc_keytype_ctrtype_t ctrlr_type, uint32_t *num_attrs, const uint8_t **attrs) { ScopedReadWriteLock lock(capa_module_lock_, false); - if (ctrlr_common_map_.count(ctrlr_type) == 0) { + + std::map::iterator ctrlr_comm_it = + ctrlr_common_map_.find(ctrlr_type); + if (ctrlr_comm_it == ctrlr_common_map_.end()) { pfc_log_verbose("Bad ctrlr_type %d", ctrlr_type); return false; } - struct CapaCtrlrCommon *ccc = ctrlr_common_map_.find(ctrlr_type)->second; + struct CapaCtrlrCommon *ccc = ctrlr_comm_it->second; std::map::iterator verit = ccc->capa_map.find(version); if (verit == ccc->capa_map.end()) { @@ -363,15 +380,18 @@ bool CapaModule::GetReadCapability(unc_keytype_ctrtype_t ctrlr_type, uint32_t *num_attrs, const uint8_t **attrs) { ScopedReadWriteLock lock(capa_module_lock_, false); - if (ctrlr_common_map_.count(ctrlr_type) == 0) { + + std::map::iterator ctrlr_comm_it = + ctrlr_common_map_.find(ctrlr_type); + if (ctrlr_comm_it == ctrlr_common_map_.end()) { pfc_log_verbose("Bad ctrlr_type %d", ctrlr_type); return false; } - struct CapaCtrlrCommon *ccc = ctrlr_common_map_.find(ctrlr_type)->second; + struct CapaCtrlrCommon *ccc = ctrlr_comm_it->second; std::map::iterator verit = - ccc->capa_map.find(version); + ccc->capa_map.find(version); if (verit == ccc->capa_map.end()) { - return false; + return false; } CtrlrCapability* cap_ptr = verit->second; bool ret = cap_ptr->GetReadCapability(keytype, num_attrs, attrs); @@ -384,11 +404,14 @@ bool CapaModule::GetStateCapability(unc_keytype_ctrtype_t ctrlr_type, uint32_t *num_attrs, const uint8_t **attrs) { ScopedReadWriteLock lock(capa_module_lock_, false); - if (ctrlr_common_map_.count(ctrlr_type) == 0) { + + std::map::iterator ctrlr_comm_it = + ctrlr_common_map_.find(ctrlr_type); + if (ctrlr_comm_it == ctrlr_common_map_.end()) { pfc_log_verbose("Bad ctrlr_type %d", ctrlr_type); return false; } - struct CapaCtrlrCommon *ccc = ctrlr_common_map_.find(ctrlr_type)->second; + struct CapaCtrlrCommon *ccc = ctrlr_comm_it->second; std::map::iterator verit = ccc->capa_map.find(version); if (verit == (ccc->capa_map).end()) { @@ -404,11 +427,14 @@ bool CapaModule::GetInstanceCount(unc_keytype_ctrtype_t ctrlr_type, unc_key_type_t keytype, uint32_t &instance_count) { ScopedReadWriteLock lock(capa_module_lock_, false); - if (ctrlr_common_map_.count(ctrlr_type) == 0) { + + std::map::iterator ctrlr_comm_it = + ctrlr_common_map_.find(ctrlr_type); + if (ctrlr_comm_it == ctrlr_common_map_.end()) { pfc_log_verbose("Bad ctrlr_type %d", ctrlr_type); return false; } - struct CapaCtrlrCommon *ccc = ctrlr_common_map_.find(ctrlr_type)->second; + struct CapaCtrlrCommon *ccc = ctrlr_comm_it->second; std::map::iterator verit = (ccc->capa_map).find(version); if (verit == (ccc->capa_map).end()) { @@ -431,6 +457,7 @@ std::string CapaModule::GetCtrlrParentVersion(const std::string &version) { return parent_version; } + void CapaModule::VerboseDumpAll() { std::map::iterator comm_ctrlr_it; ScopedReadWriteLock lock(capa_module_lock_, false); @@ -506,9 +533,47 @@ void CapaModule::VerboseDump(unc_keytype_ctrtype_t ctrlr_type, } } } + +bool CapaModule::GetSupportedVersion(unc_keytype_ctrtype_t ctrlr_type, + std::string config_version, + uint8_t* version_major1, + uint8_t* version_major2, + uint8_t* version_minor, + uint8_t* version_update) { + pfc_log_info("Fetches th actual version from configured version"); + + struct CapaCtrlrCommon *ccc = ctrlr_common_map_.find(ctrlr_type)->second; + std::list actual_version_list; + ActualVersion actual; + std::map >::iterator act_ver_it; + + if (ccc == NULL) { + pfc_log_warn("Failed to find Capa controller common"); + return false; + } + memset(&actual, 0, sizeof(ActualVersion)); + + act_ver_it = ccc->actual_version_map_.find(config_version); + if (act_ver_it == ccc->actual_version_map_.end()) { + pfc_log_debug("Configuration version is not a member of " + "actual version map"); + return false; + } + + actual_version_list = act_ver_it->second; + + actual = actual_version_list.front(); + + *version_major1 = actual.major1; + *version_major2 = actual.major2; + *version_minor = actual.minor; + *version_update = actual.update; + + return true; +} // NOLINT -} // capa -} // unc +} // namespace capa +} // namespace unc PFC_MODULE_DECL(unc::capa::CapaModule); diff --git a/coordinator/modules/capa/capa_module.hh b/coordinator/modules/capa/capa_module.hh index 7c2bc929..0a3e3581 100644 --- a/coordinator/modules/capa/capa_module.hh +++ b/coordinator/modules/capa/capa_module.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -93,72 +93,77 @@ class CapaModule : public pfc::core::Module, CapaIntf { * @retval true Successful * @retval false keytype is not found for the given ctrlr type */ - bool GetInstanceCount(unc_keytype_ctrtype_t ctrlr_type, const std::string &version, + bool GetInstanceCount(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, unc_key_type_t keytype, uint32_t &instance_count); /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] keytype Key type. * @param[in] version controller version * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false keytype is not found for the given ctrlr type */ - bool GetCreateCapability(unc_keytype_ctrtype_t ctrlr_type, const std::string &version, + bool GetCreateCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, unc_key_type_t keytype, uint32_t *instnace_count, uint32_t *num_attrs, const uint8_t **attrs); /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] keytype Key type. * @param[in] version controller version * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false keytype is not found for the given ctrlr type */ - bool GetUpdateCapability(unc_keytype_ctrtype_t ctrlr_type, const std::string &version, + bool GetUpdateCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, unc_key_type_t keytype, uint32_t *num_attrs, const uint8_t **attrs); /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] keytype Key type. * @param[in] version controller version * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false keytype is not found for the given ctrlr type */ - bool GetReadCapability(unc_keytype_ctrtype_t ctrlr_type, const std::string &version, + bool GetReadCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, unc_key_type_t keytype, uint32_t *num_attrs, const uint8_t **attrs); /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] keytype Key type. * @param[in] version controller version * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false keytype is not found for the given ctrlr type */ - bool GetStateCapability(unc_keytype_ctrtype_t ctrlr_type, const std::string &version, + bool GetStateCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, unc_key_type_t keytype, uint32_t *num_attrs, const uint8_t **attrs); @@ -182,6 +187,14 @@ class CapaModule : public pfc::core::Module, CapaIntf { std::string config_version, uint8_t pfc_version_major1, uint8_t pfc_version_major2, uint8_t pfc_version_minor, uint8_t pfc_version_update); + +bool GetSupportedVersion(unc_keytype_ctrtype_t ctrlr_type, + std::string config_version, + uint8_t* version_major1, + uint8_t* version_major2, + uint8_t* version_minor, + uint8_t* version_update); + private: struct ActualVersion { int32_t major1; @@ -228,13 +241,12 @@ class CapaModule : public pfc::core::Module, CapaIntf { private: pfc::core::ReadWriteLock *lock_; }; - }; // NOLINT -} /* namespace capctrl */ -} /* namespace unc */ +} // namespace capa +} // namespace unc #endif // CAPABILITY_MGR_HH_ diff --git a/coordinator/modules/capa/ctrlr_capa.cfdef b/coordinator/modules/capa/ctrlr_capa.cfdef index 4edb243a..ec4c0fe1 100644 --- a/coordinator/modules/capa/ctrlr_capa.cfdef +++ b/coordinator/modules/capa/ctrlr_capa.cfdef @@ -1,5 +1,5 @@ % -% Copyright (c) 2012-2013 NEC Corporation +% Copyright (c) 2012-2014 NEC Corporation % All rights reserved. % % This program and the accompanying materials are made available under the @@ -415,3 +415,136 @@ defmap vrouter_interface_flow_filter_entry { dscp = BOOL[4]; priority = BOOL[4]; } + +% *****uppl defs****** + + +defmap controller { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = BOOL[4]; + type = BOOL[4]; + version = BOOL[4]; + ip_address = BOOL[4]; + user = BOOL[4]; + password = BOOL[4]; + enable_audit = BOOL[4]; + port = BOOL[4]; +} +defmap ctr_domain { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + type = BOOL[4]; + description = BOOL[4]; +} + + +defmap logical_port { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = BOOL[4]; + port_type = BOOL[4]; + switch_id = BOOL[4]; + physical_port_id = BOOL[4]; + oper_down_criteria = BOOL[4]; +} +defmap switch { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = BOOL[4]; + model = BOOL[4]; + ip_address = BOOL[4]; + ipv6_address = BOOL[4]; + admin_status = BOOL[4]; + domain_name = BOOL[4]; +} + +defmap port { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + port_number = BOOL[4]; + description = BOOL[4]; + admin_status = BOOL[4]; + trunk_allowed_vlan = BOOL[4]; +} + +defmap link { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = BOOL[4]; +} + +defmap boundary { + instance_count = UINT32; + + description = BOOL[4]; + controller_name1 = BOOL[4]; + domain_name1 = BOOL[4]; + logical_port_id1 = BOOL[4]; + controller_name2 = BOOL[4]; + domain_name2 = BOOL[4]; + logical_port_id2 = BOOL[4]; +} + +defmap ctr_dataflow { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + + controller_name = BOOL[4]; + controller_type = BOOL[4]; + flow_id = BOOL[4]; + status = BOOL[4]; + flow_type = BOOL[4]; + policy_index = BOOL[4]; + vtn_id = BOOL[4]; + ingress_switch_id = BOOL[4]; + in_port = BOOL[4]; + in_station_id = BOOL[4]; + in_domain = BOOL[4]; + egress_switch_id = BOOL[4]; + out_port = BOOL[4]; + out_station_id = BOOL[4]; + out_domain = BOOL[4]; + path_info_count = BOOL[4]; + match_count = BOOL[4]; + action_count = BOOL[4]; + +} + +defmap dataflow { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + + controller_name = BOOL[4]; + controller_type = BOOL[4]; + flow_id = BOOL[4]; + status = BOOL[4]; + flow_type = BOOL[4]; + policy_index = BOOL[4]; + vtn_id = BOOL[4]; + ingress_switch_id = BOOL[4]; + in_port = BOOL[4]; + in_station_id = BOOL[4]; + in_domain = BOOL[4]; + egress_switch_id = BOOL[4]; + out_port = BOOL[4]; + out_station_id = BOOL[4]; + out_domain = BOOL[4]; + path_info_count = BOOL[4]; + match_count = BOOL[4]; + action_count = BOOL[4]; +} + +defmap vtn_dataflow { + instance_count = UINT32; + + % 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ +} diff --git a/coordinator/modules/capa/ctrlr_capa_defines.cc b/coordinator/modules/capa/ctrlr_capa_defines.cc index ef44eb33..1ded3e78 100644 --- a/coordinator/modules/capa/ctrlr_capa_defines.cc +++ b/coordinator/modules/capa/ctrlr_capa_defines.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -62,7 +62,6 @@ KtAttrMap kam_dhcp_relay_server[] = { }; KtAttrMap kam_dhcp_relay_interface[] = { - }; KtAttrMap kam_static_ip_route[] = { @@ -289,7 +288,44 @@ KtAttrMap kam_vrouter_if_flow_filter_entry[] = { { "dscp", vrt_if_flowfilter_entry::kCapDscp }, { "priority", vrt_if_flowfilter_entry::kCapPriority } }; +// ****************adding for physical module***********/ + +KtAttrMap kam_controller[] = { + { "type", controller::kType}, + { "version", controller::kVersion}, + { "description", controller::kDescription}, + { "ip_address", controller::kIp_address}, + { "user", controller::kUser_name}, + { "password", controller::kPassword}, + { "enable_audit", controller::kEnableAudit} +}; +KtAttrMap kam_ctr_domain[] = { +}; + + +KtAttrMap kam_logical_port[] = { +}; + +KtAttrMap kam_switch[] = { +}; + +KtAttrMap kam_port[] = { +}; + +KtAttrMap kam_link[] = { +}; + +KtAttrMap kam_boundary[] = { +}; +KtAttrMap kam_ctr_data_flow[] = { +}; + +KtAttrMap kam_data_flow[] = { +}; + +KtAttrMap kam_vtn_dataflow[] = { +}; #ifndef ARRAY_SIZE #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) #endif @@ -305,13 +341,17 @@ KtMap kt_map[] = { &kam_vbr_if[0] }, { "vrouter", UNC_KT_VROUTER, ARRAY_SIZE(kam_vrouter), &kam_vrouter[0] }, - { "dhcp_relay_server", UNC_KT_DHCPRELAY_SERVER, ARRAY_SIZE(kam_dhcp_relay_server), + { "dhcp_relay_server", UNC_KT_DHCPRELAY_SERVER, + ARRAY_SIZE(kam_dhcp_relay_server), &kam_dhcp_relay_server[0] }, - { "dhcp_relay_interface", UNC_KT_DHCPRELAY_IF, ARRAY_SIZE(kam_dhcp_relay_interface), + { "dhcp_relay_interface", UNC_KT_DHCPRELAY_IF, + ARRAY_SIZE(kam_dhcp_relay_interface), &kam_dhcp_relay_interface[0] }, - { "static_ip_route", UNC_KT_VRT_IPROUTE, ARRAY_SIZE(kam_static_ip_route), + { "static_ip_route", UNC_KT_VRT_IPROUTE, + ARRAY_SIZE(kam_static_ip_route), &kam_static_ip_route[0] }, - { "vrouter_interface", UNC_KT_VRT_IF, ARRAY_SIZE(kam_vrouter_interface), + { "vrouter_interface", UNC_KT_VRT_IF, + ARRAY_SIZE(kam_vrouter_interface), &kam_vrouter_interface[0] }, #if 0 { "vunknown", UNC_KT_VUNKNOWN, ARRAY_SIZE(kam_vunknown), @@ -335,7 +375,8 @@ KtMap kt_map[] = { &kam_vlink[0] }, { "network_monitor_group", UNC_KT_VBR_NWMONITOR, ARRAY_SIZE(kam_nwm), &kam_nwm[0] }, - { "network_monitor_ip_host", UNC_KT_VBR_NWMONITOR_HOST, ARRAY_SIZE(kam_nwm_host), + { "network_monitor_ip_host", UNC_KT_VBR_NWMONITOR_HOST, + ARRAY_SIZE(kam_nwm_host), &kam_nwm_host[0] }, { "flow_list", UNC_KT_FLOWLIST, @@ -393,6 +434,24 @@ KtMap kt_map[] = { ARRAY_SIZE(kam_vrouter_if_flow_filter_entry), &kam_vrouter_if_flow_filter_entry[0] }, + { "controller", UNC_KT_CONTROLLER, ARRAY_SIZE(kam_controller), + &kam_controller[0] }, + { "ctr_domain", UNC_KT_CTR_DOMAIN, ARRAY_SIZE(kam_ctr_domain), + &kam_ctr_domain[0] }, + { "switch", UNC_KT_SWITCH, ARRAY_SIZE(kam_switch), + &kam_switch[0] }, + { "port", UNC_KT_PORT, ARRAY_SIZE(kam_port), + &kam_port[0] }, + { "link", UNC_KT_LINK, ARRAY_SIZE(kam_link), + &kam_link[0] }, + { "boundary", UNC_KT_BOUNDARY, ARRAY_SIZE(kam_boundary), + &kam_boundary[0] }, + { "dataflow", UNC_KT_DATAFLOW, ARRAY_SIZE(kam_data_flow), + &kam_data_flow[0] }, + { "ctr_dataflow", UNC_KT_CTR_DATAFLOW, ARRAY_SIZE(kam_ctr_data_flow), + &kam_ctr_data_flow[0] }, + { "vtn_dataflow", UNC_KT_VTN_DATAFLOW, ARRAY_SIZE(kam_vtn_dataflow), + &kam_vtn_dataflow[0] }, { NULL, UNC_KT_ROOT, 0, NULL } }; diff --git a/coordinator/modules/capa/ctrlr_capability.cc b/coordinator/modules/capa/ctrlr_capability.cc index 0c1f877d..a42acaf3 100644 --- a/coordinator/modules/capa/ctrlr_capability.cc +++ b/coordinator/modules/capa/ctrlr_capability.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -322,7 +322,7 @@ KtAttrCapability::~KtAttrCapability() { bool KtAttrCapability::Init(uint32_t num_attrs) { num_attrs_ = num_attrs; - if (num_attrs == 0 ) { + if ( num_attrs == 0 ) { // KTs without any configuration attributes exist. // Just to avoid null pointers, and zero size allocation, keep 1 byte memory // Class varaible num_attrs_ still will be zero @@ -400,5 +400,5 @@ bool KtAttrCapability::GetStateCapability(uint32_t *num_attrs, *state = (const uint8_t *)state_cap_; return true; } -} /* capa */ -} /* unc */ +} // namespace capa +} // namespace unc diff --git a/coordinator/modules/capa/include/capa_intf.hh b/coordinator/modules/capa/include/capa_intf.hh index b9d9fc78..f6d80398 100644 --- a/coordinator/modules/capa/include/capa_intf.hh +++ b/coordinator/modules/capa/include/capa_intf.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -40,14 +40,14 @@ class CapaIntf { /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] ctrlr_type controller type. * @param[in] version controller version * @param[in] keytype Key type. * @param[out] instance_count Instance count for specified keytype. * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false controller or keytype is not found */ @@ -60,13 +60,13 @@ class CapaIntf { /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] ctrlr_type controller type. * @param[in] version controller version * @param[in] keytype Key type. * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false controler or keytype is not found */ @@ -78,13 +78,13 @@ class CapaIntf { /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] ctrlr_type controller type. * @param[in] version controller version * @param[in] keytype Key type. * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false controller or keytype is not found */ @@ -96,13 +96,13 @@ class CapaIntf { /** * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * + * * @param[in] ctrlr_type controller type. * @param[in] version controller version * @param[in] keytype Key type. * @param[out] num_attrs Maximum attribute for specified key type * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * + * * @retval true Successful * @retval false controller or keytype is not found */ @@ -118,7 +118,7 @@ class CapaIntf { static const uint32_t kNumberOfAvailability = 4; }; // NOLINT -} /* namespace capctrl */ -} /* namespace unc */ +} // namespace capa +} // namespace unc #endif // CAPA_INTF_HH_ diff --git a/coordinator/modules/capa/include/ctrlr_capa_defines.hh b/coordinator/modules/capa/include/ctrlr_capa_defines.hh index 72207ef3..291f23b9 100644 --- a/coordinator/modules/capa/include/ctrlr_capa_defines.hh +++ b/coordinator/modules/capa/include/ctrlr_capa_defines.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -45,7 +45,7 @@ enum vtn_neighbor { kCapConnectedIfName, kCapConnectedVlinkName }; -} // namespace vtn_neighbor +} // namespace vtn_neighbor namespace vbr { enum vbr { @@ -86,14 +86,14 @@ enum vrt { namespace dhcp_relay_server { enum dhcp_relay_server { - // kCapServerAddr = 0 + // kCapServerAddr = 0 }; -} //namespace dhcp_relay_server +} // namespace dhcp_relay_server namespace dhcp_relay_if { enum dhcp_relay_if { }; -}//namespace dhcp_relay_if +} // namespace dhcp_relay_if namespace static_ip_route { enum static_ip_route { @@ -287,7 +287,7 @@ enum vtn_flowfilter_entry { namespace vtn_flowfilter_controller { enum vtn_flowfilter_controller { - kCapDirection=0, + kCapDirection = 0, kCapSeqNum }; } // namesapce vtn_flowfilter_controller @@ -297,7 +297,7 @@ namespace vtn_policingmap { enum vtn_policingmap { kCapPolicername = 0 }; -} // namespace vbr_policingmap +} // namespace vtn_policingmap // UNC_KT_VTN_POLICINGMAP_CONTROLLER namespace vtn_policingmap_controller { @@ -326,7 +326,7 @@ enum vbr_flowfilter_entry { kCapDscp, kCapPriority }; -} // namespace vbridge_flowfilter_entry +} // namespace vbr_flowfilter_entry // UNC_KT_VBR_POLICINGMAP namespace vbr_policingmap { @@ -346,7 +346,7 @@ enum vbr_policingmap_entry { namespace vbr_if_flowfilter { enum vbr_if_flowfilter { }; -} // namespace vbrif_flowfilter +} // namespace vbr_if_flowfilter // UNC_KT_VBRIF_FLOWFILTER_ENTRY @@ -362,21 +362,21 @@ enum vbr_if_flowfilter_entry { kCapDscp, kCapPriority }; -} // namespace vbridge_if_flowfilter_entry +} // namespace vbr_if_flowfilter_entry // UNC_KT_VBRIF_POLICINGMAP namespace vbr_if_policingmap { enum vbr_if_policingmap { kCapPolicername = 0 }; -} // namespace vbrif_policingmap +} // namespace vbr_if_policingmap // UNC_KT_VBRIF_POLICINGMAP_ENTRY namespace vbr_if_policingmap_entry { enum vbr_if_policingmap_entry { }; -} // namespace vbrif_policingmap_entry +} // namespace vbr_if_policingmap_entry // UNC_KT_VRTIF_FLOWFILTER @@ -398,8 +398,29 @@ enum vrt_if_flowfilter_entry { kCapDscp, kCapPriority }; -} // namespace vrouter_if_flowfilter_entry - +} // namespace vrt_if_flowfilter_entry +// UNC_KT_CONTROLLER +namespace controller { +enum controller { + kType = 0, + kVersion, + kDescription, + kIp_address, + kUser_name, + kPassword, + kEnableAudit, + kActualVersion, + kOperStatus, + kValid, + kCsrowstatus, + kCsattr +}; +} // namespace controller +// UNC_KT_VTN_DATAFLOW +namespace vtn_dataflow { +enum vtn_dataflow { +}; +} // namespace vtn_dataflow } // namespace capa } // namespace unc diff --git a/coordinator/modules/capa/pfc_capa.conf b/coordinator/modules/capa/pfc_capa.conf index 37e38ead..dd3ffcff 100644 --- a/coordinator/modules/capa/pfc_capa.conf +++ b/coordinator/modules/capa/pfc_capa.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -14,7 +14,7 @@ # Version definitions. version_list { names = [ - "5.0" + "5.0", "5.1" ]; } @@ -23,11 +23,17 @@ version_definition "5.0" { actual_version = [5, 0, -1, -1]; } +version_definition "5.1" { + parent = "5.0"; + actual_version_count = 1; + actual_version = [5, 1, -1, -1]; +} + # Capability definitions. vtn "5.0" { - instance_count = 1000; + instance_count = 0; # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ description = [ true, true, true, true ]; @@ -38,7 +44,7 @@ vtn "5.0" { } vbridge "5.0" { - instance_count = 10000; + instance_count = 0; # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ domain_id = [ true, true, true, true ]; @@ -93,7 +99,7 @@ dhcp_relay_interface "5.0" { } static_ip_route "5.0" { - instance_count = 65535; + instance_count = 0; # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ group_metric = [ false, false, false, false ]; @@ -135,7 +141,7 @@ network_monitor_group "5.0" { } network_monitor_ip_host "5.0" { - instance_count = 1000; + instance_count = 0; # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ health_interval = [ true, true, true, true ]; @@ -338,3 +344,213 @@ vrouter_interface_flow_filter_entry "5.0" { dscp = [ true, true, true, true ]; priority = [ true, true, true, true ]; } + +# Capability definitions "5.0" and "5.1" + +controller "5.0" { + instance_count = 1; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + type = [ true, true, true, true ]; + version = [ true, true, true, true ]; + description = [ true, true, true, true ]; + ip_address = [ true, true, true, true ]; + user = [ true, true, true, true ]; + password = [ true, true, true, true ]; + enable_audit = [ true, true, true, true ]; +} + +controller "5.1" { + instance_count = 1; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + type = [ true, true, true, true ]; + version = [ true, true, true, true ]; + description = [ true, true, true, true ]; + ip_address = [ true, true, true, true ]; + user = [ true, true, true, true ]; + password = [ true, true, true, true ]; + enable_audit = [ true, true, true, true ]; +} + +ctr_domain "5.0" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + type = [ true, true, true, true ]; + description = [ true, true, true, true ]; +} + +ctr_domain "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + type = [ true, true, true, true ]; + description = [ true, true, true, true ]; +} + +logical_port "5.0" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = [ true, true, true, true ]; + port_type = [ true, true, true, true ]; + switch_id = [ true, true, true, true ]; + physical_port_id = [ true, true, true, true ]; + oper_down_criteria = [ true, true, true, true ]; +} + +logical_port "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = [ true, true, true, true ]; + port_type = [ true, true, true, true ]; + switch_id = [ true, true, true, true ]; + physical_port_id = [ true, true, true, true ]; + oper_down_criteria = [ true, true, true, true ]; +} + + +switch "5.0" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = [ true, true, true, true ]; + model = [ true, true, true, true ]; + ip_address = [ true, true, true, true ]; + ipv6_address = [ true, true, true, true ]; + admin_status = [ true, true, true, true ]; + domain_name = [ true, true, true, true ]; +} + +switch "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = [ true, true, true, true ]; + model = [ true, true, true, true ]; + ip_address = [ true, true, true, true ]; + ipv6_address = [ true, true, true, true ]; + admin_status = [ true, true, true, true ]; + domain_name = [ true, true, true, true ]; +} + +port "5.0" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + port_number = [ true, true, true, true ]; + description = [ true, true, true, true ]; + admin_status = [ true, true, true, true ]; + trunk_allowed_vlan = [ true, true, true, true ]; +} + +port "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + port_number = [ true, true, true, true ]; + description = [ true, true, true, true ]; + admin_status = [ true, true, true, true ]; + trunk_allowed_vlan = [ true, true, true, true ]; +} + + +link "5.0" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = [ true, true, true, true ]; +} + +link "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + description = [ true, true, true, true ]; +} + + +boundary "5.0" { + instance_count = 0; + + description = [ true, true, true, true ]; + controller_name1 = [ true, true, true, true ]; + domain_name1 = [ true, true, true, true ]; + logical_port_id1 = [ true, true, true, true ]; + controller_name2 = [ true, true, true, true ]; + domain_name2 = [ true, true, true, true ]; + logical_port_id2 = [ true, true, true, true ]; + +} + +boundary "5.1" { + instance_count = 0; + + description = [ true, true, true, true ]; + controller_name1 = [ true, true, true, true ]; + domain_name1 = [ true, true, true, true ]; + logical_port_id1 = [ true, true, true, true ]; + controller_name2 = [ true, true, true, true ]; + domain_name2 = [ true, true, true, true ]; + logical_port_id2 = [ true, true, true, true ]; + +} + + +ctr_dataflow "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + + controller_name = [ false, false, false, true ]; + controller_type = [ false, false, false, true ]; + flow_id = [ false, false, false, true ]; + status = [ false, false, false, true ]; + flow_type = [ false, false, false, true ]; + policy_index = [ false, false, false, true ]; + vtn_id = [ false, false, false, true ]; + ingress_switch_id = [ false, false, false, true ]; + in_port = [ false, false, false, true ]; + in_station_id = [ false, false, false, true ]; + in_domain = [ false, false, false, true ]; + egress_switch_id = [ false, false, false, true ]; + out_port = [ false, false, false, true ]; + out_station_id = [ false, false, false, true ]; + out_domain = [ false, false, false, true ]; + path_info_count = [ false, false, false, true ]; + match_count = [ false, false, false, true ]; + action_count = [ false, false, false, true ]; +} + +dataflow "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ + + controller_name = [ false, false, false, true ]; + controller_type = [ false, false, false, true ]; + flow_id = [ false, false, false, true ]; + status = [ false, false, false, true ]; + flow_type = [ false, false, false, true ]; + policy_index = [ false, false, false, true ]; + vtn_id = [ false, false, false, true ]; + ingress_switch_id = [ false, false, false, true ]; + in_port = [ false, false, false, true ]; + in_station_id = [ false, false, false, true ]; + in_domain = [ false, false, false, true ]; + egress_switch_id = [ false, false, false, true ]; + out_port = [ false, false, false, true ]; + out_station_id = [ false, false, false, true ]; + out_domain = [ false, false, false, true ]; + path_info_count = [ false, false, false, true ]; + match_count = [ false, false, false, true ]; + action_count = [ false, false, false, true ]; +} + +vtn_dataflow "5.1" { + instance_count = 0; + + # 0:CONF_CREATE, 1:CONF_UPDATE, 2:CONF_READ, 3:STATE_READ +} diff --git a/coordinator/modules/dal/dal_bind_column_info.cc b/coordinator/modules/dal/dal_bind_column_info.cc index a8119131..da019208 100644 --- a/coordinator/modules/dal/dal_bind_column_info.cc +++ b/coordinator/modules/dal/dal_bind_column_info.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -178,12 +178,6 @@ DalBindColumnInfo::UpdateColumnInfo(const DalTableIndex table_index, return false; } - if (io_type_ == io_type && io_code == kDalIoCodeInput) { - UPLL_LOG_TRACE("Overwriting Input Bind Information for Table(%s)" - " Column(%s): ", schema::TableName(table_index), - schema::ColumnName(table_index, column_index_)); - return false; - } io_type_ = io_type; // One time updation of properties @@ -531,7 +525,6 @@ DalBindColumnInfo::AllocateColBuffer(void **col_buff, // Resets the DAL output buffer to store further results bool DalBindColumnInfo::ResetDalOutputBuffer(const DalTableIndex table_index) { - // Validating table_index if (table_index >= schema::table::kDalNumTables) { UPLL_LOG_DEBUG("Invalid table(%s) for Column(%s)", @@ -697,7 +690,6 @@ void DalBindColumnInfo::GetCopyDataType(const DalCDataType app_data_type, const SQLSMALLINT dal_data_type, DalDataTypeCode *data_type_code) { - *data_type_code = kDalDtCodeInvalid; switch (dal_data_type) { case SQL_C_CHAR: @@ -1331,7 +1323,7 @@ DalBindColumnInfo::ColInfoToStr(const DalTableIndex table_index) const { << "\n App Array Size : " << app_array_size_ << "\n Bind Type : " << DalIoTypeToStr(io_type_); if (app_out_addr_ != NULL) { - ss << "\n App Output Address : " << app_out_addr_ + ss << "\n App Output Address : " << app_out_addr_ << "\n App Output Value : " << ValueInBindAddrToStr(table_index, const_cast(&app_out_addr_)); @@ -1526,7 +1518,7 @@ std::string DalBindColumnInfo::AppValueToStr(const DalCDataType app_data_type, const void **addr) const { std::stringstream ss; - + if (addr == NULL || *addr == NULL) { ss << "(null)"; return ss.str(); diff --git a/coordinator/modules/dal/dal_bind_column_info.hh b/coordinator/modules/dal/dal_bind_column_info.hh index 7d3ac0ee..404cb379 100644 --- a/coordinator/modules/dal/dal_bind_column_info.hh +++ b/coordinator/modules/dal/dal_bind_column_info.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -11,7 +11,7 @@ /** * dal_bind_column_info.hh * Contains bind information for each column defined in the schema - */ + */ #ifndef __DAL_BIND_COLUMN_INFO__HH__ #define __DAL_BIND_COLUMN_INFO__HH__ @@ -370,7 +370,7 @@ class DalBindColumnInfo { DalIoType io_type_; // IO type to specify the column binding void *app_out_addr_; // DAL user buffer for output. The result - // will be stored to this address after + // will be stored to this address after // successful query execution/fetch results void *db_in_out_addr_; // DAL buffer contains input/output value diff --git a/coordinator/modules/dal/dal_bind_info.cc b/coordinator/modules/dal/dal_bind_info.cc index c7730756..7855ffa5 100644 --- a/coordinator/modules/dal/dal_bind_info.cc +++ b/coordinator/modules/dal/dal_bind_info.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -254,7 +254,7 @@ DalBindInfo::ResetDalOutBuffer(void) { col_info->get_io_type() == kDalIoOutputAndMatch) { if (col_info->ResetDalOutputBuffer(table_index_) != true) { UPLL_LOG_DEBUG("Failed Restting DAL output buffer for Column(%s) " - "in Table(%s)", + "in Table(%s)", schema::ColumnName(table_index_, col_info->get_column_index()), schema::TableName(table_index_)); @@ -338,7 +338,7 @@ DalBindInfo::BindAttribute(const DalIoCode io_code, // Create new DalBindColumnInfo instance if // 1. there is no instance available - // 2. there is an instance and binding is already done. + // 2. there is an instance and binding is already done. // Update the exisiting instance if binding is not done before. for (iter = bind_list_.begin(); iter != bind_list_.end(); ++iter) { col_info = *iter; diff --git a/coordinator/modules/dal/dal_bind_info.hh b/coordinator/modules/dal/dal_bind_info.hh index 7770abd7..f321c708 100644 --- a/coordinator/modules/dal/dal_bind_info.hh +++ b/coordinator/modules/dal/dal_bind_info.hh @@ -1,25 +1,26 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -/* - * dal_info.hh +/* + * dal_info.hh * Contians information and buffers from dal user for all the columns * in a specific table * The buffers store the input values from dal user to databse and * the output values from database to dal user. - */ + */ #ifndef __DAL_BIND_INFO__HH__ #define __DAL_BIND_INFO__HH__ #include #include +#include #include #include "dal_schema.hh" #include "dal_bind_column_info.hh" diff --git a/coordinator/modules/dal/dal_conn_intf.hh b/coordinator/modules/dal/dal_conn_intf.hh index e216fd12..6a61f8ad 100644 --- a/coordinator/modules/dal/dal_conn_intf.hh +++ b/coordinator/modules/dal/dal_conn_intf.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,6 +28,11 @@ enum DalConnType { kDalConnReadWrite // Read Write Connection }; +enum DalConnState { + kDalDbDisconnected = 0, // DB disconnected + kDalDbConnected // DB connected +}; + /** * DalConnIntf * Connection and Transaction APIs for database diff --git a/coordinator/modules/dal/dal_cursor.cc b/coordinator/modules/dal/dal_cursor.cc index d295821b..56517bbb 100644 --- a/coordinator/modules/dal/dal_cursor.cc +++ b/coordinator/modules/dal/dal_cursor.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -183,7 +183,7 @@ DalCursor::CloseStmtHandle(SQLHANDLE stmt_handle) { if (free_dal_rc != kDalRcSuccess) { UPLL_LOG_TRACE("Err - %d. Failed to Free Handle %p", free_dal_rc, stmt_handle); - return ((dal_rc == kDalRcSuccess) ? free_dal_rc : dal_rc); + return ((dal_rc == kDalRcSuccess) ? free_dal_rc : dal_rc); } } stmt_handle = NULL; diff --git a/coordinator/modules/dal/dal_defines.hh b/coordinator/modules/dal/dal_defines.hh index 30ed5c44..c315f087 100644 --- a/coordinator/modules/dal/dal_defines.hh +++ b/coordinator/modules/dal/dal_defines.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -45,16 +45,16 @@ enum DalResultCode { kDalRcConnNotAvailable, // For all DCI and DMI APIs kDalRcNotDisconnected, // For DCI interface DisconnectFromDB kDalRcTxnError, // For DCI interaces Commit/RollbackTransaction - // TODO(sankar): It should be internal to DAL. DAL user does not have + // This should be internal to DAL. DAL user does not have // knowledge about Conn Handle kDalRcInvalidConnHandle, // For DCI and DMI interfaces kDalRcInvalidCursor, // For DMI interface GetNextRecord/CloseCursor kDalRcDataError, // For all DMI Interfaces - // TODO(sankar): kDalRcRecordAlreadyExists not taken care kDalRcRecordAlreadyExists, // For DMI interface CreateRecord API + kDalRcParentNotFound, // For DMI interface CreateRecord API kDalRcRecordNotFound, // For DMI interfaces Get/Update APIs kDalRcRecordNoMore, // For DMI interface GetNextRecord - // TODO(sankar): kDalRcAccessViolation not taken care + // kDalRcAccessViolation not taken care kDalRcAccessViolation, // For DMI Edit Interface with RO conn kDalRcConnTimeOut, // For DCI and DMI interfaces kDalRcQueryTimeOut, // For all DMI interfaces diff --git a/coordinator/modules/dal/dal_dml_intf.hh b/coordinator/modules/dal/dal_dml_intf.hh index 99d510b3..496161fc 100644 --- a/coordinator/modules/dal/dal_dml_intf.hh +++ b/coordinator/modules/dal/dal_dml_intf.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -11,14 +11,15 @@ * dal_dml_intf.hh * Contains definition of DalDmlIntf * DML interface of database - * + * * Implemented by DalOdbcMgr - */ + */ #ifndef __DAL_DML_INTF_HH__ #define __DAL_DML_INTF_HH__ #include +#include #include "dal_defines.hh" #include "dal_bind_info.hh" #include "dal_schema.hh" @@ -29,7 +30,7 @@ namespace upll { namespace dal { /** - * DalConnIntf + * DalConnIntf * Database management query APIs for database * * Inherited by DalOdbcMgr @@ -378,11 +379,12 @@ class DalDmlIntf { */ virtual DalResultCode DeleteRecords(const UpllCfgType cfg_type, const DalTableIndex table_index, - const DalBindInfo *matching_attr_info) const = 0; + const DalBindInfo + *matching_attr_info) const = 0; /** * CreateRecord - * Creates the record in table with the given input data for + * Creates the record in table with the given input data for * the given cfg_type * * @param[in] cfg_type - Configuration Type for which the record @@ -622,12 +624,13 @@ class DalDmlIntf { virtual DalResultCode CopyEntireRecords(const UpllCfgType dest_cfg_type, const UpllCfgType src_cfg_type, const DalTableIndex table_index, - const DalBindInfo *output_attr_info) const = 0; + const DalBindInfo + *output_attr_info) const = 0; /** * CopyModifiedRecords - * Copies the entire records of table from source configuration to - * destination configuration. + * Copies the modified records of table from source configuration to + * destination configuration based on the operation. * * @param[in] dest_cfg_type - Configuration Type where the records to be * copied (not equal to src_cfg_type) @@ -637,20 +640,23 @@ class DalDmlIntf { * @param[in] output_and_match_attr_info * - Bind Information for output and match * - columns + * @param[in] op - Operation to be performed for Copy. * * @return DalResultCode - kDalRcSuccess in case of success * - Valid errorcode otherwise * On successful execution, both the - * configurations have same records + * configurations have same records. * * Note: * Information on Copy Logic - * 1. Remvoe the records from dest_cfg_type that are result of - * GetDeletedRecords(dest_cfg_type, src_cfg_type, ...) - * 2. Add the records in dest_cfg_type that are result of - * GetCreatedRecords(dest_cfg_type, src_cfg_type, ...) - * 3. Update the records in dest_cfg_type with the records from - * src_cfg_type that are result of + * 1. For DELETE operation, Remove the records from dest_cfg_type that are + * result of GetDeletedRecords(dest_cfg_type, src_cfg_type, ...) + * This should be called for Child schema first and then parent schema + * if Parent-Child relationship is established. + * 2. For CREATE operation, Add the records in dest_cfg_type that are + * result of GetCreatedRecords(dest_cfg_type, src_cfg_type, ...) + * 3. For UPDATE operation, Update the records in dest_cfg_type with the + * records from src_cfg_type that are result of * GetUpdatedRecords(dest_cfg_type, src_cfg_type, ...) * 4. Recommended to use this API, where difference between both the * configurations are comparitively lesser. @@ -682,50 +688,9 @@ class DalDmlIntf { const UpllCfgType dest_cfg_type, const UpllCfgType src_cfg_type, const DalTableIndex table_index, - const DalBindInfo *output_and_match_attr_info) const = 0; + const DalBindInfo *output_and_match_attr_info, + const unc_keytype_operation_t op) const = 0; - /** - * CopyModifiedInsertRecords - * Inserts the additional records of table from source configuration to - * destination configuration. - * - * @param[in] dest_cfg_type - Configuration Type where the records to be - * copied (not equal to src_cfg_type) - * @param[in] src_cfg_type - Configuration Type from where the records - * will be copied (not equal to dest_cfg_type) - * @param[in] table_index - Valid Index of the table - * @param[in] output_and_match_attr_info - * - Bind Information for output and match - * - columns - * - * @return DalResultCode - kDalRcSuccess in case of success - * - Valid errorcode otherwise - * On successful execution, both the - * configurations have same records. - * - * Note: - * Information on Copy Logic - * 1. Add the records in dest_cfg_type that are result of - * GetCreatedRecords(dest_cfg_type, src_cfg_type, ...) - * - * Information on usage of DalBindInfo - * 1. Valid instance of DalBindInfo with same table_index used in this API - * 2. BindInput if used for any attributes, ignored. - * 3. BindMatch if used for any attributes, ignored. - * 4. BindOutput is optional. - * BindOutput, if used, copy the values of bound columns from - * src_cfg_type to dst_cfg_type - * BindOutput, if not used, copy the values of all columns from - * src_cfg_type to dst_cfg_type - * Since the bound value is not used for this API, it is ok to bind - * dummy address. Do not pass NULL address. - * - */ - virtual DalResultCode CopyModifiedInsertRecords( - const UpllCfgType dest_cfg_type, - const UpllCfgType src_cfg_type, - const DalTableIndex table_index, - const DalBindInfo *output_and_match_attr_info) const = 0; /** * CopyMatchingRecords diff --git a/coordinator/modules/dal/dal_error_handler.cc b/coordinator/modules/dal/dal_error_handler.cc index 77a511a9..f73f45d6 100644 --- a/coordinator/modules/dal/dal_error_handler.cc +++ b/coordinator/modules/dal/dal_error_handler.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -121,6 +121,10 @@ static const DalErrMap dal_err_map[] = { // 23000 Integrity Constraint - may not happen in this appln {"23000", kDalRcGeneralError}, + // 23503 Foreign Key violation + {"23503", kDalRcParentNotFound}, + // 23505 Unique Constraint violation + {"23505", kDalRcRecordAlreadyExists}, // 24000 Invalid Cursor State {"24000", kDalRcInvalidCursor}, @@ -293,16 +297,6 @@ DalErrorHandler::ProcessOdbcErrors(const SQLSMALLINT handle_type, const SQLHANDLE handle, const SQLRETURN sql_rc, DalResultCode *dal_rc) { - const uint16_t kDalSqlStateLen = 6; - const uint16_t kDalSqlErrMsgLen = 256; - SQLCHAR sql_state[kDalSqlStateLen]; - SQLCHAR err_msg[kDalSqlErrMsgLen]; - SQLINTEGER err_code = 0; - SQLSMALLINT err_msg_len = 0; - - memset(sql_state, 0, kDalSqlStateLen); - memset(err_msg, 0, kDalSqlErrMsgLen); - switch (sql_rc) { // Success case SQL_SUCCESS: @@ -363,6 +357,12 @@ DalErrorHandler::ProcessOdbcErrors(const SQLSMALLINT handle_type, { SQLRETURN rc = SQL_SUCCESS; uint16_t rec_no = 1; + const uint16_t kDalSqlStateLen = 6; + const uint16_t kDalSqlErrMsgLen = 256; + SQLCHAR sql_state[kDalSqlStateLen]; + SQLCHAR err_msg[kDalSqlErrMsgLen]; + SQLINTEGER err_code = 0; + SQLSMALLINT err_msg_len = 0; do { err_code = 0; diff --git a/coordinator/modules/dal/dal_module.cc b/coordinator/modules/dal/dal_module.cc index 42ecdd99..406dcfce 100644 --- a/coordinator/modules/dal/dal_module.cc +++ b/coordinator/modules/dal/dal_module.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -32,7 +32,8 @@ pfc_bool_t DalModule::init(void) { pfc_bool_t DalModule::fini(void) { pfc_log_notice("Fini"); - DalErrorHandler::ClearErrorMap(); + // There could be transactions in progress. So not clearing error map. + // DalErrorHandler::ClearErrorMap(); return PFC_TRUE; } diff --git a/coordinator/modules/dal/dal_odbc_mgr.cc b/coordinator/modules/dal/dal_odbc_mgr.cc index 620c4429..5e946526 100644 --- a/coordinator/modules/dal/dal_odbc_mgr.cc +++ b/coordinator/modules/dal/dal_odbc_mgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,6 +21,14 @@ #include "dal_query_builder.hh" #include "dal_error_handler.hh" +#define SET_DB_STATE_DISCONNECT(dal_rc, conn_state) \ + if ((dal_rc) == kDalRcConnNotEstablished || \ + (dal_rc) == kDalRcConnNotAvailable || \ + (dal_rc) == kDalRcConnTimeOut || \ + (dal_rc) == kDalRcQueryTimeOut) { \ + (conn_state) = kDalDbDisconnected; \ + } + namespace unc { namespace upll { namespace dal { @@ -30,11 +38,11 @@ DalOdbcMgr::DalOdbcMgr() { dal_env_handle_ = SQL_NULL_HANDLE; dal_conn_handle_ = SQL_NULL_HANDLE; conn_type_ = kDalConnReadOnly; + conn_state_ = kDalDbDisconnected; } /* Desctructor */ DalOdbcMgr::~DalOdbcMgr() { - // TODO(sankar): what if FreeHandle returns error? FreeHandle(SQL_HANDLE_DBC, dal_conn_handle_); FreeHandle(SQL_HANDLE_ENV, dal_env_handle_); } @@ -93,7 +101,6 @@ DalOdbcMgr::Init() { sql_rc, &dal_rc); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to register DB with ODBC V3", dal_rc); - // TODO(sankar): what if FreeHandle returns error? FreeHandle(SQL_HANDLE_ENV, dal_env_handle_); return dal_rc; } @@ -129,8 +136,6 @@ DalResultCode DalOdbcMgr::ConnectToDb(const DalConnType conn_type) const { SQLRETURN sql_rc; DalResultCode dal_rc; - // PFC_ASSERT(dal_env_handle_); - conn_type_ = conn_type; if (dal_conn_handle_ == NULL) { @@ -141,7 +146,8 @@ DalOdbcMgr::ConnectToDb(const DalConnType conn_type) const { // Set Connection Attributes dal_rc = SetConnAttributes(dal_conn_handle_, conn_type); if (dal_rc != kDalRcSuccess) { - UPLL_LOG_TRACE("Err - %d. Some or All Connection Attributes not set", dal_rc); + UPLL_LOG_TRACE("Err - %d. Some or All Connection Attributes not set", + dal_rc); return dal_rc; } @@ -165,6 +171,7 @@ DalOdbcMgr::ConnectToDb(const DalConnType conn_type) const { dal_rc, dal_conn_str.c_str()); return dal_rc; } + conn_state_ = kDalDbConnected; UPLL_LOG_TRACE("Successfully connected to Datatbase with conn string(%s)", dal_conn_str.c_str()); @@ -192,6 +199,7 @@ DalOdbcMgr::DisconnectFromDb() const { "handle(%p)", dal_rc, dal_conn_handle_); return dal_rc; } + conn_state_ = kDalDbDisconnected; UPLL_LOG_TRACE("Successfully Disconnected from Database"); return kDalRcSuccess; } // DalOdbcMgr::DisconnectFromDb @@ -203,7 +211,6 @@ DalOdbcMgr::CommitTransaction(void) const { SQLRETURN sql_rc; DalResultCode dal_rc; - // PFC_ASSERT(dal_conn_handle_); if (dal_conn_handle_ == NULL) { UPLL_LOG_DEBUG("NULL Connection Handle"); return kDalRcGeneralError; @@ -213,6 +220,7 @@ DalOdbcMgr::CommitTransaction(void) const { DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_DBC, dal_conn_handle_, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to commit transaction for the " "handle(%p)", dal_rc, dal_conn_handle_); @@ -240,6 +248,7 @@ DalOdbcMgr::RollbackTransaction(void) const { DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_DBC, dal_conn_handle_, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to rollback transaction for the " "handle(%p)", dal_rc, dal_conn_handle_); @@ -281,7 +290,7 @@ DalOdbcMgr::GetSingleRecord(const UpllCfgType cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -314,6 +323,7 @@ DalOdbcMgr::GetSingleRecord(const UpllCfgType cfg_type, DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, dal_stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("%d - Failed to Fetch result", dal_rc); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); @@ -366,7 +376,7 @@ DalOdbcMgr::GetMultipleRecords(const UpllCfgType cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -420,6 +430,7 @@ DalOdbcMgr::GetNextRecord(const DalCursor *cursor) const { } dal_rc = cursor->GetNextRecord(); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { if (dal_rc == kDalRcRecordNoMore) { @@ -449,6 +460,8 @@ DalOdbcMgr::CloseCursor(DalCursor *cursor, bool delete_bind) const { } dal_rc = cursor->CloseCursor(delete_bind); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); + if (dal_rc != kDalRcSuccess) { UPLL_LOG_TRACE("Error closing Cursor Handle(%p)", cursor); delete cursor; @@ -465,21 +478,75 @@ DalOdbcMgr::RecordExists(const UpllCfgType cfg_type, const DalTableIndex table_index, const DalBindInfo *bind_info, bool *existence) const { + SQLHANDLE dal_stmt_handle = SQL_NULL_HANDLE; + SQLRETURN sql_rc; DalResultCode dal_rc; - uint32_t count; + DalQueryBuilder qbldr; + std::string query_stmt; - *existence = false; - dal_rc = GetRecordCount(cfg_type, table_index, bind_info, &count); + // Validating Inputs + if (cfg_type == UPLL_DT_INVALID) { + UPLL_LOG_DEBUG("Invalid Config Type - %d", cfg_type); + return kDalRcGeneralError; + } + + if (table_index >= schema::table::kDalNumTables) { + UPLL_LOG_DEBUG("Invalid Table Index - %d", table_index); + return kDalRcGeneralError; + } + + // BindInput - NA; BindOutput - NA; BindMatch - Optional + // No need to validate bind_info + if (bind_info != NULL) { + if (table_index != bind_info->get_table_index()) { + UPLL_LOG_DEBUG("Table Index Mismatch with bind info " + "Query - %s; Bind - %s", + schema::TableName(table_index), + schema::TableName(bind_info->get_table_index())); + return kDalRcGeneralError; + } + } + + // Build Query Statement + if (qbldr.get_sql_statement(kDalRecExistsQT, bind_info, query_stmt, + table_index, cfg_type) != true) { + UPLL_LOG_DEBUG("Failed Building Query Stmt"); + return kDalRcGeneralError; + } else { + UPLL_LOG_TRACE("Query Stmt - %s", query_stmt.c_str()); + } + + // Allocate Stmt Handle, Bind and Execute the Query Statement + dal_rc = ExecuteQuery(&dal_stmt_handle, + &query_stmt, + bind_info); if (dal_rc != kDalRcSuccess) { + UPLL_LOG_DEBUG("Err - %d. XXXXX - Failed Executing Query Stmt - %s", + dal_rc, query_stmt.c_str()); + FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); return dal_rc; } + UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", + query_stmt.c_str()); + + // Fetching results from the resultset + SQLLEN row_count = 0; + sql_rc = SQLRowCount(dal_stmt_handle, &row_count); + DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, + dal_stmt_handle, + sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); - if (count > 0) { - *existence = true; + if (dal_rc != kDalRcSuccess) { + UPLL_LOG_DEBUG("Err - %d. XXXXX - Failed to fetch result from DB", dal_rc); + FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); + return dal_rc; } + *existence = (row_count > 0) ? true : false; UPLL_LOG_TRACE("Completed Executing RecordExists and result of" " existence is %d", *existence); + FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); return kDalRcSuccess; } @@ -515,7 +582,7 @@ DalOdbcMgr::GetSiblingBegin(const UpllCfgType cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -585,7 +652,7 @@ DalOdbcMgr::GetSiblingRecords(const UpllCfgType cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -654,7 +721,7 @@ DalOdbcMgr::GetSiblingCount(const UpllCfgType cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -738,7 +805,7 @@ DalOdbcMgr::GetRecordCount(const UpllCfgType cfg_type, if (bind_info != NULL) { if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -784,6 +851,7 @@ DalOdbcMgr::GetRecordCount(const UpllCfgType cfg_type, DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, dal_stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to fetch result from DB", dal_rc); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); @@ -821,7 +889,7 @@ DalOdbcMgr::DeleteRecords(const UpllCfgType cfg_type, if (bind_info != NULL) { if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -846,14 +914,141 @@ DalOdbcMgr::DeleteRecords(const UpllCfgType cfg_type, UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", dal_rc, query_stmt.c_str()); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); + if (dal_rc == kDalRcParentNotFound) { + UPLL_LOG_DEBUG + ("Foreign Key Violation error. Returning kDalRcGeneralError"); + dal_rc = kDalRcGeneralError; + } return dal_rc; } UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", query_stmt.c_str()); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); + + // Storing dirty table list for skip unmodified tables during commit + if (cfg_type == UPLL_DT_CANDIDATE) { + delete_dirty.insert(table_index); + } return kDalRcSuccess; } // DalOdbcMgr::DeleteRecords +DalResultCode +DalOdbcMgr::CheckParentInstance(const UpllCfgType cfg_type, + const DalTableIndex table_index, + const DalBindInfo *bind_info) const { + UPLL_FUNC_TRACE; + DalResultCode dal_rc; + + if (bind_info->get_input_bind_count() == 0) { + UPLL_LOG_DEBUG("No Input bind data for ParentCheck"); + return kDalRcGeneralError; + } + + // Create Bind Info for Instance Check + DalBindInfo ci_binfo(schema::TableParentIndex(table_index)); + DalBindList bind_list = bind_info->get_bind_list(); + for (DalBindList::iterator iter = bind_list.begin(); + iter != bind_list.end(); ++iter) { + // Break for loop when all Foreign Keys bound + if (ci_binfo.get_input_bind_count() == + schema::TableNumFkCols(table_index)) { + break; + } + + DalBindColumnInfo *col_info = NULL; + col_info = reinterpret_cast(*iter); + if (col_info == NULL) { + UPLL_LOG_DEBUG("Invalid column Info"); + return kDalRcGeneralError; + } + + // Bind only for Input and Foreign Key indices + if ((col_info->get_io_type() != kDalIoInputOnly && + col_info->get_io_type() != kDalIoInputAndMatch) || + col_info->get_column_index() >= schema::TableNumFkCols(table_index)) { + continue; + } + + if (!ci_binfo.BindMatch(col_info->get_column_index(), + col_info->get_app_data_type(), + col_info->get_app_array_size(), + col_info->get_db_in_out_addr())) { + UPLL_LOG_DEBUG("Error Binding Match for Parent Check"); + return kDalRcGeneralError; + } + } + UPLL_LOG_VERBOSE("Constructed Bind Info for Parent Check : %s", + ci_binfo.BindListToStr().c_str()); + + // Call RecordExists with the newly created BindInfo + bool existence; + dal_rc = RecordExists(cfg_type, schema::TableParentIndex(table_index), + &ci_binfo, &existence); + if (dal_rc == kDalRcSuccess) { + return ((existence == true) ? kDalRcRecordAlreadyExists + : kDalRcRecordNotFound); + } + return dal_rc; +} + +DalResultCode +DalOdbcMgr::CheckInstance(const UpllCfgType cfg_type, + const DalTableIndex table_index, + const DalBindInfo *bind_info) const { + UPLL_FUNC_TRACE; + DalResultCode dal_rc; + + if (bind_info->get_input_bind_count() == 0) { + UPLL_LOG_DEBUG("No Input bind data for CheckInstance"); + return kDalRcGeneralError; + } + + // Create Bind Info for Instance Check + DalBindInfo ci_binfo(table_index); + DalBindList bind_list = bind_info->get_bind_list(); + for (DalBindList::iterator iter = bind_list.begin(); + iter != bind_list.end(); ++iter) { + // Break for loop when all Foreign Keys bound + if (ci_binfo.get_input_bind_count() == + schema::TableNumPkCols(table_index)) { + break; + } + + DalBindColumnInfo *col_info = NULL; + col_info = reinterpret_cast(*iter); + if (col_info == NULL) { + UPLL_LOG_DEBUG("Invalid column Info"); + return kDalRcGeneralError; + } + + // Bind only for Input and Foreign Key indices + if ((col_info->get_io_type() != kDalIoInputOnly && + col_info->get_io_type() != kDalIoInputAndMatch) || + col_info->get_column_index() >= schema::TableNumPkCols(table_index)) { + continue; + } + + if (!ci_binfo.BindMatch(col_info->get_column_index(), + col_info->get_app_data_type(), + col_info->get_app_array_size(), + col_info->get_db_in_out_addr())) { + UPLL_LOG_DEBUG("Error Binding Match for Instance Check"); + return kDalRcGeneralError; + } + } + UPLL_LOG_VERBOSE("Constructed Bind Info for Instance Check : %s", + ci_binfo.BindListToStr().c_str()); + + // Call RecordExists with the existing BindInfo + bool existence; + dal_rc = RecordExists(cfg_type, table_index, &ci_binfo, &existence); + if (dal_rc == kDalRcSuccess) { + return ((existence == true) ? kDalRcRecordAlreadyExists + : kDalRcRecordNotFound); + } + return dal_rc; +} + // Creates a record with the given data DalResultCode DalOdbcMgr::CreateRecord(const UpllCfgType cfg_type, @@ -875,7 +1070,6 @@ DalOdbcMgr::CreateRecord(const UpllCfgType cfg_type, return kDalRcGeneralError; } - // PFC_ASSERT(bind_info) if (bind_info == NULL) { UPLL_LOG_DEBUG("NULL Bind Info for Table(%s)", schema::TableName(table_index)); @@ -884,12 +1078,24 @@ DalOdbcMgr::CreateRecord(const UpllCfgType cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; } + // Parent Existence Check for Import Datatype + if (cfg_type == UPLL_DT_IMPORT && schema::TableNumFkCols(table_index) > 0) { + dal_rc = CheckParentInstance(cfg_type, table_index, bind_info); + if (dal_rc == kDalRcRecordNotFound) { + UPLL_LOG_DEBUG("Parent Does not Exist"); + return kDalRcParentNotFound; + } else if (dal_rc != kDalRcRecordAlreadyExists) { + UPLL_LOG_DEBUG("Error during Parent Existence Check"); + return dal_rc; + } + } + // Build Query Statement if (qbldr.get_sql_statement(kDalCreateRecQT, bind_info, query_stmt, table_index, cfg_type) != true) { @@ -903,6 +1109,29 @@ DalOdbcMgr::CreateRecord(const UpllCfgType cfg_type, dal_rc = ExecuteQuery(&dal_stmt_handle, &query_stmt, bind_info); + // Diagnose GeneralError for ParentCheck and InstanceCheck + if (dal_rc == kDalRcGeneralError) { + UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", + dal_rc, query_stmt.c_str()); + dal_rc = CheckInstance(cfg_type, table_index, bind_info); + if (dal_rc == kDalRcRecordAlreadyExists) { + UPLL_LOG_DEBUG("Instance Already Exists"); + return kDalRcRecordAlreadyExists; + } else if (dal_rc != kDalRcRecordNotFound) { + UPLL_LOG_DEBUG("Error during Instance Check"); + return dal_rc; + } + if (schema::TableNumFkCols(table_index) > 0) { + dal_rc = CheckParentInstance(cfg_type, table_index, bind_info); + if (dal_rc == kDalRcRecordNotFound) { + UPLL_LOG_DEBUG("Parent Does not Exist"); + return kDalRcParentNotFound; + } else if (dal_rc != kDalRcRecordAlreadyExists) { + UPLL_LOG_DEBUG("Error during Parent Check"); + return dal_rc; + } + } + } if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", dal_rc, query_stmt.c_str()); @@ -912,6 +1141,12 @@ DalOdbcMgr::CreateRecord(const UpllCfgType cfg_type, UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", query_stmt.c_str()); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); + + // Storing dirty table list for skip unmodified tables during commit + if (cfg_type == UPLL_DT_CANDIDATE || cfg_type == UPLL_DT_IMPORT) { + UPLL_LOG_TRACE("Insert for table %d", table_index); + create_dirty.insert(table_index); + } return kDalRcSuccess; } // DalOdbcMgr::CreateRecord @@ -945,7 +1180,7 @@ DalOdbcMgr::UpdateRecords(const UpllCfgType cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -968,12 +1203,22 @@ DalOdbcMgr::UpdateRecords(const UpllCfgType cfg_type, if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", dal_rc, query_stmt.c_str()); + if (dal_rc == kDalRcParentNotFound) { + UPLL_LOG_DEBUG + ("Foreign Key Violation error. Returning kDalRcGeneralError"); + dal_rc = kDalRcGeneralError; + } FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); return dal_rc; } UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", query_stmt.c_str()); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); + + // Storing dirty table list for skip unmodified tables during commit + if (cfg_type == UPLL_DT_CANDIDATE) { + update_dirty.insert(table_index); + } return kDalRcSuccess; } // DalOdbcMgr::UpdateRecords @@ -1007,6 +1252,16 @@ DalOdbcMgr::GetDeletedRecords(const UpllCfgType cfg_type_1, return kDalRcGeneralError; } + // Skip if table is non dirty for commit + if (cfg_type_1 == UPLL_DT_CANDIDATE && cfg_type_2 == UPLL_DT_RUNNING && + delete_dirty.find(table_index) == delete_dirty.end()) { + UPLL_LOG_DEBUG("Skipping GetDeletedRecords for %s", + schema::TableName(table_index)); + return kDalRcRecordNotFound; + } + UPLL_LOG_TRACE("Performing GetDeletedRecords for %s", + schema::TableName(table_index)); + // PFC_ASSERT(bind_info) if (bind_info == NULL) { UPLL_LOG_DEBUG("NULL Bind Info for Table(%s)", @@ -1016,7 +1271,7 @@ DalOdbcMgr::GetDeletedRecords(const UpllCfgType cfg_type_1, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -1086,6 +1341,16 @@ DalOdbcMgr::GetCreatedRecords(const UpllCfgType cfg_type_1, return kDalRcGeneralError; } + // Skip if table is not dirty + if (cfg_type_1 == UPLL_DT_CANDIDATE && cfg_type_2 == UPLL_DT_RUNNING && + create_dirty.find(table_index) == create_dirty.end()) { + UPLL_LOG_DEBUG("Skipping GetCreatedRecords for %s", + schema::TableName(table_index)); + return kDalRcRecordNotFound; + } + UPLL_LOG_TRACE("Performing GetCreatedRecords for %s", + schema::TableName(table_index)); + // PFC_ASSERT(bind_info) if (bind_info == NULL) { UPLL_LOG_DEBUG("NULL Bind Info for Table(%s)", @@ -1095,7 +1360,7 @@ DalOdbcMgr::GetCreatedRecords(const UpllCfgType cfg_type_1, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -1167,6 +1432,16 @@ DalOdbcMgr::GetUpdatedRecords(const UpllCfgType cfg_type_1, return kDalRcGeneralError; } + // Skip if table is not dirty + if (cfg_type_1 == UPLL_DT_CANDIDATE && cfg_type_2 == UPLL_DT_RUNNING && + update_dirty.find(table_index) == update_dirty.end()) { + UPLL_LOG_DEBUG("Skipping GetUpdatedRecords for %s", + schema::TableName(table_index)); + return kDalRcRecordNotFound; + } + UPLL_LOG_TRACE("Performing GetUpdatedRecords for %s", + schema::TableName(table_index)); + // PFC_ASSERT(bind_info) if (cfg_1_bind_info == NULL || cfg_2_bind_info == NULL) { UPLL_LOG_DEBUG("NULL Bind Info for Table(%s)", @@ -1177,7 +1452,7 @@ DalOdbcMgr::GetUpdatedRecords(const UpllCfgType cfg_type_1, if (table_index != cfg_1_bind_info->get_table_index() || table_index != cfg_2_bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind1 - %s; Bind2 - %s", + "Query - %s; Bind1 - %s; Bind2 - %s", schema::TableName(table_index), schema::TableName(cfg_1_bind_info->get_table_index()), schema::TableName(cfg_2_bind_info->get_table_index())); @@ -1289,7 +1564,7 @@ DalOdbcMgr::CopyEntireRecords(const UpllCfgType dest_cfg_type, // BindInput - NA; BindOuput - O; BindMatch - NA; if (bind_info != NULL && table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -1309,6 +1584,10 @@ DalOdbcMgr::CopyEntireRecords(const UpllCfgType dest_cfg_type, dal_rc = ExecuteQuery(&dal_stmt_handle, &query_stmt, bind_info); + if (dal_rc == kDalRcParentNotFound) { + UPLL_LOG_DEBUG("Foreign Key Violation error. Returning kDalRcGeneralError"); + dal_rc = kDalRcGeneralError; + } if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", dal_rc, query_stmt.c_str()); @@ -1326,7 +1605,8 @@ DalResultCode DalOdbcMgr::CopyModifiedRecords(const UpllCfgType dest_cfg_type, const UpllCfgType src_cfg_type, const DalTableIndex table_index, - const DalBindInfo *bind_info) const { + const DalBindInfo *bind_info, + const unc_keytype_operation_t op) const { SQLHANDLE dal_stmt_handle = SQL_NULL_HANDLE; DalResultCode dal_rc; DalQueryBuilder qbldr; @@ -1352,123 +1632,47 @@ DalOdbcMgr::CopyModifiedRecords(const UpllCfgType dest_cfg_type, // BindInput - NA; BindOuput - O; BindMatch - O; if (bind_info != NULL && table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; } - // Delete deleted records from dst - // Build Query Statement - if (qbldr.get_sql_statement(kDalCopyModRecDelQT, bind_info, query_stmt, - table_index, dest_cfg_type, src_cfg_type) != true) { - UPLL_LOG_TRACE("Failed Building Query Stmt"); - return kDalRcGeneralError; - } else { - UPLL_LOG_DEBUG("Query Stmt - %s", query_stmt.c_str()); - } - - // Allocate Stmt Handle, Bind and Execute the Query Statement - dal_rc = ExecuteQuery(&dal_stmt_handle, - &query_stmt, bind_info); - - if (dal_rc != kDalRcSuccess && dal_rc != kDalRcRecordNotFound) { - UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", - dal_rc, query_stmt.c_str()); - FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); - return dal_rc; - } - FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); - UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", - query_stmt.c_str()); - - // Insert created records to dst - if (qbldr.get_sql_statement(kDalCopyModRecCreateQT, bind_info, query_stmt, - table_index, dest_cfg_type, src_cfg_type) != true) { - UPLL_LOG_TRACE("Failed Building Query Stmt"); - return kDalRcGeneralError; - } else { - UPLL_LOG_DEBUG("Query Stmt - %s", query_stmt.c_str()); - } - - dal_rc = ExecuteQuery(&dal_stmt_handle, - &query_stmt, bind_info); - - if (dal_rc != kDalRcSuccess && dal_rc != kDalRcRecordNotFound) { - UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", - dal_rc, query_stmt.c_str()); - if (dal_stmt_handle != SQL_NULL_HANDLE) { - FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); + DalApiNum query_template; + if (op == UNC_OP_DELETE) { + if (dest_cfg_type == UPLL_DT_CANDIDATE && + src_cfg_type == UPLL_DT_RUNNING && + (create_dirty.find(table_index) == create_dirty.end())) { + UPLL_LOG_DEBUG("No entries modified for the operation %d in table %d", + op, table_index); + return kDalRcRecordNotFound; } - return dal_rc; - } - FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); - UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", - query_stmt.c_str()); - -// Update modified records to dst - if (qbldr.get_sql_statement(kDalCopyModRecUpdateQT, bind_info, query_stmt, - table_index, dest_cfg_type, src_cfg_type) != true) { - UPLL_LOG_TRACE("Failed Building Query Stmt"); - return kDalRcGeneralError; + query_template = kDalCopyModRecDelQT; + } else if (op == UNC_OP_CREATE) { + if (dest_cfg_type == UPLL_DT_CANDIDATE && + src_cfg_type == UPLL_DT_RUNNING && + delete_dirty.find(table_index) == delete_dirty.end()) { + UPLL_LOG_DEBUG("No entries modified for the operation %d in table %d", + op, table_index); + return kDalRcRecordNotFound; + } + query_template = kDalCopyModRecCreateQT; + } else if (op == UNC_OP_UPDATE) { + if (dest_cfg_type == UPLL_DT_CANDIDATE && + src_cfg_type == UPLL_DT_RUNNING && + update_dirty.find(table_index) == update_dirty.end()) { + UPLL_LOG_DEBUG("No entries modified for the operation %d in table %d", + op, table_index); + return kDalRcRecordNotFound; + } + query_template = kDalCopyModRecUpdateQT; } else { - UPLL_LOG_DEBUG("Query Stmt - %s", query_stmt.c_str()); - } - - dal_rc = ExecuteQuery(&dal_stmt_handle, - &query_stmt, bind_info); - - if (dal_rc != kDalRcSuccess && dal_rc != kDalRcRecordNotFound) { - UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", - dal_rc, query_stmt.c_str()); - FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); - return dal_rc; - } - UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", - query_stmt.c_str()); - FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); - return kDalRcSuccess; -} // DalOdbcMgr::CopyModifiedRecords - -// Copies only the modified records from dst to src cfg_type -DalResultCode -DalOdbcMgr::CopyModifiedInsertRecords(const UpllCfgType dest_cfg_type, - const UpllCfgType src_cfg_type, - const DalTableIndex table_index, - const DalBindInfo *bind_info) const { - SQLHANDLE dal_stmt_handle = SQL_NULL_HANDLE; - DalResultCode dal_rc; - DalQueryBuilder qbldr; - std::string query_stmt; - - // Validating Inputs - if (dest_cfg_type == UPLL_DT_INVALID || src_cfg_type == UPLL_DT_INVALID) { - UPLL_LOG_DEBUG("Invalid Config Type - %d %d", dest_cfg_type, src_cfg_type); - return kDalRcGeneralError; - } - - if (dest_cfg_type == src_cfg_type) { - UPLL_LOG_DEBUG("Same Config Type - %d %d", dest_cfg_type, src_cfg_type); - return kDalRcGeneralError; - } - - if (table_index >= schema::table::kDalNumTables) { - UPLL_LOG_DEBUG("Invalid Table Index - %d", table_index); - return kDalRcGeneralError; - } - - // No need to validate bindinfo - // BindInput - NA; BindOuput - O; BindMatch - O; - if (bind_info != NULL && table_index != bind_info->get_table_index()) { - UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", - schema::TableName(table_index), - schema::TableName(bind_info->get_table_index())); + UPLL_LOG_DEBUG("Invalid operation %d", op); return kDalRcGeneralError; } - // Insert created records to dst - if (qbldr.get_sql_statement(kDalCopyModRecCreateQT, bind_info, query_stmt, + // Build Query Statement + if (qbldr.get_sql_statement(query_template, bind_info, query_stmt, table_index, dest_cfg_type, src_cfg_type) != true) { UPLL_LOG_TRACE("Failed Building Query Stmt"); return kDalRcGeneralError; @@ -1476,22 +1680,26 @@ DalOdbcMgr::CopyModifiedInsertRecords(const UpllCfgType dest_cfg_type, UPLL_LOG_DEBUG("Query Stmt - %s", query_stmt.c_str()); } + // Allocate Stmt Handle, Bind and Execute the Query Statement dal_rc = ExecuteQuery(&dal_stmt_handle, &query_stmt, bind_info); + if (dal_rc == kDalRcParentNotFound) { + UPLL_LOG_DEBUG("Foreign Key Violation error. Returning kDalRcGeneralError"); + dal_rc = kDalRcGeneralError; + } if (dal_rc != kDalRcSuccess && dal_rc != kDalRcRecordNotFound) { UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", dal_rc, query_stmt.c_str()); - if (dal_stmt_handle != SQL_NULL_HANDLE) { - FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); - } + FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); return dal_rc; } FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); UPLL_LOG_TRACE("Completed Executing Query Stmt - %s", query_stmt.c_str()); + return kDalRcSuccess; -} // DalOdbcMgr::CopyModifiedInsertRecords +} // DalOdbcMgr::CopyModifiedRecords // Copies the matching records from dst to src cfg_type DalResultCode @@ -1529,7 +1737,7 @@ DalOdbcMgr::CopyMatchingRecords(const UpllCfgType dest_cfg_type, if (table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -1550,6 +1758,10 @@ DalOdbcMgr::CopyMatchingRecords(const UpllCfgType dest_cfg_type, &query_stmt, bind_info); + if (dal_rc == kDalRcParentNotFound) { + UPLL_LOG_DEBUG("Foreign Key Violation error. Returning kDalRcGeneralError"); + dal_rc = kDalRcGeneralError; + } if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed Executing Query Stmt - %s", dal_rc, query_stmt.c_str()); @@ -1596,7 +1808,7 @@ DalOdbcMgr::CheckRecordsIdentical(const UpllCfgType cfg_type_1, // BindInput - NA; BindOuput - NA; BindMatch - O; if (bind_info != NULL && table_index != bind_info->get_table_index()) { UPLL_LOG_DEBUG("Table Index Mismatch with bind info " - "\n Query - %s; Bind - %s", + "Query - %s; Bind - %s", schema::TableName(table_index), schema::TableName(bind_info->get_table_index())); return kDalRcGeneralError; @@ -1641,6 +1853,7 @@ DalOdbcMgr::CheckRecordsIdentical(const UpllCfgType cfg_type_1, DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, dal_stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to fetch result from DB", dal_rc); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); @@ -1696,6 +1909,7 @@ DalOdbcMgr::ExecuteAppQuerySingleRecord( DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, dal_stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("%d - Failed to Fetch result", dal_rc); FreeHandle(SQL_HANDLE_STMT, dal_stmt_handle); @@ -1851,7 +2065,6 @@ void DalOdbcMgr::SetStmtAttributes(const SQLHANDLE stmt_handle) const { SQLRETURN sql_rc; DalResultCode dal_rc; - uint32_t query_timeout; // SQL_ATTR_NOSCAN - SQL_NOSCAN_ON (default: SQL_NOSCAN_OFF) // Scan for escape sequence to edit query stmts acc to datasource @@ -1867,13 +2080,15 @@ DalOdbcMgr::SetStmtAttributes(const SQLHANDLE stmt_handle) const { DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_TRACE(" Failed to Set NoScan On. Default value set"); } // SQL_ATTR_QUERY_TIMEOUT - conf (default: 0 no timeout) +#if 0 // TODO(sankar): should come from conf file - query_timeout = 0; + uint32_t query_timeout = 0; sql_rc = SQLSetStmtAttr(stmt_handle, SQL_ATTR_QUERY_TIMEOUT, reinterpret_cast(query_timeout), @@ -1886,10 +2101,11 @@ DalOdbcMgr::SetStmtAttributes(const SQLHANDLE stmt_handle) const { DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_TRACE(" Failed to set Query Timeout. Default value set"); } - +#endif // SQL_ATTR_ROW_ARRAY_SIZE - 1 (default) // Number of records to be fetched using SQLFetch @@ -1939,6 +2155,7 @@ DalOdbcMgr::SetCursorAttributes(const SQLHANDLE stmt_handle, DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_TRACE(" Failed to set Max Row Size set. Default value set"); } @@ -2241,6 +2458,7 @@ DalOdbcMgr::ExecuteQuery(SQLHANDLE *dal_stmt_handle, DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, *dal_stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to Allocate Statement handle", dal_rc); @@ -2263,6 +2481,7 @@ DalOdbcMgr::ExecuteQuery(SQLHANDLE *dal_stmt_handle, // Bind attributes to query statement only if available if (bind_info != NULL) { dal_rc = BindToQuery(dal_stmt_handle, bind_info); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to Bind parameters to Query", dal_rc); @@ -2279,6 +2498,7 @@ DalOdbcMgr::ExecuteQuery(SQLHANDLE *dal_stmt_handle, DalErrorHandler::ProcessOdbcErrors(SQL_HANDLE_STMT, *dal_stmt_handle, sql_rc, &dal_rc); + SET_DB_STATE_DISCONNECT(dal_rc, conn_state_); if (dal_rc != kDalRcSuccess) { UPLL_LOG_DEBUG("Err - %d. Failed to Execute Query %s", dal_rc, query_stmt->c_str()); @@ -2320,7 +2540,7 @@ DalOdbcMgr::FreeHandle(const SQLSMALLINT handle_type, std::string DalOdbcMgr::GetConnString(const DalConnType conn_type) const { std::string dal_conn_str; - std::string dal_cf_str = std::string(DAL_CONF_FILE); + std::string dal_cf_str = DAL_CONF_FILE; std::string conn_param_str; pfc::core::ConfHandle dal_cf_handle(dal_cf_str, &dal_cfdef); diff --git a/coordinator/modules/dal/dal_odbc_mgr.hh b/coordinator/modules/dal/dal_odbc_mgr.hh index 1c8bd09b..82a7ba16 100644 --- a/coordinator/modules/dal/dal_odbc_mgr.hh +++ b/coordinator/modules/dal/dal_odbc_mgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -17,6 +17,7 @@ #include #include +#include #include "pfcxx/module.hh" #include "unc/config.h" #include "dal_defines.hh" @@ -86,6 +87,7 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { DalResultCode DisconnectFromDb() const; inline DalConnType get_conn_type() { return conn_type_; } + inline DalConnState get_conn_state() { return conn_state_; } /** * CommitTransaction @@ -438,6 +440,10 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { * CreateRecord * Creates the record in table with the given input data for * the given cfg_type + * Performs parent existence check if cfg_type is UPLL_DT_IMPORT + * Performs existence check and parent existence check if + * kDalRcGeneralError is returned. This is done to get proper error + * codes when Database cannot. * * @param[in] cfg_type - Configuration Type for which the record * has to be created @@ -680,8 +686,8 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { /** * CopyModifiedRecords - * Copies the entire records of table from source configuration to - * destination configuration. + * Copies the modified records of table from source configuration to + * destination configuration based on the operation. * * @param[in] dest_cfg_type - Configuration Type where the records to be * copied (not equal to src_cfg_type) @@ -691,6 +697,7 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { * @param[in] output_and_match_attr_info * - Bind Information for output and match * - columns + * @param[in] op - Operation to be performed for Copy. * * @return DalResultCode - kDalRcSuccess in case of success * - Valid errorcode otherwise @@ -699,12 +706,14 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { * * Note: * Information on Copy Logic - * 1. Remove the records from dest_cfg_type that are result of - * GetDeletedRecords(dest_cfg_type, src_cfg_type, ...) - * 2. Add the records in dest_cfg_type that are result of - * GetCreatedRecords(dest_cfg_type, src_cfg_type, ...) - * 3. Update the records in dest_cfg_type with the records from - * src_cfg_type that are result of + * 1. For DELETE operation, Remove the records from dest_cfg_type that are + * result of GetDeletedRecords(dest_cfg_type, src_cfg_type, ...) + * This should be called for Child schema first and then parent schema + * if Parent-Child relationship is established. + * 2. For CREATE operation, Add the records in dest_cfg_type that are + * result of GetCreatedRecords(dest_cfg_type, src_cfg_type, ...) + * 3. For UPDATE operation, Update the records in dest_cfg_type with the + * records from src_cfg_type that are result of * GetUpdatedRecords(dest_cfg_type, src_cfg_type, ...) * 4. Recommended to use this API, where difference between both the * configurations are comparitively lesser. @@ -736,50 +745,8 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { const UpllCfgType dest_cfg_type, const UpllCfgType src_cfg_type, const DalTableIndex table_index, - const DalBindInfo *output_and_match_attr_info) const; - - /** - * CopyModifiedInsertRecords - * Inserts the additional records of table from source configuration to - * destination configuration. - * - * @param[in] dest_cfg_type - Configuration Type where the records to be - * copied (not equal to src_cfg_type) - * @param[in] src_cfg_type - Configuration Type from where the records - * will be copied (not equal to dest_cfg_type) - * @param[in] table_index - Valid Index of the table - * @param[in] output_and_match_attr_info - * - Bind Information for output and match - * - columns - * - * @return DalResultCode - kDalRcSuccess in case of success - * - Valid errorcode otherwise - * On successful execution, both the - * configurations have same records. - * - * Note: - * Information on Copy Logic - * 1. Add the records in dest_cfg_type that are result of - * GetCreatedRecords(dest_cfg_type, src_cfg_type, ...) - * - * Information on usage of DalBindInfo - * 1. Valid instance of DalBindInfo with same table_index used in this API - * 2. BindInput if used for any attributes, ignored. - * 3. BindMatch if used for any attributes, ignored. - * 4. BindOutput is optional. - * BindOutput, if used, copy the values of bound columns from - * src_cfg_type to dst_cfg_type - * BindOutput, if not used, copy the values of all columns from - * src_cfg_type to dst_cfg_type - * Since the bound value is not used for this API, it is ok to bind - * dummy address. Do not pass NULL address. - * - */ - DalResultCode CopyModifiedInsertRecords( - const UpllCfgType dest_cfg_type, - const UpllCfgType src_cfg_type, - const DalTableIndex table_index, - const DalBindInfo *output_and_match_attr_info) const; + const DalBindInfo *output_and_match_attr_info, + const unc_keytype_operation_t op) const; /** * CopyMatchingRecords @@ -892,6 +859,27 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { const size_t max_record_count, const DalBindInfo *bind_info, DalCursor **cursor) const; + + // Clears all the tables from dirty list + inline void ClearDirty() const { + delete_dirty.clear(); + create_dirty.clear(); + update_dirty.clear(); + } + + // Add all the tables to dirty list + inline void MakeAllDirty() const { + delete_dirty.clear(); + create_dirty.clear(); + update_dirty.clear(); + for (uint16_t tbl_idx = schema::table::kDbiVtnTbl; + tbl_idx < schema::table::kDalNumTables; tbl_idx++) { + delete_dirty.insert(tbl_idx); + create_dirty.insert(tbl_idx); + update_dirty.insert(tbl_idx); + } + } // DalOdbcMgr::MakeAllDirty + private: /** * SetConnAttributes @@ -1017,14 +1005,72 @@ class DalOdbcMgr:public DalConnIntf, public DalDmlIntf { const DalBindInfo *bind_info = NULL, const uint32_t max_count = 1) const; + /** + * CheckParentInstance + * Checks the parent of the given instance with parent key values from + * the given DalBindInfo in Database for the given cfg_type + * + * @param[in] cfg_type - Configuration Type for which the record + * has to be created + * @param[in] table_index - Valid Index of the table + * @param[in] input_attr_info - Bind Information for the given table_index + * + * @return DalResultCode - kDalRcSuccess in case of success + * - Valid errorcode otherwise + * + * Note: + * Information on usage of DalBindInfo + * 1. Valid instance of DalBindInfo with same table_index used in this API + * 2. BindInput is mandatory for the interested attributes. + * It is mandatory to bind input for all primary keys. + * 3. BindMatch if used for any attributes, ignored. + * 4. BindOutput if used for any attributes, ignored. + */ + DalResultCode CheckParentInstance(const UpllCfgType cfg_type, + const DalTableIndex table_index, + const DalBindInfo *input_attr_info) const; + + + /** + * CheckInstance + * Checks the instance with primary key values from the given + * DalBindInfo in Database for the given cfg_type + * + * @param[in] cfg_type - Configuration Type for which the record + * has to be created + * @param[in] table_index - Valid Index of the table + * @param[in] input_attr_info - Bind Information for the given table_index + * + * @return DalResultCode - kDalRcSuccess in case of success + * - Valid errorcode otherwise + * + * Note: + * Information on usage of DalBindInfo + * 1. Valid instance of DalBindInfo with same table_index used in this API + * 2. BindInput is mandatory for the interested attributes. + * It is mandatory to bind input for all primary keys. + * 3. BindMatch if used for any attributes, ignored. + * 4. BindOutput if used for any attributes, ignored. + */ + DalResultCode CheckInstance(const UpllCfgType cfg_type, + const DalTableIndex table_index, + const DalBindInfo *input_attr_info) const; + inline DalResultCode FreeHandle(const SQLSMALLINT handle_type, SQLHANDLE handle) const; std::string GetConnString(const DalConnType conn_type) const; + mutable std::set create_dirty; + // List of tables modified by candidate create operation + mutable std::set delete_dirty; + // List of tables modified by candidate delete operation + mutable std::set update_dirty; + // List of tables modified by candidate update operation SQLHANDLE dal_env_handle_; // Environment Handle SQLHANDLE dal_conn_handle_; // Connection Handle mutable DalConnType conn_type_; // Connection Type + mutable DalConnState conn_state_; // Connection State }; // class DalOdbcMgr } // namespace dal diff --git a/coordinator/modules/dal/dal_query_builder.cc b/coordinator/modules/dal/dal_query_builder.cc index e98686e0..b6b5234b 100644 --- a/coordinator/modules/dal/dal_query_builder.cc +++ b/coordinator/modules/dal/dal_query_builder.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -30,9 +30,8 @@ const char * DalQueryBuilder::DalGetMultiRecQT = "SELECT {mand_out_columns} FROM {config1_table_name}" " {opt_WHERE_match_columns_eq} ORDER BY {primary_key_columns}"; -// Currently DalRecExists use DalGetRecCount Api const char * DalQueryBuilder::DalRecExistsQT = - "SELECT 1 FROM {config1_table_name} {mand_WHERE_match_columns_eq}"; + "SELECT 1 FROM {config1_table_name} {mand_WHERE_match_columns_eq} limit 1"; const char * DalQueryBuilder::DalGetSibBegQT = "SELECT {mand_out_columns} FROM {config1_table_name}" @@ -61,17 +60,6 @@ const char * DalQueryBuilder::DalUpdateRecQT = "UPDATE {config1_table_name} SET {mand_in_columns_with_?}" " {opt_WHERE_match_columns_eq}"; -#if 0 -const char * DalQueryBuilder::DalGetDelRecQT = - "SELECT {mand_out_columns} FROM {config2_table_name}" - " WHERE ({mand_match_columns}) NOT IN" - " ( SELECT {mand_match_columns} FROM {config1_table_name})"; - -const char * DalQueryBuilder::DalGetCreatedRecQT = - "SELECT {mand_out_columns} FROM {config1_table_name}" - " WHERE ({mand_match_columns}) NOT IN" - " ( SELECT {mand_match_columns} FROM {config2_table_name})"; -#endif const char * DalQueryBuilder::DalGetDelRecQT = "SELECT {mand_out_columns} FROM {config2_table_name} AS temp" " WHERE NOT EXISTS" @@ -86,38 +74,35 @@ const char * DalQueryBuilder::DalGetCreatedRecQT = const char * DalQueryBuilder::DalGetModRecQT = "SELECT {mand_out_columns} FROM {config1_table_name}" - " WHERE ({primary_key_columns}) IN" + " WHERE EXISTS" " ( SELECT {primary_key_columns} FROM" " ( SELECT {opt_match_columns} FROM {config2_table_name} EXCEPT" " SELECT {opt_match_columns} FROM {config1_table_name}" - " ) as temp" + " ) AS temp WHERE {match_dst_primary_key_columns_eq_with_temp}" " ) ORDER BY ({primary_key_columns})"; const char * DalQueryBuilder::DalCopyEntireRecQT = - "DELETE FROM {dst_table_name};" " INSERT INTO {dst_table_name} ({opt_out_columns})" " SELECT {opt_out_columns} FROM {src_table_name}"; const char * DalQueryBuilder::DalCopyModRecDelQT = - "DELETE FROM {dst_table_name} WHERE ({primary_key_columns}) NOT IN" - " ( SELECT {primary_key_columns} FROM {src_table_name})"; + " DELETE FROM {dst_table_name} WHERE NOT EXISTS" + " ( SELECT {primary_key_columns} FROM {src_table_name} AS temp" + " WHERE {match_dst_primary_key_columns_eq_with_temp})"; const char * DalQueryBuilder::DalCopyModRecCreateQT = - "INSERT INTO {dst_table_name} ({opt_out_columns})" - " ( SELECT {opt_out_columns} FROM {src_table_name}" - " WHERE ({primary_key_columns}) NOT IN" - " ( SELECT {primary_key_columns} FROM {dst_table_name})" - " )"; + " INSERT INTO {dst_table_name} ({opt_out_columns})" + " ( SELECT {opt_out_columns} FROM {src_table_name} AS temp" + " WHERE NOT EXISTS" + " ( SELECT {primary_key_columns} FROM {dst_table_name}" + " WHERE {match_dst_primary_key_columns_eq_with_temp}))"; const char * DalQueryBuilder::DalCopyModRecUpdateQT = "UPDATE {dst_table_name} SET {opt_dst_out_columns_with_temp} FROM" - " ( SELECT {opt_out_columns} FROM {src_table_name}" - " WHERE ({primary_key_columns}) IN" - " ( SELECT {primary_key_columns} FROM" - " ( SELECT {opt_match_columns} FROM {dst_table_name} EXCEPT" - " SELECT {opt_match_columns} FROM {src_table_name}" - " ) AS temp1" - " )" + " ( SELECT {opt_out_columns} FROM" + " ( SELECT {opt_match_columns} FROM {src_table_name} EXCEPT" + " SELECT {opt_match_columns} FROM {dst_table_name}" + " ) AS temp1" " ) AS temp WHERE {match_dst_primary_key_columns_eq_with_temp}"; const char * DalQueryBuilder::DalCopyMatchingRecQT = @@ -221,14 +206,13 @@ bool DalQueryBuilder::get_sql_statement( const UpllCfgType first_config, const UpllCfgType second_config) const { /* get query template */ - std::string query_tmpl = std::string(sql_templates[dal_api_num].query_tmpl); size_t start_pos = 0, last_pos = 0; std::string token = "", replacement = ""; // pfc::core::Mutex ctrlr_mutex; // pfc::core::ScopedMutex lock(ccc->ctrlr_mutex); - query_str = ""; + query_str.erase(); /* checking DalBindInfo */ if (dbi == NULL) { UPLL_LOG_TRACE("Column bound is NULL"); @@ -252,36 +236,35 @@ bool DalQueryBuilder::get_sql_statement( return false; } + query_str = sql_templates[dal_api_num].query_tmpl; /* replace all tokens in query template to get statement */ - while (next_token(query_tmpl, start_pos, &token, &last_pos)) { + while (next_token_pos(query_str, start_pos, last_pos)) { + size_t length = last_pos - start_pos + 1; + /* get columns/table name for statement */ - if (get_bind_str(str_to_num(token), dbi, replacement, + if (get_bind_str(str_to_num(query_str, start_pos, length), dbi, replacement, table_index, first_config, second_config) != true) { UPLL_LOG_DEBUG("Error constructing bind string"); - query_str = ""; + query_str.erase(); return false; } /* replace token with actual columns/table name in template */ - query_tmpl.replace((last_pos - token.length() + 1), token.length(), - replacement); + query_str.replace(start_pos, length, replacement); + start_pos += replacement.length(); } - query_str = query_tmpl; return true; } // DalQueryBuilder::get_sql_statement /* keep finding tokens from given query template until end of templates */ -bool DalQueryBuilder::next_token(const std::string &query_template, - const size_t start_position, - std::string *token, - size_t *last_position) const { - +bool DalQueryBuilder::next_token_pos(const std::string &query_template, + size_t &start_position, + size_t &last_position) const { if (query_template.empty()) { UPLL_LOG_DEBUG("Empty Query Template String"); return false; } /* find start position of token */ - *token = ""; size_t open_token = query_template.find('{', start_position); /* check if no more start position */ @@ -298,63 +281,70 @@ bool DalQueryBuilder::next_token(const std::string &query_template, return false; } - *last_position = close_token; - *token = query_template.substr(open_token, (close_token - open_token + 1)); + start_position = open_token; + last_position = close_token; return true; -} // DalQueryBuilder::next_token +} // DalQueryBuilder::next_token_pos /* converts token string to enum constants */ -DalQuerytoken DalQueryBuilder::str_to_num(const std::string &tokenstr) const { +DalQuerytoken DalQueryBuilder::str_to_num(const std::string &tokenstr, + const size_t start_pos, + const size_t length) const { if (tokenstr.empty()) { UPLL_LOG_DEBUG("Empty Token String"); return kDalInvalidToken; } // Input Related tokens - if (tokenstr.compare(DalMandInColNames) == 0) { + if (tokenstr.compare(start_pos, length, DalMandInColNames) == 0) { return kDalMandInColNames; - } else if (tokenstr.compare(DalMandInColValues) == 0) { + } else if (tokenstr.compare(start_pos, length, DalMandInColValues) == 0) { return kDalMandInColValues; - } else if (tokenstr.compare(DalMandInColUpdExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, DalMandInColUpdExpr) == 0) { return kDalMandInColUpdExpr; - // Output Related tokens - } else if (tokenstr.compare(DalMandOutColNames) == 0) { + // Output Related tokens + } else if (tokenstr.compare(start_pos, length, DalMandOutColNames) == 0) { return kDalMandOutColNames; - } else if (tokenstr.compare(DalOptOutColNames) == 0) { + } else if (tokenstr.compare(start_pos, length, DalOptOutColNames) == 0) { return kDalOptOutColNames; - } else if (tokenstr.compare(DalOptDstOutColUpdTempExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, + DalOptDstOutColUpdTempExpr) == 0) { return kDalOptDstOutColUpdTempExpr; - // Match Related tokens - } else if (tokenstr.compare(DalMandMatchColNames) == 0) { + // Match Related tokens + } else if (tokenstr.compare(start_pos, length, DalMandMatchColNames) == 0) { return kDalMandMatchColNames; - } else if (tokenstr.compare(DalOptMatchColNames) == 0) { + } else if (tokenstr.compare(start_pos, length, DalOptMatchColNames) == 0) { return kDalOptMatchColNames; - } else if (tokenstr.compare(DalMandMatchColEqExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, DalMandMatchColEqExpr) == 0) { return kDalMandMatchColEqExpr; - } else if (tokenstr.compare(DalOptMatchColEqExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, DalOptMatchColEqExpr) == 0) { return kDalOptMatchColEqExpr; - } else if (tokenstr.compare(DalOptMatchColEqNotLastExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, + DalOptMatchColEqNotLastExpr) == 0) { return kDalOptMatchColEqNotLastExpr; - } else if (tokenstr.compare(DalMandMatchColLstGtrExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, + DalMandMatchColLstGtrExpr) == 0) { return kDalMandMatchColLstGtrExpr; - } else if (tokenstr.compare(DalMandMatchColEqTempExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, + DalMandMatchColEqTempExpr) == 0) { return kDalMandMatchColEqTempExpr; - // Primary Key Related tokens - } else if (tokenstr.compare(DalPkeyColNames) == 0) { + // Primary Key Related tokens + } else if (tokenstr.compare(start_pos, length, DalPkeyColNames) == 0) { return kDalPkeyColNames; - } else if (tokenstr.compare(DalMatchPriColEqTempExpr) == 0) { + } else if (tokenstr.compare(start_pos, length, + DalMatchPriColEqTempExpr) == 0) { return kDalMatchPriColEqTempExpr; - // Table Related tokens - } else if (tokenstr.compare(DalCfg1TableName) == 0) { + // Table Related tokens + } else if (tokenstr.compare(start_pos, length, DalCfg1TableName) == 0) { return kDalCfg1TableName; - } else if (tokenstr.compare(DalCfg2TableName) == 0) { + } else if (tokenstr.compare(start_pos, length, DalCfg2TableName) == 0) { return kDalCfg2TableName; - } else if (tokenstr.compare(DalDstTableName) == 0) { + } else if (tokenstr.compare(start_pos, length, DalDstTableName) == 0) { return kDalDstTableName; - } else if (tokenstr.compare(DalSrcTableName) == 0) { + } else if (tokenstr.compare(start_pos, length, DalSrcTableName) == 0) { return kDalSrcTableName; } else { UPLL_LOG_DEBUG("Invalid token(%s) from Query template", tokenstr.c_str()); @@ -370,22 +360,22 @@ bool DalQueryBuilder::get_config_prefix(const UpllCfgType type, UPLL_LOG_DEBUG("Invalid Config type(%d)", type); return false; case UPLL_DT_STATE: - config_type += std::string(DalStateType); + config_type += DalStateType; return true; case UPLL_DT_CANDIDATE: - config_type += std::string(DalCandidateType); + config_type += DalCandidateType; return true; case UPLL_DT_RUNNING: - config_type += std::string(DalRunningType); + config_type += DalRunningType; return true; case UPLL_DT_STARTUP: - config_type += std::string(DalStartupType); + config_type += DalStartupType; return true; case UPLL_DT_IMPORT: - config_type += std::string(DalImportType); + config_type += DalImportType; return true; case UPLL_DT_AUDIT: - config_type += std::string(DalAuditType); + config_type += DalAuditType; return true; default: UPLL_LOG_DEBUG("Unknown Config type(%d)", type); @@ -405,7 +395,7 @@ bool DalQueryBuilder::fill_column_names(const DalIoCode io_code, DalBindList::iterator bl_it; DalBindColumnInfo *col_info = NULL; - replc_str = ""; + replc_str.erase(); /* verify DAL IO Code */ if (io_code == kDalIoCodeInvalid) { UPLL_LOG_DEBUG("Invalid DAL IO Code - %d", io_code); @@ -425,6 +415,7 @@ bool DalQueryBuilder::fill_column_names(const DalIoCode io_code, } bind_list = dbi->get_bind_list(); + for (bl_it = bind_list.begin(); bl_it != bind_list.end(); ++bl_it) { col_info = *bl_it; @@ -432,31 +423,29 @@ bool DalQueryBuilder::fill_column_names(const DalIoCode io_code, if (io_code == kDalIoCodeInput) { if ( io_type != kDalIoInputOnly && - io_type != kDalIoInputAndMatch ) { + io_type != kDalIoInputAndMatch ) { continue; } } else if (io_code == kDalIoCodeOutput) { if ( io_type != kDalIoOutputOnly && - io_type != kDalIoOutputAndMatch ) { + io_type != kDalIoOutputAndMatch ) { continue; } } else if (io_code == kDalIoCodeMatch) { if ( io_type != kDalIoMatchOnly && - io_type != kDalIoInputAndMatch && - io_type != kDalIoOutputAndMatch ) { + io_type != kDalIoInputAndMatch && + io_type != kDalIoOutputAndMatch ) { continue; } } if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; - replc_str += std::string(schema::ColumnName( - table_index, - col_info->get_column_index())); + replc_str += schema::ColumnName(table_index, col_info->get_column_index()); } // for return true; } // DalQueryBuilder::fill_column_names @@ -464,8 +453,8 @@ bool DalQueryBuilder::fill_column_names(const DalIoCode io_code, // Finding the position of greater Primary Key index bound for match // in DalBindList bool DalQueryBuilder::find_last_pkey_pos_for_match( - const DalBindInfo *dbi, - uint16_t *last_pkey_pos) const { + const DalBindInfo *dbi, + uint16_t *last_pkey_pos) const { DalBindList::iterator bl_it; DalBindList bind_list; DalBindColumnInfo *col_info = NULL; @@ -482,14 +471,14 @@ bool DalQueryBuilder::find_last_pkey_pos_for_match( return false; } for (bl_it = bind_list.begin(), index = 0; bl_it != bind_list.end(); - ++bl_it, ++index) { + ++bl_it, ++index) { col_info = *bl_it; if ((col_info->get_io_type() == kDalIoMatchOnly || - col_info->get_io_type() == kDalIoInputAndMatch || - col_info->get_io_type() == kDalIoOutputAndMatch) && - (schema::ColumnIsPKeyIndex(dbi->get_table_index(), - col_info->get_column_index()) && - col_info->get_column_index() >= last_pkey_col_index)) { + col_info->get_io_type() == kDalIoInputAndMatch || + col_info->get_io_type() == kDalIoOutputAndMatch) && + (schema::ColumnIsPKeyIndex(dbi->get_table_index(), + col_info->get_column_index()) && + col_info->get_column_index() >= last_pkey_col_index)) { *last_pkey_pos = index; last_pkey_col_index = col_info->get_column_index(); } @@ -519,7 +508,7 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, uint16_t col_index = 0, col_count = 0; uint16_t last_pkey_pos; - replc_str = ""; + replc_str.erase(); /* verify table_index */ if (table_index >= (schema::table::kDalNumTables)) { @@ -556,14 +545,14 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, } if (fill_column_names(kDalIoCodeInput, - table_index, dbi, replc_str) == false) { + table_index, dbi, replc_str) == false) { UPLL_LOG_DEBUG("Error Filling Column names for Input"); return false; } - break; + break; - // {mand_insert_?} - ?, ?, ?, ... - // count of attributes bound for input + // {mand_insert_?} - ?, ?, ?, ... + // count of attributes bound for input case kDalMandInColValues: // PFC_ASSERT(dbi); if (dbi == NULL) { @@ -580,17 +569,17 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, for (col_index = 0; col_index < col_count; col_index++) { if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; - replc_str += std::string("?"); + replc_str += "?"; } break; - // {mand_in_columns_with_?} - col1 = ?, col2 = ?, col3 = ?, ... - // For all attributes bound for input + // {mand_in_columns_with_?} - col1 = ?, col2 = ?, col3 = ?, ... + // For all attributes bound for input case kDalMandInColUpdExpr: // PFC_ASSERT(dbi); if (dbi == NULL) { @@ -611,22 +600,21 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, if ( io_type == upll::dal::kDalIoInputOnly || io_type == upll::dal::kDalIoInputAndMatch) { if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; - replc_str += std::string(schema::ColumnName( - table_index, - col_info->get_column_index())); - replc_str += std::string("= ?"); + replc_str += schema::ColumnName(table_index, + col_info->get_column_index()); + replc_str += "= ?"; } // if } // for break; - // Output Related Tokens - // {mand_out_columns} - col1, col2, ... - // column names of attributes bound for output + // Output Related Tokens + // {mand_out_columns} - col1, col2, ... + // column names of attributes bound for output case kDalMandOutColNames: // PFC_ASSERT(dbi); if (dbi == NULL) { @@ -646,21 +634,21 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, } break; - // {opt_out_columns} - col1, col2, ... - // column names of attributes bound for output - // All column names, if no attributes bound for output + // {opt_out_columns} - col1, col2, ... + // column names of attributes bound for output + // All column names, if no attributes bound for output case kDalOptOutColNames: if (dbi == NULL || dbi->get_output_bind_count() == 0) { UPLL_LOG_TRACE("All Columns bound for Optional Output"); col_count = schema::TableNumCols(table_index); for (col_index = 0; col_index < col_count; col_index++) { if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; - replc_str += std::string(schema::ColumnName(table_index, col_index)); + replc_str += schema::ColumnName(table_index, col_index); } return true; } @@ -672,10 +660,10 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, } break; - // {opt_dst_out_columns_with_temp} - - // .col1 = temp.col1, .col2 = temp.col2, ... - // column names of attributes bound for output - // All column names, if no attributes bound for output + // {opt_dst_out_columns_with_temp} - + // .col1 = temp.col1, .col2 = temp.col2, ... + // column names of attributes bound for output + // All column names, if no attributes bound for output case kDalOptDstOutColUpdTempExpr: table_name = ""; if (get_bind_str(kDalDstTableName, dbi, table_name, @@ -689,16 +677,16 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, col_count = schema::TableNumCols(table_index); for (col_index = 0; col_index < col_count; col_index++) { if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; - // replc_str += std::string(table_name); - // replc_str += std::string("."); - replc_str += std::string(schema::ColumnName(table_index, col_index)); - replc_str += std::string("= temp."); - replc_str += std::string(schema::ColumnName(table_index, col_index)); + // replc_str += std::string(table_name); + // replc_str += std::string("."); + replc_str += schema::ColumnName(table_index, col_index); + replc_str += "= temp."; + replc_str += schema::ColumnName(table_index, col_index); } } else { // Building string from bind info @@ -710,35 +698,33 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, if ( io_type == upll::dal::kDalIoOutputOnly || io_type == upll::dal::kDalIoOutputAndMatch) { if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; col_index = col_info->get_column_index(); - replc_str += std::string(table_name); - replc_str += std::string("."); - replc_str += std::string(schema::ColumnName(table_index, - col_index)); - replc_str += std::string("= temp."); - replc_str += std::string(schema::ColumnName(table_index, - col_index)); + replc_str += table_name; + replc_str += "."; + replc_str += schema::ColumnName(table_index, col_index); + replc_str += "= temp."; + replc_str += schema::ColumnName(table_index, col_index); } // if } // for } break; - // Match Related Tokens - // {mand_match_columns} - col1, col2, ... - // column names of attributes bound for match + // Match Related Tokens + // {mand_match_columns} - col1, col2, ... + // column names of attributes bound for match case kDalMandMatchColNames: if (dbi == NULL || dbi->get_match_bind_count() == 0) { UPLL_LOG_DEBUG("No columns bound for Mandatory match"); return false; } - // {opt_match_columns} - col1, col2, ... - // column names of attributes bound for match - // All column names, if no attributes bound for output + // {opt_match_columns} - col1, col2, ... + // column names of attributes bound for match + // All column names, if no attributes bound for output case kDalOptMatchColNames: // PFC_ASSERT(dbi); if (dbi == NULL || dbi->get_match_bind_count() == 0) { @@ -746,12 +732,12 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, col_count = schema::TableNumCols(table_index); for (col_index = 0; col_index < col_count; col_index++) { if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; - replc_str += std::string(schema::ColumnName(table_index, col_index)); + replc_str += schema::ColumnName(table_index, col_index); } return true; } @@ -763,9 +749,9 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, } break; - // {mand_WHERE_match_columns_eq} - - // WHERE col1 = ?, col2 = ?, ... - // column names of attributes bound for match + // {mand_WHERE_match_columns_eq} - + // WHERE col1 = ?, col2 = ?, ... + // column names of attributes bound for match case kDalMandMatchColEqExpr: // PFC_ASSERT(dbi); if (dbi == NULL) { @@ -778,10 +764,10 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, return false; } - // {opt_WHERE_match_columns_eq} - - // WHERE col1 = ?, col2 = ?, ... - // column names of attributes bound for match - // Empty string if no attributes bound for match + // {opt_WHERE_match_columns_eq} - + // WHERE col1 = ?, col2 = ?, ... + // column names of attributes bound for match + // Empty string if no attributes bound for match case kDalOptMatchColEqExpr: if (dbi == NULL || dbi->get_match_bind_count() == 0) { UPLL_LOG_DEBUG("No columns bound for Optional Match"); @@ -790,7 +776,7 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, // Building string for attributes bound for match if (dbi->get_match_bind_count() > 0) { - replc_str += std::string("WHERE "); + replc_str += "WHERE "; } bind_list = dbi->get_bind_list(); @@ -802,23 +788,22 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, io_type == kDalIoInputAndMatch || io_type == kDalIoOutputAndMatch) { if (first != true) - replc_str += std::string(" AND "); + replc_str += " AND "; if (first) first = false; - replc_str += std::string(schema::ColumnName( - table_index, - col_info->get_column_index())); - replc_str += std::string(" = ?"); + replc_str += schema::ColumnName(table_index, + col_info->get_column_index()); + replc_str += " = ?"; } // if } // for break; - // {opt_WHERE_match_columns_eq_not_last} - - // WHERE col1 = ?, col2 = ?, ..., col(n-1) = ? - // n is the number of attributes bound for match - // column names of attributes bound for match + // {opt_WHERE_match_columns_eq_not_last} - + // WHERE col1 = ?, col2 = ?, ..., col(n-1) = ? + // n is the number of attributes bound for match + // column names of attributes bound for match case kDalOptMatchColEqNotLastExpr: if (dbi == NULL || dbi->get_match_bind_count() < 1) { UPLL_LOG_DEBUG("No columns bound for Optional Match"); @@ -827,7 +812,7 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, // Building string for attributes bound for match if (dbi->get_match_bind_count() > 1) - replc_str += std::string("WHERE "); + replc_str += "WHERE "; col_count = 0; bind_list = dbi->get_bind_list(); @@ -840,25 +825,24 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, io_type == kDalIoOutputAndMatch) { if (col_count <= dbi->get_match_bind_count() - 2) { if (first != true) - replc_str += std::string(" AND "); + replc_str += " AND "; if (first) first = false; - replc_str += std::string(schema::ColumnName( - table_index, - col_info->get_column_index())); - replc_str += std::string("= ?"); + replc_str += schema::ColumnName(table_index, + col_info->get_column_index()); + replc_str += "= ?"; } col_count++; } // if } // for break; - // {mand_WHERE_match_columns_last_greater} - - // WHERE col1 = ?, col2 = ?, ..., col(n-1) > ? - // n is the number of attributes bound for match - // column names of attributes bound for match + // {mand_WHERE_match_columns_last_greater} - + // WHERE col1 = ?, col2 = ?, ..., col(n-1) > ? + // n is the number of attributes bound for match + // column names of attributes bound for match case kDalMandMatchColLstGtrExpr: // PFC_ASSERT(dbi); if (dbi == NULL) { @@ -873,7 +857,7 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, // Building string for attributes bound for match if (dbi->get_match_bind_count() > 0) - replc_str += std::string("WHERE "); + replc_str += "WHERE "; col_count = 0; last_pkey_pos = UINT16_MAX; @@ -888,42 +872,41 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, io_type == kDalIoInputAndMatch || io_type == kDalIoOutputAndMatch) { if (first != true) - replc_str += std::string(" AND "); + replc_str += " AND "; if (first) first = false; - replc_str += std::string(schema::ColumnName( - table_index, - col_info->get_column_index())); + replc_str += schema::ColumnName(table_index, + col_info->get_column_index()); if (col_count == last_pkey_pos) - replc_str += std::string("> ?"); + replc_str += "> ?"; else - replc_str += std::string("= ?"); + replc_str += "= ?"; } // if col_count++; } // for break; - // Primary Key Related Tokens - // {primary_key_columns} - col1, col2, ... - // All primary key column names of the table + // Primary Key Related Tokens + // {primary_key_columns} - col1, col2, ... + // All primary key column names of the table case kDalPkeyColNames: col_count = schema::TableNumPkCols(table_index); for (col_index = 0; col_index < col_count; col_index++) { if (first != true) - replc_str += std::string(", "); + replc_str += ", "; if (first) first = false; - replc_str += std::string(schema::ColumnName(table_index, col_index)); + replc_str += schema::ColumnName(table_index, col_index); } break; - // {mand_match_columns_eq_with_temp} - // col1 = temp.col1 AND col2 = temp.col2 ... - // For all match columns in bind list + // {mand_match_columns_eq_with_temp} + // col1 = temp.col1 AND col2 = temp.col2 ... + // For all match columns in bind list case kDalMandMatchColEqTempExpr: if (dbi == NULL) { UPLL_LOG_INFO("Null Bind Info for Mandatory token"); @@ -937,7 +920,7 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, // Building string for attributes bound for match if (dbi->get_match_bind_count() > 0) - replc_str += std::string("WHERE "); + replc_str += "WHERE "; bind_list = dbi->get_bind_list(); for (bl_it = bind_list.begin(); bl_it != bind_list.end(); ++bl_it) { @@ -947,33 +930,30 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, io_type == kDalIoInputAndMatch || io_type == kDalIoOutputAndMatch) { if (first != true) - replc_str += std::string(" AND "); + replc_str += " AND "; if (first) first = false; - replc_str += std::string(schema::ColumnName( - table_index, - col_info->get_column_index())); - replc_str += std::string(" = temp."); - replc_str += std::string(schema::ColumnName( - table_index, - col_info->get_column_index())); - + replc_str += schema::ColumnName(table_index, + col_info->get_column_index()); + replc_str += " = temp."; + replc_str += schema::ColumnName(table_index, + col_info->get_column_index()); } // if col_count++; } // for break; - // {match_dst_primary_key_columns_eq_with_temp} - col1, col2, ... - // .col1 = temp.col1 AND .col2 = temp.col2 ... - // For all primary key column names of the table + // {match_dst_primary_key_columns_eq_with_temp} - col1, col2, ... + // .col1 = temp.col1 AND .col2 = temp.col2 ... + // For all primary key column names of the table case kDalMatchPriColEqTempExpr: table_name = ""; col_count = schema::TableNumPkCols(table_index); for (col_index = 0; col_index < col_count; col_index++) { if (first != true) - replc_str += std::string(" AND "); + replc_str += " AND "; if (first) first = false; @@ -982,40 +962,40 @@ bool DalQueryBuilder::get_bind_str(const DalQuerytoken token, table_index, first_config, second_config) != true) { return false; } - replc_str += std::string(table_name); - replc_str += std::string("."); - replc_str += std::string(schema::ColumnName(table_index, col_index)); - replc_str += std::string(" = temp."); - replc_str += std::string(schema::ColumnName(table_index, col_index)); + replc_str += table_name; + replc_str += "."; + replc_str += schema::ColumnName(table_index, col_index); + replc_str += " = temp."; + replc_str += schema::ColumnName(table_index, col_index); } break; - // Table Related Tokens - // {config1_table_name} - _ + // Table Related Tokens + // {config1_table_name} - _ case kDalCfg1TableName: - // {dst_table_name} - _ + // {dst_table_name} - _ case kDalDstTableName: if (get_config_prefix(first_config, replc_str) != true) { - UPLL_LOG_DEBUG("First/Dest configuration type wrong"); - return false; + UPLL_LOG_DEBUG("First/Dest configuration type wrong"); + return false; } - replc_str += std::string(schema::TableName(table_index)); + replc_str += schema::TableName(table_index); break; - // {config2_table_name} - _ + // {config2_table_name} - _ case kDalCfg2TableName: - // {src_table_name} - _ + // {src_table_name} - _ case kDalSrcTableName: if (get_config_prefix(second_config, replc_str) != true) { - UPLL_LOG_DEBUG("Second/src configuration type wrong"); - return false; + UPLL_LOG_DEBUG("Second/src configuration type wrong"); + return false; } - replc_str += std::string(schema::TableName(table_index)); + replc_str += schema::TableName(table_index); break; - /* Invalid token */ + /* Invalid token */ default: UPLL_LOG_DEBUG("Invalid query token"); return false; diff --git a/coordinator/modules/dal/dal_query_builder.hh b/coordinator/modules/dal/dal_query_builder.hh index 40796f2f..d99ddd79 100644 --- a/coordinator/modules/dal/dal_query_builder.hh +++ b/coordinator/modules/dal/dal_query_builder.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -220,9 +220,13 @@ class DalQueryBuilder { * converts token string to enum constants * * @param[in] tokenstr - replacement token string + * @param[in] start_pos - replacement token string:start position + * @param[in] length - replacement token string:length * @return DalQuerytoken - valid DalQuerytoken enum on success */ - DalQuerytoken str_to_num(const std::string &tokenstr) const; + DalQuerytoken str_to_num(const std::string &tokenstr, + const size_t start_pos, + const size_t length) const; /* get_config_prefix * verifies config type, and adds appropriate config type prefix @@ -234,19 +238,17 @@ class DalQueryBuilder { bool get_config_prefix(const UpllCfgType type, std::string &config_type) const; - /* next_token + /* next_token_pos * keep finding tokens in sql template until all token found * * @param[in] query_template - query template specific to API - * @param[in] start_position - next start position of each token - * @param[out] token - actual token string which need to replace + * @param[in/out] start_position - next start position of each token * @param[in/out] last_position - last end position of previous token * @return bool - true on success else false */ - bool next_token(const std::string &query_template, - const size_t start_position, - std::string *token, - size_t *last_position) const; + bool next_token_pos(const std::string &query_template, + size_t &start_position, + size_t &last_position) const; /* get_bind_str * generate column's or table name string according to token, and it diff --git a/coordinator/modules/dal/dal_schema.cc b/coordinator/modules/dal/dal_schema.cc index b8f9cb87..cc93c496 100644 --- a/coordinator/modules/dal/dal_schema.cc +++ b/coordinator/modules/dal/dal_schema.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -41,7 +41,7 @@ const DalColumnSchema vtn_schema[] = { {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_description", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vtn namespace vtn_controller { const DalColumnSchema vtn_controller_schema[] = { @@ -58,7 +58,7 @@ const DalColumnSchema vtn_controller_schema[] = { {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_description", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vtn_controller namespace vtn_rename { const DalColumnSchema vtn_rename_schema[] = { @@ -67,7 +67,7 @@ const DalColumnSchema vtn_rename_schema[] = { {"domain_id", SQL_VARCHAR, SQL_C_CHAR, 32}, {"unc_vtn_name", SQL_VARCHAR, SQL_C_CHAR, 32} }; -} +} // namespace vtn_rename namespace vbridge { const DalColumnSchema vbridge_schema[] = { @@ -95,7 +95,7 @@ const DalColumnSchema vbridge_schema[] = { {"cs_host_addr_mask", SQL_SMALLINT, SQL_C_SHORT, 1}, {"flags", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vbridge namespace vbridge_vlanmap { const DalColumnSchema vbridge_vlanmap_schema[] = { @@ -104,14 +104,16 @@ const DalColumnSchema vbridge_vlanmap_schema[] = { {"logical_port_id", SQL_VARCHAR, SQL_C_CHAR, 320}, {"logical_port_id_valid", SQL_SMALLINT, SQL_C_SHORT, 1}, {"vlanid", SQL_INTEGER, SQL_C_ULONG, 1}, + {"bdry_ref_count", SQL_BIGINT, SQL_C_UBIGINT, 1}, {"controller_name", SQL_VARCHAR, SQL_C_CHAR, 32}, {"domain_id", SQL_VARCHAR, SQL_C_CHAR, 32}, {"flags", SQL_SMALLINT, SQL_C_SHORT, 1}, {"valid_vlanid", SQL_SMALLINT, SQL_C_SHORT, 1}, + {"valid_bdry_ref_count", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_vlanid", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vbridge_vlanmap namespace vbridge_interface { const DalColumnSchema vbridge_interface_schema[] = { @@ -149,7 +151,7 @@ const DalColumnSchema vbridge_interface_schema[] = { {"cs_vlanid", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_tagged", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vbridge_interface namespace vrouter { const DalColumnSchema vrouter_schema[] = { @@ -173,7 +175,7 @@ const DalColumnSchema vrouter_schema[] = { {"cs_vrt_description", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_dhcprelay_admin_status", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vrouter namespace vrouter_interface { const DalColumnSchema vrouter_interface_schema[] = { @@ -203,7 +205,7 @@ const DalColumnSchema vrouter_interface_schema[] = { {"cs_mac_addr", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_admin_status", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vrouter_interface namespace vnode_rename { const DalColumnSchema vnode_rename_schema[] = { @@ -214,7 +216,7 @@ const DalColumnSchema vnode_rename_schema[] = { {"unc_vtn_name", SQL_VARCHAR, SQL_C_CHAR, 32}, {"unc_vnode_name", SQL_VARCHAR, SQL_C_CHAR, 32} }; -} +} // namespace vnode_rename namespace vlink { const DalColumnSchema vlink_schema[] = { @@ -255,7 +257,7 @@ const DalColumnSchema vlink_schema[] = { {"cs_vlanid", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_description", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vlink namespace vlink_rename { const DalColumnSchema vlink_rename_schema[] = { @@ -266,7 +268,7 @@ const DalColumnSchema vlink_rename_schema[] = { {"unc_vtn_name", SQL_VARCHAR, SQL_C_CHAR, 32}, {"unc_vlink_name", SQL_VARCHAR, SQL_C_CHAR, 32} }; -} +} // namespace vlink_rename namespace static_ip_route { const DalColumnSchema static_ip_route_schema[] = { @@ -284,7 +286,7 @@ const DalColumnSchema static_ip_route_schema[] = { {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_metric", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace static_ip_route namespace dhcprelay_server { const DalColumnSchema dhcprelay_server_schema[] = { @@ -296,7 +298,7 @@ const DalColumnSchema dhcprelay_server_schema[] = { {"flags", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace dhcprelay_server namespace dhcprelay_interface { const DalColumnSchema dhcprelay_interface_schema[] = { @@ -308,7 +310,7 @@ const DalColumnSchema dhcprelay_interface_schema[] = { {"flags", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace dhcprelay_interface namespace vbridge_networkmonitor_group { const DalColumnSchema vbridge_networkmonitor_group_schema[] = { @@ -325,7 +327,7 @@ const DalColumnSchema vbridge_networkmonitor_group_schema[] = { {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_admin_status", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vbridge_networkmonitor_group namespace vbridge_networkmonitor_host { const DalColumnSchema vbridge_networkmonitor_host_schema[] = { @@ -353,7 +355,7 @@ const DalColumnSchema vbridge_networkmonitor_host_schema[] = { {"cs_recovery_count", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_wait_time", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vbridge_networkmonitor_host namespace vunknown { const DalColumnSchema vunknown_schema[] = { @@ -371,7 +373,7 @@ const DalColumnSchema vunknown_schema[] = { {"cs_type", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_domain_id", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vunknown namespace vunknown_interface { const DalColumnSchema vunknown_interface_schema[] = { @@ -388,7 +390,7 @@ const DalColumnSchema vunknown_interface_schema[] = { {"cs_description", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_admin_status", SQL_SMALLINT, SQL_C_SHORT, 1}, }; -} +} // namespace vunknown_interface namespace vtep { const DalColumnSchema vtep_schema[] = { @@ -409,7 +411,7 @@ const DalColumnSchema vtep_schema[] = { {"cs_controller_name", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_domain_id", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vtep namespace vtep_interface { const DalColumnSchema vtep_interface_schema[] = { @@ -441,7 +443,7 @@ const DalColumnSchema vtep_interface_schema[] = { {"cs_vlanid", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_tagged", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vtep_interface namespace vtep_group { const DalColumnSchema vtep_group_schema[] = { @@ -456,7 +458,7 @@ const DalColumnSchema vtep_group_schema[] = { {"cs_controller_name", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_description", SQL_SMALLINT, SQL_C_SHORT, 1}, }; -} +} // namespace vtep_group namespace vtep_groupmember { const DalColumnSchema vtep_groupmember_schema[] = { @@ -468,7 +470,7 @@ const DalColumnSchema vtep_groupmember_schema[] = { {"flags", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1}, }; -} +} // namespace vtep_groupmember namespace vtunnel { const DalColumnSchema vtunnel_schema[] = { @@ -498,7 +500,7 @@ const DalColumnSchema vtunnel_schema[] = { {"cs_vtepgrp_name", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_label", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vtunnel namespace vtunnel_interface { const DalColumnSchema vtunnel_interface_schema[] = { @@ -530,7 +532,7 @@ const DalColumnSchema vtunnel_interface_schema[] = { {"cs_vlanid", SQL_SMALLINT, SQL_C_SHORT, 1}, {"cs_tagged", SQL_SMALLINT, SQL_C_SHORT, 1} }; -} +} // namespace vtunnel_interface // L2/L3 MoMgrs Schema End @@ -557,7 +559,7 @@ const DalColumnSchema flowlist_ctrlr_schema[] = { { "cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1 }, { "cs_ip_type", SQL_SMALLINT, SQL_C_SHORT, 1 } }; // flowlist_ctrlr_schema -} // namespace flowlist ctrlr +} // namespace flowlist_ctrlr namespace flowlist_rename { const DalColumnSchema flowlist_rename_schema[] = { @@ -1111,7 +1113,7 @@ const DalColumnSchema vbr_if_policingmap_schema[] = { { "cs_rowstatus", SQL_SMALLINT, SQL_C_SHORT, 1 }, { "cs_policername", SQL_SMALLINT, SQL_C_SHORT, 1 } }; // vbr_policingmap_schema -} // namespace vbr_policingmap +} // namespace vbr_if_policingmap // POM MoMgrs Schema End @@ -1127,6 +1129,64 @@ const DalColumnSchema ctrlr_schema[] = { }; } // namespace ctrlr +// Relational Schema - Shows parent-child relation +const DalRelnSchema relational_schema[] = { +// VTN Schemas + { kDalNumTables, 0 }, // VTN Schema + { kDalNumTables, 0 }, // VTN Controller Schema + { kDalNumTables, 0 }, // VTN Rename Schema + { kDbiVtnTbl, 1 }, // Vbridge Schema + { kDbiVbrTbl, 2 }, // Vbridge Vlanmap Schema + { kDbiVbrTbl, 2 }, // Vbridge Interface Schema + { kDbiVtnTbl, 1 }, // Vrouter Schema + { kDbiVrtTbl, 2 }, // Vrouter Interface Schema + { kDalNumTables, 0 }, // Vnode Rename Schema + { kDbiVtnTbl, 1 }, // Vlink Schema + { kDalNumTables, 0 }, // Vlink Rename Schema + { kDbiVrtTbl, 2 }, // Static IP Route Schema + { kDbiVrtTbl, 2 }, // Dhcp Relay Server Schema + { kDbiVrtTbl, 2 }, // Dhcp Relay Interface Schema + { kDbiVbrTbl, 2 }, // Vbridge Network Monitor Schema + { kDbiVbrNwMonTbl, 3 }, // Vbridge Network Monitor Host Schema + { kDbiVtnTbl, 1 }, // Vunknown Schema + { kDbiVunknownTbl, 2 }, // Vunknown Interface Schema + { kDbiVtnTbl, 1 }, // Vtep Schema + { kDbiVtepTbl, 2 }, // Vtep Interface Schema + { kDbiVtnTbl, 1 }, // Vtep Group Schema + { kDbiVtepGrpTbl, 2 }, // Vtep Group Member Schema + { kDbiVtnTbl, 1 }, // Vtunnel Schema + { kDbiVtunnelTbl, 2 }, // Vtunnel Interface Schema + +// POM schemas + { kDalNumTables, 0 }, // Flowlist Schema + { kDalNumTables, 0 }, // Flowlist Controller Schema + { kDalNumTables, 0 }, // Flowlist Rename Schema + { kDbiFlowListTbl, 1 }, // Flowlist Entry Schema + { kDalNumTables, 0 }, // Flowlist Entry Controller Schema + { kDalNumTables, 0 }, // Policing profile Schema + { kDalNumTables, 0 }, // Policing profile Controller Schema + { kDalNumTables, 0 }, // Policing profile Rename Schema + { kDbiPolicingProfileTbl, 1 }, // Policing profile Entry Schema + { kDalNumTables, 0 }, // Policing profile Entry Controller Schema + { kDbiVtnTbl, 1 }, // VTN Flowfilter Schema + { kDalNumTables, 0 }, // VTN Flowfilter Controller Schema + { kDbiVtnFlowFilterTbl, 2 }, // VTN Flowfilter Entry Schema + { kDalNumTables, 0 }, // VTN Flowfilter Entry Controller Schema + { kDbiVbrTbl, 2 }, // Vbridge Flowfilter Schema + { kDbiVbrFlowFilterTbl, 3 }, // Vbridge Flowfilter Entry Schema + { kDbiVbrIfTbl, 3 }, // Vbridge Interface Flowfilter Schema + { kDbiVbrIfFlowFilterTbl, 4 }, // Vbridge Interface Flowfilter Entry Schema + { kDbiVrtIfTbl, 3 }, // Vrouter Interface Flowfilter Schema + { kDbiVrtIfFlowFilterTbl, 4 }, // Vrouter Interface Flowfilter Entry Schema + { kDbiVtnTbl, 1 }, // VTN Policing Map Schema + { kDalNumTables, 0 }, // VTN Policing Map Controller Schema + { kDbiVbrTbl, 2 }, // Vbridge Policing Map Schema + { kDbiVbrIfTbl, 3 }, // Vbridge Interface Policing Map Schema + +// Ctrlr Schema + { kDalNumTables, 0 } // Controller Schema +}; // Relational schema + const DalTableSchema table_schema[] = { // L2/L3 MoMgr table Schema Info Start {"vtn_tbl", diff --git a/coordinator/modules/dal/dal_schema.hh b/coordinator/modules/dal/dal_schema.hh index fd54b139..1336c27a 100644 --- a/coordinator/modules/dal/dal_schema.hh +++ b/coordinator/modules/dal/dal_schema.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -36,6 +36,11 @@ struct DalColumnSchema { size_t db_array_size; // size used in DB }; +struct DalRelnSchema { + DalTableIndex parent_index; + size_t num_fk_columns; +}; + struct DalTableSchema { const char *table_name; // Table Name size_t num_columns; // Total number of columns in the table @@ -66,7 +71,7 @@ enum kVtnIndex { kDbiVtnCsDesc, kDbiVtnNumCols }; -} +} // namespace vtn namespace vtn_controller { static const uint8_t kVtnCtrlrNumPks = 3; @@ -85,7 +90,7 @@ enum kVtnCtrlrIndex { kDbiCsDesc, kDbiVtnCtrlrNumCols }; -} +} // namespace vtn_controller namespace vtn_rename { static const uint8_t kVtnRenameNumPks = 3; @@ -126,7 +131,7 @@ enum kVbrIndex { kDbiVbrFlags, kDbiVbrNumCols }; -} +} // namespace vbridge namespace vbridge_vlanmap { static const uint8_t kVbrVlanMapNumPks = 4; @@ -136,15 +141,17 @@ enum kVbrVlanMapIndex { kDbiLogicalPortId, kDbiLogicalPortIdValid, kDbiVlanid, + kDbiBdryRefCount, kDbiCtrlrName, kDbiDomainId, kDbiVbrVlanMapFlags, kDbiValidVlanid, + kDbiValidBdryRefCount, kDbiCsRowStatus, kDbiCsVlanid, kDbiVbrVlanMapNumCols }; -} +} // namespace vbridge_vlanmap namespace vbridge_interface { static const uint8_t kVbrIfNumPks = 3; @@ -184,7 +191,7 @@ enum kVbrIfIndex { kDbiCsTagged, kDbiVbrIfNumCols }; -} +} // namespace vbridge_interface namespace vrouter { static const uint8_t kVrtNumPks = 2; @@ -210,7 +217,7 @@ enum kVrtIndex { kDbiCsDhcprelayAdminstatus, kDbiVrtNumCols }; -} +} // namespace vrouter namespace vrouter_interface { static const uint8_t kVrtIfNumPks = 3; @@ -242,7 +249,7 @@ enum kVrtIfIndex { kDbiCsAdminStatus, kDbiVrtIfNumCols }; -} +} // namespace vrouter_interface namespace vnode_rename { static const uint8_t kVnodeRenameNumPks = 4; @@ -255,7 +262,7 @@ enum kVnodeRenameIndex { kDbiUncvnodeName, kDbiVnodeRenameNumCols }; -} +} // namespace vnode_rename namespace vlink { static const uint8_t kVlinkNumPks = 2; @@ -298,7 +305,7 @@ enum kVlinkIndex { kDbiCsDesc, kDbiVlinkNumCols }; -} +} // namespace vlink namespace vlink_rename { static const uint8_t kVlinkRenameNumPks = 4; @@ -311,7 +318,7 @@ enum kVlinkRenameIndex { kDbiVlinkName, kDbiVlinkRenameNumCols }; -} +} // namespace vlink_rename namespace static_ip_route { static const uint8_t kStaticIpRouteNumPks = 6; @@ -331,7 +338,7 @@ enum kStaticIpRouteIndex { kDbiCsMetric, kDbiStaticIpRouteNumCols }; -} +} // namespace static_ip_route namespace dhcprelay_server { static const uint8_t kDhcpRelayServerNumPks = 3; @@ -345,7 +352,7 @@ enum kDhcpRelayServerIndex { kDbiCsRowstatus, kDbiDhcpRelayServerNumCols }; -} +} // namespace dhcprelay_server namespace dhcprelay_interface { static const uint8_t kDhcpRelayIfNumPks = 3; @@ -359,7 +366,7 @@ enum kDhcpRelayIfIndex { kDbiCsRowstatus, kDbiDhcpRelayIfNumCols }; -} +} // namespace dhcprelay_interface namespace vbridge_networkmonitor_group { static const uint8_t kVbrNwMonGrpNumPks = 3; @@ -378,7 +385,7 @@ enum kVbrNwMonGrpIndex { kDbiCsAdminStatus, kDbiVbrNwMonGrpNumCols }; -} +} // namespace vbridge_networkmonitor_group namespace vbridge_networkmonitor_host { static const uint8_t kVbrNwMonHostNumPks = 4; @@ -408,7 +415,7 @@ enum kVbrNwMonHostIndex { kDbiCsWaitTime, kDbiVbrNwMonHostNumCols }; -} +} // namespace vbridge_networkmonitor_host namespace vunknown { static const uint8_t kVunknownNumPks = 2; @@ -428,7 +435,7 @@ enum kVunknownIndex { kDbiCsDomainId, kDbiVunknownNumCols }; -} +} // namespace vunknown namespace vunknown_interface { static const uint8_t kVunknownIfNumPks = 3; @@ -447,7 +454,7 @@ enum kVunknownIfIndex { kDbiCsAdminStatus, kDbiVunknownIfNumCols }; -} +} // namespace vunknown_interface namespace vtep { static const uint8_t kVtepNumPks = 2; @@ -470,7 +477,7 @@ enum kVtepIndex { kDbiCsDomainId, kDbiVtepNumCols }; -} +} // namespace vtep namespace vtep_interface { static const uint8_t kVtepIfNumPks = 3; @@ -504,7 +511,7 @@ enum kVtepIfIndex { kDbiCsTagged, kDbiVtepIfNumCols }; -} +} // namespace vtep_interface namespace vtep_group { static const uint8_t kVtepGrpNumPks = 2; @@ -521,7 +528,7 @@ enum kVtepGrpIndex { kDbiCsDesc, kDbiVtepGrpNumCols }; -} +} // namespace vtep_group namespace vtep_groupmember { static const uint8_t kVtepGrpMemNumPks = 3; @@ -535,7 +542,7 @@ enum kVtepGrpMemIndex { kDbiCsRowstatus, kDbiVtepGrpMemNumCols }; -} +} // namespace vtep_groupmember namespace vtunnel { static const uint8_t kVtunnelNumPks = 2; @@ -567,7 +574,7 @@ enum kVtunnelIndex { kDbiCsLabel, kDbiVtunnelNumCols }; -} +} // namespace vtunnel namespace vtunnel_interface { static const uint8_t kVtunnelIfNumPks = 3; @@ -601,7 +608,7 @@ enum kVtunnelIfIndex { kDbiCsTagged, kDbiVtunnelIfNumCols }; -} +} // namespace vtunnel_interface // L2/L3 MoMgr Enum End // POM MoMgr Enum Start @@ -780,7 +787,7 @@ enum FlowListEntryCtrlrSchema { kDbiCsIcmpV6Code, kDbiFlowListEntryCtrlrNumCols // Number of Columns }; // FlowFilterEntryCtrlrSchema -} // namespace flowlist_entry_Ctrlr +} // namespace flowlist_entry_ctrlr // Enum definition for index in global policing profile table Schema namespace policingprofile { @@ -1333,6 +1340,7 @@ enum kDalTableIndex { kDalNumTables }; // enum kDalTableIndex + extern const DalRelnSchema relational_schema[]; extern const DalTableSchema table_schema[]; }; // namespace table @@ -1355,6 +1363,16 @@ TableNumPkCols(uint16_t table_index) { table::table_schema[table_index].num_pk_columns : 0); } +inline size_t +TableParentIndex(uint16_t table_index) { + return (table::relational_schema[table_index].parent_index); +} + +inline size_t +TableNumFkCols(uint16_t table_index) { + return ((table_index < table::kDalNumTables) ? + table::relational_schema[table_index].num_fk_columns : 0); +} /* Inline Functions for Column Schema */ inline const char * diff --git a/coordinator/modules/dal/utils/table_creation.cc b/coordinator/modules/dal/utils/table_creation.cc index b0075ba7..066fc42c 100644 --- a/coordinator/modules/dal/utils/table_creation.cc +++ b/coordinator/modules/dal/utils/table_creation.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -148,7 +148,7 @@ void build_create_table_script() { // Print Copyright line.clear(); line += "/*\n" - " * Copyright (c) 2012-2013 NEC Corporation\n" + " * Copyright (c) 2012-2014 NEC Corporation\n" " * All rights reserved.\n" " *\n" " * This program and the accompanying materials are made available " @@ -164,7 +164,7 @@ void build_create_table_script() { line += "/**\n" " * upll_create_table.sql\n" " * Contains SQL commands to create all the tables need for UPLL\n" - " */\n"; + " */\n"; printf("\n%s", line.c_str()); for (cfg_idx = 0; cfg_idx < kUpllDbNumCfgId; cfg_idx++) { @@ -192,25 +192,31 @@ void build_create_table_script() { line += " "; // data type - line += get_data_type_str(uudschema::ColumnDbDataTypeId(tbl_idx, col_idx)); + line += get_data_type_str(uudschema::ColumnDbDataTypeId( + tbl_idx, + col_idx)); // dimension if (uudschema::ColumnDbArraySize(tbl_idx, col_idx) > 1 && uudschema::ColumnDbDataTypeId(tbl_idx, col_idx) != SQL_BINARY) { line += "("; memset(size_str, '0', 4); - sprintf(size_str, "%zd", uudschema::ColumnDbArraySize(tbl_idx, col_idx)); + sprintf(size_str, "%zd", uudschema::ColumnDbArraySize( + tbl_idx, + col_idx)); line += size_str; line += ")"; } - + // default line += " default "; def_type = get_default_type(uudschema::ColumnName(tbl_idx, col_idx), - uudschema::ColumnDbDataTypeId(tbl_idx, col_idx)); + uudschema::ColumnDbDataTypeId(tbl_idx, + col_idx)); if (def_type == kDefaultTypeBinary) { line += "'"; - for (uint16_t i = 0; i < uudschema::ColumnDbArraySize(tbl_idx, col_idx); i++) { + for (uint16_t i = 0; i < uudschema::ColumnDbArraySize(tbl_idx, + col_idx); i++) { line+= get_default_str((UpllDbCfgId)cfg_idx, def_type); } line += "'"; @@ -232,7 +238,8 @@ void build_create_table_script() { // Primary Keys line += "PRIMARY KEY("; first = true; - for (col_idx = 0; col_idx < uudschema::TableNumPkCols(tbl_idx); col_idx++) { + for (col_idx = 0; col_idx < uudschema::TableNumPkCols(tbl_idx); + col_idx++) { if (first == false) { line += ", "; } else { @@ -240,15 +247,66 @@ void build_create_table_script() { } line += uudschema::ColumnName(tbl_idx, col_idx); } - line += "));"; + if ((cfg_idx == kCfgIdCandidate) && + uudschema::TableParentIndex(tbl_idx) < uudstbl::kDalNumTables) { + line += "),"; + } else { + line += "));"; + } printf("\n %s", line.c_str()); + + // Foreign Keys + if ((cfg_idx == kCfgIdCandidate) && + uudschema::TableParentIndex(tbl_idx) < uudstbl::kDalNumTables) { + line.clear(); + line += "FOREIGN KEY("; + first = true; + for (col_idx = 0; col_idx < uudschema::TableNumFkCols(tbl_idx); + col_idx++) { + if (first == false) { + line += ", "; + } else { + first = false; + } + line += uudschema::ColumnName(tbl_idx, col_idx); + } + line += ") "; + line += "REFERENCES "; + line += get_cfg_str(static_cast(cfg_idx)); + line += uudschema::TableName(uudschema::TableParentIndex(tbl_idx)); + line += "("; + first = true; + for (col_idx = 0; col_idx < uudschema::TableNumFkCols(tbl_idx); + col_idx++) { + if (first == false) { + line += ", "; + } else { + first = false; + } + line += uudschema::ColumnName(uudschema::TableParentIndex(tbl_idx), + col_idx); + } + line += "));"; + printf("\n %s", line.c_str()); + } + printf("\n"); } // for all tables } // for all config types } // build_create_table_script +void build_create_index_script() { + printf("\nCREATE INDEX ca_vbr_if_tbl_semindex ON ca_vbr_if_tbl USING btree (logical_port_id, controller_name, domain_id, valid_portmap, valid_logical_port_id);"); + printf("\nCREATE INDEX ca_policingprofile_entry_tbl_semindex ON ca_policingprofile_entry_tbl USING btree (flowlist, valid_flowlist);"); + printf("\nCREATE INDEX ca_vtn_policingmap_tbl_semindex ON ca_vtn_policingmap_tbl USING btree (policername, valid_policername);"); + printf("\nCREATE INDEX ca_vbr_policingmap_tbl_semindex ON ca_vbr_policingmap_tbl USING btree (policername, valid_policername);"); + printf("\nCREATE INDEX ca_vbr_if_policingmap_tbl_semindex ON ca_vbr_if_policingmap_tbl USING btree (policername, valid_policername);"); + + printf("\nCREATE INDEX ru_vbr_if_tbl_showindex ON ru_vbr_if_tbl (vtn_name, vex_name, valid_vex_name);"); +} int main() { build_create_table_script(); + build_create_index_script(); return 0; } diff --git a/coordinator/modules/dal/utils/table_creation.sh b/coordinator/modules/dal/utils/table_creation.sh new file mode 100644 index 00000000..b782d1e2 --- /dev/null +++ b/coordinator/modules/dal/utils/table_creation.sh @@ -0,0 +1,20 @@ +# +# Copyright (c) 2013-2014 NEC Corporation +# All rights reserved. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License v1.0 which accompanies this +# distribution, and is available at http://www.eclipse.org/legal/epl-v10.html +# + +#/* +# * table_creation.sh +# * Creates SQL file with table creation queries +# * Copies the SQL file to /dev/src/sql/ +# * Usage : sh table_creation.sh +# */ + +make clean; +make all; +./upll_create_table.exe > upll_create_table.sql +cp upll_create_table.sql ../../../sql/ diff --git a/coordinator/modules/dal/utils/table_deletion.cc b/coordinator/modules/dal/utils/table_deletion.cc index bf594845..41b36dba 100644 --- a/coordinator/modules/dal/utils/table_deletion.cc +++ b/coordinator/modules/dal/utils/table_deletion.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -65,7 +65,7 @@ void build_delete_table_script() { // Print Copyright line.clear(); line += "/*\n" - " * Copyright (c) 2012-2013 NEC Corporation\n" + " * Copyright (c) 2012-2014 NEC Corporation\n" " * All rights reserved.\n" " *\n" " * This program and the accompanying materials are made available " @@ -80,21 +80,22 @@ void build_delete_table_script() { line.clear(); line += "/**\n" " * upll_delete_table.sql\n" - " * Contains SQL commands to delete all the tables created by UPLL\n" - " */\n"; + " * Contains SQL commands to delete all the tables" + "created by UPLL\n" + " */\n"; printf("\n%s", line.c_str()); - for (cfg_idx = 0; cfg_idx < kUpllDbNumCfgId; cfg_idx++) { - for (tbl_idx = 0; tbl_idx < uudstbl::kDalNumTables; tbl_idx++) { + for (uint16_t tbl_iter = uudstbl::kDalNumTables; tbl_iter > 0; tbl_iter--) { + tbl_idx = tbl_iter - 1; // Controller Table appears only in Candidate if (tbl_idx == uudstbl::kDbiCtrlrTbl && cfg_idx != kCfgIdCandidate) { - break; + continue; } - // Create Table + // Delete Table line.clear(); - line += "DROP TABLE "; + line += "TRUNCATE TABLE "; line += get_cfg_str(static_cast(cfg_idx)); line += uudschema::TableName(tbl_idx); line += ";"; diff --git a/coordinator/modules/dal/utils/upll_create_table.sql b/coordinator/modules/dal/utils/upll_create_table.sql index 36c89830..6fa36db8 100644 --- a/coordinator/modules/dal/utils/upll_create_table.sql +++ b/coordinator/modules/dal/utils/upll_create_table.sql @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -84,10 +84,12 @@ CREATE TABLE su_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 3, cs_vlanid smallint default 3, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -1064,7 +1066,8 @@ CREATE TABLE ca_vbr_tbl ( cs_host_addr smallint default 3, cs_host_addr_mask smallint default 3, flags smallint default 0, - PRIMARY KEY(vtn_name, vbridge_name)); + PRIMARY KEY(vtn_name, vbridge_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vbr_vlanmap_tbl ( vtn_name varchar(32) default ' ', @@ -1072,13 +1075,16 @@ CREATE TABLE ca_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 3, cs_vlanid smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); + PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid), + FOREIGN KEY(vtn_name, vbridge_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_if_tbl ( vtn_name varchar(32) default ' ', @@ -1114,7 +1120,8 @@ CREATE TABLE ca_vbr_if_tbl ( cs_logical_port_id smallint default 3, cs_vlanid smallint default 3, cs_tagged smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, if_name)); + PRIMARY KEY(vtn_name, vbridge_name, if_name), + FOREIGN KEY(vtn_name, vbridge_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vrt_tbl ( vtn_name varchar(32) default ' ', @@ -1136,7 +1143,8 @@ CREATE TABLE ca_vrt_tbl ( cs_domain_id smallint default 3, cs_vrt_description smallint default 3, cs_dhcprelay_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name)); + PRIMARY KEY(vtn_name, vrouter_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vrt_if_tbl ( vtn_name varchar(32) default ' ', @@ -1164,7 +1172,8 @@ CREATE TABLE ca_vrt_if_tbl ( cs_mask smallint default 3, cs_mac_addr smallint default 3, cs_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, if_name)); + PRIMARY KEY(vtn_name, vrouter_name, if_name), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_vnode_rename_tbl ( ctrlr_vtn_name varchar(32) default ' ', @@ -1212,7 +1221,8 @@ CREATE TABLE ca_vlink_tbl ( cs_boundary_name smallint default 3, cs_vlanid smallint default 3, cs_description smallint default 3, - PRIMARY KEY(vtn_name, vlink_name)); + PRIMARY KEY(vtn_name, vlink_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vlink_rename_tbl ( ctrlr_vtn_name varchar(32) default ' ', @@ -1237,7 +1247,8 @@ CREATE TABLE ca_static_ip_route_tbl ( valid_metric smallint default 0, cs_rowstatus smallint default 3, cs_metric smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, dst_ip_addr, mask, next_hop_addr, nwm_name)); + PRIMARY KEY(vtn_name, vrouter_name, dst_ip_addr, mask, next_hop_addr, nwm_name), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_dhcp_relay_server_tbl ( vtn_name varchar(32) default ' ', @@ -1247,7 +1258,8 @@ CREATE TABLE ca_dhcp_relay_server_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, server_ip_addr)); + PRIMARY KEY(vtn_name, vrouter_name, server_ip_addr), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_dhcp_relay_if_tbl ( vtn_name varchar(32) default ' ', @@ -1257,7 +1269,8 @@ CREATE TABLE ca_dhcp_relay_if_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, if_name)); + PRIMARY KEY(vtn_name, vrouter_name, if_name), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_vbr_nwmon_grp_tbl ( vtn_name varchar(32) default ' ', @@ -1272,7 +1285,8 @@ CREATE TABLE ca_vbr_nwmon_grp_tbl ( valid_oper_status smallint default 0, cs_rowstatus smallint default 3, cs_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, nwm_name)); + PRIMARY KEY(vtn_name, vbridge_name, nwm_name), + FOREIGN KEY(vtn_name, vbridge_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_nwmon_host_tbl ( vtn_name varchar(32) default ' ', @@ -1298,7 +1312,8 @@ CREATE TABLE ca_vbr_nwmon_host_tbl ( cs_failure_count smallint default 3, cs_recovery_count smallint default 3, cs_wait_time smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, nwm_name, host_address)); + PRIMARY KEY(vtn_name, vbridge_name, nwm_name, host_address), + FOREIGN KEY(vtn_name, vbridge_name, nwm_name) REFERENCES ca_vbr_nwmon_grp_tbl(vtn_name, vbridge_name, nwm_name)); CREATE TABLE ca_vunknown_tbl ( vtn_name varchar(32) default ' ', @@ -1314,7 +1329,8 @@ CREATE TABLE ca_vunknown_tbl ( cs_description smallint default 3, cs_type smallint default 3, cs_domain_id smallint default 3, - PRIMARY KEY(vtn_name, vunknown_name)); + PRIMARY KEY(vtn_name, vunknown_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vunknown_if_tbl ( vtn_name varchar(32) default ' ', @@ -1329,7 +1345,8 @@ CREATE TABLE ca_vunknown_if_tbl ( cs_rowstatus smallint default 3, cs_description smallint default 3, cs_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vunknown_name, if_name)); + PRIMARY KEY(vtn_name, vunknown_name, if_name), + FOREIGN KEY(vtn_name, vunknown_name) REFERENCES ca_vunknown_tbl(vtn_name, vunknown_name)); CREATE TABLE ca_vtep_tbl ( vtn_name varchar(32) default ' ', @@ -1348,7 +1365,8 @@ CREATE TABLE ca_vtep_tbl ( cs_description smallint default 3, cs_controller_name smallint default 3, cs_domain_id smallint default 3, - PRIMARY KEY(vtn_name, vtep_name)); + PRIMARY KEY(vtn_name, vtep_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtep_if_tbl ( vtn_name varchar(32) default ' ', @@ -1378,7 +1396,8 @@ CREATE TABLE ca_vtep_if_tbl ( cs_logical_port_id smallint default 3, cs_vlanid smallint default 3, cs_tagged smallint default 3, - PRIMARY KEY(vtn_name, vtep_name, if_name)); + PRIMARY KEY(vtn_name, vtep_name, if_name), + FOREIGN KEY(vtn_name, vtep_name) REFERENCES ca_vtep_tbl(vtn_name, vtep_name)); CREATE TABLE ca_vtep_grp_tbl ( vtn_name varchar(32) default ' ', @@ -1391,7 +1410,8 @@ CREATE TABLE ca_vtep_grp_tbl ( cs_rowstatus smallint default 3, cs_controller_name smallint default 3, cs_description smallint default 3, - PRIMARY KEY(vtn_name, vtepgrp_name)); + PRIMARY KEY(vtn_name, vtepgrp_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtep_grp_mem_tbl ( vtn_name varchar(32) default ' ', @@ -1401,7 +1421,8 @@ CREATE TABLE ca_vtep_grp_mem_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vtepgrp_name, vtepgrp_member_name)); + PRIMARY KEY(vtn_name, vtepgrp_name, vtepgrp_member_name), + FOREIGN KEY(vtn_name, vtepgrp_name) REFERENCES ca_vtep_grp_tbl(vtn_name, vtepgrp_name)); CREATE TABLE ca_vtunnel_tbl ( vtn_name varchar(32) default ' ', @@ -1429,7 +1450,8 @@ CREATE TABLE ca_vtunnel_tbl ( cs_underlay_vtn_name smallint default 3, cs_vtepgrp_name smallint default 3, cs_label smallint default 3, - PRIMARY KEY(vtn_name, vtunnel_name)); + PRIMARY KEY(vtn_name, vtunnel_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtunnel_if_tbl ( vtn_name varchar(32) default ' ', @@ -1459,7 +1481,8 @@ CREATE TABLE ca_vtunnel_if_tbl ( cs_logical_port_id smallint default 3, cs_vlanid smallint default 3, cs_tagged smallint default 3, - PRIMARY KEY(vtn_name, vtunnel_name, if_name)); + PRIMARY KEY(vtn_name, vtunnel_name, if_name), + FOREIGN KEY(vtn_name, vtunnel_name) REFERENCES ca_vtunnel_tbl(vtn_name, vtunnel_name)); CREATE TABLE ca_flowlist_tbl ( flowlist_name varchar(33) default ' ', @@ -1557,7 +1580,8 @@ CREATE TABLE ca_flowlist_entry_tbl ( cs_icmp_code smallint default 3, cs_icmpv6_type smallint default 3, cs_icmpv6_code smallint default 3, - PRIMARY KEY(flowlist_name, sequence_num)); + PRIMARY KEY(flowlist_name, sequence_num), + FOREIGN KEY(flowlist_name) REFERENCES ca_flowlist_tbl(flowlist_name)); CREATE TABLE ca_flowlist_entry_ctrlr_tbl ( flowlist_name varchar(33) default ' ', @@ -1690,7 +1714,8 @@ CREATE TABLE ca_policingprofile_entry_tbl ( cs_red_priority smallint default 3, cs_red_dscp smallint default 3, cs_red_drop smallint default 3, - PRIMARY KEY(policingprofile_name, sequence_num)); + PRIMARY KEY(policingprofile_name, sequence_num), + FOREIGN KEY(policingprofile_name) REFERENCES ca_policingprofile_tbl(policingprofile_name)); CREATE TABLE ca_policingprofile_entry_ctrlr_tbl ( policingprofile_name varchar(33) default ' ', @@ -1741,7 +1766,8 @@ CREATE TABLE ca_vtn_flowfilter_tbl ( direction smallint default 0, flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, direction)); + PRIMARY KEY(vtn_name, direction), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtn_flowfilter_ctrlr_tbl ( vtn_name varchar(32) default ' ', @@ -1773,7 +1799,8 @@ CREATE TABLE ca_vtn_flowfilter_entry_tbl ( cs_nwn_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, direction, sequence_num), + FOREIGN KEY(vtn_name, direction) REFERENCES ca_vtn_flowfilter_tbl(vtn_name, direction)); CREATE TABLE ca_vtn_flowfilter_entry_ctrlr_tbl ( vtn_name varchar(32) default ' ', @@ -1803,7 +1830,8 @@ CREATE TABLE ca_vbr_flowfilter_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, direction)); + PRIMARY KEY(vtn_name, vbr_name, direction), + FOREIGN KEY(vtn_name, vbr_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_flowfilter_entry_tbl ( vtn_name varchar(32) default ' ', @@ -1841,7 +1869,8 @@ CREATE TABLE ca_vbr_flowfilter_entry_tbl ( cs_nwm_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, vbr_name, direction, sequence_num), + FOREIGN KEY(vtn_name, vbr_name, direction) REFERENCES ca_vbr_flowfilter_tbl(vtn_name, vbr_name, direction)); CREATE TABLE ca_vbr_if_flowfilter_tbl ( vtn_name varchar(32) default ' ', @@ -1852,7 +1881,8 @@ CREATE TABLE ca_vbr_if_flowfilter_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction)); + PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction), + FOREIGN KEY(vtn_name, vbr_name, vbr_if_name) REFERENCES ca_vbr_if_tbl(vtn_name, vbridge_name, if_name)); CREATE TABLE ca_vbr_if_flowfilter_entry_tbl ( vtn_name varchar(32) default ' ', @@ -1891,7 +1921,8 @@ CREATE TABLE ca_vbr_if_flowfilter_entry_tbl ( cs_nwm_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction, sequence_num), + FOREIGN KEY(vtn_name, vbr_name, vbr_if_name, direction) REFERENCES ca_vbr_if_flowfilter_tbl(vtn_name, vbr_name, vbr_if_name, direction)); CREATE TABLE ca_vrt_if_flowfilter_tbl ( vtn_name varchar(32) default ' ', @@ -1902,7 +1933,8 @@ CREATE TABLE ca_vrt_if_flowfilter_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction)); + PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction), + FOREIGN KEY(vtn_name, vrt_name, vrt_if_name) REFERENCES ca_vrt_if_tbl(vtn_name, vrouter_name, if_name)); CREATE TABLE ca_vrt_if_flowfilter_entry_tbl ( vtn_name varchar(32) default ' ', @@ -1941,7 +1973,8 @@ CREATE TABLE ca_vrt_if_flowfilter_entry_tbl ( cs_nwm_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction, sequence_num), + FOREIGN KEY(vtn_name, vrt_name, vrt_if_name, direction) REFERENCES ca_vrt_if_flowfilter_tbl(vtn_name, vrt_name, vrt_if_name, direction)); CREATE TABLE ca_vtn_policingmap_tbl ( vtn_name varchar(32) default ' ', @@ -1950,7 +1983,8 @@ CREATE TABLE ca_vtn_policingmap_tbl ( valid_policername smallint default 0, cs_rowstatus smallint default 3, cs_policername smallint default 3, - PRIMARY KEY(vtn_name)); + PRIMARY KEY(vtn_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtn_policingmap_ctrlr_tbl ( vtn_name varchar(32) default ' ', @@ -1973,7 +2007,8 @@ CREATE TABLE ca_vbr_policingmap_tbl ( valid_policername smallint default 0, cs_rowstatus smallint default 3, cs_policername smallint default 3, - PRIMARY KEY(vtn_name, vbr_name)); + PRIMARY KEY(vtn_name, vbr_name), + FOREIGN KEY(vtn_name, vbr_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_if_policingmap_tbl ( vtn_name varchar(32) default ' ', @@ -1986,7 +2021,8 @@ CREATE TABLE ca_vbr_if_policingmap_tbl ( valid_policername smallint default 0, cs_rowstatus smallint default 3, cs_policername smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, vbr_if_name)); + PRIMARY KEY(vtn_name, vbr_name, vbr_if_name), + FOREIGN KEY(vtn_name, vbr_name, vbr_if_name) REFERENCES ca_vbr_if_tbl(vtn_name, vbridge_name, if_name)); CREATE TABLE ca_ctrlr_tbl ( name varchar(32) default ' ', @@ -2069,10 +2105,12 @@ CREATE TABLE ru_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 3, cs_vlanid smallint default 3, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -3057,10 +3095,12 @@ CREATE TABLE im_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 1, cs_vlanid smallint default 1, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -4045,10 +4085,12 @@ CREATE TABLE au_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 1, cs_vlanid smallint default 1, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -4960,3 +5002,10 @@ CREATE TABLE au_vbr_if_policingmap_tbl ( cs_rowstatus smallint default 1, cs_policername smallint default 1, PRIMARY KEY(vtn_name, vbr_name, vbr_if_name)); + +CREATE INDEX ca_vbr_if_tbl_semindex ON ca_vbr_if_tbl USING btree (logical_port_id, controller_name, domain_id, valid_portmap, valid_logical_port_id); +CREATE INDEX ca_policingprofile_entry_tbl_semindex ON ca_policingprofile_entry_tbl USING btree (flowlist, valid_flowlist); +CREATE INDEX ca_vtn_policingmap_tbl_semindex ON ca_vtn_policingmap_tbl USING btree (policername, valid_policername); +CREATE INDEX ca_vbr_policingmap_tbl_semindex ON ca_vbr_policingmap_tbl USING btree (policername, valid_policername); +CREATE INDEX ca_vbr_if_policingmap_tbl_semindex ON ca_vbr_if_policingmap_tbl USING btree (policername, valid_policername); +CREATE INDEX ru_vbr_if_tbl_showindex ON ru_vbr_if_tbl (vtn_name, vex_name, valid_vex_name); \ No newline at end of file diff --git a/coordinator/modules/dataflow/Makefile b/coordinator/modules/dataflow/Makefile new file mode 100644 index 00000000..1927c736 --- /dev/null +++ b/coordinator/modules/dataflow/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (c) 2013-2014 NEC Corporation +# All rights reserved. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License v1.0 which accompanies this +# distribution, and is available at http://www.eclipse.org/legal/epl-v10.html +# + +## +## Makefile that drives the production of capa module. +## + +include ../defs.mk + +CXX_SOURCES = dataflow.cc + +# Example of Boost library configuration. +BOOST_LIBS = + +EXTRA_INCDIRS = $(CURDIR)/../uppl/include $(CURDIR)/../upll $(CURDIR)/../upll/include + +include ../rules.mk + + +## +## Targets: +## +## make all (default target) +## Build all binary distributions. +## +## make install +## Execute "make all" and install binary distributions into the +## installation directory. +## +## make clean +## Remove binary distributions built by "make all". +## +## make clobber +## Execute "make clean" and remove header dependency files. +## diff --git a/coordinator/modules/dataflow/dataflow.cc b/coordinator/modules/dataflow/dataflow.cc new file mode 100644 index 00000000..830bba1a --- /dev/null +++ b/coordinator/modules/dataflow/dataflow.cc @@ -0,0 +1,3293 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * @file dataflow.cc + * + */ + +#include "uncxx/dataflow.hh" +#include +#include +#include +#include +#include "unc/keytype.h" +#include "ipc_util.hh" + +#define DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_xx_t, \ + match_iterator, \ + session, \ + putresp_position, \ + err_code) \ +val_df_flow_match_xx_t *ptr_t = \ +reinterpret_cast((match_iterator).second); \ +pfc_log_debug("%d. %s", (putresp_position), get_string(*ptr_t).c_str()); \ +(putresp_position)++; \ +(err_code) |= (session).addOutput(*ptr_t); \ +if ((err_code) != UNC_RC_SUCCESS) return (err_code); + +#define DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_xx_t, \ + actions_vect_st, \ + session, \ + putresp_position, \ + err_code) \ +val_df_flow_action_set_xx_t *ptr_t = \ +reinterpret_cast( \ + (actions_vect_st)->action_st_ptr); \ +pfc_log_debug("%d. %s", (putresp_position), get_string(*ptr_t).c_str()); \ +(putresp_position)++; \ +(err_code) |= (session).addOutput(*ptr_t); \ +if ((err_code) != UNC_RC_SUCCESS) return (err_code); + +#define DATAFLOW_MATCHES_GETRESP(val_df_flow_match_xx_t, \ + mmatches, \ + UncDataflowFlowMatchType_val, \ + session, \ + getres_position, \ + err_code) \ +val_df_flow_match_xx_t *ptr_t = new val_df_flow_match_xx_t; \ +memset(ptr_t, 0, sizeof(val_df_flow_match_xx_t)); \ +(err_code) |= (session).getResponse((getres_position)++, *ptr_t); \ +if ((err_code) != UNC_RC_SUCCESS) return (err_code); \ +(mmatches)[(UncDataflowFlowMatchType_val)] = ptr_t; + +#define DATAFLOW_ACTION_GETRESP(val_df_flow_action_xx_t, \ + getres_position, \ + session, \ + actions_vect_st, \ + err_code) \ +val_df_flow_action_xx_t *ptr_t = new val_df_flow_action_xx_t; \ +memset(ptr_t, 0, sizeof(val_df_flow_action_xx_t)); \ +(err_code) |= (session).getResponse((getres_position)++, *ptr_t); \ +if ((err_code) != UNC_RC_SUCCESS) return (err_code); \ +(actions_vect_st)->action_st_ptr = ptr_t; + +#define DATAFLOW_MATCHES_GETSTRING(sstr, match_iter, val_df_flow_match_xx_t) \ + val_df_flow_match_xx_t *ptr_t = \ +reinterpret_cast((match_iter).second); \ +(sstr) << " " << ((match_iter).first) << "..." << get_string(*ptr_t); \ + +#define DATAFLOW_ACTIONS_GETSTRING(sstr, ptr, val_df_flow_action_xx_t) \ + val_df_flow_action_xx_t *ptr_t = \ +reinterpret_cast(ptr->action_st_ptr); \ +(sstr) << " " << (ptr)->action_type << "..." << get_string(*ptr_t); \ + +#define DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_xx_t, \ + op_matches, \ + UncDataflowFlowMatchType_val, \ + iterator) \ +val_df_flow_match_xx_t *val_mat = \ +reinterpret_cast((iterator).second); \ +val_df_flow_match_xx_t *val_out_mat = new(val_df_flow_match_xx_t); \ +memcpy(val_out_mat, val_mat, sizeof(val_df_flow_match_xx_t)); \ +(op_matches)[(UncDataflowFlowMatchType_val)] = val_out_mat; + +using std::stringstream; +using std::bitset; +using namespace unc::dataflow; +using unc::upll::ipc_util::ConfigKeyVal; + +string uint8tostr(const uint8_t& c) { + char str[20]; + memset(&str, '\0', 20); + snprintf(str, sizeof(str), "%d", c); + string str1(str); + return str1; +} +string uint16tostr(const uint16_t& c) { + char str[20]; + snprintf(str, sizeof(str), "%d", c); + string str1(str); + return str1; +} +string uint64tostr(const uint64_t& c) { + char str[25]; + snprintf(str, sizeof(str), "%"PFC_PFMT_u64, c); + string str1(str); + return str1; +} + + + + +DataflowDummy* DataflowDummy::dataflow_dummy_ = NULL; + +DataflowDummy::DataflowDummy(const pfc_modattr_t *attr) + :pfc::core::Module(attr) { + } + +DataflowDummy* DataflowDummy::get_dataflow_dummy() { + /** No Need to check NULL and create capabilit object.*/ + return dataflow_dummy_; +} + +pfc_bool_t DataflowDummy::init() { + dataflow_dummy_ = this; + return PFC_TRUE; +} + +pfc_bool_t DataflowDummy::fini() { + return PFC_TRUE; +} + +AddlData::AddlData() + : reason(0), + controller_count(0), + max_dom_traversal_count(0), + current_traversal_count(0) { + } + +AddlData::~AddlData() { + traversed_controllers.clear(); +} + +DataflowDetail::DataflowDetail(IpctStructNum df_type, + unc_keytype_ctrtype_t ctr_type) +: df_common(NULL), vtn_df_common(NULL), ckv_egress(NULL), + st_num_(df_type) { + if (st_num_ == kidx_val_df_data_flow_cmn) { + df_common = new val_df_data_flow_cmn_t; + memset(df_common, 0, sizeof(val_df_data_flow_cmn_t)); + df_common->controller_type = ctr_type; + if (df_common->controller_type == UNC_CT_VNP) { + df_common->valid[kidxDfDataFlowControllerName] = 1; + df_common->valid[kidxDfDataFlowControllerType] = 1; + df_common->valid[kidxDfDataFlowIngressSwitchId] = 1; + df_common->valid[kidxDfDataFlowInPort] = 1; + df_common->valid[kidxDfDataFlowInDomain] = 1; + df_common->valid[kidxDfDataFlowEgressSwitchId] = 1; + df_common->valid[kidxDfDataFlowOutPort] = 1; + df_common->valid[kidxDfDataFlowOutDomain] = 1; + } else if (df_common->controller_type == UNC_CT_UNKNOWN) { + df_common->valid[kidxDfDataFlowControllerName] = 1; + df_common->valid[kidxDfDataFlowControllerType] = 1; + df_common->valid[kidxDfDataFlowInDomain] = 1; + df_common->valid[kidxDfDataFlowOutDomain] = 1; + } + } else { + // LOGICAL + flow_traversed = false; + vtn_df_common = new val_vtn_dataflow_cmn_t; + memset(vtn_df_common, 0, sizeof(val_vtn_dataflow_cmn_t)); + vtn_df_common->controller_type = ctr_type; + if ((vtn_df_common->controller_type == UNC_CT_VNP) || + (vtn_df_common->controller_type == UNC_CT_UNKNOWN)) { + if (vtn_df_common->controller_type != UNC_CT_UNKNOWN) + vtn_df_common->valid[UPLL_IDX_CONTROLLER_ID_VVDC] = 1; + // Controller Name + vtn_df_common->valid[UPLL_IDX_CONTROLLER_TYPE_VVDC] = 1; + // Controller Type + vtn_df_common->valid[UPLL_IDX_INGRESS_VNODE_VVDC] = 1; + // ingress vnode **** + vtn_df_common->valid[UPLL_IDX_INGRESS_VINTERFACE_VVDC] = 1; + // ingress vInterface Name**** + vtn_df_common->valid[UPLL_IDX_INGRESS_DOMAIN_VVDC] = 1; + // ingress domain **** + vtn_df_common->valid[UPLL_IDX_EGRESS_VNODE_VVDC] = 1; + // egress vnode + vtn_df_common->valid[UPLL_IDX_EGRESS_VINTERFACE_VVDC] = 1; + // egress vInterface Name + vtn_df_common->valid[UPLL_IDX_EGRESS_DOMAIN_VVDC] = 1; + // egress domain + } + } + } + + +/** Constructor + * * @Description : This constructor initializes member variables + * * @param[in] : isHead, DataflowDetail pointer + * * @return : None + **/ +DataflowCmn::DataflowCmn(bool isHead, DataflowDetail *df_segm) + : df_segment(df_segm), + is_head(isHead), + head(NULL), + total_flow_count(0), + is_vlan_src_mac_changed_(false), + parent_node(NULL) { + addl_data = new AddlData(); + } + + +/** Destructor + * * @Description : Destructor deletes all allocated memories + * * @param[in] : None + * * @return : None + **/ +DataflowCmn::~DataflowCmn() { + pfc_log_trace("DataflowCmn -Destructor call"); + if (df_segment != NULL) { + if (df_segment->st_num_ == kidx_val_df_data_flow_cmn) { + if (df_segment->df_common->controller_type != UNC_CT_PFC) { + pfc_log_debug("~DataflowCmn deleting %d df_segment %p", + df_segment->df_common->controller_type, df_segment); + delete df_segment; + df_segment = NULL; + } + } else { + // LOGICAL + if (df_segment->vtn_df_common->controller_type != UNC_CT_PFC) { + pfc_log_debug("~DataflowCmn deleting %d df_segment %p", + df_segment->vtn_df_common->controller_type, df_segment); + delete df_segment; + df_segment = NULL; + } + } + } + if (output_matches.size() > 0) { + map::iterator op_matches_iter; + for (op_matches_iter = output_matches.begin(); + op_matches_iter != output_matches.end(); + op_matches_iter++) { + ::operator delete((*op_matches_iter).second); + pfc_log_trace("out_matches map entry is deleted"); + } + output_matches.clear(); + } + if (next.size() > 0) { + vector::iterator next_iter; + for (next_iter = next.begin(); + next_iter != next.end(); + next_iter++) { + delete (*next_iter); + pfc_log_trace("next vector entry is deleted"); + } + next.clear(); + } + if (addl_data != NULL) { + delete addl_data; + addl_data = NULL; + } + pfc_log_trace("DataflowCmn - Destructor call end"); +} + + +/** sessReadDataflow + * @Description : This function Reads dataflow val structures + * using getresponse function + * @param[in] : sess - ipc client session where the response has to be added + * getres_pos - read position + * @return : UncRespCode is returned + **/ +int DataflowDetail::sessReadDataflow(ClientSession& sess, + uint32_t& getres_pos) { + int err = 0; + + pfc_log_debug("inside sessReadDataflow fn with getres_pos as %d", + getres_pos); + uint32_t match_count = 0; + uint32_t action_count = 0; + if (st_num_ == kidx_val_df_data_flow_cmn) { + memset(df_common, 0, sizeof(val_df_data_flow_cmn_t)); + err |= sess.getResponse(getres_pos++, *df_common); + pfc_log_debug("%s", DataflowCmn::get_string(*df_common).c_str()); + match_count = df_common->match_count; + action_count = df_common->action_count; + } else { + memset(vtn_df_common, 0, sizeof(val_vtn_dataflow_cmn_t)); + err |= sess.getResponse(getres_pos++, *vtn_df_common); + pfc_log_debug("%s", DataflowCmn::get_string(*vtn_df_common).c_str()); + match_count = vtn_df_common->match_count; + action_count = vtn_df_common->action_count; + } + if (err != UNC_RC_SUCCESS) { + return err; + } + val_df_flow_match_t val_flow_match_obj; + memset(&val_flow_match_obj, 0, sizeof(val_flow_match_obj)); + for (uint32_t i = 0; i < match_count; i++) { + err |= sess.getResponse(getres_pos++, val_flow_match_obj); + if (err != UNC_RC_SUCCESS) { + pfc_log_error("getresponse returned %d, for %d flow_match strt", err, i); + return err; + } + + pfc_log_debug("%s", DataflowCmn::get_string(val_flow_match_obj).c_str()); + switch (val_flow_match_obj.match_type) { + case UNC_MATCH_IN_PORT: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_in_port_t, matches, + UNC_MATCH_IN_PORT, sess, getres_pos, err); + break; + } + case UNC_MATCH_DL_DST: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_dl_addr_t, matches, + UNC_MATCH_DL_DST, sess, getres_pos, err); + break; + } + case UNC_MATCH_DL_SRC: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_dl_addr_t, matches, + UNC_MATCH_DL_SRC, sess, getres_pos, err); + break; + } + case UNC_MATCH_DL_TYPE: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_dl_type_t, matches, + UNC_MATCH_DL_TYPE, sess, getres_pos, err); + break; + } + case UNC_MATCH_VLAN_ID: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_vlan_id_t, matches, + UNC_MATCH_VLAN_ID, sess, getres_pos, err); + break; + } + case UNC_MATCH_VLAN_PCP: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_vlan_pcp_t, matches, + UNC_MATCH_VLAN_PCP, sess, getres_pos, err); + break; + } + case UNC_MATCH_IP_TOS: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_ip_tos_t, matches, + UNC_MATCH_IP_TOS, sess, getres_pos, err); + break; + } + case UNC_MATCH_IP_PROTO: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_ip_proto_t, matches, + UNC_MATCH_IP_PROTO, sess, getres_pos, err); + break; + } + case UNC_MATCH_IPV4_SRC: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_ipv4_addr_t, matches, + UNC_MATCH_IPV4_SRC, sess, getres_pos, err); + break; + } + case UNC_MATCH_IPV4_DST: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_ipv4_addr_t, matches, + UNC_MATCH_IPV4_DST, sess, getres_pos, err); + break; + } + case UNC_MATCH_IPV6_SRC: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_ipv6_addr_t, matches, + UNC_MATCH_IPV6_SRC, sess, getres_pos, err); + break; + } + case UNC_MATCH_IPV6_DST: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_ipv6_addr_t, matches, + UNC_MATCH_IPV6_DST, sess, getres_pos, err); + break; + } + case UNC_MATCH_TP_SRC: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_tp_port_t, matches, + UNC_MATCH_TP_SRC, sess, getres_pos, err); + break; + } + case UNC_MATCH_TP_DST: + { + DATAFLOW_MATCHES_GETRESP(val_df_flow_match_tp_port_t, matches, + UNC_MATCH_TP_DST, sess, getres_pos, err); + break; + } + default: + { + pfc_log_warn("Invalid Match Type received %d" + , val_flow_match_obj.match_type); + return EBADF; + break; + } + } + } + + for (uint32_t i = 0; i < action_count; i++) { + val_df_flow_action_t val_flow_action_obj; + memset(&val_flow_action_obj, 0, sizeof(val_df_flow_action_t)); + err |= sess.getResponse(getres_pos++, val_flow_action_obj); + if (err != UNC_RC_SUCCESS) { + pfc_log_warn("getresponse returned %d, for %d flow_action strt", err, i); + return err; + } + pfc_log_debug("%s", DataflowCmn::get_string(val_flow_action_obj).c_str()); + val_actions_vect_st *obj_actions_vect_st = new val_actions_vect_st; + memset(obj_actions_vect_st, 0, sizeof(val_actions_vect_st)); + obj_actions_vect_st->action_type = + (UncDataflowFlowActionType)val_flow_action_obj.action_type; + switch (val_flow_action_obj.action_type) { + case UNC_ACTION_OUTPUT: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_output_port_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_ENQUEUE: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_enqueue_port_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_DL_SRC: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_dl_addr_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_DL_DST: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_dl_addr_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_VLAN_ID: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_vlan_id_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_VLAN_PCP: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_vlan_pcp_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_STRIP_VLAN: + { + getres_pos++; + break; + } + case UNC_ACTION_SET_IPV4_SRC: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_ipv4_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_IPV4_DST: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_ipv4_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_IP_TOS: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_ip_tos_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_TP_SRC: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_tp_port_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_TP_DST: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_tp_port_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_IPV6_SRC: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_ipv6_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + case UNC_ACTION_SET_IPV6_DST: + { + DATAFLOW_ACTION_GETRESP(val_df_flow_action_set_ipv6_t, + getres_pos, sess, obj_actions_vect_st, err); + break; + } + default: + { + pfc_log_warn("Invalid Action Type received %d" + , val_flow_action_obj.action_type); + return EBADF; + break; + } + } + actions.push_back(obj_actions_vect_st); + } + + pfc_log_trace("inside sessReadDataflow fn getting path info"); + if (st_num_ == kidx_val_df_data_flow_cmn) { + for (uint32_t i = 0; i < df_common->path_info_count; i++) { + val_df_data_flow_path_info_t *val_flow_path_obj + = new val_df_data_flow_path_info_t; + memset(val_flow_path_obj, 0, sizeof(val_df_data_flow_path_info_t)); + err |= sess.getResponse(getres_pos++, *val_flow_path_obj); + if (err != UNC_RC_SUCCESS) { + pfc_log_warn("getresponse returned %d, for %d path_info strt", err, i); + return err; + } + pfc_log_debug("%d.%s", i, + DataflowCmn::get_string(*val_flow_path_obj).c_str()); + path_infos.push_back(val_flow_path_obj); + } + } else { + for (uint32_t i = 0; i < vtn_df_common->path_info_count; i++) { + val_vtn_dataflow_path_info_t *val_flow_path_obj + = new val_vtn_dataflow_path_info_t; + memset(val_flow_path_obj, 0, sizeof(val_vtn_dataflow_path_info_t)); + err |= sess.getResponse(getres_pos++, *val_flow_path_obj); + if (err != 0) + return err; + pfc_log_debug("%d.%s", i, + DataflowCmn::get_string(*val_flow_path_obj).c_str()); + vtn_path_infos.push_back(val_flow_path_obj); + } + } + pfc_log_debug("Returned value is %d", err); + return err; +} + +/** CompareDataflow + * * @Description : This function compare dataflows + * * @param[in] : vector + * * @return : true or false + */ +bool DataflowCmn::CompareDataflow(DataflowCmn *otherflow) { + if ((strcmp((const char*)otherflow->df_segment->df_common->controller_name + , (const char*)this->df_segment->df_common->controller_name) != 0) + || (strcmp((const char*)otherflow->df_segment->df_common->egress_switch_id + , (const char*) + this->df_segment->df_common->egress_switch_id) != 0) + || (strcmp((const char*)otherflow->df_segment->df_common->out_port + , (const char*)this->df_segment->df_common->out_port) != 0)) { + pfc_log_info("Controller Name, switch id, Port id are not matched"); + return false; + } + return true; +} +/** Compare + * * @Description : This function compare dataflows + * * @param[in] : vector + * * @return : true or false + */ +bool DataflowCmn::Compare(const key_dataflow_t& lhs, + const key_dataflow_t& rhs) { + int ret = strcmp((const char*)lhs.controller_name, (const char*) + rhs.controller_name); + if ( ret != 0 ) return false; + ret = strcmp((const char*)lhs.switch_id, (const char*)rhs.switch_id); + if ( ret != 0 ) return false; + ret = strcmp((const char*)lhs.port_id, (const char*)rhs.port_id); + if ( ret != 0 ) return false; + if (lhs.vlan_id != rhs.vlan_id) return false; + ret = memcmp(lhs.src_mac_address, rhs.src_mac_address, + sizeof(lhs.src_mac_address)); + if ( ret != 0 ) return false; + return true; +} +/** CompareVtnDataflow + * * @Description : This function compare dataflows + * * @param[in] : vector + * * @return : true or false + */ +bool DataflowCmn::CompareVtnDataflow(DataflowCmn *otherflow) { + if ((strcmp((const char*)otherflow->df_segment->vtn_df_common->controller_id + , (const char*) + this->df_segment->vtn_df_common->controller_id) != 0) + || (strcmp((const char*)otherflow->df_segment->vtn_df_common-> + egress_switch_id + , (const char*) + this->df_segment->vtn_df_common->egress_switch_id) + != 0) + || (strcmp((const char*)otherflow->df_segment->vtn_df_common-> + egress_port_id + , (const char*) + this->df_segment->vtn_df_common->egress_port_id) + != 0)) { + pfc_log_info("Controller Name, switch id, Port id are not matched"); + return false; + } + return true; +} + + +/** operator + * * @Description : This function compare dataflows + * * @param[in] : vector + * * @return : true or false + */ +bool DataflowCmn::Compare(const key_vtn_ctrlr_dataflow& lhs, + const key_vtn_ctrlr_dataflow& rhs) { + int ret = strcmp((const char*)lhs.ctrlr, (const char*)rhs.ctrlr); + if ( ret != 0 ) return false; + ret = strcmp((const char*)lhs.domain, (const char*)rhs.domain); + if ( ret != 0 ) return false; + ret = strcmp((const char*)lhs.vtn_key.vtn_name, + (const char*)rhs.vtn_key.vtn_name); + if ( ret != 0 ) return false; + if (lhs.vlanid != rhs.vlanid) return false; + ret = memcmp(lhs.src_mac_address, rhs.src_mac_address, + sizeof(lhs.src_mac_address)); + if ( ret != 0 ) return false; + return true; +} + +bool KeyDataflowCmp::operator()(const key_dataflow_t& lhs, + const key_dataflow_t& rhs) { + pfc_log_debug("KeyDataflowCmp called \n%s\n%s", + DataflowCmn::get_string(lhs).c_str(), + DataflowCmn::get_string(rhs).c_str()); + int ret = strcmp((const char*)lhs.controller_name, + (const char*)rhs.controller_name); + if ( ret < 0 ) return true; + ret = strcmp((const char*)lhs.switch_id, (const char*)rhs.switch_id); + if ( ret < 0 ) return true; + ret = strcmp((const char*)lhs.port_id, (const char*)rhs.port_id); + if ( ret < 0 ) return true; + if (lhs.vlan_id < rhs.vlan_id) return true; + ret = memcmp(lhs.src_mac_address, rhs.src_mac_address, + sizeof(lhs.src_mac_address)); + if ( ret < 0 ) return true; + return false; +} + +/** CompareDataflow + * * @Description : This function compare dataflows + * * @param[in] : vector + * * @return : true or false + */ +bool KeyVtnDataflowCmp::operator()(const key_vtn_ctrlr_dataflow &lhs, + const key_vtn_ctrlr_dataflow &rhs) { + int ret = strcmp((const char *)lhs.vtn_key.vtn_name, + (const char*)rhs.vtn_key.vtn_name); + if (ret < 0) return true; + ret = strcmp((const char *)lhs.ctrlr, (const char *)rhs.ctrlr); + if (ret < 0) return true; + ret = strcmp((const char *)lhs.domain, (const char *)rhs.domain); + if (ret < 0) return true; + if ( lhs.vlanid < rhs.vlanid) return true; + ret = memcmp(lhs.src_mac_address, + rhs.src_mac_address, sizeof(lhs.src_mac_address)); + if ( ret < 0 ) return true; + return false; +} + + +/** sessOutDataflow + * @Description : This function writes dataflow val structures + * using addoutput function + * @param[in] : sess - ipc server session where the response has to be added + * putres_pos - write position + * @return : UncRespCode is returned + **/ +int DataflowCmn::sessOutDataflow(ServerSession& sess, int& putresp_pos) { + if (df_segment == NULL) { + pfc_log_debug("df_segment is NULL in DataflowCmn::sessReadDataflow"); + return -1; + } + int err = 0; + map::iterator match_iter; + + pfc_log_trace("inside sessOutDataflow fn with getres_pos as %d", putresp_pos); + + if (df_segment->st_num_ == kidx_val_df_data_flow_cmn) { + df_segment->df_common->path_info_count = df_segment->path_infos.size(); + df_segment->df_common->match_count = df_segment->matches.size(); + df_segment->df_common->action_count = df_segment->actions.size(); + } else { + df_segment->vtn_df_common->path_info_count = + df_segment->vtn_path_infos.size(); + df_segment->vtn_df_common->match_count = df_segment->matches.size(); + df_segment->vtn_df_common->action_count = df_segment->actions.size(); + } + + if (df_segment->st_num_ == kidx_val_df_data_flow_cmn) { + pfc_log_debug("%d. %s", putresp_pos, + get_string(*df_segment->df_common).c_str()); + putresp_pos++; + err |= sess.addOutput(*df_segment->df_common); + } else { + // LOGICAL + pfc_log_debug("%d. %s", putresp_pos, + get_string(*df_segment->vtn_df_common).c_str()); + putresp_pos++; + err |= sess.addOutput(*df_segment->vtn_df_common); + } + + for (match_iter = df_segment->matches.begin(); + match_iter != df_segment->matches.end(); match_iter++) { + val_df_flow_match_t val_match; + val_match.match_type = (UncDataflowFlowMatchType)(*match_iter).first; + pfc_log_debug("%d. %s", putresp_pos, get_string(val_match).c_str()); + putresp_pos++; + err |= sess.addOutput(val_match); + if (err != UNC_RC_SUCCESS) { + pfc_log_trace("addoutput status %d, failed to sent %d flow_match strt ", + err, putresp_pos); + return err; + } + + switch (val_match.match_type) { + case UNC_MATCH_IN_PORT: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_in_port_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_DL_SRC: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_dl_addr_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_DL_DST: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_dl_addr_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_DL_TYPE: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_dl_type_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_VLAN_ID: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_vlan_id_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_VLAN_PCP: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_vlan_pcp_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_IP_TOS: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_ip_tos_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_IP_PROTO: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_ip_proto_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_IPV4_SRC: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_ipv4_addr_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_IPV4_DST: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_ipv4_addr_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_IPV6_SRC: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_ipv6_addr_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_IPV6_DST: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_ipv6_addr_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_TP_SRC: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_tp_port_t, + *match_iter, sess, putresp_pos, err); + break; + } + case UNC_MATCH_TP_DST: + { + DATAFLOW_MATCHES_ADDOUTPUT(val_df_flow_match_tp_port_t, + *match_iter, sess, putresp_pos, err); + break; + } + default: + { + pfc_log_debug("Invalid Match Type received %d", val_match.match_type); + break; + } + } + } + + pfc_log_trace + ("inside sessOutDataflow fn sending actions after match struct sessout."); + for (uint32_t i = 0; i < df_segment->actions.size(); i++) { + val_actions_vect_st *obj_actions_vect_st = + reinterpret_cast(df_segment->actions[i]); + val_df_flow_action_t val_action; + // memset(&val_action, 0, sizeof(val_df_flow_action_t)); + val_action.action_type = + (UncDataflowFlowActionType)df_segment->actions[i]->action_type; + pfc_log_debug("%d. %s", putresp_pos, get_string(val_action).c_str()); + putresp_pos++; + err |= sess.addOutput(val_action); + if (err != UNC_RC_SUCCESS) { + pfc_log_trace("addoutput status %d, failed to sent %d flow_action strt", + err, putresp_pos); + return err; + } + + switch (val_action.action_type) { + case UNC_ACTION_OUTPUT: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_output_port_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_ENQUEUE: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_enqueue_port_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_DL_SRC: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_dl_addr_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_DL_DST: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_dl_addr_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_VLAN_ID: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_vlan_id_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_VLAN_PCP: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_vlan_pcp_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_STRIP_VLAN: + { + putresp_pos++; + err |= sess.addOutput(); // Send NULL struct + break; + } + case UNC_ACTION_SET_IPV4_SRC: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_ipv4_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_IPV4_DST: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_ipv4_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_IP_TOS: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_ip_tos_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_TP_SRC: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_tp_port_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_TP_DST: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_tp_port_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_IPV6_SRC: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_ipv6_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + case UNC_ACTION_SET_IPV6_DST: + { + DATAFLOW_ACTION_ADDOUTPUT(val_df_flow_action_set_ipv6_t, + obj_actions_vect_st, sess, + putresp_pos, err); + break; + } + default: + { + pfc_log_debug("Invalid action Type in action map %d", + val_action.action_type); + break; + } + } + } + if (df_segment->st_num_ == kidx_val_df_data_flow_cmn) { + for (uint32_t i = 0; i < df_segment->path_infos.size(); i++) { + pfc_log_debug("%d. %s", putresp_pos, + get_string(*df_segment->path_infos[i]).c_str()); + putresp_pos++; + err |= sess.addOutput(*df_segment->path_infos[i]); + if (err != UNC_RC_SUCCESS) { + pfc_log_trace("addoutput status %d," + "failed to sent %d path_info struct", + err, putresp_pos); + return err; + } + } + } else { + // LOGICAL + for (uint32_t i = 0; i < df_segment->vtn_path_infos.size(); i++) { + pfc_log_debug("%d. %s", + putresp_pos, + get_string(*df_segment->vtn_path_infos[i]).c_str()); + putresp_pos++; + err |= sess.addOutput(*df_segment->vtn_path_infos[i]); + if (err != UNC_RC_SUCCESS) { + pfc_log_trace + ("addoutput status %d, failed to sent %d vtn_path_info struct", + err, putresp_pos); + return err; + } + } + } + + pfc_log_debug("Return value %d", err); + return err; +} + +/** check_match_condition + * * @Description : This function check the matches and output_matches + * * @param[in] : prev_output_matches - output_matches + * * @return : bool + **/ +bool DataflowCmn::check_match_condition(map prev_output_matches) { + bool ret_value = true; + map::iterator iter_out_match = + prev_output_matches.begin(); + pfc_log_debug("Size of prev_output_matches:%" PFC_PFMT_SIZE_T, + prev_output_matches.size()); + pfc_log_debug("Size of curr matches:%" PFC_PFMT_SIZE_T, + df_segment->matches.size()); + while (iter_out_match != prev_output_matches.end()) { + switch (iter_out_match->first) { + case UNC_MATCH_IN_PORT: + break; + case UNC_MATCH_DL_SRC: + break; + case UNC_MATCH_DL_DST: + { + pfc_log_debug("check match for mac src/dst %d", + iter_out_match->first); + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_dl_addr_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_dl_addr_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + if (curr->v_mask == UNC_MATCH_MASK_VALID) { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 9.RANGE - RANGE + if (!DataflowUtil::checkMacAddress(curr->dl_addr, + curr->dl_addr_mask, + prev->dl_addr, + prev->dl_addr_mask)) { + pfc_log_debug("check match failed for" + "mac addr range1 range2"); + ret_value &= false; + } + } else { + // 3.STRICT - RANGE + if (!DataflowUtil::checkMacAddress(curr->dl_addr, + curr->dl_addr_mask, + prev->dl_addr)) { + pfc_log_debug("check match failed for" + "mac addr strict1 range2"); + ret_value &= false; + } + } + } else { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 7.RANGE - STRICT + if (!DataflowUtil::checkMacAddress(prev->dl_addr, + prev->dl_addr_mask, + curr->dl_addr)) { + pfc_log_debug + ("check match failed for mac addr range1 strict2"); + ret_value &= false; + } + } else { + // 1.STRICT - STRICT + if (memcmp(curr->dl_addr, prev->dl_addr, + sizeof(prev->dl_addr)) != 0) { + pfc_log_debug + ("check match failed for mac addr strict1 strict2"); + ret_value &= false; + } + } + } + } // else { + // 2.STRICT - ANY //8.RANGE - ANY // This is OK. Do nothing. + // } + break; + } + case UNC_MATCH_DL_TYPE: + { + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_dl_type_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_dl_type_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + // 1.STRICT - STRICT + if (curr->dl_type != prev->dl_type) { + pfc_log_info("check match failed for dl_type"); + ret_value &= false; + } + } + break; + } + case UNC_MATCH_VLAN_ID: + break; + case UNC_MATCH_VLAN_PCP: + { + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_vlan_pcp_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_vlan_pcp_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + // 1.STRICT - STRICT + if (curr->vlan_pcp != prev->vlan_pcp) { + pfc_log_info("check match failed for vlan pcp"); + ret_value &= false; + } + } + break; + } + case UNC_MATCH_IP_TOS: + { + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_ip_tos_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_ip_tos_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + // 1.STRICT - STRICT + if (curr->ip_tos != prev->ip_tos) { + pfc_log_info("check match failed for ip tos"); + ret_value &= false; + } + } + break; + } + case UNC_MATCH_IP_PROTO: + { + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_ip_proto_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_ip_proto_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + // 1.STRICT - STRICT + if (curr->ip_proto != prev->ip_proto) { + pfc_log_info("check match failed for ip_proto"); + ret_value &= false; + } + } + break; + } + case UNC_MATCH_IPV4_SRC: + case UNC_MATCH_IPV4_DST: + { + pfc_log_debug("check match for ipv4 src/dst %d", + iter_out_match->first); + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_ipv4_addr_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_ipv4_addr_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + if (curr->v_mask == UNC_MATCH_MASK_VALID) { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 9.RANGE - RANGE + if (!DataflowUtil::checkIPv4Address(curr->ipv4_addr, + curr->ipv4_addr_mask, + prev->ipv4_addr, + prev->ipv4_addr_mask)) { + pfc_log_debug + ("check match failed for ipv4 addr range1 range2"); + ret_value &= false; + } + } else { + // 3.STRICT - RANGE + if (!DataflowUtil::checkIPv4Address(curr->ipv4_addr, + curr->ipv4_addr_mask, + prev->ipv4_addr)) { + pfc_log_debug + ("check match failed for ipv4 addr strict1 range2"); + ret_value &= false; + } + } + } else { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 7.RANGE - STRICT + if (!DataflowUtil::checkIPv4Address(prev->ipv4_addr, + prev->ipv4_addr_mask, + curr->ipv4_addr)) { + pfc_log_debug + ("check match failed for ipv4 addr range1 strict2"); + ret_value &= false; + } + } else { + // 1.STRICT - STRICT + if (curr->ipv4_addr.s_addr != prev->ipv4_addr.s_addr) { + pfc_log_debug + ("check match failed for ipv4 addr strict1 strict2"); + ret_value &= false; + } + } + } + } // else { + // 2.STRICT - ANY //8.RANGE - ANY // This is OK. Do nothing. + // } + break; + } + case UNC_MATCH_IPV6_SRC: + case UNC_MATCH_IPV6_DST: + { + pfc_log_debug("check match for ipv6 src/dst %d", + iter_out_match->first); + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_ipv6_addr_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_ipv6_addr_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + if (curr->v_mask == UNC_MATCH_MASK_VALID) { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 9.RANGE - RANGE + if (!DataflowUtil::checkIPv6Address(curr->ipv6_addr, + curr->ipv6_addr_mask, + prev->ipv6_addr, + prev->ipv6_addr_mask)) { + pfc_log_debug + ("check match failed for ipv6 addr range1 range2"); + ret_value &= false; + } + } else { + // 3.STRICT - RANGE + if (!DataflowUtil::checkIPv6Address(curr->ipv6_addr, + curr->ipv6_addr_mask, + prev->ipv6_addr)) { + pfc_log_debug + ("check match failed for ipv6 addr strict1 range2"); + ret_value &= false; + } + } + } else { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 7.RANGE - STRICT + if (!DataflowUtil::checkIPv6Address(prev->ipv6_addr, + prev->ipv6_addr_mask, + curr->ipv6_addr)) { + pfc_log_debug + ("check match failed for ipv6 addr range1 strict2"); + ret_value &= false; + } + } else { + // 1.STRICT - STRICT + if (memcmp(curr->ipv6_addr.s6_addr, + prev->ipv6_addr.s6_addr, + sizeof(prev->ipv6_addr.s6_addr)) != 0) { + pfc_log_debug + ("check match failed for ipv6 addr strict1 strict2"); + ret_value &= false; + } + } + } + } // else { + // 2.STRICT - ANY //8.RANGE - ANY // This is OK. Do nothing. + // } + break; + } + case UNC_MATCH_TP_SRC: + case UNC_MATCH_TP_DST: + { + pfc_log_debug("check match for tp port src/dst %d", + iter_out_match->first); + map::iterator iter_mch = + df_segment->matches.find(iter_out_match->first); + if (iter_mch != df_segment->matches.end()) { + val_df_flow_match_tp_port_t *curr = + reinterpret_cast + (iter_mch->second); + val_df_flow_match_tp_port_t *prev = + reinterpret_cast + ((*iter_out_match).second); + if (prev == NULL) { + // (strict or masked) and ANY + break; + } + if (curr->v_mask == UNC_MATCH_MASK_VALID) { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 9.RANGE - RANGE + if (!DataflowUtil::checkIPv4Address(curr->tp_port, + curr->tp_port_mask, + prev->tp_port, + prev->tp_port_mask)) { + pfc_log_debug( + "check match failed for tp port range1 range2"); + ret_value &= false; + } + } else { + // 3.STRICT - RANGE + if (!DataflowUtil::checkIPv4Address(curr->tp_port, + curr->tp_port_mask, + prev->tp_port)) { + pfc_log_debug( + "check match failed for tp port strict1 range2"); + ret_value &= false; + } + } + } else { + if (prev->v_mask == UNC_MATCH_MASK_VALID) { + // 7.RANGE - STRICT + if (!DataflowUtil::checkIPv4Address(prev->tp_port, + prev->tp_port_mask, + curr->tp_port)) { + pfc_log_debug( + "check match failed for tp port range1 strict2"); + ret_value &= false; + } + } else { + // 1.STRICT - STRICT + if (curr->tp_port != prev->tp_port) { + pfc_log_debug( + "check match failed for tp port strict1 strict2"); + ret_value &= false; + } + } + } + } // else { + // 2.STRICT - ANY //8.RANGE - ANY // This is OK. Do nothing. + // } + break; + } + default: + pfc_log_warn("check_match_condition Ignoring %d ", + iter_out_match->first); + break; + } + if (ret_value == false) + break; + iter_out_match++; + } + pfc_log_debug("check_match_condition returns %d", ret_value); + return ret_value; +} + +/** apply_action + * * @Description : This function Apply 'actions' to 'matches' + * * and fill 'output_matches' + * * @param[in] : None + * * @return : None + **/ +void DataflowCmn::apply_action() { + // DEEP COPY matches to output_matches; + deep_copy(); + if (df_segment->actions.size() > 0) { + map::iterator match_iter; + vector::iterator iter_action = + df_segment->actions.begin(); + for (; iter_action != df_segment->actions.end(); iter_action++) { + val_actions_vect_st *obj_action_vect = (*iter_action); + pfc_log_debug("apply_action action_type=%d", + obj_action_vect->action_type); + switch (obj_action_vect->action_type) { + case UNC_ACTION_OUTPUT: + case UNC_ACTION_SET_ENQUEUE: + break; + case UNC_ACTION_SET_DL_SRC: + { + val_df_flow_action_set_dl_addr_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_DL_SRC); + if (match_iter != output_matches.end()) { + val_df_flow_match_dl_addr_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + if (memcmp((const char*)out_match_st->dl_addr, + (const char*)act_st->dl_addr, + sizeof(act_st->dl_addr)) != 0) { + is_vlan_src_mac_changed_ = true; + } + memcpy(out_match_st->dl_addr, act_st->dl_addr, + sizeof(act_st->dl_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_dl_addr_t *out_match_st = + new val_df_flow_match_dl_addr_t; + memset(out_match_st, '\0', + sizeof(val_df_flow_match_dl_addr_t)); + memcpy(out_match_st->dl_addr, act_st->dl_addr, + sizeof(act_st->dl_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_DL_SRC] = out_match_st; + } + break; + } + case UNC_ACTION_SET_DL_DST: + { + val_df_flow_action_set_dl_addr_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_DL_DST); + if (match_iter != output_matches.end()) { + val_df_flow_match_dl_addr_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + memcpy(out_match_st->dl_addr, + act_st->dl_addr, + sizeof(act_st->dl_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_dl_addr_t *out_match_st = + new val_df_flow_match_dl_addr_t; + memset(out_match_st, '\0', + sizeof(val_df_flow_match_dl_addr_t)); + memcpy(out_match_st->dl_addr, + act_st->dl_addr, + sizeof(act_st->dl_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_DL_DST] = out_match_st; + } + break; + } + case UNC_ACTION_SET_VLAN_ID: + { + val_df_flow_action_set_vlan_id_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_VLAN_ID); + if (match_iter != output_matches.end()) { + val_df_flow_match_vlan_id_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + if (out_match_st->vlan_id != act_st->vlan_id) { + is_vlan_src_mac_changed_ = true; + } + out_match_st->vlan_id = act_st->vlan_id; + } else { + val_df_flow_match_vlan_id_t *out_match_st = + new val_df_flow_match_vlan_id_t; + out_match_st->vlan_id = act_st->vlan_id; + output_matches[UNC_MATCH_VLAN_ID] = out_match_st; + } + break; + } + case UNC_ACTION_SET_VLAN_PCP: + { + val_df_flow_action_set_vlan_pcp_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_VLAN_PCP); + if (match_iter != output_matches.end()) { + val_df_flow_match_vlan_pcp_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + out_match_st->vlan_pcp = act_st->vlan_pcp; + } else { + val_df_flow_match_vlan_pcp_t *out_match_st = + new val_df_flow_match_vlan_pcp_t; + out_match_st->vlan_pcp = act_st->vlan_pcp; + output_matches[UNC_MATCH_VLAN_PCP] = out_match_st; + } + break; + } + case UNC_ACTION_STRIP_VLAN: + { + match_iter = output_matches.find(UNC_MATCH_VLAN_ID); + if (match_iter != output_matches.end()) { + val_df_flow_match_vlan_id_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + if (out_match_st->vlan_id != 0xFFFF) + is_vlan_src_mac_changed_ = true; + out_match_st->vlan_id = 0xFFFF; + } else { + val_df_flow_match_vlan_id_t *out_match_st = + new val_df_flow_match_vlan_id_t; + out_match_st->vlan_id = 0xFFFF; + output_matches[UNC_MATCH_VLAN_ID] = out_match_st; + } + break; + } + case UNC_ACTION_SET_IPV4_SRC: + { + val_df_flow_action_set_ipv4_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_IPV4_SRC); + if (match_iter != output_matches.end()) { + val_df_flow_match_ipv4_addr_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + out_match_st->ipv4_addr.s_addr = act_st->ipv4_addr.s_addr; + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_ipv4_addr_t *out_match_st = + new val_df_flow_match_ipv4_addr_t; + memset(out_match_st, '\0', + sizeof(val_df_flow_match_ipv4_addr_t)); + out_match_st->ipv4_addr.s_addr = + act_st->ipv4_addr.s_addr; + out_match_st->v_mask = + UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_IPV4_SRC] = + out_match_st; + } + break; + } + case UNC_ACTION_SET_IPV4_DST: + { + val_df_flow_action_set_ipv4_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_IPV4_DST); + if (match_iter != output_matches.end()) { + val_df_flow_match_ipv4_addr_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + out_match_st->ipv4_addr.s_addr = act_st->ipv4_addr.s_addr; + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_ipv4_addr_t *out_match_st = + new val_df_flow_match_ipv4_addr_t; + memset(out_match_st, '\0', + sizeof(val_df_flow_match_ipv4_addr_t)); + out_match_st->ipv4_addr.s_addr = act_st->ipv4_addr.s_addr; + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_IPV4_DST] = out_match_st; + } + break; + } + case UNC_ACTION_SET_IP_TOS: + { + val_df_flow_action_set_ip_tos_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_IP_TOS); + if (match_iter != output_matches.end()) { + val_df_flow_match_ip_tos_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + out_match_st->ip_tos = act_st->ip_tos; + } else { + val_df_flow_match_ip_tos_t *out_match_st = + new val_df_flow_match_ip_tos_t; + out_match_st->ip_tos = act_st->ip_tos; + output_matches[UNC_MATCH_IP_TOS] = out_match_st; + } + break; + } + case UNC_ACTION_SET_TP_SRC: + { + val_df_flow_action_set_tp_port_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_TP_SRC); + if (match_iter != output_matches.end()) { + val_df_flow_match_tp_port_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + out_match_st->tp_port = act_st->tp_port; + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_tp_port_t *out_match_st = + new val_df_flow_match_tp_port_t; + out_match_st->tp_port = act_st->tp_port; + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_TP_SRC] = out_match_st; + } + break; + } + case UNC_ACTION_SET_TP_DST: + { + val_df_flow_action_set_tp_port_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_TP_DST); + if (match_iter != output_matches.end()) { + val_df_flow_match_tp_port_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + out_match_st->tp_port = act_st->tp_port; + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_tp_port_t *out_match_st = + new val_df_flow_match_tp_port_t; + out_match_st->tp_port = act_st->tp_port; + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_TP_DST] = out_match_st; + } + break; + } + case UNC_ACTION_SET_IPV6_SRC: + { + val_df_flow_action_set_ipv6_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_IPV6_SRC); + if (match_iter != output_matches.end()) { + val_df_flow_match_ipv6_addr_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + memcpy(out_match_st->ipv6_addr.s6_addr, act_st->ipv6_addr.s6_addr, + sizeof(act_st->ipv6_addr.s6_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_ipv6_addr_t *out_match_st = + new val_df_flow_match_ipv6_addr_t; + memset(out_match_st, '\0', + sizeof(val_df_flow_match_ipv6_addr_t)); + memcpy(out_match_st->ipv6_addr.s6_addr, + act_st->ipv6_addr.s6_addr, + sizeof(act_st->ipv6_addr.s6_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_IPV6_SRC] = out_match_st; + } + break; + } + case UNC_ACTION_SET_IPV6_DST: + { + val_df_flow_action_set_ipv6_t *act_st = + reinterpret_cast + (obj_action_vect->action_st_ptr); + match_iter = output_matches.find(UNC_MATCH_IPV6_DST); + if (match_iter != output_matches.end()) { + val_df_flow_match_ipv6_addr_t *out_match_st = + reinterpret_cast + ((*match_iter).second); + memcpy(out_match_st->ipv6_addr.s6_addr, + act_st->ipv6_addr.s6_addr, + sizeof(act_st->ipv6_addr.s6_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + } else { + val_df_flow_match_ipv6_addr_t *out_match_st = + new val_df_flow_match_ipv6_addr_t; + memset(out_match_st, '\0', sizeof(val_df_flow_match_ipv6_addr_t)); + memcpy(out_match_st->ipv6_addr.s6_addr, + act_st->ipv6_addr.s6_addr, + sizeof(act_st->ipv6_addr.s6_addr)); + out_match_st->v_mask = UNC_MATCH_MASK_INVALID; + output_matches[UNC_MATCH_IPV6_DST] = out_match_st; + } + break; + } + default: + break; + } + } + } + pfc_log_trace("Exiting the for loop in apply_action"); +} + + +UncDataflowReason DataflowCmn::appendFlow(DataflowCmn* nextCtrlrFlow, + map + & ctrlr_dom_count_map) { + pfc_log_debug("ctrlr_dom_count_map.size=%" PFC_PFMT_SIZE_T " is_head=%d", + ctrlr_dom_count_map.size(), is_head); + pfc_log_debug("Head is %p", head); + nextCtrlrFlow->head = head; + addl_data->reason = 0; + addl_data->controller_count = 0; + string cname = ""; + if (kidx_val_df_data_flow_cmn == nextCtrlrFlow->df_segment->st_num_) { + cname = (const char*)nextCtrlrFlow->df_segment->df_common->controller_name; + map::iterator dciter = + addl_data->traversed_controllers.find(cname); + if (dciter == addl_data->traversed_controllers.end()) { + pfc_log_debug("%s is not present in traversed controllers map", + cname.c_str()); + uint32_t dom_count = 0; + map::iterator cdciter = + ctrlr_dom_count_map.find(cname); + if (cdciter != ctrlr_dom_count_map.end()) { + dom_count = cdciter->second; + } + if (dom_count == 0) + dom_count = 2; // Assume as 2 - double the value. + addl_data->max_dom_traversal_count += dom_count; + pfc_log_debug("ctr_name %s dom count %d is added," + "max_dom_traversal_count :%d" + , cname.c_str(), dom_count, + addl_data->max_dom_traversal_count); + addl_data->traversed_controllers.insert(std::pair(cname, dom_count)); + } else { + pfc_log_debug("%s is present in traversed controllers map", + cname.c_str()); + } + } else { + addl_data->max_dom_traversal_count = + ctrlr_dom_count_map["nvtnctrlrdom"] * 2; + } + if (addl_data->current_traversal_count+1 > + addl_data->max_dom_traversal_count) { + pfc_log_debug("current_traversal_count %d is exceeding" + "max_dom_traversal_count %d", + addl_data->current_traversal_count+1, + head->addl_data->max_dom_traversal_count); + addl_data->reason = UNC_DF_RES_EXCEEDS_HOP_LIMIT; + return UNC_DF_RES_EXCEEDS_HOP_LIMIT; + } else { + nextCtrlrFlow->addl_data->max_dom_traversal_count = + addl_data->max_dom_traversal_count; + if ((kidx_val_df_data_flow_cmn == nextCtrlrFlow->df_segment->st_num_) || + (kidx_val_df_data_flow_cmn != nextCtrlrFlow->df_segment->st_num_ && + UNC_CT_UNKNOWN != + nextCtrlrFlow->df_segment->vtn_df_common->controller_type)) { + nextCtrlrFlow->addl_data->current_traversal_count = + addl_data->current_traversal_count+1; + } + nextCtrlrFlow->addl_data->traversed_controllers = + addl_data->traversed_controllers; + pfc_log_debug("current_traversal_count %d is" + "not exceeding max_dom_traversal_count %d", + addl_data->current_traversal_count, + addl_data->max_dom_traversal_count); + } + + pfc_log_debug("before is_head=%d next.size()=%" PFC_PFMT_SIZE_T + " head->total_flow_count=%d", is_head, next.size(), + head->total_flow_count); + if (next.size() >= 1) { + // increament total_flow_count + head->total_flow_count++; + } + pfc_log_debug("after is_head=%d next.size()=%" PFC_PFMT_SIZE_T + " head->total_flow_count=%d", is_head, next.size(), + head->total_flow_count); + next.push_back(nextCtrlrFlow); + return UNC_DF_RES_SUCCESS; +} + +/** Destructor + * * @Description : Destructor deletes all allocated memories + * * @param[in] : None + * * @return : None + **/ +DataflowUtil::~DataflowUtil() { + pfc_log_debug("~DataflowUtil ctrlr_dom_count_map.size=%d" + "firstCtrlrFlows.size=%d pfc_flows.size=%d", + (int)ctrlr_dom_count_map.size(), + (int)firstCtrlrFlows.size(), + (int)pfc_flows.size()); + // Clear the allocated memory + ctrlr_dom_count_map.clear(); + + if (firstCtrlrFlows.size() > 0) { + vector::iterator firstCtrlrFlows_iter; + for (firstCtrlrFlows_iter = firstCtrlrFlows.begin(); + firstCtrlrFlows_iter != firstCtrlrFlows.end(); + firstCtrlrFlows_iter++) { + delete (*firstCtrlrFlows_iter); + } + firstCtrlrFlows.clear(); + } + + if (pfc_flows.size() > 0) { + map >::iterator miter = + pfc_flows.begin(); + while (miter != pfc_flows.end()) { + vector flowDetails = miter->second; + pfc_log_debug("~DataflowUtil deleting %d df_segments for key %s", + (int)flowDetails.size(), + DataflowCmn::get_string(miter->first).c_str()); + if (flowDetails.size() > 0) { + vector::iterator it = flowDetails.begin(); + while (it != flowDetails.end()) { + DataflowDetail *df_segm = (DataflowDetail*)*it; + pfc_log_debug("~DataflowUtil deleting %d df_segment %p", + df_segm->df_common->controller_type, + df_segm); + delete df_segm; + it++; + } + flowDetails.clear(); + } + miter++; + } + pfc_flows.clear(); + } + + if (upll_pfc_flows.size() > 0) { + map >::iterator miter = + upll_pfc_flows.begin(); + while (miter != upll_pfc_flows.end()) { + vector flowDetails = miter->second; + if (flowDetails.size() > 0) { + vector::iterator it = flowDetails.begin(); + while (it != flowDetails.end()) { + DataflowDetail *df_segm = (DataflowDetail*)*it; + delete df_segm; + it++; + } + flowDetails.clear(); + } + miter++; + } + upll_pfc_flows.clear(); + } +} + + +uint32_t DataflowUtil::get_total_flow_count() { + uint32_t tot_flow_count = 0; + vector::iterator iter_1st_ctrlr_flow = + firstCtrlrFlows.begin(); + while (iter_1st_ctrlr_flow != firstCtrlrFlows.end()) { + DataflowCmn *aFlow = (DataflowCmn *)(*iter_1st_ctrlr_flow); + tot_flow_count += aFlow->total_flow_count; + pfc_log_debug("Tot=%d, curr=%d", tot_flow_count, aFlow->total_flow_count); + ++iter_1st_ctrlr_flow; + } + return tot_flow_count; +} + +uint32_t DataflowUtil::storeFlowDetails(key_dataflow_t fk, + vector flowDetails) { + pfc_log_debug("Inside storeFlowDetails of DataflowUtil"); + pfc_flows.insert(std::pair > (fk, flowDetails)); + vector::iterator it = flowDetails.begin(); + while (it != flowDetails.end()) { + DataflowDetail *df_segm = (DataflowDetail*)*it; + DataflowCmn* firstCtrlrFlow = new DataflowCmn(true, df_segm); + appendFlow(firstCtrlrFlow); + it++; + } + return 0; +} + +uint32_t DataflowUtil::appendFlow(DataflowCmn* firstCtrlrFlow) { + pfc_log_debug("Inside appendFlow of DataflowUtil"); + if (firstCtrlrFlow != NULL) { + firstCtrlrFlow->head = firstCtrlrFlow; + firstCtrlrFlow->total_flow_count = 1; + firstCtrlrFlow->addl_data->reason = 0; + firstCtrlrFlow->addl_data->controller_count = 1; + firstCtrlrFlow->addl_data->current_traversal_count = 1; + uint32_t dom_count = 0; + string cname = ""; + if (kidx_val_vtn_dataflow_cmn == firstCtrlrFlow->df_segment->st_num_) { + cname = (const char*)firstCtrlrFlow->df_segment->vtn_df_common-> + controller_id; + } else { + cname = (const char*)firstCtrlrFlow->df_segment->df_common-> + controller_name; + } + map::iterator cdciter = ctrlr_dom_count_map.find(cname); + if (cdciter != ctrlr_dom_count_map.end()) { + dom_count = cdciter->second; + } + if (dom_count == 0) + dom_count = 2; // Assume as 2 - double the value. + firstCtrlrFlow->addl_data->max_dom_traversal_count = dom_count; + pfc_log_debug("Initialising max_dom_traversal_count to %d for %s", + dom_count, cname.c_str()); + firstCtrlrFlow->addl_data->traversed_controllers.insert(std::pair + (cname, + dom_count)); + firstCtrlrFlows.push_back(firstCtrlrFlow); + } + return 0; +} + +int DataflowUtil::sessOutDataflowsFromDriver(ServerSession& sess) { + int err = 0; + int putresp_pos = 12; + uint32_t sz = firstCtrlrFlows.size(); + pfc_log_info("%d. flow_count=%d", putresp_pos, sz); + putresp_pos++; + sess.addOutput(sz); + vector::iterator iter_1st_ctrlr_flow = + firstCtrlrFlows.begin(); + while (iter_1st_ctrlr_flow != firstCtrlrFlows.end()) { + DataflowCmn *aFlow = reinterpret_cast(*iter_1st_ctrlr_flow); + err |= aFlow->sessOutDataflow(sess, putresp_pos); + ++iter_1st_ctrlr_flow; + DataflowDetail *df_seg = aFlow->df_segment; + delete aFlow; + pfc_log_info("sessOutDataflowsFromDriver befor df_segment delete"); + delete df_seg; + } + firstCtrlrFlows.clear(); + return err; +} + +int DataflowUtil::sessOutDataflows(ServerSession& sess) { + pfc_log_debug("Inside sessOutDataflows"); + uint32_t tot_flow_count = DataflowUtil::get_total_flow_count(); + int putresp_pos = 10; + int err = 0; + pfc_log_info("%d. flow_count=%d", putresp_pos, tot_flow_count); + putresp_pos++; + err |= sess.addOutput(tot_flow_count); + + while (firstCtrlrFlows.size() > 0) { + pfc_log_debug("sessOutDataflows flows.size:%" + PFC_PFMT_SIZE_T, firstCtrlrFlows.size()); + + vector::iterator iter_1st_ctrlr_flow = + firstCtrlrFlows.begin(); + while (iter_1st_ctrlr_flow != firstCtrlrFlows.end()) { + pfc_log_debug("One head flow is being processed"); + DataflowCmn *headFlow = reinterpret_cast + (*iter_1st_ctrlr_flow); + + DataflowCmn *aFlow = headFlow; + uint32_t ctrlr_cnt = 1; + uint32_t reason = headFlow->addl_data->reason; + while (aFlow->next.size() != 0) { + pfc_log_debug("Inside while before controller_count=%d reason=%d", + ctrlr_cnt, reason); + ctrlr_cnt++; + aFlow = *(aFlow->next.begin()); + if (aFlow != NULL && aFlow->addl_data != NULL) { + pfc_log_debug("aFlow ir aFlow->addl_data is null"); + reason = aFlow->addl_data->reason; + } else { + break; + } + pfc_log_debug("Inside while after controller_count=%d reason=%d", + ctrlr_cnt, reason); + } + pfc_log_debug("Final controller_count=%d reason=%d df_type=%d", + ctrlr_cnt, reason, headFlow->df_segment->st_num_); + if (kidx_val_vtn_dataflow_cmn == headFlow->df_segment->st_num_) { + val_vtn_dataflow_t obj_val_vtn_dataflow; + memset(&obj_val_vtn_dataflow, '\0', sizeof(val_vtn_dataflow_t)); + obj_val_vtn_dataflow.reason = reason; + obj_val_vtn_dataflow.ctrlr_domain_count = ctrlr_cnt; + memset(obj_val_vtn_dataflow.valid, UNC_VF_VALID, + sizeof(obj_val_vtn_dataflow.valid)); + err |= sess.addOutput(obj_val_vtn_dataflow); + if (err != 0) { + pfc_log_warn("Adding to session failed with err %d", err); + return err; + } + } else { + val_df_data_flow_t obj_val_df_data_flow; + // memset(&obj_val_df_data_flow, '\0', sizeof(val_df_data_flow)); + obj_val_df_data_flow.reason = reason; + obj_val_df_data_flow.controller_count = ctrlr_cnt; + memset(obj_val_df_data_flow.valid, UNC_VF_VALID, + sizeof(obj_val_df_data_flow.valid)); + pfc_log_debug("%d. %s", putresp_pos, + get_string(obj_val_df_data_flow).c_str()); + putresp_pos++; + err |= sess.addOutput(obj_val_df_data_flow); + if (err != 0) { + pfc_log_warn("Adding to session failed with err %d", err); + return err; + } + } + + aFlow = headFlow; + stack lastBranchStack; + + err |= aFlow->sessOutDataflow(sess, putresp_pos); + if (err != 0) { + pfc_log_warn("Adding to session failed with err %d", err); + return err; + } + + while (aFlow->next.size() != 0) { + if (aFlow->next.size() > 1) { + while (!lastBranchStack.empty()) { + lastBranchStack.pop(); + }; + pfc_log_debug("Cleared all stack entries. Size=%" PFC_PFMT_SIZE_T, + lastBranchStack.size()); + } + + if (kidx_val_vtn_dataflow_cmn == headFlow->df_segment->st_num_) { + pfc_log_debug("Adding to stack flowid=%" PFC_PFMT_u64, + aFlow->df_segment->vtn_df_common->flow_id); + } else { + pfc_log_debug("Adding to stack flowid=%" PFC_PFMT_u64, + aFlow->df_segment->df_common->flow_id); + } + lastBranchStack.push(aFlow); + aFlow = *(aFlow->next.begin()); + err |= aFlow->sessOutDataflow(sess, putresp_pos); + if (err != 0) { + pfc_log_warn("Adding to session failed with err %d", err); + return err; + } + } + pfc_log_debug("Added one complete path to session. Stack.size=%" + PFC_PFMT_SIZE_T, lastBranchStack.size()); + DataflowCmn *iter_fl = headFlow; + while (!lastBranchStack.empty()) { + pfc_log_debug("stack Size=%" PFC_PFMT_SIZE_T, lastBranchStack.size()); + iter_fl = lastBranchStack.top(); + lastBranchStack.pop(); + pfc_log_debug("after pop stack Size=%" PFC_PFMT_SIZE_T " iter_fl=%p", + lastBranchStack.size(), iter_fl); + vector::iterator it = iter_fl->next.begin(); + if (it != iter_fl->next.end()) { + pfc_log_debug("Found tree branch node to be deleted"); + delete *it; + iter_fl->next.erase(it); // remove the first element from the vector + } + } + pfc_log_debug("One branch deleted iter_fl=%p headFlow=%p", + iter_fl, headFlow); + + if (iter_fl == headFlow) { + if (iter_fl->next.size() == 0) { + pfc_log_debug("Reached head node, so delete it"); + delete reinterpret_cast(*iter_1st_ctrlr_flow); + firstCtrlrFlows.erase(iter_1st_ctrlr_flow); + } + break; + } else { + break; + } + } + } + return err; +} + +bool DataflowUtil::checkMacAddress(uint8_t macaddr[6], uint8_t macaddr_mask[6], + uint8_t checkmacaddr[6]) { + bool retval = false; + for (int i = 0; i < 6; i++) { + retval = checkByte(macaddr[i], macaddr_mask[i], checkmacaddr[i]); + if (retval == false) + break; + } + return retval; +} + +bool DataflowUtil::checkMacAddress(uint8_t macaddr[6], uint8_t macaddr_mask[6], + uint8_t checkmacaddr[6], + uint8_t checkmacaddr_mask[6]) { + bool retval = false; + for (int i = 0; i < 6; i++) { + retval = checkByte(macaddr[i], macaddr_mask[i], checkmacaddr[i], + checkmacaddr_mask[i]); + if (retval == false) + break; + } + return retval; +} + +bool DataflowUtil::checkIPv4Address(in_addr ipaddr, in_addr ip_mask, + in_addr checkipaddr) { + return checkIPv4Address(ipaddr.s_addr, ip_mask.s_addr, checkipaddr.s_addr); +} + +bool DataflowUtil::checkByte(uint8_t ipaddr, uint8_t ip_mask, + uint8_t checkipaddr) { + // stringstream ss; + // ss << "1FRIP-" << getipstring(ipaddr, 2) << " " << + // getipstring(ipaddr, 16) < A = ipaddr; + stringstream ss; + for (int i = 31; i >= 0; i--) { + if ((i+1)%8 == 0) ss << "."; + ss << A[i]; + }; + return ss.str(); + } else if (radix == 8) { + char b_ipaddr[16]; + memset(&b_ipaddr, '\0', 16); + snprintf(b_ipaddr, sizeof(b_ipaddr), "%03d.%03d.%03d.%03d", + ipaddr>>24&0xFF, ipaddr>>16&0xFF, ipaddr>>8&0xFF, ipaddr&0xFF); + return b_ipaddr; + } else if (radix == 16) { + char b_ipaddr[12]; + memset(&b_ipaddr, '\0', 12); + snprintf(b_ipaddr, sizeof(b_ipaddr), "%02x.%02x.%02x.%02x", + ipaddr>>24&0xFF, ipaddr>>16&0xFF, ipaddr>>8&0xFF, ipaddr&0xFF); + return b_ipaddr; + } else if (radix == 32) { + char b_ipaddr[12]; + memset(&b_ipaddr, '\0', 12); + snprintf(b_ipaddr, sizeof(b_ipaddr), "%d", ipaddr); + return b_ipaddr; + } + return ""; +} + +string DataflowUtil::getbytestring(uint8_t ipaddr, int radix) { + if (radix == 2) { + bitset<8> A = ipaddr; + stringstream ss; + for (int i = 7; i >= 0; i--) { + if ((i+1)%8 == 0) ss << "."; + ss << A[i]; + }; + return ss.str(); + } else if (radix == 8) { + char b_ipaddr[4]; + memset(&b_ipaddr, '\0', 4); + snprintf(b_ipaddr, sizeof(b_ipaddr), "%03d", + ipaddr&0xFF); + return b_ipaddr; + } else if (radix == 16) { + char b_ipaddr[3]; + memset(&b_ipaddr, '\0', 3); + snprintf(b_ipaddr, sizeof(b_ipaddr), "%02x", + ipaddr&0xFF); + return b_ipaddr; + } + return ""; +} + +/** get_string + * @Description : This function returns the values from + * the key structure + * @param[in] : k - structure variable of type key_dataflow + * @return : attributes in key structure of key_dataflow_t are returned + * returned + **/ +string DataflowCmn::get_string(const key_dataflow_t &k) { + char macaddr[18]; + memset(&macaddr, '\0', 18); + snprintf(macaddr, sizeof(macaddr), "%02x%02x.%02x%02x.%02x%02x", + k.src_mac_address[0], k.src_mac_address[1], k.src_mac_address[2], + k.src_mac_address[3], k.src_mac_address[4], k.src_mac_address[5]); + + stringstream ss; + ss << "KT_DATAFLOW:[KEY: " + << "controller_name:" << k.controller_name + << ", switch_id:" << k.switch_id + << ", port_id:" << k.port_id + << ", vlan_id:" << uint16tostr(k.vlan_id) + << ", src_mac_address:" << macaddr + << "]"; + return ss.str(); +} +/** + * @Description : This function returns the values from + * the key structure + * @param[in] : k - structure variable of type key_vtn_dataflow + * @return : attributes in key structure of key_vtn_dataflow_t are returned + * returned + **/ +string DataflowCmn::get_string(const key_vtn_dataflow_t &k) { + char macaddr[18]; + memset(&macaddr, '\0', 18); + snprintf(macaddr, sizeof(macaddr), "%02x%02x.%02x%02x.%02x%02x", + k.src_mac_address[0], k.src_mac_address[1], k.src_mac_address[2], + k.src_mac_address[3], k.src_mac_address[4], k.src_mac_address[5]); + + stringstream ss; + ss << "KT_VTN_DATAFLOW:[KEY: " + << "vtn_name:" << k.vtn_key.vtn_name + << ", vnode_id:" << k.vnode_id + << ", vlanid:" << uint16tostr(k.vlanid) + << ", src_mac_address:" << macaddr + << "]"; + return ss.str(); +} + + +/** get_string + * @Description : This function returns controller name and flow_id from + * the key structure + * @param[in] : k - structure variable of type key_ctr_dataflow + * @return : attributes in key structure of key_ctr_dataflow_t are returned + * returned + **/ +string DataflowCmn::get_string(const key_ctr_dataflow_t &k) { + stringstream ss; + ss << "KT_CTR_DATAFLOW:[KEY: " + << "controller_name:" << k.ctr_key.controller_name + << ", flow_id:" << uint64tostr(k.flow_id) + << "]"; + return ss.str(); +} + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_data_flow_cmn_t + * @return : attributes in value structure of val_df_data_flow_cmn_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_data_flow_cmn_t &val_obj) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0; i < 18 ; ++i) { + valid << uint8tostr(val_obj.valid[i]); + } + ss << "[VAL_FLOW_CMN:" + << " controller_name: " << val_obj.controller_name + << ", controller_type: " << uint8tostr(val_obj.controller_type) + << "\n" + << " flow_id: " << uint64tostr(val_obj.flow_id) + << ", status: " << val_obj.status + << ", flow_type: " << val_obj.flow_type + << ", policy_index: " << val_obj.policy_index + << " vtn_id: " << val_obj.vtn_id + << "\n" + << " ingress_switch_id: " << val_obj.ingress_switch_id + << ", in_port: " << val_obj.in_port + << ", in_station_id: " << uint64tostr(val_obj.in_station_id) + << ", in_domain: " << val_obj.in_domain + << "\n" + << " egress_switch_id: " << val_obj.egress_switch_id + << ", out_port: " << val_obj.out_port + << ", out_station_id: " << uint64tostr(val_obj.out_station_id) + << ", out_domain: " << val_obj.out_domain + << "\n" + << " path_info_count: " << val_obj.path_info_count + << ", match_count: " << val_obj.match_count + << ", action_count: " << val_obj.action_count + << "\n" + << " valid: " << valid.str() + << " ]" + << endl; + return ss.str(); +} + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_vtn_dataflow_cmn_t + * @return : attributes in value structure of val_vtn_dataflow_cmn_t are + * returned + **/ +string DataflowCmn::get_string(const val_vtn_dataflow_cmn_t &val_obj) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0; i < 21 ; ++i) { + valid << uint8tostr(val_obj.valid[i]); + } + ss << "[VAL_FLOW_CMN:" + << " valid: " << valid.str() + << " ]" + << "\n" + << " controller_name: " << val_obj.controller_id + << "\n" + << " controller_type: " << uint8tostr(val_obj.controller_type) + << "\n" + << " flow_id: " << uint64tostr(val_obj.flow_id) + << "\n" + << " created_time: " << uint64tostr(val_obj.created_time) + << "\n" + << " idle_timeout: " << val_obj.idle_timeout + << "\n" + << " hard_timeout:" << val_obj.hard_timeout + << "\n" + << " ingress_vnode: " << val_obj.ingress_vnode + << "\n" + << " ingress_vinterface: " << val_obj.ingress_vinterface + << "\n" + << " ingress_switch_id: " << val_obj.ingress_switch_id + << "\n" + << " ingress_port_id: " << val_obj.ingress_port_id + << "\n" + << " ingress_logical_port_id: " << val_obj.ingress_logical_port_id + << "\n" + << " ingress_domain: " << val_obj.ingress_domain + << "\n" + << " egress_vnode: " << val_obj.egress_vnode + << "\n" + << " egress_vinterface: " << val_obj.egress_vinterface + << "\n" + << " egress_switch_id: " << val_obj.egress_switch_id + << "\n" + << " egress_port_id: " << val_obj.egress_port_id + << "\n" + << " egress_logical_port_id: " << val_obj.egress_logical_port_id + << "\n" + << " egress_domain: " << val_obj.egress_domain + << "\n" + << " match_count: " << val_obj.match_count + << "\n" + << " action_count: " << val_obj.action_count + << "\n" + << " path_info_count: " << val_obj.path_info_count + << "\n" + << endl; + return ss.str(); +} + + + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_t + * @return : attributes in value structure of val_df_flow_match_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH: " + << "match_type: " << val_obj.match_type + << " ]" + << endl; + return ss.str(); +} + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_in_port_t + * @return : attributes in value structure of val_df_flow_match_in_port_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_in_port_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_IN_PORT: " + << "in_port: " << val_obj.in_port + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_dl_addr_t + * @return : attributes in value structure of val_df_flow_match_dl_addr_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_dl_addr_t &val_obj) { + stringstream ss; + char macaddr[18]; + memset(&macaddr, '\0', 18); + snprintf(macaddr, sizeof(macaddr), "%02x%02x.%02x%02x.%02x%02x", + val_obj.dl_addr[0], val_obj.dl_addr[1], val_obj.dl_addr[2], + val_obj.dl_addr[3], val_obj.dl_addr[4], val_obj.dl_addr[5]); + char macaddr_mask[18]; + memset(&macaddr_mask, '\0', 18); + snprintf(macaddr_mask, sizeof(macaddr_mask), "%02x%02x.%02x%02x.%02x%02x", + val_obj.dl_addr_mask[0], val_obj.dl_addr_mask[1], + val_obj.dl_addr_mask[2], + val_obj.dl_addr_mask[3], val_obj.dl_addr_mask[4], + val_obj.dl_addr_mask[5]); + + ss << "[VAL_FLOW_MATCH_DL_ADDR: " + <<"dl_addr: " << macaddr + <<", v_mask: " << uint8tostr(val_obj.v_mask) + <<", dl_addr_mask: " << macaddr_mask + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_dl_type_t + * @return : attributes in value structure of val_df_flow_match_dl_type_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_dl_type_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_DL_TYPE: " + << "dl_type: " << uint8tostr(val_obj.dl_type) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_vlan_id_t + * @return : attributes in value structure of val_df_flow_match_vlan_id_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_vlan_id_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_VLAN_ID: " + << "_vlan_id: " << uint16tostr(val_obj.vlan_id) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_vlan_pcp_t + * @return : attributes in value structure of val_df_flow_match_vlan_pcp_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_vlan_pcp_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_VLAN_PCP: " + << "vlan_pcp: " << uint8tostr(val_obj.vlan_pcp) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_ip_tos_t + * @return : attributes in value structure of val_df_flow_match_ip_tos_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_ip_tos_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_IP_TOS: " + << "ip_tos: " << uint8tostr(val_obj.ip_tos) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_ip_proto_t + * @return : attributes in value structure of val_df_flow_match_ip_proto_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_ip_proto_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_ip_proto: " + << "ip_proto: " << uint8tostr(val_obj.ip_proto) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_ipv4_addr_t + * @return : attributes in value structure of val_df_flow_match_ipv4_addr_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_ipv4_addr_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_ipv4_addr: " + << "ipv4_addr: " << val_obj.ipv4_addr.s_addr + << ", v_mask: " << uint8tostr(val_obj.v_mask) + << ", ipv4_addr_mask: " << val_obj.ipv4_addr_mask.s_addr + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_tp_port_t + * @return : attributes in value structure of val_df_flow_match_tp_port_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_tp_port_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_MATCH_tp_port: " + << "tp_port: " << uint16tostr(val_obj.tp_port) + << ", v_mask: " << uint8tostr(val_obj.v_mask) + << ", tp_port_mask: " << uint16tostr(val_obj.tp_port_mask) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_match_ipv6_addr_t + * @return : attributes in value structure of val_df_flow_match_ipv6_addr_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_match_ipv6_addr_t &val_obj) { + stringstream ss; + char ipv6_addr[INET6_ADDRSTRLEN]; + inet_ntop(AF_INET6, &val_obj.ipv6_addr.s6_addr, ipv6_addr, INET6_ADDRSTRLEN); + char ipv6_addr_mask[INET6_ADDRSTRLEN]; + inet_ntop(AF_INET6, &val_obj.ipv6_addr_mask.s6_addr, ipv6_addr_mask, + INET6_ADDRSTRLEN); + ss << "[VAL_FLOW_MATCH_ipv6_addr: " + << "ipv6_addr: " << ipv6_addr + << ", v_mask: " << uint8tostr(val_obj.v_mask) + << ", ipv6_addr_mask: " << ipv6_addr_mask + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_t + * @return : attributes in value structure of val_df_flow_action_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_action_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET: " + << "action_type: " << val_obj.action_type + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_output_port_t + * @return : attributes in value structure of val_df_flow_action_output_port_t are + * returned + **/ +string DataflowCmn::get_string +(const val_df_flow_action_output_port_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_output_port: " + << "output_port: " << val_obj.output_port + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_enqueue_port_t + * @return : attributes in value structure of val_df_flow_action_enqueue_port_t are + * returned + **/ +string DataflowCmn::get_string +(const val_df_flow_action_enqueue_port_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_enqueue_port: " + << "output_port: " << val_obj.output_port + << ", enqueue_id: " << uint16tostr(val_obj.enqueue_id) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_set_dl_addr_t + * @return : attributes in value structure of val_df_flow_action_set_dl_addr_t are + * returned + **/ +string DataflowCmn::get_string +(const val_df_flow_action_set_dl_addr_t &val_obj) { + char macaddr[18]; + memset(&macaddr, '\0', 18); + snprintf(macaddr, sizeof(macaddr), "%02x%02x.%02x%02x.%02x%02x", + val_obj.dl_addr[0], val_obj.dl_addr[1], val_obj.dl_addr[2], + val_obj.dl_addr[3], val_obj.dl_addr[4], val_obj.dl_addr[5]); + + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_set_dl_addr: " + << "dl_addr: " << macaddr + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_set_vlan_id_t + * @return : attributes in value structure of val_df_flow_action_set_vlan_id_t are + * returned + **/ +string DataflowCmn::get_string +(const val_df_flow_action_set_vlan_id_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_vlan_id: " + << "vlan_id: " << uint16tostr(val_obj.vlan_id) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_set_vlan_pcp_t + * @return : attributes in value structure of val_df_flow_action_set_vlan_pcp_t are + * returned + **/ +string DataflowCmn::get_string +(const val_df_flow_action_set_vlan_pcp_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_vlan_pcp: " + << "vlan_pcp: " << uint8tostr(val_obj.vlan_pcp) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_set_ipv4_t + * @return : attributes in value structure of val_df_flow_action_set_ipv4_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_action_set_ipv4_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_ipv4: " + << "ipv4_addr: " << val_obj.ipv4_addr.s_addr + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_set_ip_tos_t + * @return : attributes in value structure of val_df_flow_action_set_ip_tos_t are + * returned + **/ +string DataflowCmn::get_string +(const val_df_flow_action_set_ip_tos_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_ip_tos: " + << "ip_tos: " << uint8tostr(val_obj.ip_tos) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_set_tp_port_t + * @return : attributes in value structure of val_df_flow_action_set_tp_port_t are + * returned + **/ +string DataflowCmn::get_string +(const val_df_flow_action_set_tp_port_t &val_obj) { + stringstream ss; + ss << "[VAL_FLOW_ACTION_SET_tp_port: " + << "tp_port: " << uint16tostr(val_obj.tp_port) + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_flow_action_set_ipv6_t + * @return : attributes in value structure of val_df_flow_action_set_ipv6_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_flow_action_set_ipv6_t &val_obj) { + stringstream ss; + char ipv6_addr[INET6_ADDRSTRLEN]; + inet_ntop(AF_INET6, &val_obj.ipv6_addr.s6_addr, ipv6_addr, INET6_ADDRSTRLEN); + ss << "[VAL_FLOW_ACTION_SET_ipv6: " + << "ipv6_addr: " << ipv6_addr + << " ]" + << endl; + return ss.str(); +} + +string DataflowCmn::get_string(const val_vtn_dataflow_path_info_t &val_obj) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0; i < 6 ; ++i) { + valid << uint8tostr(val_obj.valid[i]); + } + ss << "[VAL_FLOW_PATH_INFO: " + << " valid: " << valid.str() + << " ]" + << "\n" + << " in_vnode: " << val_obj.in_vnode + << "\n" + << " in_vif: " << val_obj.in_vif + << "\n" + << " out_vnode: " << val_obj.out_vnode + << "\n" + << " out_vif: " << val_obj.out_vif + << "\n" + << " vlink_flag: " << val_obj.vlink_flag + << "\n" + << " status: " << val_obj.status + << endl; + return ss.str(); +} + + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_data_flow_path_info_t + * @return : attributes in value structure of val_df_data_flow_path_info_t are + * returned + **/ +string DataflowCmn::get_string(const val_df_data_flow_path_info_t &val_obj) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0; i < 3 ; ++i) { + valid << uint8tostr(val_obj.valid[i]); + } + ss << "[VAL_FLOW_PATH_INFO: " + << "switch_id: " << val_obj.switch_id + << ", in_port: " << val_obj.in_port + << ", out_port: " << val_obj.out_port + << ", valid: " << valid.str() + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from AddlData structure + * @param[in] : ptr - structure variable of type AddlData + * @return : attributes in AddlData structure of are + * returned + **/ +string DataflowCmn::get_string(const AddlData *ptr) { + if (ptr == NULL) { + return "[AddlData:NULL]\n"; + } + stringstream ss; + ss << "[AddlData: " + << "reason: " << ptr->reason + << ", controller_count: " << ptr->controller_count + << ", max_dom_traversal_count: " << ptr->max_dom_traversal_count + << ", current_traversal_count: " << ptr->current_traversal_count + << ", traversed_controllers.size: " << ptr->traversed_controllers.size() + << " ]" + << endl; + return ss.str(); +} + +/** get_string + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_data_flow_t + * @return : attributes in value structure of val_df_data_flow_t are + * returned + **/ +string DataflowUtil::get_string(const val_df_data_flow_t &val_obj) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0; i < 2 ; ++i) { + valid << uint8tostr(val_obj.valid[i]); + } + ss << "[VAL_FLOW: " + << " reason: " << val_obj.reason + << " controller_count: " << val_obj.controller_count + << " valid: " << valid.str() + << " ]" + << endl; + return ss.str(); +} + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_vtn_dataflow_t + * @return : attributes in value structure of val_vtn_dataflow_t are + * returned + **/ +string DataflowUtil::get_string(const val_vtn_dataflow_t &val_obj) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0; i < 2 ; ++i) { + valid << uint8tostr(val_obj.valid[i]); + } + ss << "[VAL_FLOW: " + << " valid: " << valid.str() + << " ]" + << "\n" + << " reason: " << val_obj.reason + << "\n" + << " controller_domain_count: " << val_obj.ctrlr_domain_count + << endl; + return ss.str(); +} + + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_data_flow_t + * @return : attributes in value structure of val_df_data_flow_t are + * returned + **/ +string DataflowUtil::get_string(const val_df_data_flow_st_t &val_obj) { + stringstream ss; + stringstream valid_st; + for (unsigned int i = 0; i < 3 ; ++i) { + valid_st << uint8tostr(val_obj.valid[i]); + } + ss << "[VAL_FLOW_ST: " + << " packets: " << uint64tostr(val_obj.packets) + << ", octets: " << uint64tostr(val_obj.octets) + << ", duration: " << val_obj.duration + << " valid_st: " << valid_st.str() + << " ]" + << endl; + return ss.str(); +} + +/** + * @Description : This function returns the values from the dataflow + * value structure + * @param[in] : None + * @return : attributes in value structure of dataflow val_* are + * returned + **/ +std::string DataflowCmn::ToStr() { + stringstream ss; + ss << get_string(*df_segment->df_common); + map::iterator matches_iter; + for (matches_iter = df_segment->matches.begin(); matches_iter != + df_segment->matches.end(); matches_iter++) { + switch (matches_iter->first) { + case UNC_MATCH_IN_PORT: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_in_port_t); + break; + } + case UNC_MATCH_DL_DST: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_dl_addr_t); + break; + } + case UNC_MATCH_DL_SRC: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_dl_addr_t); + break; + } + case UNC_MATCH_DL_TYPE: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_dl_type_t); + break; + } + case UNC_MATCH_VLAN_ID: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_vlan_id_t); + break; + } + case UNC_MATCH_VLAN_PCP: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_vlan_pcp_t); + break; + } + case UNC_MATCH_IP_TOS: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_ip_tos_t); + break; + } + case UNC_MATCH_IP_PROTO: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_ip_proto_t); + break; + } + case UNC_MATCH_IPV4_SRC: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_ipv4_addr_t); + break; + } + case UNC_MATCH_IPV4_DST: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_ipv4_addr_t); + break; + } + case UNC_MATCH_IPV6_SRC: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_ipv6_addr_t); + break; + } + case UNC_MATCH_IPV6_DST: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_ipv6_addr_t); + break; + } + case UNC_MATCH_TP_SRC: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_tp_port_t); + break; + } + case UNC_MATCH_TP_DST: + { + DATAFLOW_MATCHES_GETSTRING(ss, *matches_iter, + val_df_flow_match_tp_port_t); + break; + } + default: + break; + } + } + + vector::iterator actions_iter; + for (actions_iter = df_segment->actions.begin(); actions_iter != + df_segment->actions.end(); actions_iter++) { + val_actions_vect_st *ptr = reinterpret_cast + (*actions_iter); + switch (ptr->action_type) { + case UNC_ACTION_OUTPUT: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, val_df_flow_action_output_port_t); + break; + } + case UNC_ACTION_SET_ENQUEUE: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_enqueue_port_t); + break; + } + case UNC_ACTION_SET_DL_SRC: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_dl_addr_t); + break; + } + case UNC_ACTION_SET_DL_DST: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_dl_addr_t); + break; + } + case UNC_ACTION_SET_VLAN_ID: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_vlan_id_t); + break; + } + case UNC_ACTION_SET_VLAN_PCP: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_vlan_pcp_t); + break; + } + case UNC_ACTION_STRIP_VLAN: + { + ss << " 6...VAL_FLOW_ACTION_STRIP_VLAN" << endl; + break; + } + case UNC_ACTION_SET_IPV4_SRC: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_ipv4_t); + break; + } + case UNC_ACTION_SET_IPV4_DST: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_ipv4_t); + break; + } + case UNC_ACTION_SET_IP_TOS: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_ip_tos_t); + break; + } + case UNC_ACTION_SET_TP_SRC: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_tp_port_t); + break; + } + case UNC_ACTION_SET_TP_DST: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_tp_port_t); + break; + } + case UNC_ACTION_SET_IPV6_SRC: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_ipv6_t); + break; + } + case UNC_ACTION_SET_IPV6_DST: + { + DATAFLOW_ACTIONS_GETSTRING(ss, ptr, + val_df_flow_action_set_ipv6_t); + break; + } + default: + break; + } + } + for (uint32_t i = 0; i < df_segment->path_infos.size(); i++) { + ss << " " << get_string(*df_segment->path_infos[i]); + } + ss << get_string(addl_data); + if (head == NULL) + ss << "head=NULL"; + else + ss << "head=ptr"; + + ss << " next.size=" << next.size() + << " total_flow_count=" << total_flow_count << endl; + + return ss.str(); +} + +/** deep_copy + * @Description : This function copies matches to output_matches + * @param[in] : None + * @return : None + **/ +void DataflowCmn::deep_copy() { + map::iterator iter; + for (iter = df_segment->matches.begin(); iter != df_segment->matches.end(); + iter++) { + switch (iter->first) { + case UNC_MATCH_IN_PORT: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_in_port_t, + output_matches, + UNC_MATCH_IN_PORT, *iter); + break; + } + case UNC_MATCH_DL_DST: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_dl_addr_t, + output_matches, + UNC_MATCH_DL_DST, *iter); + break; + } + case UNC_MATCH_DL_SRC: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_dl_addr_t, + output_matches, + UNC_MATCH_DL_SRC, *iter); + break; + } + case UNC_MATCH_DL_TYPE: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_dl_type_t, + output_matches, + UNC_MATCH_DL_TYPE, *iter); + break; + } + case UNC_MATCH_VLAN_ID: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_vlan_id_t, + output_matches, + UNC_MATCH_VLAN_ID, *iter); + break; + } + case UNC_MATCH_VLAN_PCP: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_vlan_pcp_t, + output_matches, + UNC_MATCH_VLAN_PCP, *iter); + break; + } + case UNC_MATCH_IP_TOS: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_ip_tos_t, + output_matches, + UNC_MATCH_IP_TOS, *iter); + break; + } + case UNC_MATCH_IP_PROTO: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_ip_proto_t, + output_matches, + UNC_MATCH_IP_PROTO, *iter); + break; + } + case UNC_MATCH_IPV4_SRC: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_ipv4_addr_t, + output_matches, + UNC_MATCH_IPV4_SRC, *iter); + break; + } + case UNC_MATCH_IPV4_DST: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_ipv4_addr_t, + output_matches, + UNC_MATCH_IPV4_DST, *iter); + break; + } + case UNC_MATCH_IPV6_SRC: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_ipv6_addr_t, + output_matches, + UNC_MATCH_IPV6_SRC, *iter); + break; + } + case UNC_MATCH_IPV6_DST: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_ipv6_addr_t, + output_matches, + UNC_MATCH_IPV6_DST, *iter); + break; + } + case UNC_MATCH_TP_SRC: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_tp_port_t, + output_matches, + UNC_MATCH_TP_SRC, *iter); + break; + } + case UNC_MATCH_TP_DST: + { + DEEP_COPY_MATCHES_TO_OUTPUTMATCHES(val_df_flow_match_tp_port_t, + output_matches, + UNC_MATCH_TP_DST, *iter); + break; + } + } + } +} + +/** Destructor + * * @Description : Destructor deletes all allocated memories + * * @param[in] : None + * * @return : None + **/ +DataflowDetail::~DataflowDetail() { + pfc_log_trace("DataflowDetail -Destructor call"); + + if (df_common != NULL) { + delete df_common; + df_common = NULL; + } + if (vtn_df_common != NULL) { + delete vtn_df_common; + vtn_df_common = NULL; + } + if (ckv_egress) + delete reinterpret_cast(ckv_egress); + ckv_egress = NULL; + if (matches.size() > 0) { + map::iterator matches_iter; + for (matches_iter = matches.begin(); + matches_iter != matches.end(); + matches_iter++) { + ::operator delete((*matches_iter).second); + pfc_log_trace("out_matches map entry is deleted"); + } + matches.clear(); + } + if (actions.size() > 0) { + vector::iterator action_vect_iter; + for (action_vect_iter = actions.begin(); + action_vect_iter != actions.end(); + action_vect_iter++) { + val_actions_vect_st *ptr = reinterpret_cast + ((*action_vect_iter)); + ::operator delete(ptr->action_st_ptr); + delete ptr; + ptr = NULL; + pfc_log_trace("action vector entry is deleted"); + } + actions.clear(); + } + if (path_infos.size() > 0) { + vector::iterator path_infos_iter; + for (path_infos_iter = path_infos.begin(); + path_infos_iter != path_infos.end(); + path_infos_iter++) { + ::operator delete((*path_infos_iter)); + pfc_log_trace("path_infos vector entry is deleted"); + } + path_infos.clear(); + } + if (vtn_path_infos.size() > 0) { + vector::iterator vtn_path_infos_iter; + for (vtn_path_infos_iter = vtn_path_infos.begin(); + vtn_path_infos_iter != vtn_path_infos.end(); + vtn_path_infos_iter++) { + ::operator delete((*vtn_path_infos_iter)); + pfc_log_trace("vtn_path_infos vector entry is deleted"); + } + vtn_path_infos.clear(); + } +} + +PFC_MODULE_DECL(unc::dataflow::DataflowDummy); diff --git a/coordinator/modules/odcdriver/include/odc_link.hh b/coordinator/modules/odcdriver/include/odc_link.hh index dcca6e07..cd156d17 100644 --- a/coordinator/modules/odcdriver/include/odc_link.hh +++ b/coordinator/modules/odcdriver/include/odc_link.hh @@ -44,12 +44,12 @@ class OdcLink { * @param[in] ctr - Controller pointer * @param[in] cache_empty - If cache is empty it is PFC_TRUE else * PFC_FALSE - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * success of read all operation/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fetch_config(unc::driver::controller* ctr, - const pfc_bool_t &cache_empty); + UncRespCode fetch_config(unc::driver::controller* ctr, + const pfc_bool_t &cache_empty); private: /** @@ -60,11 +60,11 @@ class OdcLink { * @param[out] edge_prop_map - map which stores edge property values * @param[out] head_conn_map - map which stores head connection property * values - * @return drv_resp_code_t - returns - * DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns + * UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t fill_edge_value_map( + UncRespCode fill_edge_value_map( json_object *json_obj_node_prop, int arr_idx, std::map &edge_prop_map, @@ -78,12 +78,12 @@ class OdcLink { * connection properties * @param[out] cfg_node_vector - vector to which config node needs to be * pushed - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * parsing link and appending to vector * successfully/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fill_config_node_vector( + UncRespCode fill_config_node_vector( unc::driver::controller *ctr_ptr, const std::map &edge_prop_map, const std::map &head_conn_map, @@ -94,9 +94,9 @@ class OdcLink { * @param[in] - ctr controller pointer * @param[in] - Cache empty or not PFC_TRUE/PFC_FALSE * @param[out] - filled config node vector - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t compare_with_cache( + UncRespCode compare_with_cache( unc::driver::controller *ctr_ptr, const pfc_bool_t &cache_empty, std::vector &cfgnode_vector); @@ -127,11 +127,11 @@ class OdcLink { * @param[in] ctr_ptr - controller pointer * @param[in] cfg_node - Config Node pointer * @param[out] link_list - local list maintained for delete contains link id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t add_event(unc::driver::controller *ctr_ptr, - unc::vtndrvcache::ConfigNode *cfg_node, - std::list &link_list); + UncRespCode add_event(unc::driver::controller *ctr_ptr, + unc::vtndrvcache::ConfigNode *cfg_node, + std::list &link_list); /** * @brief - update event to be sent to UPPL and cache @@ -139,30 +139,30 @@ class OdcLink { * @param[in] cfg_node - Config Node pointer * @param[in] val_old_link - old link value structure * @param[out] link_list - local list maintained for delete contains link id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t update_event(unc::driver::controller *ctr_ptr, - unc::vtndrvcache::ConfigNode *cfg_node, - val_link_st_t *val_old_link, - std::list &link_list); + UncRespCode update_event(unc::driver::controller *ctr_ptr, + unc::vtndrvcache::ConfigNode *cfg_node, + val_link_st_t *val_old_link, + std::list &link_list); /** * @brief - delete event to be sent to UPPL and cache * @param[in] ctr_ptr - controller pointer * @param[in] link_list - local list maintained for delete contains link id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_event(unc::driver::controller *ctr_ptr, - std::list &link_list); + UncRespCode delete_event(unc::driver::controller *ctr_ptr, + std::list &link_list); /** * @brief - Verify in cache whether link aleady exists or not * @param[in] ctr_ptr - controller pointer * @param[in] cfgnode_vector - Config Node vector * @param[out] link_list - local list maintained for delete contains link id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t verify_in_cache( + UncRespCode verify_in_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, std::list &link_list); @@ -181,9 +181,9 @@ class OdcLink { * @param[in] ctr_ptr - Controller pointer * @param[in] data - data to be parsed * @param[out] cfgnode_vector - to be filled with the response - * return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t parse_link_response( + UncRespCode parse_link_response( unc::driver::controller *ctr_ptr, char *data, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); @@ -192,10 +192,10 @@ class OdcLink { * @brief - delete_Link * @param[in] ctr - Controller pointer * @param[in] - cfg_node_delete_map - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_link( + UncRespCode delete_link( unc::driver::controller *ctr, const std::map &cfg_node_delete_map); diff --git a/coordinator/modules/odcdriver/include/odc_port.hh b/coordinator/modules/odcdriver/include/odc_port.hh index a5b0b955..696bc157 100644 --- a/coordinator/modules/odcdriver/include/odc_port.hh +++ b/coordinator/modules/odcdriver/include/odc_port.hh @@ -42,11 +42,11 @@ class OdcPort { * @param[in] ctr - Controller pointer * @param[in] parent_key - parent key is key_switch * @param[in] cache_empty - PFC_TRUE/ PFC_FALSE - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * success of read all operation/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fetch_config(unc::driver::controller* ctr, + UncRespCode fetch_config(unc::driver::controller* ctr, key_switch_t *parent_key, const pfc_bool_t cache_empty); @@ -72,12 +72,12 @@ class OdcPort { * index -1 denotes no array * @param[out] cfg_node_vector - vector to which config node needs to be * pushed - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * parsing port and appending to vector * successfully/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fill_config_node_vector( + UncRespCode fill_config_node_vector( unc::driver::controller *ctr_ptr, json_object *json_obj_node_prop, int arr_idx, @@ -92,11 +92,11 @@ class OdcPort { * @param[out] state_value - state_value is parsed and its out param * @param[out] config_value - config_value is parsed and its out param * @param[out] speed - speed value is parsed and its out param - * @return drv_resp_code_t - returns - * DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns + * UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t parse_port_properties_value( + UncRespCode parse_port_properties_value( int arr_idx, json_object *json_obj_node_conn, std::string &name_value, @@ -109,10 +109,10 @@ class OdcPort { * @param[in] - filled config node vector * @param[in] switch id - switch id in string * @param[in] cache_empty - cache_empty pfc_bool_t - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t compare_with_cache( + UncRespCode compare_with_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, const std::string &switch_id, const pfc_bool_t cache_empty); @@ -140,10 +140,10 @@ class OdcPort { * @param[in] ctr_ptr - controller pointer * @param[in] cfg_node - Config Node pointer * @param[out] port_list - local list maintained for delete contains port id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t add_event(unc::driver::controller *ctr_ptr, + UncRespCode add_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, std::list &port_list); @@ -153,9 +153,9 @@ class OdcPort { * @param[in] cfg_node - Config Node pointer * @param[in] val_old_port - old port value structure * @param[out] port_list - local list maintained for delete contains port id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t update_event(unc::driver::controller *ctr_ptr, + UncRespCode update_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, val_port_st_t *val_old_port, std::list &port_list); @@ -165,9 +165,9 @@ class OdcPort { * @param[in] ctr_ptr - controller pointer * @param[in] switch id - switch id in string * @param[in] port_list - local list maintained for delete contains port id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_event(unc::driver::controller *ctr_ptr, + UncRespCode delete_event(unc::driver::controller *ctr_ptr, const std::string &switch_id, std::list &port_list); @@ -177,9 +177,9 @@ class OdcPort { * @param[in] cfgnode_vector - Config Node vector * @param[in] switch id - switch id in string * @param[out] port_list - local list maintained for delete contains port id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t verify_in_cache( + UncRespCode verify_in_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, const std::string &switch_id, @@ -199,9 +199,9 @@ class OdcPort { * @param[in] ctr_ptr - Controller pointer * @param[in] data - data to be parsed * @param[out] cfgnode_vector - to be filled with the response - * return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t parse_port_response( + UncRespCode parse_port_response( unc::driver::controller *ctr_ptr, char *data, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); @@ -235,10 +235,10 @@ class OdcPort { * @param[in] ctr - Controller pointer * @param[in] - cfg_node_delete_map map which contains * config node pointer to be deleted - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_port( + UncRespCode delete_port( unc::driver::controller *ctr, const std::map &cfg_node_delete_map); diff --git a/coordinator/modules/odcdriver/include/odc_switch.hh b/coordinator/modules/odcdriver/include/odc_switch.hh index 2b8f3352..01acd3d7 100644 --- a/coordinator/modules/odcdriver/include/odc_switch.hh +++ b/coordinator/modules/odcdriver/include/odc_switch.hh @@ -43,11 +43,11 @@ class OdcSwitch { * @param[in] ctr - Controller pointer * @param[out] cache_empty - If cache is empty it is PFC_TRUE else * PFC_FALSE - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * success of read all operation/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fetch_config(unc::driver::controller* ctr, + UncRespCode fetch_config(unc::driver::controller* ctr, pfc_bool_t &cache_empty); private: @@ -60,12 +60,12 @@ class OdcSwitch { * index -1 denotes no array * @param[out] cfg_node_vector - vector to which config node needs to be * pushed - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * parsing switch and appending to vector * successfully/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fill_config_node_vector( + UncRespCode fill_config_node_vector( unc::driver::controller *ctr_ptr, json_object *json_obj_node_prop, int arr_idx, @@ -76,9 +76,9 @@ class OdcSwitch { * @param[in] - ctr controller pointer * @param[out] - filled config node vector * @param[out] - Cache empty or not PFC_TRUE/PFC_FALSE - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t compare_with_cache( + UncRespCode compare_with_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, pfc_bool_t &cache_empty); @@ -108,10 +108,10 @@ class OdcSwitch { * @param[in] ctr_ptr - controller pointer * @param[in] cfg_node - Config Node pointer * @param[out] switch_list - local list maintained for delete contains switch id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t add_event(unc::driver::controller *ctr_ptr, + UncRespCode add_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, std::list &switch_list); @@ -121,9 +121,9 @@ class OdcSwitch { * @param[in] cfg_node - Config Node pointer * @param[in] val_old_switch - old switch value structure * @param[out] switch_list - local list maintained for delete contains switch id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t update_event(unc::driver::controller *ctr_ptr, + UncRespCode update_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, val_switch_st_t *val_old_switch, std::list &switch_list); @@ -132,19 +132,19 @@ class OdcSwitch { * @brief - delete event to be sent to UPPL and cache * @param[in] ctr_ptr - controller pointer * @param[in] switch_list - local list maintained for delete contains switch id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_event(unc::driver::controller *ctr_ptr, - std::list &switch_list); + UncRespCode delete_event(unc::driver::controller *ctr_ptr, + std::list &switch_list); /** * @brief - Verify in cache whether switch aleady exists or not * @param[in] ctr_ptr - controller pointer * @param[in] cfgnode_vector - Config Node vector * @param[out] switch_list - local list maintained for delete contains switch id - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t verify_in_cache( + UncRespCode verify_in_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, std::list &switch_list); @@ -163,9 +163,9 @@ class OdcSwitch { * @param[in] ctr_ptr - Controller pointer * @param[in] data - data to be parsed * @param[out] cfgnode_vector - to be filled with the response - * return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ DRVAPI_RESPONSE_FAILURE + * return UncRespCode - return UNC_RC_SUCCESS/ UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t parse_node_response( + UncRespCode parse_node_response( unc::driver::controller *ctr_ptr, char *data, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); @@ -174,10 +174,10 @@ class OdcSwitch { * @brief - delete_logical_port * @param[in] ctr - Controller pointer * @param[in] - cfg_node_delete_map - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_logical_port( + UncRespCode delete_logical_port( unc::driver::controller *ctr, const std::map &cfg_node_delete_map); @@ -186,10 +186,10 @@ class OdcSwitch { * @brief - delete_Switch * @param[in] ctr - Controller pointer * @param[in] - cfg_node_delete_map - * @return drv_resp_code_t - return DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - return UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_switch( + UncRespCode delete_switch( unc::driver::controller *ctr, const std::map &cfg_node_delete_map); diff --git a/coordinator/modules/odcdriver/include/odc_vbr.hh b/coordinator/modules/odcdriver/include/odc_vbr.hh index 0bf4fbdc..f8528989 100644 --- a/coordinator/modules/odcdriver/include/odc_vbr.hh +++ b/coordinator/modules/odcdriver/include/odc_vbr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -46,12 +46,13 @@ class OdcVbrCommand: public unc::driver::vbr_driver_command { * @param[in] key_vbr - key structure of VBR * @param[in] val_vbr - value structure of VBR * @param[in] ctr - Controller pointrt - * @return drv_resp_t - returns DRVAPI_RESPONSE_SUCCESS on creating vbr successfully - * /returns DRVAPI_RESPONSE_FAILURE on failure + * @return drv_resp_t - returns UNC_RC_SUCCESS on creating vbr successfully + * /returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t create_cmd(key_vbr_t& key_vbr, val_vbr_t& val_vbr, - unc::driver::controller *ctr); + UncRespCode create_cmd(key_vbr_t& key_vbr, + val_vbr_t& val_vbr, + unc::driver::controller *ctr); /** * @brief - Constructs VBR update command and send @@ -59,11 +60,12 @@ class OdcVbrCommand: public unc::driver::vbr_driver_command { * @param[in] key_vbr - key structure of VBR * @param[in] val_vbr - value structure of VBR * @param[in] ctr - Controller pointer - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on updating vbr successfully - * /returns DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on updating vbr successfully + * /returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t update_cmd(key_vbr_t& key_vbr, val_vbr_t& val_vbr, - unc::driver::controller* ctr); + UncRespCode update_cmd(key_vbr_t& key_vbr, + val_vbr_t& val_vbr, + unc::driver::controller* ctr); /** * @brief - Constructs VBR Delete command and send @@ -71,28 +73,29 @@ class OdcVbrCommand: public unc::driver::vbr_driver_command { * @param[in] key_vbr - key structure of VBR * @param[in] val_vbr - value structure of VBR * @param[in] ctr - Controller pointer - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on deleting a vbr - * / returns DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on deleting a vbr + * / returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t delete_cmd(key_vbr_t& key_vbr, val_vbr_t& val_vbr, - unc::driver::controller *ctr); + UncRespCode delete_cmd(key_vbr_t& key_vbr, + val_vbr_t& val_vbr, + unc::driver::controller *ctr); /** * @brief - get vbr list - gets all the vbridge * under particular vtn * @param[in] - vtn name * @param[in] ctr - Controller pointer - * @param[out] cfg_node_vector - cfg_node_vector out parameter contains + * @param[out] cfg_node_vector - cfg_node_vector out parameter contains * list of vbridge present for specified vtn * in controller - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * retrieving the vtn child successfully/ - * returns DRVAPI_RESPONSE_FAILURE on fail + * returns UNC_DRV_RC_ERR_GENERIC on fail */ - drv_resp_code_t get_vbr_list(std::string vtnname, - unc::driver::controller* ctr, - std::vector - &cfg_node_vector); + UncRespCode get_vbr_list( + std::string vtnname, + unc::driver::controller* ctr, + std::vector &cfg_node_vector); private: /** @@ -110,17 +113,19 @@ class OdcVbrCommand: public unc::driver::vbr_driver_command { json_object* create_request_body(const val_vbr_t& val_vtn); /** - * @brief - parse the vbr response data - * @param[in] data - data which is the response from controller - * @param[in] vtn_name - vtn name + * @brief - parse the vbr response data + * @param[in] data - data which is the response from controller + * @param[in] vtn_name - vtn name * @param[out] cfg_node_vector - vector to which the resp to be pushed - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on parsing vbr - * reponse data successfully/returns - * DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on parsing vbr + * reponse data successfully/returns + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t parse_vbr_response(char *data, std::string vtn_name, - unc::driver::controller* ctr, - std::vector< unc::vtndrvcache::ConfigNode *> &cfg_node_vector); + UncRespCode parse_vbr_response( + char *data, + std::string vtn_name, + unc::driver::controller* ctr, + std::vector< unc::vtndrvcache::ConfigNode *> &cfg_node_vector); /** * @brief - parse vbr information and append to the vector @@ -128,16 +133,19 @@ class OdcVbrCommand: public unc::driver::vbr_driver_command { * @param[in] json_obj_vbr - json object which is to be parsed * @param[in] arr_idx - array index in int specifies the array * index -1 denotes no array - * @param[out] cfg_node_vector - vector to which config node needs + * @param[out] cfg_node_vector - vector to which config node needs * to be pushed - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * parsing vbr and appending to vector * successfully/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fill_config_node_vector(unc::driver::controller* ctr, - json_object *json_obj_vbr, std::string vtn_name, uint32_t arr_idx, - std::vector< unc::vtndrvcache::ConfigNode *> &cfg_node_vector); + UncRespCode fill_config_node_vector( + unc::driver::controller* ctr, + json_object *json_obj_vbr, + std::string vtn_name, + uint32_t arr_idx, + std::vector< unc::vtndrvcache::ConfigNode *> &cfg_node_vector); /** * @brief - read port map @@ -152,12 +160,12 @@ class OdcVbrCommand: public unc::driver::vbr_driver_command { * @param[in] - controller pointer * @param[in] - parent key type pointer * @param[out] - list of configurations - * @retval - DRVAPI_RESPONSE_SUCCESS / DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS / UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t fetch_config(unc::driver::controller* ctr, - void* parent_key, - std::vector - &cfgnode_vector); + UncRespCode fetch_config( + unc::driver::controller* ctr, + void* parent_key, + std::vector &cfgnode_vector); private: uint32_t age_interval_; diff --git a/coordinator/modules/odcdriver/include/odc_vbr_vlanmap.hh b/coordinator/modules/odcdriver/include/odc_vbr_vlanmap.hh index ec4bd282..59143308 100644 --- a/coordinator/modules/odcdriver/include/odc_vbr_vlanmap.hh +++ b/coordinator/modules/odcdriver/include/odc_vbr_vlanmap.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -43,12 +44,13 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] key - key structure of VBR_VLANMAP * @param[in] val - value structure of VBR_VLANMAP * @param[in] conn - Controller pointer - * @retval drv_resp_code_t - returns DRVAPI_RESPONSE SUCCESS on creation + * @retval UncRespCode - returns DRVAPI_RESPONSE SUCCESS on creation * - of VBR_VLANMAP successfully - * /returns DRVAPI_RESPONSE_FAILURE on failure + * /returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t create_cmd(key_vlan_map_t& key, val_vlan_map_t& val, - unc::driver::controller *conn); + UncRespCode create_cmd(key_vlan_map_t& key, + pfcdrv_val_vlan_map_t& val, + unc::driver::controller *conn); /** * @brief - Forms VBR_VLANMAP command and send it to @@ -56,12 +58,13 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] key - key structure of VBR_VLANMAP * @param[in] val - value structure of VBR_VLANMAP * @param[in] conn - Controller pointer - * @retval drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @retval UncRespCode - returns UNC_RC_SUCCESS on * - updation of VBR_VLANMAP successfully - * - returns DRVAPI_RESPONSE_FAILURE on failure + * - returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t update_cmd(key_vlan_map_t& key, val_vlan_map_t& val, - unc::driver::controller *conn); + UncRespCode update_cmd(key_vlan_map_t& key, + pfcdrv_val_vlan_map_t& val, + unc::driver::controller *conn); /** * @brief - Deletes VBR_VLANMAP and send it to restclient @@ -69,23 +72,25 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] key - key structure of VBR_VLANMAP * @param[in] val - value structure of VBR_VLANMAP * @param[in] conn - Controller pointer - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on deletion of + * @return UncRespCode - returns UNC_RC_SUCCESS on deletion of * - VBRIf successfully /returns - * - DRVAPI_RESPONSE_FAILURE on failure + * - UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t delete_cmd(key_vlan_map_t& key, val_vlan_map_t& val, - unc::driver::controller *conn); + UncRespCode delete_cmd(key_vlan_map_t& key, + pfcdrv_val_vlan_map_t& val, + unc::driver::controller *conn); /** * @brief - Method to fetch child configurations for the parent kt * @param[in] ctr - controller pointer * @param[in] parent_key - parent key type pointer * @param[out] cfgnode_vector - config node vector - * @retval - DRVAPI_RESPONSE_SUCCESS / DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS / UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t fetch_config - (unc::driver::controller* ctr, void* parent_key, - std::vector &cfgnode_vector); + UncRespCode fetch_config( + unc::driver::controller* ctr, + void* parent_key, + std::vector &cfgnode_vector); private: /** @@ -93,12 +98,13 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] parent_key - parent key type pointer * @param[in] ctr - controller pointer * @param[out] cfgnode_vector - config node vector - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on success - * /returns DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on success + * /returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t get_vbrvlanmap_list(void* parent_key, - unc::driver::controller* ctr, - std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); + UncRespCode get_vbrvlanmap_list( + void* parent_key, + unc::driver::controller* ctr, + std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); /** * @brief - parse the VBR_VLANMAP data @@ -106,12 +112,14 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] ctr - controller pointer * @param[in] data - data from which parse should happen * @param[out] cfgnode_vector - config node vector - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on parsing the - * response of vbrif/returns DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on parsing the + * response of vbrif/returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t parse_vbrvlanmap_response(void *parent_key, - unc::driver::controller* ctr, char *data, - std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); + UncRespCode parse_vbrvlanmap_response( + void *parent_key, + unc::driver::controller* ctr, + char *data, + std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); /** * @brief - parse VBR_VLANMAP and append it to config @@ -121,12 +129,15 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] json_obj - json_object pointer contains the controller response * @param[in] arr_idx - array index of vlanmap * @param[out] cfgnode_vector - config node vector - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on success - * / returns DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on success + * / returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fill_config_node_vector(void *parent_key, - unc::driver::controller* ctr, json_object *jobj, uint32_t arr_idx, - std::vector< unc::vtndrvcache::ConfigNode *>&cfgnode_vector); + UncRespCode fill_config_node_vector( + void *parent_key, + unc::driver::controller* ctr, + json_object *jobj, + uint32_t arr_idx, + std::vector< unc::vtndrvcache::ConfigNode *>&cfgnode_vector); /** * @brief - Constructs url for VBR_VLANMAP @@ -144,7 +155,7 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * json_object pointer */ json_object* create_request_body(key_vlan_map_t& vlanmap_key, - val_vlan_map_t& vlanmap_val, + pfcdrv_val_vlan_map_t& vlanmap_val, const std::string &logical_port_id); /* @@ -153,7 +164,7 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @return - returns ODC_DRV_SUCCESS/ ODC_DRV_FAILURE */ odc_drv_resp_code_t validate_logical_port_id( - const std::string& logical_port_id); + const std::string& logical_port_id); /** * @brief - Generate vlanmap id in the format @@ -172,23 +183,25 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] vlanmap_key - key structure of VBR_VLANMAP * @param[in] vlanmap_val - value structure of VBR_VLANMAP * @param[in] ctr_ptr - controller pointer - * @retval drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS/ - * - DRVAPI_RESPONSE_FAILURE + * @retval UncRespCode - returns UNC_RC_SUCCESS/ + * - UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t create_update_cmd(key_vlan_map_t& vlanmap_key, - val_vlan_map_t& vlanmap_val, - unc::driver::controller* ctr_ptr); + UncRespCode create_update_cmd(key_vlan_map_t& vlanmap_key, + pfcdrv_val_vlan_map_t& vlanmap_val, + unc::driver::controller* ctr_ptr); /** * @brief - Delete vlan-map configuration from controller by * sending request to rest client interface * @param[in] vlanmap_key - key structure of VBR_VLANMAP * @param[in] ctr_ptr - controller pointer * @param[in] port_id - port id - * @retval drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS/ - * - DRVAPI_RESPONSE_FAILURE + * @retval UncRespCode - returns UNC_RC_SUCCESS/ + * - UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t del_existing_vlanmap(key_vlan_map_t& vlanmap_key, - unc::driver::controller* ctr_ptr, const std::string &port_id); + UncRespCode del_existing_vlanmap( + key_vlan_map_t& vlanmap_key, + unc::driver::controller* ctr_ptr, + const std::string &port_id); /** * @brief - generates vlan id from the vlan-map vector @@ -210,15 +223,15 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[out]is_switch_exist - pfc_bool_t variable set to PFC_TRUE if switch * already exists in controller * @param[out] port_id - existing switch id in controller - * @return drv_resp_code_t - returns - * DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns + * UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t check_switch_already_exists(key_vlan_map_t &key_vlan_map, - val_vlan_map_t &val_vlan_map, - const std::string &logical_port, - unc::driver::controller *ctr_ptr, - pfc_bool_t &is_switch_exist, - std::string &port_id); + UncRespCode check_switch_already_exists(key_vlan_map_t &key_vlan_map, + pfcdrv_val_vlan_map_t &val_vlan_map, + const std::string &logical_port, + unc::driver::controller *ctr_ptr, + pfc_bool_t &is_switch_exist, + std::string &port_id); /* * @brief - Check "ANY" vlan-id (vlan-id not associated @@ -229,14 +242,14 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[out]is_switch_exist - pfc_bool_t variable set to PFC_TRUE if "ANY" * already exists in controller * @param[out] port_id - existing "ANY" vlan-id stored in controller - * @return drv_resp_code_t - returns - * DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns + * UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t check_ANY_already_exists(key_vlan_map_t &key_vlan_map, - val_vlan_map_t &val_vlan_map, - unc::driver::controller *ctr, - pfc_bool_t &is_switch_exist, - std::string &port_id); + UncRespCode check_ANY_already_exists(key_vlan_map_t &key_vlan_map, + pfcdrv_val_vlan_map_t &val_vlan_map, + unc::driver::controller *ctr, + pfc_bool_t &is_switch_exist, + std::string &port_id); /* * @brief - Validates VLAN exists or not @@ -247,22 +260,22 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[out]is_switch_exist - pfc_bool_t variable set to PFC_TRUE if * "ANY"/switch id already exists in controller * @param[out] port_id - existing "ANY"/SW id stored in the controller - * @return drv_resp_code_t - returns - * DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns + * UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t validate_vlan_exist(key_vlan_map_t &key_vlan_map, - val_vlan_map_t &val_vlan_map, - const std::string &logical_port, - unc::driver::controller *ctr, - pfc_bool_t &is_switch_exist, - std::string &port_id); + UncRespCode validate_vlan_exist(key_vlan_map_t &key_vlan_map, + pfcdrv_val_vlan_map_t &val_vlan_map, + const std::string &logical_port, + unc::driver::controller *ctr, + pfc_bool_t &is_switch_exist, + std::string &port_id); /** * @brief - Deletes particular entry from vlan-map vector * @param[in] ctr_ - controller pointer * @param[in] vtn_vbr_vlan - this entry needs to be deleted */ - void delete_from_vector(unc::driver::controller *ctr , + void delete_from_vector(unc::driver::controller *ctr, std::string vtn_vbr_vlan); /** @@ -270,7 +283,8 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in] ctr - controller pointer * @param[in] vtn_vbr_vlan - this entry needs to be updated into vector */ - void update_vector(unc::driver::controller *ctr , std::string vtn_vbr_vlan); + void update_vector(unc::driver::controller *ctr, + std::string vtn_vbr_vlan); /** * @brief - parses the vector and gets vtn, vbr, sw id as out param @@ -299,8 +313,8 @@ class OdcVbrVlanMapCommand: public unc::driver::vbrvlanmap_driver_command { * @param[in][out] - logical_port_id * @return - odc_drv_resp_code_t */ - odc_drv_resp_code_t check_logical_port_id_format(std::string& - logical_port_id); + odc_drv_resp_code_t check_logical_port_id_format( + std::string& logical_port_id); /** * @brief - converts the format of logical diff --git a/coordinator/modules/odcdriver/include/odc_vbrif.hh b/coordinator/modules/odcdriver/include/odc_vbrif.hh index da53d52d..e337db54 100644 --- a/coordinator/modules/odcdriver/include/odc_vbrif.hh +++ b/coordinator/modules/odcdriver/include/odc_vbrif.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -44,33 +44,36 @@ class OdcVbrIfCommand: public unc::driver::vbrif_driver_command { * @param[in] - value structure of VBRIf * @param[in] - Controller connection information * @retval - returns DRVAPI_RESPONSE SUCCESS on creation of vbrif successfully - * /returns DRVAPI_RESPONSE_FAILURE on failure + * /returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t create_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, - unc::driver::controller *conn); + UncRespCode create_cmd(key_vbr_if_t& key, + pfcdrv_val_vbr_if_t& val, + unc::driver::controller *conn); /** * @brief - Updates VBRIf * @param[in] key - key structure of VBRIf * @param[in] val - value structure of VBRIf * @param[in] conn - Controller connection information - * @retval drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on updation of VBRIf - * successfully/returns DRVAPI_RESPONSE_FAILURE on failure + * @retval UncRespCode - returns UNC_RC_SUCCESS on updation of VBRIf + * successfully/returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t update_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, - unc::driver::controller *conn); + UncRespCode update_cmd(key_vbr_if_t& key, + pfcdrv_val_vbr_if_t& val, + unc::driver::controller *conn); /** * @brief - Deletes VBRIf * @param[in] key - key structure of VBRIf * @param[in] val - value structure of VBRIf * @param[in] conn - Controller connection information - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on deletion of + * @return UncRespCode - returns UNC_RC_SUCCESS on deletion of * VBRIf successfully /returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t delete_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, - unc::driver::controller *conn); + UncRespCode delete_cmd(key_vbr_if_t& key, + pfcdrv_val_vbr_if_t& val, + unc::driver::controller *conn); /** * @brief - get all the vbr child @@ -78,21 +81,26 @@ class OdcVbrIfCommand: public unc::driver::vbrif_driver_command { * @param[in] vbr_name - vbr name * @param[in] ctr - controller pointer * @param[out] cfgnode_vector - config node vector - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on successfully retieving a vbr - * child /returns DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on successfully retieving a vbr + * child /returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t get_vbrif_list(std::string vtn_name, - std::string vbr_name, unc::driver::controller* ctr, - std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); + UncRespCode get_vbrif_list( + std::string vtn_name, + std::string vbr_name, + unc::driver::controller* ctr, + std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); + /** * @brief - Method to fetch child configurations for the parent kt * @param[in] - controller pointer * @param[in] - parent key type pointer * @param[out] - list of configurations - * @retval - DRVAPI_RESPONSE_SUCCESS / DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS / UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t fetch_config(unc::driver::controller* ctr, void* parent_key, - std::vector &cfgnode_vector); + UncRespCode fetch_config( + unc::driver::controller* ctr, + void* parent_key, + std::vector &cfgnode_vector); private: /** @@ -103,13 +111,17 @@ class OdcVbrIfCommand: public unc::driver::vbrif_driver_command { * @param[in] ctr - controller pointer * @param[in] data - data from which parse should happen * @param[out] cfgnode_vector - config node vector - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on parsing the - * response of vbrif/returns DRVAPI_RESPONSE_FAILURE on failure + * @return UncRespCode - returns UNC_RC_SUCCESS on parsing the + * response of vbrif/returns UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t parse_vbrif_response(std::string vtn_name, - std::string vbr_name, std::string url, - unc::driver::controller* ctr, char *data, - std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); + UncRespCode parse_vbrif_response( + std::string vtn_name, + std::string vbr_name, + std::string url, + unc::driver::controller* ctr, + char *data, + std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector); + /** * @brief - parse vbr if and append it to vector * @param[in] vtn_name - vtn name @@ -119,15 +131,17 @@ class OdcVbrIfCommand: public unc::driver::vbrif_driver_command { * @param[in] url - url to send request * @param[in] ctr - controller pointer * @param[out] cfgnode_vector - config node vector - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on parsing vbrif and appending - * vector/ returns DRVAPI_RESPONSE_FAILURE on failure - */ - drv_resp_code_t fill_config_node_vector(std::string vtn_name, - std::string vbr_name, json_object *json_obj, - uint32_t arr_idx, std::string url, - unc::driver::controller* ctr, - std::vector< unc::vtndrvcache::ConfigNode *>&cfgnode_vector); - + * @return UncRespCode - returns UNC_RC_SUCCESS on parsing vbrif and appending + * vector/ returns UNC_DRV_RC_ERR_GENERIC on failure + */ + UncRespCode fill_config_node_vector( + std::string vtn_name, + std::string vbr_name, + json_object *json_obj, + uint32_t arr_idx, + std::string url, + unc::driver::controller* ctr, + std::vector< unc::vtndrvcache::ConfigNode *>&cfgnode_vector); /** * @brief - read portmap @@ -137,7 +151,9 @@ class OdcVbrIfCommand: public unc::driver::vbrif_driver_command { * return json_object - json object */ json_object* read_portmap(unc::driver::controller* ctr, - std::string url, int &resp_code); + std::string url, + int &resp_code); + /** * @brief - Constructs url for vbrif * @param[in] vbrif_key - key structure of vbrif key structure @@ -166,16 +182,16 @@ class OdcVbrIfCommand: public unc::driver::vbrif_driver_command { * @param[in] - logical_port_id which needs to be validated * @return - returns ODC_DRV_SUCCESS/ ODC_DRV_FAILURE */ - odc_drv_resp_code_t validate_logical_port_id(const std::string& - logical_port_id); + odc_drv_resp_code_t validate_logical_port_id( + const std::string& logical_port_id); /** * @brief - checks the logical port id format * @param[in][out] - logical_port_id * @return - odc_drv_resp_code_t */ - odc_drv_resp_code_t check_logical_port_id_format(std::string& - logical_port_id); + odc_drv_resp_code_t check_logical_port_id_format( + std::string& logical_port_id); /** * @brief - converts the format of logical diff --git a/coordinator/modules/odcdriver/include/odc_vtn.hh b/coordinator/modules/odcdriver/include/odc_vtn.hh index fe68be96..56ead42c 100644 --- a/coordinator/modules/odcdriver/include/odc_vtn.hh +++ b/coordinator/modules/odcdriver/include/odc_vtn.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -43,12 +43,12 @@ class OdcVtnCommand: public unc::driver::vtn_driver_command { * @param[in] key_vtn_t - key structure of VTN * @param[in] val_vtn_t - value structure of VTN * @param[in] ctr - Controller pointer - * @return - returns DRVAPI_RESPONSE_SUCCESS on + * @return - returns UNC_RC_SUCCESS on * creation of vtn/ returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t create_cmd(key_vtn_t& key, val_vtn_t& val, - unc::driver::controller *ctr); + UncRespCode create_cmd(key_vtn_t& key, val_vtn_t& val, + unc::driver::controller *ctr); /** * @brief - Frames VTN update command and uses rest client @@ -56,12 +56,12 @@ class OdcVtnCommand: public unc::driver::vtn_driver_command { * @param[in] key_vtn_t - key structure of VTN * @param[in] val_vtn_t - value structure of VTN * @param[in] ctr - Controller pointer - * @return - returns DRVAPI_RESPONSE_SUCCESS on + * @return - returns UNC_RC_SUCCESS on * updation of vtn /returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t update_cmd(key_vtn_t& key, val_vtn_t& val, - unc::driver::controller *ctr); + UncRespCode update_cmd(key_vtn_t& key, val_vtn_t& val, + unc::driver::controller *ctr); /** * @brief - Frames VTN delete command and uses rest @@ -69,35 +69,36 @@ class OdcVtnCommand: public unc::driver::vtn_driver_command { * @param[in] key_vtn_t - key structure of VTN * @param[in] val_vtn_t - value structure of VTN * @param[in] ctr - Controller pointer - * @return - returns DRVAPI_RESPONSE_SUCCESS on - * deletion/returns DRVAPI_RESPONSE_FAILURE + * @return - returns UNC_RC_SUCCESS on + * deletion/returns UNC_DRV_RC_ERR_GENERIC * on failure */ - drv_resp_code_t delete_cmd(key_vtn_t& key, val_vtn_t& val, - unc::driver::controller *ctr); + UncRespCode delete_cmd(key_vtn_t& key, val_vtn_t& val, + unc::driver::controller *ctr); /** * @brief - get all the vtns from the VTN Manager * @param[in] ctr - Controller pointer * @param[out] cfg_node_vector - cfg_node_vector - out parameter contains * list of vtns present in controller - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * success of read all operation/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t get_vtn_list(unc::driver::controller* ctr, - std::vector &cfg_node_vector); + UncRespCode get_vtn_list( + unc::driver::controller* ctr, + std::vector &cfg_node_vector); /** * @brief - Method to fetch child configurations for the parent kt * @param[in] - controller pointer * @param[in] - parent key type pointer * @param[out] - list of configurations - * @retval - DRVAPI_RESPONSE_SUCCESS / DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS / UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t fetch_config(unc::driver::controller* ctr, - void* parent_key, - std::vector - &cfgnode_vector); + UncRespCode fetch_config( + unc::driver::controller* ctr, + void* parent_key, + std::vector &cfgnode_vector); private: /** @@ -106,17 +107,18 @@ class OdcVtnCommand: public unc::driver::vtn_driver_command { * parsed * @param[in] arr_idx - array index - in int specifies the array * index -1 denotes no array - * @param[out] cfg_node_vector - vector to which config node needs to be + * @param[out] cfg_node_vector - vector to which config node needs to be * pushed - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on + * @return UncRespCode - returns UNC_RC_SUCCESS on * parsing vtn and appending to vector * successfully/returns - * DRVAPI_RESPONSE_FAILURE on failure + * UNC_DRV_RC_ERR_GENERIC on failure */ - drv_resp_code_t fill_config_node_vector(json_object *json_obj_vtn, - int arr_idx, - std::vector - &cfg_node_vector); + UncRespCode fill_config_node_vector( + json_object *json_obj_vtn, + int arr_idx, + std::vector &cfg_node_vector); + /** * @brief - Creates the Request Body * @param[in] val - VTN value structure val_vtn_t @@ -125,15 +127,16 @@ class OdcVtnCommand: public unc::driver::vtn_driver_command { json_object* create_request_body(const val_vtn_t& val_vtn); /** - * @brief - parse the vtn response data - * @param[in] - data which is the response from the controller + * @brief - parse the vtn response data + * @param[in] - data which is the response from the controller * @param[out] cfg_node_vector - vector to which the resp to be pushed - * @return drv_resp_code_t - returns DRVAPI_RESPONSE_SUCCESS on parsing the - * response data/returns DRVAPI_RESPONSE_FAILURE + * @return UncRespCode - returns UNC_RC_SUCCESS on parsing the + * response data/returns UNC_DRV_RC_ERR_GENERIC * on failure */ - drv_resp_code_t parse_vtn_response(char *data, - std::vector< unc::vtndrvcache::ConfigNode *> &cfg_node_vector); + UncRespCode parse_vtn_response( + char *data, + std::vector< unc::vtndrvcache::ConfigNode *> &cfg_node_vector); private: uint32_t idle_timeout_; diff --git a/coordinator/modules/odcdriver/odc_link.cc b/coordinator/modules/odcdriver/odc_link.cc index 4ce8b531..0d50260c 100644 --- a/coordinator/modules/odcdriver/odc_link.cc +++ b/coordinator/modules/odcdriver/odc_link.cc @@ -24,7 +24,7 @@ OdcLink::~OdcLink() { // Get link information in the controller -drv_resp_code_t OdcLink::fetch_config( +UncRespCode OdcLink::fetch_config( unc::driver::controller *ctr_ptr, const pfc_bool_t &cache_empty) { ODC_FUNC_TRACE; @@ -46,23 +46,23 @@ drv_resp_code_t OdcLink::fetch_config( if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("Response code is not OK , resp : %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (NULL != response->write_data) { if (NULL != response->write_data->memory) { char *data = response->write_data->memory; pfc_log_trace("All Linkes : %s", data); - drv_resp_code_t ret_val = parse_link_response( + UncRespCode ret_val = parse_link_response( ctr_ptr, data, cfgnode_vector); pfc_log_debug("Number of LINK present, %d", static_cast(cfgnode_vector.size())); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error occured while parsing"); return ret_val; } @@ -72,11 +72,11 @@ drv_resp_code_t OdcLink::fetch_config( } } pfc_log_error("Response data is NULL"); - return DRVAPI_RESPONSE_FAILURE;; + return UNC_DRV_RC_ERR_GENERIC; } // parse each LINK append to map maintained -drv_resp_code_t OdcLink::fill_edge_value_map( +UncRespCode OdcLink::fill_edge_value_map( json_object *json_obj_node_prop, int arr_idx, std::map &edge_prop_map, @@ -91,7 +91,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_edge, json_type_null))) { pfc_log_error(" Error while parsing edge or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_tail_conn = NULL; @@ -102,7 +102,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_tail_conn, json_type_null))) { pfc_log_error(" Error while parsing tail connector or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_tail_node = NULL; @@ -114,7 +114,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_tail_node, json_type_null))) { pfc_log_error(" Error while parsing node or json_node NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string tail_node_id = ""; @@ -126,7 +126,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (tail_node_id.empty())) { pfc_log_error("Error while parsing node_id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string tail_id = ""; ret_val = restjson::JsonBuildParse::parse(json_obj_tail_conn, @@ -137,7 +137,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (tail_id.empty())) { pfc_log_error(" Error while parsing type id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_head_conn = NULL; @@ -149,7 +149,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_head_conn, json_type_null))) { pfc_log_error(" Error while parsing head connector or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string head_id = ""; @@ -161,7 +161,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (head_id.empty())) { pfc_log_error("Error while parsing head conn id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_head_node = NULL; ret_val = restjson::JsonBuildParse::parse(json_obj_head_conn, @@ -172,7 +172,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_head_node, json_type_null))) { pfc_log_error(" Error while parsing head connector node or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string head_node_id = ""; @@ -184,7 +184,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (head_node_id.empty())) { pfc_log_error("Error while parsing head conn id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_prop = NULL; @@ -196,7 +196,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_prop, json_type_null))) { pfc_log_error(" Error while parsing json_obj_prop or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_prop_name = NULL; @@ -208,7 +208,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_prop_name, json_type_null))) { pfc_log_error(" Error while parsing json_obj_prop_name or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string prop_name = ""; @@ -220,7 +220,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (prop_name.empty())) { pfc_log_error("Error while parsing prop name value"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_prop_state = NULL; @@ -232,7 +232,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_prop_state, json_type_null))) { pfc_log_error(" Error while parsing json_obj_prop_state or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint state_value = 0; @@ -243,7 +243,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("Error while parsing prop state value"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_prop_config = NULL; @@ -253,7 +253,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( (json_object_is_type(json_obj_prop_config, json_type_null))) { pfc_log_error(" Error while parsing json_obj_prop_config" "or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint config_value = 0; @@ -264,7 +264,7 @@ drv_resp_code_t OdcLink::fill_edge_value_map( if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("Error while parsing prop config value"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string tail_conn_prop = ""; @@ -306,31 +306,31 @@ drv_resp_code_t OdcLink::fill_edge_value_map( edge_prop_map[tail_conn_prop] = head_conn_prop; pfc_log_trace("Entry in edge prop map is key : %s, val : %s", tail_conn_prop.c_str(), head_conn_prop.c_str()); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Compare whether cache empty or not -drv_resp_code_t OdcLink::compare_with_cache( +UncRespCode OdcLink::compare_with_cache( unc::driver::controller *ctr_ptr, const pfc_bool_t &cache_empty, std::vector &cfgnode_vector) { ODC_FUNC_TRACE; if (NULL == ctr_ptr->physical_port_cache) { pfc_log_error("cache pointer is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::list link_list; - drv_resp_code_t ret_val = DRVAPI_RESPONSE_FAILURE; + UncRespCode ret_val = UNC_DRV_RC_ERR_GENERIC; if (PFC_TRUE == cache_empty) { for (std::vector::iterator it = cfgnode_vector.begin(); it != cfgnode_vector.end(); ++it) { unc::vtndrvcache::ConfigNode *cfgnode_cache = *it; if (NULL == cfgnode_cache) { pfc_log_error("cfgnode_cache is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = add_event(ctr_ptr, cfgnode_cache, link_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error in adding to cache"); return ret_val; } @@ -339,7 +339,7 @@ drv_resp_code_t OdcLink::compare_with_cache( ret_val = verify_in_cache(ctr_ptr, cfgnode_vector, link_list); return ret_val; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Notify physical about the link event @@ -391,7 +391,7 @@ void OdcLink::update_list(key_link_t *key_link, } // Add event for Link -drv_resp_code_t OdcLink::add_event(unc::driver::controller *ctr_ptr, +UncRespCode OdcLink::add_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, std::list &link_list) { ODC_FUNC_TRACE; @@ -405,7 +405,7 @@ drv_resp_code_t OdcLink::add_event(unc::driver::controller *ctr_ptr, if ((NULL == key_link) || (NULL == val_link)) { pfc_log_error("key_link/val_link is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send Notification to UPPL notify_physical(unc::driver::VTN_LINK_CREATE, @@ -414,9 +414,9 @@ drv_resp_code_t OdcLink::add_event(unc::driver::controller *ctr_ptr, NULL); // Append to cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr_ptr->physical_port_cache->append_Physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error(" Error in adding to cache"); delete_config_node(cfg_node); return ret_val; @@ -426,7 +426,7 @@ drv_resp_code_t OdcLink::add_event(unc::driver::controller *ctr_ptr, } // Update event for Link -drv_resp_code_t OdcLink::update_event(unc::driver::controller *ctr_ptr, +UncRespCode OdcLink::update_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, val_link_st_t *val_old_link, std::list &link_list) { @@ -441,7 +441,7 @@ drv_resp_code_t OdcLink::update_event(unc::driver::controller *ctr_ptr, if ((NULL == key_link) || (NULL == val_link) || (NULL == val_old_link)) { pfc_log_error("key_link/val_link is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send notification to UPPL @@ -451,9 +451,9 @@ drv_resp_code_t OdcLink::update_event(unc::driver::controller *ctr_ptr, val_old_link); // Append to cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr_ptr->physical_port_cache->update_physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error(" Error in updating to cache"); delete_config_node(cfg_node); return ret_val; @@ -463,7 +463,7 @@ drv_resp_code_t OdcLink::update_event(unc::driver::controller *ctr_ptr, } // Delete event for Link -drv_resp_code_t OdcLink::delete_event(unc::driver::controller *ctr, +UncRespCode OdcLink::delete_event(unc::driver::controller *ctr, std::list &link_list) { ODC_FUNC_TRACE; unc::vtndrvcache::ConfigNode *cfgnode_cache = NULL; @@ -476,7 +476,7 @@ drv_resp_code_t OdcLink::delete_event(unc::driver::controller *ctr, cfgnode_cache = itr_ptr->NextItem() ) { if (NULL == cfgnode_cache) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc_key_type_t key_type = cfgnode_cache->get_type_name(); if (UNC_KT_LINK == key_type) { @@ -488,7 +488,7 @@ drv_resp_code_t OdcLink::delete_event(unc::driver::controller *ctr, key_link_t *key_link_cache = cfgptr_cache->get_key_structure(); if (NULL == key_link_cache) { pfc_log_error("Key slink cache is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id1 = reinterpret_cast(key_link_cache->switch_id1); @@ -517,12 +517,12 @@ drv_resp_code_t OdcLink::delete_event(unc::driver::controller *ctr, } } } - drv_resp_code_t ret_val = delete_link(ctr, cfg_node_delete_map); + UncRespCode ret_val = delete_link(ctr, cfg_node_delete_map); return ret_val; } // Send Delete notification to Link -drv_resp_code_t OdcLink::delete_link( +UncRespCode OdcLink::delete_link( unc::driver::controller *ctr, const std::map &cfg_node_delete_map) { @@ -535,7 +535,7 @@ drv_resp_code_t OdcLink::delete_link( unc::vtndrvcache::ConfigNode *cfg_node = iter->second; if (NULL == cfg_node) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string link_id = iter->first; unc::vtndrvcache::CacheElementUtil @@ -548,7 +548,7 @@ drv_resp_code_t OdcLink::delete_link( if ((NULL == key_link) || (NULL == val_link)) { pfc_log_error("key_link/val_link is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send notification to UPPL notify_physical(unc::driver::VTN_LINK_DELETE, @@ -557,18 +557,18 @@ drv_resp_code_t OdcLink::delete_link( NULL); // Delete from cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr->physical_port_cache->delete_physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error(" Error in deleting in cache"); return ret_val; } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Verify in cache whether link exists or not -drv_resp_code_t OdcLink::verify_in_cache( +UncRespCode OdcLink::verify_in_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, std::list &link_list) { @@ -581,7 +581,7 @@ drv_resp_code_t OdcLink::verify_in_cache( unc::vtndrvcache::ConfigNode *cfg_node = *ctr_iterator; if (NULL == cfg_node) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::vtndrvcache::CacheElementUtil @@ -593,7 +593,7 @@ drv_resp_code_t OdcLink::verify_in_cache( if ((NULL == key_link) || (NULL == val_link_ctr)) { pfc_log_error("key_link / val_link is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id1 = reinterpret_cast(key_link->switch_id1); @@ -614,8 +614,8 @@ drv_resp_code_t OdcLink::verify_in_cache( cfgnode_ctr, cfgnode_cache); if (PFC_FALSE == exist_in_cache) { pfc_log_trace("Link not exist in cache"); - drv_resp_code_t ret_val = add_event(ctr_ptr, cfgnode_ctr, link_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + UncRespCode ret_val = add_event(ctr_ptr, cfgnode_ctr, link_list); + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error("Error occured in adding to cache"); return ret_val; } @@ -633,9 +633,9 @@ drv_resp_code_t OdcLink::verify_in_cache( val_link_cache); if (PFC_TRUE == link_update) { pfc_log_trace("Link parameters are updated"); - drv_resp_code_t ret_val = + UncRespCode ret_val = update_event(ctr_ptr, cfgnode_ctr, val_link_cache, link_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("error in updating the cache"); return ret_val; } @@ -647,7 +647,7 @@ drv_resp_code_t OdcLink::verify_in_cache( } } // Check for delete - drv_resp_code_t ret_val = delete_event(ctr_ptr, link_list); + UncRespCode ret_val = delete_event(ctr_ptr, link_list); return ret_val; } @@ -673,7 +673,7 @@ pfc_bool_t OdcLink::is_link_modified(val_link_st_t *val_link_ctr, } // Fills config node vector with link -drv_resp_code_t OdcLink::fill_config_node_vector( +UncRespCode OdcLink::fill_config_node_vector( unc::driver::controller *ctr_ptr, const std::map &edge_prop_map, const std::map &head_conn_map, @@ -692,12 +692,12 @@ drv_resp_code_t OdcLink::fill_config_node_vector( port_id1 = it_head_node->second; } else { pfc_log_error("No corresponding port available . Error occured"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } size_t pos_sw_one = tail_node_conn.find(PIPE_SEPARATOR); if (pos_sw_one == std::string::npos) { pfc_log_error("Error in tail_node_conn value"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id1 = tail_node_conn.substr(0, pos_sw_one); std::string switch_id2 = ""; @@ -732,7 +732,7 @@ drv_resp_code_t OdcLink::fill_config_node_vector( if ((switch_id1.empty()) || (switch_id2.empty()) || (port_id1.empty()) || (port_id2.empty())) { pfc_log_error("switch id or port id is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_trace("SW1 : %s ,PORT1: %s, SW2: %s,PORT2: %s", switch_id1.c_str(), port_id1.c_str(), switch_id2.c_str(), port_id2.c_str()); @@ -781,11 +781,11 @@ drv_resp_code_t OdcLink::fill_config_node_vector( PFC_VERIFY(cfgptr != NULL); cfgnode_vector.push_back(cfgptr); } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // parsing function for converting controller response to driver format -drv_resp_code_t OdcLink::parse_link_response( +UncRespCode OdcLink::parse_link_response( unc::driver::controller *ctr_ptr, char *data, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { @@ -793,7 +793,7 @@ drv_resp_code_t OdcLink::parse_link_response( json_object* jobj = restjson::JsonBuildParse::get_json_object(data); if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("json_object_is_type error"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t array_length =0; json_object *json_obj_edge_prop = NULL; @@ -806,7 +806,7 @@ drv_resp_code_t OdcLink::parse_link_response( (json_object_is_type(json_obj_edge_prop, json_type_null))) { json_object_put(jobj); pfc_log_error("Parsing Error json_obj_edge_prop is null"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (json_object_is_type(json_obj_edge_prop, json_type_array)) { @@ -816,16 +816,16 @@ drv_resp_code_t OdcLink::parse_link_response( if (0 == array_length) { pfc_log_debug("No EDGE present"); json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t ret_val = DRVAPI_RESPONSE_FAILURE; + UncRespCode ret_val = UNC_DRV_RC_ERR_GENERIC; std::map edge_prop_map; std::map head_conn_map; for (uint32_t arr_idx = 0; arr_idx < array_length; arr_idx++) { ret_val = fill_edge_value_map( json_obj_edge_prop, arr_idx, edge_prop_map, head_conn_map); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (UNC_RC_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("Error return from fill map failure"); return ret_val; @@ -835,13 +835,13 @@ drv_resp_code_t OdcLink::parse_link_response( ret_val = fill_config_node_vector (ctr_ptr, edge_prop_map, head_conn_map, cfgnode_vector); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (UNC_RC_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("Error return from fill config node_vector failure"); return ret_val; } json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } } // namespace odcdriver } // namespace unc diff --git a/coordinator/modules/odcdriver/odc_mod.cc b/coordinator/modules/odcdriver/odc_mod.cc index f8f8d3ef..c926b6ea 100644 --- a/coordinator/modules/odcdriver/odc_mod.cc +++ b/coordinator/modules/odcdriver/odc_mod.cc @@ -209,8 +209,8 @@ pfc_bool_t ODCModule::get_physical_port_details( pfc_bool_t cache_empty = PFC_TRUE; // Gets the SWITCH details - drv_resp_code_t ret_val = odc_switch_obj.fetch_config(ctr_ptr, cache_empty); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + UncRespCode ret_val = odc_switch_obj.fetch_config(ctr_ptr, cache_empty); + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error occured in getting switch details"); return PFC_FALSE; } @@ -221,11 +221,11 @@ pfc_bool_t ODCModule::get_physical_port_details( for (cfgnode_cache = itr_ptr->PhysicalNodeFirstItem(); itr_ptr->IsDone() == false; cfgnode_cache = itr_ptr->NextItem() ) { - if (cfgnode_cache == NULL) { + if (NULL == cfgnode_cache) { pfc_log_error("cfgnode is NULL before get_type"); delete ctr_ptr->physical_port_cache; ctr_ptr->physical_port_cache = NULL; - return DRVAPI_RESPONSE_FAILURE; + return PFC_FALSE; } unc_key_type_t key_type = cfgnode_cache->get_type_name(); @@ -245,7 +245,7 @@ pfc_bool_t ODCModule::get_physical_port_details( OdcPort odc_port_obj(conf_file_values_); // Gets the port details of a particular SW ret_val = odc_port_obj.fetch_config(ctr_ptr, key_switch, cache_empty); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error occured in getting port details"); return PFC_FALSE; } @@ -253,7 +253,7 @@ pfc_bool_t ODCModule::get_physical_port_details( } OdcLink odc_link_obj(conf_file_values_); ret_val = odc_link_obj.fetch_config(ctr_ptr, cache_empty); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error occured in getting link details"); return PFC_FALSE; } diff --git a/coordinator/modules/odcdriver/odc_port.cc b/coordinator/modules/odcdriver/odc_port.cc index 783d95db..bbfe592b 100644 --- a/coordinator/modules/odcdriver/odc_port.cc +++ b/coordinator/modules/odcdriver/odc_port.cc @@ -24,7 +24,7 @@ OdcPort::~OdcPort() { // Get logical port information in the controller -drv_resp_code_t OdcPort::fetch_config( +UncRespCode OdcPort::fetch_config( unc::driver::controller *ctr_ptr, key_switch_t *parent_switch, const pfc_bool_t cache_empty) { @@ -34,7 +34,7 @@ drv_resp_code_t OdcPort::fetch_config( if (NULL == parent_switch) { pfc_log_error("parent_switch is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::vector cfgnode_vector; std::string switch_id = reinterpret_cast @@ -42,7 +42,7 @@ drv_resp_code_t OdcPort::fetch_config( if (switch_id.empty()) { pfc_log_error("Switch id is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string url = ""; url.append(BASE_SW_URL); @@ -63,24 +63,24 @@ drv_resp_code_t OdcPort::fetch_config( if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("Response code is not OK , resp : %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (NULL != response->write_data) { if (NULL != response->write_data->memory) { char *data = response->write_data->memory; pfc_log_trace("All nodes : %s", data); - drv_resp_code_t ret_val = + UncRespCode ret_val = parse_port_response(ctr_ptr, data, cfgnode_vector); pfc_log_debug("Number of Ports in Switch %s is, %d", switch_id.c_str(), static_cast(cfgnode_vector.size())); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error while parsing the port response"); return ret_val; } @@ -92,11 +92,11 @@ drv_resp_code_t OdcPort::fetch_config( } } pfc_log_error("Response in NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // parse each port and append to cache -drv_resp_code_t OdcPort::fill_config_node_vector( +UncRespCode OdcPort::fill_config_node_vector( unc::driver::controller *ctr_ptr, json_object *json_obj_node_conn_prop, int arr_idx, @@ -113,10 +113,10 @@ drv_resp_code_t OdcPort::fill_config_node_vector( arr_idx, json_obj_node_conn); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_conn, json_type_null))) { pfc_log_error(" Error while parsing node"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string node_conn_id = ""; @@ -124,10 +124,10 @@ drv_resp_code_t OdcPort::fill_config_node_vector( "id", -1, node_conn_id); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (node_conn_id.empty())) { pfc_log_error(" Error while parsing node_conn_id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_node = NULL; @@ -138,32 +138,32 @@ drv_resp_code_t OdcPort::fill_config_node_vector( -1, json_obj_node); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node, json_type_null))) { pfc_log_error(" Error while parsing port or json obj is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = restjson::JsonBuildParse::parse(json_obj_node_conn, "type", -1, node_type); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (node_type.empty())) { pfc_log_error(" Error while parsing node_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (node_type.compare("SW") == 0) { pfc_log_debug("SW type is received"); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } ret_val = restjson::JsonBuildParse::parse(json_obj_node, "id", -1, node_id); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (node_id.empty())) { pfc_log_error(" Error while parsing node id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string name_value = ""; @@ -177,9 +177,9 @@ drv_resp_code_t OdcPort::fill_config_node_vector( config_value, speed); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error in parsing node conn properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Fills Key Structure @@ -240,11 +240,11 @@ drv_resp_code_t OdcPort::fill_config_node_vector( (&key_port, &val_port, uint32_t(UNC_OP_READ)); PFC_VERIFY(cfgptr != NULL); cfgnode_vector.push_back(cfgptr); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // parse the port properties vale -drv_resp_code_t OdcPort::parse_port_properties_value( +UncRespCode OdcPort::parse_port_properties_value( int arr_idx, json_object *json_obj_node_conn, std::string &name_value, @@ -257,10 +257,10 @@ drv_resp_code_t OdcPort::parse_port_properties_value( "properties", arr_idx, json_obj_node_prop); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_prop, json_type_null))) { pfc_log_error(" Error while parsing node properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_node_prop_name = NULL; ret_val = restjson::JsonBuildParse::parse(json_obj_node_prop, @@ -268,10 +268,10 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, json_obj_node_prop_name); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_prop_name, json_type_null))) { pfc_log_error(" Error while parsing node name"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = restjson::JsonBuildParse::parse(json_obj_node_prop_name, @@ -279,10 +279,10 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, name_value); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (name_value.empty())) { pfc_log_error(" Error while parsing node name value"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_node_prop_state = NULL; @@ -291,10 +291,10 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, json_obj_node_prop_state); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_prop_state, json_type_null))) { pfc_log_error(" Error while parsing node state properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = restjson::JsonBuildParse::parse(json_obj_node_prop_state, @@ -302,9 +302,9 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, state_value); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error(" Error while parsing node state value properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_node_prop_config = NULL; @@ -313,10 +313,10 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, json_obj_node_prop_config); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_prop_config, json_type_null))) { pfc_log_error(" Error while parsing node config properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = restjson::JsonBuildParse::parse(json_obj_node_prop_config, @@ -324,9 +324,9 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, config_value); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error(" Error while parsing node config properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_node_prop_speed = NULL; @@ -335,10 +335,10 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, json_obj_node_prop_speed); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_prop_speed, json_type_null))) { pfc_log_error(" Error while parsing node bandwidth properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = restjson::JsonBuildParse::parse(json_obj_node_prop_speed, @@ -346,26 +346,26 @@ drv_resp_code_t OdcPort::parse_port_properties_value( -1, speed); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error(" Error while parsing node bandwidth properties"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Compare whether cache empty or not -drv_resp_code_t OdcPort::compare_with_cache( +UncRespCode OdcPort::compare_with_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, const std::string &switch_id, const pfc_bool_t cache_empty) { ODC_FUNC_TRACE; if (NULL == ctr_ptr->physical_port_cache) { pfc_log_error("Cache is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::list port_list; - drv_resp_code_t ret_val = DRVAPI_RESPONSE_FAILURE; + UncRespCode ret_val = UNC_DRV_RC_ERR_GENERIC; if (PFC_TRUE == cache_empty) { for (std::vector::iterator it = @@ -373,10 +373,10 @@ drv_resp_code_t OdcPort::compare_with_cache( unc::vtndrvcache::ConfigNode *cfgnode_cache = *it; if (NULL == cfgnode_cache) { pfc_log_error("cfgnode_cache is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = add_event(ctr_ptr, cfgnode_cache, port_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("Error in adding to cache"); return ret_val; } @@ -385,7 +385,7 @@ drv_resp_code_t OdcPort::compare_with_cache( ret_val = verify_in_cache(ctr_ptr, cfgnode_vector, switch_id, port_list); return ret_val; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Notify physical about the port event @@ -529,7 +529,7 @@ void OdcPort::update_list(key_port_t *key_port, } // Add event for Port -drv_resp_code_t OdcPort::add_event(unc::driver::controller *ctr_ptr, +UncRespCode OdcPort::add_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, std::list &port_list) { ODC_FUNC_TRACE; @@ -542,15 +542,15 @@ drv_resp_code_t OdcPort::add_event(unc::driver::controller *ctr_ptr, if ((NULL == key_port) || (NULL == val_port)) { pfc_log_error("key_port/val_port is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send Notification to UPPL notify_physical(unc::driver::VTN_PORT_CREATE, key_port, val_port, NULL); // Append to cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr_ptr->physical_port_cache->append_Physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { delete_config_node(cfg_node); pfc_log_error(" Error in adding to cache"); return ret_val; @@ -560,7 +560,7 @@ drv_resp_code_t OdcPort::add_event(unc::driver::controller *ctr_ptr, } // Update event for Port -drv_resp_code_t OdcPort::update_event(unc::driver::controller *ctr_ptr, +UncRespCode OdcPort::update_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, val_port_st_t *val_old_port, std::list &port_list) { @@ -574,16 +574,16 @@ drv_resp_code_t OdcPort::update_event(unc::driver::controller *ctr_ptr, if ((NULL == key_port) || (NULL == val_port) || (NULL == val_old_port)) { pfc_log_error("key_port/val_port is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send notification to UPPL notify_physical(unc::driver::VTN_PORT_UPDATE, key_port, val_port, val_old_port); // Append to cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr_ptr->physical_port_cache->update_physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { delete_config_node(cfg_node); pfc_log_error(" Error in updating to cache"); return ret_val; @@ -594,7 +594,7 @@ drv_resp_code_t OdcPort::update_event(unc::driver::controller *ctr_ptr, } // Check Delete event for Port -drv_resp_code_t OdcPort::delete_event(unc::driver::controller *ctr_ptr, +UncRespCode OdcPort::delete_event(unc::driver::controller *ctr_ptr, const std::string &switch_id, std::list &port_list) { ODC_FUNC_TRACE; @@ -608,7 +608,7 @@ drv_resp_code_t OdcPort::delete_event(unc::driver::controller *ctr_ptr, cfgnode_cache = itr_ptr->NextItem() ) { if (NULL == cfgnode_cache) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc_key_type_t key_type = cfgnode_cache->get_type_name(); if (UNC_KT_PORT == key_type) { @@ -619,7 +619,7 @@ drv_resp_code_t OdcPort::delete_event(unc::driver::controller *ctr_ptr, key_port_t *key_port_cache = cfgptr_cache->get_key_structure(); if (NULL == key_port_cache) { pfc_log_error("key_port_cache is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id_cache = reinterpret_cast (key_port_cache->sw_key.switch_id); @@ -645,7 +645,7 @@ drv_resp_code_t OdcPort::delete_event(unc::driver::controller *ctr_ptr, return delete_port(ctr_ptr, cfg_node_delete_map); } -drv_resp_code_t OdcPort::delete_port( +UncRespCode OdcPort::delete_port( unc::driver::controller *ctr_ptr, const std::map &cfg_node_delete_map) { @@ -658,7 +658,7 @@ drv_resp_code_t OdcPort::delete_port( unc::vtndrvcache::ConfigNode *cfg_node = iter->second; if (NULL == cfg_node) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::vtndrvcache::CacheElementUtil @@ -670,20 +670,20 @@ drv_resp_code_t OdcPort::delete_port( if ((NULL == key_port) || (NULL == val_port)) { pfc_log_error("key_port/val_port is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send notification to UPPL notify_physical(unc::driver::VTN_PORT_DELETE, key_port, val_port, NULL); // Delete from cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr_ptr->physical_port_cache->delete_physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error(" Error in deleting in cache"); return ret_val; } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Deletes config node @@ -696,7 +696,7 @@ void OdcPort::delete_config_node(unc::vtndrvcache::ConfigNode *cfg_node) { } // Verify in cache whether port aleady exists or not -drv_resp_code_t OdcPort::verify_in_cache( +UncRespCode OdcPort::verify_in_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, const std::string &switch_id, @@ -710,7 +710,7 @@ drv_resp_code_t OdcPort::verify_in_cache( unc::vtndrvcache::ConfigNode *cfg_node = *ctr_iterator; if (NULL == cfg_node) { pfc_log_error("cfg_node is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::vtndrvcache::CacheElementUtil *cfgnode_ctr = static_castget_val_structure(); if (NULL == val_port_ctr) { pfc_log_error("val_port_ctr is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string port_id_ctr = reinterpret_cast @@ -734,8 +734,8 @@ drv_resp_code_t OdcPort::verify_in_cache( if (PFC_FALSE == exist_in_cache) { pfc_log_trace("Port %s not exist in cache", port_id_ctr.c_str()); - drv_resp_code_t ret_val = add_event(ctr_ptr, cfgnode_ctr, port_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + UncRespCode ret_val = add_event(ctr_ptr, cfgnode_ctr, port_list); + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error("Error occured in adding to cache"); return ret_val; } @@ -750,15 +750,15 @@ drv_resp_code_t OdcPort::verify_in_cache( if ((NULL == key_port) || (NULL == val_port_cache)) { pfc_log_error("key_port/val_port_cache is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_bool_t sw_update = is_port_modified(val_port_ctr, val_port_cache); if (PFC_TRUE == sw_update) { pfc_log_trace("Port is %s, its parameters are updated", port_id_ctr.c_str()); - drv_resp_code_t ret_val = + UncRespCode ret_val = update_event(ctr_ptr, cfgnode_ctr, val_port_cache, port_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (UNC_RC_SUCCESS != ret_val) { pfc_log_error("error in updating the cache"); return ret_val; } @@ -771,7 +771,7 @@ drv_resp_code_t OdcPort::verify_in_cache( } } // Check for delete - drv_resp_code_t ret_val = delete_event(ctr_ptr, switch_id, port_list); + UncRespCode ret_val = delete_event(ctr_ptr, switch_id, port_list); return ret_val; } @@ -801,14 +801,14 @@ pfc_bool_t OdcPort::is_port_modified(val_port_st_t *val_port_ctr, } // parsing function for converting controller response to driver format -drv_resp_code_t OdcPort::parse_port_response( +UncRespCode OdcPort::parse_port_response( unc::driver::controller *ctr_ptr, char *data, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { ODC_FUNC_TRACE; json_object* jobj = restjson::JsonBuildParse::get_json_object(data); if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("json_object_is_type error"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t array_length =0; json_object *json_obj_node_conn_prop = NULL; @@ -817,11 +817,11 @@ drv_resp_code_t OdcPort::parse_port_response( -1, json_obj_node_conn_prop); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_conn_prop, json_type_null))) { json_object_put(jobj); pfc_log_error("Parsing Error json_obj_node_conn_prop is null"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (json_object_is_type(json_obj_node_conn_prop, json_type_array)) { @@ -831,19 +831,19 @@ drv_resp_code_t OdcPort::parse_port_response( if (0 == array_length) { pfc_log_debug("No nodes port present"); json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } for (uint32_t arr_idx = 0; arr_idx < array_length; arr_idx++) { - drv_resp_code_t ret_val = fill_config_node_vector(ctr_ptr, + UncRespCode ret_val = fill_config_node_vector(ctr_ptr, json_obj_node_conn_prop, arr_idx, cfgnode_vector); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (UNC_RC_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("Error return from parse_node_append_vector failure"); return ret_val; } } json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } } // namespace odcdriver } // namespace unc diff --git a/coordinator/modules/odcdriver/odc_switch.cc b/coordinator/modules/odcdriver/odc_switch.cc index 754b9a9a..784f28a3 100644 --- a/coordinator/modules/odcdriver/odc_switch.cc +++ b/coordinator/modules/odcdriver/odc_switch.cc @@ -24,7 +24,7 @@ OdcSwitch::~OdcSwitch() { // Get switch information in the controller -drv_resp_code_t OdcSwitch::fetch_config(unc::driver::controller *ctr_ptr, +UncRespCode OdcSwitch::fetch_config(unc::driver::controller *ctr_ptr, pfc_bool_t &cache_empty) { ODC_FUNC_TRACE; PFC_VERIFY(ctr_ptr != NULL); @@ -45,23 +45,23 @@ drv_resp_code_t OdcSwitch::fetch_config(unc::driver::controller *ctr_ptr, if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("Response code is not OK , resp : %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (NULL != response->write_data) { if (NULL != response->write_data->memory) { char *data = response->write_data->memory; pfc_log_trace("All Switches : %s", data); - drv_resp_code_t ret_val = parse_node_response( + UncRespCode ret_val = parse_node_response( ctr_ptr, data, cfgnode_vector); pfc_log_debug("Number of SWITCH present, %d", static_cast(cfgnode_vector.size())); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error("Error occured while parsing"); return ret_val; } @@ -71,11 +71,11 @@ drv_resp_code_t OdcSwitch::fetch_config(unc::driver::controller *ctr_ptr, } } pfc_log_error("Response data is NULL"); - return DRVAPI_RESPONSE_FAILURE;; + return UNC_DRV_RC_ERR_GENERIC;; } // parse each SWITCH append t cache -drv_resp_code_t OdcSwitch::fill_config_node_vector( +UncRespCode OdcSwitch::fill_config_node_vector( unc::driver::controller *ctr_ptr, json_object *json_obj_node_prop, int arr_idx, @@ -92,10 +92,10 @@ drv_resp_code_t OdcSwitch::fill_config_node_vector( arr_idx, json_obj_node); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node, json_type_null))) { pfc_log_error(" Error while parsing node or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string node_id = ""; @@ -103,10 +103,10 @@ drv_resp_code_t OdcSwitch::fill_config_node_vector( "id", -1, node_id); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (node_id.empty())) { pfc_log_error(" Error while parsing id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_prop = NULL; @@ -115,10 +115,10 @@ drv_resp_code_t OdcSwitch::fill_config_node_vector( arr_idx, json_prop); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_prop, json_type_null))) { pfc_log_error(" Error while parsing description or json_prop NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_obj_description = NULL; ret_val = restjson::JsonBuildParse::parse(json_prop, @@ -126,10 +126,10 @@ drv_resp_code_t OdcSwitch::fill_config_node_vector( -1, json_obj_description); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_description, json_type_null))) { pfc_log_error(" Error while parsing description or json type NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string desc = ""; ret_val = restjson::JsonBuildParse::parse(json_obj_description, @@ -137,9 +137,9 @@ drv_resp_code_t OdcSwitch::fill_config_node_vector( -1, desc); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error(" Error while parsing description"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string ctr_name = ctr_ptr->get_controller_id(); @@ -173,21 +173,21 @@ drv_resp_code_t OdcSwitch::fill_config_node_vector( PFC_VERIFY(cfgptr != NULL); cfgnode_vector.push_back(cfgptr); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Compare whether cache empty or not -drv_resp_code_t OdcSwitch::compare_with_cache( +UncRespCode OdcSwitch::compare_with_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, pfc_bool_t &cache_empty) { ODC_FUNC_TRACE; if (NULL == ctr_ptr->physical_port_cache) { pfc_log_error("cache pointer is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::list switch_list; - drv_resp_code_t ret_val = DRVAPI_RESPONSE_FAILURE; + UncRespCode ret_val = UNC_DRV_RC_ERR_GENERIC; if (0 == ctr_ptr->physical_port_cache->cfg_list_count()) { cache_empty = PFC_TRUE; for (std::vector::iterator it = @@ -195,10 +195,10 @@ drv_resp_code_t OdcSwitch::compare_with_cache( unc::vtndrvcache::ConfigNode *cfgnode_cache = *it; if (NULL == cfgnode_cache) { pfc_log_error("cfgnode_cache is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = add_event(ctr_ptr, cfgnode_cache, switch_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error("Error in adding to cache"); return ret_val; } @@ -208,7 +208,7 @@ drv_resp_code_t OdcSwitch::compare_with_cache( ret_val = verify_in_cache(ctr_ptr, cfgnode_vector, switch_list); return ret_val; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Notify physical about the switch event @@ -243,7 +243,7 @@ void OdcSwitch::update_list(key_switch_t *key_switch, } // Add event for Switch -drv_resp_code_t OdcSwitch::add_event(unc::driver::controller *ctr_ptr, +UncRespCode OdcSwitch::add_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, std::list &switch_list) { ODC_FUNC_TRACE; @@ -255,16 +255,16 @@ drv_resp_code_t OdcSwitch::add_event(unc::driver::controller *ctr_ptr, if ((NULL == key_switch) || (NULL == val_switch)) { pfc_log_error("key_switch/val_switch is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send Notification to UPPL notify_physical(unc::driver::VTN_SWITCH_CREATE, key_switch, val_switch, NULL); // Append to cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr_ptr->physical_port_cache->append_Physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { delete_config_node(cfg_node); pfc_log_error(" Error in adding to cache"); return ret_val; @@ -274,7 +274,7 @@ drv_resp_code_t OdcSwitch::add_event(unc::driver::controller *ctr_ptr, } // Update event for Switch -drv_resp_code_t OdcSwitch::update_event(unc::driver::controller *ctr_ptr, +UncRespCode OdcSwitch::update_event(unc::driver::controller *ctr_ptr, unc::vtndrvcache::ConfigNode *cfg_node, val_switch_st_t *val_old_switch, std::list &switch_list) { @@ -289,7 +289,7 @@ drv_resp_code_t OdcSwitch::update_event(unc::driver::controller *ctr_ptr, if ((NULL == key_switch) || (NULL == val_switch) || (NULL == val_old_switch)) { pfc_log_error("key_switch/val_switch is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send notification to UPPL @@ -297,9 +297,9 @@ drv_resp_code_t OdcSwitch::update_event(unc::driver::controller *ctr_ptr, val_switch, val_old_switch); // Append to cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr_ptr->physical_port_cache->update_physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { delete_config_node(cfg_node); pfc_log_error(" Error in updating to cache"); return ret_val; @@ -309,7 +309,7 @@ drv_resp_code_t OdcSwitch::update_event(unc::driver::controller *ctr_ptr, } // Delete event for Switch -drv_resp_code_t OdcSwitch::delete_event(unc::driver::controller *ctr, +UncRespCode OdcSwitch::delete_event(unc::driver::controller *ctr, std::list &switch_list) { ODC_FUNC_TRACE; unc::vtndrvcache::ConfigNode *cfgnode_cache = NULL; @@ -322,7 +322,7 @@ drv_resp_code_t OdcSwitch::delete_event(unc::driver::controller *ctr, cfgnode_cache = itr_ptr->NextItem() ) { if (NULL == cfgnode_cache) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc_key_type_t key_type = cfgnode_cache->get_type_name(); pfc_log_debug("key_type is %d", key_type); @@ -335,7 +335,7 @@ drv_resp_code_t OdcSwitch::delete_event(unc::driver::controller *ctr, key_switch_t *key_switch_cache = cfgptr_cache->get_key_structure(); if (NULL == key_switch_cache) { pfc_log_error("Key sswitch cache is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id = reinterpret_cast (key_switch_cache->switch_id); @@ -354,7 +354,7 @@ drv_resp_code_t OdcSwitch::delete_event(unc::driver::controller *ctr, key_port_t *key_port_cache = cfgptr_cache_port->get_key_structure(); if (NULL == key_port_cache) { pfc_log_error("key_port_cache is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_port_id = reinterpret_cast (key_port_cache->sw_key.switch_id); @@ -371,18 +371,18 @@ drv_resp_code_t OdcSwitch::delete_event(unc::driver::controller *ctr, } } - drv_resp_code_t ret_val = + UncRespCode ret_val = delete_logical_port(ctr, cfg_node_delete_map); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error("Error in deleting logical port"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = delete_switch(ctr, cfg_node_delete_map); return ret_val; } // Send Delete notification to logical port -drv_resp_code_t OdcSwitch::delete_logical_port( +UncRespCode OdcSwitch::delete_logical_port( unc::driver::controller *ctr, const std::map &cfg_node_delete_map) { @@ -395,7 +395,7 @@ drv_resp_code_t OdcSwitch::delete_logical_port( unc::vtndrvcache::ConfigNode *cfg_node = iter->second; if (NULL == cfg_node) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id = iter->first; if (switch_id.compare(0, 3, "LP-") == 0) { @@ -407,7 +407,7 @@ drv_resp_code_t OdcSwitch::delete_logical_port( val_port_st_t *val_port = cfgptr_cache->get_val_structure(); if ((NULL == key_port) || (NULL == val_port)) { pfc_log_error("key_port/val_port is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } OdcPort odc_port_obj(conf_file_values_); @@ -416,11 +416,11 @@ drv_resp_code_t OdcSwitch::delete_logical_port( key_port, val_port, NULL); } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Send Delete notification to Switch -drv_resp_code_t OdcSwitch::delete_switch( +UncRespCode OdcSwitch::delete_switch( unc::driver::controller *ctr, const std::map &cfg_node_delete_map) { @@ -433,7 +433,7 @@ drv_resp_code_t OdcSwitch::delete_switch( unc::vtndrvcache::ConfigNode *cfg_node = iter->second; if (NULL == cfg_node) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id = iter->first; if (switch_id.compare(0, 3, "LP-") != 0) { @@ -446,26 +446,26 @@ drv_resp_code_t OdcSwitch::delete_switch( val_switch_st_t *val_switch = cfgptr_cache_sw->get_val_structure(); if ((NULL == key_switch) || (NULL == val_switch)) { pfc_log_error("key_switch/val_switch is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Send notification to UPPL notify_physical(unc::driver::VTN_SWITCH_DELETE, key_switch, val_switch, NULL); // Delete from cache - drv_resp_code_t ret_val = + UncRespCode ret_val = ctr->physical_port_cache->delete_physical_attribute_node(cfg_node); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error(" Error in deleting in cache"); return ret_val; } } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Verify in cache whether switch aleady exists or not -drv_resp_code_t OdcSwitch::verify_in_cache( +UncRespCode OdcSwitch::verify_in_cache( unc::driver::controller *ctr_ptr, std::vector &cfgnode_vector, std::list &switch_list) { @@ -478,7 +478,7 @@ drv_resp_code_t OdcSwitch::verify_in_cache( unc::vtndrvcache::ConfigNode *cfg_node = *ctr_iterator; if (NULL == cfg_node) { pfc_log_error("cfgnode is NULL before get_type"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::vtndrvcache::CacheElementUtil @@ -497,8 +497,8 @@ drv_resp_code_t OdcSwitch::verify_in_cache( cfgnode_ctr, cfgnode_cache); if (PFC_FALSE == exist_in_cache) { pfc_log_trace("Switch %s not exists in cache", switch_id.c_str()); - drv_resp_code_t ret_val = add_event(ctr_ptr, cfgnode_ctr, switch_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + UncRespCode ret_val = add_event(ctr_ptr, cfgnode_ctr, switch_list); + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error("Error occured in adding to cache"); return ret_val; } @@ -517,9 +517,9 @@ drv_resp_code_t OdcSwitch::verify_in_cache( if (PFC_TRUE == sw_update) { pfc_log_trace("Switch is %s, parameters are updated", switch_id.c_str()); - drv_resp_code_t ret_val = + UncRespCode ret_val = update_event(ctr_ptr, cfgnode_ctr, val_switch_cache, switch_list); - if (ret_val != DRVAPI_RESPONSE_SUCCESS) { + if (ret_val != UNC_RC_SUCCESS) { pfc_log_error("error in updating the cache"); return ret_val; } @@ -532,7 +532,7 @@ drv_resp_code_t OdcSwitch::verify_in_cache( } } // Check for delete - drv_resp_code_t ret_val = delete_event(ctr_ptr, switch_list); + UncRespCode ret_val = delete_event(ctr_ptr, switch_list); return ret_val; } @@ -567,7 +567,7 @@ pfc_bool_t OdcSwitch::is_switch_modified(val_switch_st_t *val_switch_ctr, } // parsing function for converting controller response to driver format -drv_resp_code_t OdcSwitch::parse_node_response( +UncRespCode OdcSwitch::parse_node_response( unc::driver::controller *ctr_ptr, char *data, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { @@ -575,7 +575,7 @@ drv_resp_code_t OdcSwitch::parse_node_response( json_object* jobj = restjson::JsonBuildParse::get_json_object(data); if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("json_object_is_type error"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t array_length =0; json_object *json_obj_node_prop = NULL; @@ -584,11 +584,11 @@ drv_resp_code_t OdcSwitch::parse_node_response( -1, json_obj_node_prop); - if ((DRVAPI_RESPONSE_SUCCESS != ret_val) || + if ((restjson::REST_OP_SUCCESS != ret_val) || (json_object_is_type(json_obj_node_prop, json_type_null))) { json_object_put(jobj); pfc_log_error("Parsing Error json_obj_node_prop is null"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (json_object_is_type(json_obj_node_prop, json_type_array)) { @@ -598,19 +598,19 @@ drv_resp_code_t OdcSwitch::parse_node_response( if (0 == array_length) { pfc_log_trace("No SWITCH present"); json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } for (uint32_t arr_idx = 0; arr_idx < array_length; arr_idx++) { - drv_resp_code_t ret_val = fill_config_node_vector(ctr_ptr, + UncRespCode ret_val = fill_config_node_vector(ctr_ptr, json_obj_node_prop, arr_idx, cfgnode_vector); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (UNC_RC_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("Error return from parse_node_append_vector failure"); return ret_val; } } json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } } // namespace odcdriver } // namespace unc diff --git a/coordinator/modules/odcdriver/odc_vbr.cc b/coordinator/modules/odcdriver/odc_vbr.cc index 1e168840..c4dd64ca 100644 --- a/coordinator/modules/odcdriver/odc_vbr.cc +++ b/coordinator/modules/odcdriver/odc_vbr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -24,7 +24,7 @@ OdcVbrCommand::~OdcVbrCommand() { } // Create Command and send Request to Controller -drv_resp_code_t OdcVbrCommand::create_cmd(key_vbr_t& key_vbr, +UncRespCode OdcVbrCommand::create_cmd(key_vbr_t& key_vbr, val_vbr_t& val_vbr, unc::driver::controller *ctr_ptr) { @@ -34,7 +34,7 @@ drv_resp_code_t OdcVbrCommand::create_cmd(key_vbr_t& key_vbr, std::string vbr_url = get_vbr_url(key_vbr); if (vbr_url.empty()) { pfc_log_error("vbrif url is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::restjson::JsonBuildParse json_obj; json_object *json_req_body = create_request_body(val_vbr); @@ -53,7 +53,7 @@ drv_resp_code_t OdcVbrCommand::create_cmd(key_vbr_t& key_vbr, json_object_put(json_req_body); if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("resp_code for create vbr is %d", resp_code); @@ -61,7 +61,7 @@ drv_resp_code_t OdcVbrCommand::create_cmd(key_vbr_t& key_vbr, if (HTTP_201_RESP_CREATED != resp_code) { pfc_log_debug("check if vtn is stand-alone"); // check if vtn is stand-alone - drv_resp_code_t ret_code = DRVAPI_RESPONSE_FAILURE; + UncRespCode ret_code = UNC_DRV_RC_ERR_GENERIC; std::vector child_list; child_list.clear(); std::string vtn_name = reinterpret_cast @@ -71,7 +71,7 @@ drv_resp_code_t OdcVbrCommand::create_cmd(key_vbr_t& key_vbr, int vtn_child_size = static_cast (child_list.size()); pfc_log_debug("VTN child_list... size: %d", vtn_child_size); - if (ret_code == DRVAPI_RESPONSE_SUCCESS) { + if (ret_code == UNC_RC_SUCCESS) { if (vtn_child_size == 0) { pfc_log_debug("delete stand-alone vtn"); // delete stand-alone vtn @@ -86,13 +86,13 @@ drv_resp_code_t OdcVbrCommand::create_cmd(key_vbr_t& key_vbr, vtn_obj.delete_cmd(key_vtn, val_vtn, ctr_ptr); } } - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Command to update vtn and Send request to Controller -drv_resp_code_t OdcVbrCommand::update_cmd(key_vbr_t& key_vbr, +UncRespCode OdcVbrCommand::update_cmd(key_vbr_t& key_vbr, val_vbr_t& val_vbr, unc::driver::controller *ctr_ptr) { ODC_FUNC_TRACE; @@ -101,7 +101,7 @@ drv_resp_code_t OdcVbrCommand::update_cmd(key_vbr_t& key_vbr, std::string vbr_url = get_vbr_url(key_vbr); if (vbr_url.empty()) { pfc_log_error("vbr url is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object *json_req_body = create_request_body(val_vbr); unc::restjson::JsonBuildParse json_obj; @@ -119,19 +119,19 @@ drv_resp_code_t OdcVbrCommand::update_cmd(key_vbr_t& key_vbr, json_object_put(json_req_body); if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("Response code from Ctl for vbr update cmd : %d ", resp_code); if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("vbr is not updated , resp_code is : %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Delete Request send to the Controller -drv_resp_code_t OdcVbrCommand::delete_cmd(key_vbr_t& key_vbr, +UncRespCode OdcVbrCommand::delete_cmd(key_vbr_t& key_vbr, val_vbr_t& val_vbr, unc::driver::controller *ctr_ptr) { @@ -142,7 +142,7 @@ drv_resp_code_t OdcVbrCommand::delete_cmd(key_vbr_t& key_vbr, pfc_log_debug("vbr_url:%s", vbr_url.c_str()); if (vbr_url.empty()) { pfc_log_error("vbr url is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::restjson::RestUtil rest_util_obj(ctr_ptr->get_host_address(), @@ -152,15 +152,15 @@ drv_resp_code_t OdcVbrCommand::delete_cmd(key_vbr_t& key_vbr, if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("Response code from Ctl for delete vbr : %d ", resp_code); if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("vbr delete is not success , resp_code id: %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Creates Request Body @@ -194,7 +194,7 @@ json_object* OdcVbrCommand::create_request_body(const val_vbr_t& val_vbr) { } // fetch child configurations for the parent kt(vtn) -drv_resp_code_t OdcVbrCommand::fetch_config(unc::driver::controller* ctr, +UncRespCode OdcVbrCommand::fetch_config(unc::driver::controller* ctr, void* parent_key, std::vector &cfgnode_vector) { @@ -210,7 +210,7 @@ drv_resp_code_t OdcVbrCommand::fetch_config(unc::driver::controller* ctr, } // Get all vbridges under specified vtn -drv_resp_code_t OdcVbrCommand::get_vbr_list(std::string vtn_name, +UncRespCode OdcVbrCommand::get_vbr_list(std::string vtn_name, unc::driver::controller* ctr, std::vector< unc::vtndrvcache ::ConfigNode *> @@ -233,30 +233,30 @@ drv_resp_code_t OdcVbrCommand::get_vbr_list(std::string vtn_name, url, restjson::HTTP_METHOD_GET, NULL, conf_file_values_); if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("Response code for GET vbridges : %d", resp_code); if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("get vbridges is not succesful , resp_code %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (NULL != response->write_data) { if (NULL != response->write_data->memory) { char *data = response->write_data->memory; - drv_resp_code_t ret_code = parse_vbr_response(data, - vtn_name, - ctr, - cfgnode_vector); + UncRespCode ret_code = parse_vbr_response(data, + vtn_name, + ctr, + cfgnode_vector); return ret_code; } } - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Prsing fuction for vbridge after getting vbridge from controller -drv_resp_code_t OdcVbrCommand::parse_vbr_response(char *data, +UncRespCode OdcVbrCommand::parse_vbr_response(char *data, std::string vtn_name, unc::driver::controller* ctr, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { @@ -269,7 +269,7 @@ drv_resp_code_t OdcVbrCommand::parse_vbr_response(char *data, if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("Exit parse_vbr_resp_data. json_object_is_type null"); json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("response data from controller : %s", data); uint32_t array_length = 0; @@ -279,13 +279,13 @@ drv_resp_code_t OdcVbrCommand::parse_vbr_response(char *data, if (json_object_is_type(json_obj_vbr, json_type_null)) { json_object_put(jobj); pfc_log_error("%s jobj_vbr NULL", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("Error in parsing json object in %s", PFC_FUNCNAME); json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (json_object_is_type(json_obj_vbr, json_type_array)) { @@ -293,22 +293,22 @@ drv_resp_code_t OdcVbrCommand::parse_vbr_response(char *data, } pfc_log_debug(" array _length %d" , array_length); for (uint32_t arr_idx = 0; arr_idx < array_length; arr_idx++) { - drv_resp_code_t retval = fill_config_node_vector(ctr, json_obj_vbr, + UncRespCode retval = fill_config_node_vector(ctr, json_obj_vbr, vtn_name, arr_idx, cfgnode_vector); - if (DRVAPI_RESPONSE_SUCCESS != retval) { + if (UNC_RC_SUCCESS != retval) { pfc_log_error("Error in parsing vbr resp data in %s", PFC_FUNCNAME); json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } json_object_put(jobj); pfc_log_debug("cfgnode_vector.size: %d" , static_cast(cfgnode_vector.size())); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // each vbridge node append to cache -drv_resp_code_t OdcVbrCommand::fill_config_node_vector( +UncRespCode OdcVbrCommand::fill_config_node_vector( unc::driver::controller* ctr, json_object *json_obj_vbr, std::string vtn_name, uint32_t arr_idx, std::vector &cfgnode_vector) { @@ -324,14 +324,14 @@ drv_resp_code_t OdcVbrCommand::fill_config_node_vector( arr_idx, vbr_name); if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("Error occured while parsing vbr name"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = restjson::JsonBuildParse::parse(json_obj_vbr, "description", arr_idx, vbr_description); if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error(" Error occured while parsing vbr description"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Fills the vbr KEY structure strncpy(reinterpret_cast (key_vbr.vtn_key.vtn_name), vtn_name.c_str(), @@ -375,7 +375,7 @@ drv_resp_code_t OdcVbrCommand::fill_config_node_vector( cfgnode_vector.push_back(cfgptr); pfc_log_debug("parse_vbr_append_vector Exiting. cfgnode_vector size: %d", static_cast(cfgnode_vector.size())); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Constructing URL for vbridge,inject request to controller diff --git a/coordinator/modules/odcdriver/odc_vbr_vlanmap.cc b/coordinator/modules/odcdriver/odc_vbr_vlanmap.cc index a539eada..12505cad 100644 --- a/coordinator/modules/odcdriver/odc_vbr_vlanmap.cc +++ b/coordinator/modules/odcdriver/odc_vbr_vlanmap.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -24,7 +24,7 @@ OdcVbrVlanMapCommand::~OdcVbrVlanMapCommand() { } // fetch child configurations for the parent kt(vbr) -drv_resp_code_t OdcVbrVlanMapCommand::fetch_config( +UncRespCode OdcVbrVlanMapCommand::fetch_config( unc::driver::controller* ctr, void* parent_key, std::vector &cfgnode_vector) { @@ -33,23 +33,23 @@ drv_resp_code_t OdcVbrVlanMapCommand::fetch_config( } // Validates VLAN exists or not -drv_resp_code_t OdcVbrVlanMapCommand::validate_vlan_exist( - key_vlan_map_t &key_vlan_map, - val_vlan_map_t &val_vlan_map, - const std::string &logical_port_id, - unc::driver::controller *ctr, - pfc_bool_t &is_switch_exist, - std::string &port_id) { +UncRespCode OdcVbrVlanMapCommand::validate_vlan_exist( + key_vlan_map_t &key_vlan_map, + pfcdrv_val_vlan_map_t &val_vlan_map, + const std::string &logical_port_id, + unc::driver::controller *ctr, + pfc_bool_t &is_switch_exist, + std::string &port_id) { ODC_FUNC_TRACE; if (key_vlan_map.logical_port_id_valid != 0) { // Validate request received with SwitchID - drv_resp_code_t ret_val = + UncRespCode ret_val = check_switch_already_exists(key_vlan_map, val_vlan_map, logical_port_id, ctr, is_switch_exist, port_id); return ret_val; } else { // Validate request received without SwitchID - drv_resp_code_t ret_val = check_ANY_already_exists + UncRespCode ret_val = check_ANY_already_exists (key_vlan_map, val_vlan_map, ctr, is_switch_exist, port_id); return ret_val; } @@ -57,14 +57,15 @@ drv_resp_code_t OdcVbrVlanMapCommand::validate_vlan_exist( // Check "ANY" vlan-id (vlan-id not associated with any switch) // exists in controller -drv_resp_code_t -OdcVbrVlanMapCommand::check_ANY_already_exists(key_vlan_map_t &key_vlan_map, - val_vlan_map_t &val_vlan_map, - unc::driver::controller *ctr, - pfc_bool_t &is_switch_exist, - std::string &port_id) { +UncRespCode +OdcVbrVlanMapCommand::check_ANY_already_exists( + key_vlan_map_t &key_vlan_map, + pfcdrv_val_vlan_map_t &val_vlan_map, + unc::driver::controller *ctr, + pfc_bool_t &is_switch_exist, + std::string &port_id) { ODC_FUNC_TRACE; - uint vlan_id_req = val_vlan_map.vlan_id; + uint vlan_id_req = val_vlan_map.vm.vlan_id; std::string vtn_name_req = reinterpret_cast(key_vlan_map.vbr_key.vtn_key.vtn_name); std::string vbr_name_req = @@ -87,7 +88,7 @@ OdcVbrVlanMapCommand::check_ANY_already_exists(key_vlan_map_t &key_vlan_map, size_t vlan_occurence = vtn_vbr_vlan_data.find_last_of(PERIOD); if (vlan_occurence == std::string::npos) { pfc_log_error("%s: Error in parsing data", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string vlan_id = vtn_vbr_vlan_data.substr(vlan_occurence+1); uint vlan_id_ctr = atoi(vlan_id.c_str()); @@ -101,7 +102,7 @@ OdcVbrVlanMapCommand::check_ANY_already_exists(key_vlan_map_t &key_vlan_map, (vbr_name_ctr.empty()) || (switch_id_ctr.empty())) { pfc_log_error("Error in parsing values "); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (vlan_id_req != vlan_id_ctr) { @@ -125,22 +126,22 @@ OdcVbrVlanMapCommand::check_ANY_already_exists(key_vlan_map_t &key_vlan_map, } } else { pfc_log_error("%s: VLANID Conflict for Node type ANY!!!", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Check if switch id exists in controller -drv_resp_code_t OdcVbrVlanMapCommand::check_switch_already_exists( +UncRespCode OdcVbrVlanMapCommand::check_switch_already_exists( key_vlan_map_t &key_vlan_map, - val_vlan_map_t &val_vlan_map, + pfcdrv_val_vlan_map_t &val_vlan_map, const std::string &switch_id_req, unc::driver::controller *ctr_ptr, pfc_bool_t &is_switch_exist, std::string &port_id) { ODC_FUNC_TRACE; - uint vlan_id_req = val_vlan_map.vlan_id; + uint vlan_id_req = val_vlan_map.vm.vlan_id; std::string vtn_name_req = reinterpret_cast (key_vlan_map.vbr_key.vtn_key.vtn_name); std::string vbr_name_req = reinterpret_cast @@ -160,7 +161,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::check_switch_already_exists( } else { pfc_log_error("%s: Request logical port is not in the format of SW-", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::odcdriver::OdcController *odc_ctr = @@ -173,7 +174,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::check_switch_already_exists( size_t vlan_occurence = vtn_vbr_vlan_data.find_last_of(PERIOD); if (vlan_occurence == std::string::npos) { pfc_log_error("%s: Error in parsing vlan-id", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string vlan_id = vtn_vbr_vlan_data.substr(vlan_occurence+1); uint vlan_id_ctr = atoi(vlan_id.c_str()); @@ -186,7 +187,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::check_switch_already_exists( (vbr_name_ctr.empty()) || (switch_id_ctr.empty())) { pfc_log_error("%s: Error in parsing values", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (vlan_id_req == vlan_id_ctr) { @@ -196,22 +197,22 @@ drv_resp_code_t OdcVbrVlanMapCommand::check_switch_already_exists( pfc_log_error("%s:VLAN ID Conflict for SWID in Request & " "ANY in Controller %s", PFC_FUNCNAME, switch_id_ctr.c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } else if (logical_port_req.compare(switch_id_ctr) == 0) { pfc_log_error("%s: VLANID Conflict for SWID in Request & " "Controller (%s)!!!", PFC_FUNCNAME, switch_id_ctr.c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } else { pfc_log_error("%s:VLAN id Conflict in different vbridges " "under same VTN", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } else { pfc_log_error("%s:VLAN id Conflict in different " "vbridges under different VTN", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } else { if ((vtn_name_req.compare(vtn_name_ctr) == 0) && @@ -228,7 +229,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::check_switch_already_exists( } } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // parses the vector and gets vtn, vbr, sw id as out param @@ -262,7 +263,7 @@ void OdcVbrVlanMapCommand::parse_data_from_vector( } // Getting vbridge vlanmap if available -drv_resp_code_t OdcVbrVlanMapCommand::get_vbrvlanmap_list(void* parent_key, +UncRespCode OdcVbrVlanMapCommand::get_vbrvlanmap_list(void* parent_key, unc::driver ::controller* ctr, std::vector @@ -280,7 +281,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::get_vbrvlanmap_list(void* parent_key, PFC_ASSERT(ctr != NULL); if ((0 == strlen(vtn_name.c_str())) || (0 == strlen(vbr_name.c_str()))) { pfc_log_error("%s: Empty VTN/VBR name", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Construct URL to retrieve vlanmaps from controller @@ -303,7 +304,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::get_vbrvlanmap_list(void* parent_key, if (NULL == response) { pfc_log_error("%s:Error Occured while getting http response", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("%s: Response code (%d) from Ctrl for get vbrvlanmap", @@ -317,23 +318,23 @@ drv_resp_code_t OdcVbrVlanMapCommand::get_vbrvlanmap_list(void* parent_key, pfc_log_error("%s:VTN Manager service not operating inside controller %u", PFC_FUNCNAME, resp_code); } - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (NULL != response->write_data) { if (NULL != response->write_data->memory) { char *data = response->write_data->memory; - drv_resp_code_t parse_ret = DRVAPI_RESPONSE_FAILURE; + UncRespCode parse_ret = UNC_DRV_RC_ERR_GENERIC; // Parse the vlan-map GET response from controller parse_ret = parse_vbrvlanmap_response(parent_key, ctr, data, cfgnode_vector); return parse_ret; } } - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Parse the VBR_VLANMAP data -drv_resp_code_t OdcVbrVlanMapCommand::parse_vbrvlanmap_response( +UncRespCode OdcVbrVlanMapCommand::parse_vbrvlanmap_response( void *parent_key, unc::driver::controller* ctr, char *data, @@ -342,7 +343,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::parse_vbrvlanmap_response( json_object* jobj = unc::restjson::JsonBuildParse::get_json_object(data); if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("%s: json_object_is_null", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t array_length = 0; json_object *json_obj_vbrvlanmap = NULL; @@ -354,13 +355,13 @@ drv_resp_code_t OdcVbrVlanMapCommand::parse_vbrvlanmap_response( if (json_object_is_type(json_obj_vbrvlanmap, json_type_null)) { pfc_log_error("%s: json vbrvlanmap is null", PFC_FUNCNAME); json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (restjson::REST_OP_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("%s: JsonBuildParse::parse fail", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // If more than 0 vlanmap configurations are present,retrieve the array length if (json_object_is_type(json_obj_vbrvlanmap, json_type_array)) { @@ -368,40 +369,39 @@ drv_resp_code_t OdcVbrVlanMapCommand::parse_vbrvlanmap_response( "vlanmap"); } - drv_resp_code_t resp_code = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code = UNC_DRV_RC_ERR_GENERIC; // Loop for all vlanmap configurations and cache it for (uint32_t arr_idx = 0; arr_idx < array_length; arr_idx++) { resp_code = fill_config_node_vector(parent_key, ctr, json_obj_vbrvlanmap, arr_idx, cfgnode_vector); - if (DRVAPI_RESPONSE_FAILURE == resp_code) { + if (UNC_DRV_RC_ERR_GENERIC == resp_code) { json_object_put(jobj); pfc_log_error("%s: fill_config_node_vector failed", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Parse VBR_VLANMAP and append it to confignode vector -drv_resp_code_t OdcVbrVlanMapCommand::fill_config_node_vector(void *parent_key, +UncRespCode OdcVbrVlanMapCommand::fill_config_node_vector(void *parent_key, unc::driver::controller* ctr, json_object *jobj, uint32_t arr_idx, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { ODC_FUNC_TRACE; key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); - val_vlan_map.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vlan = "0"; int ret_val = unc::restjson::JsonBuildParse::parse(jobj, "vlan", arr_idx, vlan); if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("%s: Parse error for vlanid", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("%s: Vlan id parsed %s", PFC_FUNCNAME, vlan.c_str()); std::string id = ""; @@ -409,25 +409,27 @@ drv_resp_code_t OdcVbrVlanMapCommand::fill_config_node_vector(void *parent_key, id); if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("%s: Parse error for id", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("%s: ID parsed %s", PFC_FUNCNAME, id.c_str()); if (id.empty()) { pfc_log_error("%s: id is empty", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - val_vlan_map.vlan_id = atoi(vlan.c_str()); - if (val_vlan_map.vlan_id == 0) { - val_vlan_map.vlan_id = 0xFFFF; + val_vlan_map.valid[PFCDRV_IDX_VAL_VLAN_MAP] = UNC_VF_VALID; + val_vlan_map.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + val_vlan_map.vm.vlan_id = atoi(vlan.c_str()); + if (val_vlan_map.vm.vlan_id == 0) { + val_vlan_map.vm.vlan_id = 0xFFFF; pfc_log_debug("%s: Vlan id untagged set as %d", PFC_FUNCNAME, - val_vlan_map.vlan_id); + val_vlan_map.vm.vlan_id); } json_object *jobj_node = NULL; ret_val = unc::restjson::JsonBuildParse::parse(jobj, "node", arr_idx, jobj_node); if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("%s: Parse Error for node", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (json_object_is_type(jobj_node, json_type_null)) { @@ -440,7 +442,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::fill_config_node_vector(void *parent_key, if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("%s: Parse Error for ID", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } switch_id.append(node_id); strncpy(reinterpret_cast @@ -458,7 +460,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::fill_config_node_vector(void *parent_key, if ((parent_vtn_name.empty()) || (parent_vbr_name.empty())) { pfc_log_error("%s: VTN/VBR name is empty", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } strncpy(reinterpret_cast (key_vlan_map.vbr_key.vtn_key.vtn_name), parent_vtn_name.c_str(), strlen(parent_vtn_name.c_str())); @@ -469,7 +471,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::fill_config_node_vector(void *parent_key, // Cache the parsed vlanmap configurations unc::vtndrvcache::ConfigNode *cfgptr = new unc::vtndrvcache::CacheElementUtil - + (&key_vlan_map, &val_vlan_map, uint32_t(UNC_OP_READ)); PFC_ASSERT(cfgptr != NULL); cfgnode_vector.push_back(cfgptr); @@ -494,7 +496,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::fill_config_node_vector(void *parent_key, if (PFC_FALSE == is_data_exist) { odc_ctr->vlan_vector.push_back(vtn_vbr_vlan); } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } std::string OdcVbrVlanMapCommand::generate_string_for_vector( @@ -553,9 +555,9 @@ std::string OdcVbrVlanMapCommand::generate_vlanmap_id( } // Create Command for vbr vlanmap -drv_resp_code_t OdcVbrVlanMapCommand::create_cmd( +UncRespCode OdcVbrVlanMapCommand::create_cmd( key_vlan_map_t& vlanmap_key, - val_vlan_map_t& vlanmap_val, + pfcdrv_val_vlan_map_t& vlanmap_val, unc::driver::controller* ctr_ptr) { ODC_FUNC_TRACE; @@ -563,9 +565,9 @@ drv_resp_code_t OdcVbrVlanMapCommand::create_cmd( } // Update Command for vbr vlanmap -drv_resp_code_t OdcVbrVlanMapCommand::update_cmd( +UncRespCode OdcVbrVlanMapCommand::update_cmd( key_vlan_map_t& vlanmap_key, - val_vlan_map_t& vlanmap_val, + pfcdrv_val_vlan_map_t& vlanmap_val, unc::driver::controller* ctr_ptr) { ODC_FUNC_TRACE; @@ -573,7 +575,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::update_cmd( } // Delete vlan-map from controller -drv_resp_code_t OdcVbrVlanMapCommand::del_existing_vlanmap( +UncRespCode OdcVbrVlanMapCommand::del_existing_vlanmap( key_vlan_map_t& vlanmap_key, unc::driver::controller* ctr_ptr, const std::string &str_mapping_id) { @@ -582,11 +584,11 @@ drv_resp_code_t OdcVbrVlanMapCommand::del_existing_vlanmap( std::string del_vbr_vlanmap_url = get_vbrvlanmap_url(vlanmap_key); if (del_vbr_vlanmap_url.empty()) { pfc_log_error("%s: vlanmap url is empty", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (str_mapping_id.empty()) { pfc_log_error("%s: MapID received is empty", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } del_vbr_vlanmap_url.append(str_mapping_id); @@ -601,7 +603,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::del_existing_vlanmap( if (NULL == response) { pfc_log_error("%s: Error Occured while getting httpresponse", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("%s: Response code from Ctl for delete vlanmap (%d) ", @@ -610,7 +612,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::del_existing_vlanmap( if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("%s: Delete vlanmap is not successful %d", PFC_FUNCNAME, resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string vtn_name_req = @@ -621,20 +623,20 @@ drv_resp_code_t OdcVbrVlanMapCommand::del_existing_vlanmap( vbr_name_req, str_mapping_id); if (vtn_vbr_vlan_delete.empty()) { pfc_log_debug("vtn/vbr/id is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Entry from search vector is removed delete_from_vector(ctr_ptr, vtn_vbr_vlan_delete); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Create or Update Command for vbr vlanmap -drv_resp_code_t OdcVbrVlanMapCommand::create_update_cmd( +UncRespCode OdcVbrVlanMapCommand::create_update_cmd( key_vlan_map_t& vlanmap_key, - val_vlan_map_t& vlanmap_val, + pfcdrv_val_vlan_map_t& vlanmap_val, unc::driver::controller* ctr_ptr) { ODC_FUNC_TRACE; PFC_ASSERT(ctr_ptr != NULL); @@ -649,35 +651,35 @@ drv_resp_code_t OdcVbrVlanMapCommand::create_update_cmd( if (ret_val != ODC_DRV_SUCCESS) { pfc_log_error("%s: Validation for logical_port[%s] failed ", PFC_FUNCNAME, logical_port_id.c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug(" Logical port id received %s", logical_port_id.c_str()); } - if (vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] != UNC_VF_VALID) { + if (vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] != UNC_VF_VALID) { pfc_log_error("%s: Received invalid Vlan_id", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Validate if vlanid already exists in controller - drv_resp_code_t validate_resp = validate_vlan_exist(vlanmap_key, - vlanmap_val, - logical_port_id, - ctr_ptr, - vlan_map_exists, - strmapid); - - if (validate_resp != DRVAPI_RESPONSE_SUCCESS) { + UncRespCode validate_resp = validate_vlan_exist(vlanmap_key, + vlanmap_val, + logical_port_id, + ctr_ptr, + vlan_map_exists, + strmapid); + + if (UNC_RC_SUCCESS != validate_resp) { pfc_log_error("%s Validation of vlanmap failed, validate_resp(%u)", PFC_FUNCNAME, validate_resp); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // If vlanid exists for same SwitchID/ANY delete the existing vlanmap // and create a new vlanmap - if (vlan_map_exists == PFC_TRUE) { + if (PFC_TRUE == vlan_map_exists) { if (del_existing_vlanmap(vlanmap_key, ctr_ptr, strmapid) != - DRVAPI_RESPONSE_SUCCESS) { + UNC_RC_SUCCESS) { pfc_log_error("%s Delete of vlanmap failed", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } @@ -685,7 +687,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::create_update_cmd( pfc_log_debug("%s: Vlanmap url %s ", PFC_FUNCNAME, vbr_vlanmap_url.c_str()); if (vbr_vlanmap_url.empty()) { pfc_log_error("%s: Vlanmap url is empty", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::restjson::JsonBuildParse json_obj; json_object* vbrvlanmap_json_request_body = create_request_body( @@ -705,7 +707,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::create_update_cmd( if (NULL == response) { pfc_log_error("%s: Error Occured while getting httpresponse", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("%s: Response code from Ctl for vlanmap create_cmd: %d", @@ -713,30 +715,30 @@ drv_resp_code_t OdcVbrVlanMapCommand::create_update_cmd( if (HTTP_201_RESP_CREATED != resp_code) { pfc_log_error("%s: Create/Update Vlanmap Failure.Response code %d", PFC_FUNCNAME, resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string vtn_name_req = reinterpret_cast(vlanmap_key.vbr_key.vtn_key.vtn_name); std::string vbr_name_req = reinterpret_cast(vlanmap_key.vbr_key.vbridge_name); - uint vlanid = vlanmap_val.vlan_id; + uint vlanid = vlanmap_val.vm.vlan_id; std::ostringstream convert_vlanid; convert_vlanid << vlanid; std::string map_id = generate_vlanmap_id(vlanmap_key, convert_vlanid.str(), logical_port_id); if (map_id.empty()) { pfc_log_error("Error occured in generating vlan map id"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string vtn_vbr_vlan_update = generate_string_for_vector(vtn_name_req, vbr_name_req, map_id); if (vtn_vbr_vlan_update.empty()) { pfc_log_error("vtn/vbr/switch id is empty in %s", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } update_vector(ctr_ptr, vtn_vbr_vlan_update); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Deletes particular entry from vlan-map vector @@ -833,13 +835,10 @@ OdcVbrVlanMapCommand::generate_vlanid_from_vector(unc::driver::controller *ctr, } // Delete Command for vbr vlan-map -drv_resp_code_t OdcVbrVlanMapCommand::delete_cmd(key_vlan_map_t& - vlanmap_key, - val_vlan_map_t& - vlanmap_val, - unc::driver - ::controller* - ctr_ptr) { +UncRespCode OdcVbrVlanMapCommand::delete_cmd( + key_vlan_map_t& vlanmap_key, + pfcdrv_val_vlan_map_t& vlanmap_val, + unc::driver::controller* ctr_ptr) { ODC_FUNC_TRACE; PFC_ASSERT(ctr_ptr != NULL); @@ -861,7 +860,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::delete_cmd(key_vlan_map_t& if (ret_val != ODC_DRV_SUCCESS) { pfc_log_error("%s: Validation for logical_port[%s] failed ", PFC_FUNCNAME, logical_portid_req.c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string switch_id = logical_portid_req; pfc_log_debug(" Logical port id received %s", logical_portid_req.c_str()); @@ -877,7 +876,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::delete_cmd(key_vlan_map_t& vlanmap_key, logical_portid_req); if (str_vlan_id.empty()) { pfc_log_error("%s: Empty vlan id returned", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } str_mapping_id.append(PERIOD); str_mapping_id.append(str_vlan_id); @@ -890,7 +889,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::delete_cmd(key_vlan_map_t& if (vbr_vlanmap_url.empty()) { pfc_log_error("%s: vlanmap url is empty", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } vbr_vlanmap_url.append(str_mapping_id); pfc_log_debug("%s: Vlanmap delete URL :%s", PFC_FUNCNAME, @@ -902,7 +901,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::delete_cmd(key_vlan_map_t& vbr_vlanmap_url, restjson::HTTP_METHOD_DELETE, NULL, conf_file_values_); if (NULL == response) { pfc_log_error("%s: Error Occured while getting httpresponse", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("%s: Response code from Ctrl for delete vlanmap(%d)", @@ -910,7 +909,7 @@ drv_resp_code_t OdcVbrVlanMapCommand::delete_cmd(key_vlan_map_t& if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("%s: Delete of vlanmap Failed.Response Code %d", PFC_FUNCNAME, resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string vtn_name_req = reinterpret_cast(vlanmap_key.vbr_key.vtn_key.vtn_name); @@ -921,15 +920,16 @@ drv_resp_code_t OdcVbrVlanMapCommand::delete_cmd(key_vlan_map_t& vbr_name_req, str_mapping_id); if (vtn_vbr_vlan_delete.empty()) { pfc_log_error("vtn/vbr/switch id is empty in %s", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } delete_from_vector(ctr_ptr, vtn_vbr_vlan_delete); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Creates request body for vbr vlanmap json_object* OdcVbrVlanMapCommand::create_request_body( - key_vlan_map_t& vlanmap_key, val_vlan_map_t& vlanmap_val, + key_vlan_map_t& vlanmap_key, + pfcdrv_val_vlan_map_t& vlanmap_val, const std::string &logical_port_id) { ODC_FUNC_TRACE; unc::restjson::JsonBuildParse json_obj; @@ -937,13 +937,13 @@ json_object* OdcVbrVlanMapCommand::create_request_body( uint32_t ret_val = 1; std::string vlanid; - if (vlanmap_val.vlan_id == 0xFFFF) { + if (vlanmap_val.vm.vlan_id == 0xFFFF) { pfc_log_debug("%s: Vlan Untagged ", PFC_FUNCNAME); vlanid = "0"; } else { pfc_log_debug("%s: Vlan Tagged ", PFC_FUNCNAME); std::ostringstream convert_vlanid; - convert_vlanid << vlanmap_val.vlan_id; + convert_vlanid << vlanmap_val.vm.vlan_id; vlanid.append(convert_vlanid.str()); } pfc_log_debug("%s: Vlanid: %s", PFC_FUNCNAME, vlanid.c_str()); diff --git a/coordinator/modules/odcdriver/odc_vbrif.cc b/coordinator/modules/odcdriver/odc_vbrif.cc index ed2120fa..5b6a4f81 100644 --- a/coordinator/modules/odcdriver/odc_vbrif.cc +++ b/coordinator/modules/odcdriver/odc_vbrif.cc @@ -281,7 +281,7 @@ std::string OdcVbrIfCommand::get_vbrif_url(key_vbr_if_t& vbrif_key) { // Create Command for vbrif -drv_resp_code_t OdcVbrIfCommand::create_cmd(key_vbr_if_t& vbrif_key, +UncRespCode OdcVbrIfCommand::create_cmd(key_vbr_if_t& vbrif_key, pfcdrv_val_vbr_if_t& vbrif_val, unc::driver::controller* ctr_ptr) { @@ -290,7 +290,7 @@ drv_resp_code_t OdcVbrIfCommand::create_cmd(key_vbr_if_t& vbrif_key, std::string vbrif_url = get_vbrif_url(vbrif_key); if (vbrif_url.empty()) { pfc_log_error("vbrif url is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object* vbrif_json_request_body = create_request_body(vbrif_val); json_object* port_map_json_req_body = NULL; @@ -306,7 +306,7 @@ drv_resp_code_t OdcVbrIfCommand::create_cmd(key_vbr_if_t& vbrif_key, vbrif_val.val_vbrif.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]) { pfc_log_error("portmap - logical port valid flag is not set"); json_object_put(vbrif_json_request_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string logical_port_id = reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id); @@ -315,14 +315,14 @@ drv_resp_code_t OdcVbrIfCommand::create_cmd(key_vbr_if_t& vbrif_key, if (logical_port_retval != ODC_DRV_SUCCESS) { pfc_log_error("logical port id is Invalid"); json_object_put(vbrif_json_request_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } port_map_json_req_body = create_request_body_port_map(vbrif_val, logical_port_id); if (json_object_is_type(port_map_json_req_body, json_type_null)) { pfc_log_error("request body is null"); json_object_put(vbrif_json_request_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } port_map_req_body = json_obj.get_string(port_map_json_req_body); pfc_log_debug("%s request body for portmap ", port_map_req_body); @@ -339,14 +339,14 @@ drv_resp_code_t OdcVbrIfCommand::create_cmd(key_vbr_if_t& vbrif_key, if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); json_object_put(port_map_json_req_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("Response code from Ctl for vbrif create_cmd: %d", resp_code); if (HTTP_201_RESP_CREATED != resp_code) { pfc_log_error("create vbrif is not success , resp_code %d", resp_code); json_object_put(port_map_json_req_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // VBR_IF successful...Check for PortMap if (vbrif_val.val_vbrif.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { @@ -359,21 +359,21 @@ drv_resp_code_t OdcVbrIfCommand::create_cmd(key_vbr_if_t& vbrif_key, json_object_put(port_map_json_req_body); if (NULL == port_map_response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = port_map_response->code; if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("port map update is not success,rep_code: %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } else { pfc_log_debug("No Port map"); } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Update command for vbrif command -drv_resp_code_t OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, +UncRespCode OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, pfcdrv_val_vbr_if_t& val, unc::driver::controller *ctr_ptr) { @@ -381,7 +381,7 @@ drv_resp_code_t OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, PFC_ASSERT(ctr_ptr != NULL); std::string vbrif_url = get_vbrif_url(vbrif_key); if (vbrif_url.empty()) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } json_object* vbrif_json_request_body = create_request_body(val); json_object* port_map_json_req_body = NULL; @@ -397,7 +397,7 @@ drv_resp_code_t OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, val.val_vbrif.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]) { pfc_log_error("portmap - logical port valid flag is not set"); json_object_put(vbrif_json_request_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string logical_port_id = reinterpret_cast(val.val_vbrif.portmap.logical_port_id); @@ -406,13 +406,13 @@ drv_resp_code_t OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, if (logical_port_retval != ODC_DRV_SUCCESS) { json_object_put(vbrif_json_request_body); pfc_log_error("logical port id is invalid"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } port_map_json_req_body = create_request_body_port_map(val, logical_port_id); if (json_object_is_type(port_map_json_req_body, json_type_null)) { pfc_log_error("port map req body is null"); json_object_put(vbrif_json_request_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } port_map_req_body = json_obj.get_string(port_map_json_req_body); pfc_log_debug("%s request body for portmap ", port_map_req_body); @@ -430,14 +430,14 @@ drv_resp_code_t OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); json_object_put(port_map_json_req_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("Response code from Ctl for update vbrif : %d ", resp_code); if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("update vbrif is not successful %d", resp_code); json_object_put(port_map_json_req_body); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t port_map_resp_code = ODC_DRV_FAILURE; @@ -455,12 +455,12 @@ drv_resp_code_t OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, json_object_put(port_map_json_req_body); if (NULL == port_map_response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } port_map_resp_code = port_map_response->code; if (HTTP_200_RESP_OK != port_map_resp_code) { pfc_log_error("update portmap is not successful %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } else if ((val.val_vbrif.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID_NO_VALUE) && (val.valid[PFCDRV_IDX_VAL_VBRIF] == UNC_VF_VALID)) { @@ -472,20 +472,20 @@ drv_resp_code_t OdcVbrIfCommand::update_cmd(key_vbr_if_t& vbrif_key, if (NULL == port_map_response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } port_map_resp_code = port_map_response->code; if (HTTP_200_RESP_OK != port_map_resp_code) { pfc_log_error("delete portmap is not successful %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } pfc_log_debug("Response code from Ctl for portmap:%d", port_map_resp_code); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Delete Command for vbr if -drv_resp_code_t OdcVbrIfCommand::delete_cmd(key_vbr_if_t& vbrif_key, +UncRespCode OdcVbrIfCommand::delete_cmd(key_vbr_if_t& vbrif_key, pfcdrv_val_vbr_if_t& val, unc::driver::controller* ctr_ptr) { ODC_FUNC_TRACE; @@ -495,7 +495,7 @@ drv_resp_code_t OdcVbrIfCommand::delete_cmd(key_vbr_if_t& vbrif_key, pfc_log_debug("vbrif_url:%s", vbrif_url.c_str()); if (vbrif_url.empty()) { pfc_log_error("brif url is empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::restjson::RestUtil rest_util_obj(ctr_ptr->get_host_address(), @@ -505,15 +505,15 @@ drv_resp_code_t OdcVbrIfCommand::delete_cmd(key_vbr_if_t& vbrif_key, restjson::HTTP_METHOD_DELETE, NULL, conf_file_values_); if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("Response code from Ctl for delete vbrif : %d ", resp_code); if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("delete vbrif is not successful %d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Creates request body for vbr if @@ -550,7 +550,7 @@ json_object* OdcVbrIfCommand::create_request_body( } // fetch child configurations for the parent kt(vbr) -drv_resp_code_t OdcVbrIfCommand::fetch_config(unc::driver::controller* ctr, +UncRespCode OdcVbrIfCommand::fetch_config(unc::driver::controller* ctr, void* parent_key, std::vector &cfgnode_vector) { @@ -570,14 +570,14 @@ drv_resp_code_t OdcVbrIfCommand::fetch_config(unc::driver::controller* ctr, } // Getting vbridge child if available -drv_resp_code_t OdcVbrIfCommand::get_vbrif_list(std::string vtn_name, +UncRespCode OdcVbrIfCommand::get_vbrif_list(std::string vtn_name, std::string vbr_name, unc::driver::controller* ctr, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { ODC_FUNC_TRACE; PFC_ASSERT(ctr != NULL); if ((0 == strlen(vtn_name.c_str())) || (0 == strlen(vbr_name.c_str()))) { pfc_log_error("Empty vtn / vbr name"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string url = ""; url.append(BASE_URL); @@ -596,26 +596,26 @@ drv_resp_code_t OdcVbrIfCommand::get_vbrif_list(std::string vtn_name, if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("Response code from Ctlfor get vbrif : %d ", resp_code); if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("rest_util_obj send_request fail"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (NULL != response->write_data) { if (NULL != response->write_data->memory) { char *data = response->write_data->memory; - drv_resp_code_t parse_ret = DRVAPI_RESPONSE_FAILURE; + UncRespCode parse_ret = UNC_DRV_RC_ERR_GENERIC; parse_ret = parse_vbrif_response(vtn_name, vbr_name, url, ctr, data, cfgnode_vector); return parse_ret; } } - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } -drv_resp_code_t OdcVbrIfCommand::parse_vbrif_response(std::string vtn_name, +UncRespCode OdcVbrIfCommand::parse_vbrif_response(std::string vtn_name, std::string vbr_name, std::string url, unc::driver::controller* ctr, char *data, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { @@ -624,7 +624,7 @@ drv_resp_code_t OdcVbrIfCommand::parse_vbrif_response(std::string vtn_name, get_json_object(data); if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("json_object_is_null"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t array_length = 0; json_object *json_obj_vbrif = NULL; @@ -634,13 +634,13 @@ drv_resp_code_t OdcVbrIfCommand::parse_vbrif_response(std::string vtn_name, if (json_object_is_type(json_obj_vbrif, json_type_null)) { pfc_log_error("json vbrif is null"); json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (restjson::REST_OP_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("JsonBuildParse::parse fail"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (json_object_is_type(json_obj_vbrif, json_type_array)) { array_length = restjson::JsonBuildParse::get_array_length(jobj, @@ -648,18 +648,18 @@ drv_resp_code_t OdcVbrIfCommand::parse_vbrif_response(std::string vtn_name, } pfc_log_debug("interface array_length:%d", array_length); - drv_resp_code_t resp_code = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code = UNC_DRV_RC_ERR_GENERIC; for (uint32_t arr_idx = 0; arr_idx < array_length; arr_idx++) { pfc_log_debug("inside array_length for loop"); resp_code = fill_config_node_vector(vtn_name, vbr_name, json_obj_vbrif, arr_idx, url, ctr, cfgnode_vector); - if (DRVAPI_RESPONSE_FAILURE == resp_code) { + if (UNC_DRV_RC_ERR_GENERIC == resp_code) { json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Reading port-map from active controller json_object* OdcVbrIfCommand::read_portmap(unc::driver::controller* ctr, @@ -695,7 +695,7 @@ json_object* OdcVbrIfCommand::read_portmap(unc::driver::controller* ctr, return NULL; } -drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, +UncRespCode OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, std::string vbr_name, json_object *json_obj, uint32_t arr_idx, std::string url, unc::driver::controller* ctr, std::vector< unc::vtndrvcache::ConfigNode *> &cfgnode_vector) { @@ -713,19 +713,19 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, arr_idx, name); if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("JsonBuildParse::parse fail."); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("vbr_if name: %s", name.c_str()); if (strlen(name.c_str()) == 0) { pfc_log_error("NO vbr_if name"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = unc::restjson::JsonBuildParse::parse(json_obj, "description", arr_idx, description); if (restjson::REST_OP_SUCCESS != ret_val) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("vbr_if description: %s", description.c_str()); // Fills the vbrif KEY structure @@ -758,7 +758,7 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, "enabled", arr_idx, admin_status); if (restjson::REST_OP_SUCCESS != ret_val) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } val_vbr_if.val_vbrif.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID; @@ -774,7 +774,7 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, json_object *jobj = read_portmap(ctr, url, resp_code); if (0 == resp_code) { pfc_log_error("Error while reading portmap"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("Response code from Ctl for portmap read : %d ", resp_code); if (HTTP_204_NO_CONTENT == resp_code) { @@ -785,7 +785,7 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, unc::restjson::JsonBuildParse::get_string(jobj)); if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("null jobj no portmap"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } else { val_vbr_if.val_vbrif.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; std::string vlanid = "0"; @@ -794,7 +794,7 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, if (restjson::REST_OP_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_debug("vlan parse error"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("vlan id in portmap read %s", vlanid.c_str()); if (0 == atoi(vlanid.c_str())) { @@ -819,14 +819,14 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_debug("node is null"); json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = unc::restjson::JsonBuildParse::parse(jobj, "port", -1, jobj_port); if (restjson::REST_OP_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_debug("Parsing error in port"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string node_id = ""; std::string port_name = ""; @@ -835,22 +835,22 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, if ((json_object_is_type(jobj_node, json_type_null)) || (json_object_is_type(jobj_port, json_type_null))) { pfc_log_error("node or port json object is null"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = unc::restjson::JsonBuildParse::parse(jobj_node, "id", -1, node_id); - if (ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_debug("id parse error"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = unc::restjson::JsonBuildParse::parse(jobj_port, "name", -1, port_name); if (restjson::REST_OP_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_debug("name parse error"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } logical_port.append(node_id); logical_port.append(HYPHEN); @@ -872,7 +872,7 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, } else { pfc_log_error("Error in response code while reading port map:%d", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc::vtndrvcache::ConfigNode *cfgptr = @@ -883,7 +883,7 @@ drv_resp_code_t OdcVbrIfCommand::fill_config_node_vector(std::string vtn_name, uint32_t(UNC_OP_READ)); PFC_ASSERT(cfgptr != NULL); cfgnode_vector.push_back(cfgptr); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } } // namespace odcdriver } // namespace unc diff --git a/coordinator/modules/odcdriver/odc_vtn.cc b/coordinator/modules/odcdriver/odc_vtn.cc index 0b150644..a9f44e5d 100644 --- a/coordinator/modules/odcdriver/odc_vtn.cc +++ b/coordinator/modules/odcdriver/odc_vtn.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -26,7 +26,7 @@ OdcVtnCommand::~OdcVtnCommand() { // Constructs command to create Vtn and send it to rest interface to send to // controller -drv_resp_code_t OdcVtnCommand::create_cmd(key_vtn_t& key_vtn, +UncRespCode OdcVtnCommand::create_cmd(key_vtn_t& key_vtn, val_vtn_t& val_vtn, unc::driver::controller *ctr_ptr) { ODC_FUNC_TRACE; @@ -41,7 +41,7 @@ drv_resp_code_t OdcVtnCommand::create_cmd(key_vtn_t& key_vtn, vtnname = reinterpret_cast(key_vtn.vtn_name); if (0 == strlen(vtnname)) { pfc_log_error("Empty vtn name in %s", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } url.append(vtnname); unc::restjson::JsonBuildParse json_obj; @@ -61,14 +61,14 @@ drv_resp_code_t OdcVtnCommand::create_cmd(key_vtn_t& key_vtn, json_object_put(jobj_req_body); if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("response code returned in create vtn is %d", resp_code); if (HTTP_201_RESP_CREATED != resp_code) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Creates Request Body @@ -81,7 +81,7 @@ json_object* OdcVtnCommand::create_request_body(const val_vtn_t& val_vtn) { if (UNC_VF_VALID == val_vtn.valid[UPLL_IDX_DESC_VTN]) { if (0 != strlen(description)) { ret_val = json_obj.build("description", description, jobj); - if (ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_error("Error occured in request body build %s", PFC_FUNCNAME); json_object_put(jobj); return NULL; @@ -109,7 +109,7 @@ json_object* OdcVtnCommand::create_request_body(const val_vtn_t& val_vtn) { } // Command to update vtn and Send request to Controller -drv_resp_code_t OdcVtnCommand::update_cmd(key_vtn_t& key_vtn, +UncRespCode OdcVtnCommand::update_cmd(key_vtn_t& key_vtn, val_vtn_t& val_vtn, unc::driver::controller *ctr_ptr) { ODC_FUNC_TRACE; @@ -123,7 +123,7 @@ drv_resp_code_t OdcVtnCommand::update_cmd(key_vtn_t& key_vtn, vtnname = reinterpret_cast(key_vtn.vtn_name); if (0 == strlen(vtnname)) { pfc_log_error("Empty vtn name in : %s", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } url.append(vtnname); unc::restjson::JsonBuildParse json_obj; @@ -145,18 +145,18 @@ drv_resp_code_t OdcVtnCommand::update_cmd(key_vtn_t& key_vtn, json_object_put(jobj_request); if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("response code returned in updatevtn is %d", resp_code); if (HTTP_200_RESP_OK != resp_code) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // fetch all child configuration for the parent key type(root) -drv_resp_code_t OdcVtnCommand::fetch_config(unc::driver::controller* ctr, +UncRespCode OdcVtnCommand::fetch_config(unc::driver::controller* ctr, void* parent_key, std::vector &cfgnode_vector) { @@ -165,7 +165,7 @@ drv_resp_code_t OdcVtnCommand::fetch_config(unc::driver::controller* ctr, } // Gets the Controller Response code -drv_resp_code_t OdcVtnCommand::get_vtn_list(unc::driver::controller* ctr, +UncRespCode OdcVtnCommand::get_vtn_list(unc::driver::controller* ctr, std::vector &cfgnode_vector) { ODC_FUNC_TRACE; @@ -182,28 +182,28 @@ drv_resp_code_t OdcVtnCommand::get_vtn_list(unc::driver::controller* ctr, if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse -- "); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; if (HTTP_200_RESP_OK != resp_code) { pfc_log_error("%d error resp ", resp_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (NULL != response->write_data) { if (NULL != response->write_data->memory) { char *data = response->write_data->memory; pfc_log_debug("vtns present : %s", data); - drv_resp_code_t ret_val = parse_vtn_response(data, cfgnode_vector); + UncRespCode ret_val = parse_vtn_response(data, cfgnode_vector); pfc_log_debug("read_all_-- size, %d", static_cast(cfgnode_vector.size())); return ret_val; } } - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // parse each vtn node append to cache -drv_resp_code_t OdcVtnCommand::fill_config_node_vector( +UncRespCode OdcVtnCommand::fill_config_node_vector( json_object *json_obj_vtn, int arr_idx, std::vector &cfgnode_vector) { ODC_FUNC_TRACE; @@ -218,16 +218,16 @@ drv_resp_code_t OdcVtnCommand::fill_config_node_vector( uint32_t ret_val = restjson::JsonBuildParse::parse(json_obj_vtn, "name", arr_idx, vtn_name); pfc_log_debug(" vtn_name %s:", vtn_name.c_str()); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_debug(" Error while parsing vtn name"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } ret_val = restjson::JsonBuildParse::parse(json_obj_vtn, "description", arr_idx, vtn_description); pfc_log_debug(" vtn_description %s:", vtn_description.c_str()); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { pfc_log_debug(" Error while parsing vtn description"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Fills Key Structure strncpy(reinterpret_cast (key_vtn.vtn_name), vtn_name.c_str(), @@ -251,11 +251,11 @@ drv_resp_code_t OdcVtnCommand::fill_config_node_vector( (&key_vtn, &val_vtn, uint32_t(UNC_OP_READ)); PFC_ASSERT(cfgptr != NULL); cfgnode_vector.push_back(cfgptr); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // parsing function for converting controller response to driver format -drv_resp_code_t OdcVtnCommand::parse_vtn_response(char *data, +UncRespCode OdcVtnCommand::parse_vtn_response(char *data, std::vector< unc::vtndrvcache ::ConfigNode *> &cfgnode_vector) { @@ -264,7 +264,7 @@ drv_resp_code_t OdcVtnCommand::parse_vtn_response(char *data, if (json_object_is_type(jobj, json_type_null)) { pfc_log_error("json_object_is_type error"); json_object_put(jobj); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t array_length =0; json_object *json_obj_vtn = NULL; @@ -274,12 +274,12 @@ drv_resp_code_t OdcVtnCommand::parse_vtn_response(char *data, if (json_object_is_type(json_obj_vtn, json_type_null)) { json_object_put(jobj); pfc_log_error("Parsing Error json_obj_vtn is null"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (restjson::REST_OP_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("Error in parsing the json_obj_vtn"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (json_object_is_type(json_obj_vtn, json_type_array)) { array_length = restjson::JsonBuildParse::get_array_length(jobj, "vtn"); @@ -288,23 +288,23 @@ drv_resp_code_t OdcVtnCommand::parse_vtn_response(char *data, if (0 == array_length) { pfc_log_debug("inside 0==arraylength"); json_object_put(jobj); - return DRVAPI_RESPONSE_NO_SUCH_INSTANCE; + return UNC_RC_NO_SUCH_INSTANCE; } for (uint32_t arr_idx = 0; arr_idx < array_length; arr_idx++) { - drv_resp_code_t ret_val = fill_config_node_vector(json_obj_vtn, arr_idx, + UncRespCode ret_val = fill_config_node_vector(json_obj_vtn, arr_idx, cfgnode_vector); - if (DRVAPI_RESPONSE_SUCCESS != ret_val) { + if (UNC_RC_SUCCESS != ret_val) { json_object_put(jobj); pfc_log_error("Error return from parse_vtn_append_vector failure"); return ret_val; } } json_object_put(jobj); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Delete Request send to the Contoller -drv_resp_code_t OdcVtnCommand::delete_cmd(key_vtn_t& key_vtn, +UncRespCode OdcVtnCommand::delete_cmd(key_vtn_t& key_vtn, val_vtn_t& val_vtn, unc::driver::controller *ctr_ptr) { ODC_FUNC_TRACE; @@ -318,7 +318,7 @@ drv_resp_code_t OdcVtnCommand::delete_cmd(key_vtn_t& key_vtn, vtnname = reinterpret_cast(key_vtn.vtn_name); if (0 == strlen(vtnname)) { pfc_log_error("Empty vtn name in %s", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } url.append(vtnname); @@ -329,14 +329,14 @@ drv_resp_code_t OdcVtnCommand::delete_cmd(key_vtn_t& key_vtn, if (NULL == response) { pfc_log_error("Error Occured while getting httpresponse"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } int resp_code = response->code; pfc_log_debug("response code returned in delete vtn is %d", resp_code); if (HTTP_200_RESP_OK != resp_code) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } } // namespace odcdriver } // namespace unc diff --git a/coordinator/modules/tc/include/tc_db_handler.hh b/coordinator/modules/tc/include/tc_db_handler.hh index 1e6f9afe..5bf62079 100644 --- a/coordinator/modules/tc/include/tc_db_handler.hh +++ b/coordinator/modules/tc/include/tc_db_handler.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -43,9 +43,11 @@ class TcDbHandler { TcOperRet GetConfTable(pfc_bool_t* auto_save); /*methods to access TC_RECOVERY_TABLE*/ TcOperRet UpdateRecoveryTable(unc_keytype_datatype_t data_base, - TcServiceType operation); + TcServiceType operation, + uint32_t failover_instance = 0); TcOperRet GetRecoveryTable(unc_keytype_datatype_t* db, - TcServiceType* oper); + TcServiceType* oper, + uint32_t* failover_instance); /*checks whether the row exists with a value*/ TcOperRet IsRowExists(std::string table_name, std::string attribute); diff --git a/coordinator/modules/tc/include/tc_lock.hh b/coordinator/modules/tc/include/tc_lock.hh index 63196d49..66e40c44 100644 --- a/coordinator/modules/tc/include/tc_lock.hh +++ b/coordinator/modules/tc/include/tc_lock.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -104,7 +104,7 @@ class TcLock { /* State based methods */ TcLockRet TcOperationIsAllowed(uint32_t session_id, TcOperation operation); }; -} -} /* unc */ +} // namespace tc +} // namespace unc #endif // __UNC_TC_LOCK_HH__ diff --git a/coordinator/modules/tc/include/tc_module.hh b/coordinator/modules/tc/include/tc_module.hh index 11d1a97c..bdf994c1 100644 --- a/coordinator/modules/tc/include/tc_module.hh +++ b/coordinator/modules/tc/include/tc_module.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -108,8 +108,8 @@ class TcModule : public pfc::core::Module, public UncStateHandler { TcTaskqUtil* audit_q_; /* DB DSN NAME */ std::string dsn_name; - /* DB DRV NAME */ - std::string drv_name; + /*Max Failover instance*/ + uint32_t max_failover_instance_; }; } // namespace tc } // namespace unc diff --git a/coordinator/modules/tc/include/tc_module_data.hh b/coordinator/modules/tc/include/tc_module_data.hh index 95c891ca..6bb851da 100644 --- a/coordinator/modules/tc/include/tc_module_data.hh +++ b/coordinator/modules/tc/include/tc_module_data.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -21,12 +21,11 @@ namespace tc { const std::string tc_conf_block="tc_db_params"; - const std::string tc_conf_db_dsn_name_param="tc_db_dsn_name"; const std::string tc_def_db_dsn_name_value="UNC_DB_DSN"; -const std::string tc_conf_db_drv_name_param="tc_db_driver"; -const std::string tc_def_db_drv_name_value="UNC_DB_DRIVER"; +const std::string max_failover_instance_param="max_failover_instance"; +const uint32_t max_failover_instance_value = 4; const uint32_t TC_READ_CONCURRENCY = 1; const uint32_t TC_AUDIT_CONCURRENCY = 1; @@ -36,7 +35,8 @@ typedef enum { TC_INIT = 1, TC_ACT, TC_SBY, - TC_STOP + TC_STOP, + TC_ACT_FAIL }TcState; /* TC Main Operations */ @@ -344,22 +344,11 @@ class TcReadWriteLock { TC_DRV_OPENFLOW, TC_DRV_OVERLAY, TC_DRV_ODL - //TC_DRV_LEGACY + // TC_DRV_LEGACY }; typedef std::map TcChannelNameMap; - - typedef struct { - std::string tc_db_driver; - std::string tc_db_dsn_name; - std::string tc_db_access_username; - std::string tc_db_access_password; - uint32_t tc_db_port_number; - uint32_t tc_db_conn_type; - uint32_t tc_db_timeout; - uint32_t tc_db_conn_timeout; - } TcDbParams; -} -} /* unc */ +} // namespace tc +} // namespace unc #endif // __UNC_TC_LOCK_HH__ diff --git a/coordinator/modules/tc/include/tc_operations.hh b/coordinator/modules/tc/include/tc_operations.hh index 3f0507b1..2e363100 100644 --- a/coordinator/modules/tc/include/tc_operations.hh +++ b/coordinator/modules/tc/include/tc_operations.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -65,6 +65,9 @@ class TcOperations { /* To Track Operation and Revoke if needed */ TcOperEnum tc_oper_status_; + /*flag is set when Audit DB fails in startup phase*/ + pfc_bool_t audit_db_fail_; + TcOperations(TcLock* tclock, pfc::core::ipc::ServerSession* sess, @@ -156,15 +159,16 @@ class TcStartUpOperations: public TcOperations { TcOperStatus TcCreateMsgList(); TcOperStatus FillTcMsgData(TcMsg*, TcMsgOperType); TcOperStatus HandleArgs(); - TcOperStatus HandleLockRet(TcLockRet LockRet); + TcOperStatus HandleLockRet(TcLockRet LockRet); TcOperStatus SendAdditionalResponse(TcOperStatus oper_stat); TcOperStatus SendResponse(TcOperStatus oper_status); + TcOperStatus SendAuditDBFailNotice(uint32_t alarm_id); }; /* - * @brief TcDbOperations + * @brief TcDbOperations * Provides Methods to handle - * DB operations (Save/Clear StartUp) + * DB operations (Save/Clear StartUp) * requests from user */ class TcDbOperations: public TcOperations { @@ -297,6 +301,7 @@ class TcAuditOperations: public TcOperations { unc::tclib::TcAuditResult audit_result_; unc::tclib::TcTransEndResult trans_result_; pfc_bool_t api_audit_; + pfc_bool_t force_reconnect_; TcAuditOperations(TcLock* tclock, pfc::core::ipc::ServerSession* sess, diff --git a/coordinator/modules/tc/include/tcmsg.hh b/coordinator/modules/tc/include/tcmsg.hh index c0873bcf..39401257 100644 --- a/coordinator/modules/tc/include/tcmsg.hh +++ b/coordinator/modules/tc/include/tcmsg.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -77,6 +77,7 @@ class TcMsg { TcOperRet SetAuditResult(tclib::TcAuditResult result); tclib::TcTransEndResult GetTransResult(); TcOperRet SetTransResult(tclib::TcTransEndResult result); + virtual void SetReconnect(pfc_bool_t force_reconnect) {} /*method to send response to VTN*/ TcOperRet ForwardResponseInternal(pfc::core::ipc::ServerSession& srv_sess, pfc::core::ipc::ClientSession* clnt_sess, diff --git a/coordinator/modules/tc/include/tcmsg_audit.hh b/coordinator/modules/tc/include/tcmsg_audit.hh index 59e7b36b..5e748d9e 100644 --- a/coordinator/modules/tc/include/tcmsg_audit.hh +++ b/coordinator/modules/tc/include/tcmsg_audit.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -40,6 +40,9 @@ class AuditTransaction : public TcMsgAudit { public: AuditTransaction(uint32_t sess_id, unc::tclib::TcMsgOperType oper); TcOperRet Execute(); + void SetReconnect(pfc_bool_t force_reconnect); + + pfc_bool_t reconnect_controller_; protected: TcOperRet SendRequest(std::string channel_name); diff --git a/coordinator/modules/tc/tc.cfdef b/coordinator/modules/tc/tc.cfdef index c605052b..4438ef79 100644 --- a/coordinator/modules/tc/tc.cfdef +++ b/coordinator/modules/tc/tc.cfdef @@ -1,5 +1,5 @@ % -% Copyright (c) 2012-2013 NEC Corporation +% Copyright (c) 2012-2014 NEC Corporation % All rights reserved. % % This program and the accompanying materials are made available under the @@ -12,4 +12,5 @@ %% defblock tc_db_params{ tc_db_dsn_name = STRING: max=63; + max_failover_instance = UINT32; } diff --git a/coordinator/modules/tc/tc.conf b/coordinator/modules/tc/tc.conf index 9d38fc58..dfd82de1 100644 --- a/coordinator/modules/tc/tc.conf +++ b/coordinator/modules/tc/tc.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -13,4 +13,5 @@ tc_db_params { tc_db_dsn_name = "UNC_DB_DSN"; + max_failover_instance = 1; } diff --git a/coordinator/modules/tc/tc_audit_operations.cc b/coordinator/modules/tc/tc_audit_operations.cc index 02ed5cc8..2fd2c513 100644 --- a/coordinator/modules/tc/tc_audit_operations.cc +++ b/coordinator/modules/tc/tc_audit_operations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,7 +15,7 @@ namespace unc { namespace tc { -#define UNC_AUDIT_OPS_ARG_COUNT 3 +#define UNC_AUDIT_OPS_ARG_COUNT 4 TcAuditOperations::TcAuditOperations(TcLock* tc_lock_, @@ -30,7 +30,8 @@ TcAuditOperations::TcAuditOperations(TcLock* tc_lock_, audit_handle_(audit_), audit_result_(unc::tclib::TC_AUDIT_FAILURE), trans_result_(unc::tclib::TRANS_END_FAILURE), - api_audit_(PFC_FALSE) {} + api_audit_(PFC_FALSE), + force_reconnect_(PFC_FALSE) {} TcAuditOperations::~TcAuditOperations() { if (resp_tc_msg_) { @@ -116,24 +117,33 @@ TcOperStatus TcAuditOperations::TcValidateOperType() { * @brief check for valid Operation Paramaters */ TcOperStatus TcAuditOperations::TcValidateOperParams() { - TcUtilRet ret; + TcUtilRet ret = TCUTIL_RET_SUCCESS, ret1 = TCUTIL_RET_SUCCESS; + uint8_t reconnect = 0; if ( tc_oper_ == TC_OP_USER_AUDIT ) { ret= TcServerSessionUtils::get_string(ssess_, TC_REQ_ARG_INDEX, controller_id_); + ret1= TcServerSessionUtils::get_uint8(ssess_, + TC_REQ_ARG_INDEX+1, + &reconnect); } else { ret= TcServerSessionUtils::get_string(ssess_, TC_REQ_SESSION_ID_INDEX, controller_id_); } - if ( ret == TCUTIL_RET_FAILURE ) { + if (ret == TCUTIL_RET_FAILURE || ret1 == TCUTIL_RET_FAILURE) { return TC_OPER_INVALID_INPUT; - } else if ( ret == TCUTIL_RET_FATAL ) { + } else if (ret == TCUTIL_RET_FATAL || ret1 == TCUTIL_RET_FATAL) { return TC_OPER_FAILURE; } + if ( controller_id_.length() == 0 ) { return TC_OPER_INVALID_INPUT; } + /*force-reconnect option*/ + force_reconnect_ = (pfc_bool_t)reconnect; + pfc_log_info("controller %s force_reconnect %d", + controller_id_.c_str(), force_reconnect_); uint8_t read_drv_id = 0; if ( tc_oper_ == TC_OP_DRIVER_AUDIT ) { @@ -249,8 +259,7 @@ pfc_bool_t TcAuditOperations::GetDriverType() { driver_id_ = tc_drv_msg->GetResult(); if ( driver_id_ == UNC_CT_UNKNOWN ) { pfc_log_error("Controller of Unknown type"); - delete tc_drv_msg; - tc_drv_msg = NULL; + resp_tc_msg_ = tc_drv_msg; return PFC_FALSE; } delete tc_drv_msg; @@ -414,11 +423,14 @@ TcOperStatus TcAuditOperations::FillTcMsgData(TcMsg* tc_msg, if ( oper_type == unc::tclib::MSG_GET_DRIVERID ) { tc_msg->SetData(0, controller_id_, UNC_CT_UNKNOWN); } else { - if ( driver_id_ == UNC_CT_UNKNOWN ) { - return TC_OPER_INVALID_INPUT; - } + if ( driver_id_ == UNC_CT_UNKNOWN ) { + return TC_OPER_INVALID_INPUT; + } tc_msg->SetData(0, controller_id_, driver_id_); } + if (oper_type == unc::tclib::MSG_AUDIT_START) { + tc_msg->SetReconnect(force_reconnect_); + } if (oper_type == unc::tclib::MSG_AUDIT_TRANS_END) { tc_msg->SetTransResult(trans_result_); } @@ -438,7 +450,7 @@ TcOperStatus TcAuditOperations::Execute() { } if ( GetDriverType() == PFC_FALSE ) { - return TC_OPER_INVALID_INPUT; + return TC_OPER_ABORT; } pfc_log_info("Driver Type %d", driver_id_); @@ -492,6 +504,8 @@ TcAuditOperations::SendAdditionalResponse(TcOperStatus oper_stat) { if ( api_audit_ == PFC_TRUE ) { return oper_stat; } + if (oper_stat != TC_OPER_SUCCESS) + audit_result_ = unc::tclib::TC_AUDIT_FAILURE; /*Append the status of Audit operation*/ if (SetAuditOperationStatus() != TC_OPER_SUCCESS) { return TC_OPER_FAILURE; diff --git a/coordinator/modules/tc/tc_db_handler.cc b/coordinator/modules/tc/tc_db_handler.cc index cfe476fe..070181be 100644 --- a/coordinator/modules/tc/tc_db_handler.cc +++ b/coordinator/modules/tc/tc_db_handler.cc @@ -480,6 +480,7 @@ TcOperRet TcDbHandler::SetDefaultRecoveryTable() { SQLRETURN SQL_ret; unc_keytype_datatype_t database = UNC_DT_INVALID; TcServiceType oper = TC_OP_INVALID; + int failover_instance = 0; char inttostr[4]; TcOperRet retval = TCOPER_RET_SUCCESS; SQLINTEGER query_length; @@ -492,7 +493,7 @@ TcOperRet TcDbHandler::SetDefaultRecoveryTable() { /*set query*/ set_query.append("INSERT INTO "); set_query.append(RECOVERY_TABLE); - set_query.append("(database,operation,date_time)"); + set_query.append("(database,operation,failover_instance,date_time)"); set_query.append(" VALUES("); snprintf(inttostr, sizeof(database), "%d", database); @@ -500,6 +501,9 @@ TcOperRet TcDbHandler::SetDefaultRecoveryTable() { set_query.append(","); snprintf(inttostr, sizeof(oper), "%d", oper); set_query.append(inttostr); + set_query.append(","); + snprintf(inttostr, sizeof(oper), "%d", failover_instance); + set_query.append(inttostr); set_query.append(",CURRENT_TIMESTAMP);"); SQL_ret = SQLAllocHandle(SQL_HANDLE_STMT, db_conn_handle_, &hstmt_set); @@ -525,7 +529,8 @@ TcOperRet TcDbHandler::SetDefaultRecoveryTable() { /*!\brief updates recovery table * */ TcOperRet TcDbHandler::UpdateRecoveryTable(unc_keytype_datatype_t data_base, - TcServiceType operation) { + TcServiceType operation, + uint32_t failover_instance) { pfc_log_debug("%s entry", __FUNCTION__); SQLRETURN SQL_ret; std::string upd_query; @@ -552,6 +557,9 @@ TcOperRet TcDbHandler::UpdateRecoveryTable(unc_keytype_datatype_t data_base, snprintf(inttostr, sizeof(operation), "%d", operation); upd_query.append(",operation="); upd_query.append(inttostr); + snprintf(inttostr, sizeof(operation), "%d", failover_instance); + upd_query.append(",failover_instance="); + upd_query.append(inttostr); upd_query.append(",date_time=CURRENT_TIMESTAMP WHERE database >= 0;"); SQL_ret = SQLAllocHandle(SQL_HANDLE_STMT, db_conn_handle_, &hstmt_upd); @@ -578,14 +586,15 @@ TcOperRet TcDbHandler::UpdateRecoveryTable(unc_keytype_datatype_t data_base, /*!\brief retrieves data from recovery table * */ TcOperRet TcDbHandler::GetRecoveryTable(unc_keytype_datatype_t* db, - TcServiceType* oper) { + TcServiceType* oper, + uint32_t* failover_instance) { pfc_log_debug("%s entry", __FUNCTION__); SQLRETURN SQL_ret; HSTMT hstmt_get; std::string get_query; - SQLINTEGER dbase, op; + SQLINTEGER dbase, op, fail_inst; SQLINTEGER query_length; - SQLLEN Db_err[2]; + SQLLEN Db_err[3]; TcOperRet retval = TCOPER_RET_SUCCESS; /*validate the row*/ retval = IsRowExists(RECOVERY_TABLE, "database"); @@ -593,7 +602,8 @@ TcOperRet TcDbHandler::GetRecoveryTable(unc_keytype_datatype_t* db, return retval; } /*set query*/ - get_query.append("SELECT database,operation FROM TC_RECOVERY_TABLE"); + get_query.append("SELECT database,operation,failover_instance "); + get_query.append("FROM TC_RECOVERY_TABLE"); SQL_ret = SQLAllocHandle(SQL_HANDLE_STMT, db_conn_handle_, &hstmt_get); if ((SQL_ret != SQL_SUCCESS) && (SQL_ret != SQL_SUCCESS_WITH_INFO)) { @@ -612,6 +622,11 @@ TcOperRet TcDbHandler::GetRecoveryTable(unc_keytype_datatype_t* db, GetErrorReason(SQL_ret, SQL_HANDLE_STMT, hstmt_get); return TCOPER_RET_FAILURE; } + SQL_ret = SQLBindCol(hstmt_get, 3, SQL_C_LONG, &fail_inst, 5, &Db_err[2]); + if ((SQL_ret != SQL_SUCCESS) && (SQL_ret != SQL_SUCCESS_WITH_INFO)) { + GetErrorReason(SQL_ret, SQL_HANDLE_STMT, hstmt_get); + return TCOPER_RET_FAILURE; + } query_length = (SQLINTEGER)get_query.length(); SQL_ret = SQLExecDirect(hstmt_get, @@ -627,11 +642,13 @@ TcOperRet TcDbHandler::GetRecoveryTable(unc_keytype_datatype_t* db, *db = (Db_err[0] == SQL_NULL_DATA) ? UNC_DT_INVALID : (unc_keytype_datatype_t)dbase; *oper = (Db_err[1] == SQL_NULL_DATA) ? TC_OP_INVALID : (TcServiceType)op; + *failover_instance = (Db_err[2] == SQL_NULL_DATA) + ? 1U : (uint32_t)fail_inst; } std::string op_string = ConvertOptoString(*oper); std::string dbase_string = ConvertDbasetoString(*db); - pfc_log_info("db = %s; fail_oper = %s", - dbase_string.c_str(), op_string.c_str()); + pfc_log_info("db = %s; fail_oper = %s, fail_instance = %d", + dbase_string.c_str(), op_string.c_str(), *failover_instance); /* clear all variables */ SQLFreeHandle(SQL_HANDLE_STMT, hstmt_get); get_query.clear(); diff --git a/coordinator/modules/tc/tc_lock.cc b/coordinator/modules/tc/tc_lock.cc index 2d208b80..7b96ab69 100644 --- a/coordinator/modules/tc/tc_lock.cc +++ b/coordinator/modules/tc/tc_lock.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -439,6 +439,7 @@ TcLockRet TcLock::TcOperationIsAllowed(uint32_t session_id, case TC_ACT: break; case TC_SBY: + case TC_ACT_FAIL: if (operation != TC_ACQUIRE_READ_SESSION && operation != TC_ACQUIRE_READ_LOCK_FOR_STATE_TRANSITION) { return TC_LOCK_INVALID_UNC_STATE; diff --git a/coordinator/modules/tc/tc_module.cc b/coordinator/modules/tc/tc_module.cc index b6e4d1cd..9d8a23a2 100644 --- a/coordinator/modules/tc/tc_module.cc +++ b/coordinator/modules/tc/tc_module.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -41,6 +41,9 @@ void TcModule::collect_db_params() { dsn_name = tc_db_block.getString(tc_conf_db_dsn_name_param, tc_def_db_dsn_name_value.c_str()); + + max_failover_instance_ = tc_db_block.getUint32(max_failover_instance_param, + max_failover_instance_value); } /** @@ -101,7 +104,7 @@ pfc_bool_t TcModule::init() { pfc_log_error("Unable to Register State Handlers"); return PFC_FALSE; } - // Read the configuration file + /*Read the configuration file */ collect_db_params(); TcDbHandler tc_db_hdlr_(dsn_name); if (validate_tc_db(&tc_db_hdlr_) == PFC_FALSE) { @@ -190,6 +193,43 @@ pfc_bool_t TcModule::HandleAct(pfc_bool_t is_switch) { TcOperStatus oper_ret(startup_.Dispatch()); if (PFC_EXPECT_FALSE(oper_ret != TC_OPER_SUCCESS)) { + if (PFC_EXPECT_TRUE(startup_.audit_db_fail_ == PFC_TRUE)) { + pfc_log_error("Audit DB failure in switchover"); + /*Get failover instance from DB */ + uint32_t failover_instance; + if (PFC_EXPECT_TRUE(TCOPER_RET_SUCCESS == tc_db_hdlr_->GetRecoveryTable( + &startup_.database_type_, + &startup_.fail_oper_, + &failover_instance))) { + /*increment and update failover instance*/ + tc_db_hdlr_->UpdateRecoveryTable(startup_.database_type_, + startup_.fail_oper_, + ++failover_instance); + startup_.audit_db_fail_ = PFC_FALSE; + + if (PFC_EXPECT_TRUE(failover_instance >= max_failover_instance_)) { + /*sending alarm to usr*/ + if (PFC_EXPECT_TRUE(TC_OPER_SUCCESS != + startup_.SendAuditDBFailNotice(alarm_id))) { + pfc_log_warn("Failed to send AuditDBFailNotification"); + } + + pfc_log_info("Transiting to ACT_FAIL state"); + tc_lock_.TcUpdateUncState(TC_ACT_FAIL); + ret = tc_lock_.ReleaseLock(0, + 0, + TC_RELEASE_READ_LOCK_FOR_STATE_TRANSITION, + TC_WRITE_NONE); + if (PFC_EXPECT_FALSE(ret != TC_LOCK_SUCCESS)) { + pfc_log_fatal("Cannot Release Lock Instance"); + return PFC_FALSE; + } + return PFC_TRUE; + } + } else { + pfc_log_error("could not fetch RecoveryTable attributes"); + } + } pfc_log_fatal("StartUp Operation Failure"); ret = tc_lock_.ReleaseLock(0, 0, @@ -201,11 +241,10 @@ pfc_bool_t TcModule::HandleAct(pfc_bool_t is_switch) { } return PFC_FALSE; } - ret= - tc_lock_.ReleaseLock(0, - 0, - TC_RELEASE_READ_LOCK_FOR_STATE_TRANSITION, - TC_WRITE_NONE); + ret = tc_lock_.ReleaseLock(0, + 0, + TC_RELEASE_READ_LOCK_FOR_STATE_TRANSITION, + TC_WRITE_NONE); if (PFC_EXPECT_FALSE(ret != TC_LOCK_SUCCESS)) { pfc_log_fatal("Cannot Release Lock Instance"); return PFC_FALSE; diff --git a/coordinator/modules/tc/tc_operations.cc b/coordinator/modules/tc/tc_operations.cc index f5e0373c..a066dd56 100644 --- a/coordinator/modules/tc/tc_operations.cc +++ b/coordinator/modules/tc/tc_operations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -290,6 +290,10 @@ TcOperStatus TcOperations::Execute() { if ( MsgRet != TCOPER_RET_SUCCESS ) { delete tcmsg_; tcmsg_ = NULL; + if (*MsgIter == unc::tclib::MSG_AUDITDB) { + /*set when Audit DB fails in startup phase*/ + audit_db_fail_ = PFC_TRUE; + } return HandleMsgRet(MsgRet); } diff --git a/coordinator/modules/tc/tc_startup_operations.cc b/coordinator/modules/tc/tc_startup_operations.cc index 7d824b0f..18e30099 100644 --- a/coordinator/modules/tc/tc_startup_operations.cc +++ b/coordinator/modules/tc/tc_startup_operations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -9,6 +9,8 @@ #include +#include +#include #define UNC_NO_ARGS 0 @@ -38,12 +40,14 @@ uint32_t TcStartUpOperations::TcGetMinArgCount() { * @brief Get Arguments for operation */ TcOperStatus - TcStartUpOperations::HandleArgs() { - if ( is_switch_ == PFC_FALSE ) { - return TC_OPER_SUCCESS; - } +TcStartUpOperations::HandleArgs() { + if ( is_switch_ == PFC_FALSE ) { + return TC_OPER_SUCCESS; + } + uint32_t failover_instance = 0; TcOperRet ret = db_hdlr_->GetRecoveryTable(&database_type_, - &fail_oper_); + &fail_oper_, + &failover_instance); if ( ret != TCOPER_RET_SUCCESS ) { return TC_OPER_FAILURE; } @@ -140,12 +144,10 @@ TcOperStatus TcOperStatus TcStartUpOperations::SendResponse(TcOperStatus ret_) { if (ret_ == TC_OPER_SUCCESS) { - if ( is_switch_ == PFC_TRUE ) { - TcOperRet ret= db_hdlr_->UpdateRecoveryTable(UNC_DT_INVALID, - TC_OP_INVALID); - if ( ret != TCOPER_RET_SUCCESS ) - return TC_SYSTEM_FAILURE; - } + TcOperRet ret= db_hdlr_->UpdateRecoveryTable(UNC_DT_INVALID, + TC_OP_INVALID); + if ( ret != TCOPER_RET_SUCCESS ) + return TC_SYSTEM_FAILURE; } return ret_; } @@ -158,5 +160,51 @@ TcOperStatus return oper_stat; } +/*method to raise alarm for Audit DB failure*/ +TcOperStatus +TcStartUpOperations::SendAuditDBFailNotice(uint32_t alarm_id) { + std::string alm_msg, dbType; + std::string alm_msg_summary; + std::string vtn_name = ""; + pfc::alarm::alarm_info_with_key_t* data = + new pfc::alarm::alarm_info_with_key_t; + + if (database_type_ == UNC_DT_RUNNING) { + alm_msg = "Audit of Running DB failed"; + alm_msg_summary = "Audit of Running DB failed"; + dbType = "DB_Running"; + } else if (database_type_ == UNC_DT_STARTUP) { + alm_msg = "Audit of Startup DB failed"; + alm_msg_summary = "Audit of Startup DB failed"; + dbType = "DB_Startup"; + } else if (database_type_ == UNC_DT_CANDIDATE) { + alm_msg = "Audit of Candidate DB failed"; + alm_msg_summary = "Audit of Candidate DB failed"; + dbType = "DB_Candidate"; + } + data->alarm_class = pfc::alarm::ALM_CRITICAL; + data->alarm_kind = 1; + data->apl_No = UNCCID_TC; + data->alarm_category = 1; + data->alarm_key_size = dbType.length(); + data->alarm_key = new uint8_t[dbType.length()+1]; + memcpy(data->alarm_key, dbType.c_str(), dbType.length()+1); + + pfc::alarm::alarm_return_code_t ret = + pfc::alarm::pfc_alarm_send_with_key(vtn_name, + alm_msg, + alm_msg_summary, + data, alarm_id); + if (ret != pfc::alarm::ALM_OK) { + delete []data->alarm_key; + delete data; + return TC_OPER_FAILURE; + } + delete []data->alarm_key; + delete data; + return TC_OPER_SUCCESS; +} + + } // namespace tc } // namespace unc diff --git a/coordinator/modules/tc/tcmsg.cc b/coordinator/modules/tc/tcmsg.cc index 8a316e43..34c90beb 100644 --- a/coordinator/modules/tc/tcmsg.cc +++ b/coordinator/modules/tc/tcmsg.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -260,7 +260,6 @@ TcOperRet TcMsg::ForwardResponseInternal(pfc::core::ipc::ServerSession& srv_sess, pfc::core::ipc::ClientSession* clnt_sess, pfc_bool_t decr_resp) { - uint32_t respcount = clnt_sess->getResponseCount(); if (PFC_EXPECT_TRUE(respcount == 0)) { pfc_log_info("session is empty"); @@ -273,7 +272,7 @@ TcMsg::ForwardResponseInternal(pfc::core::ipc::ServerSession& srv_sess, } else { to_index = respcount; } - + if (clnt_sess->forwardTo(srv_sess, from_index, to_index) != TCOPER_RET_SUCCESS) { pfc_log_fatal("forwardTo failed!!"); @@ -292,9 +291,9 @@ TcOperRet TcMsg::ForwardResponseToVTN(pfc::core::ipc::ServerSession& srv_sess) { pfc_log_debug("TcMsg::ForwardResponseToVTN() entry"); TcOperRet ret = TCOPER_RET_SUCCESS; - + if (sess_) { - pfc_log_info("forward client session data"); + pfc_log_info("forward client session data"); ret = ForwardResponseInternal(srv_sess, sess_, PFC_FALSE); if (ret != TCOPER_RET_SUCCESS) { pfc_log_info("forwarding session data to VTN failed"); @@ -303,7 +302,7 @@ TcMsg::ForwardResponseToVTN(pfc::core::ipc::ServerSession& srv_sess) { } if (upll_sess_) { - pfc_log_info("forward UPLL session data"); + pfc_log_info("forward UPLL session data"); if (PFC_EXPECT_TRUE(opertype_ == tclib::MSG_AUDIT_GLOBAL)) { /*filtering audit_result of global commit*/ ret = ForwardResponseInternal(srv_sess, upll_sess_, PFC_TRUE); @@ -317,7 +316,7 @@ TcMsg::ForwardResponseToVTN(pfc::core::ipc::ServerSession& srv_sess) { } if (uppl_sess_) { - pfc_log_info("forward UPPL session data"); + pfc_log_info("forward UPPL session data"); if (PFC_EXPECT_TRUE(opertype_ == tclib::MSG_AUDIT_GLOBAL)) { /*filtering audit_result of global commit*/ ret = ForwardResponseInternal(srv_sess, uppl_sess_, PFC_TRUE); diff --git a/coordinator/modules/tc/tcmsg_audit.cc b/coordinator/modules/tc/tcmsg_audit.cc index 0db215f3..969f2804 100644 --- a/coordinator/modules/tc/tcmsg_audit.cc +++ b/coordinator/modules/tc/tcmsg_audit.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -166,7 +166,7 @@ TcMsgAudit::SendAuditTransEndRequest(AbortOnFailVector abort_on_fail_, return TCOPER_RET_FATAL; } /*append data to channel */ - pfc_log_info("notify Audit/TxEnd to %s", channel_name.c_str()); + pfc_log_info("notify AuditTxEnd to %s", channel_name.c_str()); util_resp = tc::TcClientSessionUtils::set_uint8(end_sess, oper); if (PFC_EXPECT_TRUE(util_resp != TCUTIL_RET_SUCCESS)) { TcClientSessionUtils::tc_session_close(&end_sess, conn); @@ -294,7 +294,15 @@ unc_keytype_ctrtype_t GetDriverId::GetResult() { **/ AuditTransaction::AuditTransaction(uint32_t sess_id, tclib::TcMsgOperType oper) -:TcMsgAudit(sess_id, oper) {} +:TcMsgAudit(sess_id , oper), reconnect_controller_(PFC_FALSE) {} + +/*!\brief method to set reconnect option + * @param[in] force_reconnect - option to perforn audit after reconnecting with + * the controller*/ +void AuditTransaction::SetReconnect(pfc_bool_t force_reconnect) { + reconnect_controller_ = force_reconnect; +} + /*!\brief this method sends send Audit/Transaction START/END *request to recipient modules. @@ -336,6 +344,13 @@ AuditTransaction::SendRequest(std::string channel_name) { if (PFC_EXPECT_TRUE(util_resp != TCUTIL_RET_SUCCESS)) { return ReturnUtilResp(util_resp); } + if (opertype_ == tclib::MSG_AUDIT_START) { + util_resp = tc::TcClientSessionUtils:: + set_uint8(sess_, (uint8_t)reconnect_controller_); + if (PFC_EXPECT_TRUE(util_resp != TCUTIL_RET_SUCCESS)) { + return ReturnUtilResp(util_resp); + } + } if (opertype_ == tclib::MSG_AUDIT_TRANS_END) { util_resp = tc::TcClientSessionUtils::set_uint8(sess_, trans_result_); if (PFC_EXPECT_TRUE(util_resp != TCUTIL_RET_SUCCESS)) { @@ -398,6 +413,7 @@ AuditTransaction::SendRequest(std::string channel_name) { PFC_EXPECT_TRUE(opertype_ == tclib::MSG_AUDIT_TRANS_END)))) { pfc_log_error("Audit end/Transaction end failure"); + audit_result_ = tclib::TC_AUDIT_FAILURE; ret_val = TCOPER_RET_FATAL; } /*session is not closed in case of failure as its contents @@ -453,7 +469,7 @@ TcOperRet AuditTransaction::Execute() { case tclib::MSG_AUDIT_TRANS_START: { pfc_log_info("*** AUDIT TxSTART ***"); notifyorder_.push_back(TC_DRV_ODL); - //notifyorder_.push_back(TC_DRV_OVERLAY); + // notifyorder_.push_back(TC_DRV_OVERLAY); // notifyorder_.push_back(TC_DRV_LEGACY); notifyorder_.push_back(TC_UPLL); notifyorder_.push_back(TC_UPPL); @@ -632,6 +648,7 @@ TwoPhaseAudit::HandleDriverResultResponse(pfc::core::ipc::ClientSession* PFC_EXPECT_TRUE(opertype_ == tclib::MSG_AUDIT_VOTE)) { pfc_log_info("failure response for vote-driver result"); trans_result_ = tclib::TRANS_END_FAILURE; + audit_result_ = tclib::TC_AUDIT_FAILURE; ret_val = SendAbortRequest(abort_on_fail_); if (PFC_EXPECT_TRUE(ret_val == TCOPER_RET_SUCCESS)) { ret_val = TCOPER_RET_ABORT; @@ -642,6 +659,7 @@ TwoPhaseAudit::HandleDriverResultResponse(pfc::core::ipc::ClientSession* } else if (PFC_EXPECT_TRUE(resp == tclib::TC_FAILURE) && PFC_EXPECT_TRUE(opertype_ == tclib::MSG_AUDIT_GLOBAL)) { pfc_log_info("failure response for global commit-driver result"); + audit_result_ = tclib::TC_AUDIT_FAILURE; ret_val = TCOPER_RET_FATAL; } else { pfc_log_info("success response for driver result"); @@ -871,6 +889,7 @@ TwoPhaseAudit::SendRequestToDriver() { } else if (PFC_EXPECT_TRUE(tclib::TC_FAILURE == resp) && PFC_EXPECT_TRUE(opertype_ == tclib::MSG_AUDIT_GLOBAL)) { pfc_log_error("Failure response from %s", channel_name.c_str()); + audit_result_ = tclib::TC_AUDIT_FAILURE; ret_val = TCOPER_RET_FATAL; } if (ret_val == TCOPER_RET_SUCCESS) { @@ -988,6 +1007,7 @@ TwoPhaseAudit::SendRequest(std::string channel_name) { PFC_EXPECT_TRUE(opertype_ == tclib::MSG_AUDIT_GLOBAL)) { pfc_log_error("Failure response from %s", channel_name.c_str()); + audit_result_ = tclib::TC_AUDIT_FAILURE; ret_val = TCOPER_RET_FATAL; } /*delete the session pointer*/ diff --git a/coordinator/modules/tclib/include/tclib_module.hh b/coordinator/modules/tclib/include/tclib_module.hh index 97338c0d..ef81d0de 100644 --- a/coordinator/modules/tclib/include/tclib_module.hh +++ b/coordinator/modules/tclib/include/tclib_module.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -88,6 +88,13 @@ class TcLibModule : public pfc::core::Module { */ TcApiCommonRet TcLibValidateUpdateMsg(uint32_t sessionid, uint32_t configid); + /** + * @brief Gives current session_id and config_id to upll,upll,pfcdriver + * @param[out] current session_id + * @param[out] current config_id + */ + void GetSessionAttributes(uint32_t* session_id, uint32_t* config_id); + /** * @brief Read of key types key and value data information from session * @param[in] controller_id controller id for which key type involved diff --git a/coordinator/modules/tclib/include/tclib_msg_util.hh b/coordinator/modules/tclib/include/tclib_msg_util.hh index 95fa96c0..54a6373f 100644 --- a/coordinator/modules/tclib/include/tclib_msg_util.hh +++ b/coordinator/modules/tclib/include/tclib_msg_util.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,8 +21,8 @@ namespace tclib { class TcLibMsgUtil { public: /** - * @brief Get of commit transaction arguments from the session - * @param[in] session pointer of server session from where data will be read + * @brief Get of commit transaction arguments from the session + * @param[in] session pointer of server session from where data will be read * @param[out] commit_trans_msg structure variable after reading from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -34,8 +34,8 @@ class TcLibMsgUtil { /** * @brief Get of commit driver vote/global arguments from the session - * @param[in] session pointer of server session from where data will be read - * @param[out] drv_vote_global_msg structure variable after reading + * @param[in] session pointer of server session from where data will be read + * @param[out] drv_vote_global_msg structure variable after reading * from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -47,7 +47,7 @@ class TcLibMsgUtil { /** * @brief Get of commit driver result arguments from the session - * @param[in] session pointer of server session from where data will be read + * @param[in] session pointer of server session from where data will be read * @param[out] drv_result_msg structure variable after reading from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -59,7 +59,7 @@ class TcLibMsgUtil { /** * @brief Get of commit global abort arguments from the session - * @param[in] session pointer of server session from where data will be read + * @param[in] session pointer of server session from where data will be read * @param[out] global_abort_msg structure variable after reading from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -71,7 +71,7 @@ class TcLibMsgUtil { /** * @brief Get of audit transaction arguments from the session - * @param[in] session pointer of server session from where data will be read + * @param[in] session pointer of server session from where data will be read * @param[out] audit_trans_msg structure variable after reading from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -83,8 +83,8 @@ class TcLibMsgUtil { /** * @brief Get of audit driver vote/global arguments from the session - * @param[in] session pointer of server session from where data will be read - * @param[out] drv_vote_global_msg structure variable after reading + * @param[in] session pointer of server session from where data will be read + * @param[out] drv_vote_global_msg structure variable after reading * from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -96,7 +96,7 @@ class TcLibMsgUtil { /** * @brief Get of audit driver result arguments from the session - * @param[in] session pointer of server session from where data will be read + * @param[in] session pointer of server session from where data will be read * @param[out] drv_result_msg structure variable after reading from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -108,7 +108,7 @@ class TcLibMsgUtil { /** * @brief Get of audit global abort arguments from the session - * @param[in] session pointer of server session from where data will be read + * @param[in] session pointer of server session from where data will be read * @param[out] global_abort_msg structure variable after reading from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -120,7 +120,7 @@ class TcLibMsgUtil { /** * @brief Get of audit config related arguments from the session - * @param[in] session pointer of server session from where data will be read + * @param[in] session pointer of server session from where data will be read * @param[out] audit_config_msg structure variable after reading from session * @retval TC_SUCCESS Get data from session is success * @retval TC_FAILURE Get data from session is failed @@ -128,7 +128,7 @@ class TcLibMsgUtil { static TcCommonRet GetAuditConfigMsg(pfc::core::ipc::ServerSession *session, TcAuditConfigMsg &audit_config_msg); }; -} // tclib -} // unc +} // namespace tclib +} // namespace unc #endif /* _UNC_TCLIB_MSG_UTIL_HH_ */ diff --git a/coordinator/modules/tclib/include/tclib_struct_defs.hh b/coordinator/modules/tclib/include/tclib_struct_defs.hh index 7c91bd56..7b86833e 100644 --- a/coordinator/modules/tclib/include/tclib_struct_defs.hh +++ b/coordinator/modules/tclib/include/tclib_struct_defs.hh @@ -1,7 +1,7 @@ /* * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -75,6 +75,7 @@ typedef struct { uint32_t session_id; unc_keytype_ctrtype_t driver_id; std::string controller_id; + uint8_t reconnect_controller; /*filled only for audit start*/ TcAuditResult audit_result; /* filled only for audit end */ TcTransEndResult end_result; /* filled for transaction end */ }TcAuditTransactionMsg; @@ -135,7 +136,7 @@ typedef struct { unc_keytype_datatype_t db_type; TcServiceType service_type; }TcAuditConfigMsg; -} // tclib -} // unc +} // namespace tclib +} // namespace unc #endif /* _UNC_TCLIB_STRUCT_DEFS_HH_ */ diff --git a/coordinator/modules/tclib/tclib_module.cc b/coordinator/modules/tclib/tclib_module.cc index 0b5f5961..65c572c3 100644 --- a/coordinator/modules/tclib/tclib_module.cc +++ b/coordinator/modules/tclib/tclib_module.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -163,6 +163,7 @@ TcApiCommonRet TcLibModule::TcLibAuditControllerRequest int err = 0; unc_keytype_ctrtype_t ctr_type = UNC_CT_UNKNOWN; tc::TcUtilRet util_ret = tc::TCUTIL_RET_SUCCESS; + uint8_t force_reconnect = 0; if (pTcLibInterface_ != NULL) { ctr_type = pTcLibInterface_->HandleGetControllerType(); @@ -226,6 +227,15 @@ TcApiCommonRet TcLibModule::TcLibAuditControllerRequest pfc_ipcclnt_altclose(conn); return TC_API_COMMON_FAILURE; } + /* Writing force_reconnect into the session */ + idx++; + util_ret = tc::TcClientSessionUtils::set_uint8(&sess, force_reconnect); + if (util_ret != tc::TCUTIL_RET_SUCCESS) { + pfc_log_error("%s %d TcServerSessionUtils failed with %d", + __FUNCTION__, __LINE__, util_ret); + pfc_ipcclnt_altclose(conn); + return TC_API_COMMON_FAILURE; + } /*Invoke the session using the handle*/ err = sess.invoke(resp); @@ -276,6 +286,21 @@ TcApiCommonRet TcLibModule::TcLibValidateUpdateMsg(uint32_t sessionid, return ret; } + +/** + * @brief Gives current session_id and config_id to upll, upll, pfcdriver + * @param[out] current session_id + * @param[out] current config_id + */ +void TcLibModule::GetSessionAttributes(uint32_t* session_id, + uint32_t* config_id) { + pfc_log_info("session_id:%d, config_id:%d", session_id_, config_id_); + pfc::core::ScopedMutex m(tclib_mutex_); + *session_id = session_id_; + *config_id = config_id_; +} + + /** * @brief GetKeyIndex * Get of key index based on controller id, err_pos from @@ -1069,6 +1094,7 @@ NotifySessionConfig(pfc::core::ipc::ServerSession *sess) { tc::TcUtilRet util_ret = tc::TCUTIL_RET_SUCCESS; pfc::core::ScopedMutex m(tclib_mutex_); + /*read from the session and update the session and config id*/ if (sess != NULL) { argcount = sess->getArgCount(); @@ -1491,9 +1517,17 @@ TcCommonRet TcLibModule::AuditTransStartEnd(TcMsgOperType oper_type, switch (oper_type) { case MSG_AUDIT_START : - ret = pTcLibInterface_->HandleAuditStart(audit_trans_msg.session_id, - audit_trans_msg.driver_id, - audit_trans_msg.controller_id); + if (GetControllerType() != UNC_CT_UNKNOWN) { + ret = pTcLibInterface_->HandleAuditStart( + audit_trans_msg.session_id, + audit_trans_msg.driver_id, + audit_trans_msg.controller_id, + audit_trans_msg.reconnect_controller); + } else { + ret = pTcLibInterface_->HandleAuditStart(audit_trans_msg.session_id, + audit_trans_msg.driver_id, + audit_trans_msg.controller_id); + } pfc_log_info("%s %d HandleAuditStart returned with %d", __FUNCTION__, __LINE__, ret); if (ret != TC_SUCCESS) { @@ -2191,11 +2225,13 @@ unc_keytype_ctrtype_t TcLibModule::GetDriverId() { __FUNCTION__, __LINE__, util_ret); return UNC_CT_UNKNOWN; } - + oper_state_ = MSG_GET_DRIVERID; ctr_type = pTcLibInterface_->HandleGetControllerType(controller_id); pfc_log_info("%s %d Handler returned with %d", __FUNCTION__, __LINE__, ctr_type); + + oper_state_ = MSG_NONE; return ctr_type; } diff --git a/coordinator/modules/tclib/tclib_msg_util.cc b/coordinator/modules/tclib/tclib_msg_util.cc index c7fa4187..77f71eb7 100644 --- a/coordinator/modules/tclib/tclib_msg_util.cc +++ b/coordinator/modules/tclib/tclib_msg_util.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -421,6 +421,19 @@ TcCommonRet TcLibMsgUtil::GetAuditTransactionMsg( return TC_FAILURE; } + /*reconnect attribute*/ + if (audit_trans_msg.oper_type == MSG_AUDIT_START) { + uint8_t reconnect = 0; + idx++; + util_ret = tc::TcServerSessionUtils::get_uint8(session, idx, &reconnect); + if (util_ret != tc::TCUTIL_RET_SUCCESS) { + pfc_log_error("%s %d TcServerSessionUtils failed with %d", + __FUNCTION__, __LINE__, util_ret); + return TC_FAILURE; + } + audit_trans_msg.reconnect_controller = (pfc_bool_t)reconnect; + } + // audit_result if (audit_trans_msg.oper_type == MSG_AUDIT_END) { uint8_t audit_result = 0; diff --git a/coordinator/modules/upll/Makefile b/coordinator/modules/upll/Makefile index 1489f1e7..f22552f1 100644 --- a/coordinator/modules/upll/Makefile +++ b/coordinator/modules/upll/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -13,13 +13,14 @@ include ../defs.mk -#CXX_OPT = -O0 +CXX_OPT = -O0 # We need to append build directory to header search path explicitly # for build.cc. EXTRA_INCDIRS = .. ../dal -CXX_SOURCES = ipct_st.cc kt_util.cc ipc_util.cc key_tree.cc \ +CXX_SOURCES = ipct_st.cc kt_util.cc ipc_util.cc key_tree.cc dbconn_mgr.cc \ + ipc_client_handler.cc \ momgr_intf.cc \ ctrlr_mgr.cc \ config_svc.cc \ @@ -38,7 +39,8 @@ VTN_SOURCES = momgr_util.cc momgr_impl.cc \ vunk_momgr.cc vunk_if_momgr.cc \ vtep_momgr.cc vtep_if_momgr.cc \ vtep_grp_momgr.cc vtepgrp_mem_momgr.cc \ - vtunnel_momgr.cc vtunnel_if_momgr.cc + vtunnel_momgr.cc vtunnel_if_momgr.cc \ + vtn_dataflow_momgr.cc POM_SOURCES = policingprofile_momgr.cc policingprofile_entry_momgr.cc \ flowlist_momgr.cc flowlist_entry_momgr.cc \ diff --git a/coordinator/modules/upll/config_lock.cc b/coordinator/modules/upll/config_lock.cc index e78b0d26..74704f18 100644 --- a/coordinator/modules/upll/config_lock.cc +++ b/coordinator/modules/upll/config_lock.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html diff --git a/coordinator/modules/upll/config_lock.hh b/coordinator/modules/upll/config_lock.hh index 4aa6c52e..1c3c76d9 100644 --- a/coordinator/modules/upll/config_lock.hh +++ b/coordinator/modules/upll/config_lock.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html diff --git a/coordinator/modules/upll/config_mgr.cc b/coordinator/modules/upll/config_mgr.cc index ec38c889..f8753b41 100644 --- a/coordinator/modules/upll/config_mgr.cc +++ b/coordinator/modules/upll/config_mgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -67,6 +67,13 @@ #include "vtepgrp_mem_momgr.hh" #include "vtunnel_momgr.hh" #include "vtunnel_if_momgr.hh" +#include "vtn_dataflow_momgr.hh" + + +namespace { +const char * const db_conn_conf_blk = "db_conn"; +const uint32_t default_db_max_ro_conns = 64; +} namespace unc { namespace upll { @@ -101,8 +108,10 @@ UpllConfigMgr::UpllConfigMgr() shutting_down_ = false; node_active_ = false; candidate_dirty_qc_ = false; + dbcm_ = NULL; alarm_fd = -1; -} + audit_ctrlr_affected_state_ = kCtrlrAffectedNoDiff; + } /* * UpllConfigMgr::~UpllConfigMgr(void) @@ -141,6 +150,8 @@ bool UpllConfigMgr::Init(void) { unc::upll::ipc_util::IpctSt::RegisterAll(); + dbcm_= new UpllDbConnMgr(GetDbROConnLimitFrmConfFile()); + if (!CreateMoManagers()) return false; @@ -161,11 +172,29 @@ bool UpllConfigMgr::Init(void) { return true; } + +uint32_t UpllConfigMgr::GetDbROConnLimitFrmConfFile() { + UPLL_FUNC_TRACE; + uint32_t max_ro_conn = default_db_max_ro_conns; + + pfc::core::ModuleConfBlock db_conn_block(db_conn_conf_blk); + if (db_conn_block.getBlock() != PFC_CFBLK_INVALID) { + UPLL_LOG_TRACE("Block handle is valid"); + max_ro_conn = db_conn_block.getUint32("db_conn_ro_limit", + default_db_max_ro_conns); + UPLL_LOG_INFO("Max. DB RO connections from conf file %d", max_ro_conn); + } else { + UPLL_LOG_INFO("Setting default value to maximum DB RO connections %d", + max_ro_conn); + } + return max_ro_conn; +} + const unc::capa::CapaIntf *UpllConfigMgr::GetCapaInterface() { unc::capa::CapaIntf *capa = reinterpret_cast( pfc::core::Module::getInstance("capa")); if (capa == NULL) { - pfc_log_fatal("CapaModule is not found"); + UPLL_LOG_FATAL("CapaModule is not found"); } return capa; } @@ -174,7 +203,7 @@ unc::tclib::TcLibModule *UpllConfigMgr::GetTcLibModule() { unc::tclib::TcLibModule *tclib = static_cast( pfc::core::Module::getInstance("tclib")); if (tclib == NULL) { - pfc_log_fatal("TcLibModule is not found"); + UPLL_LOG_FATAL("TcLibModule is not found"); } return tclib; } @@ -186,7 +215,6 @@ pfc_ipcresp_t UpllConfigMgr::KtServiceHandler(upll_service_ids_t service, IpcReqRespHeader *msghdr, ConfigKeyVal *first_ckv) { UPLL_FUNC_TRACE; - if (msghdr == NULL || first_ckv == NULL) { UPLL_LOG_DEBUG("Null argument %p, %p", msghdr, first_ckv); if (msghdr) { @@ -250,12 +278,14 @@ pfc_ipcresp_t UpllConfigMgr::KtServiceHandler(upll_service_ids_t service, // Open Dal Connection DalOdbcMgr *dom = NULL; + bool dom_commit_flag = false; switch (msghdr->operation) { case UNC_OP_CREATE: case UNC_OP_UPDATE: case UNC_OP_DELETE: case UNC_OP_RENAME: - dom = &config_rw_dom_; + dom = dbcm_->GetConfigRwConn(); + dom_commit_flag = true; break; case UNC_OP_READ: case UNC_OP_READ_NEXT: @@ -264,7 +294,7 @@ pfc_ipcresp_t UpllConfigMgr::KtServiceHandler(upll_service_ids_t service, case UNC_OP_READ_SIBLING: case UNC_OP_READ_SIBLING_COUNT: if (msghdr->datatype == UPLL_DT_CANDIDATE) { - dom = &config_ro_dom_; + dom = dbcm_->GetConfigRwConn(); } break; default: @@ -276,7 +306,7 @@ pfc_ipcresp_t UpllConfigMgr::KtServiceHandler(upll_service_ids_t service, if (dom != NULL) { // already selected the dom } else { - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, false, __FUNCTION__))) { + if (UPLL_RC_SUCCESS != (urc = dbcm_->AcquireRoConn(&dom))) { msghdr->result_code = urc; if (ReleaseConfigLock(msghdr->operation, msghdr->datatype) == false) { UPLL_LOG_ERROR("Failed to release config lock."); @@ -284,7 +314,6 @@ pfc_ipcresp_t UpllConfigMgr::KtServiceHandler(upll_service_ids_t service, return 0; } } - switch (msghdr->operation) { case UNC_OP_READ: urc = momgr->ReadMo(msghdr, first_ckv, dom); @@ -332,9 +361,17 @@ pfc_ipcresp_t UpllConfigMgr::KtServiceHandler(upll_service_ids_t service, } msghdr->result_code = urc; - upll_rc_t db_urc = DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); - if (urc == UPLL_RC_SUCCESS) { - msghdr->result_code = urc = db_urc; + + if (dom->get_conn_type() == uudal::kDalConnReadWrite) { + upll_rc_t db_urc = dbcm_->DalTxClose(dom, ((urc == UPLL_RC_SUCCESS) && + (dom_commit_flag == true))); + dbcm_->ReleaseRwConn(dom); + if (urc == UPLL_RC_SUCCESS) { + msghdr->result_code = urc = db_urc; + } + } else { + dbcm_->DalTxClose(dom, false); + dbcm_->ReleaseRoConn(dom); } if ((urc == UPLL_RC_SUCCESS) && (msghdr->datatype == UPLL_DT_CANDIDATE) && @@ -500,6 +537,7 @@ bool UpllConfigMgr::BuildKeyTree() { kt_name_map_[UNC_KT_VTUNNEL] = "VTUNNEL"; kt_name_map_[UNC_KT_VTUNNEL_IF] = "VTUNNEL_IF"; kt_name_map_[UNC_KT_VLINK] = "VLINK"; + kt_name_map_[UNC_KT_VTN_DATAFLOW] = "VTN_DATAFLOW"; return true; } @@ -510,10 +548,13 @@ void UpllConfigMgr::DumpKeyTree() { UPLL_LOG_TRACE("--- KeyTree Preorder Traversal ---"); const std::list *pre_list = cktt_.get_preorder_list(); std::list::const_iterator pre_it = pre_list->begin(); + std::map::iterator nmap_it; + while (pre_it != pre_list->end()) { kt = *pre_it; - if (kt_name_map_.count(kt) > 0) { - UPLL_LOG_TRACE("--- KT: %s", kt_name_map_[kt].c_str()); + nmap_it = kt_name_map_.find(kt); + if (nmap_it != kt_name_map_.end()) { + UPLL_LOG_TRACE("--- KT: %s", nmap_it->second.c_str()); } pre_it++; } @@ -523,8 +564,9 @@ void UpllConfigMgr::DumpKeyTree() { std::list::const_iterator post_it = post_list->begin(); while (post_it != post_list->end()) { kt = *post_it; - if (kt_name_map_.count(kt) > 0) { - UPLL_LOG_TRACE("--- KT: %s", kt_name_map_[kt].c_str()); + nmap_it = kt_name_map_.find(kt); + if (nmap_it != kt_name_map_.end()) { + UPLL_LOG_TRACE("--- KT: %s", nmap_it->second.c_str()); } post_it++; } @@ -571,7 +613,7 @@ bool UpllConfigMgr::CreateMoManagers() { upll_kt_momgrs_[UNC_KT_VTN_POLICINGMAP_CONTROLLER] = new uuk::VtnPolicingMapMoMgr(); upll_kt_momgrs_[UNC_KT_VBR_POLICINGMAP_ENTRY] = - upll_kt_momgrs_[UNC_KT_VBR_POLICINGMAP] = new uuk::VbrPolicingMapMoMgr(); + upll_kt_momgrs_[UNC_KT_VBR_POLICINGMAP] = new uuk::VbrPolicingMapMoMgr(); upll_kt_momgrs_[UNC_KT_VBR_FLOWFILTER] = new uuk::VbrFlowFilterMoMgr(); upll_kt_momgrs_[UNC_KT_VBR_FLOWFILTER_ENTRY] = new uuk::VbrFlowFilterEntryMoMgr(); @@ -584,6 +626,7 @@ bool UpllConfigMgr::CreateMoManagers() { upll_kt_momgrs_[UNC_KT_VRTIF_FLOWFILTER] = new uuk::VrtIfFlowFilterMoMgr(); upll_kt_momgrs_[UNC_KT_VRTIF_FLOWFILTER_ENTRY] = new uuk::VrtIfFlowFilterEntryMoMgr(); + upll_kt_momgrs_[UNC_KT_VTN_DATAFLOW] = new uuk::VtnDataflowMoMgr(); return true; } @@ -601,9 +644,9 @@ upll_rc_t UpllConfigMgr::ValidSession(uint32_t clnt_sess_id, } if (err == unc::tclib::TC_INVALID_SESSION_ID) { - UPLL_LOG_DEBUG("Invalid session_id %u in IPC request", clnt_sess_id); + UPLL_LOG_DEBUG("Invalid session_id %u in IPC request", clnt_sess_id); } else if (err == unc::tclib::TC_INVALID_CONFIG_ID) { - UPLL_LOG_DEBUG("Invalid config_id %u in IPC request", config_id); + UPLL_LOG_DEBUG("Invalid config_id %u in IPC request", config_id); } return UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID; @@ -632,7 +675,7 @@ upll_rc_t UpllConfigMgr::ValidIpcDatatype(upll_keytype_datatype_t datatype) { return UPLL_RC_SUCCESS; case UPLL_DT_AUDIT: default: - return UPLL_RC_ERR_NO_SUCH_DATATYPE; + return UPLL_RC_ERR_NO_SUCH_DATATYPE; } return UPLL_RC_ERR_NO_SUCH_DATATYPE; } @@ -708,8 +751,8 @@ upll_rc_t UpllConfigMgr::ValidIpcOperation(upll_service_ids_t service, } upll_rc_t UpllConfigMgr::ValidateKtRequest(upll_service_ids_t service, - const IpcReqRespHeader &msghdr, - const ConfigKeyVal &ckv) { + const IpcReqRespHeader &msghdr, + const ConfigKeyVal &ckv) { UPLL_FUNC_TRACE; upll_rc_t urc; if ((service == UPLL_EDIT_SVC_ID) || @@ -719,7 +762,7 @@ upll_rc_t UpllConfigMgr::ValidateKtRequest(upll_service_ids_t service, urc = ValidSession(msghdr.clnt_sess_id, msghdr.config_id); if (urc != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Invalid session_id %u and/or config_id %u in IPC request." - " Err: %d", msghdr.clnt_sess_id, msghdr.config_id, urc); + " Err: %d", msghdr.clnt_sess_id, msghdr.config_id, urc); return urc; } } @@ -727,7 +770,7 @@ upll_rc_t UpllConfigMgr::ValidateKtRequest(upll_service_ids_t service, urc = ValidIpcOperation(service, msghdr.datatype, msghdr.operation); if (urc != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Invalid operation %u in IPC request for service %u", - msghdr.operation, service); + msghdr.operation, service); return urc; } @@ -740,7 +783,7 @@ upll_rc_t UpllConfigMgr::ValidateKtRequest(upll_service_ids_t service, // only allowed option combination is normal and none if (msghdr.option1 != UNC_OPT1_NORMAL) { UPLL_LOG_DEBUG("Invalid option1 %u, expected %d in IPC request", - msghdr.option1, UNC_OPT1_NORMAL); + msghdr.option1, UNC_OPT1_NORMAL); return UPLL_RC_ERR_INVALID_OPTION1; } if (msghdr.option2 != UNC_OPT2_NONE) { @@ -948,7 +991,7 @@ upll_rc_t UpllConfigMgr::ValidateImport(uint32_t sess_id, uint32_t config_id, // Check controller type unc_keytype_ctrtype_t ctrlr_type; if (false == CtrlrMgr::GetInstance()->GetCtrlrType( - ctrlr_id, UPLL_DT_CANDIDATE, &ctrlr_type)) { + ctrlr_id, UPLL_DT_CANDIDATE, &ctrlr_type)) { UPLL_LOG_INFO("Unable to get controller type. Cannot do %s for %s ", import_operation, ctrlr_id); return UPLL_RC_ERR_NO_SUCH_INSTANCE; @@ -983,7 +1026,7 @@ upll_rc_t UpllConfigMgr::ValidateImport(uint32_t sess_id, uint32_t config_id, urc = IsKeyInUseNoLock(UPLL_DT_RUNNING, &ckv, &ctr_in_use); if (urc != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Failed to find if controller is in running config. Urc=%d." - "Cannot do %s for %s", urc, import_operation, ctrlr_id); + "Cannot do %s for %s", urc, import_operation, ctrlr_id); return urc; } if (ctr_in_use == true) { @@ -1000,7 +1043,7 @@ upll_rc_t UpllConfigMgr::ImportCtrlrConfig(const char *ctrlr_id, UPLL_FUNC_TRACE; upll_rc_t urc = UPLL_RC_SUCCESS; - DalOdbcMgr *dom = &import_rw_dom_; // Dal Connection + DalOdbcMgr *dom = dbcm_->GetConfigRwConn(); key_root_t *root_key = reinterpret_cast( ConfigKeyVal::Malloc(sizeof(key_root_t))); @@ -1069,6 +1112,11 @@ upll_rc_t UpllConfigMgr::ImportCtrlrConfig(const char *ctrlr_id, ConfigKeyVal *one_ckv = NULL; // Create each KT instance at a time in the destination DT while (bulk_resp.ckv_data) { + if ((urc = ContinueActiveProcess()) != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Import aborted, Urc=%d", urc); + read_bulk_done = true; + break; // break from inner loop + } one_ckv = bulk_resp.ckv_data; bulk_resp.ckv_data = one_ckv->get_next_cfg_key_val(); one_ckv->set_next_cfg_key_val(NULL); @@ -1081,8 +1129,10 @@ upll_rc_t UpllConfigMgr::ImportCtrlrConfig(const char *ctrlr_id, unc_key_type_t kt = one_ckv->get_key_type(); UPLL_LOG_TRACE("KeyType in Driver message: %u", kt); - if (upll_kt_momgrs_.count(kt) > 0) { - MoManager *momgr = upll_kt_momgrs_[kt]; + std::map::iterator momgr_it = + upll_kt_momgrs_.find(kt); + if (momgr_it != upll_kt_momgrs_.end()) { + MoManager *momgr = momgr_it->second; // In import-readbulk driver cannot return domain id in message header // as there will be more than one VTN. A VTN will be sent in the // response only if a VNODE is present for the VTN. VNODE val structure @@ -1105,10 +1155,10 @@ upll_rc_t UpllConfigMgr::ImportCtrlrConfig(const char *ctrlr_id, // Need to preserve the last CKV for continuing READ_BULK operation to // remaining data if (bulk_resp.ckv_data != NULL) { - delete one_ckv; + delete one_ckv; } else { - // install last CKV from the bulk response into READ_BULK next request - bulkreq_ckv = one_ckv; + // install last CKV from the bulk response into READ_BULK next request + bulkreq_ckv = one_ckv; } */ } @@ -1124,7 +1174,9 @@ upll_rc_t UpllConfigMgr::ImportCtrlrConfig(const char *ctrlr_id, } UPLL_LOG_DEBUG("Import configuration status. Urc=%d", urc); - upll_rc_t close_urc = DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t close_urc = dbcm_->DalTxClose(dom, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dom); + if (urc == UPLL_RC_SUCCESS) { urc = close_urc; } @@ -1135,13 +1187,20 @@ upll_rc_t UpllConfigMgr::ImportCtrlrConfig(const char *ctrlr_id, upll_rc_t UpllConfigMgr::StartImport(const char *ctrlr_id, uint32_t sess_id, uint32_t config_id) { UPLL_FUNC_TRACE; + upll_rc_t urc; + /* + if ((urc = ContinueActiveProcess()) != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Import not possible, Urc=%d", urc); + return; + } + */ pfc::core::ScopedMutex import_lock(import_mutex_lock_); // Validate if import is already in progress if (import_in_progress_ == true) { UPLL_LOG_INFO("Import is in progress for %s. Cannot do import for %s", - import_ctrlr_id_.c_str(), ctrlr_id); + import_ctrlr_id_.c_str(), ctrlr_id); return UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; } @@ -1152,11 +1211,11 @@ upll_rc_t UpllConfigMgr::StartImport(const char *ctrlr_id, uint32_t sess_id, // Take read lock on running for doing IsCandidateDirty and IsKeyInUse check // in ValidateImport ScopedConfigLock scfg_lock2(cfg_lock_, - UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); + UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - upll_rc_t urc = ValidateImport(sess_id, config_id, ctrlr_id, - UPLL_IMPORT_CTRLR_CONFIG_OP); + urc = ValidateImport(sess_id, config_id, ctrlr_id, + UPLL_IMPORT_CTRLR_CONFIG_OP); if (urc != UPLL_RC_SUCCESS) return urc; @@ -1193,9 +1252,9 @@ upll_rc_t UpllConfigMgr::OnMerge(uint32_t sess_id, uint32_t config_id) { // Take read lock on running for doing IsCandidateDirty and IsKeyInUse check // in ValidateImport ScopedConfigLock scfg_lock2(cfg_lock_, - UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); + UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - DalOdbcMgr *dom = &import_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetConfigRwConn(); urc = ValidateImport(sess_id, config_id, import_ctrlr_id_.c_str(), UPLL_MERGE_IMPORT_CONFIG_OP); @@ -1205,7 +1264,8 @@ upll_rc_t UpllConfigMgr::OnMerge(uint32_t sess_id, uint32_t config_id) { if (urc == UPLL_RC_SUCCESS) urc = MergeImportToCandidate(); // merge import config to candidate config - upll_rc_t db_urc = DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dom, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dom); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } @@ -1224,36 +1284,44 @@ upll_rc_t UpllConfigMgr::MergeValidate() { upll_rc_t urc = UPLL_RC_SUCCESS; unc_key_type_t kt; - DalOdbcMgr *dom = &import_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetConfigRwConn(); const std::list *pre_list = cktt_.get_preorder_list(); for (std::list::const_iterator pre_it = pre_list->begin(); pre_it != pre_list->end(); pre_it++) { kt = *pre_it; bool flag = false; - if (upll_kt_momgrs_.count(kt) > 0) { - unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VBR_VLANMAP, - UNC_KT_VBR_NWMONITOR, UNC_KT_VBR_NWMONITOR_HOST, - UNC_KT_VBR_IF, UNC_KT_VROUTER, UNC_KT_VRT_IPROUTE, - UNC_KT_DHCPRELAY_SERVER, UNC_KT_DHCPRELAY_IF, - UNC_KT_VRT_IF, UNC_KT_VUNKNOWN, UNC_KT_VUNK_IF, - UNC_KT_VTEP, UNC_KT_VTEP_IF, UNC_KT_VTEP_GRP, - UNC_KT_VTEP_GRP_MEMBER, UNC_KT_VTUNNEL, - UNC_KT_VTUNNEL_IF, UNC_KT_VLINK - }; - for (unsigned int i = 0; i < sizeof(child_key)/sizeof(child_key[0]); - i++) { - const unc_key_type_t ktype = child_key[i]; - if (ktype == kt) { - UPLL_LOG_TRACE("Skip MergeValidate Here, Its done in UNC_KT_VTN for" - "the key type %d if applicable", ktype); - flag = true; - break; + std::map::iterator momgr_it = + upll_kt_momgrs_.find(kt); + if (momgr_it != upll_kt_momgrs_.end()) { + unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VBR_VLANMAP, + UNC_KT_VBR_NWMONITOR, UNC_KT_VBR_NWMONITOR_HOST, + UNC_KT_VBR_IF, UNC_KT_VROUTER, UNC_KT_VRT_IPROUTE, + UNC_KT_DHCPRELAY_SERVER, UNC_KT_DHCPRELAY_IF, + UNC_KT_VRT_IF, UNC_KT_VUNKNOWN, UNC_KT_VUNK_IF, + UNC_KT_VTEP, UNC_KT_VTEP_IF, UNC_KT_VTEP_GRP, + UNC_KT_VTEP_GRP_MEMBER, UNC_KT_VTUNNEL, + UNC_KT_VTUNNEL_IF, UNC_KT_VLINK + }; + for (unsigned int i = 0; i < sizeof(child_key)/sizeof(child_key[0]); + i++) { + const unc_key_type_t ktype = child_key[i]; + if (ktype == kt) { + UPLL_LOG_TRACE("Skip MergeValidate Here, Its done in UNC_KT_VTN for" + "the key type %d if applicable", ktype); + flag = true; + break; + } + } + if (flag) + continue; + /* + if ((urc = ContinueActiveProcess()) != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Aborting MergeValidate, Urc=%d", urc); + break; } - } - if (flag) - continue; - MoManager *momgr = upll_kt_momgrs_[kt]; + */ + MoManager *momgr = momgr_it->second; ConfigKeyVal conflict_ckv(kt); urc = momgr->MergeValidate(kt, import_ctrlr_id_.c_str(), &conflict_ckv, dom); @@ -1271,19 +1339,27 @@ upll_rc_t UpllConfigMgr::MergeImportToCandidate() { upll_rc_t urc = UPLL_RC_SUCCESS; unc_key_type_t kt; - DalOdbcMgr *dom = &import_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetConfigRwConn(); const std::list *pre_list = cktt_.get_preorder_list(); for (std::list::const_iterator pre_it = pre_list->begin(); pre_it != pre_list->end(); pre_it++) { kt = *pre_it; - if (upll_kt_momgrs_.count(kt) > 0) { - MoManager *momgr = upll_kt_momgrs_[kt]; + std::map::iterator momgr_it = + upll_kt_momgrs_.find(kt); + if (momgr_it != upll_kt_momgrs_.end()) { + MoManager *momgr = momgr_it->second; urc = momgr->MergeImportToCandidate(kt, import_ctrlr_id_.c_str(), dom); if (urc != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("MergeImportToCandidate failed %d", urc); break; } + /* + if ((urc = ContinueActiveProcess()) != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Aborting MergeValidate, Urc=%d", urc); + break; + } + */ } } @@ -1326,7 +1402,7 @@ upll_rc_t UpllConfigMgr::IsCandidateDirtyNoLock(bool *dirty) { } DalOdbcMgr *dom = NULL; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, false, __FUNCTION__))) { + if (UPLL_RC_SUCCESS != (urc = dbcm_->AcquireRoConn(&dom))) { return urc; } @@ -1336,8 +1412,10 @@ upll_rc_t UpllConfigMgr::IsCandidateDirtyNoLock(bool *dirty) { for (std::list::const_iterator pre_it = pre_list->begin(); pre_it != pre_list->end(); pre_it++) { kt = *pre_it; - if (upll_kt_momgrs_.count(kt) > 0) { - MoManager *momgr = upll_kt_momgrs_[kt]; + std::map::iterator momgr_it = + upll_kt_momgrs_.find(kt); + if (momgr_it != upll_kt_momgrs_.end()) { + MoManager *momgr = momgr_it->second; urc = momgr->IsCandidateDirty(kt, dirty, dom); if (urc != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("IsCandidateDirty failed %d", urc); @@ -1350,10 +1428,11 @@ upll_rc_t UpllConfigMgr::IsCandidateDirtyNoLock(bool *dirty) { } } - upll_rc_t db_urc = DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dom, false); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } + dbcm_->ReleaseRoConn(dom); return urc; } @@ -1397,16 +1476,17 @@ upll_rc_t UpllConfigMgr::IsKeyInUseNoLock(upll_keytype_datatype_t datatype, } if (momgr) { DalOdbcMgr *dom = NULL; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, false, __FUNCTION__))) { + if (UPLL_RC_SUCCESS != (urc = dbcm_->AcquireRoConn(&dom))) { return urc; } urc = momgr->IsKeyInUse(datatype, ckv, in_use, dom); - upll_rc_t db_urc = DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dom, false); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } + dbcm_->ReleaseRoConn(dom); } else { urc = UPLL_RC_ERR_GENERIC; } @@ -1414,198 +1494,6 @@ upll_rc_t UpllConfigMgr::IsKeyInUseNoLock(upll_keytype_datatype_t datatype, return urc; } -static upll_rc_t ConvertDalResultCode(uudal::DalResultCode drc) { - switch (drc) { - case uudal::kDalRcSuccess: - return UPLL_RC_SUCCESS; - case uudal::kDalRcConnNotEstablished: - case uudal::kDalRcConnNotAvailable: - case uudal::kDalRcConnTimeOut: - case uudal::kDalRcQueryTimeOut: - return UPLL_RC_ERR_RESOURCE_DISCONNECTED; - case uudal::kDalRcTxnError: - case uudal::kDalRcAccessViolation: - return UPLL_RC_ERR_DB_ACCESS; - case uudal::kDalRcNotDisconnected: - case uudal::kDalRcInvalidConnHandle: - case uudal::kDalRcInvalidCursor: - case uudal::kDalRcDataError: - case uudal::kDalRcRecordAlreadyExists: - case uudal::kDalRcRecordNotFound: - case uudal::kDalRcRecordNoMore: - case uudal::kDalRcMemoryError: - case uudal::kDalRcInternalError: - case uudal::kDalRcGeneralError: - // default: - return UPLL_RC_ERR_GENERIC; - } - return UPLL_RC_ERR_GENERIC; -} - -upll_rc_t UpllConfigMgr::DalOpen(DalOdbcMgr **dom, bool read_write_conn, - const char *caller) { - UPLL_FUNC_TRACE; - - uudal::DalResultCode drc; - - uudal::DalConnType conn_type = ((read_write_conn) ? uudal::kDalConnReadWrite : - uudal::kDalConnReadOnly); - bool dom_allocated = false; - if ((*dom != &config_rw_dom_) && (*dom != &import_rw_dom_) && - (*dom != &alarm_rw_dom_) && (*dom != &config_ro_dom_)) { - *dom = new DalOdbcMgr(); - dom_allocated = true; - } - - // Initialize - drc = (*dom)->Init(); - if (drc != uudal::kDalRcSuccess) { - if (read_write_conn) { - pfc_log_fatal("%s: Failed to initialize DalOdbcMgr. Err=%d", caller, drc); - } else { - UPLL_LOG_ERROR("%s: Failed to initialize DalOdbcMgr. Err=%d", caller, - drc); - } - if (dom_allocated) { - delete (*dom); - *dom = NULL; - } - return ConvertDalResultCode(drc); - } else { - UPLL_LOG_TRACE("%s: DalOdbcMgr init successful.", caller); - } - - // Connect to DB - drc = (*dom)->ConnectToDb(conn_type); - if (drc != uudal::kDalRcSuccess) { - if (read_write_conn) { - pfc_log_fatal("%s: Failed to connect to database. Err=%d", caller, drc); - } else { - UPLL_LOG_ERROR("%s: Failed to connect to database. Err=%d", caller, drc); - } - if (dom_allocated) { - delete (*dom); - *dom = NULL; - } - return ConvertDalResultCode(drc); - } else { - UPLL_LOG_TRACE("%s: Connected to database.", caller); - } - - return UPLL_RC_SUCCESS; -} - -upll_rc_t UpllConfigMgr::DalClose(DalOdbcMgr *dom, bool commit, - const char *caller) { - UPLL_FUNC_TRACE; - - uudal::DalResultCode drc; - upll_rc_t urc = UPLL_RC_SUCCESS; - - // Commit or Rollback is required only read-write connections - if (dom->get_conn_type() == uudal::kDalConnReadWrite) { - if (commit) { - // Commit the transaction - drc = dom->CommitTransaction(); - if (drc != uudal::kDalRcSuccess) { - UPLL_LOG_ERROR("%s: Failed to commit DB transaction. Err=%d", - caller, drc); - urc = ConvertDalResultCode(drc); - } else { - UPLL_LOG_TRACE("%s: Committed the DB transaction.", caller); - urc = UPLL_RC_SUCCESS; - } - } else { - // Rollback the transaction - drc = dom->RollbackTransaction(); - if (drc != uudal::kDalRcSuccess) { - UPLL_LOG_ERROR("%s: Failed to rollback DB transaction. Err=%d", - caller, drc); - urc = ConvertDalResultCode(drc); - } else { - UPLL_LOG_TRACE("%s: Rolledback the DB transaction.", caller); - urc = UPLL_RC_SUCCESS; - } - } - } - - // disconnect and delete dom instance for dynamic connections . - if ((dom != &config_rw_dom_) && (dom != &import_rw_dom_) && - (dom != &alarm_rw_dom_) && (dom != &config_ro_dom_)) { - // Disconnect from database; on error do not change urc. - drc = dom->DisconnectFromDb(); - if (drc != uudal::kDalRcSuccess) { - UPLL_LOG_ERROR("%s: Failed to disconnect from database. Err=%d", - caller, drc); - } else { - UPLL_LOG_TRACE("%s: Disconnected from database.", caller); - } - - delete dom; - } - - return urc; -} - -upll_rc_t UpllConfigMgr::DalOpenInitialConnections() { - UPLL_FUNC_TRACE; - pfc::core::ScopedMutex lock(rw_dom_mutex_lock_); - upll_rc_t urc = UPLL_RC_SUCCESS; - - DalOdbcMgr *dom = &config_rw_dom_; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, true, __FUNCTION__))) { - return urc; - } - dom = &config_ro_dom_; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, true, __FUNCTION__))) { - return urc; - } - dom = &import_rw_dom_; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, true, __FUNCTION__))) { - return urc; - } - dom = &alarm_rw_dom_; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, true, __FUNCTION__))) { - return urc; - } - - return urc; -} - -upll_rc_t UpllConfigMgr::DalCloseInitialConnections() { - UPLL_FUNC_TRACE; - pfc::core::ScopedMutex lock(rw_dom_mutex_lock_); - upll_rc_t urc = UPLL_RC_SUCCESS; - uudal::DalResultCode drc; - - drc = config_rw_dom_.DisconnectFromDb(); - if (drc != uudal::kDalRcSuccess) { - UPLL_LOG_ERROR("Failed to disconnect config_rw_dom_ from database. Err=%d", - drc); - urc = UPLL_RC_ERR_GENERIC; - } - drc = config_ro_dom_.DisconnectFromDb(); - if (drc != uudal::kDalRcSuccess) { - UPLL_LOG_ERROR("Failed to disconnect config_ro_dom_ from database. Err=%d", - drc); - urc = UPLL_RC_ERR_GENERIC; - } - drc = import_rw_dom_.DisconnectFromDb(); - if (drc != uudal::kDalRcSuccess) { - UPLL_LOG_ERROR("Failed to disconnect import_rw_dom_ from database. Err=%d", - drc); - urc = UPLL_RC_ERR_GENERIC; - } - drc = alarm_rw_dom_.DisconnectFromDb(); - if (drc != uudal::kDalRcSuccess) { - UPLL_LOG_ERROR("Failed to disconnect alarm_rw_dom_ from database. Err=%d", - drc); - urc = UPLL_RC_ERR_GENERIC; - } - - return urc; -} - void UpllConfigMgr::OnPathFaultAlarm(const char *ctrlr_name, const char *domain_name, std::vector &ingress_ports, @@ -1614,13 +1502,14 @@ void UpllConfigMgr::OnPathFaultAlarm(const char *ctrlr_name, UPLL_FUNC_TRACE; ScopedConfigLock lock(cfg_lock_, UPLL_DT_RUNNING, ConfigLock::CFG_WRITE_LOCK); uuk::VbrIfMoMgr *mgr = reinterpret_cast - (GetMoManager(UNC_KT_VBR_IF)); + (GetMoManager(UNC_KT_VBR_IF)); if (mgr != NULL) { upll_rc_t urc; - DalOdbcMgr *dom = &alarm_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetAlarmRwConn(); urc = mgr->PathFaultHandler(ctrlr_name, domain_name, ingress_ports, egress_ports, alarm_asserted, dom); - DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + dbcm_->DalTxClose(dom, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dom); } } @@ -1632,10 +1521,11 @@ void UpllConfigMgr::OnControllerStatusChange(const char *ctrlr_name, (GetMoManager(UNC_KT_VTN)); if (mgr != NULL) { upll_rc_t urc; - DalOdbcMgr *dom = &alarm_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetAlarmRwConn(); urc = mgr->ControllerStatusHandler(reinterpret_cast( const_cast(ctrlr_name)), dom, operstatus); - DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + dbcm_->DalTxClose(dom, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dom); } } @@ -1649,10 +1539,11 @@ void UpllConfigMgr::OnLogicalPortStatusChange(const char *ctrlr_name, (GetMoManager(UNC_KT_VBR_IF)); if (mgr != NULL) { upll_rc_t urc; - DalOdbcMgr *dom = &alarm_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetAlarmRwConn(); urc = mgr->PortStatusHandler(ctrlr_name, domain_name, logical_port_id, oper_status, dom); - DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + dbcm_->DalTxClose(dom, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dom); } } @@ -1665,14 +1556,16 @@ void UpllConfigMgr::OnBoundaryStatusChange(const char *boundary_id, (GetMoManager(UNC_KT_VLINK)); if (mgr != NULL) { upll_rc_t urc; - DalOdbcMgr *dom = &alarm_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetAlarmRwConn(); urc = mgr->BoundaryStatusHandler( reinterpret_cast(const_cast(boundary_id)), oper_status, dom); - DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + dbcm_->DalTxClose(dom, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dom); } #else - UPLL_LOG_DEBUG("Recevied boundary %s oper status %d\n",boundary_id,oper_status); + UPLL_LOG_DEBUG("Recevied boundary %s oper status %d\n", boundary_id, + oper_status); #endif } @@ -1688,12 +1581,13 @@ void UpllConfigMgr::OnPolicerFullAlarm( if (mgr != NULL) { upll_rc_t urc; DalOdbcMgr *dom = NULL; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, false, __FUNCTION__))) { + if (UPLL_RC_SUCCESS != (urc = dbcm_->AcquireRoConn(&dom))) { return; } urc = mgr->OnPolicerFullAlarm(ctrlr_name, domain_id, key_vtn, alarm_data, alarm_raised, dom); - DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + dbcm_->DalTxClose(dom, false); + dbcm_->ReleaseRoConn(dom); } } @@ -1710,12 +1604,13 @@ void UpllConfigMgr::OnPolicerFailAlarm( if (mgr != NULL) { upll_rc_t urc; DalOdbcMgr *dom = NULL; - if (UPLL_RC_SUCCESS != (urc = DalOpen(&dom, false, __FUNCTION__))) { + if (UPLL_RC_SUCCESS != (urc = dbcm_->AcquireRoConn(&dom))) { return; } urc = mgr->OnPolicerFailAlarm(ctrlr_name, domain_id, key_vtn, alarm_data, alarm_raised, dom); - DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + dbcm_->DalTxClose(dom, false); + dbcm_->ReleaseRoConn(dom); } } @@ -1725,13 +1620,14 @@ void UpllConfigMgr::OnNwmonFaultAlarm( UPLL_FUNC_TRACE; ScopedConfigLock lock(cfg_lock_, UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); uuk::NwMonitorMoMgr *nwm_mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); + (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); if (nwm_mgr != NULL) { upll_rc_t urc; - DalOdbcMgr *dom = &alarm_rw_dom_; + DalOdbcMgr *dom = dbcm_->GetAlarmRwConn(); urc = nwm_mgr->OnNwmonFault(ctrlr_name, domain_id, vtn_key, alarm_data, - alarm_raised, dom); - DalClose(dom, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + alarm_raised, dom); + dbcm_->DalTxClose(dom, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dom); } } @@ -1787,7 +1683,7 @@ bool UpllConfigMgr::SendOperStatusAlarm(const char *vtn_name, return true; } - // NOLINT -} // namesapce config_momgr -} // namesapce upll -} // namesapce unc +// NOLINT +} // namespace config_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/config_mgr.hh b/coordinator/modules/upll/config_mgr.hh index f76b8708..fe006fee 100644 --- a/coordinator/modules/upll/config_mgr.hh +++ b/coordinator/modules/upll/config_mgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -27,11 +27,13 @@ #include "tclib_module.hh" #include "unc/upll_svc.h" +#include "upll_util.hh" #include "ipc_util.hh" #include "key_tree.hh" #include "momgr_intf.hh" #include "tclib_intf_impl.hh" #include "config_lock.hh" +#include "dbconn_mgr.hh" namespace unc { namespace upll { @@ -50,12 +52,12 @@ enum upll_alarm_category_t { class UpllConfigMgr { public: - /** - * @brief Creates a singleton instance of UpllConfigMgr if one is not already - * constructed. - * - * @return Pointer to newly constructed or exsting instance of UpllConfigMgr - */ + /** + * @brief Creates a singleton instance of UpllConfigMgr if one is not already + * constructed. + * + * @return Pointer to newly constructed or exsting instance of UpllConfigMgr + */ static UpllConfigMgr *GetUpllConfigMgr() { if (!singleton_instance_) { singleton_instance_ = new UpllConfigMgr(); @@ -197,7 +199,7 @@ class UpllConfigMgr { * @brief Controller down event handler * * @param[in] ctrlr_name name of the controller - * @param[in] operstatus operational status of controller + * @param[in] operstatus operational status of controller */ void OnControllerStatusChange(const char *ctrlr_name, bool operstatus); @@ -267,7 +269,8 @@ class UpllConfigMgr { upll_rc_t OnTxStart(uint32_t session_id, uint32_t config_id, ConfigKeyVal **err_ckv); upll_rc_t OnAuditTxStart(const char *ctrlr_id, - uint32_t session_id, uint32_t config_id); + uint32_t session_id, uint32_t config_id, + ConfigKeyVal **err_ckv); upll_rc_t OnTxVote(const std::set **affected_ctrlr_list, ConfigKeyVal **err_ckv); upll_rc_t OnAuditTxVote(const char *ctrlr_id, @@ -294,8 +297,10 @@ class UpllConfigMgr { const KeyTree &GetConfigKeyTree() { return cktt_; } MoManager *GetMoManager(unc_key_type_t kt) { - if (upll_kt_momgrs_.count(kt) > 0 ) - return upll_kt_momgrs_[kt]; + std::map::iterator it = + upll_kt_momgrs_.find(kt); + if (it != upll_kt_momgrs_.end() ) + return it->second; return NULL; } @@ -312,19 +317,32 @@ class UpllConfigMgr { sys_state_rwlock_.unlock(); return state; } + void SetClusterState(bool active) { sys_state_rwlock_.wrlock(); node_active_ = active; tclib_impl_.SetClusterState(active); sys_state_rwlock_.unlock(); + dbcm_->TerminateAllDbConns(); if (active) { - DalOpenInitialConnections(); - OnAuditEnd("", true); - ClearImport(0, 0, true); + upll_rc_t urc; + dbcm_->InitializeDbConnections(); + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); + dbinst->MakeAllDirty(); + dbcm_->ReleaseRwConn(dbinst); + urc = OnAuditEnd("", true); + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_FATAL("Failed to clear audit tables, urc=%d", urc); + } + urc = ClearImport(0, 0, true); + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_FATAL("Failed to clear import tables, urc=%d", urc); + } } else { - DalCloseInitialConnections(); + // dbcm_->TerminateAllDbConns(); } } + bool IsActiveNode() { bool state; sys_state_rwlock_.rdlock(); @@ -332,6 +350,21 @@ class UpllConfigMgr { sys_state_rwlock_.unlock(); return state; } + + upll_rc_t ContinueActiveProcess() { + if (IsShuttingDown()) { + UPLL_LOG_INFO("Shutting down, cannot commit"); + return UPLL_RC_ERR_SHUTTING_DOWN; + } + + if (!IsActiveNode()) { + UPLL_LOG_INFO("Node is not active, cannot commit"); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; + } + return UPLL_RC_SUCCESS; + } + + uint32_t GetDbROConnLimitFrmConfFile(); bool SendOperStatusAlarm(const char *vtn_name, const char *vnode_name, const char *vif_name, bool assert_alarm); @@ -384,12 +417,6 @@ class UpllConfigMgr { const char *ctrlr_id, uint32_t operation); upll_rc_t ImportCtrlrConfig(const char *ctrlr_id, upll_keytype_datatype_t dt); - // Helper functions or DB operations - upll_rc_t DalOpen(DalOdbcMgr **dom, bool read_write_conn, const char *caller); - upll_rc_t DalClose(DalOdbcMgr *dom, bool commit, const char *caller); - upll_rc_t DalOpenInitialConnections(); - upll_rc_t DalCloseInitialConnections(); - bool SendInvalidConfigAlarm(string ctrlr_name, bool assert_alarm); @@ -411,6 +438,7 @@ class UpllConfigMgr { bool import_in_progress_; string import_ctrlr_id_; string audit_ctrlr_id_; + KTxCtrlrAffectedState audit_ctrlr_affected_state_; pfc::core::Mutex commit_mutex_lock_; pfc::core::Mutex import_mutex_lock_; pfc::core::Mutex audit_mutex_lock_; @@ -419,11 +447,7 @@ class UpllConfigMgr { // Initail database connections. When node turns ACTIVE, intial connections // are mode, and when node turns STANDBY from ACTIVE, initial connections are // closed. - pfc::core::Mutex rw_dom_mutex_lock_; - DalOdbcMgr config_rw_dom_; - DalOdbcMgr config_ro_dom_; - DalOdbcMgr import_rw_dom_; - DalOdbcMgr alarm_rw_dom_; + UpllDbConnMgr *dbcm_; int32_t alarm_fd; diff --git a/coordinator/modules/upll/config_svc.cc b/coordinator/modules/upll/config_svc.cc index c3880d9f..3259ac1b 100644 --- a/coordinator/modules/upll/config_svc.cc +++ b/coordinator/modules/upll/config_svc.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -11,6 +11,7 @@ * upll_main.cc - UPLL module */ +#include #include #include "pfc/debug.h" @@ -24,11 +25,9 @@ #include "unc/unc_events.h" #include "alarm.hh" -#include #include "unc/uppl_common.h" #include "unc/pfcdriver_include.h" - #include "unc/upll_svc.h" #include "uncxx/upll_log.hh" @@ -36,6 +35,9 @@ #include "ctrlr_mgr.hh" #include "config_svc.hh" +bool fatal_done; +pfc::core::Mutex fatal_mutex_lock; + namespace unc { namespace upll { namespace config_svc { @@ -60,13 +62,13 @@ unsigned int UpllConfigSvc::kNumCfgServices = 4; UpllConfigSvc::UpllConfigSvc(const pfc_modattr_t *mattr) : pfc::core::Module(mattr), sys_evhid_(EVHANDLER_ID_INVALID), cls_evhid_(EVHANDLER_ID_INVALID) { - UPLL_LOG_NOTICE("constructor"); - shutting_down_ = false; - node_active_ = false; - config_mgr_ = NULL; - physical_evhdlr_ = NULL; - pfcdriver_evhdlr_ = NULL; -} + UPLL_LOG_NOTICE("constructor"); + shutting_down_ = false; + node_active_ = false; + config_mgr_ = NULL; + physical_evhdlr_ = NULL; + pfcdriver_evhdlr_ = NULL; + } /* * UpllConfigSvc::~UpllConfigSvc(void) @@ -184,7 +186,26 @@ pfc_ipcresp_t UpllConfigSvc::KtService(pfc::core::ipc::ServerSession *sess, ping_tspec.tv_nsec = 0; sess->setTimeout(&ping_tspec); UPLL_LOG_DEBUG("IPC Server Session timeout for Ping set to %d", - kIpcTimeoutPing); + kIpcTimeoutPing); + } else if (ckv->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER) { + pfc_timespec_t tspec; + tspec.tv_sec = kIpcTimeoutVtnstation; + tspec.tv_nsec = 0; + sess->setTimeout(&tspec); + UPLL_LOG_DEBUG("IPC Server Session timeout for VTN_STATION_CONTROLLER " + "set to %d", kIpcTimeoutVtnstation); + } + + if (ckv->get_key_type() == UNC_KT_VTN_DATAFLOW) { + pfc_timespec_t dataflow_tspec; + dataflow_tspec.tv_sec = kIpcTimeoutDataflow; + dataflow_tspec.tv_nsec = 0; + sess->setTimeout(&dataflow_tspec); + UPLL_LOG_DEBUG("IPC Server Session timeout for data-flow set to %d", + kIpcTimeoutDataflow); + // XXX: store server session object in CKV user_data CKV + // for data-flow library + ckv->set_user_data(sess); } pfc_ipcresp_t ret = config_mgr_->KtServiceHandler(service, &msghdr, ckv); @@ -195,6 +216,19 @@ pfc_ipcresp_t UpllConfigSvc::KtService(pfc::core::ipc::ServerSession *sess, } // send the response + // Convert driver specific error UPLL_RC_ERR_CTR_DISCONNECTED + // to logical specific error UNC_UPLL_RC_ERR_RESOURCE_DISCONNECTED + if (msghdr.result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { + msghdr.result_code = UPLL_RC_ERR_RESOURCE_DISCONNECTED; + } + if (ckv->get_key_type() == UNC_KT_VTN_DATAFLOW) { + UPLL_LOG_TRACE("KT:UNC_KT_VTN_DATAFLOW result:%d", msghdr.result_code); + ckv->set_user_data(NULL); + if (msghdr.result_code == UPLL_RC_SUCCESS) { + delete ckv; + return 0; + } + } if (!IpcUtil::WriteKtResponse(sess, msghdr, ckv)) { UPLL_LOG_DEBUG("Failed to send response to key tree request"); delete ckv; @@ -216,7 +250,7 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( if (0 != (ipc_err = sess->getArgument(arg++, operation))) { UPLL_LOG_DEBUG("Unable to read operation from IPC request. Err=%d", - ipc_err); + ipc_err); return PFC_IPCRESP_FATAL; } switch (operation) { @@ -227,6 +261,7 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( " to infinite"); urc = config_mgr_->IsCandidateDirty(&dirty); // Write response + // No need to convert UPLL_RC_ERR_CTR_DISCONNECTED error code if ((0 != (ipc_err = sess->addOutput((uint32_t)operation))) || (0 != (ipc_err = sess->addOutput((uint32_t)urc))) || (0 != (ipc_err = sess->addOutput((uint8_t)dirty)))) { @@ -263,13 +298,13 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( } /* - pfc_timespec_t sess_timeout; - sess_timeout.tv_sec = kIpcTimeoutImport; - sess_timeout.tv_nsec = 0; - sess->setTimeout(&sess_timeout); - UPLL_LOG_DEBUG("IPC Server Session timeout for Import set to %d", - kIpcTimeoutImport); - */ + pfc_timespec_t sess_timeout; + sess_timeout.tv_sec = kIpcTimeoutImport; + sess_timeout.tv_nsec = 0; + sess->setTimeout(&sess_timeout); + UPLL_LOG_DEBUG("IPC Server Session timeout for Import set to %d", + kIpcTimeoutImport); + */ sess->setTimeout(NULL); UPLL_LOG_DEBUG("IPC Server Session timeout for Import set to infinite."); @@ -278,6 +313,11 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( " session_id=%d, config_id=%d", urc, ctrlr_name, session_id, config_id); // Write response + // Convert driver specific error UNC_RC_ERR_CTR_DISCONNECTED + // to logical specific error UNC_UPLL_RC_ERR_RESOURCE_DISCONNECTED + if (urc == UPLL_RC_ERR_CTR_DISCONNECTED) { + urc = UPLL_RC_ERR_RESOURCE_DISCONNECTED; + } if ((0 != (ipc_err = sess->addOutput((uint32_t)operation))) || (0 != (ipc_err = sess->addOutput((uint32_t)urc)))) { UPLL_LOG_DEBUG("Unable to write IPC response. Err=%d", ipc_err); @@ -297,13 +337,13 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( } /* - pfc_timespec_t sess_timeout; - sess_timeout.tv_sec = kIpcTimeoutImport; - sess_timeout.tv_nsec = 0; - sess->setTimeout(&sess_timeout); - UPLL_LOG_DEBUG("IPC Server Session timeout for ImportMerge set to %d", - kIpcTimeoutImport); - */ + pfc_timespec_t sess_timeout; + sess_timeout.tv_sec = kIpcTimeoutImport; + sess_timeout.tv_nsec = 0; + sess->setTimeout(&sess_timeout); + UPLL_LOG_DEBUG("IPC Server Session timeout for ImportMerge set to %d", + kIpcTimeoutImport); + */ sess->setTimeout(NULL); UPLL_LOG_DEBUG("IPC Server Session timeout for Merge set to infinite"); @@ -311,6 +351,11 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( UPLL_LOG_TRACE("Merge: urc=%d, session_id=%d, config_id=%d", urc, session_id, config_id); // Write response + // Convert driver specific error UNC_RC_CTR_DISCONNECTED + // to logical specific error UNC_UPLL_RC_ERR_RESOURCE_DISCONNECTED + if (urc == UPLL_RC_ERR_CTR_DISCONNECTED) { + urc = UPLL_RC_ERR_RESOURCE_DISCONNECTED; + } if ((0 != (ipc_err = sess->addOutput((uint32_t)operation))) || (0 != (ipc_err = sess->addOutput((uint32_t)urc)))) { UPLL_LOG_DEBUG("Unable to write IPC response. Err=%d", ipc_err); @@ -332,6 +377,7 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( UPLL_LOG_TRACE("ClearImport: urc=%d, session_id=%d, config_id=%d", urc, session_id, config_id); // Write response + // No need to convert UNC_RC_CTR_DISCONNECTED error code if ((0 != (ipc_err = sess->addOutput((uint32_t)operation))) || (0 != (ipc_err = sess->addOutput((uint32_t)urc)))) { UPLL_LOG_DEBUG("Unable to write IPC response. Err=%d", ipc_err); @@ -342,12 +388,12 @@ pfc_ipcresp_t UpllConfigSvc::GlobalConfigService( break; case UPLL_IS_KEY_TYPE_IN_USE_OP: - return HandleIsKeyInUse(sess, arg); - break; + return HandleIsKeyInUse(sess, arg); + break; case UPLL_UPPL_UPDATE_OP: - return HandleUpplUpdate(sess, arg); - break; + return HandleUpplUpdate(sess, arg); + break; } return PFC_IPCRESP_FATAL; } @@ -465,8 +511,8 @@ pfc_ipcresp_t UpllConfigSvc::HandleUpplUpdate( if (ctr_val.valid[kIdxType] == UNC_VF_VALID) { // For Unknown, version is optional. if (((unc_keytype_ctrtype_t)ctr_val.type == UNC_CT_PFC || - (unc_keytype_ctrtype_t)ctr_val.type == UNC_CT_VNP || - (unc_keytype_ctrtype_t)ctr_val.type == UNC_CT_ODC)) { + (unc_keytype_ctrtype_t)ctr_val.type == UNC_CT_VNP || + (unc_keytype_ctrtype_t)ctr_val.type == UNC_CT_ODC)) { if (ctr_val.valid[kIdxVersion] == UNC_VF_INVALID) { urc = UPLL_RC_ERR_CFG_SYNTAX; } @@ -671,7 +717,7 @@ void UpllConfigSvc::PhysicalEventHandler(const IpcEvent &event) { uint32_t arg_cnt = sess.getResponseCount(); if (arg_cnt < unc::upll::ipc_util::kPhyConfigNotificationMandatoryFields) { UPLL_LOG_DEBUG("Not enough arguments in Physical event. Has only %u.", - arg_cnt); + arg_cnt); return; } @@ -767,14 +813,14 @@ void UpllConfigSvc::PhysicalEventHandler(const IpcEvent &event) { if ((old_ctr_st.oper_status == UPPL_CONTROLLER_OPER_UP) && (new_ctr_st.oper_status != UPPL_CONTROLLER_OPER_UP)) { config_mgr_->OnControllerStatusChange( - reinterpret_cast(key_ctr.controller_name), - UPPL_CONTROLLER_OPER_DOWN); + reinterpret_cast(key_ctr.controller_name), + UPPL_CONTROLLER_OPER_DOWN); } else if ((old_ctr_st.oper_status != UPPL_CONTROLLER_OPER_UP) && - (new_ctr_st.oper_status == UPPL_CONTROLLER_OPER_UP)) { + (new_ctr_st.oper_status == UPPL_CONTROLLER_OPER_UP)) { config_mgr_->OnControllerStatusChange( - reinterpret_cast(key_ctr.controller_name), - UPPL_CONTROLLER_OPER_UP); - } + reinterpret_cast(key_ctr.controller_name), + UPPL_CONTROLLER_OPER_UP); + } } } return; @@ -794,7 +840,12 @@ void UpllConfigSvc::PhysicalEventHandler(const IpcEvent &event) { return; } if (operation == UNC_OP_CREATE) { - // To do nothing? + config_mgr_->OnLogicalPortStatusChange( + reinterpret_cast( + key_port.domain_key.ctr_key.controller_name), + reinterpret_cast(key_port.domain_key.domain_name), + reinterpret_cast(key_port.port_id), + new_port_st.oper_status); } else if (operation == UNC_OP_UPDATE) { if (0 != (err = sess.getResponse(arg++, old_port_st))) { UPLL_LOG_DEBUG("Failed to get field at #%u in Physical event. " @@ -881,7 +932,7 @@ void UpllConfigSvc::PfcDriverAlarmHandler(const IpcEvent &event) { (0 != (err = sess.getResponse(arg++, keytype))) || (0 != (err = sess.getResponse(arg++, alarm_type)))) { UPLL_LOG_DEBUG("Failed to get header field #%u in the alarm from PFCDriver." - " Err=%d", arg, err); + " Err=%d", arg, err); return; } if (ctrlr_name[0] == 0) { @@ -980,10 +1031,10 @@ void UpllConfigSvc::UnregisterIpcEventHandlers() { pfcdriver_evhdlr_ = NULL; } } - // NOLINT -} // namesapce config_svc -} // namesapce upll -} // namesapce unc +// NOLINT +} // namespace config_svc +} // namespace upll +} // namespace unc /* Declare C++ module. */ PFC_MODULE_IPC_DECL(unc::upll::config_svc::UpllConfigSvc, diff --git a/coordinator/modules/upll/config_svc.hh b/coordinator/modules/upll/config_svc.hh index 27fa3e23..8aa39db3 100644 --- a/coordinator/modules/upll/config_svc.hh +++ b/coordinator/modules/upll/config_svc.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html diff --git a/coordinator/modules/upll/ctrlr_mgr.cc b/coordinator/modules/upll/ctrlr_mgr.cc index be143904..30d963bf 100644 --- a/coordinator/modules/upll/ctrlr_mgr.cc +++ b/coordinator/modules/upll/ctrlr_mgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -85,7 +85,7 @@ upll_rc_t CtrlrMgr::Add(const Ctrlr &ctrlr, /** * @brief Delete controller in both candidate and running * - * @param ctrlr_name[in] Controller name + * @param ctrlr_name[in] Controller name * * @retval UPLL_RC_SUCCESS, if controller deleted * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE, if entry not found @@ -105,7 +105,7 @@ upll_rc_t CtrlrMgr::Delete(const std::string &ctrlr_name, for (std::list::iterator it = ctrlrs_.begin(); it != ctrlrs_.end(); ++it) { if ((*it)->name_.compare(ctrlr_name) == 0 && - (*it)->datatype_ == datatype) { + (*it)->datatype_ == datatype) { ctrlr = *it; ctrlrs_.erase(it); delete ctrlr; @@ -128,7 +128,7 @@ upll_rc_t CtrlrMgr::Delete(const std::string &ctrlr_name, /** * @brief Update controller version * - * @param ctrlr_name[in] Controller name + * @param ctrlr_name[in] Controller name * @param ctrlr_version[in] Controller version * * @retval UPLL_RC_SUCCESS, if controller updated @@ -169,8 +169,8 @@ upll_rc_t CtrlrMgr::UpdateVersion(const std::string &ctrlr_name, /** * @brief Update audit_done flag in Running * - * @param ctrlr_name[in] Controller name - * @param audit_done[in] Audit Done flag + * @param ctrlr_name[in] Controller name + * @param audit_done[in] Audit Done flag * * @retval UPLL_RC_SUCCESS, if controller updated * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE, if entry not found @@ -207,8 +207,8 @@ upll_rc_t CtrlrMgr::UpdateAuditDone(const std::string &ctrlr_name, /** * @brief Update config_done flag in Running * - * @param ctrlr_name[in] Controller name - * @param config_done[in] Config Done flag + * @param ctrlr_name[in] Controller name + * @param config_done[in] Config Done flag * * @retval UPLL_RC_SUCCESS, if controller updated * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE, if entry not found @@ -245,8 +245,8 @@ upll_rc_t CtrlrMgr::UpdateConfigDone(const std::string &ctrlr_name, /** * @brief Update invalid_config flag in Running * - * @param ctrlr_name[in] Controller name - * @param invalid_config[in] Invalid Config flag + * @param ctrlr_name[in] Controller name + * @param invalid_config[in] Invalid Config flag * * @retval UPLL_RC_SUCCESS, if controller updated * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE, if entry not found @@ -359,7 +359,7 @@ bool CtrlrMgr::GetCtrlrTypeAndVersion(const char *ctrlr_name, * * @param ctrlr_name[in] Controller Name * - * @return + * @return */ upll_rc_t CtrlrMgr::IsConfigInvalid(const char *ctrlr_name, bool *config_invalid) { @@ -389,8 +389,8 @@ upll_rc_t CtrlrMgr::IsConfigInvalid(const char *ctrlr_name, * * @param ctrlr_name[in] Controller Name * - * @return - * + * @return + * */ upll_rc_t CtrlrMgr::IsConfigDone(const char *ctrlr_name, bool *config_done) { pfc::core::ScopedMutex lock(ctrlr_mutex_); @@ -447,7 +447,7 @@ upll_rc_t CtrlrMgr::IsAuditDone(const char *ctrlr_name, bool *audit_done) { /** * @brief Get Name of the first controller in the list * - * @param[in] datatype Datatype in which to be read + * @param[in] datatype Datatype in which to be read * @param[out] first_name Name of the first controller * * @return UPLL_RC_SUCCES, when name is read from the list @@ -485,9 +485,9 @@ upll_rc_t CtrlrMgr::GetFirstCtrlrName( /** * @brief Get Name of the next controller in the list * - * @param[in] name Name of the input controller - * @param[in] datatype Datatype in which to be read - * @param[out] next_name Name of the next controller + * @param[in] name Name of the input controller + * @param[in] datatype Datatype in which to be read + * @param[out] next_name Name of the next controller * * @return UPLL_RC_SUCCES, when name is read from the list * UPLL_RC_ERR_NO_SUCH_INSTANCE when there is no matching entry @@ -498,7 +498,7 @@ upll_rc_t CtrlrMgr::GetNextCtrlrName( std::string *next_name) { pfc::core::ScopedMutex lock(ctrlr_mutex_); UPLL_LOG_TRACE("Input Ctrlr (%s) next Ctrlr (%s) ", - in_name.c_str(), (*next_name).c_str()); + in_name.c_str(), (*next_name).c_str()); upll_keytype_datatype_t mapped_dt; mapped_dt = MapDataType(datatype); if (next_name == NULL) { @@ -515,7 +515,7 @@ upll_rc_t CtrlrMgr::GetNextCtrlrName( continue; if ((*it)->name_.compare(in_name) > 0) { UPLL_LOG_DEBUG("ctlr in list (%s) and input ctrlr (%s) are same", - (*it)->name_.c_str(), in_name.c_str()); + (*it)->name_.c_str(), in_name.c_str()); *next_name = (*it)->name_; UPLL_LOG_DEBUG("next_name Ctrlr (%s)", (*next_name).c_str()); return UPLL_RC_SUCCESS; @@ -584,15 +584,15 @@ void CtrlrMgr::PrintCtrlrList() { return; } ss << "\n***********************************************************" - << "name, type, version, audit_done, config_done, invalid_config," - << " datatype\n" - << "\n***********************************************************"; + << "name, type, version, audit_done, config_done, invalid_config," + << " datatype\n" + << "\n***********************************************************"; for (std::list::iterator it = ctrlrs_.begin(); it != ctrlrs_.end(); ++it) { ss << (*it)->name_.c_str() << ", " << (*it)->type_ << ", " - << (*it)->version_.c_str() << ", " << (*it)->audit_done_ << ", " - << (*it)->config_done_ << ", " << (*it)->invalid_config_ << ", " - << (*it)->datatype_ << "\n"; + << (*it)->version_.c_str() << ", " << (*it)->audit_done_ << ", " + << (*it)->config_done_ << ", " << (*it)->invalid_config_ << ", " + << (*it)->datatype_ << "\n"; } UPLL_LOG_DEBUG("\n%s", ss.str().c_str()); ss << "\n***********************************************************"; diff --git a/coordinator/modules/upll/ctrlr_mgr.hh b/coordinator/modules/upll/ctrlr_mgr.hh index e1da57a9..1c6222b1 100644 --- a/coordinator/modules/upll/ctrlr_mgr.hh +++ b/coordinator/modules/upll/ctrlr_mgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -26,41 +26,41 @@ class CtrlrMgr { public: static const uint32_t CTRLR_NAME_LEN = 31; class Ctrlr { - public: - friend class CtrlrMgr; - Ctrlr(const char *name, unc_keytype_ctrtype_t type, const char *version) + public: + friend class CtrlrMgr; + Ctrlr(const char *name, unc_keytype_ctrtype_t type, const char *version) :name_(name), type_(type), version_(version) { - invalid_config_ = false; - audit_done_ = false; - config_done_ = false; - datatype_ = UPLL_DT_CANDIDATE; - } - Ctrlr(const Ctrlr &ctrlr, upll_keytype_datatype_t datatype) + invalid_config_ = false; + audit_done_ = false; + config_done_ = false; + datatype_ = UPLL_DT_CANDIDATE; + } + Ctrlr(const Ctrlr &ctrlr, upll_keytype_datatype_t datatype) :name_(ctrlr.name_), version_(ctrlr.version_) { - UPLL_FUNC_TRACE; - type_ = ctrlr.type_; - invalid_config_ = ctrlr.invalid_config_; - audit_done_ = ctrlr.audit_done_; - config_done_ = ctrlr.config_done_; - datatype_ = datatype; - } - ~Ctrlr() { - UPLL_FUNC_TRACE; - name_.clear(); - version_.clear(); - } - - private: - std::string name_; - unc_keytype_ctrtype_t type_; - std::string version_; - bool audit_done_; // true, if audit is completed. - // available only in running - bool config_done_; // available only in running - bool invalid_config_; // Invalid config status after audit failure - // available only in running - upll_keytype_datatype_t datatype_; - // if it is Running, Ctrlr is available in both candidate and running + UPLL_FUNC_TRACE; + type_ = ctrlr.type_; + invalid_config_ = ctrlr.invalid_config_; + audit_done_ = ctrlr.audit_done_; + config_done_ = ctrlr.config_done_; + datatype_ = datatype; + } + ~Ctrlr() { + UPLL_FUNC_TRACE; + name_.clear(); + version_.clear(); + } + + private: + std::string name_; + unc_keytype_ctrtype_t type_; + std::string version_; + bool audit_done_; // true, if audit is completed. + // available only in running + bool config_done_; // available only in running + bool invalid_config_; // Invalid config status after audit failure + // available only in running + upll_keytype_datatype_t datatype_; + // if it is Running, Ctrlr is available in both candidate and running }; // Class Ctrlr upll_rc_t Add(const Ctrlr &ctrlr, const upll_keytype_datatype_t datatype); @@ -121,5 +121,5 @@ class CtrlrMgr { } // namespace config_momgr } // namespace upll } // namespace unc - // NOLINT +// NOLINT #endif // UPLL_CTRLR_MGR_HH_ diff --git a/coordinator/modules/upll/dbconn_mgr.cc b/coordinator/modules/upll/dbconn_mgr.cc new file mode 100644 index 00000000..b2921f93 --- /dev/null +++ b/coordinator/modules/upll/dbconn_mgr.cc @@ -0,0 +1,362 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/* + * config_mgr.cc - UPLL Config Manager + */ + +#include +#include +#include "upll_util.hh" +#include "dbconn_mgr.hh" + +namespace unc { +namespace upll { +namespace config_momgr { + +using unc::upll::dal::DalOdbcMgr; +namespace uudal = unc::upll::dal; +using namespace unc::upll::upll_util; + +// Error translation given below apply for Connect/Disconnect/Commit/Rollback +// Operations only. +upll_rc_t UpllDbConnMgr::ConvertDalResultCode(uudal::DalResultCode drc) { + switch (drc) { + case uudal::kDalRcSuccess: + return UPLL_RC_SUCCESS; + case uudal::kDalRcConnNotEstablished: + case uudal::kDalRcConnNotAvailable: + case uudal::kDalRcConnTimeOut: + case uudal::kDalRcQueryTimeOut: + return UPLL_RC_ERR_RESOURCE_DISCONNECTED; + case uudal::kDalRcTxnError: + case uudal::kDalRcAccessViolation: + return UPLL_RC_ERR_DB_ACCESS; + case uudal::kDalRcNotDisconnected: + case uudal::kDalRcInvalidConnHandle: + case uudal::kDalRcInvalidCursor: + case uudal::kDalRcDataError: + case uudal::kDalRcRecordAlreadyExists: + case uudal::kDalRcParentNotFound: + case uudal::kDalRcRecordNotFound: + case uudal::kDalRcRecordNoMore: + case uudal::kDalRcMemoryError: + case uudal::kDalRcInternalError: + case uudal::kDalRcGeneralError: + // default: + return UPLL_RC_ERR_GENERIC; + } + return UPLL_RC_ERR_GENERIC; +} + + +void UpllDbConnMgr::ConvertConnInfoToStr() const { +#ifdef PFC_VERBOSE_DEBUG + std::stringstream ss; + ss << " Max No. Of Connections:" << max_ro_conns_ + << " No. Of Connections In Use:" << active_ro_conns_cnt_ + << " No. Of Free Connections:" << (max_ro_conns_ - active_ro_conns_cnt_); + UPLL_LOG_DEBUG("DbConn: %s", ss.str().c_str()); +#endif +} + +upll_rc_t UpllDbConnMgr::DalOpen(DalOdbcMgr *dom, bool read_write_conn) { + UPLL_FUNC_TRACE; + + uudal::DalResultCode drc; + + uudal::DalConnType conn_type = ((read_write_conn) ? uudal::kDalConnReadWrite : + uudal::kDalConnReadOnly); + // Initialize + drc = dom->Init(); + if (drc != uudal::kDalRcSuccess) { + if (read_write_conn) { + UPLL_LOG_FATAL("Failed to initialize DalOdbcMgr. Err=%d", drc); + } else { + UPLL_LOG_ERROR("Failed to initialize DalOdbcMgr. Err=%d", drc); + } + return ConvertDalResultCode(drc); + } else { + UPLL_LOG_TRACE("DalOdbcMgr init successful."); + } + + // Connect to DB + drc = dom->ConnectToDb(conn_type); + if (drc != uudal::kDalRcSuccess) { + if (read_write_conn) { + UPLL_LOG_FATAL("Failed to connect to database. Err=%d", drc); + } else { + UPLL_LOG_ERROR("Failed to connect to database. Err=%d", drc); + } + return ConvertDalResultCode(drc); + } else { + UPLL_LOG_TRACE("Connected to database."); + } + + return UPLL_RC_SUCCESS; +} + +upll_rc_t UpllDbConnMgr::DalTxClose(DalOdbcMgr *dom, bool commit) { + UPLL_FUNC_TRACE; + + uudal::DalResultCode drc; + upll_rc_t urc = UPLL_RC_SUCCESS; + + // Commit or Rollback is required only for read-write connections + if ((dom->get_conn_type() == uudal::kDalConnReadWrite) && (commit)) { + // Commit the transaction + drc = dom->CommitTransaction(); + if (drc != uudal::kDalRcSuccess) { + UPLL_LOG_ERROR("Failed to commit DB transaction. Err=%d", drc); + urc = ConvertDalResultCode(drc); + } else { + UPLL_LOG_TRACE("Committed the DB transaction."); + urc = UPLL_RC_SUCCESS; + } + } else { + // Rollback the transaction + drc = dom->RollbackTransaction(); + if (drc != uudal::kDalRcSuccess) { + UPLL_LOG_ERROR("Failed to rollback DB transaction. Err=%d", drc); + urc = ConvertDalResultCode(drc); + } else { + UPLL_LOG_TRACE("Rolledback the DB transaction."); + urc = UPLL_RC_SUCCESS; + } + } + + return urc; +} + +// GetConfigRwConn() should be called only after InitializeDbConnections() +// It cannot be called after TerminateAllDbConns() +DalOdbcMgr *UpllDbConnMgr::GetConfigRwConn() { + config_rw_conn_->in_use_cnt++; + if (config_rw_conn_->in_use_cnt > 1) { + UPLL_LOG_TRACE("Config connection shared %d times", + config_rw_conn_->in_use_cnt); + } + return &config_rw_conn_->dom; +} + +// GetAlarmRwConn() should be called only after InitializeDbConnections() +// It cannot be called after TerminateAllDbConns() +DalOdbcMgr *UpllDbConnMgr::GetAlarmRwConn() { + alarm_rw_conn_->in_use_cnt++; + if (alarm_rw_conn_->in_use_cnt > 1) { + UPLL_LOG_TRACE("Alarm connection shared %d times", + alarm_rw_conn_->in_use_cnt); + } + return &alarm_rw_conn_->dom; +} + +void UpllDbConnMgr::ReleaseRwConn(DalOdbcMgr *dom) { + UPLL_FUNC_TRACE; + pfc::core::ScopedMutex lock(conn_mutex_); + DbConn *dbc = NULL; + if ((config_rw_conn_ != NULL) && (&config_rw_conn_->dom == dom)) { + dbc = config_rw_conn_; + } else if ((alarm_rw_conn_ != NULL) && (&alarm_rw_conn_->dom == dom)) { + dbc = alarm_rw_conn_; + } + if (dbc != NULL) { + if (dbc->in_use_cnt == 0) { // Should not happen + UPLL_LOG_INFO("Error: RW connection is not acquired, but released"); + ConvertConnInfoToStr(); + return; + } + dbc->in_use_cnt--; + if ( dom->get_conn_state() == uudal::kDalDbDisconnected ) { + UPLL_LOG_FATAL("RW connection Failure."); + } + } else { + for (std::list::iterator iter = stale_rw_conn_pool_.begin(); + iter != stale_rw_conn_pool_.end(); iter++) { + dbc = *iter; + if (dom == &dbc->dom) { + if (dbc->in_use_cnt == 0) { // Should not happen + UPLL_LOG_INFO("Error: RW connection is not acquired, but released"); + return; + } + if ( dom->get_conn_state() == uudal::kDalDbDisconnected ) { + UPLL_LOG_FATAL("Stale RW connection Failure."); + } + dbc->in_use_cnt--; + if (dbc->in_use_cnt == 0) { + TerminateDbConn(dbc); + delete dbc; + stale_rw_conn_pool_.erase(iter); + } + ConvertConnInfoToStr(); + return; + } + } + UPLL_LOG_INFO("RW connection not found"); + } + ConvertConnInfoToStr(); +} + +upll_rc_t UpllDbConnMgr::InitializeDbConnections() { + UPLL_FUNC_TRACE; + pfc::core::ScopedMutex lock(conn_mutex_); + upll_rc_t urc = UPLL_RC_SUCCESS; + + config_rw_conn_ = new DbConn; + if (UPLL_RC_SUCCESS != (urc = DalOpen(&config_rw_conn_->dom, true))) { + // return urc; // Other dom object needs to be created. + } + alarm_rw_conn_ = new DbConn; + if (UPLL_RC_SUCCESS != (urc = DalOpen(&alarm_rw_conn_->dom, true))) { + return urc; + } + ConvertConnInfoToStr(); + return urc; +} + +upll_rc_t UpllDbConnMgr::TerminateDbConn(DbConn *dbc) { + UPLL_FUNC_TRACE + if (dbc->in_use_cnt > 0) { + dbc->close_on_finish = true; + UPLL_LOG_DEBUG("Connection is in use (%d), setting close_on_finish", + dbc->in_use_cnt); + } else { + uudal::DalResultCode drc = dbc->dom.DisconnectFromDb(); + if (drc != uudal::kDalRcSuccess) { + UPLL_LOG_ERROR("Failed to disconnect from database. Err=%d", drc); + return UPLL_RC_ERR_GENERIC; + } + } + return UPLL_RC_SUCCESS; +} + +upll_rc_t UpllDbConnMgr::TerminateAllDbConns() { + UPLL_FUNC_TRACE; + UPLL_LOG_DEBUG("All DB connections are being closed"); + pfc::core::ScopedMutex lock(conn_mutex_); + upll_rc_t urc = UPLL_RC_SUCCESS; + if ( config_rw_conn_!= NULL ) { + TerminateDbConn(config_rw_conn_); + if (config_rw_conn_->close_on_finish) { + UPLL_LOG_DEBUG("config_rw_conn_ is in use, putting on the stale list"); + stale_rw_conn_pool_.push_back(config_rw_conn_); + } else { + delete config_rw_conn_; + } + config_rw_conn_ = NULL; + } + if ( alarm_rw_conn_!= NULL ) { + TerminateDbConn(alarm_rw_conn_); + if (alarm_rw_conn_->close_on_finish) { + UPLL_LOG_DEBUG("alarm_rw_conn_ is in use, putting on the stale list"); + stale_rw_conn_pool_.push_back(alarm_rw_conn_); + } else { + delete alarm_rw_conn_; + } + alarm_rw_conn_ = NULL; + } + + TerminateAllRoConns_NoLock(); + ConvertConnInfoToStr(); + return urc; +} + +upll_rc_t UpllDbConnMgr::TerminateAllRoConns_NoLock() { + UPLL_FUNC_TRACE; + UPLL_LOG_DEBUG("All DB RO connections are being closed"); + std::list::iterator iter = ro_conn_pool_.begin(); + while (iter != ro_conn_pool_.end()) { + TerminateDbConn(*iter); + if ((*iter)->close_on_finish == true) { + iter++; + } else { + std::list::iterator tmp_iter = iter; + iter++; + DbConn *dbc = *tmp_iter; + delete dbc; + ro_conn_pool_.erase(tmp_iter); + active_ro_conns_cnt_--; + ro_conn_sem_.post(); + } + } + ConvertConnInfoToStr(); + return UPLL_RC_SUCCESS; +} + +upll_rc_t UpllDbConnMgr::AcquireRoConn(DalOdbcMgr **dom) { + UPLL_FUNC_TRACE; + UPLL_LOG_DEBUG("Acquiring RO Connection"); + ro_conn_sem_.wait(); + pfc::core::ScopedMutex lock(conn_mutex_); + + // First check if there is a not-in-use connection available + for (std::list::iterator iter = ro_conn_pool_.begin(); + iter != ro_conn_pool_.end(); iter++) { + if ((*iter)->in_use_cnt == 0) { + (*iter)->in_use_cnt = 1; + *dom = &(*iter)->dom; + return UPLL_RC_SUCCESS; + } + } + if (active_ro_conns_cnt_ >= max_ro_conns_) { + UPLL_LOG_INFO("Error: Could not find a not-in-use connection"); + return UPLL_RC_ERR_GENERIC; + } + + // Create a new connection + upll_rc_t urc = UPLL_RC_SUCCESS; + DbConn *ro_conn = new DbConn; + if (UPLL_RC_SUCCESS != (urc = DalOpen(&ro_conn->dom, false))) { + delete ro_conn; + TerminateAllRoConns_NoLock(); + return urc; + } + + ro_conn_pool_.push_back(ro_conn); + active_ro_conns_cnt_++; + + ro_conn->in_use_cnt = 1; + *dom = &ro_conn->dom; + return UPLL_RC_SUCCESS; +} + +upll_rc_t UpllDbConnMgr::ReleaseRoConn(DalOdbcMgr *dom) { + UPLL_FUNC_TRACE; + UPLL_LOG_DEBUG("Releasing RO Connection"); + pfc::core::ScopedMutex lock(conn_mutex_); + ConvertConnInfoToStr(); + for (std::list::iterator iter = ro_conn_pool_.begin(); + iter != ro_conn_pool_.end(); iter++) { + if (&(*iter)->dom == dom) { + (*iter)->in_use_cnt = 0; + if ((*iter)->close_on_finish == true) { + TerminateDbConn(*iter); + DbConn *dbc = *iter; + delete dbc; + ro_conn_pool_.erase(iter); + } else { + // If dom had encountered connection error, close all RO connections + if (dom->get_conn_state() == uudal::kDalDbDisconnected) { + UPLL_LOG_TRACE("DB RO connection error, closing all RO connections"); + TerminateAllRoConns_NoLock(); + } else { + ro_conn_sem_.post(); + } + } + ConvertConnInfoToStr(); + return UPLL_RC_SUCCESS; + } + } + ConvertConnInfoToStr(); + UPLL_LOG_INFO("Error: connection not found"); + return UPLL_RC_ERR_GENERIC; +} +// NOLINT +} // namespace config_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/dbconn_mgr.hh b/coordinator/modules/upll/dbconn_mgr.hh new file mode 100644 index 00000000..a0bdb401 --- /dev/null +++ b/coordinator/modules/upll/dbconn_mgr.hh @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef UPLL_DBCONN_MGR_HH_ +#define UPLL_DBCONN_MGR_HH_ + +#include + +#include "cxx/pfcxx/synch.hh" + +#include "unc/upll_errno.h" +#include "uncxx/upll_log.hh" + +#include "dal/dal_odbc_mgr.hh" + +namespace unc { +namespace upll { +namespace config_momgr { + +using unc::upll::dal::DalOdbcMgr; +namespace uudal = unc::upll::dal; + +class UpllDbConnMgr { + public: + explicit UpllDbConnMgr(size_t max_ro_conns) : ro_conn_sem_(max_ro_conns) { + config_rw_conn_ = alarm_rw_conn_ = NULL; + max_ro_conns_ = max_ro_conns; + active_ro_conns_cnt_= 0; + } + upll_rc_t InitializeDbConnections(); + upll_rc_t TerminateAllDbConns(); + // GetConfigRwConn() should be called after InitializeDbConnections() + // It cannot be called after TerminateAllDbConns() + DalOdbcMgr *GetConfigRwConn(); + // GetAlarmRwConn() should be called after InitializeDbConnections() + // It cannot be called after TerminateAllDbConns() + DalOdbcMgr *GetAlarmRwConn(); + void ReleaseRwConn(DalOdbcMgr *dom); + + inline size_t get_ro_conn_limit() const { return max_ro_conns_; } + upll_rc_t AcquireRoConn(DalOdbcMgr **); + upll_rc_t ReleaseRoConn(DalOdbcMgr *); + // void DestroyRoConns(); + upll_rc_t DalOpen(DalOdbcMgr *dom, bool read_write_conn); + upll_rc_t DalTxClose(DalOdbcMgr *dom, bool commit); + + static upll_rc_t ConvertDalResultCode(uudal::DalResultCode drc); + void ConvertConnInfoToStr() const; + + private: + class DbConn { + public: + DbConn() { in_use_cnt = 0; close_on_finish = false; } + DalOdbcMgr dom; // DAL object instance which manages the ODBC connection + uint32_t in_use_cnt; // If >0, connection is allocated + bool close_on_finish; // If true, the connection is closed after + // the connection is returned. + }; + DbConn* config_rw_conn_; // shared connection + DbConn* alarm_rw_conn_; // shared connection + size_t max_ro_conns_; + size_t active_ro_conns_cnt_; + std::list ro_conn_pool_; // not shared connection + // stale_rw_conn_pool_: rw connections that need to be closed and destroyed + std::list stale_rw_conn_pool_; + pfc::core::Mutex conn_mutex_; + pfc::core::Semaphore ro_conn_sem_; + + upll_rc_t TerminateDbConn(DbConn *); + upll_rc_t TerminateAllRoConns_NoLock(); +}; + +} // namespace config_momgr +} // namespace upll +} // namespace unc + + +#endif // UPLL_DBCONN_MGR_HH_ + diff --git a/coordinator/modules/upll/dhcprelay_if_momgr.cc b/coordinator/modules/upll/dhcprelay_if_momgr.cc index 5d3fc715..258eb5c4 100644 --- a/coordinator/modules/upll/dhcprelay_if_momgr.cc +++ b/coordinator/modules/upll/dhcprelay_if_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -18,56 +18,57 @@ namespace upll { namespace kt_momgr { BindInfo DhcpRelayIfMoMgr::dhcprelay_if_bind_info[] = { - { uudst::dhcprelay_interface::kDbiVtnName, CFG_KEY, offsetof( - key_dhcp_relay_if, vrt_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::dhcprelay_interface::kDbiVrtName, CFG_KEY, offsetof( - key_dhcp_relay_if, vrt_key.vrouter_name), - uud::kDalChar, 32 }, - { uudst::dhcprelay_interface::kDbiIfName, CFG_KEY, offsetof( - key_dhcp_relay_if, if_name), - uud::kDalChar, 32 }, - { uudst::dhcprelay_interface::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::dhcprelay_interface::kDbiDomainId, CK_VAL, offsetof(key_user_data, - domain_id), - uud::kDalChar, 32 }, - { uudst::dhcprelay_interface::kDbiCsRowstatus, CS_VAL, offsetof( - val_dhcp_relay_if, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::dhcprelay_interface::kDbiFlags, CK_VAL, offsetof(key_user_data, - flags), - uud::kDalUint8, 1 }, }; + { uudst::dhcprelay_interface::kDbiVtnName, CFG_KEY, offsetof( + key_dhcp_relay_if, vrt_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::dhcprelay_interface::kDbiVrtName, CFG_KEY, offsetof( + key_dhcp_relay_if, vrt_key.vrouter_name), + uud::kDalChar, 32 }, + { uudst::dhcprelay_interface::kDbiIfName, CFG_KEY, offsetof( + key_dhcp_relay_if, if_name), + uud::kDalChar, 32 }, + { uudst::dhcprelay_interface::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::dhcprelay_interface::kDbiDomainId, CK_VAL, offsetof(key_user_data, + domain_id), + uud::kDalChar, 32 }, + { uudst::dhcprelay_interface::kDbiCsRowstatus, CS_VAL, offsetof( + val_dhcp_relay_if, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::dhcprelay_interface::kDbiFlags, CK_VAL, offsetof(key_user_data, + flags), + uud::kDalUint8, 1 }, }; BindInfo DhcpRelayIfMoMgr::dhcprealy_if_maintbl_key_update_bind_info[] = { - { uudst::dhcprelay_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_dhcp_relay_if, vrt_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::dhcprelay_interface::kDbiVrtName, CFG_MATCH_KEY, offsetof( - key_dhcp_relay_if, vrt_key.vrouter_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::dhcprelay_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( - key_dhcp_relay_if, if_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::dhcprelay_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::dhcprelay_interface::kDbiVrtName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::dhcprelay_interface::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } }; + { uudst::dhcprelay_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_dhcp_relay_if, vrt_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::dhcprelay_interface::kDbiVrtName, CFG_MATCH_KEY, offsetof( + key_dhcp_relay_if, vrt_key.vrouter_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::dhcprelay_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( + key_dhcp_relay_if, if_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::dhcprelay_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::dhcprelay_interface::kDbiVrtName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::dhcprelay_interface::kDbiFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 } }; DhcpRelayIfMoMgr::DhcpRelayIfMoMgr() { UPLL_FUNC_TRACE - ntable = MAX_MOMGR_TBLS; + ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL]= new Table(uudst::kDbiDhcpRelayIfTbl, UNC_KT_DHCPRELAY_IF, - dhcprelay_if_bind_info, IpctSt::kIpcStKeyDhcpRelayIf, - IpctSt::kIpcStValDhcpRelayIf, - uudst::dhcprelay_interface::kDbiDhcpRelayIfNumCols); + dhcprelay_if_bind_info, + IpctSt::kIpcStKeyDhcpRelayIf, + IpctSt::kIpcStValDhcpRelayIf, + uudst::dhcprelay_interface::kDbiDhcpRelayIfNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; nchild = 0; @@ -92,47 +93,48 @@ bool DhcpRelayIfMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, return PFC_TRUE; } -upll_rc_t DhcpRelayIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, +upll_rc_t DhcpRelayIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - if (ikey->get_key_type() != UNC_KT_DHCPRELAY_IF) + if (ikey->get_key_type() != UNC_KT_DHCPRELAY_IF) result_code = UPLL_RC_ERR_CFG_SYNTAX; - #if 0 +#if 0 /* Check if vrouter admin status is disabled */ result_code = IsAdminStatusEnable(ikey, dmi); if (result_code != UPLL_RC_SUCCESS) { return UPLL_RC_ERR_CFG_SEMANTIC; } - #endif +#endif - /* Check if vrt interface exists */ + /* Check if vrt interface exists */ MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VRT_IF))); + (GetMoManager(UNC_KT_VRT_IF))); if (!mgr) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; } ConfigKeyVal *ckv_vrtif = NULL; result_code = mgr->GetChildConfigKey(ckv_vrtif, ikey); if (!ckv_vrtif || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returing error %d",result_code); + UPLL_LOG_DEBUG("Returing error %d", result_code); return UPLL_RC_ERR_GENERIC; } DbSubOp dbop = {kOpReadExist, kOpMatchNone, kOpInOutNone}; result_code = mgr->UpdateConfigDB(ckv_vrtif, req->datatype, - UNC_OP_READ, dmi, &dbop, MAINTBL); + UNC_OP_READ, dmi, &dbop, MAINTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Vrt interface does not exist %s",(ckv_vrtif->ToStr()).c_str()); + UPLL_LOG_DEBUG("Vrt interface does not exist %s", + (ckv_vrtif->ToStr()).c_str()); delete ckv_vrtif; return UPLL_RC_ERR_CFG_SEMANTIC; } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { delete ckv_vrtif; return UPLL_RC_SUCCESS; } else { - UPLL_LOG_DEBUG(" Returning error %d",result_code); + UPLL_LOG_DEBUG(" Returning error %d", result_code); } delete ckv_vrtif; return result_code; @@ -151,7 +153,7 @@ upll_rc_t DhcpRelayIfMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -181,13 +183,6 @@ upll_rc_t DhcpRelayIfMoMgr::ValidateCapability(IpcReqRespHeader *req, &max_instance_count, &max_attrs, &attrs); - if (ret_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; } case UNC_OP_UPDATE: { @@ -267,7 +262,7 @@ upll_rc_t DhcpRelayIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, void *pkey; if (parent_key == NULL) { dhcp_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_if))); + (ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_if))); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_DHCPRELAY_IF, IpctSt::kIpcStKeyDhcpRelayIf, dhcp_key, NULL); @@ -281,35 +276,37 @@ upll_rc_t DhcpRelayIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, dhcp_key = reinterpret_cast(okey->get_key()); } else { dhcp_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_if))); + (ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_if))); } unc_key_type_t keytype = parent_key->get_key_type(); switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(dhcp_key->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName + 1)); *(dhcp_key->vrt_key.vrouter_name) = *""; break; case UNC_KT_VROUTER: uuu::upll_strncpy(dhcp_key->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(dhcp_key->vrt_key.vrouter_name, - reinterpret_cast(pkey)->vrouter_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(pkey)->vrouter_name, + (kMaxLenVnodeName + 1)); break; case UNC_KT_VRT_IF: case UNC_KT_DHCPRELAY_IF: uuu::upll_strncpy(dhcp_key->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(dhcp_key->vrt_key.vrouter_name, - reinterpret_cast(pkey)->vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast + (pkey)->vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(dhcp_key->if_name, - reinterpret_cast(pkey)->if_name, - (kMaxLenInterfaceName + 1)); + reinterpret_cast(pkey)->if_name, + (kMaxLenInterfaceName + 1)); default: break; } @@ -340,13 +337,15 @@ upll_rc_t DhcpRelayIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, (ikey->get_key()); if (!pkey) return UPLL_RC_ERR_GENERIC; key_vrt *vrt_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vrt))); + (ConfigKeyVal::Malloc(sizeof(key_vrt))); uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - uuu::upll_strncpy(vrt_key->vrouter_name, - reinterpret_cast(pkey)->vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(vrt_key->vrouter_name, + reinterpret_cast + (pkey)->vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, vrt_key, NULL); if (okey == NULL) { @@ -392,7 +391,7 @@ upll_rc_t DhcpRelayIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, reinterpret_cast(GetVal(req)); val_dhcp_relay_if *dhcp_val = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_dhcp_relay_if))); + sizeof(val_dhcp_relay_if))); memcpy(dhcp_val, ival, sizeof(val_dhcp_relay_if)); tmp1 = new ConfigVal(IpctSt::kIpcStValDhcpRelayIf, dhcp_val); } @@ -400,7 +399,7 @@ upll_rc_t DhcpRelayIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, void *tkey = (req)->get_key(); key_dhcp_relay_if *ikey = reinterpret_cast(tkey); key_dhcp_relay_if *dhcp_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_if))); + ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_if))); memcpy(dhcp_key, ikey, sizeof(key_dhcp_relay_if)); okey = new ConfigKeyVal(UNC_KT_DHCPRELAY_IF, IpctSt::kIpcStKeyDhcpRelayIf, dhcp_key, tmp1); @@ -417,7 +416,7 @@ upll_rc_t DhcpRelayIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, upll_rc_t DhcpRelayIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *upd_key, + ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; @@ -426,25 +425,28 @@ upll_rc_t DhcpRelayIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED - : UNC_CS_NOT_APPLIED; + : UNC_CS_NOT_APPLIED; if (dhcp_val == NULL) return UPLL_RC_ERR_GENERIC; if (op == UNC_OP_CREATE) { dhcp_val->cs_row_status = cs_status; } - UPLL_LOG_TRACE("%s",(ikey->ToStrAll()).c_str()); - val_dhcp_relay_if *dhcp_val2 = - reinterpret_cast(GetVal(upd_key)); + UPLL_LOG_TRACE("%s", (ikey->ToStrAll()).c_str()); + val_dhcp_relay_if *dhcp_val2 = + reinterpret_cast(GetVal(upd_key)); if (dhcp_val2 == NULL) return UPLL_RC_ERR_GENERIC; if (UNC_OP_UPDATE == op) { - UPLL_LOG_TRACE("%s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); dhcp_val->cs_row_status = dhcp_val2->cs_row_status; } return UPLL_RC_SUCCESS; } upll_rc_t DhcpRelayIfMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_dhcp_relay_if_t *val; val = (ckv_running != NULL) ? @@ -452,8 +454,8 @@ upll_rc_t DhcpRelayIfMoMgr::UpdateAuditConfigStatus( if (NULL == val) return UPLL_RC_ERR_GENERIC; if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; return result_code; } @@ -471,21 +473,21 @@ upll_rc_t DhcpRelayIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_dhcp_relay_if_t * key_dhcp = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_if_t))); uuu::upll_strncpy(key_dhcp->vrt_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, (kMaxLenVtnName + 1)); + key_rename->old_unc_vtn_name, (kMaxLenVtnName + 1)); if (ikey->get_key_type() == UNC_KT_VROUTER) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { free(key_dhcp); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_dhcp->vrt_key.vrouter_name, - key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); + key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { FREE_IF_NOT_NULL(key_dhcp); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_dhcp->vrt_key.vrouter_name, - key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); + key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); } okey = new ConfigKeyVal(UNC_KT_DHCPRELAY_IF, IpctSt::kIpcStKeyDhcpRelayIf, @@ -511,8 +513,8 @@ upll_rc_t DhcpRelayIfMoMgr::ValidateMessage(IpcReqRespHeader *req, upll_rc_t ret_val; if (ikey->get_st_num() != IpctSt::kIpcStKeyDhcpRelayIf) { - UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", - ikey->get_st_num()); + UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", + ikey->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_dhcp_relay_if *dhcprelayif_key = @@ -535,10 +537,10 @@ upll_rc_t DhcpRelayIfMoMgr::ValidateMessage(IpcReqRespHeader *req, if (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE || UPLL_DT_IMPORT == dt_type) { - if (option1 != UNC_OPT1_NORMAL) + if (option1 != UNC_OPT1_NORMAL) return UPLL_RC_ERR_INVALID_OPTION1; if (option2 != UNC_OPT2_NONE) - return UPLL_RC_ERR_INVALID_OPTION2; + return UPLL_RC_ERR_INVALID_OPTION2; UPLL_LOG_DEBUG("Value structure is none for operation type:%d", op); return UPLL_RC_SUCCESS; } else { @@ -551,18 +553,18 @@ upll_rc_t DhcpRelayIfMoMgr::ValidateMessage(IpcReqRespHeader *req, } upll_rc_t DhcpRelayIfMoMgr::ValidateDhcpRelayIfKey( - key_dhcp_relay_if *dhcprelayif_key, + key_dhcp_relay_if *dhcprelayif_key, unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val; ret_val = ValidateKey(reinterpret_cast - (dhcprelayif_key->vrt_key.vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + (dhcprelayif_key->vrt_key.vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. VTN Name - %s", - dhcprelayif_key->vrt_key.vtn_key.vtn_name); + dhcprelayif_key->vrt_key.vtn_key.vtn_name); return UPLL_RC_ERR_CFG_SYNTAX; } ret_val = ValidateKey(reinterpret_cast @@ -570,17 +572,17 @@ upll_rc_t DhcpRelayIfMoMgr::ValidateDhcpRelayIfKey( kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. VROUTER Name - %s", - dhcprelayif_key->vrt_key.vrouter_name); + dhcprelayif_key->vrt_key.vrouter_name); return UPLL_RC_ERR_CFG_SYNTAX; } if (operation != UNC_OP_READ_SIBLING_COUNT && operation != UNC_OP_READ_SIBLING_BEGIN) { ret_val = ValidateKey(reinterpret_cast - (dhcprelayif_key->if_name), kMinLenInterfaceName, - kMaxLenInterfaceName); + (dhcprelayif_key->if_name), kMinLenInterfaceName, + kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. If name - %s", - dhcprelayif_key->if_name); + dhcprelayif_key->if_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -596,25 +598,26 @@ upll_rc_t DhcpRelayIfMoMgr::IsReferenced(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } -upll_rc_t DhcpRelayIfMoMgr::IsAdminStatusEnable(ConfigKeyVal *ikey, +upll_rc_t DhcpRelayIfMoMgr::IsAdminStatusEnable(ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - MoMgrImpl *vrt_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VROUTER))); + MoMgrImpl *vrt_mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VROUTER))); if (!vrt_mgr) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; } ConfigKeyVal *ckv_vrt = NULL; result_code = GetParentConfigKey(ckv_vrt, ikey); if (!ckv_vrt || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returing error %d",result_code); + UPLL_LOG_DEBUG("Returing error %d", result_code); return UPLL_RC_ERR_GENERIC; } DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; result_code = vrt_mgr->ReadConfigDB(ckv_vrt, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { val_vrt_t *vrt_val = reinterpret_cast(GetVal(ckv_vrt)); if (vrt_val && vrt_val->dhcp_relay_admin_status == UPLL_ADMIN_ENABLE) { diff --git a/coordinator/modules/upll/dhcprelay_if_momgr.hh b/coordinator/modules/upll/dhcprelay_if_momgr.hh index 9fe9d124..d0f3d29c 100644 --- a/coordinator/modules/upll/dhcprelay_if_momgr.hh +++ b/coordinator/modules/upll/dhcprelay_if_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,170 +20,173 @@ namespace kt_momgr { class DhcpRelayIfMoMgr : public VnodeChildMoMgr { - private: - static BindInfo dhcprelay_if_bind_info[]; - static BindInfo dhcprealy_if_maintbl_key_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - return UPLL_RC_ERR_GENERIC; - } + private: + static BindInfo dhcprelay_if_bind_info[]; + static BindInfo dhcprealy_if_maintbl_key_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + return UPLL_RC_ERR_GENERIC; + } - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool audit) { - return true; - } - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool audit) { + return true; + } + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_DHCPRELAY_IF keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_dhcp_relay_if is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_DHCPRELAY_IF keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_dhcp_relay_if is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_DHCP_RELAY_IF Keytype key structure. - * - * @param[in] key_dhcp_relay_if KT_DHCP_RELAY_IF key structure. - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateDhcpRelayIfKey(key_dhcp_relay_if *dhcprelayif_key, - unc_keytype_operation_t operation = UNC_OP_INVALID); + /** + * @Brief Validates the syntax for KT_DHCP_RELAY_IF Keytype key structure. + * + * @param[in] key_dhcp_relay_if KT_DHCP_RELAY_IF key structure. + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateDhcpRelayIfKey( + key_dhcp_relay_if *dhcprelayif_key, + unc_keytype_operation_t operation = UNC_OP_INVALID); - /** - * @Brief Checks if the specified key type(KT_DHCPRELAY_IF) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] ctrlr_name controller name associated with the input ikey. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char *ctrlr_name); + /** + * @Brief Checks if the specified key type(KT_DHCPRELAY_IF) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] ctrlr_name controller name associated with the input ikey. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char *ctrlr_name); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main - * table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /* Rename */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t IsAdminStatusEnable(ConfigKeyVal *ikey,DalDmlIntf *dmi); - - public: - DhcpRelayIfMoMgr(); - virtual ~DhcpRelayIfMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main + * table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /* Rename */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + upll_rc_t IsAdminStatusEnable(ConfigKeyVal *ikey, DalDmlIntf *dmi); - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, uint64_t index); + public: + DhcpRelayIfMoMgr(); + virtual ~DhcpRelayIfMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, uint64_t index); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/dhcprelay_server_momgr.cc b/coordinator/modules/upll/dhcprelay_server_momgr.cc index 45720866..2c1d5747 100644 --- a/coordinator/modules/upll/dhcprelay_server_momgr.cc +++ b/coordinator/modules/upll/dhcprelay_server_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -18,55 +18,57 @@ namespace upll { namespace kt_momgr { BindInfo DhcpRelayServerMoMgr::dhcprelay_server_bind_info[] = { - { uudst::dhcprelay_server::kDbiVtnName, CFG_KEY, offsetof( - key_dhcp_relay_server, vrt_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::dhcprelay_server::kDbiVrouterName, CFG_KEY, offsetof( - key_dhcp_relay_server, vrt_key.vrouter_name), - uud::kDalChar, 32 }, - { uudst::dhcprelay_server::kDbiServerIpAddr, CFG_KEY, offsetof( - key_dhcp_relay_server, server_addr), - uud::kDalUint32, 1 }, - { uudst::dhcprelay_server::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::dhcprelay_server::kDbiDomainId, CK_VAL, offsetof(key_user_data, - domain_id), - uud::kDalChar, 32 }, - { uudst::dhcprelay_server::kDbiCsRowstatus, CS_VAL, offsetof( - val_dhcp_relay_server, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::dhcprelay_server::kDbiFlags, CK_VAL, offsetof(key_user_data, - flags), - uud::kDalUint8, 1 }, }; - -BindInfo DhcpRelayServerMoMgr::dhcprealy_server_maintbl_key_update_bind_info[] = - { { uudst::dhcprelay_server::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_dhcp_relay_server, vrt_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::dhcprelay_server::kDbiVrouterName, CFG_MATCH_KEY, offsetof( + { uudst::dhcprelay_server::kDbiVtnName, CFG_KEY, offsetof( + key_dhcp_relay_server, vrt_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::dhcprelay_server::kDbiVrouterName, CFG_KEY, offsetof( key_dhcp_relay_server, vrt_key.vrouter_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::dhcprelay_server::kDbiServerIpAddr, CFG_MATCH_KEY, offsetof( + uud::kDalChar, 32 }, + { uudst::dhcprelay_server::kDbiServerIpAddr, CFG_KEY, offsetof( key_dhcp_relay_server, server_addr), - uud::kDalUint32, 1 }, - { uudst::dhcprelay_server::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::dhcprelay_server::kDbiVrouterName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::dhcprelay_server::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } }; + uud::kDalUint32, 1 }, + { uudst::dhcprelay_server::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::dhcprelay_server::kDbiDomainId, CK_VAL, offsetof(key_user_data, + domain_id), + uud::kDalChar, 32 }, + { uudst::dhcprelay_server::kDbiCsRowstatus, CS_VAL, offsetof( + val_dhcp_relay_server, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::dhcprelay_server::kDbiFlags, CK_VAL, offsetof(key_user_data, + flags), + uud::kDalUint8, 1 }, }; + +BindInfo DhcpRelayServerMoMgr::dhcprealy_server_maintbl_key_update_bind_info[] = +{ { uudst::dhcprelay_server::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_dhcp_relay_server, vrt_key.vtn_key.vtn_name), +uud::kDalChar, kMaxLenVtnName + 1 }, +{ uudst::dhcprelay_server::kDbiVrouterName, CFG_MATCH_KEY, offsetof( + key_dhcp_relay_server, vrt_key.vrouter_name), +uud::kDalChar, kMaxLenVnodeName + 1 }, +{ uudst::dhcprelay_server::kDbiServerIpAddr, CFG_MATCH_KEY, offsetof( + key_dhcp_relay_server, server_addr), +uud::kDalUint32, 1 }, +{ uudst::dhcprelay_server::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), +uud::kDalChar, kMaxLenVtnName + 1 }, +{ uudst::dhcprelay_server::kDbiVrouterName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), +uud::kDalChar, kMaxLenVnodeName + 1 }, +{ uudst::dhcprelay_server::kDbiFlags, CK_VAL, offsetof( + key_user_data_t, flags), +uud::kDalUint8, 1 } }; DhcpRelayServerMoMgr::DhcpRelayServerMoMgr() { UPLL_FUNC_TRACE - ntable = MAX_MOMGR_TBLS; + ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; - table[MAINTBL]= new Table( uudst::kDbiDhcpRelayServerTbl, + table[MAINTBL]= new Table( + uudst::kDbiDhcpRelayServerTbl, UNC_KT_DHCPRELAY_SERVER, dhcprelay_server_bind_info, - IpctSt::kIpcStKeyDhcpRelayServer, IpctSt::kIpcStValDhcpRelayServer, + IpctSt::kIpcStKeyDhcpRelayServer, + IpctSt::kIpcStValDhcpRelayServer, uudst::dhcprelay_server::kDbiDhcpRelayServerNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; @@ -92,21 +94,21 @@ bool DhcpRelayServerMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, return PFC_TRUE; } -upll_rc_t DhcpRelayServerMoMgr::ValidateAttribute(ConfigKeyVal *ikey, +upll_rc_t DhcpRelayServerMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (ikey->get_key_type() != UNC_KT_DHCPRELAY_SERVER) result_code = - UPLL_RC_ERR_CFG_SYNTAX; + UPLL_RC_ERR_CFG_SYNTAX; - #if 0 +#if 0 /* Check if vrouter admin status is disabled */ result_code = IsAdminStatusEnable(ikey, dmi); if (result_code != UPLL_RC_SUCCESS) { return UPLL_RC_ERR_CFG_SEMANTIC; } - #endif +#endif return result_code; } @@ -114,7 +116,7 @@ upll_rc_t DhcpRelayServerMoMgr::ValidateAttribute(ConfigKeyVal *ikey, bool DhcpRelayServerMoMgr::IsValidKey(void *key, uint64_t index) { UPLL_FUNC_TRACE; key_dhcp_relay_server *dhcp_rs_key = - reinterpret_cast(key); + reinterpret_cast(key); uint32_t val = 0; upll_rc_t ret_val = UPLL_RC_SUCCESS; switch (index) { @@ -181,26 +183,27 @@ upll_rc_t DhcpRelayServerMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(dhcp_key->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName + 1)); *(dhcp_key->vrt_key.vrouter_name) = *""; break; case UNC_KT_VROUTER: uuu::upll_strncpy(dhcp_key->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(dhcp_key->vrt_key.vrouter_name, - reinterpret_cast(pkey)->vrouter_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(pkey)->vrouter_name, + (kMaxLenVnodeName + 1)); break; case UNC_KT_DHCPRELAY_SERVER: uuu::upll_strncpy(dhcp_key->vrt_key.vtn_key.vtn_name, - reinterpret_cast - (pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(dhcp_key->vrt_key.vrouter_name, - reinterpret_cast(pkey)->vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast + (pkey)->vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); dhcp_key->server_addr.s_addr = reinterpret_cast(pkey)->server_addr.s_addr; default: @@ -231,18 +234,20 @@ upll_rc_t DhcpRelayServerMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_DHCPRELAY_SERVER) return UPLL_RC_ERR_GENERIC; - key_vrt_if *pkey = reinterpret_cast - (ikey->get_key()); + key_vrt_if *pkey = reinterpret_cast + (ikey->get_key()); if (!pkey) return UPLL_RC_ERR_GENERIC; key_vrt *vrt_key = reinterpret_cast(malloc(sizeof(key_vrt))); if (!vrt_key) return UPLL_RC_ERR_GENERIC; memset(vrt_key, 0, sizeof(key_vrt)); uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(vrt_key->vrouter_name, - reinterpret_cast(pkey)->vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast + (pkey)->vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, vrt_key, NULL); if (okey == NULL) { @@ -295,7 +300,7 @@ upll_rc_t DhcpRelayServerMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } val_dhcp_relay_server *dhcp_val = reinterpret_cast(malloc( - sizeof(val_dhcp_relay_server))); + sizeof(val_dhcp_relay_server))); if (!dhcp_val) return UPLL_RC_ERR_GENERIC; memcpy(dhcp_val, ival, sizeof(val_dhcp_relay_server)); tmp1 = new ConfigVal(IpctSt::kIpcStValDhcpRelayServer, dhcp_val); @@ -305,7 +310,7 @@ upll_rc_t DhcpRelayServerMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, key_dhcp_relay_server *ikey = reinterpret_cast(tkey); key_dhcp_relay_server *dhcp_key = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(key_dhcp_relay_server))); + sizeof(key_dhcp_relay_server))); memcpy(dhcp_key, ikey, sizeof(key_dhcp_relay_server)); okey = new ConfigKeyVal(UNC_KT_DHCPRELAY_SERVER, IpctSt::kIpcStKeyDhcpRelayServer, dhcp_key, tmp1); @@ -331,17 +336,17 @@ upll_rc_t DhcpRelayServerMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED - : UNC_CS_NOT_APPLIED; + : UNC_CS_NOT_APPLIED; if (dhcp_val == NULL) return UPLL_RC_ERR_GENERIC; if (op == UNC_OP_CREATE) { dhcp_val->cs_row_status = cs_status; } - UPLL_LOG_TRACE("%s",(ikey->ToStrAll()).c_str()); - val_dhcp_relay_server *dhcp_val2 = - reinterpret_cast(GetVal(upd_key)); + UPLL_LOG_TRACE("%s", (ikey->ToStrAll()).c_str()); + val_dhcp_relay_server *dhcp_val2 = + reinterpret_cast(GetVal(upd_key)); if (dhcp_val2 == NULL) return UPLL_RC_ERR_GENERIC; if (UNC_OP_UPDATE == op) { - UPLL_LOG_TRACE("%s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); dhcp_val->cs_row_status = dhcp_val2->cs_row_status; } return UPLL_RC_SUCCESS; @@ -349,7 +354,8 @@ upll_rc_t DhcpRelayServerMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, upll_rc_t DhcpRelayServerMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; val_dhcp_relay_server_t *val; val = (ckv_running != NULL) ? @@ -359,8 +365,8 @@ upll_rc_t DhcpRelayServerMoMgr::UpdateAuditConfigStatus( } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; return result_code; } @@ -373,23 +379,24 @@ upll_rc_t DhcpRelayServerMoMgr::GetVrtDhcpRelayServerAddress(ConfigKeyVal *ikey, result_code = GetChildConfigKey(ck_dhcp, ikey); if (!ck_dhcp || result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed- %d", result_code); - return result_code; + return result_code; } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(ck_dhcp, UPLL_DT_RUNNING, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to ReadConfigDb- %d", result_code); - DELETE_IF_NOT_NULL (ck_dhcp); + DELETE_IF_NOT_NULL(ck_dhcp); return result_code; } - val_vrt_dhcp_relay_st *val_vrt_dhcp = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vrt_dhcp_relay_st))); + val_vrt_dhcp_relay_st *val_vrt_dhcp = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vrt_dhcp_relay_st))); val_vrt_dhcp->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VDRS] = UNC_VF_INVALID; val_vrt_dhcp->valid[UPLL_IDX_IP_COUNT_VDRS] = UNC_VF_VALID; val_vrt_dhcp->valid[UPLL_IDX_IF_COUNT_VDRS] = UNC_VF_INVALID; ConfigKeyVal *tmp= ck_dhcp; - while(tmp != NULL) { + while (tmp != NULL) { val_vrt_dhcp->ip_count++; tmp = tmp->get_next_cfg_key_val(); } @@ -398,11 +405,11 @@ upll_rc_t DhcpRelayServerMoMgr::GetVrtDhcpRelayServerAddress(ConfigKeyVal *ikey, ConfigKeyVal *tkey = ck_dhcp; while (tkey && ipcount < val_vrt_dhcp->ip_count) { key_dhcp_relay_server *dhcp_key = - reinterpret_cast(tkey->get_key()); - uint32_t *ip_addr = - reinterpret_cast(ConfigKeyVal::Malloc(sizeof(uint32_t))); + reinterpret_cast(tkey->get_key()); + uint32_t *ip_addr = + reinterpret_cast(ConfigKeyVal::Malloc(sizeof(uint32_t))); *ip_addr = dhcp_key->server_addr.s_addr; // assign ipaddress - ikey->AppendCfgVal( IpctSt::kIpcStIpv4, ip_addr); + ikey->AppendCfgVal(IpctSt::kIpcStIpv4, ip_addr); ipcount++; tkey = tkey->get_next_cfg_key_val(); } @@ -421,7 +428,7 @@ upll_rc_t DhcpRelayServerMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, reinterpret_cast(ikey->get_key()); key_dhcp_relay_server_t * key_dhcp = reinterpret_cast(malloc( - sizeof(key_dhcp_relay_server_t))); + sizeof(key_dhcp_relay_server_t))); if (!key_dhcp) return UPLL_RC_ERR_GENERIC; memset(key_dhcp, 0, sizeof(key_dhcp_relay_server)); @@ -430,23 +437,23 @@ upll_rc_t DhcpRelayServerMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_dhcp->vrt_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, - (kMaxLenVtnName + 1)); + key_rename->old_unc_vtn_name, + (kMaxLenVtnName + 1)); if (ikey->get_key_type() == UNC_KT_VROUTER) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { FREE_IF_NOT_NULL(key_dhcp); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_dhcp->vrt_key.vrouter_name, - key_rename->old_unc_vnode_name, - (kMaxLenVnodeName + 1)); + key_rename->old_unc_vnode_name, + (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { FREE_IF_NOT_NULL(key_dhcp); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_dhcp->vrt_key.vrouter_name, - key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); + key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); } okey = new ConfigKeyVal(UNC_KT_DHCPRELAY_SERVER, @@ -473,7 +480,7 @@ upll_rc_t DhcpRelayServerMoMgr::ValidateMessage(IpcReqRespHeader *req, upll_rc_t ret_val; if (ikey->get_st_num() != IpctSt::kIpcStKeyDhcpRelayServer) { UPLL_LOG_DEBUG("Invalid key structure received. received struct - %d", - ikey->get_st_num()); + ikey->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_dhcp_relay_server *dhcprelay_key = @@ -494,11 +501,11 @@ upll_rc_t DhcpRelayServerMoMgr::ValidateMessage(IpcReqRespHeader *req, || op == UNC_OP_READ_NEXT || op == UNC_OP_READ_BULK) { if (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE || - UPLL_DT_IMPORT == dt_type) { - if (option1 != UNC_OPT1_NORMAL) + UPLL_DT_IMPORT == dt_type) { + if (option1 != UNC_OPT1_NORMAL) return UPLL_RC_ERR_INVALID_OPTION1; if (option2 != UNC_OPT2_NONE) - return UPLL_RC_ERR_INVALID_OPTION2; + return UPLL_RC_ERR_INVALID_OPTION2; UPLL_LOG_DEBUG("Value structure is none for operation type:%d", op); return UPLL_RC_SUCCESS; } else { @@ -522,23 +529,23 @@ upll_rc_t DhcpRelayServerMoMgr::ValidateDhcpRelayKey( kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. VTN Name - %s", - dhcprelay_key->vrt_key.vtn_key.vtn_name); + dhcprelay_key->vrt_key.vtn_key.vtn_name); return UPLL_RC_ERR_CFG_SYNTAX; } ret_val = ValidateKey(reinterpret_cast( - dhcprelay_key->vrt_key.vrouter_name), - kMinLenVnodeName, kMaxLenVnodeName); + dhcprelay_key->vrt_key.vrouter_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. VROUTER Name -%s", - dhcprelay_key->vrt_key.vrouter_name); + dhcprelay_key->vrt_key.vrouter_name); return UPLL_RC_ERR_CFG_SYNTAX; } if ((operation != UNC_OP_READ_SIBLING_BEGIN) && - (operation != UNC_OP_READ_SIBLING_COUNT)) { + (operation != UNC_OP_READ_SIBLING_COUNT)) { val = dhcprelay_key->server_addr.s_addr; if (val == 0x00000000 || val == 0xffffffff) { UPLL_LOG_DEBUG("INVALID SERVER ADDRESS RECEIVED. received addr - %d", - dhcprelay_key->server_addr.s_addr); + dhcprelay_key->server_addr.s_addr); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -561,7 +568,7 @@ upll_rc_t DhcpRelayServerMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -587,17 +594,10 @@ upll_rc_t DhcpRelayServerMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (operation) { case UNC_OP_CREATE: { ret_code = GetCreateCapability(ctrlr_name, - ikey->get_key_type(), + ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (ret_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; } case UNC_OP_UPDATE: { @@ -638,24 +638,25 @@ upll_rc_t DhcpRelayServerMoMgr::IsReferenced(ConfigKeyVal *ikey, } upll_rc_t DhcpRelayServerMoMgr::IsAdminStatusEnable(ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - MoMgrImpl *vrt_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VROUTER))); + MoMgrImpl *vrt_mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VROUTER))); if (!vrt_mgr) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; } ConfigKeyVal *ckv_vrt = NULL; result_code = GetParentConfigKey(ckv_vrt, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returing error %d \n",result_code); + UPLL_LOG_DEBUG("Returing error %d \n", result_code); return UPLL_RC_ERR_GENERIC; } DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; result_code = vrt_mgr->ReadConfigDB(ckv_vrt, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { val_vrt_t *vrt_val = reinterpret_cast(GetVal(ckv_vrt)); if (vrt_val && vrt_val->dhcp_relay_admin_status == UPLL_ADMIN_ENABLE) { @@ -668,6 +669,6 @@ upll_rc_t DhcpRelayServerMoMgr::IsAdminStatusEnable(ConfigKeyVal *ikey, return result_code; } -} // namespaces kt_momgr +} // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/dhcprelay_server_momgr.hh b/coordinator/modules/upll/dhcprelay_server_momgr.hh index 96525607..cf615123 100644 --- a/coordinator/modules/upll/dhcprelay_server_momgr.hh +++ b/coordinator/modules/upll/dhcprelay_server_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,181 +20,183 @@ namespace kt_momgr { class DhcpRelayServerMoMgr : public VnodeChildMoMgr { - private: - static BindInfo dhcprelay_server_bind_info[]; - static BindInfo dhcprealy_server_maintbl_key_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - return UPLL_RC_ERR_GENERIC; - } - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, - uint32_t driver_result, ConfigKeyVal *upd_key, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + private: + static BindInfo dhcprelay_server_bind_info[]; + static BindInfo dhcprealy_server_maintbl_key_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + uint32_t driver_result, ConfigKeyVal *upd_key, + DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_DHCPRELAY_SERVER keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_dhcp_relay_server is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_DHCPRELAY_SERVER keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_dhcp_relay_server is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_DHCP_RELAY_SERVER Keytype key structure. - * - * @param[in] key_dhcp_relay_server KT_DHCP_RELAY_SERVER key structure. - * @param[in] Operation operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - */ - upll_rc_t ValidateDhcpRelayKey(key_dhcp_relay_server *dhcp_relay_key, - unc_keytype_operation_t op); + /** + * @Brief Validates the syntax for KT_DHCP_RELAY_SERVER Keytype key structure. + * + * @param[in] key_dhcp_relay_server KT_DHCP_RELAY_SERVER key structure. + * @param[in] Operation operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + */ + upll_rc_t ValidateDhcpRelayKey(key_dhcp_relay_server *dhcp_relay_key, + unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool audit) { - return true; - } + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool audit) { + return true; + } - /** - * @Brief Checks if the specified key type(KT_DHCPRELAY_SERVER) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] ctrlr_name Controller name associated with ikey. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - **/ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char *ctrlr_name); + /** + * @Brief Checks if the specified key type(KT_DHCPRELAY_SERVER) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] ctrlr_name Controller name associated with ikey. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + **/ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char *ctrlr_name); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /* Rename */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t IsAdminStatusEnable(ConfigKeyVal *ikey,DalDmlIntf *dmi); + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /* Rename */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + upll_rc_t IsAdminStatusEnable(ConfigKeyVal *ikey, DalDmlIntf *dmi); - public: - DhcpRelayServerMoMgr(); - virtual ~DhcpRelayServerMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, uint64_t index); + public: + DhcpRelayServerMoMgr(); + virtual ~DhcpRelayServerMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, uint64_t index); - upll_rc_t GetVrtDhcpRelayServerAddress(ConfigKeyVal *ikey, - DalDmlIntf *dmi); + upll_rc_t GetVrtDhcpRelayServerAddress(ConfigKeyVal *ikey, + DalDmlIntf *dmi); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/flowlist_entry_momgr.cc b/coordinator/modules/upll/flowlist_entry_momgr.cc index 2f78d601..72b8deec 100644 --- a/coordinator/modules/upll/flowlist_entry_momgr.cc +++ b/coordinator/modules/upll/flowlist_entry_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,7 +20,7 @@ #define RENAME_FLOWLIST 0x01 #define GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, en) \ - (tbl == MAINTBL) ? &(l_val_ff->valid[en]) : &(l_val_ctrl_ff->valid[en]) + (tbl == MAINTBL) ? &(l_val_ff->valid[en]) : &(l_val_ctrl_ff->valid[en]) using unc::upll::ipc_util::IpcUtil; namespace unc { namespace upll { @@ -538,14 +538,17 @@ BindInfo FlowListEntryMoMgr::rename_flowlist_entry_ctrlr_tbl[] = { uud::kDalUint8, 1} }; -bool FlowListEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, int &nattr, MoMgrTables tbl) { +bool FlowListEntryMoMgr::GetRenameKeyBindInfo( + unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { if (MAINTBL == tbl) { - nattr = NUM_FL_KEY_MAIN_COL; - binfo = rename_flowlist_entry_main_tbl; + nattr = NUM_FL_KEY_MAIN_COL; + binfo = rename_flowlist_entry_main_tbl; } else if (CTRLRTBL == tbl) { - nattr = NUM_FL_KEY_CTRLR_COL; - binfo = rename_flowlist_entry_ctrlr_tbl; + nattr = NUM_FL_KEY_CTRLR_COL; + binfo = rename_flowlist_entry_ctrlr_tbl; } return PFC_TRUE; } @@ -559,22 +562,26 @@ FlowListEntryMoMgr::FlowListEntryMoMgr() : MoMgrImpl() { // For Main Table table[MAINTBL] = new Table(uudst::kDbiFlowListEntryTbl, - UNC_KT_FLOWLIST_ENTRY, flowlistentry_bind_info, - IpctSt::kIpcStKeyFlowlistEntry, IpctSt::kIpcStValFlowlistEntry, - uudst::flowlist_entry::kDbiFlowListEntryNumCols); + UNC_KT_FLOWLIST_ENTRY, + flowlistentry_bind_info, + IpctSt::kIpcStKeyFlowlistEntry, + IpctSt::kIpcStValFlowlistEntry, + uudst::flowlist_entry::kDbiFlowListEntryNumCols); // rename table is not used table[RENAMETBL] = NULL; // For Controller Table - table[CTRLRTBL] = new Table(uudst::kDbiFlowListEntryCtrlrTbl, - UNC_KT_FLOWLIST_ENTRY, flowlistentry_controller_bind_info, - IpctSt::kIpcStKeyFlowlistEntry, IpctSt::kIpcInvalidStNum, + table[CTRLRTBL] = new Table( + uudst::kDbiFlowListEntryCtrlrTbl, + UNC_KT_FLOWLIST_ENTRY, + flowlistentry_controller_bind_info, + IpctSt::kIpcStKeyFlowlistEntry, + IpctSt::kIpcInvalidStNum, uudst::flowlist_entry_ctrlr::kDbiFlowListEntryCtrlrNumCols); nchild = 0; child = NULL; - cur_instance_count = 0; } @@ -699,14 +706,16 @@ upll_rc_t FlowListEntryMoMgr::GetValid(void *val, /** * @brief Allocates Memory for the Incoming Pointer to the Class. - * @param[out] ck_val This Contains the pointer to the Class for which memory has to be allocated. + * @param[out] ck_val This Contains the pointer to the Class for + * which memory has to be allocated. * @param[in] dt_type Describes Configiration Information. * @param[in] tbl Describes the Destination table Information. * @retval RT_SUCCESS Successfull completion. */ upll_rc_t FlowListEntryMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val = NULL; uint32_t index; @@ -716,22 +725,22 @@ upll_rc_t FlowListEntryMoMgr::AllocVal(ConfigVal *&ck_val, } switch (tbl) { - case MAINTBL: - val = ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_t)); + case MAINTBL: + val = ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_t)); ck_val = new ConfigVal(IpctSt::kIpcStValFlowlistEntry, val); - break; - case CTRLRTBL: - val = ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_ctrl)); + break; + case CTRLRTBL: + val = ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_ctrl)); for (index = UPLL_IDX_MAC_DST_FLE; index <= UPLL_IDX_ICMP_V6_CODE_FLE; - index++) { - reinterpret_cast(val)->valid[index] = - UNC_VF_INVALID; - } + index++) { + reinterpret_cast(val)->valid[index] = + UNC_VF_INVALID; + } ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); - break; - default: - val = NULL; - break; + break; + default: + val = NULL; + break; } if (val == NULL) { UPLL_LOG_DEBUG("Failed to allocate memory for val structure"); @@ -744,13 +753,13 @@ upll_rc_t FlowListEntryMoMgr::AllocVal(ConfigVal *&ck_val, bool FlowListEntryMoMgr::IsValidKey(void *key, uint64_t index) { UPLL_FUNC_TRACE; key_flowlist_entry_t *flowlist_entry_key = - reinterpret_cast (key); + reinterpret_cast (key); upll_rc_t ret_val; if (uudst::flowlist_entry::kDbiFlowListName == index) { ret_val = ValidateKey(reinterpret_cast - (flowlist_entry_key->flowlist_key.flowlist_name), - kMinLenFlowListName, - kMaxLenFlowListName); + (flowlist_entry_key->flowlist_key.flowlist_name), + kMinLenFlowListName, + kMaxLenFlowListName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("FlowList Name is not valid(%d)", ret_val); return false; @@ -758,8 +767,8 @@ bool FlowListEntryMoMgr::IsValidKey(void *key, uint64_t index) { } if (uudst::flowlist_entry::kDbiSequenceNum == index) { if (!ValidateNumericRange(flowlist_entry_key->sequence_num, - kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, true, - true)) { + kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, true, + true)) { UPLL_LOG_DEBUG(" Sequence Number syntax validation failed "); return false; } @@ -796,7 +805,7 @@ upll_rc_t FlowListEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } if (!pkey) { -// if (key_fle) free(key_fle); + // if (key_fle) free(key_fle); return UPLL_RC_ERR_GENERIC; } if (okey) { @@ -825,7 +834,7 @@ upll_rc_t FlowListEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, (pkey)->sequence_num; break; default: - if (key_fle) free(key_fle); + if ((!okey) || (!okey->get_key())) FREE_IF_NOT_NULL(key_fle); return UPLL_RC_ERR_GENERIC; break; } @@ -846,12 +855,14 @@ upll_rc_t FlowListEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } upll_rc_t FlowListEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code; ConfigKeyVal *unc_key = NULL; UPLL_LOG_TRACE("%s GetRenamedUncKey fl_entry start", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); key_flowlist_entry_t *ctrlr_flowlist_entry_key = reinterpret_cast (ctrlr_key->get_key()); if (NULL == ctrlr_flowlist_entry_key) { @@ -861,20 +872,20 @@ upll_rc_t FlowListEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; val_rename_flowlist_t *rename_flowlist = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); if (!rename_flowlist) { UPLL_LOG_TRACE("rename_flowlist NULL"); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_flowlist->flowlist_newname, ctrlr_flowlist_entry_key->flowlist_key.flowlist_name, - (kMaxLenFlowListName+1)); + (kMaxLenFlowListName+1)); rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; FlowListMoMgr *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (!mgr) { UPLL_LOG_TRACE("mgr failed"); if (rename_flowlist) free(rename_flowlist); @@ -895,13 +906,13 @@ upll_rc_t FlowListEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, return result_code; } unc_key->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, - rename_flowlist); + rename_flowlist); UPLL_LOG_DEBUG("ctrlr_id fle (%s)", ctrlr_id); SET_USER_DATA_CTRLR(unc_key, ctrlr_id); result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (result_code == UPLL_RC_SUCCESS) { key_flowlist_entry_t *flowlist_entry = reinterpret_cast (unc_key->get_key()); @@ -910,16 +921,16 @@ upll_rc_t FlowListEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, (kMaxLenFlowListName+1)); } UPLL_LOG_TRACE("%s GetRenamedUncKey fl_entry end", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - result_code = UPLL_RC_SUCCESS; + result_code = UPLL_RC_SUCCESS; return result_code; } upll_rc_t FlowListEntryMoMgr::ReadRecord(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code; @@ -932,54 +943,56 @@ upll_rc_t FlowListEntryMoMgr::ReadRecord(IpcReqRespHeader *req, DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; switch (req->datatype) { - // Retrieving config information - case UPLL_DT_CANDIDATE: - case UPLL_DT_RUNNING: - case UPLL_DT_STARTUP: - case UPLL_DT_STATE: - if (req->operation == UNC_OP_READ) { - result_code = ReadConfigDB(ikey, req->datatype, req->operation, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" ReadConfigDB failed:-%d", result_code); - return result_code; - } - } else { - if ((req->operation == UNC_OP_READ_SIBLING_BEGIN) || - (req->operation == UNC_OP_READ_SIBLING)) { - dbop.readop = kOpReadMultiple; - } - result_code = ReadConfigDB(ikey, req->datatype, req->operation, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" ReadConfigDB failed:-%d", result_code); - return result_code; + // Retrieving config information + case UPLL_DT_CANDIDATE: + case UPLL_DT_RUNNING: + case UPLL_DT_STARTUP: + case UPLL_DT_STATE: + if (req->operation == UNC_OP_READ) { + result_code = ReadConfigDB(ikey, req->datatype, req->operation, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" ReadConfigDB failed:-%d", result_code); + return result_code; + } + } else { + if ((req->operation == UNC_OP_READ_SIBLING_BEGIN) || + (req->operation == UNC_OP_READ_SIBLING)) { + dbop.readop = kOpReadMultiple; + } + result_code = ReadConfigDB(ikey, req->datatype, req->operation, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" ReadConfigDB failed:-%d", result_code); + return result_code; + } } - } - break; - - case UPLL_DT_IMPORT: - // Retrieving state information - if (req->operation != UNC_OP_READ_SIBLING_COUNT) { - result_code = GetRenamedControllerKey(ikey, req->datatype, dmi, NULL); - result_code = ReadConfigDB(ikey, req->datatype, req->operation, dbop, dmi, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" ReadConfigDB failed:-%d", result_code); - return result_code; + break; + + case UPLL_DT_IMPORT: + // Retrieving state information + if (req->operation != UNC_OP_READ_SIBLING_COUNT) { + result_code = GetRenamedControllerKey(ikey, req->datatype, dmi, NULL); + result_code = ReadConfigDB(ikey, req->datatype, req->operation, + dbop, dmi, + RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" ReadConfigDB failed:-%d", result_code); + return result_code; + } } - } - break; - default: - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + break; + default: + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } // end of switch UPLL_LOG_DEBUG("Read Record Successfull"); return UPLL_RC_SUCCESS; } -upll_rc_t FlowListEntryMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { +upll_rc_t FlowListEntryMoMgr::ReadMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -998,7 +1011,9 @@ upll_rc_t FlowListEntryMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, } upll_rc_t FlowListEntryMoMgr:: ReadSiblingMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, bool begin, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -1017,7 +1032,8 @@ upll_rc_t FlowListEntryMoMgr:: ReadSiblingMo(IpcReqRespHeader *req, } upll_rc_t FlowListEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { + ConfigKeyVal *&req, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) { UPLL_LOG_DEBUG("Request is null"); @@ -1042,31 +1058,33 @@ upll_rc_t FlowListEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ival = reinterpret_cast (GetVal(req)); if (NULL != ival) { val_flowlist_entry_t *flowlist_entry_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_t))); memcpy(flowlist_entry_val, ival, sizeof(val_flowlist_entry_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValFlowlistEntry, - flowlist_entry_val); + flowlist_entry_val); + if (!tmp1) { + FREE_IF_NOT_NULL(flowlist_entry_val); + return UPLL_RC_ERR_GENERIC; + } } } else if (tbl == CTRLRTBL) { val_flowlist_entry_ctrl_t *ival = - reinterpret_cast(GetVal(req)); - if (NULL != ival) { - val_flowlist_entry_ctrl_t *flowlist_ctrlr_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_ctrl_t))); - memcpy(flowlist_ctrlr_val, ival, sizeof(val_flowlist_entry_ctrl_t)); - tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, - flowlist_ctrlr_val); + reinterpret_cast(GetVal(req)); + if (NULL != ival) { + val_flowlist_entry_ctrl_t *flowlist_ctrlr_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_ctrl_t))); + memcpy(flowlist_ctrlr_val, ival, sizeof(val_flowlist_entry_ctrl_t)); + tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, + flowlist_ctrlr_val); + if (!tmp1) { + FREE_IF_NOT_NULL(flowlist_ctrlr_val); + return UPLL_RC_ERR_GENERIC; } + } } - - - if (!tmp1) { - return UPLL_RC_ERR_GENERIC; - } - - tmp1->set_user_data(tmp->get_user_data()); + if (tmp1) tmp1->set_user_data(tmp->get_user_data()); // tmp = tmp->get_next_cfg_val();//COVERITY UN UDSED VALUE } void *tkey = (req)->get_key(); @@ -1074,14 +1092,16 @@ upll_rc_t FlowListEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tkey != NULL) { ikey = reinterpret_cast (tkey); key_flowlist_entry_t *flowlist_entry = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_flowlist_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_flowlist_entry_t))); memcpy(flowlist_entry, ikey, sizeof(key_flowlist_entry_t)); okey = new ConfigKeyVal(UNC_KT_FLOWLIST_ENTRY, - IpctSt::kIpcStKeyFlowlistEntry, flowlist_entry, tmp1); + IpctSt::kIpcStKeyFlowlistEntry, + flowlist_entry, + tmp1); SET_USER_DATA(okey, req) - UPLL_LOG_DEBUG("DupConfigkeyVal Succesfull."); + UPLL_LOG_DEBUG("DupConfigkeyVal Succesfull."); return UPLL_RC_SUCCESS; } delete tmp1; @@ -1090,13 +1110,16 @@ upll_rc_t FlowListEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, #if 0 upll_rc_t FlowListEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *key, - unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *nreq, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; // char obj; upll_rc_t result_code = UPLL_RC_SUCCESS; unc_keytype_configstatus_t status = UNC_CS_UNKNOWN, - cs_status = UNC_CS_UNKNOWN; + cs_status = UNC_CS_UNKNOWN; cs_status = (driver_result == 0) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; if ((NULL == ctrlr_key) || (NULL == key)) return UPLL_RC_ERR_GENERIC; val_flowlist_entry_t *flowlist_val = @@ -1108,71 +1131,72 @@ upll_rc_t FlowListEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *key, return UPLL_RC_ERR_GENERIC; } if (op == UNC_OP_CREATE) { -/* for (int index = UPLL_IDX_MAC_DST_FLE; index <= UPLL_IDX_ICMP_V6_CODE_FLE; - index++) { - ctrlr_val_flowlist->valid[index] = UNC_VF_INVALID; - }*/ + /* for (int index = UPLL_IDX_MAC_DST_FLE; index <= UPLL_IDX_ICMP_V6_CODE_FLE; + index++) { + ctrlr_val_flowlist->valid[index] = UNC_VF_INVALID; + }*/ switch (flowlist_val->cs_row_status) { - case UNC_CS_UNKNOWN: - status = cs_status; - break; - case UNC_CS_PARTIALLY_APPLIED: - if (ctrlr_val_flowlist->cs_row_status == UNC_CS_NOT_APPLIED) { - /* changes need to do */ - } - case UNC_CS_APPLIED: - case UNC_CS_NOT_APPLIED: - case UNC_CS_INVALID: - default: - status = - (cs_status == UNC_CS_APPLIED) ? UNC_CS_PARTIALLY_APPLIED : status; - break; + case UNC_CS_UNKNOWN: + status = cs_status; + break; + case UNC_CS_PARTIALLY_APPLIED: + if (ctrlr_val_flowlist->cs_row_status == UNC_CS_NOT_APPLIED) { + /* changes need to do */ + } + case UNC_CS_APPLIED: + case UNC_CS_NOT_APPLIED: + case UNC_CS_INVALID: + default: + status = + (cs_status == UNC_CS_APPLIED) ? UNC_CS_PARTIALLY_APPLIED : status; + break; } flowlist_val->cs_row_status = status; ctrlr_val_flowlist->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(flowlist_val->valid)/sizeof(flowlist_val->valid[0]); - ++loop ) { - // Setting CS to the not supported attributes - if ( UNC_VF_NOT_SUPPORTED == flowlist_val->valid[loop] ) { - flowlist_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; - continue; - } - if ( UNC_VF_NOT_SUPPORTED == ctrlr_val_flowlist->valid[loop] ) { - ctrlr_val_flowlist->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; - continue; + loop < sizeof(flowlist_val->valid)/sizeof(flowlist_val->valid[0]); + ++loop ) { + // Setting CS to the not supported attributes + if ( UNC_VF_NOT_SUPPORTED == flowlist_val->valid[loop] ) { + flowlist_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + continue; + } + if ( UNC_VF_NOT_SUPPORTED == ctrlr_val_flowlist->valid[loop] ) { + ctrlr_val_flowlist->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + continue; + } + if ((UNC_VF_VALID == flowlist_val->valid[loop]) || + (UNC_VF_VALID_NO_VALUE == flowlist_val->valid[loop])) + if (ctrlr_val_flowlist->valid[loop] != UNC_VF_NOT_SUPPORTED) { + ctrlr_val_flowlist->cs_attr[loop] = cs_status; + flowlist_val->cs_attr[loop] = (uint8_t)flowlist_val->cs_row_status; } - if ((UNC_VF_VALID == flowlist_val->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == flowlist_val->valid[loop])) - if (ctrlr_val_flowlist->valid[loop] != UNC_VF_NOT_SUPPORTED) { - ctrlr_val_flowlist->cs_attr[loop] = cs_status; - flowlist_val->cs_attr[loop] = (uint8_t)flowlist_val->cs_row_status; - } } } else if (op == UNC_OP_UPDATE) { // void *flowlistentryval = NULL; - void *flowlist_val1 = GetVal(key); - void *flowlist_val2 = GetVal(nreq); - CompareValidValue(flowlist_val1, flowlist_val2, true); + void *flowlist_val1 = GetVal(key); + void *flowlist_val2 = GetVal(nreq); + CompareValidValue(flowlist_val1, flowlist_val2, true); for (unsigned int loop = 0; - loop < sizeof(flowlist_val->valid) / sizeof(flowlist_val->valid[0]); - ++loop) { - if (ctrlr_val_flowlist->valid[loop] != UNC_VF_NOT_SUPPORTED) { - ctrlr_val_flowlist->cs_attr[loop] = cs_status; - } else { - ctrlr_val_flowlist->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; - } - flowlist_val->cs_attr[loop] = (uint8_t)flowlist_val->cs_row_status; + loop < sizeof(flowlist_val->valid) / sizeof(flowlist_val->valid[0]); + ++loop) { + if (ctrlr_val_flowlist->valid[loop] != UNC_VF_NOT_SUPPORTED) { + ctrlr_val_flowlist->cs_attr[loop] = cs_status; + } else { + ctrlr_val_flowlist->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + } + flowlist_val->cs_attr[loop] = (uint8_t)flowlist_val->cs_row_status; } } bool flag_applied = false; bool flag_not_applied = false; for (unsigned int loop = 0; - loop < sizeof(ctrlr_val_flowlist->valid) / sizeof(ctrlr_val_flowlist->valid[0]); - ++loop) { + loop < sizeof(ctrlr_val_flowlist->valid) / + sizeof(ctrlr_val_flowlist->valid[0]); + ++loop) { if (ctrlr_val_flowlist->cs_attr[loop] == UNC_CS_APPLIED) flag_applied = true; else if (ctrlr_val_flowlist->cs_attr[loop] == UNC_CS_NOT_APPLIED) @@ -1199,14 +1223,14 @@ bool FlowListEntryMoMgr::CompareKey(ConfigKeyVal *key1, ConfigKeyVal *key2) { UPLL_FUNC_TRACE; key_flowlist_entry_t *flowlist_entry_key1, - *flowlist_entry_key2; + *flowlist_entry_key2; bool match = false; if (key1 == key2) { return true; } if (!key1 || !key2) return false; flowlist_entry_key1 = - reinterpret_cast(key1->get_key()); + reinterpret_cast(key1->get_key()); flowlist_entry_key2 = reinterpret_cast(key2->get_key()); if (flowlist_entry_key1 == flowlist_entry_key2) { @@ -1217,14 +1241,14 @@ bool FlowListEntryMoMgr::CompareKey(ConfigKeyVal *key1, return false; } if (strcmp(reinterpret_cast - (flowlist_entry_key1-> - flowlist_key.flowlist_name), - reinterpret_cast - (flowlist_entry_key2-> - flowlist_key.flowlist_name)) == 0) { + (flowlist_entry_key1-> + flowlist_key.flowlist_name), + reinterpret_cast + (flowlist_entry_key2-> + flowlist_key.flowlist_name)) == 0) { if (flowlist_entry_key1->sequence_num == flowlist_entry_key2->sequence_num) - match = true; + match = true; UPLL_LOG_DEBUG(" FlowListEntryMoMgr::CompareKey,Both Keys are same"); } return match; @@ -1245,128 +1269,131 @@ bool FlowListEntryMoMgr::CompareValidValue(void *&val1, void *val2, UPLL_FUNC_TRACE; bool invalid_attr = true; val_flowlist_entry_t *flowlist_entry_val1 = - reinterpret_cast(val1); + reinterpret_cast(val1); val_flowlist_entry_t *flowlist_entry_val2 = - reinterpret_cast(val2); + reinterpret_cast(val2); if (!flowlist_entry_val1 || !flowlist_entry_val2) { return false; } - for ( unsigned int loop = 0; loop < (sizeof(flowlist_entry_val1->valid) - /(sizeof(flowlist_entry_val1->valid[0]))); - ++loop ) { - if (UNC_VF_INVALID == flowlist_entry_val1->valid[loop] && - UNC_VF_VALID == flowlist_entry_val2->valid[loop]) - flowlist_entry_val1->valid[loop] = UNC_VF_VALID_NO_VALUE; + for ( unsigned int loop = 0; + loop < (sizeof(flowlist_entry_val1->valid) + /(sizeof(flowlist_entry_val1->valid[0]))); + ++loop ) { + if (UNC_VF_INVALID == flowlist_entry_val1->valid[loop] && + UNC_VF_VALID == flowlist_entry_val2->valid[loop]) + flowlist_entry_val1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_MAC_DST_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_MAC_DST_FLE]) if (!memcmp(flowlist_entry_val1->mac_dst, flowlist_entry_val2->mac_dst, - sizeof(flowlist_entry_val2->mac_dst))) - flowlist_entry_val1->valid[UPLL_IDX_MAC_DST_FLE] = UNC_VF_INVALID; + sizeof(flowlist_entry_val2->mac_dst))) + flowlist_entry_val1->valid[UPLL_IDX_MAC_DST_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_MAC_SRC_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_MAC_SRC_FLE] ) if (!memcmp(flowlist_entry_val1->mac_src, flowlist_entry_val2->mac_src, - sizeof(flowlist_entry_val2->mac_src))) - flowlist_entry_val1->valid[UPLL_IDX_MAC_SRC_FLE] = UNC_VF_INVALID; + sizeof(flowlist_entry_val2->mac_src))) + flowlist_entry_val1->valid[UPLL_IDX_MAC_SRC_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] ) if (flowlist_entry_val1->mac_eth_type == flowlist_entry_val2->mac_eth_type) - flowlist_entry_val1->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_FLE] ) if (!memcmp(&flowlist_entry_val1->dst_ip, - &flowlist_entry_val2->dst_ip, - sizeof(flowlist_entry_val2->dst_ip))) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_FLE] = UNC_VF_INVALID; + &flowlist_entry_val2->dst_ip, + sizeof(flowlist_entry_val2->dst_ip))) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_PREFIX_FLE] ) if (flowlist_entry_val1->dst_ip_prefixlen == - flowlist_entry_val2->dst_ip_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->dst_ip_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_PREFIX_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_FLE] ) if (!memcmp(&flowlist_entry_val1->src_ip, - &flowlist_entry_val2->src_ip, - sizeof(flowlist_entry_val2->src_ip))) - flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_FLE] = UNC_VF_INVALID; + &flowlist_entry_val2->src_ip, + sizeof(flowlist_entry_val2->src_ip))) + flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] ) if (flowlist_entry_val1->src_ip_prefixlen == - flowlist_entry_val2->src_ip_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->src_ip_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_VLAN_PRIORITY_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_VLAN_PRIORITY_FLE] ) if (flowlist_entry_val1->vlan_priority == - flowlist_entry_val2->vlan_priority) - flowlist_entry_val1->valid[UPLL_IDX_VLAN_PRIORITY_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->vlan_priority) + flowlist_entry_val1->valid[UPLL_IDX_VLAN_PRIORITY_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_V6_FLE] ) if (!memcmp(&flowlist_entry_val1->dst_ipv6, - &flowlist_entry_val2->dst_ipv6, - sizeof(flowlist_entry_val2->dst_ipv6))) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_FLE] = UNC_VF_INVALID; + &flowlist_entry_val2->dst_ipv6, + sizeof(flowlist_entry_val2->dst_ipv6))) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE]) if (flowlist_entry_val1->dst_ipv6_prefixlen == - flowlist_entry_val2->dst_ipv6_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->dst_ipv6_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE] = + UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_V6_FLE] ) if (!memcmp(&flowlist_entry_val1->src_ipv6, - &flowlist_entry_val2->src_ipv6, - sizeof(flowlist_entry_val2->src_ipv6))) + &flowlist_entry_val2->src_ipv6, + sizeof(flowlist_entry_val2->src_ipv6))) flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE]) if (flowlist_entry_val1->src_ipv6_prefixlen == - flowlist_entry_val2->src_ipv6_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->src_ipv6_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE] = + UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_IP_PROTOCOL_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_IP_PROTOCOL_FLE] ) if (flowlist_entry_val1->ip_proto == flowlist_entry_val2->ip_proto) - flowlist_entry_val1->valid[UPLL_IDX_IP_PROTOCOL_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_IP_PROTOCOL_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_IP_DSCP_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_IP_DSCP_FLE] ) if (flowlist_entry_val1->ip_dscp == flowlist_entry_val2->ip_dscp) - flowlist_entry_val1->valid[UPLL_IDX_IP_DSCP_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_IP_DSCP_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_L4_DST_PORT_FLE] ) if (flowlist_entry_val1->l4_dst_port == flowlist_entry_val2->l4_dst_port) - flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_FLE] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE] - && UNC_VF_VALID == - flowlist_entry_val2->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE]) + && UNC_VF_VALID == + flowlist_entry_val2->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE]) if (flowlist_entry_val1->l4_dst_port_endpt == - flowlist_entry_val2->l4_dst_port_endpt) + flowlist_entry_val2->l4_dst_port_endpt) flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; - + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_L4_SRC_PORT_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_L4_SRC_PORT_FLE] ) if (flowlist_entry_val1->l4_src_port == flowlist_entry_val2->l4_src_port) flowlist_entry_val1->valid[UPLL_IDX_L4_SRC_PORT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if (UNC_VF_VALID == @@ -1374,9 +1401,9 @@ bool FlowListEntryMoMgr::CompareValidValue(void *&val1, void *val2, UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_L4_SRC_PORT_ENDPT_FLE] ) if (flowlist_entry_val1->l4_src_port_endpt == - flowlist_entry_val2->l4_src_port_endpt) + flowlist_entry_val2->l4_src_port_endpt) flowlist_entry_val1->valid[UPLL_IDX_L4_SRC_PORT_ENDPT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_ICMP_TYPE_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_ICMP_TYPE_FLE]) @@ -1396,13 +1423,13 @@ bool FlowListEntryMoMgr::CompareValidValue(void *&val1, void *val2, if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_ICMP_V6_CODE_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_ICMP_V6_CODE_FLE]) if (flowlist_entry_val1->icmpv6_code == flowlist_entry_val2->icmpv6_code) - flowlist_entry_val1->valid[UPLL_IDX_ICMP_V6_CODE_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_ICMP_V6_CODE_FLE] = UNC_VF_INVALID; - for (unsigned int loop = 0; - loop < sizeof(flowlist_entry_val1->valid) / sizeof(uint8_t); ++loop) { + for (unsigned int loop = 0; + loop < sizeof(flowlist_entry_val1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) flowlist_entry_val1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) flowlist_entry_val1->valid[loop])) - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == (uint8_t) flowlist_entry_val1->valid[loop])) + invalid_attr = false; } return invalid_attr; } @@ -1412,132 +1439,135 @@ bool FlowListEntryMoMgr::CompareValidVal(void *&val1, void *val2, void *val3, UPLL_FUNC_TRACE; bool invalid_attr = true; val_flowlist_entry_t *flowlist_entry_val1 = - reinterpret_cast(val1); + reinterpret_cast(val1); val_flowlist_entry_t *flowlist_entry_val2 = - reinterpret_cast(val2); + reinterpret_cast(val2); val_flowlist_entry_t *flowlist_entry_val3 = - reinterpret_cast(val2); - - if (!flowlist_entry_val1 || !flowlist_entry_val2 || flowlist_entry_val3) { + reinterpret_cast(val2); + // Addressed Coverity DEADCODE + if (!flowlist_entry_val1 || !flowlist_entry_val2 || !flowlist_entry_val3) { return false; } - for ( unsigned int loop = 0; loop < (sizeof(flowlist_entry_val1->valid) - /(sizeof(flowlist_entry_val1->valid[0]))); - ++loop ) { - if (UNC_VF_INVALID == flowlist_entry_val1->valid[loop] && - UNC_VF_VALID == flowlist_entry_val2->valid[loop]) - flowlist_entry_val1->valid[loop] = UNC_VF_VALID_NO_VALUE; + for ( unsigned int loop = 0; + loop < (sizeof(flowlist_entry_val1->valid) + /(sizeof(flowlist_entry_val1->valid[0]))); + ++loop ) { + if (UNC_VF_INVALID == flowlist_entry_val1->valid[loop] && + UNC_VF_VALID == flowlist_entry_val2->valid[loop]) + flowlist_entry_val1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_MAC_DST_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_MAC_DST_FLE]) if (!memcmp(flowlist_entry_val3->mac_dst, flowlist_entry_val2->mac_dst, - sizeof(flowlist_entry_val2->mac_dst))) - flowlist_entry_val1->valid[UPLL_IDX_MAC_DST_FLE] = UNC_VF_INVALID; + sizeof(flowlist_entry_val2->mac_dst))) + flowlist_entry_val1->valid[UPLL_IDX_MAC_DST_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_MAC_SRC_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_MAC_SRC_FLE] ) if (!memcmp(flowlist_entry_val3->mac_src, flowlist_entry_val2->mac_src, - sizeof(flowlist_entry_val2->mac_src))) - flowlist_entry_val1->valid[UPLL_IDX_MAC_SRC_FLE] = UNC_VF_INVALID; + sizeof(flowlist_entry_val2->mac_src))) + flowlist_entry_val1->valid[UPLL_IDX_MAC_SRC_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] ) if (flowlist_entry_val3->mac_eth_type == flowlist_entry_val2->mac_eth_type) - flowlist_entry_val1->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_FLE] ) if (!memcmp(&flowlist_entry_val3->dst_ip, - &flowlist_entry_val2->dst_ip, - sizeof(flowlist_entry_val2->dst_ip))) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_FLE] = UNC_VF_INVALID; + &flowlist_entry_val2->dst_ip, + sizeof(flowlist_entry_val2->dst_ip))) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_PREFIX_FLE] ) if (flowlist_entry_val3->dst_ip_prefixlen == - flowlist_entry_val2->dst_ip_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->dst_ip_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_PREFIX_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_FLE] ) if (!memcmp(&flowlist_entry_val3->src_ip, - &flowlist_entry_val2->src_ip, - sizeof(flowlist_entry_val2->src_ip))) - flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_FLE] = UNC_VF_INVALID; + &flowlist_entry_val2->src_ip, + sizeof(flowlist_entry_val2->src_ip))) + flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] ) if (flowlist_entry_val3->src_ip_prefixlen == - flowlist_entry_val2->src_ip_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->src_ip_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_PREFIX_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_VLAN_PRIORITY_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_VLAN_PRIORITY_FLE] ) if (flowlist_entry_val3->vlan_priority == - flowlist_entry_val2->vlan_priority) - flowlist_entry_val1->valid[UPLL_IDX_VLAN_PRIORITY_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->vlan_priority) + flowlist_entry_val1->valid[UPLL_IDX_VLAN_PRIORITY_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_V6_FLE] ) if (!memcmp(&flowlist_entry_val3->dst_ipv6, - &flowlist_entry_val2->dst_ipv6, - sizeof(flowlist_entry_val2->dst_ipv6))) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_FLE] = UNC_VF_INVALID; + &flowlist_entry_val2->dst_ipv6, + sizeof(flowlist_entry_val2->dst_ipv6))) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE]) if (flowlist_entry_val3->dst_ipv6_prefixlen == - flowlist_entry_val2->dst_ipv6_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->dst_ipv6_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_DST_IP_V6_PREFIX_FLE] = + UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_V6_FLE] ) if (!memcmp(&flowlist_entry_val3->src_ipv6, - &flowlist_entry_val2->src_ipv6, - sizeof(flowlist_entry_val2->src_ipv6))) + &flowlist_entry_val2->src_ipv6, + sizeof(flowlist_entry_val2->src_ipv6))) flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE]) if (flowlist_entry_val3->src_ipv6_prefixlen == - flowlist_entry_val2->src_ipv6_prefixlen) - flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE] = UNC_VF_INVALID; + flowlist_entry_val2->src_ipv6_prefixlen) + flowlist_entry_val1->valid[UPLL_IDX_SRC_IP_V6_PREFIX_FLE] = + UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_IP_PROTOCOL_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_IP_PROTOCOL_FLE] ) if (flowlist_entry_val3->ip_proto == flowlist_entry_val2->ip_proto) - flowlist_entry_val1->valid[UPLL_IDX_IP_PROTOCOL_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_IP_PROTOCOL_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_IP_DSCP_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_IP_DSCP_FLE] ) if (flowlist_entry_val3->ip_dscp == flowlist_entry_val2->ip_dscp) - flowlist_entry_val1->valid[UPLL_IDX_IP_DSCP_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_IP_DSCP_FLE] = UNC_VF_INVALID; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_L4_DST_PORT_FLE] ) if (flowlist_entry_val3->l4_dst_port == flowlist_entry_val2->l4_dst_port) - flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_FLE] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE] - && UNC_VF_VALID == - flowlist_entry_val2->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE]) + && UNC_VF_VALID == + flowlist_entry_val2->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE]) if (flowlist_entry_val3->l4_dst_port_endpt == - flowlist_entry_val2->l4_dst_port_endpt) + flowlist_entry_val2->l4_dst_port_endpt) flowlist_entry_val1->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; - + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_L4_SRC_PORT_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_L4_SRC_PORT_FLE] ) if (flowlist_entry_val3->l4_src_port == flowlist_entry_val2->l4_src_port) flowlist_entry_val1->valid[UPLL_IDX_L4_SRC_PORT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if (UNC_VF_VALID == @@ -1545,9 +1575,9 @@ bool FlowListEntryMoMgr::CompareValidVal(void *&val1, void *val2, void *val3, UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_L4_SRC_PORT_ENDPT_FLE] ) if (flowlist_entry_val3->l4_src_port_endpt == - flowlist_entry_val2->l4_src_port_endpt) + flowlist_entry_val2->l4_src_port_endpt) flowlist_entry_val1->valid[UPLL_IDX_L4_SRC_PORT_ENDPT_FLE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_ICMP_TYPE_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_ICMP_TYPE_FLE]) @@ -1567,26 +1597,26 @@ bool FlowListEntryMoMgr::CompareValidVal(void *&val1, void *val2, void *val3, if (UNC_VF_VALID == flowlist_entry_val1->valid[UPLL_IDX_ICMP_V6_CODE_FLE] && UNC_VF_VALID == flowlist_entry_val2->valid[UPLL_IDX_ICMP_V6_CODE_FLE]) if (flowlist_entry_val3->icmpv6_code == flowlist_entry_val2->icmpv6_code) - flowlist_entry_val1->valid[UPLL_IDX_ICMP_V6_CODE_FLE] = UNC_VF_INVALID; + flowlist_entry_val1->valid[UPLL_IDX_ICMP_V6_CODE_FLE] = UNC_VF_INVALID; - for (unsigned int loop = 0; - loop < sizeof(flowlist_entry_val1->valid) / sizeof(uint8_t); ++loop) { + for (unsigned int loop = 0; + loop < sizeof(flowlist_entry_val1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) flowlist_entry_val1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) flowlist_entry_val1->valid[loop])) - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == (uint8_t) flowlist_entry_val1->valid[loop])) + invalid_attr = false; } return invalid_attr; } upll_rc_t FlowListEntryMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr param"); return UPLL_RC_ERR_GENERIC; @@ -1598,7 +1628,9 @@ upll_rc_t FlowListEntryMoMgr::MergeValidate(unc_key_type_t keytype, } upll_rc_t FlowListEntryMoMgr::RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi, const char *ctrlr_id) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG(" FlowListEntryMoMgr::Rename Not required:: successful "); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; @@ -1614,7 +1646,8 @@ upll_rc_t FlowListEntryMoMgr::RenameMo(IpcReqRespHeader *req, * DalDmlIntf *dmi); */ upll_rc_t FlowListEntryMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; // int refcount = 0; @@ -1625,15 +1658,17 @@ upll_rc_t FlowListEntryMoMgr::IsReferenced(ConfigKeyVal *ikey, return UPLL_RC_ERR_CFG_SEMANTIC; } key_flowlist_entry_t *key_fle = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); PolicingProfileEntryMoMgr *mgr = - reinterpret_cast(const_cast - (GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); + reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); if (NULL == mgr) { return UPLL_RC_ERR_GENERIC; } result_code = mgr->IsFlowListMatched(reinterpret_cast - (key_fle->flowlist_key.flowlist_name), UPLL_DT_CANDIDATE, dmi); + (key_fle->flowlist_key.flowlist_name), + UPLL_DT_CANDIDATE, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("IsFlowListMatched failed from ppe %d", result_code); } @@ -1645,7 +1680,7 @@ upll_rc_t FlowListEntryMoMgr::GetFlowListKeyVal( UPLL_FUNC_TRACE; key_flowlist_entry_t *key_flowlist_entry = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); if (NULL == key_flowlist_entry) { UPLL_LOG_DEBUG("Invalid key"); @@ -1653,118 +1688,114 @@ upll_rc_t FlowListEntryMoMgr::GetFlowListKeyVal( } key_flowlist_t *key_flowlist = - reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(key_flowlist_t))); + reinterpret_cast(ConfigKeyVal::Malloc( + sizeof(key_flowlist_t))); uuu::upll_strncpy( key_flowlist->flowlist_name, key_flowlist_entry-> flowlist_key.flowlist_name, kMaxLenFlowListName + 1); okey = new ConfigKeyVal(UNC_KT_FLOWLIST, - IpctSt::kIpcStKeyFlowlist, key_flowlist, - NULL); - - if (!okey) return UPLL_RC_ERR_GENERIC; + IpctSt::kIpcStKeyFlowlist, key_flowlist, + NULL); + if (!okey) { + FREE_IF_NOT_NULL(key_flowlist); + return UPLL_RC_ERR_GENERIC; + } UPLL_LOG_DEBUG("GetObjectConfigVal Successfull"); return UPLL_RC_SUCCESS; } -upll_rc_t FlowListEntryMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, +upll_rc_t FlowListEntryMoMgr::GetRenamedControllerKey( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - if (NULL == ctrlr_dom) { - UPLL_LOG_DEBUG("ctrlr_dom is NULL"); - return UPLL_RC_ERR_GENERIC; - } - uint8_t *ctrlr_name = ctrlr_dom->ctrlr; - - uint8_t rename = 0; - if (ctrlr_name == NULL) { - UPLL_LOG_DEBUG("Controller Name is Not Valid"); - return UPLL_RC_ERR_GENERIC; - } - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) - return UPLL_RC_SUCCESS; /* Flowlist is renamed */ - if (rename & RENAME_FLOWLIST) { - UPLL_LOG_DEBUG("flow list renamed"); - MoMgrImpl *mgr = + UPLL_LOG_DEBUG("flow list renamed"); + MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + UNC_KT_FLOWLIST))); - result_code = mgr->GetChildConfigKey(okey, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); - return UPLL_RC_ERR_GENERIC; - } + result_code = mgr->GetChildConfigKey(okey, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); + return UPLL_RC_ERR_GENERIC; + } - if (ctrlr_dom != NULL) + if (ctrlr_dom != NULL) { SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + } else { + UPLL_LOG_DEBUG("Controller id is null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->flowlist_name, - reinterpret_cast - (ikey->get_key())->flowlist_key.flowlist_name, - (kMaxLenFlowListName + 1)); + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_key())->flowlist_key.flowlist_name, + (kMaxLenFlowListName + 1)); - UPLL_LOG_DEBUG("flowlist name (%s) (%s)", - reinterpret_cast(okey->get_key())->flowlist_name, - reinterpret_cast - (ikey->get_key())->flowlist_key.flowlist_name); + UPLL_LOG_DEBUG("flowlist name (%s) (%s)", + reinterpret_cast + (okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_key())->flowlist_key.flowlist_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB failed (%d)", result_code); + result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("ReadConfigDB no instance"); DELETE_IF_NOT_NULL(okey); - return result_code; + return UPLL_RC_SUCCESS; } + UPLL_LOG_DEBUG("ReadConfigDB failed (%d)", result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } - val_rename_flowlist_t *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("FlowList Name is not valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + val_rename_flowlist_t *rename_val = NULL; + rename_val = reinterpret_cast (GetVal(okey)); + if (!rename_val) { + UPLL_LOG_DEBUG("FlowList Name is not valid"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - key_flowlist_entry *key = reinterpret_cast(ikey->get_key()); + key_flowlist_entry *key = + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(key->flowlist_key.flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName+1)); - UPLL_LOG_DEBUG("flowlist re name (%s) (%s)", - key->flowlist_key.flowlist_name, - rename_val->flowlist_newname); + rename_val->flowlist_newname, + (kMaxLenFlowListName+1)); + UPLL_LOG_DEBUG("flowlist re name (%s) (%s)", + key->flowlist_key.flowlist_name, + rename_val->flowlist_newname); + + DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(okey); - } - UPLL_LOG_DEBUG("GetRenamedControllerKey is Successfull"); return UPLL_RC_SUCCESS; } upll_rc_t FlowListEntryMoMgr::GetControllerSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code; DbSubOp dbop = {kOpReadExist|kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr}; + kOpInOutCtrlr}; result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); return result_code; @@ -1774,11 +1805,15 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, IpcResponse *ipc_resp, unc_keytype_operation_t op, DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { UPLL_FUNC_TRACE; upll_rc_t result_code; /* read from main table */ - ConfigKeyVal *dup_ckmain = ck_main; + ConfigKeyVal *dup_ckmain = NULL; + if (ck_main != NULL) + dup_ckmain = ck_main; if (op == UNC_OP_CREATE) { dup_ckmain = NULL; result_code = GetChildConfigKey(dup_ckmain, ck_main); @@ -1792,11 +1827,12 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("%s Flowlist read failed %d", - (dup_ckmain->ToStrAll()).c_str(), result_code); - delete dup_ckmain; + (dup_ckmain->ToStrAll()).c_str(), result_code); + if (dup_ckmain) delete dup_ckmain; return result_code; } } + if (!dup_ckmain) return UPLL_RC_ERR_GENERIC; /* Get renamed key if key is renamed */ result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_CANDIDATE, dmi, ctrlr_dom); @@ -1809,27 +1845,31 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, ipc_resp->header.config_id, op, UPLL_DT_CANDIDATE, dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG("Controller disconnected"); result_code = UPLL_RC_SUCCESS; } if (result_code != UPLL_RC_SUCCESS) { + *driver_resp = true; UPLL_LOG_DEBUG("IpcSend failed %d", result_code); } + affected_ctrlr_set->insert((const char *)ctrlr_dom->ctrlr); if ((op == UNC_OP_CREATE) && dup_ckmain) { delete dup_ckmain; dup_ckmain = NULL; } - return result_code; + UPLL_LOG_TRACE("Driver response received %d", *driver_resp) + return result_code; } -upll_rc_t FlowListEntryMoMgr::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { +upll_rc_t FlowListEntryMoMgr::TxUpdateController( + unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode dal_result = uud::kDalRcSuccess; @@ -1867,28 +1907,43 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateController(unc_key_type_t keytype, if (result_code != UPLL_RC_SUCCESS) break; ck_main = NULL; + bool driver_resp = false; if ( (op == UNC_OP_CREATE) || (op == UNC_OP_DELETE) ) { result_code = GetChildConfigKey(ck_main, req); - if (result_code != UPLL_RC_SUCCESS) + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(req); + if (dal_cursor_handle) { + dmi->CloseCursor(dal_cursor_handle, true); + dal_cursor_handle = NULL; + } return result_code; - + } GET_USER_DATA_CTRLR_DOMAIN(req, ctrlr_dom); UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); if (ctrlr_dom.ctrlr == NULL) { UPLL_LOG_DEBUG("Invalid controller"); - if (ck_main) delete ck_main; + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(req); + if (dal_cursor_handle) { + dmi->CloseCursor(dal_cursor_handle, true); + dal_cursor_handle = NULL; + } return UPLL_RC_ERR_GENERIC; } + result_code = TxUpdateProcess(ck_main, &resp, - op, dmi, &ctrlr_dom); - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); - if (result_code != UPLL_RC_SUCCESS) { + op, dmi, &ctrlr_dom, + affected_ctrlr_set, + &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdateProcess Returns error %d", result_code); upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); + ctrlr_dom.ctrlr); if (UPLL_RC_SUCCESS != local_rc && UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); @@ -1897,16 +1952,29 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateController(unc_key_type_t keytype, result_code = UPLL_RC_ERR_GENERIC; break; } + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = resp.ckv_data; DELETE_IF_NOT_NULL(ck_main); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(resp.ckv_data); + break; } DELETE_IF_NOT_NULL(resp.ckv_data); } else if (op == UNC_OP_UPDATE) { ConfigKeyVal *ck_ctrlr = NULL; result_code = DupConfigKeyVal(ck_main, req, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(req); + if (dal_cursor_handle) { + dmi->CloseCursor(dal_cursor_handle, true); + dal_cursor_handle = NULL; + } return result_code; + } /* result_code = ValidateCapability(&(ipc_req.header), ck_main); if (result_code != UPLL_RC_SUCCESS) { @@ -1923,8 +1991,8 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateController(unc_key_type_t keytype, DELETE_IF_NOT_NULL(nreq); DELETE_IF_NOT_NULL(req); if (dal_cursor_handle) { - dmi->CloseCursor(dal_cursor_handle, true); - dal_cursor_handle = NULL; + dmi->CloseCursor(dal_cursor_handle, true); + dal_cursor_handle = NULL; } return result_code; } @@ -1940,9 +2008,17 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateController(unc_key_type_t keytype, for (ConfigKeyVal *tmp = ck_ctrlr; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { + driver_resp = false; GET_USER_DATA_CTRLR_DOMAIN(tmp, ctrlr_dom); if (ctrlr_dom.ctrlr == NULL) { UPLL_LOG_DEBUG("Invalid controller"); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(req); + if (dal_cursor_handle) { + dmi->CloseCursor(dal_cursor_handle, true); + dal_cursor_handle = NULL; + } return UPLL_RC_ERR_GENERIC; } ConfigKeyVal *temp_ck_main = NULL; @@ -1951,23 +2027,35 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateController(unc_key_type_t keytype, UPLL_LOG_DEBUG("DupConfigKeyVal failed %d", result_code); DELETE_IF_NOT_NULL(ck_ctrlr); DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(req); + if (dal_cursor_handle) { + dmi->CloseCursor(dal_cursor_handle, true); + dal_cursor_handle = NULL; + } return result_code; } - result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom); - affected_ctrlr_set->insert(reinterpret_cast - (ctrlr_dom.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { + result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom, + affected_ctrlr_set, &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdate Process returns with %d", result_code); *err_ckv = temp_ck_main; DELETE_IF_NOT_NULL(resp.ckv_data); DELETE_IF_NOT_NULL(ck_ctrlr); DELETE_IF_NOT_NULL(ck_main); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(resp.ckv_data); + DELETE_IF_NOT_NULL(ck_ctrlr); + DELETE_IF_NOT_NULL(ck_main); + break; } DELETE_IF_NOT_NULL(resp.ckv_data); DELETE_IF_NOT_NULL(temp_ck_main); } DELETE_IF_NOT_NULL(ck_ctrlr); + if (driver_resp || result_code != UPLL_RC_SUCCESS) + break; } DELETE_IF_NOT_NULL(ck_main); } @@ -1982,13 +2070,14 @@ upll_rc_t FlowListEntryMoMgr::TxUpdateController(unc_key_type_t keytype, return result_code; } -upll_rc_t FlowListEntryMoMgr::AddFlowListToController(char *flowlist_name, - DalDmlIntf *dmi, - char* ctrl_id, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op) { +upll_rc_t FlowListEntryMoMgr::AddFlowListToController( + char *flowlist_name, + DalDmlIntf *dmi, + char* ctrl_id, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE - upll_rc_t result_code = UPLL_RC_SUCCESS; + upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; result_code = GetChildConfigKey(okey, NULL); @@ -1997,14 +2086,14 @@ upll_rc_t FlowListEntryMoMgr::AddFlowListToController(char *flowlist_name, return result_code; } key_flowlist_entry_t *flowlist_key = reinterpret_cast - (okey->get_key()); + (okey->get_key()); uuu::upll_strncpy(flowlist_key->flowlist_key.flowlist_name, flowlist_name, (kMaxLenFlowListName+1)); DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCs}; result_code = ReadConfigDB(okey, - dt_type, - UNC_OP_READ, - dbop, dmi, MAINTBL); + dt_type, + UNC_OP_READ, + dbop, dmi, MAINTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("No such instance in entry table"); DELETE_IF_NOT_NULL(okey); @@ -2012,7 +2101,7 @@ upll_rc_t FlowListEntryMoMgr::AddFlowListToController(char *flowlist_name, } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read flowlist configuration from DB %d", - result_code); + result_code); DELETE_IF_NOT_NULL(okey); return result_code; } @@ -2026,20 +2115,21 @@ void FlowListEntryMoMgr::SetValidAttributesForController( val_flowlist_entry_t *val) { UPLL_FUNC_TRACE; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(val->valid[0]); ++loop ) { + loop < sizeof(val->valid)/sizeof(val->valid[0]); ++loop ) { if ((val->valid[loop] == UNC_VF_NOT_SUPPORTED) || (val->valid[loop] == - UNC_VF_VALID_NO_VALUE)) { - val->valid[loop] = UNC_VF_INVALID; + UNC_VF_VALID_NO_VALUE)) { + val->valid[loop] = UNC_VF_INVALID; } } } -upll_rc_t FlowListEntryMoMgr::UpdateControllerTable(ConfigKeyVal *ikey, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - char* ctrl_id) { +upll_rc_t FlowListEntryMoMgr::UpdateControllerTable( + ConfigKeyVal *ikey, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + char* ctrl_id) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowlist_entry_ctrl_t *val_flowlist_entry_ctrl = NULL; @@ -2053,35 +2143,16 @@ upll_rc_t FlowListEntryMoMgr::UpdateControllerTable(ConfigKeyVal *ikey, result_code = GetChildConfigKey(ctrlr_ckv, temp_ikey); SET_USER_DATA_CTRLR(ctrlr_ckv, ctrl_id); result_code = ReadConfigDB(ctrlr_ckv, dt_type, UNC_OP_READ, - dbop, dmi, CTRLRTBL); + dbop, dmi, CTRLRTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { if (op == UNC_OP_CREATE || op == UNC_OP_UPDATE) { val_flowlist_entry_t *val_flowlist_entry = - reinterpret_cast - (GetVal(temp_ikey)); - - //capability check - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ctrlr_ckv); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, ctrl_id, - dt_type, - &cur_instance_count, - dmi, CTRLRTBL); - DELETE_IF_NOT_NULL(temp_key); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - DELETE_IF_NOT_NULL(ctrlr_ckv); - return result_code; - } + reinterpret_cast + (GetVal(temp_ikey)); + // capability check IpcReqRespHeader *req_header = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); req_header->operation = op; req_header->datatype = UPLL_DT_CANDIDATE; @@ -2091,104 +2162,127 @@ upll_rc_t FlowListEntryMoMgr::UpdateControllerTable(ConfigKeyVal *ikey, free(req_header); if (result_code != UPLL_RC_SUCCESS) { - // Error should be returned if the failure code is other then ctrlr not + // Error should be returned if the failure code + // is other then ctrlr not // supported DELETE_IF_NOT_NULL(ctrlr_ckv); if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrl_id), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { + dt_type, &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { result_code = UPLL_RC_SUCCESS; UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); temp_ikey = temp_ikey->get_next_cfg_key_val(); continue; } UPLL_LOG_DEBUG("ValidateCapability Failed: result_code=%d", - result_code); + result_code); return result_code; } /** change NOT_SOPPRTED attribute to INVALID to store in ctrlr table */ SetValidAttributesForController(val_flowlist_entry); val_flowlist_entry_ctrl = reinterpret_cast - (GetVal(ctrlr_ckv)); + (GetVal(ctrlr_ckv)); for ( unsigned int loop = 0; - loop < sizeof - (val_flowlist_entry->valid)/sizeof(val_flowlist_entry->valid[0]); - ++loop ) { + loop < sizeof + (val_flowlist_entry->valid)/sizeof(val_flowlist_entry->valid[0]); + ++loop ) { val_flowlist_entry_ctrl->valid[loop] = - val_flowlist_entry->valid[loop]; + val_flowlist_entry->valid[loop]; + } + + // Audit + if (dt_type == UPLL_DT_AUDIT) { + UPLL_LOG_DEBUG("Audit db setting cs"); + for (unsigned int loop = 0; + loop < (sizeof + (val_flowlist_entry_ctrl->valid)/ + sizeof(val_flowlist_entry_ctrl->valid[0])); + loop++) { + val_flowlist_entry_ctrl->cs_attr[loop] = + (unc_keytype_configstatus_t)val_flowlist_entry->cs_attr[loop]; + } + val_flowlist_entry_ctrl->cs_row_status = + (unc_keytype_configstatus_t)val_flowlist_entry->cs_row_status; } result_code = UpdateConfigDB(ctrlr_ckv, dt_type, - UNC_OP_CREATE, dmi, - CTRLRTBL); + UNC_OP_CREATE, dmi, + CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to create a FlowListEntry in Ctrlr table=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(ctrlr_ckv); return result_code; } } DELETE_IF_NOT_NULL(ctrlr_ckv); } else if (UPLL_RC_SUCCESS == result_code) { - if (op == UNC_OP_UPDATE || op == UNC_OP_DELETE) { + if (op == UNC_OP_UPDATE || op == UNC_OP_DELETE) { if (op == UNC_OP_UPDATE) { val_flowlist_entry_t *val_flowlist_entry = - reinterpret_cast - (GetVal(temp_ikey)); + reinterpret_cast + (GetVal(temp_ikey)); // Capability check IpcReqRespHeader *req_header = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); req_header->operation = op; req_header->datatype = UPLL_DT_CANDIDATE; // Validate whether the attributes supported by controller or not - result_code = ValidateCapability(req_header, temp_ikey, reinterpret_cast(ctrl_id)); + result_code = ValidateCapability(req_header, temp_ikey, + reinterpret_cast(ctrl_id)); free(req_header); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(ctrlr_ckv); // FlowListEntry is not supported for other than PFC Controller // so SKIP the adding entry for such sontroller if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrl_id), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - result_code = UPLL_RC_SUCCESS; + dt_type, &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { + result_code = UPLL_RC_SUCCESS; UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); temp_ikey = temp_ikey->get_next_cfg_key_val(); continue; } UPLL_LOG_DEBUG("Key not supported by controller"); return result_code; - } + } - val_flowlist_entry_ctrl = reinterpret_cast - (GetVal(ctrlr_ckv)); + val_flowlist_entry_ctrl = reinterpret_cast + + (GetVal(ctrlr_ckv)); for ( unsigned int loop = 0; - loop < sizeof - (val_flowlist_entry->valid)/sizeof(val_flowlist_entry->valid[0]); - ++loop ) { + loop < sizeof + (val_flowlist_entry->valid)/sizeof + (val_flowlist_entry->valid[0]); + ++loop ) { if (val_flowlist_entry->valid[loop] == UNC_VF_NOT_SUPPORTED) { - val_flowlist_entry_ctrl->valid[loop] = UNC_VF_INVALID; + val_flowlist_entry_ctrl->valid[loop] = UNC_VF_INVALID; } else { val_flowlist_entry_ctrl->valid[loop] = - val_flowlist_entry->valid[loop]; + val_flowlist_entry->valid[loop]; } } } - if ((UPLL_DT_AUDIT == dt_type) && (UNC_OP_DELETE != op) ) { + if ((UPLL_DT_AUDIT == dt_type) && (UNC_OP_DELETE != op)) { val_flowlist_entry_t *val_flowlist_entry = - reinterpret_cast - (GetVal(temp_ikey)); - val_flowlist_entry_ctrl = reinterpret_cast - (GetVal(ctrlr_ckv)); + reinterpret_cast + (GetVal(temp_ikey)); + val_flowlist_entry_ctrl = reinterpret_cast + + (GetVal(ctrlr_ckv)); for ( unsigned int loop = 0; - loop < sizeof - (val_flowlist_entry->valid)/sizeof(val_flowlist_entry->valid[0]); - ++loop ) { - val_flowlist_entry_ctrl->cs_attr[loop] = (unc_keytype_configstatus_t) + loop < sizeof + (val_flowlist_entry->valid)/sizeof(val_flowlist_entry->valid[0]); + ++loop ) { + val_flowlist_entry_ctrl->cs_attr[loop] = + (unc_keytype_configstatus_t) val_flowlist_entry->cs_attr[loop]; } - val_flowlist_entry_ctrl->cs_row_status = (unc_keytype_configstatus_t) - val_flowlist_entry->cs_row_status; + val_flowlist_entry_ctrl->cs_row_status = (unc_keytype_configstatus_t) + val_flowlist_entry->cs_row_status; } SET_USER_DATA_CTRLR(ctrlr_ckv, ctrl_id); result_code = UpdateConfigDB(ctrlr_ckv, dt_type, @@ -2199,7 +2293,7 @@ upll_rc_t FlowListEntryMoMgr::UpdateControllerTable(ConfigKeyVal *ikey, } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to delete a FlowListEntry in Ctrlr table=%d", - result_code); + result_code); // delete ctrlr_ckv; } } @@ -2215,9 +2309,9 @@ upll_rc_t FlowListEntryMoMgr::UpdateControllerTable(ConfigKeyVal *ikey, } upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( - unc_key_type_t keytype, - CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf *dmi) { + unc_key_type_t keytype, + CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result; @@ -2236,34 +2330,34 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( CtrlrCommitStatusList::iterator ccsListItr; CtrlrCommitStatus *ccStatusPtr; - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { - UPLL_LOG_DEBUG( - "FlowListEntryMoMgr::ctrlr_commit_status is NULL"); - return UPLL_RC_ERR_GENERIC; - } - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; ck_err = - ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, - ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG( - "FlowListEntryMoMgr::GetRenamedUncKey is failed,resultcode= %d", - result_code); - return result_code; + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { + ccStatusPtr = *ccsListItr; + ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; + ck_err = + ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG( + "FlowListEntryMoMgr::GetRenamedUncKey is failed," + "resultcode= %d", + result_code); + return result_code; + } } } } } for (int i = 0; i < nop; i++) { if (op[i] != UNC_OP_UPDATE) { - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], + req, nreq, &cfg1_cursor, dmi, NULL, MAINTBL, true); while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); @@ -2277,7 +2371,7 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Updating Main table Error %d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -2296,7 +2390,7 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( for (int i = 0; i < nop; i++) { MoMgrTables tbl = (op[i] == UNC_OP_UPDATE)?MAINTBL:CTRLRTBL; result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, - nreq, &cfg1_cursor, dmi, NULL, tbl,true); + nreq, &cfg1_cursor, dmi, NULL, tbl, true); ConfigKeyVal *fle_ctrlr_key = NULL; while (result_code == UPLL_RC_SUCCESS) { @@ -2305,13 +2399,14 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( if (result_code != UPLL_RC_SUCCESS) break; if (op[i] == UNC_OP_UPDATE) { - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr | kOpInOutCs }; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr | kOpInOutCs }; result_code = GetChildConfigKey(fle_ctrlr_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -2324,23 +2419,27 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( result_code = ReadConfigDB(fle_ctrlr_key, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(fle_ctrlr_key); + DELETE_IF_NOT_NULL(fle_ctrlr_key); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("No record found in FlowlistEntry Ctrlr Tbl"); result_code = UpdateMainTbl(req, op[i], UPLL_RC_SUCCESS, nreq, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error updating main table%d", result_code); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); return result_code; } else { continue; } } else { UPLL_LOG_DEBUG("DB err while reading records from ctrlrtbl, err %d", - result_code); + result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -2348,19 +2447,19 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( } for (ConfigKeyVal *tmp = fle_ctrlr_key; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { - GET_USER_DATA_CTRLR(tmp, ctrlr_id); string controller(reinterpret_cast(ctrlr_id)); UPLL_LOG_DEBUG("Controller ID =%s", controller.c_str()); - DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCs }; + DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCs }; result_code = GetChildConfigKey(fle_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(fle_ctrlr_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -2369,10 +2468,10 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); - DELETE_IF_NOT_NULL(fle_key); + DELETE_IF_NOT_NULL(fle_key); DELETE_IF_NOT_NULL(fle_ctrlr_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -2380,17 +2479,17 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( static_cast (GetVal(fle_key))->cs_row_status = static_cast - (GetVal(nreq))->cs_row_status; + (GetVal(nreq))->cs_row_status; - // ReadingConfigstatus for main tbl + // ReadingConfigstatus for main tbl result_code = GetChildConfigKey(fl_run_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); - DELETE_IF_NOT_NULL(fle_key); + DELETE_IF_NOT_NULL(fle_key); DELETE_IF_NOT_NULL(fle_ctrlr_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); @@ -2401,9 +2500,9 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); - DELETE_IF_NOT_NULL(fle_key); + DELETE_IF_NOT_NULL(fle_key); DELETE_IF_NOT_NULL(fle_ctrlr_key); - DELETE_IF_NOT_NULL(fl_run_key); + DELETE_IF_NOT_NULL(fl_run_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); @@ -2412,24 +2511,24 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( } val_flowlist_entry_t *val_main_can = reinterpret_cast - (GetVal(fle_key)); + (GetVal(fle_key)); val_flowlist_entry_t *val_main = reinterpret_cast - (GetVal(fl_run_key)); - for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { - val_main_can->cs_attr[loop] = val_main->cs_attr[loop]; - } + (GetVal(fl_run_key)); + for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ + sizeof(val_main->valid[0]); ++loop) { + val_main_can->cs_attr[loop] = val_main->cs_attr[loop]; + } - // For Reading The controller table for config status + // For Reading The controller table for config status result_code = GetChildConfigKey(fl_run_ctrl_key, tmp); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); - DELETE_IF_NOT_NULL(fle_key); + DELETE_IF_NOT_NULL(fle_key); DELETE_IF_NOT_NULL(fle_ctrlr_key); - DELETE_IF_NOT_NULL(fl_run_key); + DELETE_IF_NOT_NULL(fl_run_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -2438,36 +2537,44 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( UNC_OP_READ, dbop_maintbl, dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); - DELETE_IF_NOT_NULL(fle_key); + DELETE_IF_NOT_NULL(fle_key); DELETE_IF_NOT_NULL(fle_ctrlr_key); - DELETE_IF_NOT_NULL(fl_run_key); - DELETE_IF_NOT_NULL(fl_run_ctrl_key); + DELETE_IF_NOT_NULL(fl_run_key); + DELETE_IF_NOT_NULL(fl_run_ctrl_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; } val_flowlist_entry_ctrl *val_ctrlr_can = reinterpret_cast - (GetVal(tmp)); + (GetVal(tmp)); val_flowlist_entry_ctrl *val_ctrlr_run = reinterpret_cast - (GetVal(fl_run_ctrl_key)); + (GetVal(fl_run_ctrl_key)); val_ctrlr_can->cs_row_status = val_ctrlr_run->cs_row_status; for (unsigned int loop = 0; loop < sizeof(val_ctrlr_run->valid)/ - sizeof(val_ctrlr_run->valid[0]); ++loop) { - val_ctrlr_can->cs_attr[loop] = val_ctrlr_run->cs_attr[loop]; + sizeof(val_ctrlr_run->valid[0]); ++loop) { + val_ctrlr_can->cs_attr[loop] = val_ctrlr_run->cs_attr[loop]; + } + // End Reading The controller table for config status + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL."); + result_code = UpdateConfigStatus(fle_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + nreq, + dmi, tmp); + } else { + result_code = UpdateConfigStatus(fle_key, op[i], + ctrlr_result[controller], nreq, + dmi, tmp); } - //End Reading The controller table for config status - result_code = UpdateConfigStatus(fle_key, op[i], - ctrlr_result[controller], nreq, - dmi, tmp); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigStatus Failed ,err %d", result_code); - break; + UPLL_LOG_DEBUG("UpdateConfigStatus Failed ,err %d", result_code); + break; } - DELETE_IF_NOT_NULL(fl_run_key); - DELETE_IF_NOT_NULL(fl_run_ctrl_key); + DELETE_IF_NOT_NULL(fl_run_key); + DELETE_IF_NOT_NULL(fl_run_ctrl_key); void *fle_val1 = GetVal(tmp); void *fle_val2 = GetVal(nreq); void *fle_val3 = GetVal(req); @@ -2488,7 +2595,7 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( op[i], dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB for main tbl is failed"); - DELETE_IF_NOT_NULL(fle_ctrlr_key); + DELETE_IF_NOT_NULL(fle_ctrlr_key); DELETE_IF_NOT_NULL(fle_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -2498,39 +2605,52 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( } // COV UNREACHABLE EnqueCfgNotification(op[i], UPLL_DT_RUNNING, fle_key); - DELETE_IF_NOT_NULL(fle_key); + DELETE_IF_NOT_NULL(fle_key); } } else { if (op[i] == UNC_OP_CREATE) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag |kOpInOutCs }; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag |kOpInOutCs }; result_code = GetChildConfigKey(fle_key, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", + result_code); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } + result_code = ReadConfigDB(fle_key, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && - (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("ReadConfigDB is failed -%d", result_code); - DELETE_IF_NOT_NULL(fle_key); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - return result_code; + (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("ReadConfigDB is failed -%d", result_code); + DELETE_IF_NOT_NULL(fle_key); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; } /* Capability check * req_header->operation = op[i]; * strcpy((char*)req_header->datatype,(char*)UNC_DT_CANDIDATE); * result_code = ValidateCapability(req_header, vtn_ctrlr_key); * */ - + // set consolidated config status to UNKNOWN to init vtn cs_status // to the cs_status of first controller uint32_t cur_instance_count; result_code = GetInstanceCount(fle_key, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); + UPLL_DT_CANDIDATE, + &cur_instance_count, + dmi, CTRLRTBL); if ((result_code == UPLL_RC_SUCCESS) && (cur_instance_count == 1)) - reinterpret_cast(GetVal(fle_key))->cs_row_status = - UNC_CS_UNKNOWN; + reinterpret_cast + (GetVal(fle_key))->cs_row_status = + UNC_CS_UNKNOWN; result_code = DupConfigKeyVal(fle_ctrlr_key, req, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigKeyVal is failed -%d", result_code); @@ -2544,68 +2664,75 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( GET_USER_DATA_CTRLR(fle_ctrlr_key, ctrlr_id); string controller(reinterpret_cast(ctrlr_id)); - result_code = UpdateConfigStatus(fle_key, op[i], - ctrlr_result[controller], nreq, - dmi, fle_ctrlr_key); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL."); + result_code = UpdateConfigStatus(fle_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + nreq, + dmi, fle_ctrlr_key); + } else { + result_code = UpdateConfigStatus(fle_key, op[i], + ctrlr_result[controller], nreq, + dmi, fle_ctrlr_key); + } } else if (op[i] == UNC_OP_DELETE) { - // Reading Main Running DB for delete op - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag | kOpInOutCs }; + // Reading Main Running DB for delete op + DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCs }; GET_USER_DATA_CTRLR(req, ctrlr_id); result_code = GetChildConfigKey(fl_ck_run, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", + result_code); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; - } + } - GET_USER_DATA_CTRLR(req, ctrlr_id); - result_code = ReadConfigDB(fl_ck_run, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); + GET_USER_DATA_CTRLR(req, ctrlr_id); + result_code = ReadConfigDB(fl_ck_run, UPLL_DT_RUNNING, + UNC_OP_READ, dbop1, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Unable to read configuration from RunningDB"); - DELETE_IF_NOT_NULL(fl_ck_run); - if (cfg1_cursor) + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Unable to read configuration from RunningDB"); + DELETE_IF_NOT_NULL(fl_ck_run); + if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - return result_code; - } - if (result_code == UPLL_RC_SUCCESS) { - //If Record exists in MainTBL then perform consolidation - result_code = SetFlowlistEntryConsolidatedStatus(fl_ck_run, - ctrlr_id, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", - result_code); - DELETE_IF_NOT_NULL(fl_ck_run); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - return result_code; - } - } - DELETE_IF_NOT_NULL(fl_ck_run); - result_code = GetChildConfigKey(fle_ctrlr_key, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in getting the GetChildConfigKey,err=%d", + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } + if (result_code == UPLL_RC_SUCCESS) { + // If Record exists in MainTBL then perform consolidation + result_code = SetFlowlistEntryConsolidatedStatus(fl_ck_run, + ctrlr_id, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Could not set consolidated status %d", result_code); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - return result_code; - } - + DELETE_IF_NOT_NULL(fl_ck_run); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } + } + DELETE_IF_NOT_NULL(fl_ck_run); + result_code = GetChildConfigKey(fle_ctrlr_key, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in getting the GetChildConfigKey,err=%d", + result_code); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } } - + result_code = UpdateConfigDB(fle_ctrlr_key, UPLL_DT_RUNNING, op[i], dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -2613,9 +2740,10 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( result_code); DELETE_IF_NOT_NULL(fle_ctrlr_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(fle_key); return result_code; } if (op[i] != UNC_OP_DELETE) { @@ -2625,6 +2753,7 @@ upll_rc_t FlowListEntryMoMgr::TxCopyCandidateToRunning( UPLL_LOG_DEBUG("UpdateConfigDB in main tbl is failed -%d", result_code); DELETE_IF_NOT_NULL(fle_key); + DELETE_IF_NOT_NULL(fle_ctrlr_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); @@ -2666,7 +2795,7 @@ FlowListEntryMoMgr::SetFlowlistEntryConsolidatedStatus(ConfigKeyVal *ikey, bool applied = false, not_applied = false, invalid = false; unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; if (!ikey || !dmi) { UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; @@ -2686,8 +2815,7 @@ FlowListEntryMoMgr::SetFlowlistEntryConsolidatedStatus(ConfigKeyVal *ikey, } for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { - + tmp = tmp->get_next_cfg_key_val()) { ctrlr_val = reinterpret_cast(GetVal(tmp)); if (!ctrlr_val) { UPLL_LOG_DEBUG("Controller Value is empty"); @@ -2704,13 +2832,13 @@ FlowListEntryMoMgr::SetFlowlistEntryConsolidatedStatus(ConfigKeyVal *ikey, switch (ctrlr_val->cs_row_status) { case UNC_CS_APPLIED: applied = true; - break; + break; case UNC_CS_NOT_APPLIED: not_applied = true; - break; + break; case UNC_CS_INVALID: invalid = true; - break; + break; default: UPLL_LOG_DEBUG("Invalid status"); DELETE_IF_NOT_NULL(ctrlr_ckv); @@ -2731,47 +2859,47 @@ FlowListEntryMoMgr::SetFlowlistEntryConsolidatedStatus(ConfigKeyVal *ikey, } applied = not_applied =false; // Set cs_status - val_flowlist_entry_t *fleval = - static_cast(GetVal(ikey)); + val_flowlist_entry_t *fleval = + static_cast(GetVal(ikey)); fleval->cs_row_status = c_status; for (unsigned int loop = 0; loop < sizeof(fleval->valid)/ - sizeof(fleval->valid[0]); ++loop) { + sizeof(fleval->valid[0]); ++loop) { for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { + tmp = tmp->get_next_cfg_key_val()) { ctrlr_val = reinterpret_cast(GetVal(tmp)); GET_USER_DATA_CTRLR(tmp, fle_exist_on_ctrlr); UPLL_LOG_DEBUG("internally read ctrollername %s", fle_exist_on_ctrlr); if (!strcmp(reinterpret_cast(fle_exist_on_ctrlr), - reinterpret_cast(ctrlr_id))) + reinterpret_cast(ctrlr_id))) continue; // skipping entry of deleted controller - if (ctrlr_val->valid[loop] == UNC_VF_VALID) { + if (ctrlr_val->valid[loop] == UNC_VF_VALID) { switch (ctrlr_val->cs_attr[loop]) { case UNC_CS_APPLIED: applied = true; - break; - case UNC_CS_NOT_APPLIED: - not_applied = true; - break; - case UNC_CS_INVALID: - invalid = true; - break; - default: - UPLL_LOG_DEBUG("Invalid status %d", ctrlr_val->cs_attr[loop]); + break; + case UNC_CS_NOT_APPLIED: + not_applied = true; + break; + case UNC_CS_INVALID: + invalid = true; + break; + default: + UPLL_LOG_DEBUG("Invalid status %d", ctrlr_val->cs_attr[loop]); } } } if (invalid) { c_status = UNC_CS_INVALID; } else if (applied && !not_applied) { - c_status = UNC_CS_APPLIED; + c_status = UNC_CS_APPLIED; } else if (!applied && not_applied) { - c_status = UNC_CS_NOT_APPLIED; + c_status = UNC_CS_NOT_APPLIED; } else if (applied && not_applied) { - c_status = UNC_CS_PARTIALLY_APPLIED; + c_status = UNC_CS_PARTIALLY_APPLIED; } else { - c_status = UNC_CS_APPLIED; + c_status = UNC_CS_APPLIED; } fleval->cs_attr[loop] = c_status; applied = not_applied =false; @@ -2784,29 +2912,32 @@ FlowListEntryMoMgr::SetFlowlistEntryConsolidatedStatus(ConfigKeyVal *ikey, } upll_rc_t FlowListEntryMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - val_flowlist_entry_t *val; + val_flowlist_entry_ctrl_t *val; val = (ckv_running != NULL)? - reinterpret_cast - (GetVal(ckv_running)):NULL; + reinterpret_cast + (GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } + UPLL_LOG_DEBUG("CS Status= %u phase =%u", cs_status, phase); if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop ) { + loop < sizeof(val->valid)/sizeof(val->valid[0]); + ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } @@ -2823,10 +2954,10 @@ upll_rc_t FlowListEntryMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, return result_code; } result_code = ReadConfigDB(ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop , dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Unable to read configuration from RunningDB,ResultCode=%d", - result_code); + result_code); delete ckv; return result_code; } @@ -2834,7 +2965,7 @@ upll_rc_t FlowListEntryMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, std::list< unc_keytype_configstatus_t > list_cs_row; val_flowlist_entry_ctrl_t *val; for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { + ++loop) { std::list< unc_keytype_configstatus_t > list_attr; vec_attr.push_back(list_attr); } @@ -2843,23 +2974,23 @@ upll_rc_t FlowListEntryMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, val = reinterpret_cast(GetVal(temp_ckv)); list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { + ++loop) { vec_attr[loop].push_back((unc_keytype_configstatus_t)val->cs_attr[loop]); } } DELETE_IF_NOT_NULL(ckv); val_flowlist_entry_t *val_temp = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { + ++loop) { val_temp->cs_attr[loop] = GetConsolidatedCsStatus(vec_attr[loop]); } result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, - UNC_OP_UPDATE, dmi, MAINTBL); + UNC_OP_UPDATE, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Unable to Update the Running DB, result_code=%d", - result_code); + result_code); return result_code; } return result_code; @@ -2887,7 +3018,7 @@ upll_rc_t FlowListEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_DEBUG("ctrlr_name(%s), datatype :(%d)", - ctrlr_name, req->datatype); + ctrlr_name, req->datatype); bool result_code = false; uint32_t max_instance_count = 0; @@ -2897,13 +3028,8 @@ upll_rc_t FlowListEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { result_code = GetCreateCapability(ctrlr_name, key->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &max_instance_count, &max_attrs, + &attrs); break; } case UNC_OP_UPDATE: { @@ -2914,10 +3040,10 @@ upll_rc_t FlowListEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, default: { if (req->datatype == UPLL_DT_STATE) { result_code = GetStateCapability(ctrlr_name, key->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } else { result_code = GetReadCapability(ctrlr_name, key->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } } } @@ -2935,9 +3061,10 @@ upll_rc_t FlowListEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, if (val_flowlist_entry) { if (max_attrs > 0) { return ValFlowlistEntryAttributeSupportCheck(val_flowlist_entry, - attrs); + attrs); } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } @@ -3041,7 +3168,7 @@ void FlowListEntryMoMgr::ValidateIpDscpAttribute( void FlowListEntryMoMgr::ValidateMacAttribute( val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs) { UPLL_FUNC_TRACE; - + if ((val_flowlist_entry->valid[UPLL_IDX_MAC_DST_FLE] == UNC_VF_VALID) || (val_flowlist_entry->valid[UPLL_IDX_MAC_DST_FLE] == UNC_VF_VALID_NO_VALUE)) { @@ -3064,7 +3191,7 @@ void FlowListEntryMoMgr::ValidateMacAttribute( void FlowListEntryMoMgr::ValidateIPAttribute( val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs) { UPLL_FUNC_TRACE; - + if ((val_flowlist_entry->valid[UPLL_IDX_DST_IP_FLE] == UNC_VF_VALID) || (val_flowlist_entry->valid[UPLL_IDX_DST_IP_FLE] == UNC_VF_VALID_NO_VALUE)) { @@ -3162,7 +3289,7 @@ void FlowListEntryMoMgr::ValidateL4PortAttribute( } if ((val_flowlist_entry->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE] == - UNC_VF_VALID) + UNC_VF_VALID) || (val_flowlist_entry->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::flowlist_entry::kCapL4DstPortEndpt] == 0) { @@ -3197,7 +3324,7 @@ void FlowListEntryMoMgr::ValidateL4PortAttribute( void FlowListEntryMoMgr::ValidateICMPAttribute( val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs) { UPLL_FUNC_TRACE; - + if ((val_flowlist_entry->valid[UPLL_IDX_ICMP_TYPE_FLE] == UNC_VF_VALID) || (val_flowlist_entry->valid[UPLL_IDX_ICMP_TYPE_FLE] == UNC_VF_VALID_NO_VALUE)) { @@ -3261,7 +3388,7 @@ upll_rc_t FlowListEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_DEBUG(" invalid option2(%d)", req->option2); return UPLL_RC_ERR_INVALID_OPTION2; } - + if (UPLL_RC_SUCCESS != (rt_code = ValidateFlowlistEntryKey(key, req->operation))) { UPLL_LOG_DEBUG("KT_FLOWLIST_ENTRY key structure syntax " @@ -3405,8 +3532,8 @@ upll_rc_t FlowListEntryMoMgr::ValidateFlowlistEntryVal(ConfigKeyVal *key, } upll_rc_t FlowListEntryMoMgr::ValidateFlowlistEntryVal(IpcReqRespHeader *req, - ConfigKeyVal *key, - DalDmlIntf *dmi) { + ConfigKeyVal *key, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_SUCCESS; key_flowlist_entry_t *key_flowlist_entry = @@ -3436,9 +3563,13 @@ upll_rc_t FlowListEntryMoMgr::ValidateFlowlistEntryVal(IpcReqRespHeader *req, const_cast(GetMoManager(UNC_KT_FLOWLIST))); if (mgrflowlist) { - if (UPLL_RC_SUCCESS != (rt_code = mgrflowlist->ReadConfigDB(okey, - (upll_keytype_datatype_t) req->datatype, - UNC_OP_READ, readop, dmi, MAINTBL))) { + if (UPLL_RC_SUCCESS != (rt_code = mgrflowlist->ReadConfigDB( + okey, + (upll_keytype_datatype_t) req->datatype, + UNC_OP_READ, + readop, + dmi, + MAINTBL))) { UPLL_LOG_DEBUG("Error in read :Err code=%d", rt_code); delete okey; return ((UPLL_RC_ERR_NO_SUCH_INSTANCE == rt_code) ? @@ -3460,14 +3591,17 @@ upll_rc_t FlowListEntryMoMgr::ValidateFlowlistEntryVal(IpcReqRespHeader *req, req->operation, false)) != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed for dst IP address. err code (%d)", rt_code); - return rt_code; + DELETE_IF_NOT_NULL(okey); + return rt_code; } if ((rt_code = ValidateIPAddress(val_flowlist_entry, val_flowlist->ip_type, req->operation, true)) != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG(" syntax check failed for src IPaddress. err code (%d)", rt_code); - return rt_code; + + DELETE_IF_NOT_NULL(okey); + return rt_code; } /** TCP/UDP port number is filled for the flowlist entry which does not @@ -3515,7 +3649,7 @@ upll_rc_t FlowListEntryMoMgr::ValidateFlowlistEntryVal(IpcReqRespHeader *req, /** validate l4dst_port and l4_dst_portendpt */ if ((rt_code = ValidateL4Port(val_flowlist_entry, tmp_val_fle, - req->operation, false)) != UPLL_RC_SUCCESS) { + req->operation, false)) != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("dst L4 Port syntax validation failed: err code (%d)", rt_code); delete fle_okey; @@ -3524,7 +3658,7 @@ upll_rc_t FlowListEntryMoMgr::ValidateFlowlistEntryVal(IpcReqRespHeader *req, } if ((rt_code = ValidateL4Port(val_flowlist_entry, tmp_val_fle, - req->operation, true)) != UPLL_RC_SUCCESS) { + req->operation, true)) != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("src L4 Port syntax validation failed: err code (%d)", rt_code); delete fle_okey; @@ -3536,7 +3670,8 @@ upll_rc_t FlowListEntryMoMgr::ValidateFlowlistEntryVal(IpcReqRespHeader *req, */ if ((rt_code = ValidateIcmp(val_flowlist_entry, tmp_val_fle, - val_flowlist->ip_type, req->operation)) != UPLL_RC_SUCCESS) { + val_flowlist->ip_type, req->operation)) != + UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ICMP syntax validation failed: err code (%d)", rt_code); delete fle_okey; @@ -3577,7 +3712,7 @@ upll_rc_t FlowListEntryMoMgr::ValidateEthType( /** Validate ether type of the ethernet frame */ if ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE)) { if (val_flowlist_entry->valid[UPLL_IDX_MAC_ETH_TYPE_FLE] == - UNC_VF_VALID_NO_VALUE) { + UNC_VF_VALID_NO_VALUE) { UPLL_LOG_DEBUG("Reset mac_eth_type"); val_flowlist_entry->mac_eth_type = 0; } @@ -3739,7 +3874,7 @@ upll_rc_t FlowListEntryMoMgr::ValidateIPProto( if (((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE)) && (val_flowlist_entry->valid[UPLL_IDX_IP_PROTOCOL_FLE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset ip_proto"); val_flowlist_entry->ip_proto = 0; return UPLL_RC_SUCCESS; @@ -3762,7 +3897,7 @@ upll_rc_t FlowListEntryMoMgr::ValidateDscp( if (((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE)) && (val_flowlist_entry->valid[UPLL_IDX_IP_DSCP_FLE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset ip_dscp"); val_flowlist_entry->ip_dscp = 0; return UPLL_RC_SUCCESS; @@ -3794,13 +3929,13 @@ upll_rc_t FlowListEntryMoMgr::ValidateL4Port( == UNC_VF_VALID) || (val_flowlist_entry->valid[UPLL_IDX_L4_SRC_PORT_ENDPT_FLE] == UNC_VF_VALID) || - ((operation == UNC_OP_UPDATE) && - ((db_val_fle->valid[UPLL_IDX_L4_DST_PORT_FLE] == UNC_VF_VALID) || + ((operation == UNC_OP_UPDATE) && + ((db_val_fle->valid[UPLL_IDX_L4_DST_PORT_FLE] == UNC_VF_VALID) || (db_val_fle->valid[UPLL_IDX_L4_SRC_PORT_FLE] == UNC_VF_VALID) || (db_val_fle->valid[UPLL_IDX_L4_DST_PORT_ENDPT_FLE] == UNC_VF_VALID) || (db_val_fle->valid[UPLL_IDX_L4_SRC_PORT_ENDPT_FLE] == - UNC_VF_VALID)))) { + UNC_VF_VALID)))) { if ((val_flowlist_entry->valid[UPLL_IDX_ICMP_TYPE_FLE] == UNC_VF_VALID) || (val_flowlist_entry->valid[UPLL_IDX_ICMP_CODE_FLE] == UNC_VF_VALID) || (val_flowlist_entry->valid[UPLL_IDX_ICMP_V6_TYPE_FLE] == @@ -3959,14 +4094,6 @@ upll_rc_t FlowListEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("IsFlowListMatched failed in fle %d", result_code); return result_code; } - if (UNC_OP_CREATE == req->operation) { - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - } - UPLL_LOG_DEBUG("ValidateAttribute Successfull."); return result_code; } @@ -3980,15 +4107,17 @@ upll_rc_t FlowListEntryMoMgr::IsFlowListMatched(ConfigKeyVal *ikey, if (UNC_OP_UPDATE == req->operation || UNC_OP_CREATE == req->operation) { key_flowlist_entry_t *key_fle = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); PolicingProfileEntryMoMgr *mgr = - reinterpret_cast(const_cast - (GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); + reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); if (NULL == mgr) { return UPLL_RC_ERR_GENERIC; } result_code = mgr->IsFlowListMatched(reinterpret_cast - (key_fle->flowlist_key.flowlist_name), req->datatype, dmi); + (key_fle->flowlist_key.flowlist_name), + req->datatype, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("IsFlowListMatched failed from ppe %d", result_code); return UPLL_RC_ERR_CFG_SEMANTIC; @@ -3998,22 +4127,22 @@ upll_rc_t FlowListEntryMoMgr::IsFlowListMatched(ConfigKeyVal *ikey, } upll_rc_t FlowListEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { if ( !ikey || !(ikey->get_key()) ) return UPLL_RC_ERR_GENERIC; key_flowlist_entry_t *key_flowlist = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_flowlist = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_flowlist_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_flowlist_entry_t))); uuu::upll_strncpy(key_flowlist->flowlist_key.flowlist_name, key_rename->old_flowlist_name, (kMaxLenFlowListName+1)); okey = new ConfigKeyVal(UNC_KT_FLOWLIST_ENTRY, - IpctSt::kIpcStKeyFlowlistEntry, key_flowlist, NULL); + IpctSt::kIpcStKeyFlowlistEntry, key_flowlist, NULL); if (!okey) { free(key_flowlist); UPLL_LOG_DEBUG("Copy to ConfigKey Failed"); @@ -4024,19 +4153,22 @@ upll_rc_t FlowListEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, } upll_rc_t FlowListEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; if (ikey == NULL || req == NULL) { - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } upll_rc_t result_code = UPLL_RC_SUCCESS; // validate syntax - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); - return result_code; + if (!restore_flag) { + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { @@ -4051,32 +4183,46 @@ upll_rc_t FlowListEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } - // Check if flowlist entry already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { -// std::cout << "Record already exists in Candidate DB"; - return result_code; - } - if (UPLL_DT_CANDIDATE == req->datatype) { - // Check if flowlist entry exists in RUNNING DB and move it to CANDIDATE DB - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, - UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - return UPLL_RC_ERR_GENERIC; + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, req->datatype, + UPLL_DT_RUNNING, dmi, req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { // create a record in CANDIDATE DB - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed for maintbl %d", result_code); @@ -4094,26 +4240,28 @@ upll_rc_t FlowListEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t FlowListEntryMoMgr::CreateEntryCtrlrTbl(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; - ConfigKeyVal *pkey = NULL; + ConfigKeyVal *pkey = NULL, *tmp_ikey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; result_code = GetParentConfigKey(pkey, ikey); if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetParentConfigKey Error"); return result_code; } + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr}; FlowListMoMgr *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); return UPLL_RC_ERR_GENERIC; } result_code = mgr->ReadConfigDB(pkey, req->datatype, UNC_OP_READ, - dbop, dmi, CTRLRTBL); + dbop, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("No record in flowlist ctrlrtbl"); @@ -4138,48 +4286,34 @@ upll_rc_t FlowListEntryMoMgr::CreateEntryCtrlrTbl(IpcReqRespHeader *req, GET_USER_DATA_CTRLR(temp_pkey, ctrlr_id); SET_USER_DATA_CTRLR(ctrlr_ckv, ctrlr_id); - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(pkey); - DELETE_IF_NOT_NULL(ctrlr_ckv); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)", result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, reinterpret_cast(ctrlr_id), - req->datatype, - &cur_instance_count, - dmi, CTRLRTBL); - DELETE_IF_NOT_NULL(temp_key); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)", result_code); - DELETE_IF_NOT_NULL(ctrlr_ckv); - DELETE_IF_NOT_NULL(pkey); - return result_code; - } - // Validate whether the attributes supported by controller or not result_code = ValidateCapability(req, ikey, reinterpret_cast( - ctrlr_id)); + ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { - // Error should be returned if the failure code is other then ctrlr not - // supported + // Error should be returned if the failure code is other then ctrlr not + // supported DELETE_IF_NOT_NULL(ctrlr_ckv); - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_id), - req->datatype, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - temp_pkey = temp_pkey->get_next_cfg_key_val(); - continue; + if ((!ctrlr_mgr->GetCtrlrType( + reinterpret_cast(ctrlr_id), + req->datatype, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + temp_pkey = temp_pkey->get_next_cfg_key_val(); + continue; } DELETE_IF_NOT_NULL(pkey); UPLL_LOG_DEBUG("ValidateCapability Failed: result_code=%d", - result_code); + result_code); + return result_code; + } + result_code = DupConfigKeyVal(tmp_ikey, ikey, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DupConfigKeyVal Error"); + DELETE_IF_NOT_NULL(pkey); return result_code; } val_flowlist_entry_t *val_fle = reinterpret_cast - (GetVal(temp_pkey)); + (GetVal(tmp_ikey)); /** change NOT_SOPPRTED attribute to INVALID to store in ctrlr table */ SetValidAttributesForController(val_fle); @@ -4187,20 +4321,22 @@ upll_rc_t FlowListEntryMoMgr::CreateEntryCtrlrTbl(IpcReqRespHeader *req, (ConfigKeyVal::Malloc(sizeof(val_flowlist_entry_ctrl_t))); for ( unsigned int loop = 0; - loop < sizeof(val_fle->valid)/sizeof(val_fle->valid[0]); - ++loop ) { + loop < sizeof(val_fle->valid)/sizeof(val_fle->valid[0]); + ++loop ) { val_ctrlr->valid[loop] = val_fle->valid[loop]; } ctrlr_ckv->AppendCfgVal(IpctSt::kIpcStValFlowlistEntry, val_ctrlr); DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutCtrlr}; result_code = UpdateConfigDB(ctrlr_ckv, req->datatype, UNC_OP_CREATE, - dmi, &dbop1, CTRLRTBL); + dmi, &dbop1, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(pkey); + DELETE_IF_NOT_NULL(tmp_ikey); DELETE_IF_NOT_NULL(ctrlr_ckv); return result_code; } + DELETE_IF_NOT_NULL(tmp_ikey); DELETE_IF_NOT_NULL(ctrlr_ckv); temp_pkey = temp_pkey->get_next_cfg_key_val(); } @@ -4209,21 +4345,21 @@ upll_rc_t FlowListEntryMoMgr::CreateEntryCtrlrTbl(IpcReqRespHeader *req, } upll_rc_t FlowListEntryMoMgr::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; uint8_t *ctrlr_id = NULL; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == req || !(ikey->get_key())) { - UPLL_LOG_DEBUG("Given Input is Empty"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Given Input is Empty"); + return UPLL_RC_ERR_GENERIC; } result_code = ValidateMessage(req, ikey); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Validation Message is Failed "); - return result_code; + UPLL_LOG_DEBUG("Validation Message is Failed "); + return result_code; } result_code = ValidateFlowlistEntryVal(req, ikey, dmi); @@ -4243,30 +4379,31 @@ upll_rc_t FlowListEntryMoMgr::UpdateMo(IpcReqRespHeader *req, result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Record does Not Exists"); - DELETE_IF_NOT_NULL(okey); - return result_code; + UPLL_LOG_DEBUG("Record does Not Exists"); + DELETE_IF_NOT_NULL(okey); + return result_code; } result_code = ValidateAttribute(okey, dmi, req); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Validate Attribute is Failed"); - DELETE_IF_NOT_NULL(okey); - return result_code; + UPLL_LOG_DEBUG("Validate Attribute is Failed"); + DELETE_IF_NOT_NULL(okey); + return result_code; } // Construct the DUP key to update in the controller table result_code = DupConfigKeyVal(ctrl_key, ikey, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal is failed result_code = %d", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; + UPLL_LOG_DEBUG("DupConfigKeyVal is failed result_code = %d", + result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; } result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Updation Failure in DB : %d", result_code); DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ctrl_key); return result_code; } @@ -4277,28 +4414,28 @@ upll_rc_t FlowListEntryMoMgr::UpdateMo(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS == result_code || result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Record Exists in flowlist controller table"); + UPLL_LOG_DEBUG("Record Exists in flowlist controller table"); - ConfigKeyVal *tmp_key = okey; - while (tmp_key != NULL) { - GET_USER_DATA_CTRLR(tmp_key, ctrlr_id); - result_code = UpdateControllerTable(ctrl_key, + ConfigKeyVal *tmp_key = okey; + while (tmp_key != NULL) { + GET_USER_DATA_CTRLR(tmp_key, ctrlr_id); + result_code = UpdateControllerTable(ctrl_key, UNC_OP_UPDATE, req->datatype, dmi, reinterpret_cast(ctrlr_id)); - - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to Update the controller Table err(%d)", + + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to Update the controller Table err(%d)", result_code); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ctrl_key); - okey = NULL; - ctrl_key = NULL; - return result_code; - } - ctrlr_id = NULL; - tmp_key = tmp_key->get_next_cfg_key_val(); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ctrl_key); + okey = NULL; + ctrl_key = NULL; + return result_code; + } + ctrlr_id = NULL; + tmp_key = tmp_key->get_next_cfg_key_val(); } } @@ -4309,8 +4446,10 @@ upll_rc_t FlowListEntryMoMgr::UpdateMo(IpcReqRespHeader *req, } upll_rc_t FlowListEntryMoMgr::UpdateMainTbl(ConfigKeyVal *fle_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi) { ConfigKeyVal *ck_fle = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowlist_entry_t *fle_val = NULL; @@ -4327,12 +4466,14 @@ upll_rc_t FlowListEntryMoMgr::UpdateMainTbl(ConfigKeyVal *fle_key, fle_val = reinterpret_cast(GetVal(ck_fle)); if (!fle_val) { UPLL_LOG_DEBUG("invalid val"); + DELETE_IF_NOT_NULL(ck_fle); return UPLL_RC_ERR_GENERIC; } } else { result_code = GetChildConfigKey(ck_fle, fle_key); if (!ck_fle || result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning error %d", result_code); + DELETE_IF_NOT_NULL(ck_fle); return UPLL_RC_ERR_GENERIC; } } @@ -4345,11 +4486,12 @@ upll_rc_t FlowListEntryMoMgr::UpdateMainTbl(ConfigKeyVal *fle_key, nfleval = (nreq)?GetVal(nreq):NULL; if (!nfleval) { UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_fle); return UPLL_RC_ERR_GENERIC; } CompareValidValue(fleval, nfleval, true); fle_val->cs_row_status = - reinterpret_cast(GetVal(nreq))->cs_row_status; + reinterpret_cast(GetVal(nreq))->cs_row_status; break; case UNC_OP_DELETE: @@ -4361,7 +4503,7 @@ upll_rc_t FlowListEntryMoMgr::UpdateMainTbl(ConfigKeyVal *fle_key, DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; dbop.inoutop = kOpInOutCs; - result_code = UpdateConfigDB(ck_fle, UPLL_DT_STATE, op, dmi,&dbop, MAINTBL); + result_code = UpdateConfigDB(ck_fle, UPLL_DT_STATE, op, dmi, &dbop, MAINTBL); EnqueCfgNotification(op, UPLL_DT_RUNNING, ck_fle); delete ck_fle; return result_code; @@ -4411,8 +4553,8 @@ upll_rc_t FlowListEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { return UPLL_RC_ERR_GENERIC; } for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop ) { + loop < sizeof(val->valid)/sizeof(val->valid[0]); + ++loop ) { val->cs_attr[loop] = UNC_CS_APPLIED; } val->cs_row_status = UNC_CS_APPLIED; @@ -4420,18 +4562,18 @@ upll_rc_t FlowListEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } upll_rc_t FlowListEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *main_ckv, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; // upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowlist_entry_ctrl_t *ctrlr_val; val_flowlist_entry_t *val_main = reinterpret_cast (GetVal(main_ckv)); - uint8_t cs_status; + uint8_t cs_status; unc_keytype_configstatus_t ctrlr_status = (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; ctrlr_val = reinterpret_cast(GetVal(ctrlr_key)); @@ -4440,135 +4582,138 @@ upll_rc_t FlowListEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *main_ckv, UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); if (op == UNC_OP_CREATE) { ctrlr_val->cs_row_status = ctrlr_status; - if (val_main->cs_row_status == UNC_CS_UNKNOWN) { - /* first entry in ctrlr table */ + if (val_main->cs_row_status == UNC_CS_UNKNOWN) { + /* first entry in ctrlr table */ cs_status = ctrlr_status; - } else if (val_main->cs_row_status == UNC_CS_INVALID) { + } else if (val_main->cs_row_status == UNC_CS_INVALID) { cs_status = UNC_CS_INVALID; } else if (val_main->cs_row_status == UNC_CS_APPLIED) { - if (ctrlr_status == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + if (ctrlr_status == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } } else if (val_main->cs_row_status == UNC_CS_NOT_APPLIED) { - if (ctrlr_status == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } - } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; + if (ctrlr_status == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; } + } else { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } val_main->cs_row_status = cs_status; } - val_flowlist_entry_ctrl_t *run_ctrlr_val = - reinterpret_cast - (GetVal(upd_key)); + val_flowlist_entry_ctrl_t *run_ctrlr_val = + reinterpret_cast + (GetVal(upd_key)); // Updating the Controller cs_row_status if ((op == UNC_OP_UPDATE) && (upd_key != NULL)) { - // ctrlr_val->cs_row_status = run_ctrlr_val->cs_row_status; + // ctrlr_val->cs_row_status = run_ctrlr_val->cs_row_status; void *valmain = reinterpret_cast(val_main); CompareValidValue(valmain, (GetVal(upd_key)), true); for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { - if ((val_main->valid[loop] != UNC_VF_INVALID) && (val_main->valid[loop] - != UNC_VF_VALID_NO_VALUE)) { - if (ctrlr_status == UNC_CS_APPLIED) { - if(ctrlr_val->valid[loop] == UNC_VF_VALID) { - ctrlr_val->cs_attr[loop] = UNC_CS_APPLIED; - } - if(val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { - cs_status = UNC_CS_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED ; - } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; - } - } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { - ctrlr_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; - if(val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { - cs_status = UNC_CS_NOT_APPLIED; - } else if(val_main->cs_attr[loop] == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED ; - } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; - } - } - val_main->cs_attr[loop] = cs_status; - UPLL_LOG_DEBUG("UpdatePath tbl cs_attr : %d", val_main->cs_attr[loop]); - } - if (val_main->valid[loop] == UNC_VF_INVALID) { - if (ctrlr_status == UNC_CS_APPLIED){ - if (run_ctrlr_val->valid[loop] == UNC_VF_VALID) { - if (val_main->cs_attr[loop] == UNC_CS_PARTIALLY_APPLIED) { - val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; + sizeof(val_main->valid[0]); ++loop) { + if ((val_main->valid[loop] != UNC_VF_INVALID) && + (val_main->valid[loop] + != UNC_VF_VALID_NO_VALUE)) { + if (ctrlr_status == UNC_CS_APPLIED) { + if (ctrlr_val->valid[loop] == UNC_VF_VALID) { + ctrlr_val->cs_attr[loop] = UNC_CS_APPLIED; + } + if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + cs_status = UNC_CS_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { - val_main->cs_attr[loop] = UNC_CS_INVALID; - } else { - val_main->cs_attr[loop] = ctrlr_status; + cs_status = UNC_CS_INVALID; + } + } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { + ctrlr_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; + if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + cs_status = UNC_CS_NOT_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { + cs_status = UNC_CS_INVALID; } } - if (ctrlr_val->cs_attr[loop] == UNC_CS_APPLIED) { - ctrlr_val->cs_attr[loop] = ctrlr_status; - } - } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { - if (run_ctrlr_val->valid[loop] == UNC_VF_VALID) { - if (val_main->cs_attr[loop] == UNC_CS_PARTIALLY_APPLIED) { - val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + val_main->cs_attr[loop] = cs_status; + UPLL_LOG_DEBUG("UpdatePath tbl cs_attr : %d", val_main->cs_attr[loop]); + } + if (val_main->valid[loop] == UNC_VF_INVALID) { + if (ctrlr_status == UNC_CS_APPLIED) { + if (run_ctrlr_val->valid[loop] == UNC_VF_VALID) { + if (val_main->cs_attr[loop] == UNC_CS_PARTIALLY_APPLIED) { + val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { + val_main->cs_attr[loop] = UNC_CS_INVALID; + } else { + val_main->cs_attr[loop] = ctrlr_status; + } + } + if (ctrlr_val->cs_attr[loop] == UNC_CS_APPLIED) { + ctrlr_val->cs_attr[loop] = ctrlr_status; + } + } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { + if (run_ctrlr_val->valid[loop] == UNC_VF_VALID) { + if (val_main->cs_attr[loop] == UNC_CS_PARTIALLY_APPLIED) { + val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { + } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { val_main->cs_attr[loop] = UNC_CS_INVALID; - } else { - val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } else { + val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } } } } + if (val_main->valid[loop] == UNC_VF_VALID_NO_VALUE) { + ctrlr_val->cs_attr[loop] = UNC_CS_UNKNOWN; + val_main->cs_attr[loop] = UNC_CS_UNKNOWN; + } } - if (val_main->valid[loop] == UNC_VF_VALID_NO_VALUE) { - ctrlr_val->cs_attr[loop] = UNC_CS_UNKNOWN; - val_main->cs_attr[loop] = UNC_CS_UNKNOWN; + } + + if (op == UNC_OP_CREATE) { + for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ + sizeof(val_main->valid[0]); ++loop) { + if (val_main->valid[loop] != UNC_VF_INVALID) { + if (ctrlr_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) + ctrlr_val->cs_attr[loop] = ctrlr_status; + else + ctrlr_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + + if (val_main->cs_attr[loop] == ctrlr_status) { + cs_status = ctrlr_status; + } else if (ctrlr_status == UNC_CS_APPLIED) { + if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + cs_status = ctrlr_status; + } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { + val_main->cs_attr[loop] = UNC_CS_INVALID; + } else { + cs_status = val_main->cs_attr[loop]; + } + } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { + if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + cs_status = UNC_CS_NOT_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_NOT_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { + val_main->cs_attr[loop] = UNC_CS_INVALID; + } else { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } + } + val_main->cs_attr[loop] = cs_status; + UPLL_LOG_DEBUG("Main tbl cs_attr : %d", val_main->cs_attr[loop]); + } } - } - } - - if (op == UNC_OP_CREATE ) { - for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { - if (val_main->valid[loop] != UNC_VF_INVALID){ - if (ctrlr_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) - ctrlr_val->cs_attr[loop] = ctrlr_status; - else - ctrlr_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; - - if (val_main->cs_attr[loop] == ctrlr_status) { - cs_status = ctrlr_status; - } else if (ctrlr_status == UNC_CS_APPLIED) { - if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { - cs_status = ctrlr_status; - } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { - val_main->cs_attr[loop] = UNC_CS_INVALID; - } else { - cs_status = val_main->cs_attr[loop]; - } - } else if(ctrlr_status == UNC_CS_NOT_APPLIED) { - if(val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_NOT_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { - val_main->cs_attr[loop] = UNC_CS_INVALID; - } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } - } - val_main->cs_attr[loop] = cs_status; - UPLL_LOG_DEBUG("Main tbl cs_attr : %d", val_main->cs_attr[loop]); - } - } - } + } return UPLL_RC_SUCCESS; } @@ -4586,7 +4731,7 @@ upll_rc_t FlowListEntryMoMgr::Get_Tx_Consolidated_Status( if (current_ctrlr_cs == UNC_CS_NOT_APPLIED) { // Todo: if this vtn has caused it then to change to applied. status = (drv_result_status != UNC_CS_APPLIED) ? - UNC_CS_PARTIALLY_APPLIED : drv_result_status; + UNC_CS_PARTIALLY_APPLIED : drv_result_status; } break; case UNC_CS_APPLIED: @@ -4594,8 +4739,8 @@ upll_rc_t FlowListEntryMoMgr::Get_Tx_Consolidated_Status( case UNC_CS_INVALID: default: status = (drv_result_status == UNC_CS_NOT_APPLIED)? - UNC_CS_PARTIALLY_APPLIED: - (status == UNC_CS_UNKNOWN)?drv_result_status:status; + UNC_CS_PARTIALLY_APPLIED: + (status == UNC_CS_UNKNOWN)?drv_result_status:status; break; } return UPLL_RC_SUCCESS; @@ -4613,8 +4758,8 @@ upll_rc_t FlowListEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); diff --git a/coordinator/modules/upll/flowlist_entry_momgr.hh b/coordinator/modules/upll/flowlist_entry_momgr.hh index 8363f2a4..90930a59 100644 --- a/coordinator/modules/upll/flowlist_entry_momgr.hh +++ b/coordinator/modules/upll/flowlist_entry_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -19,12 +19,12 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_VBR_FLOWFILER */ -/** - * @brief VbrFlowFilterMoMgr class handles all the request - * received from service. - */ -class FlowListEntryMoMgr: public MoMgrImpl { - private: + /** + * @brief VbrFlowFilterMoMgr class handles all the request + * received from service. + */ + class FlowListEntryMoMgr: public MoMgrImpl { + private: /** * Member Variable for FlowListEntryBindInfo. */ @@ -36,37 +36,36 @@ class FlowListEntryMoMgr: public MoMgrImpl { static BindInfo rename_flowlist_entry_main_tbl[]; static BindInfo rename_flowlist_entry_ctrlr_tbl[]; - uint32_t cur_instance_count; - + bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, int &nattr, MoMgrTables tbl); - - /** - * @brief Methods Used for Validating Attribute. - * @param[in] kval The pointer to the ConfigKeyVal class - * - * @param[in] dmi Pointer to the Database Interface. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - */ + BindInfo *&binfo, int &nattr, MoMgrTables tbl); + + /** + * @brief Methods Used for Validating Attribute. + * @param[in] kval The pointer to the ConfigKeyVal class + * + * @param[in] dmi Pointer to the Database Interface. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + */ upll_rc_t ValidateAttribute(ConfigKeyVal *kval, DalDmlIntf *dmi, IpcReqRespHeader *req = NULL); - /** - * @Brief Checks if the specified key type(KT_FLOWLIST_ENTRY) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request - * structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller_name - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Validation failure. - */ + /** + * @Brief Checks if the specified key type(KT_FLOWLIST_ENTRY) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request + * structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller_name + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Validation failure. + */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *key, const char *ctrlr_name = NULL); @@ -81,261 +80,263 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_SUCCESS indicates attribute check completion */ upll_rc_t ValFlowlistEntryAttributeSupportCheck( - val_flowlist_entry_t *val_flowlist_entry, - const uint8_t* attrs); - - /** - * @Brief Checks ip_proto attributes is supported - * on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - * - */ + val_flowlist_entry_t *val_flowlist_entry, + const uint8_t* attrs); + + /** + * @Brief Checks ip_proto attributes is supported + * on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + * + */ void ValidateIpProtoAttribute( - val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); + val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); /** - * @Brief Checks Vlan_priority attributes is supported - * on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attributee - */ + * @Brief Checks Vlan_priority attributes is supported + * on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attributee + */ void ValidateVlanPriorityAttribute( - val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); - - /** - * @Brief Checks dst_mac and src_mac attributes are supported - * on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - */ + val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); + + /** + * @Brief Checks dst_mac and src_mac attributes are supported + * on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + */ void ValidateMacAttribute(val_flowlist_entry_t *val_flowlist_entry, - const uint8_t *attrs); - - /** - * @Brief Checks source and destination IPV4 and IPV4 prefix attributes - * are supported on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - */ + const uint8_t *attrs); + + /** + * @Brief Checks source and destination IPV4 and IPV4 prefix attributes + * are supported on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + */ void ValidateIPAttribute(val_flowlist_entry_t *val_flowlist_entry, - const uint8_t *attrs); - - /** - * @Brief Checks source and destination IPV6 and IPV6 prefix attributes - * are supported on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - */ + const uint8_t *attrs); + + /** + * @Brief Checks source and destination IPV6 and IPV6 prefix attributes + * are supported on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + */ void ValidateIPV6Attribute(val_flowlist_entry_t *val_flowlist_entry, - const uint8_t *attrs); - - /** - * @Brief Checks source and destination L4 port and portEndpt attributes - * are supported on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - */ + const uint8_t *attrs); + + /** + * @Brief Checks source and destination L4 port and portEndpt attributes + * are supported on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + */ void ValidateL4PortAttribute(val_flowlist_entry_t *val_flowlist_entry, - const uint8_t *attrs); - - /** - * @Brief Checks icmp_type, icmp_code, icmpv6_type, icmpv6_code - * are supported on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - */ + const uint8_t *attrs); + + /** + * @Brief Checks icmp_type, icmp_code, icmpv6_type, icmpv6_code + * are supported on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + */ void ValidateICMPAttribute(val_flowlist_entry_t *val_flowlist_entry, - const uint8_t *attrs); - /** - * @Brief Checks Mac_eth_type attributes is supported - * on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - */ + const uint8_t *attrs); + /** + * @Brief Checks Mac_eth_type attributes is supported + * on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + */ void ValidateMacEthTypeAttribute( - val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); - - /** - * @Brief Checks DSCP attributes is supported - * on the given controller, based on the valid flag. - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure - * @param[in] attrs pointer to controller attribute - */ + val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); + + /** + * @Brief Checks DSCP attributes is supported + * on the given controller, based on the valid flag. + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure + * @param[in] attrs pointer to controller attribute + */ void ValidateIpDscpAttribute( - val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); - - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_FLOWLIST_ENTRY keytype - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request structure - * @param[in] ConfigKeyVal key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_flowlist_entry is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ + val_flowlist_entry_t *val_flowlist_entry, const uint8_t *attrs); + + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_FLOWLIST_ENTRY keytype + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request structure + * @param[in] ConfigKeyVal key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_flowlist_entry is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); - /** - * @Brief Validates the syntax for KT_FLOWLIST_ENTRY keytype key structure. - * @param[in] key_flowlist KT_FLOWLIST_ENTRY key structure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + /** + * @Brief Validates the syntax for KT_FLOWLIST_ENTRY keytype key structure. + * @param[in] key_flowlist KT_FLOWLIST_ENTRY key structure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateFlowlistEntryKey(ConfigKeyVal *key, unc_keytype_operation_t op); - /** - * @Brief Validates the syntax for KT_FLOWLIST_ENTRY keytype value structure. - * - * @param[in] val_flowlist KT_FLOWLIST_ENTRY value structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + /** + * @Brief Validates the syntax for KT_FLOWLIST_ENTRY keytype value structure. + * + * @param[in] val_flowlist KT_FLOWLIST_ENTRY value structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateFlowlistEntryVal( - ConfigKeyVal *key, uint32_t operation, uint32_t dt_type); + ConfigKeyVal *key, uint32_t operation, uint32_t dt_type); upll_rc_t ValidateFlowlistEntryVal(IpcReqRespHeader *req, - ConfigKeyVal *key, - DalDmlIntf *dmi); - /** - * @Brief Validates the syntax for mac_dst, mac_src fields - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + ConfigKeyVal *key, + DalDmlIntf *dmi); + /** + * @Brief Validates the syntax for mac_dst, mac_src fields + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateFlowlistMacAddr(val_flowlist_entry_t *val_flowlist_entry, - uint32_t operation); - /** - * @Brief Validates the syntax for mac_eth_type field - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + uint32_t operation); + /** + * @Brief Validates the syntax for mac_eth_type field + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateEthType(val_flowlist_entry_t *val_flowlist_entry, - uint32_t operation); - /** - * @Brief Validates the syntax for dst_ip, dst_ip_prefix fields - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + uint32_t operation); + /** + * @Brief Validates the syntax for dst_ip, dst_ip_prefix fields + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateIPAddress(val_flowlist_entry_t *val_flowlist_entry, - uint8_t ip_type, unc_keytype_operation_t operation, bool is_src_ip); - - /** - * @Brief Validates the syntax for valn_priority field - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + uint8_t ip_type, + unc_keytype_operation_t operation, + bool is_src_ip); + + /** + * @Brief Validates the syntax for valn_priority field + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateVlanPriority(val_flowlist_entry_t *val_flowlist_entry, - uint32_t operation); - - /** - * @Brief Validates the syntax for ip_proto field - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + uint32_t operation); + + /** + * @Brief Validates the syntax for ip_proto field + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateIPProto(val_flowlist_entry_t *val_flowlist_entry, uint32_t operation); - /** - * @Brief Validates the syntax for DSCP field - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + /** + * @Brief Validates the syntax for DSCP field + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateDSCP(val_flowlist_entry_t *val_flowlist_entry, uint32_t operation); - /** - * @Brief Validates the syntax for l4_dst_port_endpt, l4_dst_port fields - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + /** + * @Brief Validates the syntax for l4_dst_port_endpt, l4_dst_port fields + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateL4Port(val_flowlist_entry_t *val_flowlist_entry, val_flowlist_entry_t *db_val_fle, uint32_t operation, bool is_src_port); - /** - * @Brief Validates the syntax for icmp_type, icmp_code fields - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] val_flowlist KT_FLOWLIST value structure - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + /** + * @Brief Validates the syntax for icmp_type, icmp_code fields + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] val_flowlist KT_FLOWLIST value structure + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateIcmp(val_flowlist_entry_t *val_flowlist_entry, val_flowlist_entry_t *db_val_fle, uint8_t ip_type, uint32_t operation); - /** - * @Brief Validates the syntax for DSCP field - * - * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + /** + * @Brief Validates the syntax for DSCP field + * + * @param[in] val_flowlist_entry KT_FLOWLIST_ENTRY value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateDscp(val_flowlist_entry_t *val_flowlist_entry, uint32_t operation); - /** - * @brief Method GetControllerSpan. - * - * @param[out] ikey Contains the Pointer to ConfigkeyVal Class - * @param[in] dt_type Describes Datatype. - * @param[in] dmi Describes the Objct type . - * - * @retval UPLL_RT_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB - * @retval UPLL_RC_ERR_DB_ACCESS DB access error - * */ + /** + * @brief Method GetControllerSpan. + * + * @param[out] ikey Contains the Pointer to ConfigkeyVal Class + * @param[in] dt_type Describes Datatype. + * @param[in] dmi Describes the Objct type . + * + * @retval UPLL_RT_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB + * @retval UPLL_RC_ERR_DB_ACCESS DB access error + * */ upll_rc_t GetControllerSpan(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, @@ -356,19 +357,21 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB * @retval UPLL_RC_ERR_DB_ACCESS DB access error * */ - upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, - unc_keytype_operation_t op, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom); + upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp); - upll_rc_t UpdateMainTbl(ConfigKeyVal *fle_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *nreq, - DalDmlIntf *dmi); + upll_rc_t UpdateMainTbl(ConfigKeyVal *fle_key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi); - public: + public: /** * @brief FlowlistEntryMoMgr Class Constructor. */ @@ -415,7 +418,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Failure. */ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl); + MoMgrTables tbl); /** * @brief Update config status for commit result and vote result. @@ -423,15 +426,17 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @param[in,out] ckv_running ConfigKeyVal instance. * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RC_SUCCECSS Successful Completion * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR * ***/ - upll_rc_t UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateAuditConfigStatus( + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** * @brief Method used to fill the CongigKeyVal with the Parent @@ -463,7 +468,9 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Failure. */ upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id); /** * @brief Method used to Duplicate the ConfigkeyVal. @@ -477,7 +484,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Failure. */ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl); + MoMgrTables tbl); /** * @brief Method used for Validation before Merge. @@ -491,7 +498,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_SUCCESS Successfull completion. */ upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *ikey, DalDmlIntf *dmi); + ConfigKeyVal *ikey, DalDmlIntf *dmi); /** * @brief Method used for Rename Operation. @@ -504,7 +511,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT */ upll_rc_t RenameMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi, const char *ctrlr_id); + DalDmlIntf *dmi, const char *ctrlr_id); /* @brief Checkes whether the key exists in DB * @@ -532,11 +539,12 @@ class FlowListEntryMoMgr: public MoMgrImpl { * */ upll_rc_t GetFlowListKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&ikey); + ConfigKeyVal *&ikey); /** * @brief Method used for RenamedControllerkey(PfcName). * - * @param[out] ikey Contains the Pointer to ConfigkeyVal Class and contains the Pfc Name. + * @param[out] ikey Contains the Pointer to ConfigkeyVal + * Class and contains the Pfc Name * @param[in] dt_type Describes Configiration Information. * @param[in] dmi Pointer to DalDmlIntf Class. * @param[in] ctrlr_id Describes the Controller Name. @@ -547,8 +555,9 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - controller_domain *ctrlr_dom = NULL); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom = NULL); /** * @brief Method used for TxCopyCandidateToRunning. * @param[in] keytype Describes the followong keytype @@ -561,8 +570,10 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB * @retval UPLL_RC_ERR_DB_ACCESS DB access error * */ - upll_rc_t TxCopyCandidateToRunning(unc_key_type_t keytype, - CtrlrCommitStatusList *ctrlr_commit_status, DalDmlIntf *dmi); + upll_rc_t TxCopyCandidateToRunning( + unc_key_type_t keytype, + CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi); /** * @brief Method to Update Controller with created, deleted and updated records @@ -583,23 +594,23 @@ class FlowListEntryMoMgr: public MoMgrImpl { * */ upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); bool CompareValidValue(void *&val1, void *val2, bool copy_to_running); - /** - * @brief Method to compare to keys - * - * @param[in] key1 Pointer to key structure for comparision - * @param[in] key2 Pointer to key for comparision - * - * @returncode returns true if both the input parameters match - * */ + /** + * @brief Method to compare to keys + * + * @param[in] key1 Pointer to key structure for comparision + * @param[in] key2 Pointer to key for comparision + * + * @returncode returns true if both the input parameters match + * */ bool CompareKey(ConfigKeyVal *key1, ConfigKeyVal *key2); @@ -612,9 +623,12 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. * @retval RT_SUCCESS Successfull completion. */ - upll_rc_t UpdateConfigStatus(ConfigKeyVal *key, unc_keytype_operation_t op, - uint32_t driver_result, ConfigKeyVal *nreq, DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key); /** * @brief Method used for Read Operation. * @param[in] req Describes RequestResponderHeaderClass. @@ -627,7 +641,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi); /* @brief Read the configuration from DB based on the operation code * @param[in] req Pointer to IpcResResHeader @@ -637,7 +651,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @return code UPLL_RC_SUCCECSS Successful Completion */ upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - bool begin, DalDmlIntf *dmi); + bool begin, DalDmlIntf *dmi); /** * @brief Method used for Read Operation. @@ -652,7 +666,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error * */ upll_rc_t ReadRecord(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi); /** * @brief Method to Create ConfigKeyVal with rename struct as key @@ -664,10 +678,10 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Failure */ upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); + ConfigKeyVal *ikey); - /** @brief Method to Update the Controller Table entry + /** @brief Method to Update the Controller Table entry * * @param[in] ikey Pointer to ConkeyValClass * @param[in] op Operation code @@ -677,7 +691,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure * - */ + */ upll_rc_t UpdateControllerTable(ConfigKeyVal *ikey, unc_keytype_operation_t op, upll_keytype_datatype_t dt_type, @@ -685,7 +699,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { char* ctrl_id); void SetValidAttributesForController(val_flowlist_entry_t *val); - /** @brief Method to Validate and Update flowlist in the Controller Table + /** @brief Method to Validate and Update flowlist in the Controller Table * * @param[in] flowlist FlowListName * @param[in] dmi Pointer to DB Interface @@ -695,7 +709,7 @@ class FlowListEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure * - */ + */ upll_rc_t AddFlowListToController(char *flowlist_name, DalDmlIntf *dmi, char* ctrl_id, @@ -735,64 +749,57 @@ class FlowListEntryMoMgr: public MoMgrImpl { * * @retval UPLL_RC_ERR_GENERIC Failure **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - - upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); - upll_rc_t UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag = false); - upll_rc_t IsFlowListMatched(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); + upll_rc_t UpdateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); - upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); + upll_rc_t IsFlowListMatched(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req); - upll_rc_t AuditUpdateController1(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); + upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); - bool FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op); + bool FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, + unc_keytype_operation_t op); - upll_rc_t Get_Tx_Consolidated_Status( - unc_keytype_configstatus_t &status, - unc_keytype_configstatus_t drv_result_status, - unc_keytype_configstatus_t current_cs, - unc_keytype_configstatus_t current_ctrlr_cs); + upll_rc_t Get_Tx_Consolidated_Status( + unc_keytype_configstatus_t &status, + unc_keytype_configstatus_t drv_result_status, + unc_keytype_configstatus_t current_cs, + unc_keytype_configstatus_t current_ctrlr_cs); - upll_rc_t CreateEntryCtrlrTbl(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + upll_rc_t CreateEntryCtrlrTbl(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); - upll_rc_t SetFlowlistEntryConsolidatedStatus(ConfigKeyVal *ikey, - uint8_t *ctrlr_id, - DalDmlIntf *dmi); + upll_rc_t SetFlowlistEntryConsolidatedStatus(ConfigKeyVal *ikey, + uint8_t *ctrlr_id, + DalDmlIntf *dmi); - upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); - bool CompareValidVal(void *&val1, void *val2, void *val3, - bool copy_to_running); -}; + upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req); + bool CompareValidVal(void *&val1, void *val2, void *val3, + bool copy_to_running); + }; -typedef struct val_flowlist_entry_ctrl { + typedef struct val_flowlist_entry_ctrl { uint8_t valid[22]; unc_keytype_configstatus_t cs_row_status; unc_keytype_configstatus_t cs_attr[22]; uint8_t flags; -} val_flowlist_entry_ctrl_t; -} // nameSpace kt_momgr + } val_flowlist_entry_ctrl_t; +} // namespace kt_momgr } // namespace upll } // namespace unc #endif // UPLL_FLOWLISTENTRY_MOMGR_HH_ diff --git a/coordinator/modules/upll/flowlist_momgr.cc b/coordinator/modules/upll/flowlist_momgr.cc index 5fb5eb94..cd0edbf3 100644 --- a/coordinator/modules/upll/flowlist_momgr.cc +++ b/coordinator/modules/upll/flowlist_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -155,29 +155,37 @@ FlowListMoMgr::FlowListMoMgr():MoMgrImpl() { /*Construct the Flowlist Main Table*/ table[MAINTBL] = new Table(uudst::kDbiFlowListTbl, - UNC_KT_FLOWLIST, flowlist_bind_info, - IpctSt::kIpcStKeyFlowlist, IpctSt::kIpcStValFlowlist, - uudst::flowlist::kDbiFlowListNumCols); + UNC_KT_FLOWLIST, + flowlist_bind_info, + IpctSt::kIpcStKeyFlowlist, + IpctSt::kIpcStValFlowlist, + uudst::flowlist::kDbiFlowListNumCols); /*Construct Flowlist RenameTable*/ - table[RENAMETBL] = new Table(uudst::kDbiFlowListRenameTbl, UNC_KT_FLOWLIST, - flowlist_rename_bind_info, IpctSt::kIpcStKeyFlowlist, + table[RENAMETBL] = new Table( + uudst::kDbiFlowListRenameTbl, + UNC_KT_FLOWLIST, + flowlist_rename_bind_info, + IpctSt::kIpcStKeyFlowlist, IpctSt::kIpcStValRenameFlowlist, uudst::flowlist_rename::kDbiFlowListRenameNumCols); /*Construct FlowList Controller Table*/ - table[CTRLRTBL] = new Table(uudst::kDbiFlowListCtrlrTbl, UNC_KT_FLOWLIST, - flowlist_controller_bind_info, IpctSt::kIpcStKeyFlowlist, - IpctSt::kIpcInvalidStNum, - uudst::flowlist_ctrlr::kDbiFlowListCtrlrNumCols); + table[CTRLRTBL] = new Table(uudst::kDbiFlowListCtrlrTbl, + UNC_KT_FLOWLIST, + flowlist_controller_bind_info, + IpctSt::kIpcStKeyFlowlist, + IpctSt::kIpcInvalidStNum, + uudst::flowlist_ctrlr::kDbiFlowListCtrlrNumCols); nchild = sizeof(flowlist_child) / sizeof(flowlist_child[0]); child = flowlist_child; - cur_instance_count = 0; } bool FlowListMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, int &nattr, MoMgrTables tbl) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { switch (key_type) { case UNC_KT_FLOWLIST: if (MAINTBL == tbl) { @@ -206,42 +214,42 @@ upll_rc_t FlowListMoMgr::GetValid(void*val, if (tbl == MAINTBL) { valid = NULL; - switch(indx) { + switch (indx) { case uudst::flowlist::kDbiIpType: valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_IP_TYPE_FL]; + (val))->valid[UPLL_IDX_IP_TYPE_FL]; break; default: - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } - #if 0 +#if 0 if (indx == uudst::flowlist::kDbiIpType) { valid = &(reinterpret_cast (val))->valid[UPLL_IDX_IP_TYPE_FL]; } else { - valid = NULL; + valid = NULL; } - #endif +#endif } else if (tbl == RENAMETBL) { valid = NULL; - switch(indx) { + switch (indx) { case uudst::flowlist_rename::kDbiFlowListNameCtrlr: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_RENAME_FLOWLIST_RFL]; - break; + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_RENAME_FLOWLIST_RFL]; + break; default: - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } - #if 0 +#if 0 if (indx == uudst::flowlist_rename::kDbiFlowListNameCtrlr) { valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_RENAME_FLOWLIST_RFL]; + (val))->valid[UPLL_IDX_RENAME_FLOWLIST_RFL]; } else { valid = NULL; } - #endif +#endif } else if (tbl == CTRLRTBL) { - #if 0 +#if 0 if (indx == uudst::flowlist_ctrlr::kDbiValidIpType) { valid = &(reinterpret_cast(val))->valid[0]; } else if (indx ==uudst::flowlist_ctrlr::kDbiRefCount) { @@ -249,16 +257,16 @@ upll_rc_t FlowListMoMgr::GetValid(void*val, } else { valid = NULL; } - #endif +#endif valid = NULL; - switch(indx) { + switch (indx) { case uudst::flowlist_ctrlr::kDbiValidIpType: valid = &(reinterpret_cast(val))->valid[0]; break; case uudst::flowlist_ctrlr::kDbiRefCount: valid = &(reinterpret_cast(val))->valid[1]; default: - break; + break; } } else { valid = NULL; @@ -319,7 +327,7 @@ upll_rc_t FlowListMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, // If parent key is null then allocate the new configkey val and return if (parent_key == NULL) { flowlist_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); + (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); okey = new ConfigKeyVal(UNC_KT_FLOWLIST, IpctSt::kIpcStKeyFlowlist, flowlist_key, NULL); @@ -338,7 +346,8 @@ upll_rc_t FlowListMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } if ((okey) && (okey->get_key())) { - flowlist_key = reinterpret_cast(okey->get_key()); + flowlist_key = + reinterpret_cast(okey->get_key()); } else { flowlist_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); @@ -367,7 +376,7 @@ upll_rc_t FlowListMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } SET_USER_DATA(okey, parent_key); UPLL_LOG_TRACE("%s GetChildConfigKey fl start", - okey->ToStrAll().c_str()); + okey->ToStrAll().c_str()); return result_code; } @@ -378,23 +387,23 @@ upll_rc_t FlowListMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, upll_rc_t result_code; ConfigKeyVal *unc_key = NULL; UPLL_LOG_TRACE("%s GetRenamedUncKey fl start", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); key_flowlist_t *ctrlr_flowlist_key = - reinterpret_cast(ctrlr_key->get_key()); + reinterpret_cast(ctrlr_key->get_key()); if (NULL == ctrlr_flowlist_key) return UPLL_RC_ERR_GENERIC; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; val_rename_flowlist_t *rename_flowlist = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); if (!rename_flowlist) { UPLL_LOG_DEBUG("rename_flowlist NULL"); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_flowlist->flowlist_newname, - ctrlr_flowlist_key->flowlist_name, - (kMaxLenFlowListName + 1)); + ctrlr_flowlist_key->flowlist_name, + (kMaxLenFlowListName + 1)); rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; result_code = GetChildConfigKey(unc_key, NULL); @@ -424,13 +433,13 @@ upll_rc_t FlowListMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, if (result_code == UPLL_RC_SUCCESS) { key_flowlist_t *flowlist_key = - reinterpret_cast(unc_key->get_key()); + reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy(ctrlr_flowlist_key->flowlist_name, - flowlist_key->flowlist_name, - (kMaxLenFlowListName + 1)); + flowlist_key->flowlist_name, + (kMaxLenFlowListName + 1)); } UPLL_LOG_TRACE("%s GetRenamedUncKey fl end", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); return result_code; } @@ -441,59 +450,53 @@ upll_rc_t FlowListMoMgr::GetRenamedControllerKey( UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *okey = NULL; - uint8_t rename = 0; - if (UPLL_RC_SUCCESS != IsRenamed(ikey, dt_type, dmi, rename)) { - UPLL_LOG_DEBUG("Rename check for input ConfigKeyval is failed"); - return UPLL_RC_ERR_GENERIC; - } - if (!rename) { - UPLL_LOG_DEBUG("Key is not Renamed"); - return UPLL_RC_SUCCESS; + result_code = GetChildConfigKey(okey, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); + return result_code; } - UPLL_LOG_DEBUG("Key Renamed"); - /* FlowList renamed */ - if (rename & FLOWLIST_RENAME) { - result_code = GetChildConfigKey(okey, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); - return result_code; - } - if (ctrlr_dom != NULL) + + if (ctrlr_dom != NULL) { SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + } else { + UPLL_LOG_DEBUG("Controller id is null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - DELETE_IF_NOT_NULL(okey); - return result_code; - } - val_rename_flowlist_t *rename_val = - reinterpret_cast(GetVal(okey)); - if (!rename_val) { + result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("ReadConfigDB no instance"); DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_SUCCESS; } + DELETE_IF_NOT_NULL(okey); + return result_code; + } - UPLL_LOG_DEBUG("valid flowlist (%d)", rename_val->valid[UPLL_IDX_RENAME_FLOWLIST_RFL]); - key_flowlist *key = reinterpret_cast(ikey->get_key()); - uuu::upll_strncpy(key->flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); - UPLL_LOG_DEBUG("flow list name (%s) (%s)", key->flowlist_name, rename_val->flowlist_newname); + val_rename_flowlist_t *rename_val = + reinterpret_cast(GetVal(okey)); + if (!rename_val) { DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } + + key_flowlist *key = reinterpret_cast(ikey->get_key()); + uuu::upll_strncpy(key->flowlist_name, + rename_val->flowlist_newname, + (kMaxLenFlowListName + 1)); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_SUCCESS; } + upll_rc_t FlowListMoMgr::UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; @@ -512,7 +515,7 @@ upll_rc_t FlowListMoMgr::SetFlowListConsolidatedStatus(ConfigKeyVal *ikey, bool applied = false, not_applied = false, invalid = false; unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; if (!ikey || !dmi || !ctrlr_id) { UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; @@ -522,7 +525,11 @@ upll_rc_t FlowListMoMgr::SetFlowListConsolidatedStatus(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", result_code); return result_code; } - result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, + result_code = ReadConfigDB(ctrlr_ckv, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB from ctrltbl failed err code %d", @@ -532,7 +539,7 @@ upll_rc_t FlowListMoMgr::SetFlowListConsolidatedStatus(ConfigKeyVal *ikey, } for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { + tmp = tmp->get_next_cfg_key_val()) { ctrlr_val = reinterpret_cast(GetVal(tmp)); if (!ctrlr_val) { UPLL_LOG_DEBUG("Controller Value is empty"); @@ -548,23 +555,25 @@ upll_rc_t FlowListMoMgr::SetFlowListConsolidatedStatus(ConfigKeyVal *ikey, switch (ctrlr_val->cs_row_status) { case UNC_CS_APPLIED: applied = true; - break; + break; case UNC_CS_NOT_APPLIED: not_applied = true; - break; + break; case UNC_CS_INVALID: invalid = true; + break; // Addressed Coverity MISSING_BREAK default: UPLL_LOG_DEBUG("Invalid status"); DELETE_IF_NOT_NULL(ctrlr_ckv); break; - // return UPLL_RC_ERR_GENERIC; + // return UPLL_RC_ERR_GENERIC; } flowlist_exist_on_ctrlr = NULL; } if (invalid) { c_status = UNC_CS_INVALID; - } if (applied && !not_applied) { + } + if (applied && !not_applied) { c_status = UNC_CS_APPLIED; } else if (!applied && not_applied) { c_status = UNC_CS_NOT_APPLIED; @@ -701,7 +710,11 @@ upll_rc_t FlowListMoMgr::MergeValidate(unc_key_type_t keytype, } DbSubOp dbop1 = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; - result_code = ReadConfigDB(temp_ckey, UPLL_DT_IMPORT, UNC_OP_READ, dbop1, dmi, + result_code = ReadConfigDB(temp_ckey, + UPLL_DT_IMPORT, + UNC_OP_READ, + dbop1, + dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { @@ -710,14 +723,14 @@ upll_rc_t FlowListMoMgr::MergeValidate(unc_key_type_t keytype, return result_code; } if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - DELETE_IF_NOT_NULL(temp_ckey); - return UPLL_RC_SUCCESS; + DELETE_IF_NOT_NULL(temp_ckey); + return UPLL_RC_SUCCESS; } ckey = temp_ckey; while (ckey != NULL) { UPLL_LOG_DEBUG("ckey not null"); - // Check the flow list as stand alone + // Check the flow list as stand alone DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; result_code = UpdateConfigDB(ckey, UPLL_DT_IMPORT, UNC_OP_READ, dmi, &dbop, CTRLRTBL); @@ -729,7 +742,7 @@ upll_rc_t FlowListMoMgr::MergeValidate(unc_key_type_t keytype, UPLL_LOG_DEBUG("DupConfigKeyVal fail"); return result_code; } - return UPLL_RC_ERR_MERGE_CONFLICT; + return UPLL_RC_ERR_MERGE_CONFLICT; } else if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { UPLL_LOG_DEBUG("Database Error"); DELETE_IF_NOT_NULL(temp_ckey); @@ -787,13 +800,14 @@ upll_rc_t FlowListMoMgr::IsReferenced(ConfigKeyVal *ikey, } if (tmp_ckv) delete tmp_ckv; PolicingProfileEntryMoMgr *mgr = - reinterpret_cast(const_cast - (GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); + reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); if (NULL == mgr) { return UPLL_RC_ERR_GENERIC; } result_code = mgr->IsFlowlistConfigured(reinterpret_cast - (fl_key->flowlist_name), dmi); + (fl_key->flowlist_name), dmi); if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { if (UPLL_RC_SUCCESS == result_code) result_code = UPLL_RC_ERR_CFG_SEMANTIC; @@ -801,13 +815,14 @@ upll_rc_t FlowListMoMgr::IsReferenced(ConfigKeyVal *ikey, return result_code; } VtnFlowFilterEntryMoMgr *vtn_mgr = - reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN_FLOWFILTER_ENTRY))); + reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VTN_FLOWFILTER_ENTRY))); if (NULL == vtn_mgr) { return UPLL_RC_ERR_GENERIC; } result_code = vtn_mgr->IsFlowListConfigured(reinterpret_cast - (fl_key->flowlist_name), dmi); + (fl_key->flowlist_name), dmi); if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { if (UPLL_RC_SUCCESS == result_code) result_code = UPLL_RC_ERR_CFG_SEMANTIC; @@ -817,16 +832,16 @@ upll_rc_t FlowListMoMgr::IsReferenced(ConfigKeyVal *ikey, /*key_flowlist_t *key_fle = reinterpret_cast (ikey->get_key()); - PolicingProfileEntryMoMgr *ppe_mgr = + PolicingProfileEntryMoMgr *ppe_mgr = reinterpret_cast(const_cast (GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); - if (NULL == ppe_mgr) { + if (NULL == ppe_mgr) { return UPLL_RC_ERR_GENERIC; - } - */ + } + */ result_code = mgr->IsFlowListMatched(reinterpret_cast - (fl_key->flowlist_name), dt_type, dmi); + (fl_key->flowlist_name), dt_type, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("IsFlowListMatched failed from ppe %d", result_code); return UPLL_RC_ERR_CFG_SEMANTIC; @@ -864,8 +879,8 @@ upll_rc_t FlowListMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, val_rename_flowlist_t *tval = reinterpret_cast(cfg_val->get_val()); if (!tval) { - UPLL_LOG_DEBUG("Val is NULL"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Val is NULL"); + return UPLL_RC_ERR_GENERIC; } key_flowlist_t *key_flowlist = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); @@ -873,8 +888,9 @@ upll_rc_t FlowListMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, if (UNC_VF_VALID_NO_VALUE == tval->valid[UPLL_IDX_RENAME_FLOWLIST_RFL]) { no_rename = true; uuu::upll_strncpy(key_flowlist->flowlist_name, - reinterpret_cast(ikey->get_key())->flowlist_name, - (kMaxLenFlowListName + 1)); + reinterpret_cast + (ikey->get_key())->flowlist_name, + (kMaxLenFlowListName + 1)); } else if (tval->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] == UNC_VF_VALID) { // checking the string is empty or not @@ -883,22 +899,23 @@ upll_rc_t FlowListMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_flowlist->flowlist_name, - tval->flowlist_newname, - (kMaxLenFlowListName + 1)); + tval->flowlist_newname, + (kMaxLenFlowListName + 1)); /* The New Name and PFC name should not be same name */ if (!strcmp(reinterpret_cast - (reinterpret_cast(ikey->get_key())->flowlist_name), - reinterpret_cast(tval->flowlist_newname))) { + (reinterpret_cast + (ikey->get_key())->flowlist_name), + reinterpret_cast(tval->flowlist_newname))) { free(key_flowlist); return UPLL_RC_ERR_GENERIC; } - } okey = new ConfigKeyVal(UNC_KT_FLOWLIST, IpctSt::kIpcStKeyFlowlist, key_flowlist, NULL); if (NULL == okey) { UPLL_LOG_DEBUG("Memory allocation failure for ConfigKeyVal structure"); + FREE_IF_NOT_NULL(key_flowlist); return UPLL_RC_ERR_GENERIC; } return result_code; @@ -918,19 +935,27 @@ upll_rc_t FlowListMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, val_flowlist_t *ival = reinterpret_cast(GetVal(req)); if (NULL != ival) { val_flowlist_t *flowlist_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowlist_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowlist_t))); memcpy(flowlist_val, ival, sizeof(val_flowlist_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValFlowlist, flowlist_val); + if (!tmp1) { + FREE_IF_NOT_NULL(flowlist_val); + return UPLL_RC_ERR_GENERIC; + } } } else if (tbl == RENAMETBL) { val_rename_flowlist_t *ival = reinterpret_cast(GetVal(req)); if (NULL != ival) { val_rename_flowlist_t *rename_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); memcpy(rename_val, ival, sizeof(val_rename_flowlist_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValRenameFlowlist, rename_val); + if (!tmp1) { + FREE_IF_NOT_NULL(rename_val); + return UPLL_RC_ERR_GENERIC; + } } } else if (tbl == CTRLRTBL) { val_flowlist_ctrl *ival = @@ -941,11 +966,13 @@ upll_rc_t FlowListMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, (sizeof(val_flowlist_ctrl))); memcpy(flowlist_ctrlr_val, ival, sizeof(val_flowlist_ctrl)); tmp1 = new ConfigVal(IpctSt::kIpcStValFlowlist, flowlist_ctrlr_val); + if (!tmp1) { + FREE_IF_NOT_NULL(flowlist_ctrlr_val); + return UPLL_RC_ERR_GENERIC; + } } } - if (!tmp1) - return UPLL_RC_ERR_GENERIC; - tmp1->set_user_data(tmp->get_user_data()); + if (tmp1) tmp1->set_user_data(tmp->get_user_data()); // tmp = tmp->get_next_cfg_val(); } @@ -953,10 +980,10 @@ upll_rc_t FlowListMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tkey) { key_flowlist_t *ikey = reinterpret_cast(tkey); key_flowlist_t *flowlist_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); + (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); memcpy(flowlist_key, ikey, sizeof(key_flowlist_t)); okey = new ConfigKeyVal(UNC_KT_FLOWLIST, IpctSt::kIpcStKeyFlowlist, - flowlist_key, tmp1); + flowlist_key, tmp1); } if (okey) { SET_USER_DATA(okey, req) @@ -985,7 +1012,7 @@ upll_rc_t FlowListMoMgr::UpdateConfigStatus(ConfigKeyVal *flowlist_key, } val_flowlist_t *val_flowlist = - reinterpret_cast(GetVal(flowlist_key)); + reinterpret_cast(GetVal(flowlist_key)); val_flowlist_ctrl *ctrlr_val_flowlist = reinterpret_cast(GetVal(ctrlr_key)); if ((val_flowlist == NULL) || (ctrlr_val_flowlist == NULL)) { @@ -996,11 +1023,11 @@ upll_rc_t FlowListMoMgr::UpdateConfigStatus(ConfigKeyVal *flowlist_key, UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); if (op == UNC_OP_CREATE) { - ctrlr_val_flowlist->cs_row_status = ctrlr_status; - if (val_flowlist->cs_row_status == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; - } else if (val_flowlist->cs_row_status == UNC_CS_UNKNOWN) { - /* first entry in ctrlr table */ + ctrlr_val_flowlist->cs_row_status = ctrlr_status; + if (val_flowlist->cs_row_status == UNC_CS_INVALID) { + cs_status = UNC_CS_INVALID; + } else if (val_flowlist->cs_row_status == UNC_CS_UNKNOWN) { + /* first entry in ctrlr table */ cs_status = ctrlr_status; } else if (val_flowlist->cs_row_status == UNC_CS_APPLIED) { if (ctrlr_status == UNC_CS_NOT_APPLIED) { @@ -1011,17 +1038,17 @@ upll_rc_t FlowListMoMgr::UpdateConfigStatus(ConfigKeyVal *flowlist_key, cs_status = UNC_CS_PARTIALLY_APPLIED; } } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; + cs_status = UNC_CS_PARTIALLY_APPLIED; } val_flowlist->cs_row_status = cs_status; val_flowlist->cs_attr[0] = cs_status; } // Updating the Controller cs_row_status if ((op == UNC_OP_UPDATE) && (nreq != NULL)) { - val_flowlist_ctrl *run_ctrlr_val = reinterpret_cast - (GetVal(nreq)); - if (run_ctrlr_val != NULL) - ctrlr_val_flowlist->cs_row_status = run_ctrlr_val->cs_row_status; + val_flowlist_ctrl *run_ctrlr_val = reinterpret_cast + (GetVal(nreq)); + if (run_ctrlr_val != NULL) + ctrlr_val_flowlist->cs_row_status = run_ctrlr_val->cs_row_status; } if (val_flowlist->valid[0] != UNC_VF_INVALID) { if (ctrlr_val_flowlist->cs_attr[0] != UNC_CS_NOT_SUPPORTED) @@ -1036,18 +1063,18 @@ upll_rc_t FlowListMoMgr::UpdateConfigStatus(ConfigKeyVal *flowlist_key, } else if (ctrlr_status == UNC_CS_APPLIED) { if (val_flowlist->cs_attr[0] == UNC_CS_UNKNOWN) { cs_status = ctrlr_status; - } + } if (val_flowlist->cs_attr[0] == UNC_CS_NOT_APPLIED) { cs_status = UNC_CS_PARTIALLY_APPLIED; } else { cs_status = val_flowlist->cs_attr[0]; } - } else if(ctrlr_status == UNC_CS_NOT_APPLIED) { - if(val_flowlist->cs_attr[0] == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_NOT_APPLIED; - } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { + if (val_flowlist->cs_attr[0] == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_NOT_APPLIED; + } else { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } } val_flowlist->cs_attr[0] = cs_status; UPLL_LOG_DEBUG("Main tbl cs_attr : %d", val_flowlist->cs_attr[0]); @@ -1055,11 +1082,12 @@ upll_rc_t FlowListMoMgr::UpdateConfigStatus(ConfigKeyVal *flowlist_key, return UPLL_RC_SUCCESS; } -upll_rc_t FlowListMoMgr::AddFlowListToController(char *flowlist_name, - DalDmlIntf *dmi, - char* ctrl_id, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op) { +upll_rc_t FlowListMoMgr::AddFlowListToController( + char *flowlist_name, + DalDmlIntf *dmi, + char* ctrl_id, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -1073,7 +1101,8 @@ upll_rc_t FlowListMoMgr::AddFlowListToController(char *flowlist_name, return result_code; } -upll_rc_t FlowListMoMgr::DeleteFlowListToController(char *flowlist_name, +upll_rc_t FlowListMoMgr::DeleteFlowListToController( + char *flowlist_name, DalDmlIntf *dmi, char* ctrl_id, upll_keytype_datatype_t dt_type, @@ -1088,16 +1117,16 @@ upll_rc_t FlowListMoMgr::DeleteFlowListToController(char *flowlist_name, return result_code; } key_flowlist_t *okey_key = reinterpret_cast - (okey->get_key()); + (okey->get_key()); uuu::upll_strncpy(okey_key->flowlist_name, - flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_name, + (kMaxLenFlowListName+1)); SET_USER_DATA_CTRLR(okey, ctrl_id); DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutNone}; result_code = ReadConfigDB(okey, - dt_type, - UNC_OP_READ, - dbop, dmi, CTRLRTBL); + dt_type, + UNC_OP_READ, + dbop, dmi, CTRLRTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("No matching record found in Ctrlrtbl"); DELETE_IF_NOT_NULL(okey); @@ -1105,12 +1134,12 @@ upll_rc_t FlowListMoMgr::DeleteFlowListToController(char *flowlist_name, } else if (UPLL_RC_SUCCESS == result_code) { UPLL_LOG_DEBUG("Matching records found in ctrlrtbl"); val_flowlist_ctrl_t *ctrlr_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); ctrlr_val->refcount -= 1; if (1 > ctrlr_val->refcount) { ctrlr_val->valid[1] = UNC_VF_VALID; result_code = UpdateConfigDB(okey, dt_type, UNC_OP_DELETE, dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Delete from ctrlrtbl failed"); DELETE_IF_NOT_NULL(okey); @@ -1120,7 +1149,7 @@ upll_rc_t FlowListMoMgr::DeleteFlowListToController(char *flowlist_name, } else { ctrlr_val->valid[1] = UNC_VF_VALID; result_code = UpdateConfigDB(okey, dt_type, UNC_OP_UPDATE, dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Update in ctrlrtbl failed"); DELETE_IF_NOT_NULL(okey); @@ -1134,24 +1163,24 @@ upll_rc_t FlowListMoMgr::DeleteFlowListToController(char *flowlist_name, } DELETE_IF_NOT_NULL(okey); if (fl_entry_del) { - FlowListEntryMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST_ENTRY))); + (const_cast (GetMoManager(UNC_KT_FLOWLIST_ENTRY))); result_code = mgr->AddFlowListToController( flowlist_name, dmi, ctrl_id, dt_type, op); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to update the controller table for flowlistentry"); return result_code; } - } + } return UPLL_RC_SUCCESS; } -upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, - DalDmlIntf *dmi, - char* ctrl_id, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op) { +upll_rc_t FlowListMoMgr::CreateFlowListToController( + char *flowlist_name, + DalDmlIntf *dmi, + char* ctrl_id, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; @@ -1166,14 +1195,14 @@ upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, key_flowlist_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->flowlist_name, - flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_name, + (kMaxLenFlowListName+1)); SET_USER_DATA_CTRLR(okey, ctrl_id); DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutCs}; result_code = ReadConfigDB(okey, - dt_type, - UNC_OP_READ, - dbop, dmi, CTRLRTBL); + dt_type, + UNC_OP_READ, + dbop, dmi, CTRLRTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("No entry in ctrlr tbl"); ConfigKeyVal *main_ckv = NULL; @@ -1185,9 +1214,9 @@ upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, } DbSubOp dbop1 = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; result_code = ReadConfigDB(main_ckv, - dt_type, - UNC_OP_READ, - dbop1, dmi, MAINTBL); + dt_type, + UNC_OP_READ, + dbop1, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB in maintbl failed %d", result_code); DELETE_IF_NOT_NULL(okey); @@ -1210,33 +1239,10 @@ upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, DELETE_IF_NOT_NULL(main_ckv); return UPLL_RC_ERR_GENERIC; } - // capability check - ConfigKeyVal *temp_key = NULL; - - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(main_ckv); - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, ctrl_id, - dt_type, - &cur_instance_count, - dmi, CTRLRTBL); - - DELETE_IF_NOT_NULL(temp_key); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(main_ckv); - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - + // capability check IpcReqRespHeader *temp_req = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); - + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + if (NULL == temp_req) { UPLL_LOG_DEBUG(" Memory allocation for IpcReqRespHeader failed"); DELETE_IF_NOT_NULL(main_ckv); @@ -1250,17 +1256,20 @@ upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, free(temp_req); if (result_code != UPLL_RC_SUCCESS) { - // FlowList is not supported for other than PFC Controller - // so SKIP the adding entry for such sontroller - DELETE_IF_NOT_NULL(main_ckv); - DELETE_IF_NOT_NULL(okey); - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrl_id), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; + // FlowList is not supported for other than PFC Controller + // so SKIP the adding entry for such sontroller + DELETE_IF_NOT_NULL(main_ckv); + DELETE_IF_NOT_NULL(okey); + if ((!ctrlr_mgr->GetCtrlrType( + reinterpret_cast(ctrl_id), + dt_type, + &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + return UPLL_RC_SUCCESS; + } + UPLL_LOG_DEBUG("Key not supported by controller"); + return result_code; } ctrlr_val->refcount = 1; @@ -1271,17 +1280,22 @@ upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, ctrlr_val->valid[UPLL_IDX_IP_TYPE_FL] = UNC_VF_INVALID; } if (UPLL_DT_AUDIT == dt_type) { - UPLL_LOG_DEBUG("Setting cs cs_attr %d cs_row_status %d", main_val->cs_attr[0], main_val->cs_row_status); - ctrlr_val->cs_row_status = (unc_keytype_configstatus_t)main_val->cs_row_status; + UPLL_LOG_DEBUG("Setting cs cs_attr %d cs_row_status %d", + main_val->cs_attr[0], + main_val->cs_row_status); + ctrlr_val->cs_row_status = + (unc_keytype_configstatus_t)main_val->cs_row_status; ctrlr_val->cs_attr[0] = (unc_keytype_configstatus_t)main_val->cs_attr[0]; - UPLL_LOG_DEBUG("Sutting ctrlr cs cs_attr %d cs_row_status %d", ctrlr_val->cs_attr[0], ctrlr_val->cs_row_status); + UPLL_LOG_DEBUG("Sutting ctrlr cs cs_attr %d cs_row_status %d", + ctrlr_val->cs_attr[0], + ctrlr_val->cs_row_status); } result_code = UpdateConfigDB(okey, dt_type, UNC_OP_CREATE, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed to create in ctrlrtbl %d", - result_code); + result_code); DELETE_IF_NOT_NULL(main_ckv); DELETE_IF_NOT_NULL(okey); return result_code; @@ -1304,7 +1318,7 @@ upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed to create in ctrlrtbl %d", - result_code); + result_code); DELETE_IF_NOT_NULL(okey); return result_code; } @@ -1312,9 +1326,9 @@ upll_rc_t FlowListMoMgr::CreateFlowListToController(char *flowlist_name, UPLL_LOG_DEBUG("ReadConfig DB in ctrlrtbl failed %d", result_code); } FlowListEntryMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST_ENTRY))); + (const_cast (GetMoManager(UNC_KT_FLOWLIST_ENTRY))); result_code = mgr->AddFlowListToController( - flowlist_name, dmi, ctrl_id, dt_type, op); + flowlist_name, dmi, ctrl_id, dt_type, op); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to update the controller table for flowlistentry"); DELETE_IF_NOT_NULL(okey);; @@ -1342,13 +1356,19 @@ upll_rc_t FlowListMoMgr::TxUpdateController(unc_key_type_t keytype, IpcResponse resp; if (phase == uuc::kUpllUcpDelete) return UPLL_RC_SUCCESS; unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete2)?UNC_OP_DELETE:UNC_OP_INVALID)); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete2)?UNC_OP_DELETE:UNC_OP_INVALID)); switch (op) { case UNC_OP_CREATE: case UNC_OP_DELETE: - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, CTRLRTBL); + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op, + req, + nreq, + &dal_cursor_handle, + dmi, + CTRLRTBL); break; case UNC_OP_UPDATE: // not supported by keytype @@ -1372,7 +1392,8 @@ upll_rc_t FlowListMoMgr::TxUpdateController(unc_key_type_t keytype, if ((op == UNC_OP_CREATE) || (op == UNC_OP_DELETE)) { result_code = DupConfigKeyVal(ck_main, req, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("FlowListMoMgr:DupConfigKeyVal failed during TxUpdate."); + UPLL_LOG_DEBUG("FlowListMoMgr:DupConfigKeyVal failed" + "during TxUpdate."); return result_code; } @@ -1385,16 +1406,20 @@ upll_rc_t FlowListMoMgr::TxUpdateController(unc_key_type_t keytype, DELETE_IF_NOT_NULL(ck_main); break; } - result_code = TxUpdateProcess(ck_main, &resp, op, - dmi, &ctrlr_dom); - if (result_code == UPLL_RC_SUCCESS) { - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); - } else { + bool driver_resp = false; + result_code = TxUpdateProcess(ck_main, + &resp, + op, + dmi, + &ctrlr_dom, + affected_ctrlr_set, + &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdateProcess error %d", result_code); upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); + ctrlr_dom.ctrlr); if (UPLL_RC_SUCCESS != local_rc && UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); @@ -1403,9 +1428,14 @@ upll_rc_t FlowListMoMgr::TxUpdateController(unc_key_type_t keytype, result_code = UPLL_RC_ERR_GENERIC; break; } + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = resp.ckv_data; DELETE_IF_NOT_NULL(ck_main); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(resp.ckv_data); + break; } DELETE_IF_NOT_NULL(resp.ckv_data); } @@ -1423,8 +1453,12 @@ upll_rc_t FlowListMoMgr::TxUpdateController(unc_key_type_t keytype, } upll_rc_t FlowListMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, unc_keytype_operation_t op, - DalDmlIntf *dmi, controller_domain *ctrlr_dom) { + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { UPLL_FUNC_TRACE; upll_rc_t result_code; /* read from main table */ @@ -1452,24 +1486,28 @@ upll_rc_t FlowListMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, dmi, ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to get the Renamed ControllerKey"); + DELETE_IF_NOT_NULL(dup_ckmain); return result_code; } result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, ipc_resp->header.config_id, op, UPLL_DT_CANDIDATE, dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { result_code = UPLL_RC_SUCCESS; UPLL_LOG_DEBUG("controller disconnected error proceed with commit"); } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + *driver_resp = true; } + affected_ctrlr_set->insert((const char *)ctrlr_dom->ctrlr); if ((op == UNC_OP_CREATE) && dup_ckmain) { delete dup_ckmain; dup_ckmain = NULL; } - return result_code; + UPLL_LOG_TRACE("Driver response received %d", *driver_resp) + return result_code; } upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( @@ -1479,44 +1517,57 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result; unc_keytype_operation_t op[] = { UNC_OP_CREATE, UNC_OP_DELETE, - UNC_OP_UPDATE}; + UNC_OP_UPDATE}; int nop = sizeof(op) / sizeof(op[0]); - ConfigKeyVal *flowlist_key = NULL, *req = NULL, *nreq = NULL , *instance_key = NULL; + ConfigKeyVal *flowlist_key = NULL, + *req = NULL, + *nreq = NULL , + *instance_key = NULL; DalCursor *cfg1_cursor = NULL; uint8_t *ctrlr_id = NULL; map ctrlr_result; - CtrlrCommitStatusList::iterator ccsListItr; + CtrlrCommitStatusList::iterator ccsListItr_begin; + CtrlrCommitStatusList::iterator ccsListItr_end; CtrlrCommitStatus *ccStatusPtr; - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { - UPLL_LOG_DEBUG("Insufficient parameters"); - return UPLL_RC_ERR_GENERIC; - } - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = reinterpret_cast - (const_cast(ccStatusPtr->ctrlr_id.c_str())); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; ck_err = - ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, - ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to get the Renamed UncKey %d", result_code); - return result_code; + if (ctrlr_commit_status != NULL) { + ccsListItr_begin = ctrlr_commit_status->begin(); + ccsListItr_end = ctrlr_commit_status->end(); + for (; ccsListItr_begin != ccsListItr_end; ++ccsListItr_begin) { + ccStatusPtr = *ccsListItr_begin; + ctrlr_id = reinterpret_cast + (const_cast(ccStatusPtr->ctrlr_id.c_str())); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; + ck_err != NULL; ck_err = + ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Unable to get the Renamed UncKey %d", result_code); + return result_code; + } } } } } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; // Update the Main table if (op[i] != UNC_OP_UPDATE) { - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], - req, nreq, &cfg1_cursor, dmi, NULL, MAINTBL ,true); + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + MAINTBL , + true); while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); @@ -1541,15 +1592,17 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( cfg1_cursor = NULL; } if (req) - delete req; + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); req = NULL; } UPLL_LOG_DEBUG("Updating main table complete with op %d", op[i]); } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; // Update the controller table result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, - nreq, &cfg1_cursor, dmi, NULL, CTRLRTBL,true); + nreq, &cfg1_cursor, dmi, NULL, CTRLRTBL, true); ConfigKeyVal *flowlist_ctrlr_key = NULL; while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); @@ -1559,7 +1612,9 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( break; } if (op[i] == UNC_OP_CREATE) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCs }; + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag | kOpInOutCs }; result_code = GetChildConfigKey(flowlist_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", @@ -1570,7 +1625,7 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(nreq); return result_code; } - result_code = ReadConfigDB(flowlist_key,UPLL_DT_RUNNING , + result_code = ReadConfigDB(flowlist_key, UPLL_DT_RUNNING , UNC_OP_READ, dbop, dmi, MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)) { @@ -1597,7 +1652,8 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); - DELETE_IF_NOT_NULL(flowlist_ctrlr_key); + DELETE_IF_NOT_NULL(flowlist_ctrlr_key); + DELETE_IF_NOT_NULL(flowlist_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); @@ -1605,29 +1661,36 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( return result_code; } - /* set consolidated config status to UNKNOWN to init cs_status + /* set consolidated config status to UNKNOWN to init cs_status * to the cs_status of first controller */ uint32_t cur_instance_count; result_code = GetInstanceCount(instance_key, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); - UPLL_LOG_TRACE("in iiiflowlist cs_status %d \n",cur_instance_count); + UPLL_DT_CANDIDATE, &cur_instance_count, + dmi, CTRLRTBL); + UPLL_LOG_TRACE("in iiiflowlist cs_status %d \n", cur_instance_count); if ((result_code == UPLL_RC_SUCCESS) && (cur_instance_count == 1)) - reinterpret_cast(GetVal(flowlist_key))-> - cs_row_status = UNC_CS_UNKNOWN ; - + reinterpret_cast(GetVal(flowlist_key))-> + cs_row_status = UNC_CS_UNKNOWN; + DELETE_IF_NOT_NULL(instance_key); GET_USER_DATA_CTRLR(flowlist_ctrlr_key, ctrlr_id); string controller(reinterpret_cast(ctrlr_id)); - result_code = UpdateConfigStatus(flowlist_key, op[i], - ctrlr_result[controller], nreq, - dmi, flowlist_ctrlr_key); + if (ctrlr_result.empty()) { + result_code = UpdateConfigStatus(flowlist_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, nreq, + dmi, flowlist_ctrlr_key); + } else { + result_code = UpdateConfigStatus(flowlist_key, op[i], + ctrlr_result[controller], nreq, + dmi, flowlist_ctrlr_key); + } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG(" UpdateConfigStatus Function Failed - %d ", result_code); DELETE_IF_NOT_NULL(flowlist_key); + DELETE_IF_NOT_NULL(flowlist_ctrlr_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); @@ -1635,52 +1698,56 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( return result_code; } } else if (op[i] == UNC_OP_DELETE) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag | kOpInOutCs }; - result_code = GetChildConfigKey(flowlist_key, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - return result_code; - } - GET_USER_DATA_CTRLR(req, ctrlr_id); - result_code = ReadConfigDB(flowlist_key, UPLL_DT_RUNNING, + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCs }; + result_code = GetChildConfigKey(flowlist_key, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", + result_code); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } + GET_USER_DATA_CTRLR(req, ctrlr_id); + result_code = ReadConfigDB(flowlist_key, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Unable to read configuration from RunningDB"); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Unable to read configuration from RunningDB"); + DELETE_IF_NOT_NULL(flowlist_key); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } + if (result_code == UPLL_RC_SUCCESS) { + result_code = SetFlowListConsolidatedStatus(flowlist_key, + ctrlr_id, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Could not set consolidated status %d", + result_code); DELETE_IF_NOT_NULL(flowlist_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; } - if (result_code == UPLL_RC_SUCCESS) { - result_code = SetFlowListConsolidatedStatus(flowlist_key, - ctrlr_id, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", - result_code); - DELETE_IF_NOT_NULL(flowlist_key); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - return result_code; - } - } - result_code = GetChildConfigKey(flowlist_ctrlr_key, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); - DELETE_IF_NOT_NULL(flowlist_key); - return result_code; - } + } + result_code = GetChildConfigKey(flowlist_ctrlr_key, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); + DELETE_IF_NOT_NULL(flowlist_key); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } } if (UNC_OP_CREATE == op[i]) { val_flowlist_ctrl_t *val_ctrlr_temp = reinterpret_cast @@ -1693,11 +1760,11 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( result_code = DupConfigKeyVal(flowlist_ctrlr_key, nreq, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigVal function is failed %d", - result_code); + result_code); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); return result_code; } val_flowlist_ctrl_t *val_ctrlr_temp = reinterpret_cast @@ -1715,24 +1782,27 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to Update Configuration at DB %d", result_code); DELETE_IF_NOT_NULL(flowlist_ctrlr_key); + DELETE_IF_NOT_NULL(flowlist_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); return result_code; } // update the consolidated config status in the Main Table if (op[i] == UNC_OP_CREATE) { result_code = UpdateConfigDB(flowlist_key, UPLL_DT_RUNNING, - UNC_OP_UPDATE, dmi, MAINTBL); + UNC_OP_UPDATE, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(flowlist_ctrlr_key); + DELETE_IF_NOT_NULL(flowlist_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - return result_code; - } + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } } EnqueCfgNotification(op[i], UPLL_DT_RUNNING, flowlist_ctrlr_key); @@ -1749,9 +1819,9 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( if (nreq) delete nreq; nreq = req = NULL; result_code = TxCopyRenameTableFromCandidateToRunning(keytype, - op[i], dmi); + op[i], dmi); UPLL_LOG_DEBUG("TxCopyRenameTableFromCandidateToRunning returned %d", - result_code); + result_code); } result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? UPLL_RC_SUCCESS : result_code; @@ -1761,42 +1831,43 @@ upll_rc_t FlowListMoMgr::TxCopyCandidateToRunning( bool FlowListMoMgr::IsValidKey(void *key, uint64_t index) { UPLL_FUNC_TRACE; key_flowlist_t *flowlist_key = - reinterpret_cast (key); + reinterpret_cast (key); upll_rc_t ret_val; ret_val = ValidateKey(reinterpret_cast (flowlist_key->flowlist_name), kMinLenFlowListName, kMaxLenFlowListName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("FlowList Name is not valid(%d)", ret_val); - return false; + UPLL_LOG_DEBUG("FlowList Name is not valid(%d)", ret_val); + return false; } return true; } upll_rc_t FlowListMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowlist_ctrl_t *val; val = (ckv_running != NULL)? - reinterpret_cast - (GetVal(ckv_running)):NULL; + reinterpret_cast + (GetVal(ckv_running)):NULL; if (NULL == val) { UPLL_LOG_DEBUG("Value Structure is Empty"); return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_DEBUG("The Value of Cs Status at start is %d",cs_status); + UPLL_LOG_DEBUG("The Value of Cs Status at start is %d", cs_status); if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[0]) || - cs_status == UNC_CS_APPLIED) + cs_status == UNC_CS_APPLIED) val->cs_attr[0] = cs_status; return result_code; @@ -1828,9 +1899,9 @@ upll_rc_t FlowListMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, val_flowlist_ctrl_t *val; ConfigKeyVal *temp_ckv = ckv; for ( ; temp_ckv != NULL ; temp_ckv = temp_ckv->get_next_cfg_key_val()) { - val = reinterpret_cast(GetVal(temp_ckv)); - list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); - list_cs_attr.push_back((unc_keytype_configstatus_t)val->cs_attr[0]); + val = reinterpret_cast(GetVal(temp_ckv)); + list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); + list_cs_attr.push_back((unc_keytype_configstatus_t)val->cs_attr[0]); } DELETE_IF_NOT_NULL(ckv); val_flowlist_t *val_temp = reinterpret_cast(GetVal(ikey)); @@ -1851,7 +1922,7 @@ bool FlowListMoMgr::CompareKey(void *key1, void *key2) { flowlist_key1 = reinterpret_cast(key1); flowlist_key2 = reinterpret_cast(key2); if (flowlist_key1 == flowlist_key2) - return true; + return true; if ((!flowlist_key1) || (!flowlist_key2)) { UPLL_LOG_DEBUG(" CompareKey failed"); return false; @@ -1859,7 +1930,7 @@ bool FlowListMoMgr::CompareKey(void *key1, void *key2) { if (strcmp(reinterpret_cast(flowlist_key1->flowlist_name), reinterpret_cast< char *>(flowlist_key2->flowlist_name)) == 0) { match = true; - UPLL_LOG_DEBUG(" CompareKey . Both Keys are same"); + UPLL_LOG_DEBUG(" CompareKey . Both Keys are same"); } return match; } @@ -1888,12 +1959,12 @@ upll_rc_t FlowListMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION2; } - if (UPLL_RC_SUCCESS != - (result_code = ValidateFlowListKey(key, req->operation))) { - UPLL_LOG_DEBUG(" flow-list key validation failed result(%d)", - result_code); - return result_code; - } + if (UPLL_RC_SUCCESS != + (result_code = ValidateFlowListKey(key, req->operation))) { + UPLL_LOG_DEBUG(" flow-list key validation failed result(%d)", + result_code); + return result_code; + } if ((req->operation == UNC_OP_RENAME) || ((req->datatype == UPLL_DT_IMPORT) && @@ -1921,7 +1992,7 @@ upll_rc_t FlowListMoMgr::ValidateFlowListKey(ConfigKeyVal *key, unc_keytype_operation_t op) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - /** check received key,val struct in configkeyval is valid + /** check received key, val struct in configkeyval is valid * KT_FLOWLIST structs */ if (key->get_st_num() != IpctSt::kIpcStKeyFlowlist) { UPLL_LOG_DEBUG("Invalid key structure received. struct num - %d", @@ -1967,7 +2038,8 @@ upll_rc_t FlowListMoMgr::ValidateFlowListValRename(ConfigKeyVal *key, upll_rc_t result_code = UPLL_RC_SUCCESS; if (!key->get_cfg_val()) { - // operation is read/read_sibling/read_sibling_begin and data type is import + // operation is read/read_sibling/read_sibling_begin and data + // type is import if ((datatype == UPLL_DT_IMPORT) && ((operation == UNC_OP_READ) || (operation == UNC_OP_READ_SIBLING) || (operation == UNC_OP_READ_SIBLING_BEGIN))) { @@ -1982,7 +2054,7 @@ upll_rc_t FlowListMoMgr::ValidateFlowListValRename(ConfigKeyVal *key, UPLL_LOG_DEBUG("Invalid val structure received. struct num - %d", (key->get_cfg_val())->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; - } + } if (NULL == key->get_cfg_val()->get_val()) { UPLL_LOG_DEBUG("KT_FLOWLIST val rename structure is null"); @@ -1992,21 +2064,21 @@ upll_rc_t FlowListMoMgr::ValidateFlowListValRename(ConfigKeyVal *key, static_cast(key->get_cfg_val()->get_val()); if (UPLL_DT_IMPORT != datatype) { - if (val_rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] - != UNC_VF_VALID) { - UPLL_LOG_DEBUG(" flowlist rename value is not set"); - return UPLL_RC_ERR_BAD_REQUEST; + if (val_rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] + != UNC_VF_VALID) { + UPLL_LOG_DEBUG(" flowlist rename value is not set"); + return UPLL_RC_ERR_BAD_REQUEST; } } if (val_rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] - == UNC_VF_VALID) { + == UNC_VF_VALID) { result_code = ValidateKey( - reinterpret_cast(val_rename_flowlist->flowlist_newname), - (unsigned int)kMinLenFlowListName, - (unsigned int)kMaxLenFlowListName); + reinterpret_cast(val_rename_flowlist->flowlist_newname), + (unsigned int)kMinLenFlowListName, + (unsigned int)kMaxLenFlowListName); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG(" flowlist rename value validation failed %s", - val_rename_flowlist->flowlist_newname); + val_rename_flowlist->flowlist_newname); return result_code; } } @@ -2058,7 +2130,8 @@ upll_rc_t FlowListMoMgr::ValidateFlowListVal(ConfigKeyVal *key, return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_CREATE) && - (val_flowlist->valid[UPLL_IDX_IP_TYPE_FL] == UNC_VF_VALID_NO_VALUE)) { + (val_flowlist->valid[UPLL_IDX_IP_TYPE_FL] == + UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_TRACE("Reset ip_type"); val_flowlist->ip_type = UPLL_FLOWLIST_TYPE_IP; } @@ -2087,7 +2160,7 @@ upll_rc_t FlowListMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name(%s), datatype : (%d)", - ctrlr_name, req->datatype); + ctrlr_name, req->datatype); bool result_code = false; uint32_t max_instance_count = 0; @@ -2096,14 +2169,11 @@ upll_rc_t FlowListMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); break; } case UNC_OP_UPDATE: { @@ -2114,10 +2184,10 @@ upll_rc_t FlowListMoMgr::ValidateCapability(IpcReqRespHeader *req, default: if (req->datatype == UPLL_DT_STATE) { result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } else { result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } break; } @@ -2130,26 +2200,27 @@ upll_rc_t FlowListMoMgr::ValidateCapability(IpcReqRespHeader *req, } val_flowlist_t *val_flowlist = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); if (val_flowlist) { - if (max_attrs > 0) { - return ValFlowlistAttributeSupportCheck(val_flowlist, attrs); - } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } - } - return UPLL_RC_SUCCESS; + if (max_attrs > 0) { + return ValFlowlistAttributeSupportCheck(val_flowlist, attrs); + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } + } + return UPLL_RC_SUCCESS; } upll_rc_t FlowListMoMgr::ValFlowlistAttributeSupportCheck( -val_flowlist_t *val_flowlist, const uint8_t* attrs ) { + val_flowlist_t *val_flowlist, const uint8_t* attrs ) { UPLL_FUNC_TRACE; if ((val_flowlist->valid[UPLL_IDX_IP_TYPE_FL] == UNC_VF_VALID) || (val_flowlist->valid[UPLL_IDX_IP_TYPE_FL] == - UNC_VF_VALID_NO_VALUE)) { + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::flowlist::kCapIpType] == 0) { val_flowlist->valid[UPLL_IDX_IP_TYPE_FL] = UNC_VF_NOT_SUPPORTED; @@ -2160,8 +2231,11 @@ val_flowlist_t *val_flowlist, const uint8_t* attrs ) { } upll_rc_t FlowListMoMgr::GetRenameInfo(ConfigKeyVal *ikey, - ConfigKeyVal *okey, ConfigKeyVal *&rename_info, DalDmlIntf *dmi, - const char *ctrlr_id, bool &renamed) { + ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + const char *ctrlr_id, + bool &renamed) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (!ikey || !okey || NULL != rename_info @@ -2170,39 +2244,42 @@ upll_rc_t FlowListMoMgr::GetRenameInfo(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } key_rename_vnode_info_t *key_rename_info = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info_t))); key_flowlist_t *flowlist_key = NULL; flowlist_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); if (renamed) { uuu::upll_strncpy(key_rename_info->ctrlr_flowlist_name, - reinterpret_cast(GetVal(ikey))->flowlist_newname, - (kMaxLenFlowListName+1)); + reinterpret_cast + (GetVal(ikey))->flowlist_newname, + (kMaxLenFlowListName+1)); } else { /* if not renamed the ikey contains the controller name */ uuu::upll_strncpy(key_rename_info->ctrlr_flowlist_name, - flowlist_key->flowlist_name, - (kMaxLenFlowListName + 1)); + flowlist_key->flowlist_name, + (kMaxLenFlowListName + 1)); UPLL_LOG_DEBUG("key_rename_info->ctrlr_flowlist_name ::: (%s)", key_rename_info->ctrlr_flowlist_name); } uuu::upll_strncpy(key_rename_info->old_flowlist_name, - flowlist_key->flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_key->flowlist_name, + (kMaxLenFlowListName+1)); flowlist_key = reinterpret_cast - (okey->get_key()); + (okey->get_key()); uuu::upll_strncpy(key_rename_info->new_flowlist_name, - flowlist_key->flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_key->flowlist_name, + (kMaxLenFlowListName+1)); rename_info = new ConfigKeyVal(UNC_KT_FLOWLIST, - IpctSt::kIpcInvalidStNum, key_rename_info, NULL); + IpctSt::kIpcInvalidStNum, + key_rename_info, + NULL); if (!rename_info) { free(key_rename_info); key_rename_info = NULL; @@ -2212,34 +2289,38 @@ upll_rc_t FlowListMoMgr::GetRenameInfo(ConfigKeyVal *ikey, DbSubOp dbop = {kOpReadExist, kOpMatchNone, kOpInOutNone}; result_code = UpdateConfigDB(ikey, UPLL_DT_IMPORT, - UNC_OP_READ, dmi, &dbop, CTRLRTBL); + UNC_OP_READ, dmi, &dbop, CTRLRTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { result_code = UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; + FREE_IF_NOT_NULL(key_rename_info); UPLL_LOG_DEBUG("StandAlone configuration found %d", result_code); return result_code; } else if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed - %d", result_code); + FREE_IF_NOT_NULL(key_rename_info); return result_code; } SET_USER_DATA_CTRLR(rename_info, ctrlr_id); if (!renamed) { val_rename_flowlist_t *val_rename = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); uuu::upll_strncpy(val_rename->flowlist_newname, - key_rename_info->old_flowlist_name, - (kMaxLenFlowListName+1)); + key_rename_info->old_flowlist_name, + (kMaxLenFlowListName+1)); val_rename->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValRenameFlowlist, - val_rename); + val_rename); okey->SetCfgVal(cfg_val); SET_USER_DATA_CTRLR(okey, ctrlr_id); DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutCtrlr}; result_code = UpdateConfigDB(okey, UPLL_DT_IMPORT, UNC_OP_CREATE, dmi, - &dbop1, RENAMETBL); + &dbop1, RENAMETBL); if (result_code != UPLL_RC_SUCCESS) { + FREE_IF_NOT_NULL(key_rename_info); + FREE_IF_NOT_NULL(rename_info); UPLL_LOG_DEBUG(" GetRenameInfo Failed. UpdateConfigDb Failed" - " Result code - %d", result_code); + " Result code - %d", result_code); } } if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) @@ -2249,8 +2330,7 @@ upll_rc_t FlowListMoMgr::GetRenameInfo(ConfigKeyVal *ikey, } upll_rc_t FlowListMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { - + ConfigKeyVal *ikey) { if ( !ikey || !(ikey->get_key()) ) return UPLL_RC_ERR_GENERIC; @@ -2259,12 +2339,12 @@ upll_rc_t FlowListMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, if (UNC_KT_FLOWLIST == ikey->get_key_type()) { key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_flowlist = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_flowlist_t))); if (!strlen(reinterpret_cast - (key_rename->old_flowlist_name))) { + (key_rename->old_flowlist_name))) { free(key_flowlist); return UPLL_RC_ERR_GENERIC; } @@ -2273,12 +2353,12 @@ upll_rc_t FlowListMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, (kMaxLenFlowListName+1)); okey = new ConfigKeyVal(UNC_KT_FLOWLIST, - IpctSt::kIpcStKeyFlowlist, key_flowlist, NULL); + IpctSt::kIpcStKeyFlowlist, key_flowlist, NULL); if (!okey) { UPLL_LOG_DEBUG("Memory allocation failed for ConfigKeyVal"); free(key_flowlist); result_code = UPLL_RC_ERR_GENERIC; - return result_code; + return result_code; } SET_USER_DATA(okey, ikey); } else { @@ -2303,37 +2383,39 @@ bool FlowListMoMgr::CompareValidValue(void *&val1, void *val2, UPLL_FUNC_TRACE; bool invalid_attr = true; val_flowlist_t *flowlist_val1 = - reinterpret_cast(val1); + reinterpret_cast(val1); val_flowlist_t *flowlist_val2 = - reinterpret_cast(val2); -// if (flowlist_val1 && flowlist_val2) { + reinterpret_cast(val2); + // if (flowlist_val1 && flowlist_val2) { // if (audit) { - for ( unsigned int loop = 0; loop < sizeof(flowlist_val1->valid); - ++loop ) { - if (UNC_VF_INVALID == flowlist_val1->valid[loop] && - UNC_VF_VALID == flowlist_val2->valid[loop]) - flowlist_val1->valid[loop] = UNC_VF_VALID_NO_VALUE; - } - // } - if (UNC_VF_VALID == flowlist_val1->valid[UPLL_IDX_IP_TYPE_FL] && - UNC_VF_VALID == flowlist_val2->valid[UPLL_IDX_IP_TYPE_FL]) { - if (flowlist_val1->ip_type == flowlist_val2->ip_type) { - flowlist_val1->valid[UPLL_IDX_IP_TYPE_FL] = UNC_VF_INVALID; - } + for ( unsigned int loop = 0; loop < sizeof(flowlist_val1->valid); + ++loop ) { + if (UNC_VF_INVALID == flowlist_val1->valid[loop] && + UNC_VF_VALID == flowlist_val2->valid[loop]) + flowlist_val1->valid[loop] = UNC_VF_VALID_NO_VALUE; + } + // } + if (UNC_VF_VALID == flowlist_val1->valid[UPLL_IDX_IP_TYPE_FL] && + UNC_VF_VALID == flowlist_val2->valid[UPLL_IDX_IP_TYPE_FL]) { + if (flowlist_val1->ip_type == flowlist_val2->ip_type) { + flowlist_val1->valid[UPLL_IDX_IP_TYPE_FL] = UNC_VF_INVALID; } - for (unsigned int loop = 0; - loop < sizeof(flowlist_val1->valid) / sizeof(uint8_t); ++loop) { + } + for (unsigned int loop = 0; + loop < sizeof(flowlist_val1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) flowlist_val1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) flowlist_val1->valid[loop])) - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == (uint8_t) flowlist_val1->valid[loop])) + invalid_attr = false; } return invalid_attr; } upll_rc_t FlowListMoMgr::UpdateMainTbl(ConfigKeyVal *key_fl, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *ck_fl = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2349,6 +2431,7 @@ upll_rc_t FlowListMoMgr::UpdateMainTbl(ConfigKeyVal *key_fl, val_fl = reinterpret_cast(GetVal(ck_fl)); if (!val_fl) { UPLL_LOG_DEBUG("invalid val"); + DELETE_IF_NOT_NULL(ck_fl); return UPLL_RC_ERR_GENERIC; } val_fl->cs_row_status = UNC_CS_APPLIED; @@ -2362,7 +2445,7 @@ upll_rc_t FlowListMoMgr::UpdateMainTbl(ConfigKeyVal *key_fl, } break; default: - UPLL_LOG_DEBUG("Inalid operation"); + UPLL_LOG_DEBUG("Inalid operation"); return UPLL_RC_ERR_GENERIC; } diff --git a/coordinator/modules/upll/flowlist_momgr.hh b/coordinator/modules/upll/flowlist_momgr.hh index 764018a6..3deb29d2 100644 --- a/coordinator/modules/upll/flowlist_momgr.hh +++ b/coordinator/modules/upll/flowlist_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -19,571 +19,578 @@ namespace upll { namespace kt_momgr { class FlowListMoMgr : public MoMgrImpl { - private: - static unc_key_type_t flowlist_child[]; - static BindInfo flowlist_bind_info[]; - static BindInfo flowlist_rename_bind_info[]; - static BindInfo flowlist_controller_bind_info[]; - - /** - * Member Variable for PolicingProfileBindInfo. - */ - static BindInfo rename_flowlist_main_tbl[]; - - /** - * Member Variable for PolicingProfileBindInfo. - */ - static BindInfo rename_flowlist_ctrlr_tbl[]; - - /** - * Member Variable for PolicingProfileBindInfo. - */ - static BindInfo rename_flowlist_rename_tbl[]; - - uint32_t cur_instance_count; - - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_FLOWLIST keytype - * - * @param[in] req Pointer to IpcResResHeader - * @param[in] key Pointer to the ConfigKeyVal Structure - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_flowlist is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); - - upll_rc_t ValidateFlowListKey(ConfigKeyVal *key, - unc_keytype_operation_t op); - - /** - * @Brief Validates the syntax for KT_FLOWLIST Rename value structure. - * - * @param[in] val_rename_flowlist KT_FLOWLIST rename value structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateFlowListValRename(ConfigKeyVal *key, - uint32_t operation, - uint32_t datatype); - - /** - * @Brief Validates the syntax for KT_FLOWLIST keytype value structure. - * - * @param[in] val_flowlist KT_FLOWLIST value structure. - * @param[in] operation Describes operation code - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateFlowListVal(ConfigKeyVal *key, - uint32_t operation, - uint32_t datatype); - - /** - * @brief Methods Used for Validating Attribute. - * - * @param[in] kval The pointer to the ConfigKeyVal class - * - * @param[in] dmi Pointer to the Database Interface. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - */ - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - - /** - * @Brief Checks if the specified key type(KT_FLOWLIST) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller_name - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); - - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_flowlist KT_FLOWLIST value structure. - * @param[in] attrs pointer to controller attribute - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValFlowlistAttributeSupportCheck(val_flowlist_t *val_flowlist, - const uint8_t* attrs); - - upll_rc_t UpdateMainTbl(ConfigKeyVal *key_fl, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *nreq, - DalDmlIntf *dmi); - - public: - /** - * @brief constructor - */ - FlowListMoMgr(); - - /** - * @brief Destructor - **/ - ~FlowListMoMgr() { - for (int i = 0; i < ntable; i++) { - if (table[i]) { - delete table[i]; - } + private: + static unc_key_type_t flowlist_child[]; + static BindInfo flowlist_bind_info[]; + static BindInfo flowlist_rename_bind_info[]; + static BindInfo flowlist_controller_bind_info[]; + + /** + * Member Variable for PolicingProfileBindInfo. + */ + static BindInfo rename_flowlist_main_tbl[]; + + /** + * Member Variable for PolicingProfileBindInfo. + */ + static BindInfo rename_flowlist_ctrlr_tbl[]; + + /** + * Member Variable for PolicingProfileBindInfo. + */ + static BindInfo rename_flowlist_rename_tbl[]; + + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_FLOWLIST keytype + * + * @param[in] req Pointer to IpcResResHeader + * @param[in] key Pointer to the ConfigKeyVal Structure + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_flowlist is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); + + upll_rc_t ValidateFlowListKey(ConfigKeyVal *key, + unc_keytype_operation_t op); + + /** + * @Brief Validates the syntax for KT_FLOWLIST Rename value structure. + * + * @param[in] val_rename_flowlist KT_FLOWLIST rename value structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateFlowListValRename(ConfigKeyVal *key, + uint32_t operation, + uint32_t datatype); + + /** + * @Brief Validates the syntax for KT_FLOWLIST keytype value structure. + * + * @param[in] val_flowlist KT_FLOWLIST value structure. + * @param[in] operation Describes operation code + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateFlowListVal(ConfigKeyVal *key, + uint32_t operation, + uint32_t datatype); + + /** + * @brief Methods Used for Validating Attribute. + * + * @param[in] kval The pointer to the ConfigKeyVal class + * + * @param[in] dmi Pointer to the Database Interface. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + */ + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + + /** + * @Brief Checks if the specified key type(KT_FLOWLIST) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller_name + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char* ctrlr_name = NULL); + + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_flowlist KT_FLOWLIST value structure. + * @param[in] attrs pointer to controller attribute + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValFlowlistAttributeSupportCheck(val_flowlist_t *val_flowlist, + const uint8_t* attrs); + + upll_rc_t UpdateMainTbl(ConfigKeyVal *key_fl, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi); + + public: + /** + * @brief constructor + */ + FlowListMoMgr(); + + /** + * @brief Destructor + **/ + ~FlowListMoMgr() { + for (int i = 0; i < ntable; i++) { + if (table[i]) { + delete table[i]; } - delete[] table; } + delete[] table; + } + + /** + * @Brief Compares two flowlist key + * + * @param[in] key1 pointer to the configkeyval structure containing the + * key which needs to compare + * @param[in] key2 pointer to the configkeyval structure containing the + * key which needs to compare + * + * @return Returns true if both the keys are same + * */ + bool CompareKey(void *key1, void *key2); + + /* @brief Copies the new flowlist name to the newly created key + * and assign this key to the output ConfigKeyVal structure + * + * @param[in] ikey Pointer to the ConfigKeyval containing the Key and + * value structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * @param[in] ctrlr controller name + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR + */ + upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + DalDmlIntf *dmi, uint8_t *ctrlr, bool &no_rename); - /** - * @Brief Compares two flowlist key - * - * @param[in] key1 pointer to the configkeyval structure containing the - * key which needs to compare - * @param[in] key2 pointer to the configkeyval structure containing the - * key which needs to compare - * - * @return Returns true if both the keys are same - * */ - bool CompareKey(void *key1, void *key2); - - /* @brief Copies the new flowlist name to the newly created key - * and assign this key to the output ConfigKeyVal structure - * - * @param[in] ikey Pointer to the ConfigKeyval containing the Key and - * value structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * @param[in] ctrlr controller name - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR - */ - upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - DalDmlIntf *dmi, uint8_t *ctrlr, bool &no_rename); - - upll_rc_t UpdateConfigStatus(ConfigKeyVal *flowlist_key, - unc_keytype_operation_t op, - uint32_t driver_result, ConfigKeyVal *nreq, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in,out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR - * - ***/ - - upll_rc_t UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - - /* @brief Retrieve the NewConfigKeyVal based on the input parent - * ConfigKey. - * If parent configkey is not available then create new - * configkeyval and return that keyval. - * - * @param[out] okey Out Pointer to the configkeyval - * @param[in] parent_key Input configkeyval pointer - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * @retval UPLL_RC_ERR_GENERIC On Failure - **/ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - - /* @brief Checkes whether the key exists in DB - * - * @param[in] ikey Pointer to the ConfigKeyval containing the Key and Value - * value structure of Import Configuration - * @param[in] dt_type Given UNC Datatype at which reference needs to check - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR - **/ - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - - /* @brief Read the configuration from DB based on the operation code - * - * @param[in] req Pointer to IpcResResHeader - * @param[in,out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - **/ - upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *flowlist_key, + unc_keytype_operation_t op, + uint32_t driver_result, ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in,out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR + * + ***/ + + upll_rc_t UpdateAuditConfigStatus( + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + + /* @brief Retrieve the NewConfigKeyVal based on the input parent + * ConfigKey. + * If parent configkey is not available then create new + * configkeyval and return that keyval. + * + * @param[out] okey Out Pointer to the configkeyval + * @param[in] parent_key Input configkeyval pointer + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * @retval UPLL_RC_ERR_GENERIC On Failure + **/ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + + /* @brief Checkes whether the key exists in DB + * + * @param[in] ikey Pointer to the ConfigKeyval containing the Key and Value + * value structure of Import Configuration + * @param[in] dt_type Given UNC Datatype at which reference needs to check + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR + **/ + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); - /* @brief Validates the Import configuration with the Running Configuration - * during Import Operations - * - * @param[in] keytype UNC Keytype - * @param[in] ctrl_id Controller Name - * @param[in] configkey Pointer to the ConfigKeyval containing the Key - * and Value structure of Import Configuration - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT Read Operation is - * not allowed for the given - * datatype - * @retval UPLL_RC_ERR_MERGE_CONFLICT For failue case - * (if configuration already - * exists in RunningDB) - **/ - upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *conflict_ckv, DalDmlIntf *dmi); - - /* @brief Read the configuration from DB based on the operation code - * - * @param[in] req Pointer to IpcResResHeader - * @param[in,out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] begin boolean variable to decide the sibling operation - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface ) - - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - **/ - upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *key, - bool begin, DalDmlIntf *dmi); - - /** @brief Performs the update operation - * This operation is not allowed for FlowListMomgr - * - * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT - **/ - upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + /* @brief Read the configuration from DB based on the operation code + * + * @param[in] req Pointer to IpcResResHeader + * @param[in,out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + **/ + upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /* @brief Validates the Import configuration with the Running Configuration + * during Import Operations + * + * @param[in] keytype UNC Keytype + * @param[in] ctrl_id Controller Name + * @param[in] configkey Pointer to the ConfigKeyval containing the Key + * and Value structure of Import Configuration + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT Read Operation is + * not allowed for the given + * datatype + * @retval UPLL_RC_ERR_MERGE_CONFLICT For failue case + * (if configuration already + * exists in RunningDB) + **/ + upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, + ConfigKeyVal *conflict_ckv, DalDmlIntf *dmi); + + /* @brief Read the configuration from DB based on the operation code + * + * @param[in] req Pointer to IpcResResHeader + * @param[in,out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] begin boolean variable to decide the sibling operation + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface ) + + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + **/ + upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *key, + bool begin, DalDmlIntf *dmi); + + /** @brief Performs the update operation + * This operation is not allowed for FlowListMomgr + * + * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT + **/ + upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); - /** - * @brief This method is used for copying configuration from Candidate - * to Running DB during transaction operation. - * - * @param[in] keytype Defines the keytype for which operation - * has to be carried out. - * @param[in] ctrlr_commit_status List describes Commit Control Status - * Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS successful completion - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_GENERIC For generic failure - **/ - upll_rc_t TxCopyCandidateToRunning( - unc_key_type_t keytype, CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf *dmi); - - /** - * @brief Method to Update Controller with created, deleted and updated records - * - * @param[in] keytype Defines the keytype for which operation has - * to be carried out. - * @param[in] session_id Session id to send req to driver - * @param[in] config_id Config id to send req to driver - * @param[in] phase List describes Commit Control Status - * Information. - * @param[out] affected_ctrlr_set Set of affected controllers. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - * retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB - * @retval UPLL_RC_ERR_DB_ACCESS DB access error - **/ - upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); - - /** - * @brief Method to send req to driver during Transaction Update Operation - * - * @param[in] ck_main Pointer to ConfigKeyVal - * @param[in] ipc_req Pointer to ipc_request structure. - * @param[in] ipc_resp Pointer to ipc_response structure. - * @param[in] op Operation to be carried out - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Pointer to ctrlr_id - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - * @retval UPLL_RC_ERR_DB_ACCESS DB access error - **/ - upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, unc_keytype_operation_t op, DalDmlIntf *dmi, - controller_domain *ctrlr_dom); - - - /** @brief Allocate the memory for the value structure depending upon - * the tbl ARG - * - * @param[in,out] ck_val pointer to configval structure - * @param[in] dt_type UPLL Datatype - * @param[in] tbl enum for Tabletypes - * Possible values could be - * MAINTBL - * RENAMETBL - * CTRLRTBL - * - * @retval UPLL_RC_SUCCESS successful completion - * @retval UPLL_RC_ERR_GENERIC For failure - * * */ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - - /** - * @brief Fetch the valid array value and assign it to the valid flag - * values to the outparam based on the table type and the - * datatype. - * - * @param[in] val pointer to the value structure. - * @param[out] valid reference to the enum containing the possible - * values of Valid flag. - * @param[out] indx reference for the DbFlag. - * @param[in] tbl Containing the values for Tabletype - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Failure occurred. - **/ - upll_rc_t GetValid(void*val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl = - MAINTBL); - - /* @brief Creates a duplicate configkeyval structure from the existing configkey - * val structure - * @param[out] okey Pointer to the ConfigKeyval containing the Key and Value - * value structure - * @param[in] req Pointer to the ConfigKeyval containing the Key and Value - * value structure - * @param[in] tbl Enumerator variable contaiing the Table type - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR - * **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - - /* @brief Retrieve the controller key based on the UNC KEY which - * got renamed. - * - * @param[in,out] ikey Pointer to configkeyval structure of inputkey - * @param[in] dt_type upll datatype - * @param[in] dmi pointer to the DalDmlIntf Interface - * @param[in] ctrl_name Controller Name - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * @retval UPLL_RC_ERR_GENERIC On Failure - **/ - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom = NULL); - - /* @brief Retrieve the UNC key which got renamed based on the input - * ConfigKeyval in which PFC key is available. - * - * @param[in/out] ctrl_key Pointer to configkeyval structure containing - * controller key - * @param[in] dt_type upll datatype - * @param[in] dmi pointer to the DalDmlIntf Interface - * @param[in] ctrl_id Controller Name - * - * @retval UPLL_RC_SUCCECSS Successful Completion - * UPLL_RC_ERR_GENERIC On Failure(if unable to generate output key) - **/ - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t *ctrlr_id); - - /* @brief Read the configuration from DB based on the operation code - * - * @param[in] req Pointer to IpcResResHeader - * @param[in,out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * @param[in] op Upll Operation code - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t ReadRecord(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - /** - * @brief Method to old policingprofile name from rename struct to - * output ConfigKeyVal - * - * @param[in] ikey Pointer to input ConfigKeyVal - * @param[out] okey Pointer to output ConfigKeyVal. - * @param[in] rename_info Pointer to ConfigKeyVal with rename struct - * as key. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Pointer to ctrlr_id - * @param[in] renamed bool variable to check whether its renamed or - * not - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, - ConfigKeyVal *okey, ConfigKeyVal *&rename_info, DalDmlIntf *dmi, - const char *ctrlr_id, bool &renamed); - - /** - * @brief Method to Create ConfigKeyVal with rename struct as key - * - * @param[in] ikey Pointer to input ConfigKeyVal - * @param[out] okey Pointer to output ConfigKeyVal. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - - /** - * @brief Method to get the bind struct depending on table - * - * @param[in] key_type Keytype for bind attr selection - * @param[out] binfo Pointer to bindinfo structure - * @param[out] nattr Number of attributes to bind - * @param[in] tbl Table for which bind attr is to be selected - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - /** @brief Method to Update the Controller Table entry - * - * @param[in] ikey Pointer to ConkeyValClass - * @param[in] op Operation code - * @param[in] dmi Pointer to DB Interface - * @param[in] ctrl_id Controller Name - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - * + /** + * @brief This method is used for copying configuration from Candidate + * to Running DB during transaction operation. + * + * @param[in] keytype Defines the keytype for which operation + * has to be carried out. + * @param[in] ctrlr_commit_status List describes Commit Control Status + * Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS successful completion + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_GENERIC For generic failure + **/ + upll_rc_t TxCopyCandidateToRunning( + unc_key_type_t keytype, CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi); + + /** + * @brief Method to Update Controller with created, deleted and updated records + * + * @param[in] keytype Defines the keytype for which operation has + * to be carried out. + * @param[in] session_id Session id to send req to driver + * @param[in] config_id Config id to send req to driver + * @param[in] phase List describes Commit Control Status + * Information. + * @param[out] affected_ctrlr_set Set of affected controllers. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + * retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB + * @retval UPLL_RC_ERR_DB_ACCESS DB access error + **/ + upll_rc_t TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); + + /** + * @brief Method to send req to driver during Transaction Update Operation + * + * @param[in] ck_main Pointer to ConfigKeyVal + * @param[in] ipc_req Pointer to ipc_request structure. + * @param[in] ipc_resp Pointer to ipc_response structure. + * @param[in] op Operation to be carried out + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Pointer to ctrlr_id + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + * @retval UPLL_RC_ERR_DB_ACCESS DB access error + **/ + upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp); + + + /** @brief Allocate the memory for the value structure depending upon + * the tbl ARG + * + * @param[in,out] ck_val pointer to configval structure + * @param[in] dt_type UPLL Datatype + * @param[in] tbl enum for Tabletypes + * Possible values could be + * MAINTBL + * RENAMETBL + * CTRLRTBL + * + * @retval UPLL_RC_SUCCESS successful completion + * @retval UPLL_RC_ERR_GENERIC For failure + * * */ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + + /** + * @brief Fetch the valid array value and assign it to the valid flag + * values to the outparam based on the table type and the + * datatype. + * + * @param[in] val pointer to the value structure. + * @param[out] valid reference to the enum containing the possible + * values of Valid flag. + * @param[out] indx reference for the DbFlag. + * @param[in] tbl Containing the values for Tabletype + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Failure occurred. + **/ + upll_rc_t GetValid(void*val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl = + MAINTBL); + + /* @brief Creates a duplicate configkeyval structure from the existing configkey + * val structure + * @param[out] okey Pointer to the ConfigKeyval containing the Key and Value + * value structure + * @param[in] req Pointer to the ConfigKeyval containing the Key and Value + * value structure + * @param[in] tbl Enumerator variable contaiing the Table type + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * @retval UPLL_RC_ERR_GENERIC For failue case GENERIC ERROR + * **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + + /* @brief Retrieve the controller key based on the UNC KEY which + * got renamed. + * + * @param[in,out] ikey Pointer to configkeyval structure of inputkey + * @param[in] dt_type upll datatype + * @param[in] dmi pointer to the DalDmlIntf Interface + * @param[in] ctrl_name Controller Name + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * @retval UPLL_RC_ERR_GENERIC On Failure + **/ + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom = NULL); + + /* @brief Retrieve the UNC key which got renamed based on the input + * ConfigKeyval in which PFC key is available. + * + * @param[in/out] ctrl_key Pointer to configkeyval structure containing + * controller key + * @param[in] dt_type upll datatype + * @param[in] dmi pointer to the DalDmlIntf Interface + * @param[in] ctrl_id Controller Name + * + * @retval UPLL_RC_SUCCECSS Successful Completion + * UPLL_RC_ERR_GENERIC On Failure(if unable to generate output key) + **/ + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id); + + /* @brief Read the configuration from DB based on the operation code + * + * @param[in] req Pointer to IpcResResHeader + * @param[in,out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * @param[in] op Upll Operation code + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t ReadRecord(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + /** + * @brief Method to old policingprofile name from rename struct to + * output ConfigKeyVal + * + * @param[in] ikey Pointer to input ConfigKeyVal + * @param[out] okey Pointer to output ConfigKeyVal. + * @param[in] rename_info Pointer to ConfigKeyVal with rename struct + * as key. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Pointer to ctrlr_id + * @param[in] renamed bool variable to check whether its renamed or + * not + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, + ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + const char *ctrlr_id, + bool &renamed); + + /** + * @brief Method to Create ConfigKeyVal with rename struct as key + * + * @param[in] ikey Pointer to input ConfigKeyVal + * @param[out] okey Pointer to output ConfigKeyVal. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure */ - upll_rc_t UpdateControllerTable(ConfigKeyVal *ikey, - unc_keytype_operation_t op, + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + + /** + * @brief Method to get the bind struct depending on table + * + * @param[in] key_type Keytype for bind attr selection + * @param[out] binfo Pointer to bindinfo structure + * @param[out] nattr Number of attributes to bind + * @param[in] tbl Table for which bind attr is to be selected + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + /** @brief Method to Update the Controller Table entry + * + * @param[in] ikey Pointer to ConkeyValClass + * @param[in] op Operation code + * @param[in] dmi Pointer to DB Interface + * @param[in] ctrl_id Controller Name + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + * + */ + upll_rc_t UpdateControllerTable(ConfigKeyVal *ikey, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + char* ctrl_id); + upll_rc_t AddFlowListToController(char *flowlist_name, DalDmlIntf *dmi, - char* ctrl_id); - upll_rc_t AddFlowListToController(char *flowlist_name, - DalDmlIntf *dmi, - char* ctrl_id, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op); - /** - * @brief Method to Set the Consolidated status - * - * @param[in] ikey Pointer to ConfigKeyVal - * @param[in] dmi Pointer to DalDmlIntf. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB - * @retval UPLL_RC_ERR_DB_ACCESS DB access error - **/ - upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /** - * @brief Method To Compare the Valid Check of Attributes - * - * @param[out] val1 Pointer to ConfigKeyVal Class which - * contains only Valid Attributes - * @param[in] val2 Pointer to ConfigKeyVal Class. - * @param[in] audit If true,Audit Process - * @retval UPLL_RC_SUCCESS; - */ - bool CompareValidValue(void *&val1, void *val2, bool audit); - - /** - * @brief Method to check validity of Key - * - * @param[in] ConfigKeyVal input COnfigKeyVal - * @param[out] index Column Index - * - * @return TRUE Success - * @retval FALSE Failure - * */ - bool IsValidKey(void *key, uint64_t index); - /** - * @brief Method to get Parent ConfigKeyVal - * - * @param[in] ConfigKeyVal parent_key - * @param[out] ConfigKeyVal okey - * - * @retval UPLL_RC_ERR_GENERIC Failure - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - - upll_rc_t CreateFlowListToController( - char *flowlist_name, DalDmlIntf *dmi, char* ctrl_id, - upll_keytype_datatype_t dt_type, unc_keytype_operation_t op); - - upll_rc_t DeleteFlowListToController( - char *flowlist_name, DalDmlIntf *dmi, char* ctrl_id, - upll_keytype_datatype_t dt_type, unc_keytype_operation_t op); - - upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); - - bool FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op); - - upll_rc_t SetFlowListConsolidatedStatus(ConfigKeyVal *ikey, - uint8_t *ctrlr_id, - DalDmlIntf *dmi); + char* ctrl_id, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op); + /** + * @brief Method to Set the Consolidated status + * + * @param[in] ikey Pointer to ConfigKeyVal + * @param[in] dmi Pointer to DalDmlIntf. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No record found in DB + * @retval UPLL_RC_ERR_DB_ACCESS DB access error + **/ + upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /** + * @brief Method To Compare the Valid Check of Attributes + * + * @param[out] val1 Pointer to ConfigKeyVal Class which + * contains only Valid Attributes + * @param[in] val2 Pointer to ConfigKeyVal Class. + * @param[in] audit If true,Audit Process + * @retval UPLL_RC_SUCCESS; + */ + bool CompareValidValue(void *&val1, void *val2, bool audit); + + /** + * @brief Method to check validity of Key + * + * @param[in] ConfigKeyVal input COnfigKeyVal + * @param[out] index Column Index + * + * @return TRUE Success + * @retval FALSE Failure + * */ + bool IsValidKey(void *key, uint64_t index); + /** + * @brief Method to get Parent ConfigKeyVal + * + * @param[in] ConfigKeyVal parent_key + * @param[out] ConfigKeyVal okey + * + * @retval UPLL_RC_ERR_GENERIC Failure + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + + upll_rc_t CreateFlowListToController( + char *flowlist_name, DalDmlIntf *dmi, char* ctrl_id, + upll_keytype_datatype_t dt_type, unc_keytype_operation_t op); + + upll_rc_t DeleteFlowListToController( + char *flowlist_name, DalDmlIntf *dmi, char* ctrl_id, + upll_keytype_datatype_t dt_type, unc_keytype_operation_t op); + + upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); + + bool FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, + unc_keytype_operation_t op); + + upll_rc_t SetFlowListConsolidatedStatus(ConfigKeyVal *ikey, + uint8_t *ctrlr_id, + DalDmlIntf *dmi); }; typedef struct val_flowlist_ctrl { - uint8_t valid[2]; // valid[1] is for refcount - unc_keytype_configstatus_t cs_row_status; - unc_keytype_configstatus_t cs_attr[1]; - uint8_t flags; // DBFLAGS - uint32_t refcount; // DB RefCount + uint8_t valid[2]; // valid[1] is for refcount + unc_keytype_configstatus_t cs_row_status; + unc_keytype_configstatus_t cs_attr[1]; + uint8_t flags; // DBFLAGS + uint32_t refcount; // DB RefCount } val_flowlist_ctrl_t; } // namespace kt_momgr } // namespace upll diff --git a/coordinator/modules/upll/ipc_client_handler.cc b/coordinator/modules/upll/ipc_client_handler.cc new file mode 100644 index 00000000..474fa239 --- /dev/null +++ b/coordinator/modules/upll/ipc_client_handler.cc @@ -0,0 +1,278 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#include "kt_util.hh" +#include "ipc_client_handler.hh" +#include "ipc_util.hh" + + +using unc::upll::upll_util::upll_strncpy; + +namespace unc { +namespace upll { +namespace ipc_util { + +bool IpcClientHandler::SendReqToDriver(const char *ctrlr_name, char *domain_id, + IpcRequest *req ) { + UPLL_FUNC_TRACE + bool ok = SendReqToServer(PFCDRIVER_CHANNEL_NAME, + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + true, + ctrlr_name, + domain_id, + req); + if (ok) { + ipc_resp.header.result_code = IpcUtil::DriverResultCodeToKtURC( + req->header.operation , ipc_resp.header.result_code); + } + return ok; +} + + + +bool IpcClientHandler::SendReqToServer(const char *channel_name, + const char *service_name, + pfc_ipcid_t service_id, + bool driver_msg, + const char *ctrlr_name, char *domain_id, + IpcRequest *req) { + UPLL_FUNC_TRACE + IpcResponse *resp = &ipc_resp; + + if (channel_name == NULL || service_name == NULL || + req == NULL || resp == NULL) { + UPLL_LOG_DEBUG("NULL argument"); + if (resp != NULL) { + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = 0; + } + return false; + } + if (driver_msg == true && ctrlr_name == NULL) { + UPLL_LOG_DEBUG("NULL controller argument"); + if (resp != NULL) { + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = 0; + } + return false; + } + + if (IpcUtil::IsShuttingDown()) { + UPLL_LOG_WARN("Cannot send request to %s as shutdown in progress", + channel_name); + resp->header.result_code = UPLL_RC_ERR_SHUTTING_DOWN; + resp->return_code = 0; + return false; + } + + UPLL_LOG_TRACE("dest=%s:%s:%d, controller_name=%s domain_id=%s\n" + "Request: %s\n%s", + channel_name, service_name, service_id, + ctrlr_name, domain_id, + IpcUtil::IpcRequestToStr(req->header).c_str(), + req->ckv_data->ToStrAll().c_str()); + + // Create an alternative IPC connection handle. + int err = pfc_ipcclnt_altopen(channel_name, &connid); + if (err != 0) { + UPLL_LOG_DEBUG("Failed to create IPC alternative connection to %s. Err=%d", + channel_name, err); + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = PFC_IPCRESP_FATAL; + return false; + } + + cl_sess = new pfc::core::ipc::ClientSession(connid, service_name, + service_id, err); + if (err != 0) { + UPLL_LOG_DEBUG("Failed to create IPC client session %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); + err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle + if (err != 0) { + UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); + } + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = PFC_IPCRESP_FATAL; + return false; + } + if ((req->ckv_data != NULL) && + (req->ckv_data->get_key_type() == UNC_KT_VTN_DATAFLOW)) { + pfc_timespec_t sess_timeout; + sess_timeout.tv_sec = kIpcTimeoutDataflow; + sess_timeout.tv_nsec = 0; + cl_sess->setTimeout(&sess_timeout); + UPLL_LOG_TRACE("IPC Client Session timeout for channel %s set to %d secs", + channel_name, kIpcTimeoutDataflow); + } + bool ret = IpcUtil::WriteKtRequest(cl_sess, driver_msg, ctrlr_name, domain_id, + req->header, req->ckv_data); + if (!ret) { + UPLL_LOG_DEBUG("Failed to send IPC request to %s:%s:%d", + channel_name, service_name, service_id); + err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle + if (err != 0) { + UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); + } + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = PFC_IPCRESP_FATAL; + return false; + } + pfc_ipcresp_t ipcresp; + err = cl_sess->invoke(ipcresp); + if (err != 0) { + resp->header.result_code = UPLL_RC_ERR_GENERIC; + if (err == ETIMEDOUT) { + UPLL_LOG_DEBUG("IPC Session to %s:%s:%d has timed out", + channel_name, service_name, service_id); + resp->return_code = PFC_IPCRESP_FATAL; + } else { + UPLL_LOG_FATAL("Failed to send IPC request to %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); + resp->return_code = PFC_IPCRESP_FATAL; + } + err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle + if (err != 0) { + UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); + } + return false; + } + if (ipcresp != 0) { + UPLL_LOG_DEBUG("Error at IPC server %s:%s:%d. ErrResp=%d", + channel_name, service_name, service_id, ipcresp); + err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle + if (err != 0) { + UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); + } + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = PFC_IPCRESP_FATAL; + return false; + } + + ret = ReadKtResponse(cl_sess, service_id, driver_msg, domain_id); + if (!ret) { + UPLL_LOG_DEBUG("Failed to read IPC response from %s:%s:%d", + channel_name, service_name, service_id); + err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle + if (err != 0) { + UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); + } + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = PFC_IPCRESP_FATAL; + return false; + } + resp->return_code = 0; + + UPLL_LOG_TRACE("dest=%s:%s:%d, controller_name=%s domain_id=%s\n" + "Response: %s\n", + channel_name, service_name, service_id, + ctrlr_name, domain_id, + IpcUtil::IpcResponseToStr(resp->header).c_str()); + return true; +} + + +/* Read KT response from Server */ +/* if driver_msg is true, then the message is from driver, otherwise it is from + * Physical. If the driver_msg is true and non-null domain_id pointer is passed + * then the domain_id from the message is placed in the domain_id pointer. + * Caller should have sent a valid pointer for copying domain id */ +bool IpcClientHandler::ReadKtResponse(pfc::core::ipc::ClientSession *sess, + pfc_ipcid_t /* service */, + bool driver_msg, char *domain_id) { + UPLL_FUNC_TRACE; + if (sess == NULL) { + UPLL_LOG_DEBUG("Null argument"); + return false; + } + IpcReqRespHeader *msg_hdr = &ipc_resp.header; + ConfigKeyVal **first_ckv = &ipc_resp.ckv_data; + *first_ckv = NULL; + + bzero(msg_hdr, sizeof(*msg_hdr)); + + uint32_t arg_cnt = sess->getResponseCount(); + uint32_t mandatory_fields = (driver_msg) ? + unc::upll::ipc_util::kKeyTreeDriverRespMandatoryFields : + unc::upll::ipc_util::kKeyTreeRespMandatoryFields; + if (arg_cnt < mandatory_fields) { + UPLL_LOG_DEBUG("Not enough arguments in key tree response." + " Has only %u, expected %d", + arg_cnt, mandatory_fields); + return false; + } + + int err; + uint32_t keytype; + uint32_t operation; + const char *msg_ctrlr_name; + const char *msg_domain_id; + uint32_t option1; + uint32_t option2; + uint32_t datatype; + uint32_t result_code; + arg = 0; + if ((0 != (err = sess->getResponse(arg++, msg_hdr->clnt_sess_id))) || + (0 != (err = sess->getResponse(arg++, msg_hdr->config_id)))) { + UPLL_LOG_DEBUG("Failed to get header field #%u in the key tree response." + " Err=%d", arg, err); + UPLL_LOG_TRACE("Config and Sess id is not able to get"); + return false; + } + if (driver_msg == true) { + if ((0 != (err = sess->getResponse(arg++, msg_ctrlr_name))) || + (0 != (err = sess->getResponse(arg++, msg_domain_id)))) { + UPLL_LOG_DEBUG("Failed to get header field #%u in the key tree response." + " Err=%d", arg, err); + UPLL_LOG_TRACE("Ctrlr and domain name not able to get"); + return false; + } + if (domain_id != NULL) { + upll_strncpy(domain_id, msg_domain_id, KtUtil::kCtrlrNameLenWith0); + } + } + if ((0 != (err = sess->getResponse(arg++, operation))) || + (0 != (err = sess->getResponse(arg++, msg_hdr->rep_count))) || + (0 != (err = sess->getResponse(arg++, option1))) || + (0 != (err = sess->getResponse(arg++, option2))) || + (0 != (err = sess->getResponse(arg++, datatype))) || + (0 != (err = sess->getResponse(arg++, result_code))) || + (0 != (err = sess->getResponse(arg++, keytype))) ) { + UPLL_LOG_DEBUG("Failed to get header field #%u in the key tree response." + " Err=%d", arg, err); + return false; + } + arg++; /* Key struct skkipped */ + msg_hdr->operation = (unc_keytype_operation_t)operation; + msg_hdr->option1 = (unc_keytype_option1_t)option1; + msg_hdr->option2 = (unc_keytype_option2_t)option2; + msg_hdr->datatype = (upll_keytype_datatype_t)datatype; + msg_hdr->result_code = (upll_rc_t) result_code; + +#if 0 + IpctSt::IpcStructNum st_num; + void *ipc_st; + if (!IpcUtil::ReadIpcStruct(sess, arg++, &st_num, &ipc_st)) { + UPLL_LOG_DEBUG("Failed to get structure at %u in the key tree response", + arg); + return false; + } + *first_ckv = new ConfigKeyVal((unc_key_type_t)keytype, st_num, ipc_st, NULL); +#endif + return true; +} + +} // namespace ipc_util +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/ipc_client_handler.hh b/coordinator/modules/upll/ipc_client_handler.hh new file mode 100644 index 00000000..5a0b3fe5 --- /dev/null +++ b/coordinator/modules/upll/ipc_client_handler.hh @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#include "ipct_st.hh" +#include "unc/upll_svc.h" + +#include "unc/pfcdriver_include.h" +#include "unc/vnpdriver_include.h" +#include "momgr_impl.hh" + +using unc::upll::ipc_util::IpcResponse; + +namespace unc { +namespace upll { +namespace ipc_util { + +class IpcClientHandler { + public: + uint32_t arg; + IpcResponse ipc_resp; + pfc::core::ipc::ClientSession *cl_sess; + + IpcClientHandler() { + cl_sess = NULL; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + arg = 0; + connid = 0; + } + ~IpcClientHandler() { + if (cl_sess) { + int err = pfc_ipcclnt_altclose(connid); + if (err != 0) { + pfc_log_info("Unable to close the connection"); + } + cl_sess->cancel(PFC_TRUE); + delete cl_sess; + } + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + } + bool SendReqToDriver(const char *ctrlr_name, char *domain_id, + IpcRequest *req); + // ctrlr_name and domain_id are valid only when sending to driver. When + // sending to physical they are ignored. + bool SendReqToServer(const char *channel_name, + const char *service_name, pfc_ipcid_t service_id, + bool driver_msg, + const char *ctrlr_name, char *domain_id, + IpcRequest *req); + + private: + pfc_ipcconn_t connid; + bool ReadKtResponse(pfc::core::ipc::ClientSession *sess, + pfc_ipcid_t service, + bool driver_msg, char *domain_id); +}; + +} // namespace ipc_util +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/ipc_util.cc b/coordinator/modules/upll/ipc_util.cc index 1b261f42..22638968 100644 --- a/coordinator/modules/upll/ipc_util.cc +++ b/coordinator/modules/upll/ipc_util.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -210,53 +210,115 @@ upll_rc_t IpcUtil::GetCtrlrTypeFromPhy(const char *ctrlr_name, } upll_rc_t IpcUtil::DriverResultCodeToKtURC( - unc_keytype_ctrtype_t ctrlr_type, uint32_t driver_result_code) { - switch (ctrlr_type) { - case UNC_CT_PFC: - case UNC_CT_VNP: - case UNC_CT_ODC: + unc_keytype_operation_t operation, uint32_t driver_result_code) { + switch (operation) { + // Transaction specific operations + case UNC_OP_CREATE: + case UNC_OP_DELETE: + case UNC_OP_UPDATE: { switch (driver_result_code) { - case DRVAPI_RESPONSE_SUCCESS: + case UNC_RC_SUCCESS: return UPLL_RC_SUCCESS; - case DRVAPI_RESPONSE_NOT_RUNNING: - return UPLL_RC_ERR_GENERIC; - case DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED: - return UPLL_RC_ERR_RESOURCE_DISCONNECTED; - case DRVAPI_RESPONSE_NOT_SENT_TO_CONTROLLER: + + // case UNC_DRV_RC_DAEMON_INACTIVE: move to default case // It will not be sent to controller only in the case of // vote, and that too if previous vote failed. Since we do not send // VOTE request from here, let us convert it to GENERIC error. + // case UNC_RC_REQ_NOT_SENT_TO_CTR: move to default case + // case UNC_DRV_RC_INVALID_REQUEST_FORMAT: move to default case + // case UNC_DRV_RC_INVALID_SESSION_ID: move to default case + // case UNC_DRV_RC_INVALID_CONFIG_ID: move to default case + // case UNC_DRV_RC_INVALID_OPERATION: move to default case + // case UNC_DRV_RC_INVALID_OPTION1: move to default case + // case UNC_DRV_RC_INVALID_OPTION2: move to default case + // case UNC_DRV_RC_INVALID_DATATYPE: move to default case + // case UNC_DRV_RC_INVALID_KEYTYPE: move to default case + + case UNC_DRV_RC_ERR_ATTRIBUTE_SYNTAX: + return static_cast(UNC_RC_CONFIG_INVAL); + case UNC_DRV_RC_ERR_ATTRIBUTE_SEMANTIC: + return static_cast(UNC_RC_CONFIG_INVAL); + + case UNC_RC_CTR_DISCONNECTED: + return UPLL_RC_ERR_CTR_DISCONNECTED; + + case UNC_RC_CONFIG_INVAL: + case UNC_RC_CTR_CONFIG_STATUS_ERR: + case UNC_RC_CTR_BUSY: + return static_cast(driver_result_code); + + case UNC_RC_NO_SUCH_INSTANCE: + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + + // case UNC_DRV_RC_MISSING_KEY_STRUCT: move to default case + // case UNC_DRV_RC_MISSING_VAL_STRUCT: move to default case + // case UNC_DRV_RC_ERR_GENERIC: move to default case + // case UNC_RC_INTERNAL_ERR: move to default case + + case UNC_RC_CTRLAPI_FAILURE: + return static_cast(driver_result_code); + default: + UPLL_LOG_INFO("Received error %d from driver," + " converting to GENERIC error", + driver_result_code); return UPLL_RC_ERR_GENERIC; - case DRVAPI_RESPONSE_INVALID_REQUEST_FORMAT: - return UPLL_RC_ERR_BAD_REQUEST; - case DRVAPI_RESPONSE_INVALID_SESSION_ID: - case DRVAPI_RESPONSE_INVALID_CONFIG_ID: - return UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID; - case DRVAPI_RESPONSE_INVALID_OPERATION: - return UPLL_RC_ERR_NO_SUCH_OPERATION; - case DRVAPI_RESPONSE_INVALID_OPTION1: - return UPLL_RC_ERR_INVALID_OPTION1; - case DRVAPI_RESPONSE_INVALID_OPTION2: - return UPLL_RC_ERR_INVALID_OPTION2; - case DRVAPI_RESPONSE_INVALID_DATATYPE: - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - case DRVAPI_RESPONSE_INVALID_KEYTYPE: - return UPLL_RC_ERR_NO_SUCH_NAME; - case DRVAPI_RESPONSE_NO_SUCH_INSTANCE: - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - case DRVAPI_RESPONSE_MISSING_KEY_STRUCT: - case DRVAPI_RESPONSE_MISSING_VAL_STRUCT: - case DRVAPI_RESPONSE_FAILURE: - case DRVAPI_RESPONSE_CTRLAPI_FAILURE: - case DRVAPI_RESPONSE_INVALID_TRANSACTION: + } + } + default: // Not-transaction specific operations: READ, CONTROL operations + { + switch (driver_result_code) { + case UNC_RC_SUCCESS: + return UPLL_RC_SUCCESS; + // case UNC_DRV_RC_DAEMON_INACTIVE: move to default case + // It will not be sent to controller only in the case of + // vote, and that too if previous vote failed. Since we do not send + // VOTE request from here, let us convert it to GENERIC error. + // case UNC_RC_REQ_NOT_SENT_TO_CTR: move to default case + // case UNC_DRV_RC_INVALID_REQUEST_FORMAT: move to default case + // case UNC_DRV_RC_INVALID_SESSION_ID: move to default case + // case UNC_DRV_RC_INVALID_CONFIG_ID: move to default case + // case UNC_DRV_RC_INVALID_OPERATION: move to default case + // case UNC_DRV_RC_INVALID_OPTION1: move to default case + // case UNC_DRV_RC_INVALID_OPTION2: move to default case + // case UNC_DRV_RC_INVALID_DATATYPE: move to default case + // case UNC_DRV_RC_INVALID_KEYTYPE: move to default case + + case UNC_DRV_RC_ERR_ATTRIBUTE_SYNTAX: + return UPLL_RC_ERR_CFG_SYNTAX; + case UNC_DRV_RC_ERR_ATTRIBUTE_SEMANTIC: + return UPLL_RC_ERR_CFG_SEMANTIC; + + case UNC_RC_CTR_DISCONNECTED: + return UPLL_RC_ERR_CTR_DISCONNECTED; + + // case UNC_RC_CONFIG_INVAL: move to default case + // case UNC_RC_CTR_CONFIG_STATUS_ERR: move to default case + // case UNC_RC_CTR_BUSY: move to default case + // TODO(upll) : assumption driver does not give this error. + // Please Verify + + case UNC_RC_NO_SUCH_INSTANCE: + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + + // case UNC_DRV_RC_MISSING_KEY_STRUCT: move to default case + // case UNC_DRV_RC_MISSING_VAL_STRUCT: move to default case + // case UNC_DRV_RC_ERR_GENERIC: move to default case + // case UNC_RC_INTERNAL_ERR: move to default case + case UNC_RC_CTRLAPI_FAILURE: + // TODO(upll) : need to check with Driver on whether + // this is possible + // for these operations. If so, what should it get converted in + // upll. + // In U10 we were sending GENERIC error, so we can convert to + // default case default: + UPLL_LOG_INFO("Received error %d from driver," + " converting to GENERIC error", + driver_result_code); return UPLL_RC_ERR_GENERIC; } } - break; - default: - return UPLL_RC_ERR_GENERIC; } } @@ -267,7 +329,7 @@ bool IpcUtil::SendReqToDriver(const char *ctrlr_name, char *domain_id, IpcRequest *req, bool /* edit_conn */, IpcResponse *resp) { UPLL_FUNC_TRACE - PFC_ASSERT(ctrlr_name != NULL); + PFC_ASSERT(ctrlr_name != NULL); unc_keytype_ctrtype_t ctrlr_type = UNC_CT_UNKNOWN; const char *channel_name = NULL; @@ -275,11 +337,11 @@ bool IpcUtil::SendReqToDriver(const char *ctrlr_name, char *domain_id, pfc_ipcid_t service_id; if (unc::upll::config_momgr::CtrlrMgr::GetInstance()->GetCtrlrType( - ctrlr_name, req->header.datatype, &ctrlr_type) == false) { + ctrlr_name, req->header.datatype, &ctrlr_type) == false) { if ((req->header.operation == UNC_OP_DELETE) && (req->header.datatype != UPLL_DT_RUNNING)) { if (unc::upll::config_momgr::CtrlrMgr::GetInstance()->GetCtrlrType( - ctrlr_name, UPLL_DT_RUNNING, &ctrlr_type) == false) { + ctrlr_name, UPLL_DT_RUNNING, &ctrlr_type) == false) { UPLL_LOG_WARN("Unable to get controller type for %s", ctrlr_name); resp->header.result_code = UPLL_RC_ERR_GENERIC; return false; @@ -316,16 +378,16 @@ bool IpcUtil::SendReqToDriver(const char *ctrlr_name, char *domain_id, true, ctrlr_name, domain_id, req, resp); if (ok) { resp->header.result_code = DriverResultCodeToKtURC( - ctrlr_type, resp->header.result_code); + req->header.operation , resp->header.result_code); } return ok; } upll_rc_t IpcUtil::PhysicalResultCodeToKtURC(uint32_t result_code) { switch (result_code) { - case UPPL_RC_SUCCESS: + case UNC_RC_SUCCESS: return UPLL_RC_SUCCESS; - case UPPL_RC_ERR_NO_SUCH_INSTANCE: + case UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE: return UPLL_RC_ERR_NO_SUCH_INSTANCE; default: return UPLL_RC_ERR_GENERIC; @@ -357,15 +419,15 @@ bool IpcUtil::SendReqToServer(const char *channel_name, const char *ctrlr_name, char *domain_id, IpcRequest *req, IpcResponse *resp) { UPLL_FUNC_TRACE - if (channel_name == NULL || service_name == NULL || - req == NULL || resp == NULL) { - UPLL_LOG_DEBUG("NULL argument"); - if (resp != NULL) { - resp->header.result_code = UPLL_RC_ERR_GENERIC; - resp->return_code = 0; - } - return false; - } + if (channel_name == NULL || service_name == NULL || + req == NULL || resp == NULL) { + UPLL_LOG_DEBUG("NULL argument"); + if (resp != NULL) { + resp->header.result_code = UPLL_RC_ERR_GENERIC; + resp->return_code = 0; + } + return false; + } if (driver_msg == true && ctrlr_name == NULL) { UPLL_LOG_DEBUG("NULL controller argument"); if (resp != NULL) { @@ -395,7 +457,7 @@ bool IpcUtil::SendReqToServer(const char *channel_name, int err = pfc_ipcclnt_altopen(channel_name, &connid); if (err != 0) { UPLL_LOG_DEBUG("Failed to create IPC alternative connection to %s. Err=%d", - channel_name, err); + channel_name, err); resp->header.result_code = UPLL_RC_ERR_GENERIC; resp->return_code = PFC_IPCRESP_FATAL; return false; @@ -404,11 +466,11 @@ bool IpcUtil::SendReqToServer(const char *channel_name, pfc::core::ipc::ClientSession cl_sess(connid, service_name, service_id, err); if (err != 0) { UPLL_LOG_DEBUG("Failed to create IPC client session %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + channel_name, service_name, service_id, err); err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle if (err != 0) { UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + channel_name, service_name, service_id, err); } resp->header.result_code = UPLL_RC_ERR_GENERIC; resp->return_code = PFC_IPCRESP_FATAL; @@ -432,17 +494,26 @@ bool IpcUtil::SendReqToServer(const char *channel_name, UPLL_LOG_TRACE("IPC Client Session timeout for channel %s set to infinity" " for operation %d", channel_name, req->header.operation); + } else if (req->ckv_data->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER) { + pfc_timespec_t sess_timeout; + sess_timeout.tv_sec = kIpcTimeoutVtnstation; + sess_timeout.tv_nsec = 0; + cl_sess.setTimeout(&sess_timeout); + UPLL_LOG_TRACE("IPC Client Session timeout for channel %s set to %d secs" + " for operation %d on VTN_STATION_CONTROLLER", + channel_name, kIpcTimeoutVtnstation, req->header.operation); } + bool ret = WriteKtRequest(&cl_sess, driver_msg, ctrlr_name, domain_id, req->header, req->ckv_data); if (!ret) { UPLL_LOG_DEBUG("Failed to send IPC request to %s:%s:%d", - channel_name, service_name, service_id); + channel_name, service_name, service_id); err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle if (err != 0) { UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + channel_name, service_name, service_id, err); } resp->header.result_code = UPLL_RC_ERR_GENERIC; resp->return_code = PFC_IPCRESP_FATAL; @@ -458,24 +529,24 @@ bool IpcUtil::SendReqToServer(const char *channel_name, channel_name, service_name, service_id); resp->return_code = PFC_IPCRESP_FATAL; } else { - pfc_log_fatal("Failed to send IPC request to %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + UPLL_LOG_FATAL("Failed to send IPC request to %s:%s:%d. Err=%d", + channel_name, service_name, service_id, err); resp->return_code = PFC_IPCRESP_FATAL; } err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle if (err != 0) { UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + channel_name, service_name, service_id, err); } return false; } if (ipcresp != 0) { UPLL_LOG_DEBUG("Error at IPC server %s:%s:%d. ErrResp=%d", - channel_name, service_name, service_id, ipcresp); + channel_name, service_name, service_id, ipcresp); err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle if (err != 0) { UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + channel_name, service_name, service_id, err); } resp->header.result_code = UPLL_RC_ERR_GENERIC; resp->return_code = PFC_IPCRESP_FATAL; @@ -486,11 +557,11 @@ bool IpcUtil::SendReqToServer(const char *channel_name, &local_resp.header, &local_resp.ckv_data); if (!ret) { UPLL_LOG_DEBUG("Failed to read IPC response from %s:%s:%d", - channel_name, service_name, service_id); + channel_name, service_name, service_id); err = pfc_ipcclnt_altclose(connid); // Close the IPC connection handle if (err != 0) { UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + channel_name, service_name, service_id, err); } resp->header.result_code = UPLL_RC_ERR_GENERIC; resp->return_code = PFC_IPCRESP_FATAL; @@ -503,15 +574,14 @@ bool IpcUtil::SendReqToServer(const char *channel_name, resp->ckv_data = new ConfigKeyVal(local_resp.ckv_data->get_key_type()); } resp->ckv_data->ResetWith(local_resp.ckv_data); - if (local_resp.ckv_data) - delete local_resp.ckv_data; + delete local_resp.ckv_data; resp->return_code = 0; /* Close the IPC connection handle. */ err = pfc_ipcclnt_altclose(connid); if (err != 0) { UPLL_LOG_DEBUG("Failed to close the IPC connection %s:%s:%d. Err=%d", - channel_name, service_name, service_id, err); + channel_name, service_name, service_id, err); } UPLL_LOG_TRACE("dest=%s:%s:%d, controller_name=%s domain_id=%s\n" @@ -524,12 +594,12 @@ bool IpcUtil::SendReqToServer(const char *channel_name, } #define READ_PRIMARY_IPCTYPE( \ - ipc_sess, sess_read_api, index, data_type, data_var_ptr) \ + ipc_sess, sess_read_api, index, data_type, data_var_ptr) \ { \ ret = true; \ data_var_ptr = ConfigKeyVal::Malloc(sizeof(data_type)); \ int ipc_ret = ipc_sess->sess_read_api( \ - index, *(reinterpret_cast(data_var_ptr))); \ + index, *(reinterpret_cast(data_var_ptr))); \ if (ipc_ret != 0) { \ UPLL_LOG_DEBUG("Failed to read argument in the IPC request, Err=%d", \ ipc_ret); \ @@ -538,23 +608,23 @@ bool IpcUtil::SendReqToServer(const char *channel_name, } #define READ_PRIMARY_IPCTYPE_FROM_SERVER( \ - ipc_srv_sess, index, data_type, data_var_ptr) { \ + ipc_srv_sess, index, data_type, data_var_ptr) { \ READ_PRIMARY_IPCTYPE(ipc_srv_sess, getArgument, \ index, data_type, data_var_ptr) \ } #define READ_PRIMARY_IPCTYPE_FROM_CLIENT( \ - ipc_clnt_sess, index, data_type, data_var_ptr) { \ + ipc_clnt_sess, index, data_type, data_var_ptr) { \ READ_PRIMARY_IPCTYPE(ipc_clnt_sess, getResponse, \ index, data_type, data_var_ptr) \ } #define WRITE_PRIMARY_IPCTYPE( \ - ipc_sess, sess_write_api, data_type, data_var_ptr) \ + ipc_sess, sess_write_api, data_type, data_var_ptr) \ { \ ret = true; \ int ipc_ret = ipc_sess->sess_write_api( \ - *((data_type*)(data_var_ptr))); /* NOLINT */ \ + *((data_type*)(data_var_ptr))); /* NOLINT */ \ if (ipc_ret != 0) { \ UPLL_LOG_DEBUG("Failed to read argument in the IPC request, Err=%d", \ ipc_ret); \ @@ -565,162 +635,164 @@ bool IpcUtil::SendReqToServer(const char *channel_name, bool IpcUtil::ReadIpcArg(pfc::core::ipc::ServerSession *sess, uint32_t index, IpctSt::IpcStructNum *st_num, void **ipc_struct) { - pfc_ipctype_t arg_type; - if (0 != sess->getArgType(index, arg_type)) { - UPLL_LOG_DEBUG("Failed to get arg type in the IPC request"); - return false; - } + pfc_ipctype_t arg_type; + if (0 != sess->getArgType(index, arg_type)) { + UPLL_LOG_DEBUG("Failed to get arg type in the IPC request"); + return false; + } - bool ret; + bool ret; - switch (arg_type) { - case PFC_IPCTYPE_INT8: - *st_num = IpctSt::kIpcStInt8; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int8_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT8: - *st_num = IpctSt::kIpcStUint8; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint8_t, *ipc_struct); - break; - case PFC_IPCTYPE_INT16: - *st_num = IpctSt::kIpcStInt16; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int16_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT16: - *st_num = IpctSt::kIpcStUint16; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint16_t, *ipc_struct); - break; - case PFC_IPCTYPE_INT32: - *st_num = IpctSt::kIpcStInt32; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int32_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT32: - *st_num = IpctSt::kIpcStUint32; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint32_t, *ipc_struct); - break; - case PFC_IPCTYPE_INT64: - *st_num = IpctSt::kIpcStInt64; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int64_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT64: - *st_num = IpctSt::kIpcStUint64; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint64_t, *ipc_struct); - break; - case PFC_IPCTYPE_FLOAT: - *st_num = IpctSt::kIpcStFloat; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, float, *ipc_struct); - break; - case PFC_IPCTYPE_DOUBLE: - *st_num = IpctSt::kIpcStDouble; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, double, *ipc_struct); - break; - case PFC_IPCTYPE_IPV4: - *st_num = IpctSt::kIpcStIpv4; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, struct in_addr, - *ipc_struct); - break; - case PFC_IPCTYPE_IPV6: - *st_num = IpctSt::kIpcStIpv6; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, struct in6_addr, + switch (arg_type) { + case PFC_IPCTYPE_INT8: + *st_num = IpctSt::kIpcStInt8; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int8_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT8: + *st_num = IpctSt::kIpcStUint8; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint8_t, *ipc_struct); + break; + case PFC_IPCTYPE_INT16: + *st_num = IpctSt::kIpcStInt16; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int16_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT16: + *st_num = IpctSt::kIpcStUint16; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint16_t, *ipc_struct); + break; + case PFC_IPCTYPE_INT32: + *st_num = IpctSt::kIpcStInt32; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int32_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT32: + *st_num = IpctSt::kIpcStUint32; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint32_t, *ipc_struct); + break; + case PFC_IPCTYPE_INT64: + *st_num = IpctSt::kIpcStInt64; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, int64_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT64: + *st_num = IpctSt::kIpcStUint64; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, uint64_t, *ipc_struct); + break; + case PFC_IPCTYPE_FLOAT: + *st_num = IpctSt::kIpcStFloat; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, float, *ipc_struct); + break; + case PFC_IPCTYPE_DOUBLE: + *st_num = IpctSt::kIpcStDouble; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, double, *ipc_struct); + break; + case PFC_IPCTYPE_IPV4: + *st_num = IpctSt::kIpcStIpv4; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, struct in_addr, + *ipc_struct); + break; + case PFC_IPCTYPE_IPV6: + *st_num = IpctSt::kIpcStIpv6; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, struct in6_addr, + *ipc_struct); + break; + case PFC_IPCTYPE_STRING: + { + *st_num = IpctSt::kIpcStString; + READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, const char *, *ipc_struct); - break; - case PFC_IPCTYPE_STRING: - { - *st_num = IpctSt::kIpcStString; - READ_PRIMARY_IPCTYPE_FROM_SERVER(sess, index, const char *, - *ipc_struct); - char *str = strdup(*(reinterpret_cast(*ipc_struct))); - *ipc_struct = str; - } - break; - case PFC_IPCTYPE_STRUCT: - ret = ReadIpcStruct(sess, index, st_num, ipc_struct); - break; - case PFC_IPCTYPE_BINARY: // NOT USED - default: - ret = false; - } - return ret; + char *str = strdup(*(reinterpret_cast(*ipc_struct))); + ConfigKeyVal::Free(*ipc_struct); + *ipc_struct = str; + } + break; + case PFC_IPCTYPE_STRUCT: + ret = ReadIpcStruct(sess, index, st_num, ipc_struct); + break; + case PFC_IPCTYPE_BINARY: // NOT USED + default: + ret = false; + } + return ret; } bool IpcUtil::ReadIpcArg(pfc::core::ipc::ClientSession *sess, uint32_t index, IpctSt::IpcStructNum *st_num, void **ipc_struct) { - pfc_ipctype_t arg_type; - if (0 != sess->getResponseType(index, arg_type)) { - UPLL_LOG_DEBUG("Failed to get arg type in the IPC request"); - return false; - } + pfc_ipctype_t arg_type; + if (0 != sess->getResponseType(index, arg_type)) { + UPLL_LOG_DEBUG("Failed to get arg type in the IPC request"); + return false; + } - bool ret; + bool ret; - switch (arg_type) { - case PFC_IPCTYPE_INT8: - *st_num = IpctSt::kIpcStInt8; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int8_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT8: - *st_num = IpctSt::kIpcStUint8; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint8_t, *ipc_struct); - break; - case PFC_IPCTYPE_INT16: - *st_num = IpctSt::kIpcStInt16; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int16_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT16: - *st_num = IpctSt::kIpcStUint16; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint16_t, *ipc_struct); - break; - case PFC_IPCTYPE_INT32: - *st_num = IpctSt::kIpcStInt32; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int32_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT32: - *st_num = IpctSt::kIpcStUint32; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint32_t, *ipc_struct); - break; - case PFC_IPCTYPE_INT64: - *st_num = IpctSt::kIpcStInt64; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int64_t, *ipc_struct); - break; - case PFC_IPCTYPE_UINT64: - *st_num = IpctSt::kIpcStUint64; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint64_t, *ipc_struct); - break; - case PFC_IPCTYPE_FLOAT: - *st_num = IpctSt::kIpcStFloat; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, float, *ipc_struct); - break; - case PFC_IPCTYPE_DOUBLE: - *st_num = IpctSt::kIpcStDouble; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, double, *ipc_struct); - break; - case PFC_IPCTYPE_IPV4: - *st_num = IpctSt::kIpcStIpv4; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, struct in_addr, - *ipc_struct); - break; - case PFC_IPCTYPE_IPV6: - *st_num = IpctSt::kIpcStIpv6; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, struct in6_addr, + switch (arg_type) { + case PFC_IPCTYPE_INT8: + *st_num = IpctSt::kIpcStInt8; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int8_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT8: + *st_num = IpctSt::kIpcStUint8; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint8_t, *ipc_struct); + break; + case PFC_IPCTYPE_INT16: + *st_num = IpctSt::kIpcStInt16; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int16_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT16: + *st_num = IpctSt::kIpcStUint16; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint16_t, *ipc_struct); + break; + case PFC_IPCTYPE_INT32: + *st_num = IpctSt::kIpcStInt32; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int32_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT32: + *st_num = IpctSt::kIpcStUint32; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint32_t, *ipc_struct); + break; + case PFC_IPCTYPE_INT64: + *st_num = IpctSt::kIpcStInt64; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, int64_t, *ipc_struct); + break; + case PFC_IPCTYPE_UINT64: + *st_num = IpctSt::kIpcStUint64; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, uint64_t, *ipc_struct); + break; + case PFC_IPCTYPE_FLOAT: + *st_num = IpctSt::kIpcStFloat; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, float, *ipc_struct); + break; + case PFC_IPCTYPE_DOUBLE: + *st_num = IpctSt::kIpcStDouble; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, double, *ipc_struct); + break; + case PFC_IPCTYPE_IPV4: + *st_num = IpctSt::kIpcStIpv4; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, struct in_addr, + *ipc_struct); + break; + case PFC_IPCTYPE_IPV6: + *st_num = IpctSt::kIpcStIpv6; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, struct in6_addr, + *ipc_struct); + break; + case PFC_IPCTYPE_STRING: + { + *st_num = IpctSt::kIpcStString; + READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, const char *, *ipc_struct); - break; - case PFC_IPCTYPE_STRING: - { - *st_num = IpctSt::kIpcStString; - READ_PRIMARY_IPCTYPE_FROM_CLIENT(sess, index, const char *, - *ipc_struct); - char *str = strdup(*(reinterpret_cast(*ipc_struct))); - *ipc_struct = str; - } - break; - case PFC_IPCTYPE_STRUCT: - ret = ReadIpcStruct(sess, index, st_num, ipc_struct); - break; - case PFC_IPCTYPE_BINARY: // NOT USED - default: - ret = false; - } - return ret; + char *str = strdup(*(reinterpret_cast(*ipc_struct))); + ConfigKeyVal::Free(*ipc_struct); + *ipc_struct = str; + } + break; + case PFC_IPCTYPE_STRUCT: + ret = ReadIpcStruct(sess, index, st_num, ipc_struct); + break; + case PFC_IPCTYPE_BINARY: // NOT USED + default: + ret = false; + } + return ret; } bool IpcUtil::ReadIpcStruct(pfc::core::ipc::ServerSession *sess, @@ -735,7 +807,7 @@ bool IpcUtil::ReadIpcStruct(pfc::core::ipc::ServerSession *sess, const pfc_ipcstdef_t *st_def = IpctSt::GetIpcStdef(st_name.c_str()); if (st_def == NULL) { UPLL_LOG_DEBUG("Unknown structure %s in the ipc message", - st_name.c_str()); + st_name.c_str()); return false; } *st_num = IpctSt::GetIpcStNum(st_name.c_str()); @@ -763,7 +835,7 @@ bool IpcUtil::ReadIpcStruct(pfc::core::ipc::ClientSession *sess, const pfc_ipcstdef_t *st_def = IpctSt::GetIpcStdef(st_name.c_str()); if (st_def == NULL) { UPLL_LOG_DEBUG("Unknown structure %s in the ipc message", - st_name.c_str()); + st_name.c_str()); return false; } *st_num = IpctSt::GetIpcStNum(st_name.c_str()); @@ -823,7 +895,7 @@ bool IpcUtil::WriteIpcArg(pfc::core::ipc::ServerSession *sess, /* With -03 the following line gives compilation error. * So macro isn't used. * WRITE_PRIMARY_IPCTYPE(sess, addOutput, const char *, &ipc_struct); - */ + */ { ret = true; int ipc_ret = sess->addOutput( @@ -887,7 +959,7 @@ bool IpcUtil::WriteIpcArg(pfc::core::ipc::ClientSession *sess, /* With -03 the following line gives compilation error. * So macro isn't used. * WRITE_PRIMARY_IPCTYPE(sess, addOutput, const char *, &ipc_struct); - */ + */ { ret = true; int ipc_ret = sess->addOutput( @@ -964,7 +1036,7 @@ bool IpcUtil::ReadKtRequest(pfc::core::ipc::ServerSession *sess, uint32_t arg_cnt = sess->getArgCount(); if (arg_cnt < unc::upll::ipc_util::kKeyTreeReqMandatoryFields) { UPLL_LOG_DEBUG("Not enough arguments in key tree request. Has only %u.", - arg_cnt); + arg_cnt); return false; } @@ -1014,14 +1086,14 @@ bool IpcUtil::ReadKtRequest(pfc::core::ipc::ServerSession *sess, // new key type is expected. if (0 != sess->getArgument(arg++, keytype)) { UPLL_LOG_DEBUG("Failed to get key type at %u in the key tree request", - arg); + arg); delete *first_ckv; *first_ckv = NULL; return false; } if (!IpcUtil::ReadIpcStruct(sess, arg++, &st_num, &ipc_st)) { UPLL_LOG_DEBUG("Failed to get structure at %u in the key tree request", - arg); + arg); delete *first_ckv; *first_ckv = NULL; return false; @@ -1033,7 +1105,7 @@ bool IpcUtil::ReadKtRequest(pfc::core::ipc::ServerSession *sess, } else { if (!IpcUtil::ReadIpcArg(sess, arg++, &st_num, &ipc_st)) { UPLL_LOG_DEBUG("Failed to get structure at %u in the key tree request", - arg); + arg); delete *first_ckv; *first_ckv = NULL; return false; @@ -1046,8 +1118,8 @@ bool IpcUtil::ReadKtRequest(pfc::core::ipc::ServerSession *sess, /* Send response to UPLL user */ bool IpcUtil::WriteKtResponse(pfc::core::ipc::ServerSession *sess, - const IpcReqRespHeader &msg_hdr, - const ConfigKeyVal *first_ckv) { + const IpcReqRespHeader &msg_hdr, + const ConfigKeyVal *first_ckv) { if (sess == NULL) { UPLL_LOG_DEBUG("Null argument"); return false; @@ -1106,7 +1178,7 @@ bool IpcUtil::WriteKtResponse(pfc::core::ipc::ServerSession *sess, } /* Write KT request to Server */ - // ctrlr_name: Non-null if sent to driver +// ctrlr_name: Non-null if sent to driver bool IpcUtil::WriteKtRequest(pfc::core::ipc::ClientSession *sess, bool driver_msg, const char *ctrlr_name, const char *domain_id, @@ -1260,7 +1332,7 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, if (arg_cnt < mandatory_fields) { UPLL_LOG_DEBUG("Not enough arguments in key tree response." " Has only %u, expected %d", - arg_cnt, mandatory_fields); + arg_cnt, mandatory_fields); return false; } @@ -1278,14 +1350,14 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, if ((0 != (err = sess->getResponse(arg++, msg_hdr->clnt_sess_id))) || (0 != (err = sess->getResponse(arg++, msg_hdr->config_id)))) { UPLL_LOG_DEBUG("Failed to get header field #%u in the key tree response." - " Err=%d", arg, err); + " Err=%d", arg, err); return false; } if (driver_msg == true) { if ((0 != (err = sess->getResponse(arg++, msg_ctrlr_name))) || (0 != (err = sess->getResponse(arg++, msg_domain_id)))) { UPLL_LOG_DEBUG("Failed to get header field #%u in the key tree response." - " Err=%d", arg, err); + " Err=%d", arg, err); return false; } if (domain_id != NULL) { @@ -1300,7 +1372,7 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, (0 != (err = sess->getResponse(arg++, result_code))) || (0 != (err = sess->getResponse(arg++, keytype))) ) { UPLL_LOG_DEBUG("Failed to get header field #%u in the key tree response." - " Err=%d", arg, err); + " Err=%d", arg, err); return false; } msg_hdr->operation = (unc_keytype_operation_t)operation; @@ -1313,7 +1385,7 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, void *ipc_st; if (!IpcUtil::ReadIpcStruct(sess, arg++, &st_num, &ipc_st)) { UPLL_LOG_DEBUG("Failed to get structure at %u in the key tree response", - arg); + arg); return false; } *first_ckv = new ConfigKeyVal((unc_key_type_t)keytype, st_num, ipc_st, NULL); @@ -1325,7 +1397,7 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, pfc_ipctype_t arg_type; if (0 != (err = sess->getResponseType(arg, arg_type))) { UPLL_LOG_DEBUG("Failed to get arg type at %u in the key tree response." - " Err=%d", arg, err); + " Err=%d", arg, err); delete *first_ckv; *first_ckv = NULL; return false; @@ -1342,7 +1414,7 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, // new key type is expected. if (0 != (err = sess->getResponse(arg++, keytype))) { UPLL_LOG_DEBUG("Failed to get key type at %u in the key tree response." - " Err=%d", arg, err); + " Err=%d", arg, err); DumpResponse(sess); delete *first_ckv; *first_ckv = NULL; @@ -1350,7 +1422,7 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, } if (!IpcUtil::ReadIpcStruct(sess, arg++, &st_num, &ipc_st)) { UPLL_LOG_DEBUG("Failed to get structure at %u in the key tree response", - arg); + arg); delete *first_ckv; *first_ckv = NULL; return false; @@ -1363,7 +1435,7 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, } else { if (!IpcUtil::ReadIpcArg(sess, arg++, &st_num, &ipc_st)) { UPLL_LOG_DEBUG("Failed to get structure at %u in the key tree response", - arg); + arg); delete *first_ckv; *first_ckv = NULL; return false; @@ -1383,27 +1455,27 @@ bool IpcUtil::ReadKtResponse(pfc::core::ipc::ClientSession *sess, std::string IpcUtil::IpcRequestToStr(const IpcReqRespHeader &msghdr) { std::stringstream ss; ss << "-------------IpcRequest--------------" << std::endl - << " clnt_sess_id: " << msghdr.clnt_sess_id << std::endl - << " config_id: " << msghdr.config_id << std::endl - << " operation: " << msghdr.operation << std::endl - << " max_rep_count: " << msghdr.rep_count << std::endl - << " option1: " << msghdr.option1 << std::endl - << " option2: " << msghdr.option2 << std::endl - << " datatype: " << msghdr.datatype; + << " clnt_sess_id: " << msghdr.clnt_sess_id << std::endl + << " config_id: " << msghdr.config_id << std::endl + << " operation: " << msghdr.operation << std::endl + << " max_rep_count: " << msghdr.rep_count << std::endl + << " option1: " << msghdr.option1 << std::endl + << " option2: " << msghdr.option2 << std::endl + << " datatype: " << msghdr.datatype; return ss.str(); } std::string IpcUtil::IpcResponseToStr(const IpcReqRespHeader &msghdr) { std::stringstream ss; ss << "-------------IpcResponse--------------" << std::endl - << " clnt_sess_id: " << msghdr.clnt_sess_id << std::endl - << " config_id: " << msghdr.config_id << std::endl - << " operation: " << msghdr.operation << std::endl - << " rep_count: " << msghdr.rep_count << std::endl - << " option1: " << msghdr.option1 << std::endl - << " option2: " << msghdr.option2 << std::endl - << " datatype: " << msghdr.datatype << std::endl - << " result_code: " << msghdr.result_code; + << " clnt_sess_id: " << msghdr.clnt_sess_id << std::endl + << " config_id: " << msghdr.config_id << std::endl + << " operation: " << msghdr.operation << std::endl + << " rep_count: " << msghdr.rep_count << std::endl + << " option1: " << msghdr.option1 << std::endl + << " option2: " << msghdr.option2 << std::endl + << " datatype: " << msghdr.datatype << std::endl + << " result_code: " << msghdr.result_code; return ss.str(); } @@ -1473,8 +1545,9 @@ bool ConfigNotifier::SendBufferedNotificationsToUpllUser() { // Send out buffered notifications ConfigNotification *cn; std::list::iterator it = buffered_notifs.begin(); - for (cn = *it; (it != buffered_notifs.end()); - it++, (delete cn), (cn = *it)) { + for (; (it != buffered_notifs.end()); + it++, (delete cn)) { + cn = *it; if (IpcUtil::IsShuttingDown()) { UPLL_LOG_WARN("Cannot send config nofitications as shutdown in progress"); break; @@ -1483,7 +1556,7 @@ bool ConfigNotifier::SendBufferedNotificationsToUpllUser() { pfc::core::ipc::ServerEvent event(UPLL_EV_CONFIG_NOTIFICATION, err); if (err != 0) { UPLL_LOG_DEBUG("Failed to create configuration notification event." - " Err:%d", err); + " Err:%d", err); continue; } @@ -1491,9 +1564,9 @@ bool ConfigNotifier::SendBufferedNotificationsToUpllUser() { if ((0 != (err = event.addOutput((uint32_t)cn->get_operation()))) || (0 != (err = event.addOutput((uint32_t)cn->get_datatype()))) || (0 != (err = event.addOutput((uint32_t)cn->get_ckv()->get_key_type()))) - ) { + ) { UPLL_LOG_DEBUG("Failed to add output to configuration notification." - " Err=%d", err); + " Err=%d", err); continue; } @@ -1521,7 +1594,7 @@ bool ConfigNotifier::SendBufferedNotificationsToUpllUser() { err = event.post(); if (err != 0) { UPLL_LOG_DEBUG("Failed to post configuration notification event." - " Err=%d", err); + " Err=%d", err); continue; } } diff --git a/coordinator/modules/upll/ipc_util.hh b/coordinator/modules/upll/ipc_util.hh index d7be3d32..6fdcaab4 100644 --- a/coordinator/modules/upll/ipc_util.hh +++ b/coordinator/modules/upll/ipc_util.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -27,10 +27,16 @@ #include "./keytype_upll_ext.h" #include "ipct_st.hh" #include "uncxx/upll_log.hh" + +#include "upll_validation.hh" + namespace unc { namespace upll { + static const uint32_t kIpcTimeoutPing = 330; static const uint32_t kIpcTimeoutImport = 300; +static const uint32_t kIpcTimeoutDataflow = 3600; +static const uint32_t kIpcTimeoutVtnstation = 300; namespace ipc_util { @@ -43,6 +49,12 @@ static const uint32_t kKeyTreeDriverRespMandatoryFields = 12; static const uint32_t kPhyConfigNotificationMandatoryFields = 4; static const uint32_t kPfcDrvierAlarmMandatoryFields = 7; +typedef struct key_user_data { + uint8_t ctrlr_id[unc::upll::kt_momgr::kMaxLenCtrlrId+1]; + uint8_t domain_id[unc::upll::kt_momgr::kMaxLenDomainId+1]; + uint8_t flags; +} key_user_data_t; + // NOTE: ConfigVal assumes the pointers passed in to this class are allocated // with Malloc() function and calls free() for freeing the memory. // ConfigVal does not make duplicate memory for the pointers passed. @@ -176,7 +188,7 @@ class ConfigKeyVal { inline ConfigKeyVal *get_next_cfg_key_val() const { return next_ckv_; } void AppendCfgKeyVal(unc_key_type_t kt, IpctSt::IpcStructNum st_num, - void *key, ConfigVal *cv = NULL) { + void *key, ConfigVal *cv = NULL) { AppendCfgKeyVal(new ConfigKeyVal(kt, st_num, key, cv)); } void AppendCfgKeyVal(ConfigKeyVal *cfg_kv); @@ -265,8 +277,8 @@ class ConfigNotification { public: // {New and old(optional) values can be given in keyval} ConfigNotification(unc_keytype_operation_t operation, - unc_keytype_datatype_t datatype, - ConfigKeyVal *ckv_data) { + unc_keytype_datatype_t datatype, + ConfigKeyVal *ckv_data) { operation_ = operation; datatype_ = datatype; ckv_ = ckv_data; @@ -317,7 +329,7 @@ class IpcUtil { static upll_rc_t GetCtrlrTypeFromPhy(const char *ctrlr_name, upll_keytype_datatype_t dt, unc_keytype_ctrtype_t *ctrlr_type); - static upll_rc_t DriverResultCodeToKtURC(unc_keytype_ctrtype_t ctrlr_type, + static upll_rc_t DriverResultCodeToKtURC(unc_keytype_operation_t operation, uint32_t driver_result_code); static bool SendReqToDriver(const char *ctrlr_name, char *domain_id, const char *service_name, pfc_ipcid_t service_id, diff --git a/coordinator/modules/upll/ipct_st.cc b/coordinator/modules/upll/ipct_st.cc index f6e9df95..64045eb5 100644 --- a/coordinator/modules/upll/ipct_st.cc +++ b/coordinator/modules/upll/ipct_st.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -140,14 +140,17 @@ const char *IpctSt::kIpcStrStKeyVbrPolicingmapEntry = "key_vbr_policingmap_entry"; const char *IpctSt::kIpcStrStKeyVbrifPolicingmapEntry = "key_vbrif_policingmap_entry"; - // Add Driver structures below +// Add Driver structures below const char *IpctSt::kIpcStrStPfcdrvValVbrIf = "pfcdrv_val_vbr_if"; const char *IpctSt::kIpcStrStPfcdrvValVbrifVextif = "pfcdrv_val_vbrif_vextif"; const char *IpctSt::kIpcStrStPfcdrvValFlowfilterEntry = "pfcdrv_val_flowfilter_entry"; const char *IpctSt::kIpcStrStPfcdrvValVbrifPolicingmap = "pfcdrv_val_vbrif_policingmap"; - // Add Physical structures below +/* VlanmapOnBoundary: Added new val struct */ +const char *IpctSt::kIpcStrStPfcdrvValVlanMap = + "pfcdrv_val_vlan_map"; +// Add Physical structures below const char *IpctSt::kIpcStrStKeyCtr = "key_ctr"; const char *IpctSt::kIpcStrStValCtr = "val_ctr"; const char *IpctSt::kIpcStrStValCtrSt = "val_ctr_st"; @@ -159,9 +162,11 @@ const char *IpctSt::kIpcStrStKeyBoundary = "key_boundary"; const char *IpctSt::kIpcStrStValBoundary = "val_boundary"; const char *IpctSt::kIpcStrStValBoundarySt = "val_boundary_st"; const char *IpctSt::kIpcStrStValPathFaultAlarm = "val_path_fault_alarm"; - // Add Overlay Driver structures below +// Add Overlay Driver structures below const char *IpctSt::kIpcStrStVnpdrvValVtunnel = "vnpdrv_val_vtunnel"; const char *IpctSt::kIpcStrStVnpdrvValVtunnelIf ="vnpdrv_val_vtunnel_if"; +// Add vtn dataflow structure below +const char *IpctSt::kIpcStrStKeyVtnDataflow ="key_vtn_dataflow"; std::map IpctSt::ipc_stdef_smap_; std::map IpctSt::ipc_stdef_nmap_; @@ -508,6 +513,10 @@ void IpctSt::RegisterAll() { REGISTER_STDEF(pfcdrv_val_vbrif_policingmap, kIpcStrStPfcdrvValVbrifPolicingmap, kIpcStPfcdrvValVbrifPolicingmap); + /* VlanmapOnBoundary: Added new val struct */ + REGISTER_STDEF(pfcdrv_val_vlan_map, + kIpcStrStPfcdrvValVlanMap, + kIpcStPfcdrvValVlanMap); // Add Physical structures below REGISTER_STDEF(key_ctr, kIpcStrStKeyCtr, @@ -546,6 +555,9 @@ void IpctSt::RegisterAll() { REGISTER_STDEF(vnpdrv_val_vtunnel_if, kIpcStrStVnpdrvValVtunnelIf, kIpcStVnpdrvValVtunnelIf); + REGISTER_STDEF(key_vtn_dataflow, + kIpcStrStKeyVtnDataflow, + kIpcStKeyVtnDataflow); } } // namespace ipc_util diff --git a/coordinator/modules/upll/ipct_st.hh b/coordinator/modules/upll/ipct_st.hh index 3713e9e6..72f081a7 100644 --- a/coordinator/modules/upll/ipct_st.hh +++ b/coordinator/modules/upll/ipct_st.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -138,12 +138,15 @@ class IpctSt { static const char *kIpcStrStValPolicingmapController; static const char *kIpcStrStKeyVbrPolicingmapEntry; static const char *kIpcStrStKeyVbrifPolicingmapEntry; + static const char *kIpcStrStKeyVtnDataflow; // Driver structures static const char *kIpcStrStPfcdrvValVbrIf; static const char *kIpcStrStPfcdrvValVbrifVextif; static const char *kIpcStrStPfcdrvValFlowfilterEntry; static const char *kIpcStrStPfcdrvValVbrifPolicingmap; - // Physical strucures + /* VlanmapOnBoundary: New val struct */ + static const char *kIpcStrStPfcdrvValVlanMap; + // Physical strucures static const char *kIpcStrStKeyCtr; static const char *kIpcStrStValCtr; static const char *kIpcStrStValCtrSt; @@ -288,6 +291,8 @@ class IpctSt { kIpcStPfcdrvValVbrifVextif, kIpcStPfcdrvValFlowfilterEntry, kIpcStPfcdrvValVbrifPolicingmap, + /* VlanmapOnBoundary: New val struct */ + kIpcStPfcdrvValVlanMap, // Physical structures kIpcStKeyCtr, kIpcStValCtr, @@ -302,29 +307,35 @@ class IpctSt { kIpcStValPathFaultAlarm, // Overlay Driver structures kIpcStVnpdrvValVtunnel, - kIpcStVnpdrvValVtunnelIf + kIpcStVnpdrvValVtunnelIf, + // Vtn DataFlow Structures + kIpcStKeyVtnDataflow }; // enum IpcStructNum static uint32_t Register(const char *stname, IpcStructNum stnum); static void RegisterAll(); static IpcStructNum GetIpcStNum(const char *stname) { - std::string str = stname; - if (ipc_strname_to_stnum_map_.count(str)) - return ipc_strname_to_stnum_map_[str]; + std::map::iterator it = + ipc_strname_to_stnum_map_.find(stname); + if (it != ipc_strname_to_stnum_map_.end()) + return it->second; else return kIpcInvalidStNum; } static const pfc_ipcstdef_t *GetIpcStdef(const char *stname) { - std::string str = stname; - if (ipc_stdef_smap_.count(str)) - return ipc_stdef_smap_[str]; + std::map::iterator it = + ipc_stdef_smap_.find(stname); + if (it != ipc_stdef_smap_.end()) + return it->second; else return NULL; } static const pfc_ipcstdef_t *GetIpcStdef(IpcStructNum st_num) { - if (ipc_stdef_nmap_.count(st_num)) - return ipc_stdef_nmap_[st_num]; + std::map::iterator it = + ipc_stdef_nmap_.find(st_num); + if (it != ipc_stdef_nmap_.end()) + return it->second; else return NULL; } diff --git a/coordinator/modules/upll/iproute_momgr.cc b/coordinator/modules/upll/iproute_momgr.cc index 95a33c49..e7fa43c0 100644 --- a/coordinator/modules/upll/iproute_momgr.cc +++ b/coordinator/modules/upll/iproute_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -17,76 +17,76 @@ namespace unc { namespace upll { namespace kt_momgr { - uint16_t IpRouteMoMgr::kIpRouteNumChildKey = 4; +uint16_t IpRouteMoMgr::kIpRouteNumChildKey = 4; BindInfo IpRouteMoMgr::ip_route_bind_info[] = { - { uudst::static_ip_route::kDbiVtnName, CFG_KEY, offsetof( - key_static_ip_route, vrt_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::static_ip_route::kDbiVrouterName, CFG_KEY, offsetof( - key_static_ip_route, vrt_key.vrouter_name), - uud::kDalChar, 32 }, - { uudst::static_ip_route::kDbiDstIpAddr, CFG_KEY, offsetof( - key_static_ip_route, dst_addr.s_addr), - uud::kDalUint32, 1 }, - { uudst::static_ip_route::kDbiMask, CFG_KEY, offsetof(key_static_ip_route, - dst_addr_prefixlen), - uud::kDalUint8, 1 }, - { uudst::static_ip_route::kDbiNextHopAddr, CFG_KEY, offsetof( - key_static_ip_route, next_hop_addr.s_addr), - uud::kDalUint32, 1 }, - { uudst::static_ip_route::kDbiNwmName, CFG_KEY, offsetof( - key_static_ip_route, nwm_name), - uud::kDalChar, 32 }, - { uudst::static_ip_route::kDbiMetric, CFG_VAL, offsetof(val_static_ip_route, - group_metric), - uud::kDalUint16, 1 }, - { uudst::static_ip_route::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::static_ip_route::kDbiDomainId, CK_VAL, offsetof(key_user_data, - domain_id), - uud::kDalChar, 32 }, - { uudst::static_ip_route::kDbiValidMetric, CFG_META_VAL, offsetof( - val_static_ip_route, valid[UPLL_IDX_GROUP_METRIC_SIR]), - uud::kDalUint8, 1 }, - { uudst::static_ip_route::kDbiCsMetric, CS_VAL, offsetof( - val_static_ip_route, cs_attr[UPLL_IDX_GROUP_METRIC_SIR]), - uud::kDalUint8, 1 }, - { uudst::static_ip_route::kDbiCsRowstatus, CS_VAL, offsetof( - val_static_ip_route, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::static_ip_route::kDbiFlags, CK_VAL, offsetof(key_user_data, flags), - uud::kDalUint8, 1 }, }; + { uudst::static_ip_route::kDbiVtnName, CFG_KEY, offsetof( + key_static_ip_route, vrt_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::static_ip_route::kDbiVrouterName, CFG_KEY, offsetof( + key_static_ip_route, vrt_key.vrouter_name), + uud::kDalChar, 32 }, + { uudst::static_ip_route::kDbiDstIpAddr, CFG_KEY, offsetof( + key_static_ip_route, dst_addr.s_addr), + uud::kDalUint32, 1 }, + { uudst::static_ip_route::kDbiMask, CFG_KEY, offsetof(key_static_ip_route, + dst_addr_prefixlen), + uud::kDalUint8, 1 }, + { uudst::static_ip_route::kDbiNextHopAddr, CFG_KEY, offsetof( + key_static_ip_route, next_hop_addr.s_addr), + uud::kDalUint32, 1 }, + { uudst::static_ip_route::kDbiNwmName, CFG_KEY, offsetof( + key_static_ip_route, nwm_name), + uud::kDalChar, 32 }, + { uudst::static_ip_route::kDbiMetric, CFG_VAL, offsetof(val_static_ip_route, + group_metric), + uud::kDalUint16, 1 }, + { uudst::static_ip_route::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::static_ip_route::kDbiDomainId, CK_VAL, offsetof(key_user_data, + domain_id), + uud::kDalChar, 32 }, + { uudst::static_ip_route::kDbiValidMetric, CFG_META_VAL, offsetof( + val_static_ip_route, valid[UPLL_IDX_GROUP_METRIC_SIR]), + uud::kDalUint8, 1 }, + { uudst::static_ip_route::kDbiCsMetric, CS_VAL, offsetof( + val_static_ip_route, cs_attr[UPLL_IDX_GROUP_METRIC_SIR]), + uud::kDalUint8, 1 }, + { uudst::static_ip_route::kDbiCsRowstatus, CS_VAL, offsetof( + val_static_ip_route, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::static_ip_route::kDbiFlags, CK_VAL, offsetof(key_user_data, flags), + uud::kDalUint8, 1 }, }; BindInfo IpRouteMoMgr::key_ip_route_maintbl_update_bind_info[] = { - { uudst::static_ip_route::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_static_ip_route_t, vrt_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::static_ip_route::kDbiVrouterName, CFG_MATCH_KEY, offsetof( - key_static_ip_route_t, vrt_key.vrouter_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::static_ip_route::kDbiNwmName, CFG_MATCH_KEY, offsetof( - key_static_ip_route, nwm_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::static_ip_route::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::static_ip_route::kDbiVrouterName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::static_ip_route::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } }; + { uudst::static_ip_route::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_static_ip_route_t, vrt_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::static_ip_route::kDbiVrouterName, CFG_MATCH_KEY, offsetof( + key_static_ip_route_t, vrt_key.vrouter_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::static_ip_route::kDbiNwmName, CFG_MATCH_KEY, offsetof( + key_static_ip_route, nwm_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::static_ip_route::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::static_ip_route::kDbiVrouterName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::static_ip_route::kDbiFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 } }; IpRouteMoMgr::IpRouteMoMgr() { UPLL_FUNC_TRACE - ntable = MAX_MOMGR_TBLS; + ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiStaticIpRouteTbl, UNC_KT_VRT_IPROUTE, - ip_route_bind_info, IpctSt::kIpcStKeyStaticIpRoute, - IpctSt::kIpcStValStaticIpRoute, - uudst::static_ip_route::kDbiStaticIpRouteNumCols); + ip_route_bind_info, IpctSt::kIpcStKeyStaticIpRoute, + IpctSt::kIpcStValStaticIpRoute, + uudst::static_ip_route::kDbiStaticIpRouteNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; nchild = 0; @@ -116,7 +116,7 @@ upll_rc_t IpRouteMoMgr::ValidateAttribute(ConfigKeyVal *ikey, UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (ikey->get_key_type() != UNC_KT_VRT_IPROUTE) result_code = - UPLL_RC_ERR_CFG_SYNTAX; + UPLL_RC_ERR_CFG_SYNTAX; return result_code; } @@ -177,7 +177,7 @@ bool IpRouteMoMgr::IsValidKey(void *key, uint64_t index) { } break; default: -// UPLL_LOG_TRACE("Invalid Key Index %d", index); + // UPLL_LOG_TRACE("Invalid Key Index %d", index); break; } return true; @@ -241,8 +241,9 @@ upll_rc_t IpRouteMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, if (strlen(reinterpret_cast (reinterpret_cast(pkey)->nwm_name))) { uuu::upll_strncpy(vrt_ip_route->nwm_name, - reinterpret_cast(pkey)->nwm_name, - (kMaxLenNwmName + 1)); + reinterpret_cast + (pkey)->nwm_name, + (kMaxLenNwmName + 1)); } vrt_ip_route->dst_addr.s_addr = reinterpret_cast(pkey)->dst_addr.s_addr; @@ -252,7 +253,7 @@ upll_rc_t IpRouteMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, reinterpret_cast(pkey)->next_hop_addr.s_addr; break; default: - if (!okey || !(okey->get_key())) + if (!okey) free(vrt_ip_route); return UPLL_RC_ERR_GENERIC; } @@ -285,11 +286,11 @@ upll_rc_t IpRouteMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, (ikey->get_key()); if (!pkey) return UPLL_RC_ERR_GENERIC; key_vrt *vrt_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vrt))); + (ConfigKeyVal::Malloc(sizeof(key_vrt))); uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, - pkey->vrt_key.vtn_key.vtn_name, (kMaxLenVtnName + 1)); + pkey->vrt_key.vtn_key.vtn_name, (kMaxLenVtnName + 1)); uuu::upll_strncpy(vrt_key->vrouter_name, - pkey->vrt_key.vrouter_name, (kMaxLenVnodeName + 1)); + pkey->vrt_key.vrouter_name, (kMaxLenVnodeName + 1)); okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, vrt_key, NULL); if (okey == NULL) { free(vrt_key); @@ -337,7 +338,7 @@ upll_rc_t IpRouteMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, } val_static_ip_route *vrt_val = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_static_ip_route))); + sizeof(val_static_ip_route))); memcpy(vrt_val, ival, sizeof(val_static_ip_route)); tmp1 = new ConfigVal(IpctSt::kIpcStValStaticIpRoute, vrt_val); } @@ -352,7 +353,7 @@ upll_rc_t IpRouteMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, } key_static_ip_route *vrt_key = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(key_static_ip_route))); + sizeof(key_static_ip_route))); memcpy(vrt_key, ikey, sizeof(key_static_ip_route)); okey = new ConfigKeyVal(UNC_KT_VRT_IPROUTE, IpctSt::kIpcStKeyStaticIpRoute, vrt_key, tmp1); @@ -368,14 +369,14 @@ upll_rc_t IpRouteMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_static_ip_route *vrt_val = - static_cast(GetVal(ikey)); + static_cast(GetVal(ikey)); if (vrt_val == NULL) return UPLL_RC_ERR_GENERIC; val_static_ip_route *vrt_val2 = reinterpret_cast(GetVal(upd_key)); unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED - : UNC_CS_NOT_APPLIED; + : UNC_CS_NOT_APPLIED; UPLL_LOG_TRACE("%s", (ikey->ToStrAll()).c_str()); if (op == UNC_OP_CREATE) { vrt_val->cs_row_status = cs_status; @@ -391,22 +392,25 @@ upll_rc_t IpRouteMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, loop < (sizeof(vrt_val->valid) / sizeof(vrt_val->valid[0])); ++loop) { if ((UNC_VF_VALID == vrt_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vrt_val->valid[loop])) { - vrt_val->cs_attr[loop] = cs_status; + || (UNC_VF_VALID_NO_VALUE == vrt_val->valid[loop])) { + vrt_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vrt_val->valid[loop]) && (UNC_OP_CREATE == op)) { - vrt_val->cs_attr[loop] = UNC_CS_APPLIED; + vrt_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((UNC_VF_INVALID == vrt_val->valid[loop]) && (UNC_OP_UPDATE == op)) { - vrt_val->cs_attr[loop] = vrt_val2->cs_attr[loop]; + vrt_val->cs_attr[loop] = vrt_val2->cs_attr[loop]; } } return UPLL_RC_SUCCESS; } upll_rc_t IpRouteMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_static_ip_route_t *val; val = (ckv_running != NULL) ? @@ -416,13 +420,13 @@ upll_rc_t IpRouteMoMgr::UpdateAuditConfigStatus( } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) { + cs_status == UNC_CS_APPLIED) { val->cs_attr[loop] = cs_status; } } @@ -445,7 +449,7 @@ upll_rc_t IpRouteMoMgr::ValidateMessage(IpcReqRespHeader *req, upll_rc_t ret_val = UPLL_RC_SUCCESS; if (ikey->get_st_num() != IpctSt::kIpcStKeyStaticIpRoute) { UPLL_LOG_DEBUG("Invalid key structure received. received struct - %d", - ikey->get_st_num()); + ikey->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_static_ip_route *iproute_key = @@ -466,7 +470,7 @@ upll_rc_t IpRouteMoMgr::ValidateMessage(IpcReqRespHeader *req, if (NULL == ikey->get_cfg_val()) { UPLL_LOG_DEBUG("ConfigVal struct is empty"); if (UNC_OP_UPDATE == op) { - return UPLL_RC_ERR_BAD_REQUEST; + return UPLL_RC_ERR_BAD_REQUEST; } else { return UPLL_RC_SUCCESS; } @@ -478,7 +482,8 @@ upll_rc_t IpRouteMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } val_static_ip_route *iproute_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast + (ikey->get_cfg_val()->get_val()); if (iproute_val == NULL) { UPLL_LOG_DEBUG("val struct is mandatory for create and update op"); return UPLL_RC_ERR_BAD_REQUEST; @@ -494,7 +499,8 @@ upll_rc_t IpRouteMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } else if (op == UNC_OP_READ || op == UNC_OP_READ_SIBLING - || op == UNC_OP_READ_SIBLING_BEGIN || op == UNC_OP_READ_SIBLING_COUNT) { + || op == UNC_OP_READ_SIBLING_BEGIN || + op == UNC_OP_READ_SIBLING_COUNT) { if (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE) { if (opt1 != UNC_OPT1_NORMAL) { @@ -548,7 +554,7 @@ upll_rc_t IpRouteMoMgr::ValidateMessage(IpcReqRespHeader *req, } upll_rc_t IpRouteMoMgr::ValidateIpRouteKey(key_static_ip_route *iproute_key, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; @@ -557,7 +563,7 @@ upll_rc_t IpRouteMoMgr::ValidateIpRouteKey(key_static_ip_route *iproute_key, kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. vtn_name - %s", - iproute_key->vrt_key.vtn_key.vtn_name); + iproute_key->vrt_key.vtn_key.vtn_name); return UPLL_RC_ERR_CFG_SYNTAX; } ret_val = ValidateKey( @@ -565,7 +571,7 @@ upll_rc_t IpRouteMoMgr::ValidateIpRouteKey(key_static_ip_route *iproute_key, kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. vrouter name -%s", - iproute_key->vrt_key.vrouter_name); + iproute_key->vrt_key.vrouter_name); return UPLL_RC_ERR_CFG_SYNTAX; } @@ -584,34 +590,34 @@ upll_rc_t IpRouteMoMgr::ValidateIpRouteKey(key_static_ip_route *iproute_key, UPLL_LOG_DEBUG("Currently nwm name is not supported for this KT"); return UPLL_RC_ERR_CFG_SYNTAX; /* - ret_val = ValidateKey(reinterpret_cast(iproute_key->nwm_name), - kMinLenNwmName, - kMaxLenNwmName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failed. nwm name - %s", iproute_key->nwm_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } - */ + ret_val = ValidateKey(reinterpret_cast(iproute_key->nwm_name), + kMinLenNwmName, + kMaxLenNwmName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("syntax check failed. nwm name - %s", iproute_key->nwm_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + */ } // TODO(s): Need to validate if inputs are given if (!ValidateNumericRange(iproute_key->dst_addr_prefixlen, - (uint8_t) kMinIpRoutePrefix, - (uint8_t) kMaxIpRoutePrefix, - true, true)) { + (uint8_t) kMinIpRoutePrefix, + (uint8_t) kMaxIpRoutePrefix, + true, true)) { UPLL_LOG_DEBUG("Numeric range check failed. dst_addr_prefixlen - %d", - iproute_key->dst_addr_prefixlen); + iproute_key->dst_addr_prefixlen); return UPLL_RC_ERR_CFG_SYNTAX; } if (iproute_key->dst_addr.s_addr == 0xffffffff) { UPLL_LOG_DEBUG("Bad destination address. addr:0x%08x", - iproute_key->dst_addr.s_addr); + iproute_key->dst_addr.s_addr); return UPLL_RC_ERR_CFG_SYNTAX; } if (iproute_key->next_hop_addr.s_addr == 0x00000000 || iproute_key->next_hop_addr.s_addr == 0xffffffff) { UPLL_LOG_DEBUG("Bad next hop address. addr:0x%08x", - iproute_key->next_hop_addr.s_addr); + iproute_key->next_hop_addr.s_addr); return UPLL_RC_ERR_CFG_SYNTAX; } return UPLL_RC_SUCCESS; @@ -629,20 +635,20 @@ upll_rc_t IpRouteMoMgr::ValidateIpRouteValue(val_static_ip_route *iproute_val, return UPLL_RC_ERR_CFG_SYNTAX; } /* - if (iproute_val->valid[UPLL_IDX_GROUP_METRIC_SIR] == UNC_VF_VALID) { - if (!ValidateNumericRange(iproute_val->group_metric, - (uint16_t) kMinLenGroupMetric, - (uint16_t) kMaxLenGroupMetric, true, true)) { - UPLL_LOG_DEBUG( - "Numeric range check failure for vrt_ip_route_val->group_metric"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else if (iproute_val->valid[UPLL_IDX_GROUP_METRIC_SIR] - == UNC_VF_VALID_NO_VALUE - && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { - iproute_val->group_metric = 0; - } - */ + if (iproute_val->valid[UPLL_IDX_GROUP_METRIC_SIR] == UNC_VF_VALID) { + if (!ValidateNumericRange(iproute_val->group_metric, + (uint16_t) kMinLenGroupMetric, + (uint16_t) kMaxLenGroupMetric, true, true)) { + UPLL_LOG_DEBUG( + "Numeric range check failure for vrt_ip_route_val->group_metric"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else if (iproute_val->valid[UPLL_IDX_GROUP_METRIC_SIR] + == UNC_VF_VALID_NO_VALUE + && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { + iproute_val->group_metric = 0; + } + */ return UPLL_RC_SUCCESS; } @@ -658,7 +664,7 @@ upll_rc_t IpRouteMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -675,13 +681,6 @@ upll_rc_t IpRouteMoMgr::ValidateCapability(IpcReqRespHeader *req, result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; case UNC_OP_UPDATE: @@ -701,12 +700,12 @@ upll_rc_t IpRouteMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("key_type - %d is not supported by controller - %s", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_static_ip_route *iproute_val = NULL; if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValStaticIpRoute)) { + IpctSt::kIpcStValStaticIpRoute)) { iproute_val = reinterpret_cast(ikey->get_cfg_val()->get_val()); } @@ -766,22 +765,22 @@ upll_rc_t IpRouteMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_route->vrt_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, - (kMaxLenVtnName + 1)); + key_rename->old_unc_vtn_name, + (kMaxLenVtnName + 1)); if (ikey->get_key_type() == UNC_KT_VROUTER) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { free(key_route); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_route->vrt_key.vrouter_name, - key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); + key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { FREE_IF_NOT_NULL(key_route); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_route->vrt_key.vrouter_name, - key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); + key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); } @@ -811,20 +810,20 @@ bool IpRouteMoMgr::CompareValidValue(void *&val1, void *val2, val_static_ip_route_t *val_iprte2 = reinterpret_cast(val2); for (unsigned int loop = 0; - loop < sizeof(val_iprte1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_iprte1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == val_iprte1->valid[loop] && UNC_VF_VALID == val_iprte2->valid[loop]) - val_iprte1->valid[loop] = UNC_VF_VALID_NO_VALUE; + val_iprte1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_VALID == val_iprte1->valid[UPLL_IDX_GROUP_METRIC_SIR] && UNC_VF_VALID == val_iprte2->valid[UPLL_IDX_GROUP_METRIC_SIR]) { if (val_iprte1->group_metric == val_iprte2->group_metric) val_iprte1->valid[UPLL_IDX_GROUP_METRIC_SIR] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } for (unsigned int loop = 0; loop < (sizeof(val_iprte1->valid) / sizeof(val_iprte1->valid[0])); - ++loop) { + ++loop) { if ((UNC_VF_VALID == (uint8_t) val_iprte1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_iprte1->valid[loop])) { invalid_attr = false; @@ -848,8 +847,8 @@ upll_rc_t IpRouteMoMgr::MergeValidate(unc_key_type_t keytype, DalDmlIntf *dmi) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; /* NEC changed the design so the below code is not required - */ - #if 0 + */ +#if 0 upll_rc_t result_code = UPLL_RC_SUCCESS; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; ConfigKeyVal *tkey = NULL; @@ -867,18 +866,18 @@ upll_rc_t IpRouteMoMgr::MergeValidate(unc_key_type_t keytype, travel_key = ikey; while (travel_key) { result_code = GetChildConfigKey(tkey, travel_key); - if (UPLL_RC_SUCCESS != result_code){ + if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey Failed"); DELETE_IF_NOT_NULL(tkey); return result_code; } /*Check the network host name should not be present same vtn */ memset(reinterpret_cast - (tkey->get_key())->vrt_key.vrouter_name, 0, (kMaxLenVnodeName+1)); + (tkey->get_key())->vrt_key.vrouter_name, 0, (kMaxLenVnodeName+1)); reinterpret_cast (tkey->get_key())->dst_addr.s_addr = 0; reinterpret_cast - (tkey->get_key())->dst_addr_prefixlen = 0; + (tkey->get_key())->dst_addr_prefixlen = 0; reinterpret_cast (tkey->get_key())->next_hop_addr.s_addr = 0; result_code = ReadConfigDB(tkey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, @@ -903,15 +902,15 @@ upll_rc_t IpRouteMoMgr::MergeValidate(unc_key_type_t keytype, * shows any error don't fix it. */ return result_code; - #endif +#endif } // Overridden Read Sibling from momgr_impl. // This keytype contains 4 child keys and needs special handling. upll_rc_t IpRouteMoMgr::ReadSiblingMo(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - bool begin, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; uint32_t result_count = 0; @@ -937,7 +936,7 @@ upll_rc_t IpRouteMoMgr::ReadSiblingMo(IpcReqRespHeader *header, MoMgrTables tbl = MAINTBL; DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; if (UPLL_DT_RUNNING == header->datatype) { UPLL_LOG_TRACE("Status Flag enabled"); @@ -950,132 +949,133 @@ upll_rc_t IpRouteMoMgr::ReadSiblingMo(IpcReqRespHeader *header, case UPLL_DT_RUNNING: case UPLL_DT_STARTUP: case UPLL_DT_STATE: - { - // To read the record(s) from DB - upll_keytype_datatype_t dt_type = (header->datatype == UPLL_DT_STATE) ? - UPLL_DT_RUNNING : header->datatype; - ConfigVal *cval = ikey->get_cfg_val(); - ConfigVal *new_cval = NULL; - AllocVal(new_cval, dt_type, MAINTBL); - if (new_cval == NULL) { - UPLL_LOG_DEBUG("Null new_cval after AllocVal"); - return UPLL_RC_ERR_GENERIC; - } + { + // To read the record(s) from DB + upll_keytype_datatype_t dt_type = (header->datatype == UPLL_DT_STATE) ? + UPLL_DT_RUNNING : header->datatype; + ConfigVal *cval = ikey->get_cfg_val(); + ConfigVal *new_cval = NULL; + AllocVal(new_cval, dt_type, MAINTBL); + if (new_cval == NULL) { + UPLL_LOG_DEBUG("Null new_cval after AllocVal"); + return UPLL_RC_ERR_GENERIC; + } - if (cval != NULL && cval->get_val() != NULL) { - memcpy(new_cval->get_val(), cval->get_val(), - sizeof(val_static_ip_route)); - } - ikey->SetCfgVal(new_cval); + if (cval != NULL && cval->get_val() != NULL) { + memcpy(new_cval->get_val(), cval->get_val(), + sizeof(val_static_ip_route)); + } + ikey->SetCfgVal(new_cval); - // Used in ReadConfigDB in each Iteration - ConfigKeyVal *queryckval = NULL; - result_code = DupConfigKeyVal(queryckval, ikey, MAINTBL); - if (result_code != UPLL_RC_SUCCESS || queryckval == NULL) { - UPLL_LOG_DEBUG("Error while DupConfigKeyVal"); - return UPLL_RC_ERR_GENERIC; - } + // Used in ReadConfigDB in each Iteration + ConfigKeyVal *queryckval = NULL; + result_code = DupConfigKeyVal(queryckval, ikey, MAINTBL); + if (result_code != UPLL_RC_SUCCESS || queryckval == NULL) { + UPLL_LOG_DEBUG("Error while DupConfigKeyVal"); + return UPLL_RC_ERR_GENERIC; + } - // uint16_t kIpRouteNumChildKey = 4; - bool fetched_from_query = false; - for (uint16_t childKeyIndex = uuds::TableNumPkCols( - uudst::kDbiStaticIpRouteTbl) - 1; - childKeyIndex >= uuds::TableNumPkCols( - uudst::kDbiStaticIpRouteTbl) - kIpRouteNumChildKey; - childKeyIndex--) { - if (IsValidKey(queryckval->get_key(), childKeyIndex) == false) - continue; - uint32_t tmp_count = header->rep_count; - result_code = ReadConfigDB(queryckval, dt_type, header->operation, - dbop, tmp_count, dmi, tbl); + // uint16_t kIpRouteNumChildKey = 4; + bool fetched_from_query = false; + for (uint16_t childKeyIndex = uuds::TableNumPkCols( + uudst::kDbiStaticIpRouteTbl) - 1; + childKeyIndex >= uuds::TableNumPkCols( + uudst::kDbiStaticIpRouteTbl) - kIpRouteNumChildKey; + childKeyIndex--) { + if (IsValidKey(queryckval->get_key(), childKeyIndex) == false) + continue; + uint32_t tmp_count = header->rep_count; + result_code = ReadConfigDB(queryckval, dt_type, header->operation, + dbop, tmp_count, dmi, tbl); - if (result_code == UPLL_RC_SUCCESS) { - ConfigKeyVal *qtmpckval = queryckval; - ConfigKeyVal *tmpckval = NULL; - ConfigKeyVal *appendckval = NULL; - // Iterating through all ConfigKeyVal from the result set - // and storing the result set in ikey - while (qtmpckval != NULL) { - if (result_count == header->rep_count) { - UPLL_LOG_TRACE("Fetched (%d) records", result_count); - delete queryckval; - return UPLL_RC_SUCCESS; - } - result_code = DupConfigKeyVal(tmpckval, qtmpckval, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error while DupConfigKeyVal"); - if (queryckval) + if (result_code == UPLL_RC_SUCCESS) { + ConfigKeyVal *qtmpckval = queryckval; + ConfigKeyVal *tmpckval = NULL; + ConfigKeyVal *appendckval = NULL; + // Iterating through all ConfigKeyVal from the result set + // and storing the result set in ikey + while (qtmpckval != NULL) { + if (result_count == header->rep_count) { + UPLL_LOG_TRACE("Fetched (%d) records", result_count); delete queryckval; - if (tmpckval) - delete tmpckval; - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_TRACE("Appending ConfigKeyVal"); - appendckval = tmpckval; - if (fetched_from_query == false) { - ikey->ResetWith(appendckval); - DELETE_IF_NOT_NULL(appendckval); - result_count++; - fetched_from_query = true; + return UPLL_RC_SUCCESS; + } + result_code = DupConfigKeyVal(tmpckval, qtmpckval, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error while DupConfigKeyVal"); + if (queryckval) + delete queryckval; + if (tmpckval) + delete tmpckval; + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_TRACE("Appending ConfigKeyVal"); + appendckval = tmpckval; + if (fetched_from_query == false) { + ikey->ResetWith(appendckval); + DELETE_IF_NOT_NULL(appendckval); + result_count++; + fetched_from_query = true; + } else { + ikey->AppendCfgKeyVal(appendckval); + result_count++; + } + tmpckval = NULL; + qtmpckval = qtmpckval->get_next_cfg_key_val(); + } // while (qtmpckval != NULL) +#if 0 + // Copying the last available key structure for next iteration + if (appendckval != NULL && appendckval->get_key() != NULL) { + memcpy(queryckval->get_key(), appendckval->get_key(), + sizeof(key_static_ip_route)); } else { - ikey->AppendCfgKeyVal(appendckval); - result_count++; + memcpy(queryckval->get_key(), ikey->get_key(), + sizeof(key_static_ip_route)); } - tmpckval = NULL; - qtmpckval = qtmpckval->get_next_cfg_key_val(); - } // while (qtmpckval != NULL) -#if 0 - // Copying the last available key structure for next iteration - if (appendckval != NULL && appendckval->get_key() != NULL) { - memcpy(queryckval->get_key(), appendckval->get_key(), - sizeof(key_static_ip_route)); - } else { - memcpy(queryckval->get_key(), ikey->get_key(), - sizeof(key_static_ip_route)); - } #endif - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Error while ReadConfigDB"); - delete queryckval; - return result_code; - } + } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error while ReadConfigDB"); + delete queryckval; + return result_code; + } - // Preparing Child Key data for next Sibling Iteration - key_static_ip_route *key_ipr = - reinterpret_cast(queryckval->get_key()); - if (ResetDataForSibling(key_ipr, - (uudst::static_ip_route::kStaticIpRouteIndex)childKeyIndex) - == false) { - UPLL_LOG_DEBUG("Data Not Reset for the index(%d)", childKeyIndex); - delete queryckval; - return UPLL_RC_ERR_GENERIC; - } - if (GetVal(ikey)) { - memcpy(queryckval->get_cfg_val()->get_val(), - ikey->get_cfg_val()->get_val(), - sizeof(val_static_ip_route)); - } else { - queryckval->SetCfgVal(NULL); - } - UPLL_LOG_TRACE("Next Query After Reset: %s", - (queryckval->ToStrAll()).c_str()); - } // for - header->rep_count = result_count; - delete queryckval; - break; - } // case + // Preparing Child Key data for next Sibling Iteration + key_static_ip_route *key_ipr = + reinterpret_cast(queryckval->get_key()); + if (ResetDataForSibling(key_ipr, + (uudst::static_ip_route::kStaticIpRouteIndex) + childKeyIndex) + == false) { + UPLL_LOG_DEBUG("Data Not Reset for the index(%d)", childKeyIndex); + delete queryckval; + return UPLL_RC_ERR_GENERIC; + } + if (GetVal(ikey)) { + memcpy(queryckval->get_cfg_val()->get_val(), + ikey->get_cfg_val()->get_val(), + sizeof(val_static_ip_route)); + } else { + queryckval->SetCfgVal(NULL); + } + UPLL_LOG_TRACE("Next Query After Reset: %s", + (queryckval->ToStrAll()).c_str()); + } // for + header->rep_count = result_count; + delete queryckval; + break; + } // case default: break; } if (header->rep_count > 0) { result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; + ? UPLL_RC_SUCCESS : result_code; if (result_code == UPLL_RC_SUCCESS) { result_code = AdaptValToVtnService(ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", - result_code); + result_code); return result_code; } } @@ -1087,7 +1087,8 @@ upll_rc_t IpRouteMoMgr::ReadSiblingMo(IpcReqRespHeader *header, // To reset the data available in index to empty // Currently implemented only for child index -bool IpRouteMoMgr::ResetDataForSibling(key_static_ip_route *key_ipr, +bool IpRouteMoMgr::ResetDataForSibling( + key_static_ip_route *key_ipr, uudst::static_ip_route::kStaticIpRouteIndex index) { switch (index) { case uudst::static_ip_route::kDbiDstIpAddr: diff --git a/coordinator/modules/upll/iproute_momgr.hh b/coordinator/modules/upll/iproute_momgr.hh index 7ea71756..92121243 100644 --- a/coordinator/modules/upll/iproute_momgr.hh +++ b/coordinator/modules/upll/iproute_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -25,237 +25,239 @@ namespace uuds = unc::upll::dal::schema; namespace uudst = unc::upll::dal::schema::table; class IpRouteMoMgr : public VnodeChildMoMgr { - private: - static BindInfo ip_route_bind_info[]; - static BindInfo key_ip_route_maintbl_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::static_ip_route::kDbiMetric: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_GROUP_METRIC_SIR]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } + private: + static BindInfo ip_route_bind_info[]; + static BindInfo key_ip_route_maintbl_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::static_ip_route::kDbiMetric: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_GROUP_METRIC_SIR]; + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; + } - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, void *val2, bool audit_status, - unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true,CompareValidValue is called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool audit); + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, void *val2, bool audit_status, + unc_keytype_operation_t op); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true,CompareValidValue is called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool audit); - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VRT_IPROUTE keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlan_map is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - * - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VRT_IPROUTE keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlan_map is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + * + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - /** - * @Brief Checks if the specified key type(KT_VRT_IPROUTE) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] ctrlr_name Controller name associated with ikey. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char *ctrlr_name); + /** + * @Brief Checks if the specified key type(KT_VRT_IPROUTE) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] ctrlr_name Controller name associated with ikey. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char *ctrlr_name); - /** - * @Brief Validates the syntax for KT_VRT_IPROUTE Keytype key structure. - * - * @param[in] key_static_ip_route KT_VRT_IPROUTE key structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - */ - upll_rc_t ValidateIpRouteKey(key_static_ip_route *iproute_key, - unc_keytype_operation_t operation); + /** + * @Brief Validates the syntax for KT_VRT_IPROUTE Keytype key structure. + * + * @param[in] key_static_ip_route KT_VRT_IPROUTE key structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + */ + upll_rc_t ValidateIpRouteKey(key_static_ip_route *iproute_key, + unc_keytype_operation_t operation); - /** - * @Brief Validates the syntax for KT_VRT_IPROUTE keytype value structure. - * - * @param[in] val_vrt_iproute KT_VRT_IPROUTE value structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateIpRouteValue(val_static_ip_route *iprout_val, - uint32_t op); + /** + * @Brief Validates the syntax for KT_VRT_IPROUTE keytype value structure. + * + * @param[in] val_vrt_iproute KT_VRT_IPROUTE value structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateIpRouteValue(val_static_ip_route *iprout_val, + uint32_t op); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] iproute_val KT_VRT_IPROUTE value structure. - * @param[in] attrs Pointer to controller attribute. - * @param[in] operation Operation name. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count resource limit is exceeds. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValIpRouteAttributeSupportCheck( - val_static_ip_route *iproute_val, - const uint8_t *attrs, - unc_keytype_operation_t operation); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] iproute_val KT_VRT_IPROUTE value structure. + * @param[in] attrs Pointer to controller attribute. + * @param[in] operation Operation name. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count resource limit is exceeds. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValIpRouteAttributeSupportCheck( + val_static_ip_route *iproute_val, + const uint8_t *attrs, + unc_keytype_operation_t operation); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /* RENAME */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *ikey, DalDmlIntf *dmi); + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /* RENAME */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, + ConfigKeyVal *ikey, DalDmlIntf *dmi); - bool ResetDataForSibling(key_static_ip_route *key_ipr, - uudst::static_ip_route::kStaticIpRouteIndex index); + bool ResetDataForSibling(key_static_ip_route *key_ipr, + uudst::static_ip_route::kStaticIpRouteIndex index); - static uint16_t kIpRouteNumChildKey; + static uint16_t kIpRouteNumChildKey; - public: - IpRouteMoMgr(); - virtual ~IpRouteMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } + public: + IpRouteMoMgr(); + virtual ~IpRouteMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, uint64_t index); + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, uint64_t index); /* @brief READ_SIBLING_BEGIN: Gets the first MO from the sibling group * under the parent diff --git a/coordinator/modules/upll/key_tree.cc b/coordinator/modules/upll/key_tree.cc index 435ad625..a55f088b 100644 --- a/coordinator/modules/upll/key_tree.cc +++ b/coordinator/modules/upll/key_tree.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -54,8 +54,10 @@ bool KeyTree::AddKeyType(unc_key_type_t parent, unc_key_type_t child) { } KeyTreeNode *KeyTree::GetNode(unc_key_type_t key_type) { - if (all_kt_map_.count(key_type)) - return all_kt_map_[key_type]; + std::map::iterator it + = all_kt_map_.find(key_type); + if (it != all_kt_map_.end()) + return it->second; return NULL; } @@ -220,11 +222,11 @@ bool KeyTree::PostorderIterator::Next(unc_key_type_t *next_key_type) { next_node_ = next_node_->children.front(); } UPLL_LOG_VERBOSE("moving to sibling's descendant %d", - ((next_node_) ? next_node_->key_type : 0)); + ((next_node_) ? next_node_->key_type : 0)); } else { next_node_ = next_node_->parent; UPLL_LOG_VERBOSE("moving to the parent %d", - ((next_node_) ? next_node_->key_type : 0)); + ((next_node_) ? next_node_->key_type : 0)); if (next_node_ == keytree_->GetRoot()) { next_node_ = NULL; } diff --git a/coordinator/modules/upll/key_tree.hh b/coordinator/modules/upll/key_tree.hh index 1e61e831..20fa53d3 100644 --- a/coordinator/modules/upll/key_tree.hh +++ b/coordinator/modules/upll/key_tree.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html diff --git a/coordinator/modules/upll/kt_util.cc b/coordinator/modules/upll/kt_util.cc index b84764fa..87d7c1bc 100644 --- a/coordinator/modules/upll/kt_util.cc +++ b/coordinator/modules/upll/kt_util.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -52,8 +52,10 @@ const std::vector& KtUtil::GetCfgMsgTemplate( unc_key_type_t kt) { UPLL_FUNC_TRACE; static std::vector dummy; - if (kt_msg_templates_.count(kt) > 0) { - return kt_msg_templates_[kt]->kt_cfg_msg; + std::map::iterator it + = kt_msg_templates_.find(kt); + if ( it != kt_msg_templates_.end() ) { + return it->second->kt_cfg_msg; } return dummy; } @@ -111,7 +113,8 @@ void KtUtil::Init() { // UNC_KT_VBR_VLANMAP tmpl = new KtMsgTemplate(); tmpl->kt_cfg_msg.push_back(IpctSt::kIpcStKeyVlanMap); - tmpl->kt_cfg_msg.push_back(IpctSt::kIpcStValVlanMap); + /* VlanmapOnBoundary: Added new val struct */ + tmpl->kt_cfg_msg.push_back(IpctSt::kIpcStPfcdrvValVlanMap); kt_msg_templates_[UNC_KT_VBR_VLANMAP] = tmpl; // UNC_KT_VBR_NWMONITOR tmpl = new KtMsgTemplate(); @@ -246,6 +249,10 @@ void KtUtil::Init() { tmpl->kt_cfg_msg.push_back(IpctSt::kIpcStKeyVlink); tmpl->kt_cfg_msg.push_back(IpctSt::kIpcStValVlink); kt_msg_templates_[UNC_KT_VLINK] = tmpl; + // UNC_KT_VTN_DATAFLOW + tmpl = new KtMsgTemplate(); + tmpl->kt_cfg_msg.push_back(IpctSt::kIpcStKeyVtnDataflow); + kt_msg_templates_[UNC_KT_VTN_DATAFLOW] = tmpl; } @@ -256,7 +263,7 @@ void KtUtil::Init() { * @param stnum * @param data * - * @return + * @return */ std::string KtUtil::KtStructToStr(IpctSt::IpcStructNum stnum, void *data) { std::stringstream ss; @@ -557,6 +564,9 @@ std::string KtUtil::KtStructToStr(IpctSt::IpcStructNum stnum, void *data) { case IpctSt::kIpcStPfcdrvValVbrifPolicingmap: return IpcStructToStr( *reinterpret_cast(data)); + /* VlanmapOnBoundary: Added new val struct */ + case IpctSt::kIpcStPfcdrvValVlanMap: + return IpcStructToStr(*reinterpret_cast(data)); // Physical structures case IpctSt::kIpcStKeyCtr: return IpcStructToStr(*reinterpret_cast(data)); @@ -585,6 +595,8 @@ std::string KtUtil::KtStructToStr(IpctSt::IpcStructNum stnum, void *data) { return IpcStructToStr(*reinterpret_cast(data)); case IpctSt::kIpcStVnpdrvValVtunnelIf: return IpcStructToStr(*reinterpret_cast(data)); + case IpctSt::kIpcStKeyVtnDataflow: + return IpcStructToStr(*reinterpret_cast(data)); } return ss.str(); } @@ -719,6 +731,17 @@ std::string KtUtil::IpcStructToStr(const key_vtn& key_vtn) { return ss.str(); } +std::string KtUtil::IpcStructToStr(const key_vtn_dataflow& key_vtn_df) { + std::stringstream ss; + ss << " ----- key_vtn_dataflow ----- " << endl; + ss << " -->vtn_name " << key_vtn_df.vtn_key.vtn_name << endl; + ss << " -->vnode_name " << key_vtn_df.vnode_id << endl; + ss << " -->vlan_id " << key_vtn_df.vlanid << endl; + ss << " -->source_mac_addr " << + MacAddrToStr(key_vtn_df.src_mac_address) << endl; + return ss.str(); +} + std::string KtUtil::IpcStructToStr(const val_vtn& val_vtn) { std::stringstream ss; ss << " ----- val_vtn ----- " << endl; @@ -1522,7 +1545,7 @@ std::string KtUtil::IpcStructToStr(const val_flowfilter& val_flowfilter) { } std::string KtUtil::IpcStructToStr(const val_vtn_flowfilter_controller_st& - val_cnler_st) { + val_cnler_st) { std::stringstream ss; ss << " ----- val_vtn_flowfilter_controller_st ----- " << endl; ss << " -->valid " << VALID_ARRAY_TO_STR(val_cnler_st.valid); @@ -1562,7 +1585,7 @@ std::string KtUtil::IpcStructToStr(const val_flowlist_entry_st& val_cnler_st) { } std::string KtUtil::IpcStructToStr(const key_vtn_flowfilter_entry& - key_vtn_flowfilter_entry) { + key_vtn_flowfilter_entry) { std::stringstream ss; ss << " ----- key_vtn_flowfilter_entry ----- " << endl; // ss << " -->flowfilter_key " << endl; @@ -1614,7 +1637,7 @@ std::string KtUtil::IpcStructToStr(const key_vbr_flowfilter& data) { } std::string KtUtil::IpcStructToStr(const key_vbr_flowfilter_entry& - key_vbr_flowfilter_entry) { + key_vbr_flowfilter_entry) { std::stringstream ss; ss << " ----- key_vbr_flowfilter_entry ----- " << endl; // ss << " -->flowfilter_key " << endl; @@ -1660,7 +1683,7 @@ std::string KtUtil::IpcStructToStr(const val_flowfilter_entry_st& data) { } std::string KtUtil::IpcStructToStr(const key_vbr_if_flowfilter& - key_vbr_if_flowfilter) { + key_vbr_if_flowfilter) { std::stringstream ss; ss << " ----- key_vbr_if_flowfilter ----- " << endl; // ss << " -->if_key " << endl; @@ -1670,7 +1693,7 @@ std::string KtUtil::IpcStructToStr(const key_vbr_if_flowfilter& } std::string KtUtil::IpcStructToStr(const key_vbr_if_flowfilter_entry& - key_vbr_if_flowfilter_entry) { + key_vbr_if_flowfilter_entry) { std::stringstream ss; ss << " ----- key_vbr_if_flowfilter_entry ----- " << endl; // ss << " -->flowfilter_key " << endl; @@ -1681,7 +1704,7 @@ std::string KtUtil::IpcStructToStr(const key_vbr_if_flowfilter_entry& } std::string KtUtil::IpcStructToStr(const key_vrt_if_flowfilter& - key_vrt_if_flowfilter) { + key_vrt_if_flowfilter) { std::stringstream ss; ss << " ----- key_vrt_if_flowfilter ----- " << endl; // ss << " -->if_key " << endl; @@ -1714,7 +1737,7 @@ std::string KtUtil::IpcStructToStr(const val_policingprofile& data) { } std::string KtUtil::IpcStructToStr(const val_rename_policingprofile& - val_rename_policingprofile) { + val_rename_policingprofile) { std::stringstream ss; ss << " ----- val_rename_policingprofile ----- " << endl; ss << " -->valid " << VALID_ARRAY_TO_STR(val_rename_policingprofile.valid); @@ -1724,7 +1747,7 @@ std::string KtUtil::IpcStructToStr(const val_rename_policingprofile& } std::string KtUtil::IpcStructToStr(const key_policingprofile_entry& - key_policingprofile_entry) { + key_policingprofile_entry) { std::stringstream ss; ss << " ----- key_policingprofile_entry ----- " << endl; // ss << " -->policingprofile_key " << endl; @@ -1778,7 +1801,7 @@ std::string KtUtil::IpcStructToStr(const val_policingmap& data) { } std::string KtUtil::IpcStructToStr(const val_policingmap_controller_st& - val_cnler_st) { + val_cnler_st) { std::stringstream ss; ss << " ----- val_policingmap_controller_st ----- " << endl; ss << " -->valid " << VALID_ARRAY_TO_STR(val_cnler_st.valid); @@ -1813,7 +1836,7 @@ std::string KtUtil::IpcStructToStr(const val_policingmap_switch_st& data) { } std::string KtUtil::IpcStructToStr(const key_vtn_policingmap_controller& - key_vtn_policingmap_controller) { + key_vtn_policingmap_controller) { std::stringstream ss; ss << " ----- key_vtn_policingmap_controller ----- " << endl; // ss << " -->vtn_key " << endl; @@ -2021,6 +2044,17 @@ std::string KtUtil::IpcStructToStr(const pfcdrv_val_vbrif_policingmap &data) { return ss.str(); } +/* VlanmapOnBoundary: Added new val struct */ +std::string KtUtil::IpcStructToStr(const pfcdrv_val_vlan_map &data) { + std::stringstream ss; + ss << " ----- pfcdrv_val_vlan_map ----- " << endl; + ss << " -->valid " << VALID_ARRAY_TO_STR(data.valid); + ss << " -->val.vm.valid " << VALID_ARRAY_TO_STR(data.vm.valid); + ss << " -->vm.vlan_id " << data.vm.vlan_id << endl; + ss << " -->bdry_ref_count " << data.bdry_ref_count << endl; + return ss.str(); +} + // VNP-DRV std::string KtUtil::IpcStructToStr(const vnpdrv_val_vtunnel& data) { std::stringstream ss; diff --git a/coordinator/modules/upll/kt_util.hh b/coordinator/modules/upll/kt_util.hh index 4afb3d9f..a4877f9f 100644 --- a/coordinator/modules/upll/kt_util.hh +++ b/coordinator/modules/upll/kt_util.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -173,6 +173,9 @@ class KtUtil { static string IpcStructToStr(const pfcdrv_val_flowfilter_entry &data); static string IpcStructToStr(const pfcdrv_val_vbrif_policingmap &data); + /* VlanmapOnBoundary: New val struct */ + static string IpcStructToStr(const pfcdrv_val_vlan_map &data); + static string Ipv4AddrToStr(struct in_addr address); static string Ipv4AddrToStr(uint32_t address); static string Ipv6AddrToStr(struct in6_addr address); @@ -182,6 +185,7 @@ class KtUtil { static string IpcStructToStr(const vnpdrv_val_vtunnel &data); static string IpcStructToStr(const vnpdrv_val_vtunnel_if &data); + static string IpcStructToStr(const key_vtn_dataflow &key_vtn_df); private: KtUtil() {} @@ -193,5 +197,5 @@ class KtUtil { } // namespace ipc_util } // namespace upll } // namespace unc - // NOLINT +// NOLINT #endif // UPLL_KT_UTIL_HH_ diff --git a/coordinator/modules/upll/momgr_impl.cc b/coordinator/modules/upll/momgr_impl.cc index f5f0e263..02c5c603 100644 --- a/coordinator/modules/upll/momgr_impl.cc +++ b/coordinator/modules/upll/momgr_impl.cc @@ -1,14 +1,13 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ #include -// #include #include #include #include @@ -16,19 +15,14 @@ #include "unc/uppl_common.h" #include "momgr_impl.hh" #include "dhcprelay_server_momgr.hh" -// #include "vtn_momgr.hh" -// #include "vbr_momgr.hh" #include "vlink_momgr.hh" -// #include "vbr_if_momgr.hh" -// #include "policingprofile_entry_momgr.hh" +#include "vbr_if_momgr.hh" +#include "config_mgr.hh" +#include "vlanmap_momgr.hh" #include "uncxx/upll_log.hh" -// using namespace std; using unc::upll::ipc_util::IpcUtil; using unc::upll::dal::DalResultCode; -// map MoMgr::momgr; - -// map MoMgr::momgr; namespace unc { namespace upll { @@ -46,110 +40,90 @@ namespace kt_momgr { (key_type == UNC_KT_VBRIF_POLICINGMAP) || \ (key_type == UNC_KT_VTN_FLOWFILTER)) -upll_rc_t MoMgrImpl::CreateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { -// std::cout << "MoMgrImpl::createMo "; - if (ikey == NULL || req == NULL) { -// std::cout << "Improper inputs : Cannot create object"; - return UPLL_RC_ERR_GENERIC; - } + upll_rc_t MoMgrImpl::CreateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + // std::cout << "MoMgrImpl::createMo "; + if (ikey == NULL || req == NULL) { + // std::cout << "Improper inputs : Cannot create object"; + return UPLL_RC_ERR_GENERIC; + } - switch (req->datatype) { - case UPLL_DT_IMPORT: - case UPLL_DT_CANDIDATE: { - return CreateCandidateMo(req, ikey, dmi); + switch (req->datatype) { + case UPLL_DT_IMPORT: + case UPLL_DT_CANDIDATE: { + return CreateCandidateMo(req, ikey, dmi); + } + default: { + return UPLL_RC_ERR_GENERIC; + } } - default: { + } + + upll_rc_t MoMgrImpl::CreateImportMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id, + const char *domain_id) { + UPLL_FUNC_TRACE; + // std::cout << "MoMgrImpl::createMo "; + if (ikey == NULL || req == NULL) { + // std::cout << "Improper inputs : Cannot create object"; return UPLL_RC_ERR_GENERIC; } + switch (req->datatype) { + case UPLL_DT_AUDIT: { + // std::cout << "UPLL_DT_AUDIT"; + return CreateAuditMoImpl(ikey, dmi, ctrlr_id); + } + case UPLL_DT_IMPORT: { + return CreateMo(req, ikey, dmi); + } + default: + return UPLL_RC_ERR_GENERIC; + } } -} - -upll_rc_t MoMgrImpl::CreateImportMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id, - const char *domain_id) { - UPLL_FUNC_TRACE; -// std::cout << "MoMgrImpl::createMo "; - if (ikey == NULL || req == NULL) { -// std::cout << "Improper inputs : Cannot create object"; - return UPLL_RC_ERR_GENERIC; - } - switch (req->datatype) { - case UPLL_DT_AUDIT: { -// std::cout << "UPLL_DT_AUDIT"; - return CreateAuditMoImpl(ikey, dmi, ctrlr_id); + + upll_rc_t MoMgrImpl::CreateCandidateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag) { + UPLL_FUNC_TRACE; + // std::cout << "MoMgrImpl::CreateCandidateMo"; + if (ikey == NULL || req == NULL) { + return UPLL_RC_ERR_GENERIC; } - case UPLL_DT_IMPORT: { - return CreateMo(req, ikey, dmi); + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); + return result_code; + } + } + result_code = ValidateAttribute(ikey, dmi, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateAttribute failed, Error - %d", result_code); + return result_code; } - default: - return UPLL_RC_ERR_GENERIC; - } -} - -upll_rc_t MoMgrImpl::CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; -// std::cout << "MoMgrImpl::CreateCandidateMo"; - if (ikey == NULL || req == NULL) { - return UPLL_RC_ERR_GENERIC; - } - upll_rc_t result_code = UPLL_RC_SUCCESS; - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); - return result_code; - } - result_code = ValidateAttribute(ikey, dmi, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateAttribute failed, Error - %d", result_code); - return result_code; - } - // Parent check - if (ikey->get_key_type() == UNC_KT_VUNKNOWN || - ikey->get_key_type() == UNC_KT_VUNK_IF) { - ConfigKeyVal *okey = NULL; + // Parent check if (ikey->get_key_type() == UNC_KT_VUNKNOWN) { // Vnode Existence check in CANDIDATE DB result_code = VnodeChecks(ikey, req->datatype, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG( "Another Vnode with the same name already exists. Error code : %d", - result_code); + result_code); return result_code; } - result_code = GetParentConfigKey(okey, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in retrieving the parent ConfigKeyVal"); - if (okey) - delete okey; - return UPLL_RC_ERR_GENERIC; - } - MoMgrImpl *vtn_mgr = reinterpret_cast(const_cast - (const_cast(GetMoManager(UNC_KT_VTN)))); - result_code = vtn_mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("Parent doesn't exist!"); - if (okey) - delete okey; - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - }else { - UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); - return result_code; - } - } - if (okey) - delete okey; } + + /* In case of bypass vlink, domain info is required + * so below code is needed */ if (ikey->get_key_type() == UNC_KT_VUNK_IF) { + ConfigKeyVal *okey = NULL; result_code = GetParentConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in retrieving the parent ConfigKeyVal"); @@ -157,1543 +131,1878 @@ upll_rc_t MoMgrImpl::CreateCandidateMo(IpcReqRespHeader *req, delete okey; return UPLL_RC_ERR_GENERIC; } - MoMgrImpl *vunk_mgr = reinterpret_cast(const_cast - (const_cast(GetMoManager(UNC_KT_VUNKNOWN)))); - result_code = vunk_mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + MoMgrImpl *vunk_mgr = reinterpret_cast( + const_cast + (const_cast(GetMoManager(UNC_KT_VUNKNOWN)))); + DbSubOp dboper = { kOpReadSingle, kOpMatchNone, kOpInOutDomain }; + result_code = vunk_mgr->ReadConfigDB(okey, + req->datatype, + UNC_OP_READ, + dboper, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Parent doesn't exist!"); - if (okey) - delete okey; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + delete okey; + okey = NULL; + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_ERR_PARENT_DOES_NOT_EXIST: result_code; + return result_code; } - if (okey) + uint8_t *domain = NULL; + GET_USER_DATA_DOMAIN(okey, domain); + SET_USER_DATA_DOMAIN(ikey, domain); delete okey; + okey = NULL; } - } - // Check if VTN already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - return result_code; - } - if (UPLL_DT_CANDIDATE == req->datatype) { - // Check if VTN exists in RUNNING DB and move it to CANDIDATE DB - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, - UNC_OP_READ, dmi, MAINTBL); - if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code && - UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("Error in UpdateConfigDB %d", result_code); - return result_code; - } - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - return result_code; + + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; + } } - return result_code; + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } - } - // create a record in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi); - return result_code; -} - -upll_rc_t MoMgrImpl::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); - uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); - - /* check if object is renamed in the corresponding Rename Tbl - * if "renamed" create the object by the UNC name. - * else - create using the controller name. - */ - result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); - return result_code; - } - UPLL_LOG_TRACE("ikey After GetRenamedUncKey %s", ikey->ToStrAll().c_str()); - - result_code = SetValidAudit(ikey); - if (UPLL_RC_SUCCESS != result_code) { - return result_code; - } - result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_READ, dmi, MAINTBL); - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && result_code != - UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); + // create a record in CANDIDATE DB + result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi); return result_code; } - result_code = (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : - result_code; - // Create a record in AUDIT DB - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); - } - } - return result_code; -} - -upll_rc_t MoMgrImpl::ReadMo(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ck_dhcp = NULL; - controller_domain ctrlr_dom; - memset(&ctrlr_dom, 0, sizeof(controller_domain)); - - DhcpRelayServerMoMgr *mgr_dhcp = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_DHCPRELAY_SERVER))); - if (!mgr_dhcp) { - UPLL_LOG_DEBUG("Invalid Mgr"); - return UPLL_RC_ERR_GENERIC; - } - // To validate the read request from VTNService - result_code = ValidateMessage(header, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed, result_code= %d", - result_code); + upll_rc_t MoMgrImpl::CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); + uint8_t *controller_id = reinterpret_cast( + const_cast(ctrlr_id)); + + /* check if object is renamed in the corresponding Rename Tbl + * if "renamed" create the object by the UNC name. + * else - create using the controller name. + */ + result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; - } - - if (header->option2 == UNC_OPT2_NEIGHBOR) { - if (ikey->get_key_type() != UNC_KT_VUNK_IF) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } + UPLL_LOG_TRACE("ikey After GetRenamedUncKey %s", ikey->ToStrAll().c_str()); - if ((header->operation == UNC_OP_READ) && - ((header->datatype == UPLL_DT_CANDIDATE) || - (header->datatype == UPLL_DT_RUNNING) || - (header->datatype == UPLL_DT_STARTUP) || - (header->datatype == UPLL_DT_STATE))) { - result_code = PopulateValVtnNeighbor(ikey, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("PopulateValVtnNeighbor failed result_code %d", result_code); - } + result_code = SetValidAudit(ikey); + if (UPLL_RC_SUCCESS != result_code) { return result_code; } - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - - if ( ((header->option1 != UNC_OPT1_DETAIL) || - ((header->option1 == UNC_OPT1_DETAIL) && - (ikey->get_key_type() == UNC_KT_VBR_NWMONITOR)))&& - header->option2 == UNC_OPT2_NONE) { - result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadInfoFromDB failed, result_code= %d", - result_code); - return result_code; - } - } - if (header->datatype == UPLL_DT_STATE && - (header->option1 != UNC_OPT1_COUNT && - header->option2 == UNC_OPT2_DHCP_RELAY)) { - result_code = mgr_dhcp->GetVrtDhcpRelayServerAddress(ikey, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetVrtDhcpRelayServerAddress Failed"); + result_code = UpdateConfigDB(ikey, + UPLL_DT_AUDIT, + UNC_OP_READ, + dmi, + MAINTBL); + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); return result_code; } - } - if ((header->datatype == UPLL_DT_STATE) && - ((ikey->get_key_type() == UNC_KT_VBR_NWMONITOR) || - (ikey->get_key_type() == UNC_KT_DHCPRELAY_IF) || - ((header->option1 == UNC_OPT1_DETAIL) || - ((header->option2 != UNC_OPT2_DHCP_RELAY) && - (header->option2 != UNC_OPT2_NONE))))) { - // check with karthi GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); - // Getting the controller vtn, vnode name -// result_code = UpdateConfigDB(ikey, header->datatype, UNC_OP_READ, dmi); -// if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { -// UPLL_LOG_ERROR("Record Doesn't Exists in DB "); -// return result_code; -// } - - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; - - if (ikey->get_key_type() != UNC_KT_VTN) { - ctrlr_dom.ctrlr = ctrlr_dom.domain = NULL; - result_code = GetChildConfigKey(ck_dhcp, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey is failed- %d", result_code); - delete ck_dhcp; - return result_code; - } - result_code = ReadConfigDB(ck_dhcp, header->datatype, UNC_OP_READ, dbop, - dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Failed to ReadConfigDb- %d", result_code); - delete ck_dhcp; - return result_code; - } - GET_USER_DATA_CTRLR_DOMAIN(ck_dhcp, ctrlr_dom); - UPLL_LOG_TRACE("Controller Name is: %s", ctrlr_dom.ctrlr); - result_code = ValidateCapability( - header, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); - + result_code = (result_code == + UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : + result_code; + // Create a record in AUDIT DB + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UpdateConfigDB(ikey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability is failed: %d", result_code); - delete ck_dhcp; - return result_code; - } - if (ikey->get_key_type() == UNC_KT_VLINK) { - controller_domain ctrlr_vnode2_ctrlr; - memset(&ctrlr_vnode2_ctrlr, 0, sizeof(controller_domain)); - GET_USER_DATA_CTRLR_DOMAIN(ck_dhcp->get_cfg_val(), ctrlr_vnode2_ctrlr); - UPLL_LOG_INFO("2nd controller name %s", - reinterpret_cast(ctrlr_vnode2_ctrlr.ctrlr)); - if (strcmp((const char *)ctrlr_vnode2_ctrlr.ctrlr, - (const char *)ctrlr_dom.ctrlr)) { - result_code = ValidateCapability(header, ikey, - reinterpret_cast(ctrlr_vnode2_ctrlr.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability Failed for vlink %d", result_code); - return result_code; - } - } + UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); } } - result_code = GetRenamedControllerKey(ikey, header->datatype, dmi, - &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey failed result_code %d", - result_code); - return result_code; - } - UPLL_LOG_TRACE("After Read %s", (ikey->ToStrAll()).c_str()); + return result_code; + } - IpcResponse ipc_resp; - memset(&(ipc_resp), 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(ipc_req)); - memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); - UPLL_LOG_TRACE("ConfigId %d", ipc_req.header.config_id); - UPLL_LOG_TRACE("Operation %d", ipc_req.header.operation); - UPLL_LOG_TRACE(" DataType %d", ipc_req.header.datatype); - UPLL_LOG_TRACE("Option1 %d Option2 %d", ipc_req.header.option1, ipc_req.header.option2); - ipc_req.ckv_data = ikey; - UPLL_LOG_TRACE("Before Sending to Driver %s", (ikey->ToStrAll()).c_str()); - UPLL_LOG_TRACE("Domain Name %s", ctrlr_dom.domain); - UPLL_LOG_TRACE("Controller Name %s", ctrlr_dom.ctrlr); - - if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), - reinterpret_cast(ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { - UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ikey->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); - return ipc_resp.header.result_code; - } - - UPLL_LOG_TRACE("AfterDriver Read from Controller %s", (ikey->ToStrAll()).c_str()); - // Populate ConfigKeyVal and IpcReqRespHeader with the response from driver - if (ipc_resp.header.result_code == UPLL_RC_SUCCESS) { - ikey->ResetWith(ipc_resp.ckv_data); - } - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - result_code = ipc_resp.header.result_code; - upll_rc_t child_result_code = GetChildConfigKey(ikey, ck_dhcp); - if (UPLL_RC_SUCCESS != child_result_code) { - UPLL_LOG_DEBUG("GetChildConfigKeyFailed %d", child_result_code); - return child_result_code; + upll_rc_t MoMgrImpl::ReadMo(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ck_dhcp = NULL; + controller_domain ctrlr_dom; + memset(&ctrlr_dom, 0, sizeof(controller_domain)); + + DhcpRelayServerMoMgr *mgr_dhcp = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_DHCPRELAY_SERVER))); + if (!mgr_dhcp) { + UPLL_LOG_DEBUG("Invalid Mgr"); + return UPLL_RC_ERR_GENERIC; } - } - UPLL_LOG_TRACE("Before AdaptValtovtnservice %s", (ikey->ToStrAll()).c_str()); - if (result_code == UPLL_RC_SUCCESS && UPLL_DT_IMPORT != header->datatype) { - result_code = AdaptValToVtnService(ikey); + // To validate the read request from VTNService + result_code = ValidateMessage(header, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", - result_code); + UPLL_LOG_DEBUG("ValidateMessage failed, result_code= %d", + result_code); return result_code; } - } - if (ck_dhcp) - delete ck_dhcp; - - return result_code; -} -upll_rc_t MoMgrImpl::ReadSiblingMo(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - bool begin, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - - result_code = ValidateMessage(header, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; - } - - ConfigKeyVal *tkey = NULL; - ConfigKeyVal *start_key = ikey; + if (header->option2 == UNC_OPT2_NEIGHBOR) { + if (ikey->get_key_type() != UNC_KT_VUNK_IF) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } - bool set_flag = false; - if (header->datatype == UPLL_DT_STATE && UNC_OPT2_NONE != header->option2) { - if (ikey->get_cfg_val() == NULL) { - set_flag = true; - result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); - } else { - result_code = GetChildConfigKey(tkey, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + if ((header->operation == UNC_OP_READ) && + ((header->datatype == UPLL_DT_CANDIDATE) || + (header->datatype == UPLL_DT_RUNNING) || + (header->datatype == UPLL_DT_STARTUP) || + (header->datatype == UPLL_DT_STATE))) { + result_code = PopulateValVtnNeighbor(ikey, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("PopulateValVtnNeighbor failed result_code %d", + result_code); + } return result_code; } - result_code = ReadInfoFromDB(header, tkey, dmi, &ctrlr_dom); - ConfigKeyVal *travel_key = tkey; - while (travel_key) { - ConfigVal *travel_val = ikey->get_cfg_val(); - ConfigVal *fval = (travel_val)->DupVal(); - travel_key->SetCfgVal(fval); - while (travel_val) { - travel_val = travel_val->get_next_cfg_val(); - if (travel_val) { - ConfigVal *sval = travel_val->DupVal(); - travel_key->AppendCfgVal(sval); - } else { - break; + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + + if ( ((header->option1 != UNC_OPT1_DETAIL) || + ((header->option1 == UNC_OPT1_DETAIL) && + (ikey->get_key_type() == UNC_KT_VBR_NWMONITOR)))&& + header->option2 == UNC_OPT2_NONE) { + result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + /* VlanmapOnBoundary: vlanmap check added */ + if (ikey->get_key_type() == UNC_KT_VBR_VLANMAP) { + upll_rc_t rc_t = AdaptValToVtnService(ikey); + if (rc_t != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", rc_t); + return UPLL_RC_ERR_GENERIC; } } - travel_key = travel_key->get_next_cfg_key_val(); + UPLL_LOG_DEBUG("ReadInfoFromDB failed, result_code= %d", result_code); + return result_code; } - ikey =tkey; } - } else { - set_flag = true; - result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); - } - - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadInfoFromDB failed result_code %d", - result_code); - return result_code; - } - - if (header->datatype == UPLL_DT_STATE && - ((ikey->get_key_type() == UNC_KT_VBR_NWMONITOR) || - (ikey->get_key_type() == UNC_KT_DHCPRELAY_IF) || - header->option1 == UNC_OPT1_DETAIL || - header->option2 != UNC_OPT2_NONE)) { - // ikey is retained in next_ckv, and then refered by end_resp_ckv. Once the - // while loop is executed once, end_resp_ckv and ikey point to same. - ConfigKeyVal *end_resp_ckv = NULL; - ConfigKeyVal *one_ckv , *next_ckv; - - next_ckv = ikey; - ConfigKeyVal *end_resp_ckv_tail = NULL; - while (NULL != next_ckv) { - one_ckv = next_ckv; - next_ckv = next_ckv->get_next_cfg_key_val(); - one_ckv->set_next_cfg_key_val(NULL); - GET_USER_DATA_CTRLR_DOMAIN(one_ckv, ctrlr_dom); - // Get controller key - // TODO(myself) GetReanmedControllerKey changes the actual data - // and same will go to VTN Service. BUG. - if (header->datatype == UPLL_DT_STATE && - (header->option1 != UNC_OPT1_COUNT && - header->option2 == UNC_OPT2_DHCP_RELAY)) { - DhcpRelayServerMoMgr *mgr_dhcp = - reinterpret_cast - (const_cast(GetMoManager(UNC_KT_DHCPRELAY_SERVER))); - if (!mgr_dhcp) { - UPLL_LOG_DEBUG("Invalid Mgr"); + /* VlanmapOnBoundary: vlanmap check added */ + if (result_code == UPLL_RC_SUCCESS && (ikey->get_key_type() == + UNC_KT_VBR_VLANMAP)) { + uint8_t user_flag = 0, vlanmap_flag =0; + GET_USER_DATA_FLAGS(ikey, vlanmap_flag); + user_flag = USER_VLANMAP_FLAG & vlanmap_flag; + if (!user_flag) { + upll_rc_t rc_t = AdaptValToVtnService(ikey); + if (rc_t != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", rc_t); return UPLL_RC_ERR_GENERIC; } - result_code = mgr_dhcp->GetVrtDhcpRelayServerAddress(one_ckv, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetVrtDhcpRelayServerAddress Failed"); - return result_code; - } - if (header->option1 == UNC_OPT1_NORMAL) { - if (end_resp_ckv == NULL) { - end_resp_ckv = ikey; - } else { - end_resp_ckv->AppendCfgKeyVal(one_ckv); - } - continue; - } - } - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutFlag - | kOpInOutDomain }; - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, one_ckv); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - return result_code; - } - result_code = ReadConfigDB(temp_key, header->datatype, - UNC_OP_READ, dbop1, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; + UPLL_LOG_DEBUG("vlan map is not user configured by user"); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; } - memset(&ctrlr_dom, 0, sizeof(controller_domain)); - GET_USER_DATA_CTRLR_DOMAIN(temp_key, ctrlr_dom); + } - result_code = ValidateCapability( - header, one_ckv, reinterpret_cast - (ctrlr_dom.ctrlr)); + if (header->datatype == UPLL_DT_STATE && + (header->option1 != UNC_OPT1_COUNT && + header->option2 == UNC_OPT2_DHCP_RELAY)) { + result_code = mgr_dhcp->GetVrtDhcpRelayServerAddress(ikey, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); + UPLL_LOG_DEBUG("GetVrtDhcpRelayServerAddress Failed"); return result_code; } - if (ikey->get_key_type() == UNC_KT_VLINK) { - controller_domain ctrlr_vnode2_ctrlr; - memset(&ctrlr_vnode2_ctrlr, 0, sizeof(controller_domain)); - GET_USER_DATA_CTRLR_DOMAIN(temp_key->get_cfg_val(), ctrlr_vnode2_ctrlr); - if (strcmp((const char *)ctrlr_vnode2_ctrlr.ctrlr, - (const char *)ctrlr_dom.ctrlr)) { - result_code = ValidateCapability(header, one_ckv, - reinterpret_cast(ctrlr_vnode2_ctrlr.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; + } + if ((header->datatype == UPLL_DT_STATE) && + ((ikey->get_key_type() == UNC_KT_VBR_NWMONITOR) || + (ikey->get_key_type() == UNC_KT_DHCPRELAY_IF) || + ((header->option1 == UNC_OPT1_DETAIL) || + ((header->option2 != UNC_OPT2_DHCP_RELAY) && + (header->option2 != UNC_OPT2_NONE))))) { + // check with karthi GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + // Getting the controller vtn, vnode name + // result_code = UpdateConfigDB(ikey, + // header->datatype, + // UNC_OP_READ, + // dmi); + // if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + // UPLL_LOG_ERROR("Record Doesn't Exists in DB "); + // return result_code; + // } + + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain }; + + if (ikey->get_key_type() != UNC_KT_VTN) { + ctrlr_dom.ctrlr = ctrlr_dom.domain = NULL; + result_code = GetChildConfigKey(ck_dhcp, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey is failed- %d", result_code); + delete ck_dhcp; + return result_code; + } + result_code = ReadConfigDB(ck_dhcp, + header->datatype, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Failed to ReadConfigDb- %d", result_code); + delete ck_dhcp; + return result_code; + } + GET_USER_DATA_CTRLR_DOMAIN(ck_dhcp, ctrlr_dom); + UPLL_LOG_TRACE("Controller Name is: %s", ctrlr_dom.ctrlr); + result_code = ValidateCapability( + header, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateCapability is failed: %d", result_code); + delete ck_dhcp; + return result_code; + } + if (ikey->get_key_type() == UNC_KT_VLINK) { + controller_domain ctrlr_vnode2_ctrlr; + memset(&ctrlr_vnode2_ctrlr, 0, sizeof(controller_domain)); + GET_USER_DATA_CTRLR_DOMAIN(ck_dhcp->get_cfg_val(), + ctrlr_vnode2_ctrlr); + UPLL_LOG_INFO("2nd controller name %s", + reinterpret_cast + (ctrlr_vnode2_ctrlr.ctrlr)); + if (strcmp((const char *)ctrlr_vnode2_ctrlr.ctrlr, + (const char *)ctrlr_dom.ctrlr)) { + result_code = ValidateCapability( + header, + ikey, + reinterpret_cast(ctrlr_vnode2_ctrlr.ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateCapability Failed for vlink %d", + result_code); + DELETE_IF_NOT_NULL(ck_dhcp); + return result_code; + } } } } - result_code = GetRenamedControllerKey(one_ckv, header->datatype, dmi, - &ctrlr_dom); + result_code = GetRenamedControllerKey(ikey, header->datatype, dmi, + &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed result_code %d", - result_code); - DELETE_IF_NOT_NULL(temp_key); + result_code); + DELETE_IF_NOT_NULL(ck_dhcp); return result_code; } - if (UNC_KT_VBRIDGE == one_ckv->get_key_type() && - UNC_OPT2_NONE != header->option2) { - UPLL_LOG_DEBUG("Set NULL for ConfigVal"); - one_ckv->SetCfgVal(NULL); - } - UPLL_LOG_TRACE("After Read %s", (one_ckv->ToStrAll()).c_str()); + UPLL_LOG_TRACE("After Read %s", (ikey->ToStrAll()).c_str()); + IpcResponse ipc_resp; memset(&(ipc_resp), 0, sizeof(IpcResponse)); IpcRequest ipc_req; memset(&ipc_req, 0, sizeof(ipc_req)); memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); - ipc_req.header.operation = UNC_OP_READ; - ipc_req.ckv_data = one_ckv; + UPLL_LOG_TRACE("ConfigId %d", ipc_req.header.config_id); + UPLL_LOG_TRACE("Operation %d", ipc_req.header.operation); + UPLL_LOG_TRACE(" DataType %d", ipc_req.header.datatype); + UPLL_LOG_TRACE("Option1 %d Option2 %d", ipc_req.header.option1, + ipc_req.header.option2); + ipc_req.ckv_data = ikey; + UPLL_LOG_TRACE("Before Sending to Driver %s", + (ikey->ToStrAll()).c_str()); + UPLL_LOG_TRACE("Domain Name %s", ctrlr_dom.domain); + UPLL_LOG_TRACE("Controller Name %s", ctrlr_dom.ctrlr); if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), - reinterpret_cast(ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_resp)) { UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - one_ckv->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); + ikey->get_key_type(), reinterpret_cast + (ctrlr_dom.ctrlr)); + DELETE_IF_NOT_NULL(ck_dhcp); return ipc_resp.header.result_code; } + UPLL_LOG_TRACE("AfterDriver Read from Controller %s", - (one_ckv->ToStrAll()).c_str()); - // Populate ConfigKeyVal with the response from driver + (ikey->ToStrAll()).c_str()); + // Populate ConfigKeyVal and IpcReqRespHeader + // with the response from driver if (ipc_resp.header.result_code == UPLL_RC_SUCCESS) { - one_ckv->ResetWith(ipc_resp.ckv_data); - delete ipc_resp.ckv_data; - } else { - DELETE_IF_NOT_NULL(temp_key); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - return ipc_resp.header.result_code; - } - if (end_resp_ckv == NULL) { - end_resp_ckv = ikey; // ikey and one_ckv should be same here - if (one_ckv == ikey) { - UPLL_LOG_TRACE("ikey has val"); - } else { - UPLL_LOG_TRACE("ikey %p one_ckv %p", ikey, one_ckv); - } - end_resp_ckv_tail = end_resp_ckv; - } else { - end_resp_ckv_tail->AppendCfgKeyVal(one_ckv); - end_resp_ckv_tail = one_ckv; - UPLL_LOG_TRACE("ikey %p one_ckv %p end_ckv %p", ikey, - one_ckv, end_resp_ckv); + ikey->ResetWith(ipc_resp.ckv_data); } + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); result_code = ipc_resp.header.result_code; - upll_rc_t child_result_code = GetChildConfigKey(one_ckv, temp_key); + upll_rc_t child_result_code = GetChildConfigKey(ikey, ck_dhcp); if (UPLL_RC_SUCCESS != child_result_code) { - DELETE_IF_NOT_NULL(temp_key); - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", child_result_code); + UPLL_LOG_DEBUG("GetChildConfigKeyFailed %d", child_result_code); + DELETE_IF_NOT_NULL(ck_dhcp); return child_result_code; } - - DELETE_IF_NOT_NULL(temp_key); - UPLL_LOG_TRACE("AfterDriver Read from Controller %s", - (one_ckv->ToStrAll()).c_str()); - } - - UPLL_LOG_TRACE("BEFORE REST WITHr %s", - (end_resp_ckv->ToStrAll()).c_str()); - if (!set_flag && end_resp_ckv) { - start_key->ResetWith(end_resp_ckv); - delete end_resp_ckv; } - UPLL_LOG_TRACE("AFTER REST WITHr %s", - (end_resp_ckv->ToStrAll()).c_str()); - } - - if (header->rep_count > 0) { - if (result_code == UPLL_RC_SUCCESS - && UPLL_DT_IMPORT != header->datatype) { - result_code = AdaptValToVtnService(start_key); + UPLL_LOG_TRACE("Before AdaptValtovtnservice %s", + (ikey->ToStrAll()).c_str()); + if (result_code == UPLL_RC_SUCCESS && UPLL_DT_IMPORT != header->datatype) { + result_code = AdaptValToVtnService(ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", - result_code); + result_code); + DELETE_IF_NOT_NULL(ck_dhcp); return result_code; } } + if (ck_dhcp) + delete ck_dhcp; + + return result_code; } - return result_code; -} + upll_rc_t MoMgrImpl::ReadSiblingMo(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; -upll_rc_t MoMgrImpl::ReadSiblingCount(IpcReqRespHeader *header, - ConfigKeyVal* ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - // To validate the read sibling count request from VTNService - result_code = ValidateMessage(header, ikey); - if (result_code != UPLL_RC_SUCCESS) { + result_code = ValidateMessage(header, ikey); + if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); + result_code); return result_code; - } -#if 0 - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutFlag - | kOpInOutDomain }; - - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - return result_code; - } - result_code = ReadConfigDB(temp_key, header->datatype, - UNC_OP_READ, dbop1, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - return result_code; - } - GET_USER_DATA_CTRLR_DOMAIN(temp_key, ctrlr_dom); - - result_code = ValidateCapability( - header, ikey, reinterpret_cast - (ctrlr_dom.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); - return result_code; - } - if (ikey->get_key_type() == UNC_KT_VLINK) { - controller_domain ctrlr_vnode2_ctrlr; - memset(&ctrlr_vnode2_ctrlr, 0, sizeof(controller_domain)); - GET_USER_DATA_CTRLR_DOMAIN(temp_key->get_cfg_val(), ctrlr_vnode2_ctrlr); - if (strcmp((const char *)ctrlr_vnode2_ctrlr.ctrlr, - (const char *)ctrlr_dom.ctrlr)) { - result_code = ValidateCapability(header, ikey, - reinterpret_cast(ctrlr_vnode2_ctrlr.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); - return result_code; - } } - } -#endif - result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); - return result_code; -} -upll_rc_t MoMgrImpl::ReadInfoFromDB(IpcReqRespHeader *header, - ConfigKeyVal* ikey, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - #if 0 - MoMgrTables tbl = (header->operation != UNC_OP_READ_SIBLING_COUNT && - header->datatype == UPLL_DT_IMPORT) ? RENAMETBL:MAINTBL; - #endif - MoMgrTables tbl = MAINTBL; - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; - // To validate the READ, READ_SIBLING, READ_SIBLING_BEGIN - // and READ_SIBLING_COUNT message - /* There is not difference between show running configuration - * and show running configuration status in the request. so - * binding cs statuin in ruuing. Once the request is differentiate - * have to modify here - */ - if (UPLL_DT_RUNNING == header->datatype) { - UPLL_LOG_TRACE("Status Flag enabled"); - dbop.inoutop |= kOpInOutCs; - } else if(KEY_TYPE_BIND_CS(ikey->get_key_type())) { - UPLL_LOG_TRACE("Status Flag enabled"); - dbop.inoutop |= kOpInOutCs; - } + ConfigKeyVal *tkey = NULL; + ConfigKeyVal *start_key = ikey; - switch (header->datatype) { - case UPLL_DT_IMPORT: - if (header->operation != UNC_OP_READ_SIBLING_COUNT) { - result_code = ReadImportDB(ikey, header, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadImportDB failed %d", result_code); - return result_code; - } + bool set_flag = false; + if (header->datatype == UPLL_DT_STATE && UNC_OPT2_NONE != + header->option2) { + if (ikey->get_cfg_val() == NULL) { + set_flag = true; + result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); + } else { + result_code = GetChildConfigKey(tkey, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + result_code = ReadInfoFromDB(header, tkey, dmi, &ctrlr_dom); + ConfigKeyVal *travel_key = tkey; + while (travel_key) { + ConfigVal *travel_val = ikey->get_cfg_val(); + ConfigVal *fval = (travel_val)->DupVal(); + travel_key->SetCfgVal(fval); + while (travel_val) { + travel_val = travel_val->get_next_cfg_val(); + if (travel_val) { + ConfigVal *sval = travel_val->DupVal(); + travel_key->AppendCfgVal(sval); + } else { + break; + } + } + travel_key = travel_key->get_next_cfg_key_val(); + } + ikey =tkey; + } + } else { + set_flag = true; + result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); + } + + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadInfoFromDB failed result_code %d", + result_code); + DELETE_IF_NOT_NULL(tkey); return result_code; } - break; - case UPLL_DT_CANDIDATE: - case UPLL_DT_RUNNING: - case UPLL_DT_STARTUP: - case UPLL_DT_STATE: - { - // To read the record(s) from DB - upll_keytype_datatype_t dt_type = - (ikey->get_key_type() == UNC_KT_VBR_NWMONITOR_HOST && - header->datatype == UPLL_DT_STATE) ? - UPLL_DT_RUNNING : header->datatype; - ConfigVal *cval = ikey->get_cfg_val(); - ConfigVal *new_cval = NULL; - ConfigVal *orig_new_cval = NULL; - if (cval) { - while (cval) { - UPLL_LOG_TRACE("Allocate new value struct..."); - AllocVal(new_cval, dt_type, MAINTBL); - if (orig_new_cval == NULL) - orig_new_cval = new_cval; - const pfc_ipcstdef_t *st_def = IpctSt::GetIpcStdef( - cval->get_st_num()); - UPLL_LOG_TRACE("Allocate new value struct for st_num:%d...", cval->get_st_num()); - memcpy(new_cval->get_val(), cval->get_val(), st_def->ist_size); - if (dt_type == UPLL_DT_STATE) { - cval = cval->get_next_cfg_val(); - new_cval = new_cval->get_next_cfg_val(); + + if (header->datatype == UPLL_DT_STATE && + ((ikey->get_key_type() == UNC_KT_VBR_NWMONITOR) || + (ikey->get_key_type() == UNC_KT_DHCPRELAY_IF) || + header->option1 == UNC_OPT1_DETAIL || + header->option2 != UNC_OPT2_NONE)) { + // ikey is retained in next_ckv, and then refered by + // end_resp_ckv. Once the + // while loop is executed once, end_resp_ckv and ikey + // point to same. + ConfigKeyVal *end_resp_ckv = NULL; + ConfigKeyVal *one_ckv , *next_ckv; + + next_ckv = ikey; + ConfigKeyVal *end_resp_ckv_tail = NULL; + while (NULL != next_ckv) { + one_ckv = next_ckv; + next_ckv = next_ckv->get_next_cfg_key_val(); + one_ckv->set_next_cfg_key_val(NULL); + GET_USER_DATA_CTRLR_DOMAIN(one_ckv, ctrlr_dom); + // Get controller key + // TODO(myself) GetReanmedControllerKey changes the actual data + // and same will go to VTN Service. BUG. + if (header->datatype == UPLL_DT_STATE && + (header->option1 != UNC_OPT1_COUNT && + header->option2 == UNC_OPT2_DHCP_RELAY)) { + DhcpRelayServerMoMgr *mgr_dhcp = + reinterpret_cast + (const_cast(GetMoManager(UNC_KT_DHCPRELAY_SERVER))); + if (!mgr_dhcp) { + UPLL_LOG_DEBUG("Invalid Mgr"); + DELETE_IF_NOT_NULL(tkey); + return UPLL_RC_ERR_GENERIC; + } + result_code = mgr_dhcp->GetVrtDhcpRelayServerAddress(one_ckv, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetVrtDhcpRelayServerAddress Failed"); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + if (header->option1 == UNC_OPT1_NORMAL) { + if (end_resp_ckv == NULL) { + end_resp_ckv = ikey; + } else { + end_resp_ckv->AppendCfgKeyVal(one_ckv); + } + continue; + } + } + + DbSubOp dbop1 = { kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr | kOpInOutFlag + | kOpInOutDomain }; + ConfigKeyVal *temp_key = NULL; + result_code = GetChildConfigKey(temp_key, one_ckv); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + result_code = ReadConfigDB(temp_key, header->datatype, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + memset(&ctrlr_dom, 0, sizeof(controller_domain)); + GET_USER_DATA_CTRLR_DOMAIN(temp_key, ctrlr_dom); + + result_code = ValidateCapability( + header, one_ckv, reinterpret_cast + (ctrlr_dom.ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + if (ikey->get_key_type() == UNC_KT_VLINK) { + controller_domain ctrlr_vnode2_ctrlr; + memset(&ctrlr_vnode2_ctrlr, 0, sizeof(controller_domain)); + GET_USER_DATA_CTRLR_DOMAIN(temp_key->get_cfg_val(), + ctrlr_vnode2_ctrlr); + if (strcmp((const char *)ctrlr_vnode2_ctrlr.ctrlr, + (const char *)ctrlr_dom.ctrlr)) { + result_code = ValidateCapability(header, + one_ckv, + reinterpret_cast + + (ctrlr_vnode2_ctrlr.ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + } + } + result_code = GetRenamedControllerKey(one_ckv, header->datatype, dmi, + &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetRenamedControllerKey failed result_code %d", + result_code); + DELETE_IF_NOT_NULL(temp_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + if (UNC_KT_VBRIDGE == one_ckv->get_key_type() && + UNC_OPT2_NONE != header->option2) { + UPLL_LOG_DEBUG("Set NULL for ConfigVal"); + one_ckv->SetCfgVal(NULL); + } + UPLL_LOG_TRACE("After Read %s", (one_ckv->ToStrAll()).c_str()); + IpcResponse ipc_resp; + memset(&(ipc_resp), 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); + ipc_req.header.operation = UNC_OP_READ; + ipc_req.ckv_data = one_ckv; + + if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), + reinterpret_cast + (ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_resp)) { + UPLL_LOG_INFO("Request to driver for Key %d for" + "controller %s failed ", + one_ckv->get_key_type(), reinterpret_cast + (ctrlr_dom.ctrlr)); + DELETE_IF_NOT_NULL(temp_key); + DELETE_IF_NOT_NULL(tkey); + return ipc_resp.header.result_code; + } + UPLL_LOG_TRACE("AfterDriver Read from Controller %s", + (one_ckv->ToStrAll()).c_str()); + // Populate ConfigKeyVal with the response from driver + if (ipc_resp.header.result_code == UPLL_RC_SUCCESS) { + one_ckv->ResetWith(ipc_resp.ckv_data); + delete ipc_resp.ckv_data; + } else { + DELETE_IF_NOT_NULL(temp_key); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(tkey); + return ipc_resp.header.result_code; + } + if (end_resp_ckv == NULL) { + end_resp_ckv = ikey; // ikey and one_ckv should be same here + if (one_ckv == ikey) { + UPLL_LOG_TRACE("ikey has val"); } else { - break; + UPLL_LOG_TRACE("ikey %p one_ckv %p", ikey, one_ckv); } + end_resp_ckv_tail = end_resp_ckv; + } else { + end_resp_ckv_tail->AppendCfgKeyVal(one_ckv); + end_resp_ckv_tail = one_ckv; + UPLL_LOG_TRACE("ikey %p one_ckv %p end_ckv %p", ikey, + one_ckv, end_resp_ckv); } - ikey->SetCfgVal(orig_new_cval); - } - if (header->operation == UNC_OP_READ) { - result_code = ReadConfigDB(ikey, dt_type, header->operation, - dbop, dmi, tbl); - } else { - if ((header->operation == UNC_OP_READ_SIBLING_BEGIN) || - (header->operation == UNC_OP_READ_SIBLING)) { - dbop.readop = kOpReadMultiple; - } else if (header->operation == UNC_OP_READ_SIBLING_COUNT) { - dbop.readop = kOpReadCount; + result_code = ipc_resp.header.result_code; + upll_rc_t child_result_code = GetChildConfigKey(one_ckv, temp_key); + if (UPLL_RC_SUCCESS != child_result_code) { + DELETE_IF_NOT_NULL(temp_key); + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", child_result_code); + DELETE_IF_NOT_NULL(tkey); + return child_result_code; } - UPLL_LOG_TRACE("Before the Read ConfigVal is %s", (ikey->ToStrAll()).c_str()); - result_code = ReadConfigDB(ikey, dt_type, header->operation, - dbop, header->rep_count, dmi, tbl); - UPLL_LOG_TRACE("After the Read ConfigVal is %s", (ikey->ToStrAll()).c_str()); + DELETE_IF_NOT_NULL(temp_key); + UPLL_LOG_TRACE("AfterDriver Read from Controller %s", + (one_ckv->ToStrAll()).c_str()); } - break; + + UPLL_LOG_TRACE("BEFORE REST WITHr %s", + (end_resp_ckv->ToStrAll()).c_str()); + if (!set_flag && end_resp_ckv) { + start_key->ResetWith(end_resp_ckv); + delete end_resp_ckv; + } + UPLL_LOG_TRACE("AFTER REST WITHr %s", + (end_resp_ckv->ToStrAll()).c_str()); } - default: - break; - } - if (result_code != UPLL_RC_SUCCESS) - UPLL_LOG_DEBUG("Returning %d", result_code); - return result_code; -} -upll_rc_t MoMgrImpl::ValidateDeleteMoReq(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - // uint8_t rename = 0; + if (header->rep_count > 0) { + if (result_code == UPLL_RC_SUCCESS + && UPLL_DT_IMPORT != header->datatype) { + result_code = AdaptValToVtnService(start_key); + + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", + result_code); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + } + } - if (!ikey || !req || !(ikey->get_key())) { - UPLL_LOG_ERROR("Given Input is Empty") - return UPLL_RC_ERR_GENERIC; + return result_code; } - UPLL_LOG_TRACE("Delete Operation for %d ", ikey->get_key_type()); - // cout << *ikey << ""; - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("Validate Message is Failed %d ", result_code); + + upll_rc_t MoMgrImpl::ReadSiblingCount(IpcReqRespHeader *header, + ConfigKeyVal* ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + // To validate the read sibling count request from VTNService + result_code = ValidateMessage(header, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; + } +#if 0 + DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutFlag + | kOpInOutDomain }; + + ConfigKeyVal *temp_key = NULL; + result_code = GetChildConfigKey(temp_key, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + result_code = ReadConfigDB(temp_key, header->datatype, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + return result_code; + } + GET_USER_DATA_CTRLR_DOMAIN(temp_key, ctrlr_dom); + + result_code = ValidateCapability( + header, ikey, reinterpret_cast + (ctrlr_dom.ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); + return result_code; + } + if (ikey->get_key_type() == UNC_KT_VLINK) { + controller_domain ctrlr_vnode2_ctrlr; + memset(&ctrlr_vnode2_ctrlr, 0, sizeof(controller_domain)); + GET_USER_DATA_CTRLR_DOMAIN(temp_key->get_cfg_val(), ctrlr_vnode2_ctrlr); + if (strcmp((const char *)ctrlr_vnode2_ctrlr.ctrlr, + (const char *)ctrlr_dom.ctrlr)) { + result_code = ValidateCapability(header, + ikey, + reinterpret_cast + (ctrlr_vnode2_ctrlr.ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); + return result_code; + } + } + } +#endif + result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); return result_code; } - result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_READ, dmi); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_ERROR("Record Doesn't Exists in DB "); + + upll_rc_t MoMgrImpl::ReadInfoFromDB(IpcReqRespHeader *header, + ConfigKeyVal* ikey, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; +#if 0 + MoMgrTables tbl = (header->operation != UNC_OP_READ_SIBLING_COUNT && + header->datatype == UPLL_DT_IMPORT) ? RENAMETBL:MAINTBL; +#endif + MoMgrTables tbl = MAINTBL; + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; + // To validate the READ, READ_SIBLING, READ_SIBLING_BEGIN + // and READ_SIBLING_COUNT message + /* There is not difference between show running configuration + * and show running configuration status in the request. so + * binding cs statuin in ruuing. Once the request is differentiate + * have to modify here + */ + if (UPLL_DT_RUNNING == header->datatype) { + UPLL_LOG_TRACE("Status Flag enabled"); + dbop.inoutop |= kOpInOutCs; + } else if (KEY_TYPE_BIND_CS(ikey->get_key_type())) { + UPLL_LOG_TRACE("Status Flag enabled"); + dbop.inoutop |= kOpInOutCs; + } + + switch (header->datatype) { + case UPLL_DT_IMPORT: + if (header->operation != UNC_OP_READ_SIBLING_COUNT) { + result_code = ReadImportDB(ikey, header, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadImportDB failed %d", result_code); + return result_code; + } + return result_code; + } + break; + case UPLL_DT_CANDIDATE: + case UPLL_DT_RUNNING: + case UPLL_DT_STARTUP: + case UPLL_DT_STATE: + { + // To read the record(s) from DB + upll_keytype_datatype_t dt_type = + (ikey->get_key_type() == UNC_KT_VBR_NWMONITOR_HOST && + header->datatype == UPLL_DT_STATE) ? + UPLL_DT_RUNNING : header->datatype; + ConfigVal *cval = ikey->get_cfg_val(); + ConfigVal *new_cval = NULL; + ConfigVal *orig_new_cval = NULL; + if (cval) { + while (cval) { + UPLL_LOG_TRACE("Allocate new value struct..."); + AllocVal(new_cval, dt_type, MAINTBL); + if (orig_new_cval == NULL) + orig_new_cval = new_cval; + const pfc_ipcstdef_t *st_def = IpctSt::GetIpcStdef( + cval->get_st_num()); + UPLL_LOG_TRACE("Allocate new value struct for st_num:%d...", + cval->get_st_num()); + memcpy(new_cval->get_val(), cval->get_val(), st_def->ist_size); + if (dt_type == UPLL_DT_STATE) { + cval = cval->get_next_cfg_val(); + new_cval = new_cval->get_next_cfg_val(); + } else { + break; + } + } + ikey->SetCfgVal(orig_new_cval); + } + if (header->operation == UNC_OP_READ) { + result_code = ReadConfigDB(ikey, dt_type, header->operation, + dbop, dmi, tbl); + } else { + if ((header->operation == UNC_OP_READ_SIBLING_BEGIN) || + (header->operation == UNC_OP_READ_SIBLING)) { + dbop.readop = kOpReadMultiple; + } else if (header->operation == UNC_OP_READ_SIBLING_COUNT) { + dbop.readop = kOpReadCount; + } + UPLL_LOG_TRACE("Before the Read ConfigVal is %s", + (ikey->ToStrAll()).c_str()); + + result_code = ReadConfigDB(ikey, dt_type, header->operation, + dbop, header->rep_count, dmi, tbl); + UPLL_LOG_TRACE("After the Read ConfigVal is %s", + (ikey->ToStrAll()).c_str()); + } + break; + } + default: + break; + } + if (result_code != UPLL_RC_SUCCESS) + UPLL_LOG_DEBUG("Returning %d", result_code); return result_code; - } else { - result_code = UPLL_RC_SUCCESS; } + + upll_rc_t MoMgrImpl::ValidateDeleteMoReq(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + // uint8_t rename = 0; + + if (!ikey || !req || !(ikey->get_key())) { + UPLL_LOG_ERROR("Given Input is Empty") + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_TRACE("Delete Operation for %d ", ikey->get_key_type()); + // cout << *ikey << ""; + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Validate Message is Failed %d ", result_code); + return result_code; + } + result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_READ, dmi); + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_ERROR("Record Doesn't Exists in DB "); + return result_code; + } else { + result_code = UPLL_RC_SUCCESS; + } #if 1 - result_code = IsReferenced(ikey, req->datatype, dmi); - if (UPLL_RC_SUCCESS != result_code) { + result_code = IsReferenced(ikey, req->datatype, dmi); + if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_ERROR("Semantic Error - IsReferenced ErrorCode: %d", result_code); return result_code; // Semantic Error - } + } +#endif + +#if 0 + /* Check if vrouter admin status is disabled */ + result_code = IsAdminStatusEnable(ikey, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("IsAdminStatusEnable Failed %d ", result_code); + return result_code; + } #endif - #if 0 - /* Check if vrouter admin status is disabled */ - result_code = IsAdminStatusEnable(ikey, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("IsAdminStatusEnable Failed %d ", result_code); return result_code; } - #endif - - return result_code; -} -upll_rc_t MoMgrImpl::DeleteMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = ValidateDeleteMoReq(req, ikey, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Returning Error - %d", result_code); - return result_code; // Semantic Error - } - result_code = DeleteCandidateMo(req, ikey, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Returning Error - %d", result_code); + upll_rc_t MoMgrImpl::DeleteMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = ValidateDeleteMoReq(req, ikey, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Returning Error - %d", result_code); + return result_code; // Semantic Error + } + result_code = DeleteCandidateMo(req, ikey, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Returning Error - %d", result_code); + } + return result_code; } - return result_code; -} -upll_rc_t MoMgrImpl::DeleteCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - bool fail = false; + upll_rc_t MoMgrImpl::DeleteCandidateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + bool fail = false; #if 0 - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - // uint8_t rename = 0; - bool fail = false; + upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + // uint8_t rename = 0; + bool fail = false; - if (!ikey || !req || !(ikey->get_key())) { - UPLL_LOG_ERROR("Given Input is Empty") - return result_code; - } - UPLL_LOG_TRACE("Delete Operation for %d ", ikey->get_key_type()); - // cout << *ikey << ""; - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("Validate Message is Failed %d ", result_code); - return result_code; - } - result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_READ, dmi); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_ERROR("Record Doesn't Exists in DB "); - return result_code; - } - result_code = IsReferenced(ikey, req->datatype, dmi); - if (UPLL_RC_SUCCESS != result_code) { + if (!ikey || !req || !(ikey->get_key())) { + UPLL_LOG_ERROR("Given Input is Empty") + return result_code; + } + UPLL_LOG_TRACE("Delete Operation for %d ", ikey->get_key_type()); + // cout << *ikey << ""; + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Validate Message is Failed %d ", result_code); + return result_code; + } + result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_READ, dmi); + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_ERROR("Record Doesn't Exists in DB "); + return result_code; + } + result_code = IsReferenced(ikey, req->datatype, dmi); + if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_ERROR("Semantic Error - IsReferenced "); return result_code; // Semantic Error - } + } #endif - upll_rc_t result_code = DeleteChildren(ikey, req->datatype, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { + upll_rc_t result_code = DeleteChildren(ikey, ikey, req->datatype, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_ERROR("DeleteChildren %d", result_code); return result_code; // Semantic Error - } - for (int i = 0; i < ntable; i++) { - if (GetTable((MoMgrTables)i, UPLL_DT_CANDIDATE) >= uudst::kDalNumTables) { - continue; } - DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; - result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, - UNC_OP_DELETE, dmi, &dbop, (MoMgrTables)i); - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Delete Operation fails with %d", result_code); - fail = true; + for (int i = 0; i < ntable; i++) { + if (GetTable((MoMgrTables)i, UPLL_DT_CANDIDATE) >= + uudst::kDalNumTables) { + continue; + } + DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; + result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, + UNC_OP_DELETE, dmi, &dbop, (MoMgrTables)i); + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS:result_code; + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Delete Operation fails with %d", result_code); + fail = true; + } } + return ((fail == true)?UPLL_RC_ERR_GENERIC:UPLL_RC_SUCCESS); } - return ((fail == true)?UPLL_RC_ERR_GENERIC:UPLL_RC_SUCCESS); -} -upll_rc_t MoMgrImpl::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; + upll_rc_t MoMgrImpl::UpdateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - if (NULL == ikey || NULL == req || !(ikey->get_key())) { - UPLL_LOG_ERROR("Given Input is Empty"); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_INFO("UpdateMo for %d", ikey->get_key_type()); - result_code = ValidateMessage(req, ikey); - if (UPLL_RC_SUCCESS != result_code) { + upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + if (NULL == ikey || NULL == req || !(ikey->get_key())) { + UPLL_LOG_ERROR("Given Input is Empty"); + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_INFO("UpdateMo for %d", ikey->get_key_type()); + result_code = ValidateMessage(req, ikey); + if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_ERROR("Validation Message is Failed "); return result_code; - } - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = ctrlr_dom.domain = NULL; - ConfigKeyVal *temp_ck = NULL; - result_code = GetChildConfigKey(temp_ck, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("Error in retrieving the Child ConfigKeyVal"); - if (temp_ck) + } + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = ctrlr_dom.domain = NULL; + ConfigKeyVal *temp_ck = NULL; + result_code = GetChildConfigKey(temp_ck, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Error in retrieving the Child ConfigKeyVal"); + if (temp_ck) + delete temp_ck; + return result_code; + } + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain }; + result_code = ReadConfigDB(temp_ck, req->datatype, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); delete temp_ck; - return result_code; - } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; - result_code = ReadConfigDB(temp_ck, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + return result_code; + } + GET_USER_DATA_CTRLR_DOMAIN(temp_ck, ctrlr_dom); + SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + if (ikey->get_key_type() != UNC_KT_VTN) { + result_code = ValidateCapability( + req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Validate Capability is Failed. Error_code : %d", + result_code); + delete temp_ck; + return result_code; + } + } delete temp_ck; - return result_code; - } - GET_USER_DATA_CTRLR_DOMAIN(temp_ck, ctrlr_dom); - SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); - if (ikey->get_key_type() != UNC_KT_VTN) { - result_code = ValidateCapability( - req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + // ValidateAttribute needs Controller Domain + result_code = ValidateAttribute(ikey, dmi, req); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Validate Capability is Failed. Error_code : %d", - result_code); - delete temp_ck; + UPLL_LOG_ERROR("Validate Attribute is Failed"); return result_code; } - } - delete temp_ck; - // ValidateAttribute needs Controller Domain - result_code = ValidateAttribute(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Validate Attribute is Failed"); + dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; + result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Updation Failure in DB : %d", result_code); return result_code; - } - dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, - dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Updation Failure in DB : %d", result_code); + } + UPLL_LOG_TRACE("Updated Done Successfully %d", result_code); return result_code; } - UPLL_LOG_TRACE("Updated Done Successfully %d", result_code); - return result_code; -} - -/*Return result of validation*/ -upll_rc_t MoMgrImpl::TxVote(unc_key_type_t keytype, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { - UPLL_FUNC_TRACE; - return UPLL_RC_SUCCESS; -} - -/*Return result of validation*/ -upll_rc_t MoMgrImpl::TxEnd(unc_key_type_t keytype, DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - return UPLL_RC_SUCCESS; -} - -/*Invoked to parse the controller vote result*/ -upll_rc_t MoMgrImpl::TxVoteCtrlrStatus(unc_key_type_t keytype, - CtrlrVoteStatusList *ctrlr_vote_status, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t driver_result, result_code; - driver_result = result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *err_key = NULL; - uint8_t* ctrlr_id = NULL; - CtrlrVoteStatusList::iterator cvsListItr; - cvsListItr = ctrlr_vote_status->begin(); - CtrlrVoteStatus *cv_status_ptr; - bool keytype_no_err = false; - - if (OVERLAY_KT(keytype)) + + /*Return result of validation*/ + upll_rc_t MoMgrImpl::TxVote(unc_key_type_t keytype, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { + UPLL_FUNC_TRACE; return UPLL_RC_SUCCESS; + } - for (; cvsListItr != ctrlr_vote_status->end(); ++cvsListItr) { - cv_status_ptr = *cvsListItr; - // Retrieve the controler Id from the CtrlrVoteStatus object - ctrlr_id = reinterpret_cast( - const_cast(cv_status_ptr->ctrlr_id.c_str())); - UPLL_LOG_TRACE("TxVoteCtrlrStatus cvStatus controller ID: %s", - (cv_status_ptr->ctrlr_id).c_str()); - driver_result = (upll_rc_t) cv_status_ptr->upll_ctrlr_result; \ - - if (driver_result == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { - UPLL_LOG_DEBUG(" vote status is controller disconnect"); - continue; - } - if (driver_result == UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("TxVoteCtrlrStatus cvStatus net result: UPLL_RC_SUCCESS"); - continue; - } - // Retrieve the config Key as such from the KeyInfo - for (err_key = cv_status_ptr->err_ckv; err_key; - err_key = err_key->get_next_cfg_key_val()) { - if (keytype != err_key->get_key_type()) - continue; - keytype_no_err = true; - /* if renamed obtain the unc specifc name */ - result_code = GetRenamedUncKey(err_key, UPLL_DT_CANDIDATE, dmi, ctrlr_id); - if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_TRACE("Error in getting renamed name "); + /*Return result of validation*/ + upll_rc_t MoMgrImpl::TxEnd(unc_key_type_t keytype, DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + + /*Invoked to parse the controller vote result*/ + upll_rc_t MoMgrImpl::TxVoteCtrlrStatus( + unc_key_type_t keytype, + CtrlrVoteStatusList *ctrlr_vote_status, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t driver_result, result_code; + driver_result = result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *err_key = NULL; + uint8_t* ctrlr_id = NULL; + CtrlrVoteStatusList::iterator cvsListItr; + cvsListItr = ctrlr_vote_status->begin(); + CtrlrVoteStatus *cv_status_ptr; + bool keytype_no_err = false; + + if (OVERLAY_KT(keytype)) + return UPLL_RC_SUCCESS; + + for (; cvsListItr != ctrlr_vote_status->end(); ++cvsListItr) { + cv_status_ptr = *cvsListItr; + // Retrieve the controler Id from the CtrlrVoteStatus object + ctrlr_id = reinterpret_cast( + const_cast(cv_status_ptr->ctrlr_id.c_str())); + UPLL_LOG_TRACE("TxVoteCtrlrStatus cvStatus controller ID: %s", + (cv_status_ptr->ctrlr_id).c_str()); + driver_result = (upll_rc_t) cv_status_ptr->upll_ctrlr_result; \ + + if (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED) { + UPLL_LOG_DEBUG(" vote status is controller disconnect"); + continue; + } + if (driver_result == UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("TxVoteCtrlrStatus cvStatus net result:" + "UPLL_RC_SUCCESS"); continue; } - /* Verifying for Boundary VLink */ - if (err_key->get_key_type() == UNC_KT_VBR_IF) { - ConfigKeyVal *ck_vlink = NULL; - VlinkMoMgr *mgr = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VLINK))); - if (!mgr) { - UPLL_LOG_DEBUG("Invalid mgr"); - return UPLL_RC_ERR_GENERIC; + // Retrieve the config Key as such from the KeyInfo + for (err_key = cv_status_ptr->err_ckv; err_key; + err_key = err_key->get_next_cfg_key_val()) { + if (keytype != err_key->get_key_type()) + continue; + keytype_no_err = true; + /* if renamed obtain the unc specifc name */ + result_code = GetRenamedUncKey(err_key, + UPLL_DT_CANDIDATE, + dmi, + ctrlr_id); + if ((result_code != UPLL_RC_SUCCESS) && + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_TRACE("Error in getting renamed name "); + continue; } - vn_if_type iftype; - result_code = mgr->CheckIfMemberOfVlink(err_key, - UPLL_DT_CANDIDATE, ck_vlink, dmi, iftype); - /* replace err_key with ck_vlink */ - if (result_code == UPLL_RC_SUCCESS) { - if ((iftype == kVlinkBoundaryNode1) || (iftype == kVlinkBoundaryNode2)) { - err_key->ResetWith(ck_vlink); - continue; - } else { - if (ck_vlink) delete ck_vlink; - UPLL_LOG_TRACE("%s is an internal vlink", (err_key->ToStr()).c_str()); + + /* VlanmapOnBoundary: vlanmap check added */ + if (err_key->get_key_type() == UNC_KT_VBR_VLANMAP) { + ConfigKeyVal *vlanmap_ckv = NULL; + VlanMapMoMgr *vlanmap_mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VBR_VLANMAP))); + + result_code = vlanmap_mgr->GetChildConfigKey(vlanmap_ckv, err_key); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutDomain | kOpInOutCtrlr}; + result_code = vlanmap_mgr->ReadConfigDB(vlanmap_ckv, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from running failed %d", result_code); + return UPLL_RC_ERR_GENERIC; + } + + ConfigKeyVal *err_ckv = NULL; + /* Case1: commit(del) - Check in CANDIDATE + * Case2: Commit(Cr/upd) - Check in CANDIDATE + * Since we are not able to check cr or upd or del */ + result_code = vlanmap_mgr->TranslateError(&err_ckv, vlanmap_ckv, + dmi, UPLL_DT_CANDIDATE); + DELETE_IF_NOT_NULL(vlanmap_ckv); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + if (err_ckv) delete err_ckv; + return result_code; } - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + err_key->ResetWith(err_ckv); + continue; + } + + /* Verifying for Boundary VLink */ + if (err_key->get_key_type() == UNC_KT_VBR_IF) { + ConfigKeyVal *ck_vlink = NULL; + VlinkMoMgr *mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + if (!mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + return UPLL_RC_ERR_GENERIC; + } + vn_if_type iftype; + result_code = mgr->CheckIfMemberOfVlink(err_key, + UPLL_DT_CANDIDATE, + ck_vlink, + dmi, + iftype); + /* replace err_key with ck_vlink */ + if (result_code == UPLL_RC_SUCCESS) { + if ((iftype == kVlinkBoundaryNode1) || + (iftype == kVlinkBoundaryNode2)) { + err_key->ResetWith(ck_vlink); + DELETE_IF_NOT_NULL(ck_vlink); + continue; + } else { + if (ck_vlink) delete ck_vlink; + UPLL_LOG_TRACE("%s is an internal vlink", + (err_key->ToStr()).c_str()); + } + } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Returning error %d", result_code); if (ck_vlink) delete ck_vlink; return UPLL_RC_ERR_GENERIC; - } else { - if (ck_vlink) delete ck_vlink; - UPLL_LOG_TRACE("%s is not part of a vlink", (err_key->ToStr()).c_str()); + } else { + if (ck_vlink) delete ck_vlink; + UPLL_LOG_TRACE("%s is not part of a vlink", + (err_key->ToStr()).c_str()); + } } + result_code = AdaptValToVtnService(err_key); } - result_code = AdaptValToVtnService(err_key); } + UPLL_LOG_TRACE("TxVote Controller Status : %d", driver_result); + if (!keytype_no_err) + return UPLL_RC_SUCCESS; + // Return vote Result to UPLLManager + driver_result = (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED) ? + UPLL_RC_SUCCESS : driver_result; + // return driver_result; + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? + UPLL_RC_SUCCESS : result_code; + return result_code; } - UPLL_LOG_TRACE("TxVote Controller Status : %d", driver_result); - if (!keytype_no_err) - return UPLL_RC_SUCCESS; - // Return vote Result to UPLLManager - driver_result = (driver_result == UPLL_RC_ERR_RESOURCE_DISCONNECTED)? - UPLL_RC_SUCCESS : driver_result; - // return driver_result; - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? - UPLL_RC_SUCCESS : result_code; - return result_code; -} - -upll_rc_t MoMgrImpl::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode db_result; - ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; - controller_domain_t ctrlr_dom, vlink_ctrlr_dom[2]; - vlink_ctrlr_dom[0].ctrlr = NULL; - vlink_ctrlr_dom[0].domain = NULL; - vlink_ctrlr_dom[1].ctrlr = NULL; - vlink_ctrlr_dom[1].domain = NULL; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - DalCursor *dal_cursor_handle = NULL; - IpcResponse ipc_resp; - if (affected_ctrlr_set == NULL) + + upll_rc_t MoMgrImpl::TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DalResultCode db_result; + ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; + controller_domain_t ctrlr_dom, vlink_ctrlr_dom[2]; + vlink_ctrlr_dom[0].ctrlr = NULL; + vlink_ctrlr_dom[0].domain = NULL; + vlink_ctrlr_dom[1].ctrlr = NULL; + vlink_ctrlr_dom[1].domain = NULL; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + DalCursor *dal_cursor_handle = NULL; + IpcResponse ipc_resp; + if (affected_ctrlr_set == NULL) return UPLL_RC_ERR_GENERIC; - unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); - if ((UNC_OP_UPDATE == op) && ((UNC_KT_VBR_FLOWFILTER == keytype) || - (UNC_KT_VBRIF_FLOWFILTER == keytype) || - (UNC_KT_VRTIF_FLOWFILTER == keytype))) { + if ((UNC_OP_UPDATE == op) && ((UNC_KT_VBR_FLOWFILTER == keytype) || + (UNC_KT_VBRIF_FLOWFILTER == keytype) || + (UNC_KT_VRTIF_FLOWFILTER == keytype))) { // Update operation not supported. // return success - return UPLL_RC_SUCCESS; - } - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); - while (result_code == UPLL_RC_SUCCESS) { + return UPLL_RC_SUCCESS; + } + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op, + req, + nreq, + &dal_cursor_handle, + dmi, + MAINTBL); + while (result_code == UPLL_RC_SUCCESS) { // Get Next Record - db_result = dmi->GetNextRecord(dal_cursor_handle); - result_code = DalToUpllResCode(db_result); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" GetNextRecord failed err code(%d)", result_code); - break; - } - ck_main = NULL; - switch (op) { - case UNC_OP_CREATE: - case UNC_OP_UPDATE: - /* fall through intended */ - result_code = DupConfigKeyVal(ck_main, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("DupConfigKeyVal failed %d", result_code); - dmi->CloseCursor(dal_cursor_handle, true); - delete req; - if (nreq) delete nreq; - return result_code; - } + db_result = dmi->GetNextRecord(dal_cursor_handle); + result_code = DalToUpllResCode(db_result); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" GetNextRecord failed err code(%d)", result_code); break; - case UNC_OP_DELETE: - result_code = GetChildConfigKey(ck_main, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("GetChildConfigKey failed %d", result_code); - dmi->CloseCursor(dal_cursor_handle, true); - delete req; - if (nreq) delete nreq; - return result_code; - } - break; - default: - return UPLL_RC_ERR_GENERIC; - } - /* Boundary VLink is not sent to Controller*/ - if (ck_main->get_key_type() == UNC_KT_VLINK && (op != UNC_OP_DELETE)) { - bool bound_vlink = false; - VlinkMoMgr *mgr = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VLINK))); - if (!mgr) { - UPLL_LOG_DEBUG("Invalid mgr"); - dmi->CloseCursor(dal_cursor_handle, true); - delete req; - if (nreq) delete nreq; - delete ck_main; - return UPLL_RC_ERR_GENERIC; - } - result_code = mgr->BoundaryVlink(ck_main, vlink_ctrlr_dom, bound_vlink); - if (bound_vlink) { - UPLL_LOG_TRACE("%s is a boundary Link. Not Sent to Controller", - (reinterpret_cast(ck_main->get_key()))->vlink_name); - if (ck_main) delete ck_main; - continue; - } - } - GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); - if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { - void *main = GetVal(ck_main); - void *val_nrec = (nreq) ? GetVal(nreq) : NULL; - if (FilterAttributes(main, val_nrec, false, op)) { - if (ck_main) delete ck_main; - continue; } - } - if (!OVERLAY_KT(keytype)) { - upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? - UPLL_DT_RUNNING : UPLL_DT_CANDIDATE; - if (ck_main->get_key_type() == UNC_KT_VLINK) { - if (ck_main->get_cfg_val()) { - GET_USER_DATA_CTRLR_DOMAIN(ck_main->get_cfg_val(), vlink_ctrlr_dom[1]); - } else { - vlink_ctrlr_dom[1].ctrlr = NULL; - vlink_ctrlr_dom[1].domain = NULL; - } + ck_main = NULL; + switch (op) { + case UNC_OP_CREATE: + case UNC_OP_UPDATE: + /* fall through intended */ + result_code = DupConfigKeyVal(ck_main, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("DupConfigKeyVal failed %d", result_code); + dmi->CloseCursor(dal_cursor_handle, true); + delete req; + if (nreq) delete nreq; + return result_code; + } + break; + case UNC_OP_DELETE: + result_code = GetChildConfigKey(ck_main, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("GetChildConfigKey failed %d", result_code); + dmi->CloseCursor(dal_cursor_handle, true); + delete req; + if (nreq) delete nreq; + return result_code; + } + break; + default: + return UPLL_RC_ERR_GENERIC; } - controller_domain_t *tctrlr_dom = - (ck_main->get_key_type() == UNC_KT_VLINK)? - &vlink_ctrlr_dom[1]:&ctrlr_dom; - result_code = GetRenamedControllerKey(ck_main, dt_type, - dmi, tctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", - result_code); - if (ck_main) - delete ck_main; - break; - } - if (ck_main->get_key_type() == UNC_KT_VLINK && (op == UNC_OP_DELETE)) { - /* boundary vlink */ - VlinkMoMgr *vlink_mgr = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VLINK))); - if (!vlink_mgr) { + /* Boundary VLink is not sent to Controller*/ + if (ck_main->get_key_type() == UNC_KT_VLINK && (op != UNC_OP_DELETE)) { + bool bound_vlink = false; + VlinkMoMgr *mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); - if (ck_main) delete ck_main; - DELETE_IF_NOT_NULL(req); dmi->CloseCursor(dal_cursor_handle, true); + delete req; + if (nreq) delete nreq; + delete ck_main; return UPLL_RC_ERR_GENERIC; } - unc_key_type_t ktype[2] = {UNC_KT_ROOT, UNC_KT_ROOT}; - for (int vnode_count = 0; vnode_count < 2; vnode_count++) - ktype[vnode_count] = vlink_mgr-> - GetVlinkVnodeIfKeyType(ck_main, vnode_count); - if (ktype[0] == UNC_KT_VUNK_IF || ktype[1] == UNC_KT_VUNK_IF || - strncmp(reinterpret_cast(ctrlr_dom.ctrlr), - reinterpret_cast(tctrlr_dom->ctrlr), - kMaxLenCtrlrId + 1) || - strncmp(reinterpret_cast(ctrlr_dom.domain), - reinterpret_cast(tctrlr_dom->domain), - kMaxLenDomainId + 1)) { - UPLL_LOG_TRACE("%s is a boundary Link. Not Sent to Controller/n", - (reinterpret_cast(ck_main->get_key()))->vlink_name); - if (ck_main) - delete ck_main; + result_code = mgr->BoundaryVlink(ck_main, + vlink_ctrlr_dom, + bound_vlink); + if (bound_vlink) { + UPLL_LOG_TRACE("%s is a boundary Link. Not Sent to Controller", + (reinterpret_cast + (ck_main->get_key()))->vlink_name); + if (ck_main) delete ck_main; continue; } } - } else if (op == UNC_OP_DELETE) { - UPLL_LOG_TRACE("Overlay KeyType %d", keytype); - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain}; - result_code = ReadConfigDB(ck_main, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from running failed %d", result_code); - DELETE_IF_NOT_NULL(req); - dmi->CloseCursor(dal_cursor_handle, true); - return UPLL_RC_ERR_GENERIC; + GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); + if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { + void *main = GetVal(ck_main); + void *val_nrec = (nreq) ? GetVal(nreq) : NULL; + if (FilterAttributes(main, val_nrec, false, op)) { + if (ck_main) delete ck_main; + continue; + } } - if (keytype == UNC_KT_VTUNNEL || keytype == UNC_KT_VTUNNEL_IF) { - result_code = PopulateDriverDeleteCkv(ck_main, dmi, UPLL_DT_RUNNING); + + /* VlanmapOnBoundary: get the flags */ + uint8_t flags = 0; + GET_USER_DATA_FLAGS(ck_main, flags); + + if (!OVERLAY_KT(keytype)) { + upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? + UPLL_DT_RUNNING : UPLL_DT_CANDIDATE; + if (ck_main->get_key_type() == UNC_KT_VLINK) { + if (ck_main->get_cfg_val()) { + GET_USER_DATA_CTRLR_DOMAIN(ck_main->get_cfg_val(), + vlink_ctrlr_dom[1]); + } else { + vlink_ctrlr_dom[1].ctrlr = NULL; + vlink_ctrlr_dom[1].domain = NULL; + } + } + controller_domain_t *tctrlr_dom = + (ck_main->get_key_type() == UNC_KT_VLINK)? + &vlink_ctrlr_dom[1]:&ctrlr_dom; + result_code = GetRenamedControllerKey(ck_main, dt_type, + dmi, tctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Couldnt form Driver Val structure %d", result_code); - if (ck_main) delete ck_main; + UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", + result_code); + if (ck_main) + delete ck_main; + break; + } + if (ck_main->get_key_type() == UNC_KT_VLINK && (op == UNC_OP_DELETE)) { + /* boundary vlink */ + VlinkMoMgr *vlink_mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + if (!vlink_mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + if (ck_main) delete ck_main; + DELETE_IF_NOT_NULL(req); + dmi->CloseCursor(dal_cursor_handle, true); + DELETE_IF_NOT_NULL(nreq); + return UPLL_RC_ERR_GENERIC; + } + unc_key_type_t ktype[2] = {UNC_KT_ROOT, UNC_KT_ROOT}; + for (int vnode_count = 0; vnode_count < 2; vnode_count++) + ktype[vnode_count] = vlink_mgr-> + GetVlinkVnodeIfKeyType(ck_main, vnode_count); + if (ktype[0] == UNC_KT_VUNK_IF || ktype[1] == UNC_KT_VUNK_IF || + strncmp(reinterpret_cast(ctrlr_dom.ctrlr), + reinterpret_cast(tctrlr_dom->ctrlr), + kMaxLenCtrlrId + 1) || + strncmp(reinterpret_cast(ctrlr_dom.domain), + reinterpret_cast(tctrlr_dom->domain), + kMaxLenDomainId + 1)) { + UPLL_LOG_TRACE("%s is a boundary Link. Not Sent to Controller/n", + (reinterpret_cast(ck_main->get_key()))-> + vlink_name); + if (ck_main) + delete ck_main; + continue; + } + } + } else if (op == UNC_OP_DELETE) { + UPLL_LOG_TRACE("Overlay KeyType %d", keytype); + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain}; + result_code = ReadConfigDB(ck_main, UPLL_DT_RUNNING, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from running failed %d", result_code); DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(dal_cursor_handle, true); return UPLL_RC_ERR_GENERIC; } + if (keytype == UNC_KT_VTUNNEL || keytype == UNC_KT_VTUNNEL_IF) { + result_code = PopulateDriverDeleteCkv(ck_main, dmi, UPLL_DT_RUNNING); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Couldnt form Driver Val structure %d", + result_code); + if (ck_main) delete ck_main; + DELETE_IF_NOT_NULL(req); + dmi->CloseCursor(dal_cursor_handle, true); + return UPLL_RC_ERR_GENERIC; + } + } } - } - UPLL_LOG_TRACE("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - // Inserting the controller to Set - affected_ctrlr_set->insert - (string(reinterpret_cast(ctrlr_dom.ctrlr))); - result_code = SendIpcReq(session_id, config_id, op, UPLL_DT_CANDIDATE, - ck_main, &ctrlr_dom, &ipc_resp); - - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { - UPLL_LOG_DEBUG(" driver result code - %d", ipc_resp.header.result_code); - result_code = UPLL_RC_SUCCESS; - } - if (result_code != UPLL_RC_SUCCESS) { - // If Driver returned error, return the err_ckv received from driver after - // getting its UNC key and apdapting the CKV to North Bound API - // If update to driver failed, exit the loop. - UPLL_LOG_DEBUG("IpcSend failed %d", result_code); - upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? - UPLL_DT_RUNNING : UPLL_DT_CANDIDATE; - upll_rc_t local_rc = GetRenamedUncKey(ipc_resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); - if (UPLL_RC_SUCCESS != local_rc && - UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { - UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); - DELETE_IF_NOT_NULL(ck_main); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - result_code = UPLL_RC_ERR_GENERIC; - break; + UPLL_LOG_TRACE("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + // Inserting the controller to Set + affected_ctrlr_set->insert + (string(reinterpret_cast(ctrlr_dom.ctrlr))); + result_code = SendIpcReq(session_id, config_id, op, UPLL_DT_CANDIDATE, + ck_main, &ctrlr_dom, &ipc_resp); + + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { + UPLL_LOG_DEBUG(" driver result code - %d", + ipc_resp.header.result_code); + result_code = UPLL_RC_SUCCESS; } - if (ipc_resp.ckv_data) { - upll_rc_t local_rc = AdaptValToVtnService(ipc_resp.ckv_data); - if (local_rc != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", - local_rc); - DELETE_IF_NOT_NULL(ck_main); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - result_code = UPLL_RC_ERR_GENERIC; - break; + if (result_code != UPLL_RC_SUCCESS) { + // If Driver returned error, return the err_ckv received + // from driver after + // getting its UNC key and apdapting the CKV to North Bound API + // If update to driver failed, exit the loop. + UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + + /* VlanmapOnBoundary: Added vlanmap check */ + upll_rc_t local_rc = UPLL_RC_SUCCESS; + if (ck_main->get_key_type() == UNC_KT_VBR_VLANMAP) { + VlanMapMoMgr *vlanmap_mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VBR_VLANMAP))); + + SET_USER_DATA_FLAGS(ck_main, flags); + + UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + ConfigKeyVal *err = NULL; + + /* Case1: commit(del) - Check in RUNNING since no info exists in CAND + * Case2: Commit(Cr/upd) - Check in CANDIDATE always */ + upll_keytype_datatype_t dttype = (uuc::kUpllUcpDelete == phase) ? + UPLL_DT_RUNNING : UPLL_DT_CANDIDATE; + local_rc = vlanmap_mgr->TranslateError(&err, ck_main, dmi, dttype); + if (local_rc != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Failed to convert vlanmap error ckv"); + return local_rc; + } + + if (flags & BOUNDARY_VLANMAP_FLAG) { + SET_USER_DATA_CTRLR(err, ctrlr_dom.ctrlr); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + *err_ckv = err; + DELETE_IF_NOT_NULL(ck_main); + break; + } else { + DELETE_IF_NOT_NULL(err); + } } - *err_ckv = ipc_resp.ckv_data; + + upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? + UPLL_DT_RUNNING : UPLL_DT_CANDIDATE; + if (ipc_resp.ckv_data) { + local_rc = GetRenamedUncKey(ipc_resp.ckv_data, dt_type, dmi, + ctrlr_dom.ctrlr); + if (UPLL_RC_SUCCESS != local_rc && + UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { + UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + result_code = UPLL_RC_ERR_GENERIC; + break; + } + local_rc = AdaptValToVtnService(ipc_resp.ckv_data); + if (local_rc != UPLL_RC_SUCCESS && + local_rc != UPLL_RC_ERR_GENERIC) { + // If no val structure, ignore error + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", + local_rc); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + result_code = UPLL_RC_ERR_GENERIC; + break; + } + SET_USER_DATA_CTRLR(ipc_resp.ckv_data, ctrlr_dom.ctrlr); + *err_ckv = ipc_resp.ckv_data; + } + if (ck_main) + delete ck_main; + break; } - if (ck_main) - delete ck_main; - break; + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(ck_main); } - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(ck_main); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + if (req) + delete req; + if (nreq) + delete nreq; + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS : result_code; + return result_code; } - if (dal_cursor_handle) - dmi->CloseCursor(dal_cursor_handle, true); - if (req) - delete req; - if (nreq) - delete nreq; - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS : result_code; - return result_code; -} - -upll_rc_t MoMgrImpl::SendIpcReq(uint32_t session_id, - uint32_t config_id, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - ConfigKeyVal *&ckv, - controller_domain *ctrlr_dom, - IpcResponse *ipc_resp) { - UPLL_FUNC_TRACE; - upll_rc_t rc = UPLL_RC_SUCCESS; - if (!ipc_resp) - return UPLL_RC_ERR_GENERIC; - memset(ipc_resp, 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(ipc_req)); - ipc_req.header.clnt_sess_id = session_id; - ipc_req.header.config_id = config_id; - ipc_req.header.operation = op; - ipc_req.header.datatype = dt_type; - ipc_req.ckv_data = ckv; - - UPLL_LOG_TRACE(" session id - %d, configuration id - %d", - session_id, config_id); - - if (ctrlr_dom == NULL) { - if (!uui::IpcUtil::SendReqToPhysical(UPPL_IPC_SVC_NAME, UPPL_SVC_READREQ, - &ipc_req, ipc_resp)) { - UPLL_LOG_INFO("Send Request to physical for Key %d failed ", ckv->get_key_type()); - } - } else { - if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom->ctrlr, - reinterpret_cast(ctrlr_dom->domain), - NULL, - static_cast(0), - &ipc_req, true, ipc_resp)) { - UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv->get_key_type(), reinterpret_cast(ctrlr_dom->ctrlr)); + + upll_rc_t MoMgrImpl::SendIpcReq(uint32_t session_id, + uint32_t config_id, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + ConfigKeyVal *&ckv, + controller_domain *ctrlr_dom, + IpcResponse *ipc_resp) { + UPLL_FUNC_TRACE; + upll_rc_t rc = UPLL_RC_SUCCESS; + if (!ipc_resp) + return UPLL_RC_ERR_GENERIC; + memset(ipc_resp, 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + ipc_req.header.clnt_sess_id = session_id; + ipc_req.header.config_id = config_id; + ipc_req.header.operation = op; + ipc_req.header.datatype = dt_type; + ipc_req.ckv_data = ckv; + + UPLL_LOG_TRACE(" session id - %d, configuration id - %d", + session_id, config_id); + + if (ctrlr_dom == NULL) { + /* VlanmapOnBoundary: To get the boundary name + * associated with the logical_port_id */ + if (ckv->get_key_type() == UNC_KT_BOUNDARY && op == + UNC_OP_READ_SIBLING) { + ipc_req.header.rep_count = 10000; + } + if (!uui::IpcUtil::SendReqToPhysical(UPPL_IPC_SVC_NAME, UPPL_SVC_READREQ, + &ipc_req, ipc_resp)) { + UPLL_LOG_INFO("Send Request to physical for Key %d failed ", + ckv->get_key_type()); + } + } else { + if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom->ctrlr, + reinterpret_cast + (ctrlr_dom->domain), + NULL, + static_cast(0), + &ipc_req, true, ipc_resp)) { + UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", + ckv->get_key_type(), reinterpret_cast + (ctrlr_dom->ctrlr)); + } } + rc = ipc_resp->header.result_code; + if (rc != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Request for Key %d failed with error %d", + ckv->get_key_type(), rc); + } + return rc; } - rc = ipc_resp->header.result_code; - if (rc != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Request for Key %d failed with error %d", - ckv->get_key_type(), rc); - } - return rc; -} - - - -upll_rc_t MoMgrImpl::TxCopyCandidateToRunning( - unc_key_type_t key_type, - CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf* dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - unc_keytype_operation_t op[] = {UNC_OP_DELETE, UNC_OP_CREATE, UNC_OP_UPDATE}; - ConfigKeyVal *req = NULL, *nreq = NULL, *ckey = NULL; - DalCursor *cfg1_cursor; - DalResultCode db_result = uud::kDalRcSuccess; - int nop = sizeof(op)/ sizeof(op[0]); - uint8_t *ctrlr_id = NULL; - map ctrlr_result; - CtrlrCommitStatusList::iterator ccsListItr; - CtrlrCommitStatus *ccStatusPtr; - - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) - return UPLL_RC_ERR_GENERIC; - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = - reinterpret_cast( - const_cast(ccStatusPtr->ctrlr_id.c_str())); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; - ck_err = ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != key_type) continue; - if (!OVERLAY_KT(key_type)) { - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, - dmi, ctrlr_id); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("GetRenamedUncKey failed. Result: %d", result_code); - return result_code; + + + + upll_rc_t MoMgrImpl::TxCopyCandidateToRunning( + unc_key_type_t key_type, + CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf* dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + unc_keytype_operation_t op[] = {UNC_OP_DELETE, + UNC_OP_CREATE, + UNC_OP_UPDATE}; + ConfigKeyVal *req = NULL, *nreq = NULL, *ckey = NULL; + DalCursor *cfg1_cursor; + DalResultCode db_result = uud::kDalRcSuccess; + int nop = sizeof(op)/ sizeof(op[0]); + uint8_t *ctrlr_id = NULL; + map ctrlr_result; + CtrlrCommitStatusList::iterator ccsListItr; + CtrlrCommitStatus *ccStatusPtr; + + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { + ccStatusPtr = *ccsListItr; + ctrlr_id = + reinterpret_cast( + const_cast(ccStatusPtr->ctrlr_id.c_str())); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; + ck_err = ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != key_type) continue; + if (!OVERLAY_KT(key_type)) { + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, + dmi, ctrlr_id); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetRenamedUncKey failed. Result: %d", + result_code); + return result_code; + } + } + + /* VlanmapOnBoundary: Added vlanmap check */ + if (ck_err->get_key_type() == UNC_KT_VBR_VLANMAP) { + ConfigKeyVal *vlanmap_ckv = NULL; + VlanMapMoMgr *vlanmap_mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VBR_VLANMAP))); + + result_code = vlanmap_mgr->GetChildConfigKey(vlanmap_ckv, ck_err); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutDomain | kOpInOutCtrlr}; + result_code = vlanmap_mgr->ReadConfigDB(vlanmap_ckv, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from running failed %d", + result_code); + return UPLL_RC_ERR_GENERIC; + } + + ConfigKeyVal *err_ckv = NULL; + /* Case1: commit(del) - Check in CANDIDATE + * Case2: Commit(Cr/upd) - Check in CANDIDATE + * Since we are not able to check cr or upd or del here */ + result_code = vlanmap_mgr->TranslateError(&err_ckv, + vlanmap_ckv, + dmi, + UPLL_DT_CANDIDATE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + if (err_ckv) delete err_ckv; + DELETE_IF_NOT_NULL(vlanmap_ckv); + return result_code; + } + ck_err->ResetWith(err_ckv); + continue; + } + + if (ck_err->get_key_type() == UNC_KT_VBR_IF) { + ConfigKeyVal *ck_vlink = NULL; + VlinkMoMgr *mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + if (!mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + return UPLL_RC_ERR_GENERIC; + } + vn_if_type iftype; + result_code = mgr->CheckIfMemberOfVlink(ck_err, + UPLL_DT_CANDIDATE, + ck_vlink, + dmi, + iftype); + /* replace ck_err with ck_vlink */ + if (result_code == UPLL_RC_SUCCESS) { + if ((iftype == kVlinkBoundaryNode1) || + (iftype == kVlinkBoundaryNode2)) { + ck_err->ResetWith(ck_vlink); + continue; + } else { + if (ck_vlink) delete ck_vlink; + UPLL_LOG_DEBUG("%s is an internal vlink", + (ck_err->ToStr()).c_str()); + } + } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + if (ck_vlink) delete ck_vlink; + result_code = AdaptValToVtnService(ck_err); + return UPLL_RC_ERR_GENERIC; + } else { + if (ck_vlink) delete ck_vlink; + UPLL_LOG_TRACE("%s is not part of a vlink", + (ck_err->ToStr()).c_str()); + } + } + result_code = AdaptValToVtnService(ck_err); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; + } } } - if (ck_err->get_key_type() == UNC_KT_VBR_IF) { - ConfigKeyVal *ck_vlink = NULL; - VlinkMoMgr *mgr = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VLINK))); - if (!mgr) { - UPLL_LOG_DEBUG("Invalid mgr"); - return UPLL_RC_ERR_GENERIC; - } - vn_if_type iftype; - result_code = mgr->CheckIfMemberOfVlink(ck_err, - UPLL_DT_CANDIDATE, ck_vlink, dmi, iftype); - /* replace ck_err with ck_vlink */ - if (result_code == UPLL_RC_SUCCESS) { - if ((iftype == kVlinkBoundaryNode1) || - (iftype == kVlinkBoundaryNode2)) { - ck_err->ResetWith(ck_vlink); - continue; + } + } + for (int i = 0; i < nop; i++) { + result_code= DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + MAINTBL, + true); + while (result_code == UPLL_RC_SUCCESS) { + db_result = dmi->GetNextRecord(cfg1_cursor); + result_code = DalToUpllResCode(db_result); + if (result_code != UPLL_RC_SUCCESS) + break; + if (op[i] == UNC_OP_DELETE) + result_code = GetChildConfigKey(ckey, req); + else + result_code = DupConfigKeyVal(ckey, req, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) + break; + string controller; + uint32_t driver_result; + switch (ckey->get_key_type()) { + case UNC_KT_VUNKNOWN: + case UNC_KT_VUNK_IF: + driver_result = UPLL_RC_SUCCESS; + break; + default: + GET_USER_DATA_CTRLR(ckey, ctrlr_id); + controller = reinterpret_cast(ctrlr_id); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + driver_result = UPLL_RC_ERR_CTR_DISCONNECTED; } else { - if (ck_vlink) delete ck_vlink; - UPLL_LOG_DEBUG("%s is an internal vlink", (ck_err->ToStr()).c_str()); + driver_result = ctrlr_result[controller]; + } + } + upll_keytype_datatype_t dt_type = + (op[i] == UNC_OP_CREATE)? UPLL_DT_STATE:UPLL_DT_RUNNING; + if (op[i] != UNC_OP_DELETE) { + if (key_type == UNC_KT_VLINK) { + uint8_t *ctrlr_id2 = NULL; + GET_USER_DATA_CTRLR(ckey->get_cfg_val(), ctrlr_id2); + if (ctrlr_id2 && strncmp(reinterpret_cast(ctrlr_id), + reinterpret_cast(ctrlr_id2), + kMaxLenCtrlrId+1)) { + string controller2(reinterpret_cast(ctrlr_id2)); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + UpdateConfigStatus(ckey, + op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + nreq, + dmi); + } else { + uint32_t cons_result = ctrlr_result[controller2] | + ctrlr_result[controller]; + UpdateConfigStatus(ckey, op[i], cons_result, nreq, dmi); + } + } else { + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + UpdateConfigStatus(ckey, op[i], UPLL_RC_ERR_CTR_DISCONNECTED, + nreq, dmi); + } else { + UpdateConfigStatus(ckey, op[i], ctrlr_result[controller], + nreq, dmi); + } } - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - if (ck_vlink) delete ck_vlink; - result_code = AdaptValToVtnService(ck_err); - return UPLL_RC_ERR_GENERIC; + } else if ((op[i] == UNC_OP_UPDATE) && VN_IF_KEYTYPE(key_type)) { + UpdateConfigStatus(ckey, op[i], driver_result, nreq, dmi); } else { - if (ck_vlink) delete ck_vlink; - UPLL_LOG_TRACE("%s is not part of a vlink", (ck_err->ToStr()).c_str()); + UpdateConfigStatus(ckey, op[i], driver_result, nreq, dmi); + } + /* if portmapping / admin status on kt is updated, + * oper status has to be reset*/ + if (GetStateVal(ckey)) + dt_type = UPLL_DT_STATE; + } else { + if (OperStatusSupported(ckey->get_key_type())) { + result_code = UpdateParentOperStatus(ckey, dmi); + if (result_code != UPLL_RC_SUCCESS) { + delete ckey; + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; + } } } - result_code = AdaptValToVtnService(ck_err); + DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs | + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain}; + result_code = UpdateConfigDB(ckey, dt_type, op[i], dmi, &dbop_update, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n", result_code); - return result_code; + delete ckey; + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + UPLL_LOG_DEBUG("Returning error %d", result_code); + return UPLL_RC_ERR_GENERIC; } - } - } - } - for (int i = 0; i < nop; i++) { - result_code= DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], - req, nreq, &cfg1_cursor, dmi, NULL, MAINTBL, true); - while (result_code == UPLL_RC_SUCCESS) { - db_result = dmi->GetNextRecord(cfg1_cursor); - result_code = DalToUpllResCode(db_result); - if (result_code != UPLL_RC_SUCCESS) - break; - if (op[i] == UNC_OP_DELETE) - result_code = GetChildConfigKey(ckey, req); - else - result_code = DupConfigKeyVal(ckey, req, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) - break; - string controller; - uint32_t driver_result; - switch (ckey->get_key_type()) { - case UNC_KT_VUNKNOWN: - case UNC_KT_VUNK_IF: - driver_result = UPLL_RC_SUCCESS; - break; - default: - GET_USER_DATA_CTRLR(ckey, ctrlr_id); - controller = reinterpret_cast(ctrlr_id); - driver_result = ctrlr_result[controller]; - } - upll_keytype_datatype_t dt_type = (op[i] == UNC_OP_CREATE)? UPLL_DT_STATE:UPLL_DT_RUNNING; - if (op[i] != UNC_OP_DELETE) { - if (key_type == UNC_KT_VLINK) { - uint8_t *ctrlr_id2 = NULL; - GET_USER_DATA_CTRLR(ckey->get_cfg_val(), ctrlr_id2); - if (ctrlr_id2 && strncmp(reinterpret_cast(ctrlr_id), - reinterpret_cast(ctrlr_id2), - kMaxLenCtrlrId+1)) { - string controller2(reinterpret_cast(ctrlr_id2)); - uint32_t cons_result = ctrlr_result[controller2] | - ctrlr_result[controller]; - UpdateConfigStatus(ckey, op[i], cons_result, nreq, dmi); - } else { - UpdateConfigStatus(ckey, op[i], ctrlr_result[controller], - nreq, dmi); - } - } else if ((op[i] == UNC_OP_UPDATE) && VN_IF_KEYTYPE(key_type)) { - UpdateConfigStatus(ckey, op[i], driver_result, nreq, dmi); - } else { - UpdateConfigStatus(ckey, op[i], driver_result, nreq, dmi); - } - /* if portmapping / admin status on kt is updated, - * oper status has to be reset*/ - if (GetStateVal(ckey)) - dt_type = UPLL_DT_STATE; - } else { - if (OperStatusSupported(ckey->get_key_type())) { - result_code = UpdateParentOperStatus(ckey,dmi); - if (result_code != UPLL_RC_SUCCESS) { - delete ckey; - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - return result_code; - } - } - } - DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs | - kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain}; - result_code = UpdateConfigDB(ckey, dt_type, op[i], dmi, &dbop_update, - MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { + EnqueCfgNotification(op[i], UPLL_DT_RUNNING, ckey); delete ckey; - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - UPLL_LOG_DEBUG("Returning error %d", result_code); - return UPLL_RC_ERR_GENERIC; + ckey = NULL; + } + if (req) + delete req; + if (nreq) + delete nreq; + req = nreq = NULL; + if (cfg1_cursor) { + dmi->CloseCursor(cfg1_cursor, true); + cfg1_cursor = NULL; + } + // Copying Rename Table to Running + UPLL_LOG_TRACE("keytype is %d", key_type); + if ((key_type == UNC_KT_VBRIDGE) || + (key_type == UNC_KT_VLINK)) { + result_code = TxCopyRenameTableFromCandidateToRunning(key_type, + op[i], dmi); + UPLL_LOG_DEBUG("TxCopyRenameTableFromCandidateToRunning returned %d", + result_code); } - EnqueCfgNotification(op[i], UPLL_DT_RUNNING, ckey); - delete ckey; - ckey = NULL; - } - if (req) - delete req; - if (nreq) - delete nreq; - req = nreq = NULL; - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; - } - // Copying Rename Table to Running - UPLL_LOG_TRACE("keytype is %d", key_type); - if ((key_type == UNC_KT_VBRIDGE) || - (key_type == UNC_KT_VLINK)) { - result_code = TxCopyRenameTableFromCandidateToRunning(key_type, - op[i], dmi); - UPLL_LOG_DEBUG("TxCopyRenameTableFromCandidateToRunning returned %d", - result_code); } - } - ctrlr_result.clear(); - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS: result_code; - return result_code; -} - -upll_rc_t MoMgrImpl::EnqueCfgNotification(unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - ConfigKeyVal *ctrlr_key) { - UPLL_FUNC_TRACE; - ConfigNotification *ck_notify; - unc_keytype_datatype_t unc_type = (unc_keytype_datatype_t)dt_type; - ConfigKeyVal *okey = NULL; - upll_rc_t result_code = GetChildConfigKey(okey, ctrlr_key); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); + if (!ctrlr_result.empty()) + ctrlr_result.clear(); + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS: result_code; return result_code; } - ck_notify = new ConfigNotification(op, unc_type, okey); - if (!(ConfigNotifier::BufferNotificationToUpllUser(ck_notify))) { - delete ck_notify; - } - return UPLL_RC_SUCCESS; -} - -void MoMgrImpl::DumpRenameInfo(ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_TRACE("Input key is NULL"); - return; - } - key_rename_vnode_info *rename = reinterpret_cast( - ikey->get_key()); - UPLL_LOG_TRACE("The Rename for the Key type %d", ikey->get_key_type()); - if (strlen(reinterpret_cast(rename->new_unc_vtn_name))) - UPLL_LOG_TRACE("new_unc_vtn_name = %s", - reinterpret_cast(rename->new_unc_vtn_name)); - if (strlen(reinterpret_cast(rename->old_unc_vtn_name))) - UPLL_LOG_TRACE("old_unc_vtn_name = %s", - - reinterpret_cast(rename->old_unc_vtn_name)); - if (strlen(reinterpret_cast(rename->new_unc_vnode_name))) - UPLL_LOG_TRACE("new_unc_vnode_name = %s", - reinterpret_cast(rename->new_unc_vnode_name)); - if (strlen(reinterpret_cast(rename->old_unc_vnode_name))) - UPLL_LOG_TRACE("old_unc_vnode_name = %s", - reinterpret_cast(rename->old_unc_vnode_name)); - if (strlen(reinterpret_cast(rename->ctrlr_vtn_name))) - UPLL_LOG_TRACE("ctrlr_vtn_name = %s", - reinterpret_cast(rename->ctrlr_vtn_name)); - if (strlen(reinterpret_cast(rename->ctrlr_vnode_name))) - UPLL_LOG_TRACE("ctrlr_vnode_name = %s", - reinterpret_cast(rename->ctrlr_vnode_name)); -} - - - -upll_rc_t MoMgrImpl::RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - // char ctrlr_name[10]= "ctrlr1"; //its input argument. - ConfigKeyVal *okey = NULL; - ConfigKeyVal *rename_info = NULL; - ConfigKeyVal *dup_ikey = NULL; - // char unc_old_name[32]; - bool renamed = false; - bool no_rename = false; - UPLL_LOG_TRACE("RenameMo"); - if (NULL == ikey || NULL == req) { - UPLL_LOG_DEBUG(" Given Input is NULL "); - return UPLL_RC_ERR_GENERIC; - } - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage Return Failure = %d ", result_code); - return result_code; - } - // The new name copy to the okey for checking DT_CANDIDATE - result_code = SwapKeyVal(ikey, okey, dmi, - reinterpret_cast(const_cast(ctrlr_id)), - no_rename); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SwapKeyVal Return Failure = %d ", result_code); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + upll_rc_t MoMgrImpl::EnqueCfgNotification(unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + ConfigKeyVal *ctrlr_key) { + UPLL_FUNC_TRACE; + ConfigNotification *ck_notify; + unc_keytype_datatype_t unc_type = (unc_keytype_datatype_t)dt_type; + ConfigKeyVal *okey = NULL; + upll_rc_t result_code = GetChildConfigKey(okey, ctrlr_key); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + return result_code; + } + ck_notify = new ConfigNotification(op, unc_type, okey); + if (!(ConfigNotifier::BufferNotificationToUpllUser(ck_notify))) { + delete ck_notify; + } + return UPLL_RC_SUCCESS; } - result_code = GetChildConfigKey(dup_ikey, ikey); - UPLL_LOG_TRACE("DupRenameKey %s", (dup_ikey->ToStrAll()).c_str()); - UPLL_LOG_TRACE(" Rename No Rename falg = %d", no_rename); - UPLL_LOG_TRACE(" After SwapKeyVal Ikey %s", (dup_ikey->ToStrAll()).c_str()); - UPLL_LOG_TRACE(" After SwapKeyVal Okey %s", (okey->ToStrAll()).c_str()); - /* the vnode name should not be same */ - if (!no_rename) { - switch (dup_ikey->get_key_type()) { - case UNC_KT_VBRIDGE: - case UNC_KT_VROUTER: - case UNC_KT_VLINK: - result_code = VnodeChecks(okey, req->datatype, dmi); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(dup_ikey); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - result_code = VnodeChecks(okey, UPLL_DT_CANDIDATE, dmi); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(dup_ikey); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - default: - break; + + void MoMgrImpl::DumpRenameInfo(ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + if (!ikey || !ikey->get_key()) { + UPLL_LOG_TRACE("Input key is NULL"); + return; } + key_rename_vnode_info *rename = reinterpret_cast( + ikey->get_key()); + UPLL_LOG_TRACE("The Rename for the Key type %d", ikey->get_key_type()); + if (strlen(reinterpret_cast(rename->new_unc_vtn_name))) + UPLL_LOG_TRACE("new_unc_vtn_name = %s", + reinterpret_cast(rename->new_unc_vtn_name)); + if (strlen(reinterpret_cast(rename->old_unc_vtn_name))) + UPLL_LOG_TRACE("old_unc_vtn_name = %s", + + reinterpret_cast(rename->old_unc_vtn_name)); + if (strlen(reinterpret_cast(rename->new_unc_vnode_name))) + UPLL_LOG_TRACE("new_unc_vnode_name = %s", + reinterpret_cast(rename->new_unc_vnode_name)); + if (strlen(reinterpret_cast(rename->old_unc_vnode_name))) + UPLL_LOG_TRACE("old_unc_vnode_name = %s", + reinterpret_cast(rename->old_unc_vnode_name)); + if (strlen(reinterpret_cast(rename->ctrlr_vtn_name))) + UPLL_LOG_TRACE("ctrlr_vtn_name = %s", + reinterpret_cast(rename->ctrlr_vtn_name)); + if (strlen(reinterpret_cast(rename->ctrlr_vnode_name))) + UPLL_LOG_TRACE("ctrlr_vnode_name = %s", + reinterpret_cast(rename->ctrlr_vnode_name)); } - // Set The controller ID into the dup_ikey & okey - SET_USER_DATA_CTRLR(dup_ikey, ctrlr_id); - SET_USER_DATA_CTRLR(okey, ctrlr_id); - // Checks if the PFC name is already renamed - dup_ikey->SetCfgVal(NULL); - result_code = GetRenamedUncKey(dup_ikey, req->datatype, dmi, - reinterpret_cast(const_cast(ctrlr_id))); - if (result_code == UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Given PFC Exists in Import DB %s", (dup_ikey->ToStrAll()).c_str()); - result_code = UpdateConfigDB(dup_ikey, req->datatype, UNC_OP_READ, + + + + upll_rc_t MoMgrImpl::RenameMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + // char ctrlr_name[10]= "ctrlr1"; //its input argument. + ConfigKeyVal *okey = NULL; + ConfigKeyVal *rename_info = NULL; + ConfigKeyVal *dup_ikey = NULL; + // char unc_old_name[32]; + bool renamed = false; + bool no_rename = false; + UPLL_LOG_TRACE("RenameMo"); + if (NULL == ikey || NULL == req) { + UPLL_LOG_DEBUG(" Given Input is NULL "); + return UPLL_RC_ERR_GENERIC; + } + + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage Return Failure = %d ", result_code); + return result_code; + } + // The new name copy to the okey for checking DT_CANDIDATE + result_code = SwapKeyVal(ikey, okey, dmi, + reinterpret_cast + (const_cast(ctrlr_id)), + no_rename); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("SwapKeyVal Return Failure = %d ", result_code); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + result_code = GetChildConfigKey(dup_ikey, ikey); + UPLL_LOG_TRACE("DupRenameKey %s", (dup_ikey->ToStrAll()).c_str()); + UPLL_LOG_TRACE(" Rename No Rename falg = %d", no_rename); + UPLL_LOG_TRACE(" After SwapKeyVal Ikey %s", + (dup_ikey->ToStrAll()).c_str()); + UPLL_LOG_TRACE(" After SwapKeyVal Okey %s", (okey->ToStrAll()).c_str()); + /* the vnode name should not be same */ + if (!no_rename) { + switch (dup_ikey->get_key_type()) { + case UNC_KT_VBRIDGE: + case UNC_KT_VROUTER: + case UNC_KT_VLINK: + result_code = VnodeChecks(okey, req->datatype, dmi); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(dup_ikey); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + result_code = VnodeChecks(okey, UPLL_DT_CANDIDATE, dmi); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(dup_ikey); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + default: + break; + } + } + // Set The controller ID into the dup_ikey & okey + SET_USER_DATA_CTRLR(dup_ikey, ctrlr_id); + SET_USER_DATA_CTRLR(okey, ctrlr_id); + // Checks if the PFC name is already renamed + dup_ikey->SetCfgVal(NULL); + result_code = GetRenamedUncKey(dup_ikey, req->datatype, dmi, + reinterpret_cast + (const_cast(ctrlr_id))); + if (result_code == UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Given PFC Exists in Import DB %s", + (dup_ikey->ToStrAll()).c_str()); + result_code = UpdateConfigDB(dup_ikey, req->datatype, UNC_OP_READ, dmi, MAINTBL); - /* Entry in rename table but no corresponding entry in main table */ - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_ERROR("UpdateConfigDB Return Failure = %d ", result_code); - DELETE_IF_NOT_NULL(dup_ikey); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - renamed = true; + /* Entry in rename table but no corresponding entry in main table */ + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_ERROR("UpdateConfigDB Return Failure = %d ", result_code); + DELETE_IF_NOT_NULL(dup_ikey); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + renamed = true; } else if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey failed. Result : %d", result_code); @@ -1702,52 +2011,58 @@ upll_rc_t MoMgrImpl::RenameMo(IpcReqRespHeader *req, return UPLL_RC_ERR_GENERIC; } /* ensure no other vnode has the renamed name in the main table */ - result_code = UpdateConfigDB(okey, req->datatype, + if (UNC_KT_VTN != okey->get_key_type()) { + result_code = UpdateConfigDB(okey, req->datatype, UNC_OP_READ, dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(dup_ikey); - return result_code; - } - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("Record Exists in DT IMPORT = %d ", result_code); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(dup_ikey); - return result_code; - } - /* Ensure the renamed name does not correspond to an existing UNC name */ - if (!no_rename) { - result_code = UpdateConfigDB(okey, UPLL_DT_CANDIDATE, UNC_OP_READ, - dmi, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(dup_ikey); - return result_code; + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(dup_ikey); + return result_code; } - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code && - UNC_KT_VTN != okey->get_key_type()) { - UPLL_LOG_DEBUG("Record Exists in DT CANDIDATE %d ", result_code); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(dup_ikey); - return result_code; + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + UPLL_LOG_DEBUG("Record Exists in DT IMPORT = %d ", result_code); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(dup_ikey); + return result_code; } } - if (renamed) { - UPLL_LOG_TRACE("Before Read from Rename Table %s", (dup_ikey->ToStrAll()).c_str()); - dup_ikey->SetCfgVal(NULL); - DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutCtrlr | kOpInOutDomain }; - result_code = ReadConfigDB(dup_ikey, req->datatype, UNC_OP_READ, dbop, - dmi, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_TRACE("ERROR :: %d:%s:%s", __LINE__, __FILE__, __func__); + /* Ensure the renamed name does not correspond to an existing UNC name */ + if (!no_rename) { + if (UNC_KT_VTN != okey->get_key_type()) { + result_code = UpdateConfigDB(okey, UPLL_DT_CANDIDATE, UNC_OP_READ, + dmi, MAINTBL); + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(dup_ikey); + return result_code; + } + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + UPLL_LOG_DEBUG("Record Exists in DT CANDIDATE %d ", result_code); DELETE_IF_NOT_NULL(okey); DELETE_IF_NOT_NULL(dup_ikey); return result_code; } + } + } + if (renamed) { + UPLL_LOG_TRACE("Before Read from Rename Table %s", + (dup_ikey->ToStrAll()).c_str()); + dup_ikey->SetCfgVal(NULL); + DbSubOp dbop = {kOpReadSingle, + kOpMatchCtrlr, + kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(dup_ikey, req->datatype, UNC_OP_READ, dbop, + dmi, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_TRACE("ERROR :: %d:%s:%s", __LINE__, __FILE__, __func__); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(dup_ikey); + return result_code; + } } /* Get The PFC, Old UNC, and New UNC name and maintains in rename_info * dup_ikey -> Old Unc Name (or) Controller Name @@ -1773,11 +2088,11 @@ upll_rc_t MoMgrImpl::RenameMo(IpcReqRespHeader *req, DELETE_IF_NOT_NULL(dup_ikey); DELETE_IF_NOT_NULL(rename_info); return result_code; -} + } -upll_rc_t MoMgrImpl::MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_name, - DalDmlIntf *dmi) { + upll_rc_t MoMgrImpl::MergeImportToCandidate(unc_key_type_t keytype, + const char *ctrlr_name, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; DalResultCode dal_result = uud::kDalRcSuccess; UPLL_LOG_TRACE("MergeImportToCandidate "); @@ -1786,13 +2101,20 @@ upll_rc_t MoMgrImpl::MergeImportToCandidate(unc_key_type_t keytype, tbl_index = GetTable((MoMgrTables)tbl, UPLL_DT_IMPORT); /* skipping VTN Main Table */ if (tbl_index < uudst::kDalNumTables && tbl_index != 0) { - UPLL_LOG_TRACE("Merging the %d Table ", tbl); + UPLL_LOG_TRACE("Merging the Keytype %d, Table %d, Table index %d ", + keytype, tbl, tbl_index); if (table[tbl]->get_key_type() != keytype) return UPLL_RC_ERR_GENERIC; DalBindInfo *dal_bind_info = new DalBindInfo(tbl_index); - dal_result = dmi->CopyModifiedInsertRecords(UPLL_DT_CANDIDATE, - UPLL_DT_IMPORT, tbl_index, dal_bind_info); - UPLL_LOG_TRACE("%d Table is completed ", tbl); + dal_result = dmi->CopyModifiedRecords(UPLL_DT_CANDIDATE, + UPLL_DT_IMPORT, + tbl_index, + dal_bind_info, + UNC_OP_CREATE); + UPLL_LOG_TRACE("%d Table is completed", tbl); + if (dal_result == uud::kDalRcRecordNotFound) { + dal_result = uud::kDalRcSuccess; + } if (dal_result != uud::kDalRcSuccess) { delete dal_bind_info; break; @@ -1802,120 +2124,114 @@ upll_rc_t MoMgrImpl::MergeImportToCandidate(unc_key_type_t keytype, } // convert dal_result to result_code return DalToUpllResCode(dal_result); -} - -upll_rc_t MoMgrImpl::ImportClear(unc_key_type_t keytype, - const char *ctrlr_id, - DalDmlIntf *dmi) { - // UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - // cout<<" ImportClear "; - for (int tbl = MAINTBL; tbl < ntable; tbl++) { - uudst::kDalTableIndex tbl_index; - tbl_index = GetTable((MoMgrTables)tbl, UPLL_DT_IMPORT); - if ((tbl_index < uudst::kDalNumTables)) { - result_code = DalToUpllResCode(dmi->DeleteRecords(UPLL_DT_IMPORT, - tbl_index, NULL)); - if ((UPLL_RC_SUCCESS != result_code) && - (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { - UPLL_LOG_DEBUG("DeleteRecords Failed %d", result_code); - return result_code; - } - } - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t MoMgrImpl::GetDiffRecord(ConfigKeyVal *ckv_running, - ConfigKeyVal *ckv_audit, - uuc::UpdateCtrlrPhase phase, MoMgrTables tbl, - ConfigKeyVal *&okey, - DalDmlIntf *dmi, - bool &invalid_attr) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckv_dup = NULL; - okey = NULL; - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain| - kOpInOutFlag | kOpInOutCs}; - switch (phase) { - case uuc::kUpllUcpDelete: - UPLL_LOG_TRACE("Deleted record is %s ", ckv_running->ToStrAll().c_str()); - result_code = GetChildConfigKey(okey, ckv_running); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); - return result_code; - } - break; - case uuc::kUpllUcpCreate: - if (tbl == CTRLRTBL) { - UPLL_LOG_TRACE("Created record fot ctrlr_tbl is %s ", ckv_running->ToStrAll().c_str()); - dbop.inoutop = kOpInOutCtrlr | kOpInOutDomain; + } + + upll_rc_t MoMgrImpl::ImportClear(unc_key_type_t keytype, + const char *ctrlr_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + return (ClearConfiguration(keytype, dmi, UPLL_DT_IMPORT)); + } + + upll_rc_t MoMgrImpl::GetDiffRecord(ConfigKeyVal *ckv_running, + ConfigKeyVal *ckv_audit, + uuc::UpdateCtrlrPhase phase, + MoMgrTables tbl, + ConfigKeyVal *&okey, + DalDmlIntf *dmi, + bool &invalid_attr) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckv_dup = NULL; + okey = NULL; + DbSubOp dbop = {kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain| + kOpInOutFlag | kOpInOutCs}; + switch (phase) { + case uuc::kUpllUcpDelete: + UPLL_LOG_TRACE("Deleted record is %s ", + ckv_running->ToStrAll().c_str()); result_code = GetChildConfigKey(okey, ckv_running); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); return result_code; } - result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, + break; + case uuc::kUpllUcpCreate: + if (tbl == CTRLRTBL) { + UPLL_LOG_TRACE("Created record fot ctrlr_tbl is %s ", + ckv_running->ToStrAll().c_str()); + dbop.inoutop = kOpInOutCtrlr | kOpInOutDomain; + result_code = GetChildConfigKey(okey, ckv_running); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", + result_code, phase); + return result_code; + } + result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB failed. err_code & phase %d %d", + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB failed. err_code & phase %d %d", result_code, phase); - return result_code; - } - } else { - UPLL_LOG_TRACE("Created record is %s ", ckv_running->ToStrAll().c_str()); + return result_code; + } + } else { + UPLL_LOG_TRACE("Created record is %s ", + ckv_running->ToStrAll().c_str()); result_code = DupConfigKeyVal(okey, ckv_running, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", result_code, phase); return result_code; } - } - break; - case uuc::kUpllUcpUpdate: - if (tbl == CTRLRTBL) { - UPLL_LOG_TRACE("UpdateRecord record for Ctrlr_tbl is %s ", ckv_running->ToStrAll().c_str()); - UPLL_LOG_TRACE("UpdateRecord record for Ctrlr_tbl is %s ", ckv_audit->ToStrAll().c_str()); - result_code = GetChildConfigKey(okey, ckv_running); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey for running record failed. " - "err_code & phase %d %d", result_code, phase); - return result_code; } - result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, + break; + case uuc::kUpllUcpUpdate: + if (tbl == CTRLRTBL) { + UPLL_LOG_TRACE("UpdateRecord record for Ctrlr_tbl is %s ", + ckv_running->ToStrAll().c_str()); + UPLL_LOG_TRACE("UpdateRecord record for Ctrlr_tbl is %s ", + ckv_audit->ToStrAll().c_str()); + result_code = GetChildConfigKey(okey, ckv_running); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey for running record failed. " + "err_code & phase %d %d", result_code, phase); + return result_code; + } + result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from running failed. " - "err_code & phase %d %d", result_code, phase); - return result_code; - } - result_code = GetChildConfigKey(ckv_dup, ckv_audit); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey for audit record failed. " - "err_code & phase %d %d", result_code, phase); - if (ckv_dup) - delete ckv_dup; - return result_code; - } - result_code = ReadConfigDB(ckv_dup, UPLL_DT_AUDIT, + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from running failed. " + "err_code & phase %d %d", result_code, phase); + return result_code; + } + result_code = GetChildConfigKey(ckv_dup, ckv_audit); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey for audit record failed. " + "err_code & phase %d %d", result_code, phase); + if (ckv_dup) + delete ckv_dup; + return result_code; + } + result_code = ReadConfigDB(ckv_dup, UPLL_DT_AUDIT, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from audit failed. " - "err_code & phase %d %d", result_code, phase); - delete ckv_dup; - return result_code; - } - } else { - UPLL_LOG_TRACE("UpdateRecord record is %s ", ckv_running->ToStrAll().c_str()); - UPLL_LOG_TRACE("UpdateRecord record is %s ", ckv_audit->ToStrAll().c_str()); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from audit failed. " + "err_code & phase %d %d", result_code, phase); + delete ckv_dup; + return result_code; + } + } else { + UPLL_LOG_TRACE("UpdateRecord record is %s ", + ckv_running->ToStrAll().c_str()); + UPLL_LOG_TRACE("UpdateRecord record is %s ", + ckv_audit->ToStrAll().c_str()); result_code = DupConfigKeyVal(okey, ckv_running, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. " "err_code & phase %d %d", result_code, phase); - delete ckv_dup; return result_code; } result_code = DupConfigKeyVal(ckv_dup, ckv_audit, tbl); @@ -1926,196 +2242,177 @@ upll_rc_t MoMgrImpl::GetDiffRecord(ConfigKeyVal *ckv_running, delete ckv_dup; return result_code; } - } - if (GetVal(okey) != NULL && - GetVal(ckv_dup) != NULL) { - void *val1 = GetVal(okey); - invalid_attr = FilterAttributes(val1, GetVal(ckv_dup), false, - UNC_OP_UPDATE); - } - break; - default: - UPLL_LOG_DEBUG("Invalid operation %d", phase); - return UPLL_RC_ERR_NO_SUCH_OPERATION; - break; - } + } + if (GetVal(okey) != NULL && + GetVal(ckv_dup) != NULL) { + void *val1 = GetVal(okey); + invalid_attr = FilterAttributes(val1, GetVal(ckv_dup), false, + UNC_OP_UPDATE); + } + break; + default: + UPLL_LOG_DEBUG("Invalid operation %d", phase); + return UPLL_RC_ERR_NO_SUCH_OPERATION; + break; + } delete ckv_dup; - return result_code; -} - -upll_rc_t MoMgrImpl::AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode db_result = uud::kDalRcSuccess; - MoMgrTables tbl = MAINTBL; - controller_domain_t ctrlr_dom, vlink_ctrlr_dom[2]; - vlink_ctrlr_dom[0].ctrlr = NULL; - vlink_ctrlr_dom[0].domain = NULL; - vlink_ctrlr_dom[1].ctrlr = NULL; - vlink_ctrlr_dom[1].domain = NULL; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - ConfigKeyVal *ckv_running = NULL; - ConfigKeyVal *ckv_audit = NULL; - ConfigKeyVal *ckv_drvr = NULL; - ConfigKeyVal *resp = NULL; - DalCursor *cursor = NULL; - bool invalid_attr = false; - uint8_t *in_ctrlr = reinterpret_cast(const_cast(ctrlr_id)); - /* decides whether to retrieve from controller table or main table */ - GET_TABLE_TYPE(keytype, tbl); - unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); - if (phase == uuc::kUpllUcpDelete2) - return result_code; - /* retreives the delta of running and audit configuration */ - UPLL_LOG_TRACE("Operation is %d", op); - if ((op == UNC_OP_UPDATE) && (keytype == UNC_KT_VTN)) - return UPLL_RC_SUCCESS; - result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op, - ckv_running, ckv_audit, - &cursor, dmi, in_ctrlr, tbl, true); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); return result_code; } - while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { - /* ignore records of another controller for create and update operation */ - if (phase != uuc::kUpllUcpDelete) { - uint8_t *db_ctrlr = NULL; - GET_USER_DATA_CTRLR(ckv_running, db_ctrlr); - UPLL_LOG_TRACE("db ctrl_id and audit ctlr_id are %s %s", db_ctrlr, ctrlr_id); - if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), - reinterpret_cast(ctrlr_id), - strlen(reinterpret_cast(ctrlr_id)) + 1)) - continue; - } - UPLL_LOG_TRACE("Diff Running Record for Keytype: Operation: is %d %d\n %s", - keytype, op, ckv_running->ToStrAll().c_str()); - if (op == UNC_OP_UPDATE) - UPLL_LOG_TRACE("Diff Audit Record for Keytype: Operation: is %d %d\n %s", - keytype, op, ckv_audit->ToStrAll().c_str()); - result_code = GetDiffRecord(ckv_running, ckv_audit, phase, tbl, - ckv_drvr, dmi, invalid_attr); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetDiffRecord failed err code is %d", result_code); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); - dmi->CloseCursor(cursor, true); + + upll_rc_t MoMgrImpl::AuditUpdateController( + unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DalResultCode db_result = uud::kDalRcSuccess; + MoMgrTables tbl = MAINTBL; + controller_domain_t ctrlr_dom, vlink_ctrlr_dom[2]; + vlink_ctrlr_dom[0].ctrlr = NULL; + vlink_ctrlr_dom[0].domain = NULL; + vlink_ctrlr_dom[1].ctrlr = NULL; + vlink_ctrlr_dom[1].domain = NULL; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + ConfigKeyVal *ckv_running = NULL; + ConfigKeyVal *ckv_audit = NULL; + ConfigKeyVal *ckv_drvr = NULL; + ConfigKeyVal *resp = NULL; + DalCursor *cursor = NULL; + bool invalid_attr = false; + uint8_t flags = 0; + uint8_t *in_ctrlr = reinterpret_cast + (const_cast(ctrlr_id)); + /* decides whether to retrieve from controller table or main table */ + GET_TABLE_TYPE(keytype, tbl); + unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + if (phase == uuc::kUpllUcpDelete2) + return result_code; + /* retreives the delta of running and audit configuration */ + UPLL_LOG_TRACE("Operation is %d", op); + if ((op == UNC_OP_UPDATE) && (keytype == UNC_KT_VTN)) + return UPLL_RC_SUCCESS; + result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op, + ckv_running, ckv_audit, + &cursor, dmi, in_ctrlr, tbl, true); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); return result_code; } - if (invalid_attr) { - DELETE_IF_NOT_NULL(ckv_drvr); - continue; - } - if (OVERLAY_KT(keytype) && (op == UNC_OP_DELETE)) { - UPLL_LOG_TRACE("Overlay KeyType %d", keytype); - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain}; - result_code = ReadConfigDB(ckv_drvr, UPLL_DT_AUDIT, - UNC_OP_READ, dbop, dmi, MAINTBL); + while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { + /* ignore records of another controller for create and update operation */ + if (phase != uuc::kUpllUcpDelete) { + /* VlanmapOnBoundary: Ignore records of another controller + * for create and update operation */ + uint8_t *db_ctrlr = NULL; + GET_USER_DATA_CTRLR(ckv_running, db_ctrlr); + if ((!db_ctrlr) || (db_ctrlr && + strncmp(reinterpret_cast(db_ctrlr), + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast + (ctrlr_id)) + 1))) { + if (keytype == UNC_KT_VLINK) { + unc_key_type_t ktype = UNC_KT_ROOT; + VlinkMoMgr *mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + if (!mgr) { + UPLL_LOG_DEBUG("Invalid vLink mgr"); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + ktype = mgr->GetVlinkVnodeIfKeyType(ckv_running, 1); + if (ktype != UNC_KT_VUNK_IF) { + GET_USER_DATA_CTRLR(ckv_running->get_cfg_val(), db_ctrlr); + if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast + (ctrlr_id)) + 1)) { + continue; + } + } else { + continue; + } + } else { + continue; + } + } + } + UPLL_LOG_TRACE("Diff Running Record for Keytype: Operation:" + "is %d %d\n %s", + keytype, op, ckv_running->ToStrAll().c_str()); + if (op == UNC_OP_UPDATE) + UPLL_LOG_TRACE("Diff Audit Record for Keytype: Operation:" + "is %d %d\n %s", + keytype, op, ckv_audit->ToStrAll().c_str()); + result_code = GetDiffRecord(ckv_running, ckv_audit, phase, tbl, + ckv_drvr, dmi, invalid_attr); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from AuditdB failed %d", result_code); + UPLL_LOG_INFO("GetDiffRecord failed err code is %d", result_code); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); DELETE_IF_NOT_NULL(ckv_drvr); dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; + return result_code; + } + if (invalid_attr) { + DELETE_IF_NOT_NULL(ckv_drvr); + // Assuming that the diff found only in ConfigStatus + // Setting the value as OnlyCSDiff in the out parameter + // ctrlr_affected + // The value Configdiff should be given more priority than the value + // onlycs . + // SO If the out parameter ctrlr_affected has already value + // as configdiff + // then dont change the value + if (*ctrlr_affected != uuc::kCtrlrAffectedConfigDiff) { + UPLL_LOG_INFO("Setting the ctrlr_affected to OnlyCSDiff for KT %u", + keytype); + *ctrlr_affected = uuc::kCtrlrAffectedOnlyCSDiff; + } + continue; } - if (keytype == UNC_KT_VTUNNEL || keytype == UNC_KT_VTUNNEL_IF) { - result_code = PopulateDriverDeleteCkv(ckv_drvr, dmi, UPLL_DT_AUDIT); + if (OVERLAY_KT(keytype) && (op == UNC_OP_DELETE)) { + UPLL_LOG_TRACE("Overlay KeyType %d", keytype); + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain}; + result_code = ReadConfigDB(ckv_drvr, UPLL_DT_AUDIT, + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Couldnt form Driver Val structure %d", result_code); + UPLL_LOG_DEBUG("ReadConfigDB from AuditdB failed %d", result_code); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); DELETE_IF_NOT_NULL(ckv_drvr); dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } + if (keytype == UNC_KT_VTUNNEL || keytype == UNC_KT_VTUNNEL_IF) { + result_code = PopulateDriverDeleteCkv(ckv_drvr, dmi, UPLL_DT_AUDIT); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Couldnt form Driver Val structure %d", result_code); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + } } - } - /* Boundary VLink is not sent to Controller*/ - if (ckv_drvr->get_key_type() == UNC_KT_VLINK && (op != UNC_OP_DELETE)) { - bool bound_vlink = false; - VlinkMoMgr *mgr = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VLINK))); - if (!mgr) { - UPLL_LOG_DEBUG("Invalid mgr"); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - result_code = mgr->BoundaryVlink(ckv_drvr, vlink_ctrlr_dom, bound_vlink); - if (bound_vlink) { - UPLL_LOG_TRACE("%s is a boundary Link. Not Sent to Controller/n", - (reinterpret_cast(ckv_drvr->get_key()))->vlink_name); - if (ckv_drvr) delete ckv_drvr; - ckv_drvr = NULL; - continue; - } - } - GET_USER_DATA_CTRLR_DOMAIN(ckv_drvr, ctrlr_dom); - UPLL_LOG_DEBUG("Outside if %d", keytype); - if (!OVERLAY_KT(keytype)) { - UPLL_LOG_DEBUG("Inside if %d", keytype); - upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? - UPLL_DT_AUDIT : UPLL_DT_RUNNING; - if (ckv_drvr->get_key_type() == UNC_KT_VLINK) { - if (ckv_drvr->get_cfg_val()) { - GET_USER_DATA_CTRLR_DOMAIN(ckv_drvr->get_cfg_val(), vlink_ctrlr_dom[1]); - } else { - vlink_ctrlr_dom[1].ctrlr = NULL; - vlink_ctrlr_dom[1].domain = NULL; - } - } - controller_domain_t *tctrlr_dom = - (ckv_drvr->get_key_type() == UNC_KT_VLINK)? - &vlink_ctrlr_dom[1]:&ctrlr_dom; - if (UNC_KT_POLICING_PROFILE == ckv_drvr->get_key_type() || - UNC_KT_POLICING_PROFILE_ENTRY == ckv_drvr->get_key_type() || - UNC_KT_FLOWLIST == ckv_drvr->get_key_type() || - UNC_KT_FLOWLIST_ENTRY == ckv_drvr->get_key_type() || - UNC_KT_VTN_POLICINGMAP == ckv_drvr->get_key_type() || - UNC_KT_VTN_FLOWFILTER == ckv_drvr->get_key_type() || - UNC_KT_VTN_FLOWFILTER_ENTRY == ckv_drvr->get_key_type()) { - dt_type = UPLL_DT_RUNNING; - } - result_code = DupConfigKeyVal(resp, ckv_drvr, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" DupConfigKeyVal failed err code(%d)", - result_code); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); - dmi->CloseCursor(cursor, true); - return result_code; - } - result_code = GetRenamedControllerKey(ckv_drvr, dt_type, - dmi, tctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", - result_code); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); - dmi->CloseCursor(cursor, true); - return result_code; - } - if (ckv_drvr->get_key_type() == UNC_KT_VLINK && (op == UNC_OP_DELETE)) { - /* boundary vlink */ - VlinkMoMgr *vlink_mgr = reinterpret_cast( + /* Boundary VLink is not sent to Controller*/ + if (ckv_drvr->get_key_type() == UNC_KT_VLINK && (op != UNC_OP_DELETE)) { + bool bound_vlink = false; + VlinkMoMgr *mgr = reinterpret_cast( const_cast(GetMoManager(UNC_KT_VLINK))); - if (!vlink_mgr) { + if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); @@ -2123,1004 +2420,1483 @@ upll_rc_t MoMgrImpl::AuditUpdateController(unc_key_type_t keytype, dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } - unc_key_type_t ktype[2] = {UNC_KT_ROOT, UNC_KT_ROOT}; - for (int vnode_count = 0; vnode_count < 2; vnode_count++) { - ktype[vnode_count] = vlink_mgr-> - GetVlinkVnodeIfKeyType(ckv_drvr, vnode_count); - } - if (ktype[0] != UNC_KT_VUNK_IF && ktype[1] != UNC_KT_VUNK_IF) { - if (!ctrlr_dom.ctrlr || !tctrlr_dom->ctrlr || !ctrlr_dom.domain - || !tctrlr_dom->domain) { - UPLL_LOG_INFO("Ctrlr id or domain id is Null in vlink delete"); - if (ckv_drvr) - delete ckv_drvr; - return UPLL_RC_ERR_GENERIC; - } - } - if (ktype[0] == UNC_KT_VUNK_IF || ktype[1] == UNC_KT_VUNK_IF || - strncmp(reinterpret_cast(ctrlr_dom.ctrlr), - reinterpret_cast(tctrlr_dom->ctrlr), - kMaxLenCtrlrId + 1) || - strncmp(reinterpret_cast(ctrlr_dom.domain), - reinterpret_cast(tctrlr_dom->domain), - kMaxLenDomainId + 1)) { + result_code = mgr->BoundaryVlink(ckv_drvr, + vlink_ctrlr_dom, + bound_vlink); + if (bound_vlink) { UPLL_LOG_TRACE("%s is a boundary Link. Not Sent to Controller/n", - (reinterpret_cast(ckv_drvr->get_key()))->vlink_name); - DELETE_IF_NOT_NULL(resp); - if (ckv_drvr) - delete ckv_drvr; + (reinterpret_cast + (ckv_drvr->get_key()))->vlink_name); + if (ckv_drvr) delete ckv_drvr; ckv_drvr = NULL; continue; } } - } + GET_USER_DATA_CTRLR_DOMAIN(ckv_drvr, ctrlr_dom); + UPLL_LOG_DEBUG("Outside if %d", keytype); + if (!OVERLAY_KT(keytype)) { + UPLL_LOG_DEBUG("Inside if %d", keytype); + upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? + UPLL_DT_AUDIT : UPLL_DT_RUNNING; + if (ckv_drvr->get_key_type() == UNC_KT_VLINK) { + if (ckv_drvr->get_cfg_val()) { + GET_USER_DATA_CTRLR_DOMAIN(ckv_drvr->get_cfg_val(), + vlink_ctrlr_dom[1]); + } else { + vlink_ctrlr_dom[1].ctrlr = NULL; + vlink_ctrlr_dom[1].domain = NULL; + } + } + controller_domain_t *tctrlr_dom = + (ckv_drvr->get_key_type() == UNC_KT_VLINK)? + &vlink_ctrlr_dom[1]:&ctrlr_dom; + if (UNC_KT_POLICING_PROFILE == ckv_drvr->get_key_type() || + UNC_KT_POLICING_PROFILE_ENTRY == ckv_drvr->get_key_type() || + UNC_KT_FLOWLIST == ckv_drvr->get_key_type() || + UNC_KT_FLOWLIST_ENTRY == ckv_drvr->get_key_type() || + UNC_KT_VTN_POLICINGMAP == ckv_drvr->get_key_type() || + UNC_KT_VTN_FLOWFILTER == ckv_drvr->get_key_type() || + UNC_KT_VTN_FLOWFILTER_ENTRY == ckv_drvr->get_key_type()) { + dt_type = UPLL_DT_RUNNING; + } + result_code = DupConfigKeyVal(resp, ckv_drvr, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" DupConfigKeyVal failed err code(%d)", + result_code); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); + return result_code; + } + /* VlanmapOnBoundary: Get the flags */ + GET_USER_DATA_FLAGS(ckv_drvr, flags); - if (ctrlr_dom.ctrlr != NULL) { - bool domain = false; - KEYTYPE_WITHOUT_DOMAIN(keytype, domain); - if (!domain) { - if (NULL == ctrlr_dom.domain) { - UPLL_LOG_INFO(" domain is NULL"); + result_code = GetRenamedControllerKey(ckv_drvr, dt_type, + dmi, tctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", + result_code); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); DELETE_IF_NOT_NULL(resp); dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; + return result_code; + } + if (ckv_drvr->get_key_type() == UNC_KT_VLINK && + (op == UNC_OP_DELETE)) { + /* boundary vlink */ + VlinkMoMgr *vlink_mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + if (!vlink_mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + DELETE_IF_NOT_NULL(resp); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + unc_key_type_t ktype[2] = {UNC_KT_ROOT, UNC_KT_ROOT}; + for (int vnode_count = 0; vnode_count < 2; vnode_count++) { + ktype[vnode_count] = vlink_mgr-> + GetVlinkVnodeIfKeyType(ckv_drvr, vnode_count); + } + if (ktype[0] != UNC_KT_VUNK_IF && ktype[1] != UNC_KT_VUNK_IF) { + if (!ctrlr_dom.ctrlr || !tctrlr_dom->ctrlr || !ctrlr_dom.domain + || !tctrlr_dom->domain) { + UPLL_LOG_INFO("Ctrlr id or domain id is Null in vlink delete"); + if (ckv_drvr) + delete ckv_drvr; + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + DELETE_IF_NOT_NULL(resp); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + } + if (ktype[0] == UNC_KT_VUNK_IF || ktype[1] == UNC_KT_VUNK_IF || + strncmp(reinterpret_cast(ctrlr_dom.ctrlr), + reinterpret_cast(tctrlr_dom->ctrlr), + kMaxLenCtrlrId + 1) || + strncmp(reinterpret_cast(ctrlr_dom.domain), + reinterpret_cast(tctrlr_dom->domain), + kMaxLenDomainId + 1)) { + UPLL_LOG_TRACE("%s is a boundary Link. Not Sent to Controller/n", + (reinterpret_cast + (ckv_drvr->get_key()))->vlink_name); + DELETE_IF_NOT_NULL(resp); + if (ckv_drvr) + delete ckv_drvr; + ckv_drvr = NULL; + continue; + } } } - } else { - UPLL_LOG_DEBUG("Controller Id is NULL"); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(resp); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_TRACE("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - IpcResponse ipc_response; - memset(&ipc_response, 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(IpcRequest)); - ipc_req.header.clnt_sess_id = session_id; - ipc_req.header.config_id = config_id; - ipc_req.header.operation = op; - ipc_req.header.datatype = UPLL_DT_CANDIDATE; - ipc_req.ckv_data = ckv_drvr; - if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, reinterpret_cast - (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { - UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv_drvr->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - if ((ipc_response.header.result_code != UPLL_RC_SUCCESS) && (phase != uuc::kUpllUcpDelete)) { - UPLL_LOG_DEBUG("driver return failure err_code is %d", ipc_response.header.result_code); - ConfigKeyVal *ctrlr_key = NULL; - if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { - result_code = DupConfigKeyVal(ctrlr_key, ckv_running, CTRLRTBL); + if (ctrlr_dom.ctrlr != NULL) { + bool domain = false; + KEYTYPE_WITHOUT_DOMAIN(keytype, domain); + if (!domain) { + if (NULL == ctrlr_dom.domain) { + UPLL_LOG_INFO(" domain is NULL"); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(resp); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + } } else { - result_code = DupConfigKeyVal(ctrlr_key, ckv_running, MAINTBL); - } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("DupConfigKeyVal failed"); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - DELETE_IF_NOT_NULL(resp); + UPLL_LOG_DEBUG("Controller Id is NULL"); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); + DELETE_IF_NOT_NULL(resp); dmi->CloseCursor(cursor, true); - return result_code; + return UPLL_RC_ERR_GENERIC; } - if (UNC_KT_VTN == keytype) { - result_code = UpdateCtrlrConfigStatus(UNC_CS_INVALID, - phase, ctrlr_key); - } else { - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, - phase, ctrlr_key); + + UPLL_LOG_TRACE("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + /* VlanmapOnBoundary: Added vlanmap check */ + if (keytype == UNC_KT_VBR_VLANMAP) { + pfcdrv_val_vlan_map *vlanmap_val = + reinterpret_cast(GetVal(ckv_drvr)); + if (vlanmap_val) { + vlanmap_val->valid[0] = UNC_VF_INVALID; + if (vlanmap_val->vm.valid[UPLL_IDX_VLAN_ID_VM] != UNC_VF_INVALID) + vlanmap_val->valid[0] = UNC_VF_VALID; + } } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("UpdateAuditConfigStatus failed"); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); + + IpcResponse ipc_response; + memset(&ipc_response, 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(IpcRequest)); + ipc_req.header.clnt_sess_id = session_id; + ipc_req.header.config_id = config_id; + ipc_req.header.operation = op; + ipc_req.header.datatype = UPLL_DT_CANDIDATE; + ipc_req.ckv_data = ckv_drvr; + if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, + reinterpret_cast + (ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_response)) { + UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", + ckv_drvr->get_key_type(), reinterpret_cast + (ctrlr_dom.ctrlr)); DELETE_IF_NOT_NULL(resp); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); - dmi->CloseCursor(cursor, true); - DELETE_IF_NOT_NULL(ctrlr_key); - return result_code; - } - result_code = UpdateConfigDB(ctrlr_key, UPLL_DT_RUNNING, UNC_OP_UPDATE, - dmi, tbl); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response ckv err_code %d", - result_code); DELETE_IF_NOT_NULL(ipc_response.ckv_data); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); dmi->CloseCursor(cursor, true); - DELETE_IF_NOT_NULL(ctrlr_key); - return result_code; + return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(ctrlr_key); - if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { - result_code = SetConsolidatedStatus(resp, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("SetConsolidatedStatus failed for ipc response ckv err_code %d", - result_code); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); + /* VlanmapOnBoundary: Added vlanmap check */ + if (ckv_running->get_key_type() == UNC_KT_VBR_VLANMAP && + ipc_response.header.result_code != UPLL_RC_SUCCESS) { + SET_USER_DATA_FLAGS(ckv_drvr, flags); + + + UPLL_LOG_TRACE("Flags = %u", flags); + UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + VlanMapMoMgr *vlanmap_mgr = reinterpret_cast( + const_cast(GetMoManager( + ckv_running->get_key_type()))); + if (!vlanmap_mgr) { + UPLL_LOG_DEBUG("Invalid mgr param"); + DELETE_IF_NOT_NULL(resp); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + + /* resp is expected NULL inside TranslateError + * Inside TranslateError, DupConfigKeyVal is called */ + DELETE_IF_NOT_NULL(resp); + + /* Case1: Audit(del) - Check in AUDIT since no info exists in RUNNING + * Case2: Audit(Cr/upd) - Check in RUNNING always */ + upll_keytype_datatype_t dttype = (uuc::kUpllUcpDelete == phase) ? + UPLL_DT_AUDIT: UPLL_DT_RUNNING; + result_code = vlanmap_mgr->TranslateError(&resp, ckv_drvr, + dmi, dttype); + if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + dmi->CloseCursor(cursor, true); return result_code; } } - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_drvr); - dmi->CloseCursor(cursor, true); - DELETE_IF_NOT_NULL(resp); - return ipc_response.header.result_code; - } - DELETE_IF_NOT_NULL(ckv_drvr); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - *ctrlr_affected = true; - DELETE_IF_NOT_NULL(resp); - } - if (cursor) - dmi->CloseCursor(cursor, true); - if (uud::kDalRcSuccess != db_result) { - UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); - result_code = DalToUpllResCode(db_result); - } - if (ckv_running) - delete ckv_running; - if (ckv_audit) - delete ckv_audit; - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; - return result_code; -} - -upll_rc_t MoMgrImpl::AuditVoteCtrlrStatus(unc_key_type_t keytype, - CtrlrVoteStatus *vote_status, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - if ((vote_status == NULL) || (dmi == NULL)) { - UPLL_LOG_INFO("vote_status or dmi is null"); - return UPLL_RC_ERR_GENERIC; - } - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckv_dup = NULL; - ConfigKeyVal *ckv_au_dup = NULL; - uuc::UpdateCtrlrPhase operation = uuc::kUpllUcpUpdate; - MoMgrTables tbl = MAINTBL; - uint32_t ctrlr_result = vote_status->upll_ctrlr_result; - uint8_t *ctrlr_id = - reinterpret_cast((char *)(vote_status->ctrlr_id.c_str())); - UPLL_LOG_INFO("controller id & vote result is %s %d", ctrlr_id, - ctrlr_result); - switch (ctrlr_result) { - case UPLL_RC_SUCCESS: /* No Operation */ - break; - case UPLL_RC_ERR_RESOURCE_DISCONNECTED: - break; - default: - /* retrieves the error configkeyval one by one and if the keytype matches, - rename the key with UNC name */ - ConfigKeyVal *ckv_drv_rslt = NULL; - for (ckv_drv_rslt = vote_status->err_ckv; - ckv_drv_rslt != NULL; ckv_drv_rslt = ckv_drv_rslt->get_next_cfg_key_val()) { - if (ckv_drv_rslt->get_key_type() != keytype) - continue; - UPLL_LOG_INFO("err ConfigKeyVal are %s", (vote_status->err_ckv)->ToStrAll().c_str()); - /* Get the Unc key */ - if (!OVERLAY_KT(keytype)) { - result_code = GetRenamedUncKey(ckv_drv_rslt, UPLL_DT_RUNNING, - dmi, ctrlr_id); - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("GetRenamedUncKey failed - %d", result_code); - return result_code; - } - } - result_code = GetChildConfigKey(ckv_dup, ckv_drv_rslt); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Duplicate ConfigKeyVal failed - %d", result_code); - DELETE_IF_NOT_NULL(ckv_dup); + + UPLL_LOG_DEBUG("Result code from driver %d", + ipc_response.header.result_code); + if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { + result_code = AdaptValToVtnService(resp); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_GENERIC) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed %d\n", result_code); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + DELETE_IF_NOT_NULL(resp); + dmi->CloseCursor(cursor, true); return result_code; } - /* Record exist check from running - if not found, it is a delete*/ - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(ckv_dup, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS == result_code) { /* exists in Running Database */ - /* Record exist check from audit - if exists then update else create*/ - UPLL_LOG_TRACE("Record exist in running tbl result_code %d", - result_code); - result_code = GetChildConfigKey(ckv_au_dup, ckv_drv_rslt); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKeyVal failed for ckv_au_dup - %d", result_code); - delete ckv_dup; //check with Vinoth - DELETE_IF_NOT_NULL(ckv_au_dup); + if (phase == uuc::kUpllUcpDelete) { + *err_ckv = resp; + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); + return ipc_response.header.result_code; + } else { + UPLL_LOG_DEBUG("driver return failure err_code is %d", + ipc_response.header.result_code); + *err_ckv = resp; + ConfigKeyVal *ctrlr_key = NULL; + if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { + result_code = DupConfigKeyVal(ctrlr_key, ckv_running, CTRLRTBL); + } else { + result_code = DupConfigKeyVal(ctrlr_key, ckv_running, MAINTBL); + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("DupConfigKeyVal failed"); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); return result_code; } - result_code = ReadConfigDB(ckv_au_dup, UPLL_DT_AUDIT, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS == result_code) { - UPLL_LOG_TRACE("Record exist in running & audit tbl result_code %d", - result_code); - operation = uuc::kUpllUcpUpdate; + if (UNC_KT_VTN == keytype) { + result_code = UpdateCtrlrConfigStatus(UNC_CS_INVALID, + phase, ctrlr_key); } else { - UPLL_LOG_TRACE("Record exist in running tbl only result_code %d", - result_code); - operation = uuc::kUpllUcpCreate; + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + phase, ctrlr_key, dmi); } - DELETE_IF_NOT_NULL(ckv_au_dup); - } else { - result_code = ReadConfigDB(ckv_dup, UPLL_DT_AUDIT, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS == result_code) { /* exists in Audit Database */ - UPLL_LOG_TRACE("Record exist in audit tbl only result_code %d", - result_code); - operation = uuc::kUpllUcpDelete; - ckv_dup->DeleteCfgVal(); - UPLL_LOG_DEBUG("ConfigKeyVal failed during AuditVote Phase is %s", - ckv_dup->ToStrAll().c_str()); - } else { - UPLL_LOG_TRACE("Record neither exists in running nor " - "audit tbl result_code %d", result_code); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("UpdateAuditConfigStatus failed"); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); + DELETE_IF_NOT_NULL(ctrlr_key); + return result_code; } - DELETE_IF_NOT_NULL(ckv_dup);//check with Vinoth - continue; - } - if (uuc::kUpllUcpDelete != operation) { - ConfigKeyVal *temp_ckv_dup = NULL; + result_code = UpdateConfigDB(ctrlr_key, + UPLL_DT_RUNNING, + UNC_OP_UPDATE, + dmi, + tbl); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response" + "ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); + DELETE_IF_NOT_NULL(ctrlr_key); + return result_code; + } + DELETE_IF_NOT_NULL(ctrlr_key); if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { - result_code = GetChildConfigKey(temp_ckv_dup, ckv_drv_rslt); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Duplicate ConfigKeyVal failed - %d", result_code); - DELETE_IF_NOT_NULL(ckv_dup); + result_code = SetConsolidatedStatus(resp, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("SetConsolidatedStatus failed for ipc" + "response ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); return result_code; } - ConfigKeyVal *ctrlr_ckv = NULL; - result_code = GetChildConfigKey(ctrlr_ckv, temp_ckv_dup); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKeyVal failed %d", result_code); - DELETE_IF_NOT_NULL(ckv_dup); - DELETE_IF_NOT_NULL(temp_ckv_dup); + } + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_drvr); + dmi->CloseCursor(cursor, true); + return ipc_response.header.result_code; + } + } + DELETE_IF_NOT_NULL(ckv_drvr); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + // *ctrlr_affected = true; + + if (*ctrlr_affected == uuc::kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Reset ctrlr state from OnlyCSDiff to ConfigDiff KT %u", + keytype); + } + UPLL_LOG_DEBUG("Setting the ctrlr_affected to ConfigDiff," + "KT %u", keytype); + *ctrlr_affected = uuc::kCtrlrAffectedConfigDiff; + DELETE_IF_NOT_NULL(resp); + } + if (cursor) + dmi->CloseCursor(cursor, true); + if (uud::kDalRcSuccess != db_result) { + UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); + result_code = DalToUpllResCode(db_result); + } + if (ckv_running) + delete ckv_running; + if (ckv_audit) + delete ckv_audit; + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) + ? UPLL_RC_SUCCESS : result_code; + return result_code; + } + + upll_rc_t MoMgrImpl::AuditVoteCtrlrStatus(unc_key_type_t keytype, + CtrlrVoteStatus *vote_status, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + if ((vote_status == NULL) || (dmi == NULL)) { + UPLL_LOG_INFO("vote_status or dmi is null"); + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckv_dup = NULL; + ConfigKeyVal *ckv_au_dup = NULL; + uuc::UpdateCtrlrPhase operation = uuc::kUpllUcpUpdate; + MoMgrTables tbl = MAINTBL; + uint32_t ctrlr_result = vote_status->upll_ctrlr_result; + uint8_t *ctrlr_id = + reinterpret_cast((char *)(vote_status->ctrlr_id.c_str())); + UPLL_LOG_INFO("controller id & vote result is %s %d", ctrlr_id, + ctrlr_result); + switch (ctrlr_result) { + case UPLL_RC_SUCCESS: /* No Operation */ + break; + case UNC_RC_CTR_DISCONNECTED: + break; + default: + /* retrieves the error configkeyval one by one and if the + * keytype matches, + rename the key with UNC name */ + ConfigKeyVal *ckv_drv_rslt = NULL; + for (ckv_drv_rslt = vote_status->err_ckv; + ckv_drv_rslt != NULL; ckv_drv_rslt = ckv_drv_rslt-> + get_next_cfg_key_val()) { + if (ckv_drv_rslt->get_key_type() != keytype) + continue; + /* Get the Unc key */ + if (!OVERLAY_KT(keytype)) { + // Perform RenameUncKey and get logical specific key values from db + result_code = AdaptErrValToVtn(ckv_drv_rslt, dmi, ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("AdaptErrValToVtn failed %d", result_code); + return result_code; + } + // Convert driver val to logical specific val + result_code = AdaptValToVtnService(ckv_drv_rslt); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed %d\n", result_code); return result_code; } - SET_USER_DATA_CTRLR(ctrlr_ckv, ctrlr_id); - DbSubOp dbop1 = {kOpReadMultiple, kOpMatchCtrlr, - kOpInOutCtrlr | kOpInOutDomain}; - result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, CTRLRTBL); + } + result_code = GetChildConfigKey(ckv_dup, ckv_drv_rslt); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Duplicate ConfigKeyVal failed - %d", result_code); + DELETE_IF_NOT_NULL(ckv_dup); + return result_code; + } + /* Record exist check from running - if not found, it is a delete*/ + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; + result_code = ReadConfigDB(ckv_dup, UPLL_DT_RUNNING, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS == result_code) { /* exists in Running Database*/ + /* Record exist check from audit - if exists then update else + * create*/ + UPLL_LOG_TRACE("Record exist in running tbl result_code %d", + result_code); + result_code = GetChildConfigKey(ckv_au_dup, ckv_drv_rslt); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(ckv_dup); - DELETE_IF_NOT_NULL(temp_ckv_dup); - DELETE_IF_NOT_NULL(ctrlr_ckv); + UPLL_LOG_DEBUG("GetChildConfigKeyVal failed for ckv_au_dup - %d", + result_code); + delete ckv_dup; // check with Vinoth + DELETE_IF_NOT_NULL(ckv_au_dup); return result_code; } - ConfigKeyVal *temp_ctrlr_ckv = ctrlr_ckv; - while(temp_ctrlr_ckv) { - if (UNC_KT_VTN == keytype) { - result_code = UpdateCtrlrConfigStatus(UNC_CS_INVALID, - operation, temp_ctrlr_ckv); - } else { - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, - operation, temp_ctrlr_ckv); + result_code = ReadConfigDB(ckv_au_dup, UPLL_DT_AUDIT, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS == result_code) { + UPLL_LOG_TRACE("Record exist in running & audit tbl" + "result_code %d", + result_code); + operation = uuc::kUpllUcpUpdate; + } else { + UPLL_LOG_TRACE("Record exist in running tbl only result_code %d", + result_code); + operation = uuc::kUpllUcpCreate; + } + DELETE_IF_NOT_NULL(ckv_au_dup); + } else { + result_code = ReadConfigDB(ckv_dup, UPLL_DT_AUDIT, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS == result_code) { /* exists in Audit Database*/ + UPLL_LOG_TRACE("Record exist in audit tbl only result_code %d", + result_code); + operation = uuc::kUpllUcpDelete; + ckv_dup->DeleteCfgVal(); + UPLL_LOG_DEBUG("ConfigKeyVal failed during AuditVote" + "Phase is %s", + ckv_dup->ToStrAll().c_str()); + } else { + UPLL_LOG_TRACE("Record neither exists in running nor " + "audit tbl result_code %d", result_code); + } + DELETE_IF_NOT_NULL(ckv_dup); // check with Vinoth + + /* VlanmapOnBoundary: Added vlanmap check */ + if (ckv_drv_rslt->get_key_type() == UNC_KT_VBR_VLANMAP) { + ConfigKeyVal *err_ckv = NULL; + VlanMapMoMgr *vlanmap_mgr = reinterpret_cast( + const_cast(GetMoManager + (ckv_drv_rslt->get_key_type()))); + + ConfigKeyVal *vlanmap_ckv = NULL; + result_code = vlanmap_mgr->GetChildConfigKey(vlanmap_ckv, + ckv_drv_rslt); + + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutDomain | kOpInOutCtrlr}; + result_code = vlanmap_mgr->ReadConfigDB(vlanmap_ckv, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from running failed %d", + result_code); + DELETE_IF_NOT_NULL(vlanmap_ckv); + return UPLL_RC_ERR_GENERIC; + } + + uint8_t flags = 0; + GET_USER_DATA_FLAGS(vlanmap_ckv, flags); + if (flags & BOUNDARY_VLANMAP_FLAG) { + /* Case1: Audit(del) - Check in AUDIT since no + * info exists in RUNNING + * Case2: Audit(Cr/upd) - Check in RUNNING always */ + upll_keytype_datatype_t dttype = + (uuc::kUpllUcpDelete == operation)? + UPLL_DT_AUDIT:UPLL_DT_RUNNING; + result_code = vlanmap_mgr->TranslateError(&err_ckv, + vlanmap_ckv, + dmi, dttype); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in Updating Error Code"); + DELETE_IF_NOT_NULL(err_ckv); + DELETE_IF_NOT_NULL(vlanmap_ckv); + return result_code; + } + ckv_drv_rslt->ResetWith(err_ckv); + } + } + continue; + } + if (uuc::kUpllUcpDelete != operation) { + ConfigKeyVal *temp_ckv_dup = NULL; + if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { + result_code = GetChildConfigKey(temp_ckv_dup, ckv_drv_rslt); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Duplicate ConfigKeyVal failed - %d", + result_code); + DELETE_IF_NOT_NULL(ckv_dup); + return result_code; + } + ConfigKeyVal *ctrlr_ckv = NULL; + result_code = GetChildConfigKey(ctrlr_ckv, temp_ckv_dup); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKeyVal failed %d", result_code); + DELETE_IF_NOT_NULL(ckv_dup); + DELETE_IF_NOT_NULL(temp_ckv_dup); + return result_code; + } + SET_USER_DATA_CTRLR(ctrlr_ckv, ctrlr_id); + DbSubOp dbop1 = {kOpReadMultiple, kOpMatchCtrlr, + kOpInOutCtrlr | kOpInOutDomain}; + result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, + UNC_OP_READ, dbop1, dmi, CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(ckv_dup); + DELETE_IF_NOT_NULL(temp_ckv_dup); + DELETE_IF_NOT_NULL(ctrlr_ckv); + return result_code; + } + ConfigKeyVal *temp_ctrlr_ckv = ctrlr_ckv; + while (temp_ctrlr_ckv) { + if (UNC_KT_VTN == keytype) { + result_code = UpdateCtrlrConfigStatus(UNC_CS_INVALID, + operation, + temp_ctrlr_ckv); + } else { + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + operation, + temp_ctrlr_ckv, + dmi); + } + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateAuditConfigStatus failed %d", + result_code); + DELETE_IF_NOT_NULL(ckv_dup); + DELETE_IF_NOT_NULL(temp_ckv_dup); + DELETE_IF_NOT_NULL(ctrlr_ckv); + return result_code; + } + result_code = UpdateConfigDB(temp_ctrlr_ckv, + UPLL_DT_RUNNING, + UNC_OP_UPDATE, + dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", + result_code); + DELETE_IF_NOT_NULL(ckv_dup); + DELETE_IF_NOT_NULL(temp_ckv_dup); + DELETE_IF_NOT_NULL(ctrlr_ckv); + return result_code; + } + temp_ctrlr_ckv = temp_ctrlr_ckv->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(ctrlr_ckv); + } else { + result_code = DupConfigKeyVal(temp_ckv_dup, + ckv_drv_rslt, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed %d", result_code); + DELETE_IF_NOT_NULL(ckv_dup); + return result_code; } + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + operation, + temp_ckv_dup, + dmi); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateAuditConfigStatus failed %d", result_code); + UPLL_LOG_DEBUG("UpdateAuditConfigStatus failed %d", + result_code); DELETE_IF_NOT_NULL(ckv_dup); DELETE_IF_NOT_NULL(temp_ckv_dup); - DELETE_IF_NOT_NULL(ctrlr_ckv); return result_code; } - result_code = UpdateConfigDB(temp_ctrlr_ckv, UPLL_DT_RUNNING, - UNC_OP_UPDATE, dmi, CTRLRTBL); + /* Configkeyval from driver will not contain + * flags, controller, domain */ + // Update only config status + DbSubOp dbop = {kOpReadExist, kOpMatchNone, kOpInOutCs}; + result_code = UpdateConfigDB(temp_ckv_dup, UPLL_DT_RUNNING, + UNC_OP_UPDATE, dmi, &dbop, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(ckv_dup); DELETE_IF_NOT_NULL(temp_ckv_dup); - DELETE_IF_NOT_NULL(ctrlr_ckv); return result_code; } - temp_ctrlr_ckv = temp_ctrlr_ckv->get_next_cfg_key_val(); - } - DELETE_IF_NOT_NULL(ctrlr_ckv); - } else { - result_code = DupConfigKeyVal(temp_ckv_dup, ckv_drv_rslt, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed %d", result_code); - DELETE_IF_NOT_NULL(ckv_dup); - return result_code; } - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, - operation, temp_ckv_dup); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateAuditConfigStatus failed %d", result_code); + result_code = SetConsolidatedStatus(ckv_drv_rslt, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("SetConsolidatedStatus failed err code %d", + result_code); DELETE_IF_NOT_NULL(ckv_dup); DELETE_IF_NOT_NULL(temp_ckv_dup); return result_code; } - result_code = UpdateConfigDB(temp_ckv_dup, UPLL_DT_RUNNING, - UNC_OP_UPDATE, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(ckv_dup); - DELETE_IF_NOT_NULL(temp_ckv_dup); + DELETE_IF_NOT_NULL(temp_ckv_dup); + } + DELETE_IF_NOT_NULL(ckv_dup); + + /* VlanmapOnBoundary: Added vlanmap check */ + if (ckv_drv_rslt->get_key_type() == UNC_KT_VBR_VLANMAP) { + ConfigKeyVal *err_ckv = NULL; + ConfigKeyVal *vlanmap_ckv = NULL; + VlanMapMoMgr *vlanmap_mgr = reinterpret_cast( + const_cast(GetMoManager( + ckv_drv_rslt->get_key_type()))); + + result_code = vlanmap_mgr->GetChildConfigKey(vlanmap_ckv, + ckv_drv_rslt); + + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain}; + + result_code = vlanmap_mgr->ReadConfigDB(vlanmap_ckv, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from running failed %d", + result_code); + DELETE_IF_NOT_NULL(vlanmap_ckv); + return UPLL_RC_ERR_GENERIC; + } + + result_code = vlanmap_mgr->TranslateError(&err_ckv, vlanmap_ckv, + dmi, UPLL_DT_RUNNING); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in Updating Error Code"); + DELETE_IF_NOT_NULL(vlanmap_ckv); + DELETE_IF_NOT_NULL(err_ckv); return result_code; } + ckv_drv_rslt->ResetWith(err_ckv); } - result_code = SetConsolidatedStatus(ckv_drv_rslt, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("SetConsolidatedStatus failed err code %d", result_code); - DELETE_IF_NOT_NULL(ckv_dup); - DELETE_IF_NOT_NULL(temp_ckv_dup); - return result_code; - } - DELETE_IF_NOT_NULL(temp_ckv_dup); + UPLL_LOG_INFO("Processed err ConfigKeyVal are %s", + (ckv_drv_rslt)->ToStrAll().c_str()); } - DELETE_IF_NOT_NULL(ckv_dup); - } - } - return result_code; -} - -upll_rc_t MoMgrImpl::AuditCommitCtrlrStatus( - unc_key_type_t keytype , - CtrlrCommitStatus *ctrlr_commit_status, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { - UPLL_LOG_DEBUG("ctrlr_commit_status or dmi is NULL"); - return UPLL_RC_ERR_GENERIC; + } + return result_code; } - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode db_result = uud::kDalRcSuccess; - ConfigKeyVal *ckv_running = NULL; - ConfigKeyVal *ckv_audit = NULL; - ConfigKeyVal *ckv_update = NULL; - ConfigKeyVal *ctrlr_key = NULL; - DalCursor *cursor = NULL; - bool invalid_attr = false; - uint8_t *ctrlr_id = - reinterpret_cast((char *)(ctrlr_commit_status->ctrlr_id.c_str())); - uint32_t ctrlr_result = ctrlr_commit_status->upll_ctrlr_result; - UPLL_LOG_INFO("controller id & commit result is %s %d", ctrlr_id, - ctrlr_result); - MoMgrTables tbl = MAINTBL; - unc_keytype_operation_t operation = UNC_OP_INVALID; - GET_TABLE_TYPE(keytype, tbl); - switch (ctrlr_result) { - /* if controller returns commit success, set CS Status as applied - retreived from database */ - case UPLL_RC_SUCCESS: - /* retreives the delta of running and audit configuration - - created and updated only */ - for (int loop = uuc::kUpllUcpCreate; loop < uuc::kUpllUcpDelete; ++loop) { - operation = (loop == uuc::kUpllUcpCreate)?UNC_OP_CREATE:UNC_OP_UPDATE; -/* if ((operation == UNC_OP_UPDATE) && (keytype == UNC_KT_VTN)) - return UPLL_RC_SUCCESS;*/ - result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, - operation, - ckv_running, ckv_audit, - &cursor, - dmi, ctrlr_id, tbl, true); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); - return result_code; - } - /* Get the record one by one, duplicate the configkeyval - and update cs status */ - while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { - /* ignore records of another controller for create and update operation */ - uint8_t *ctrlr = NULL; - GET_USER_DATA_CTRLR(ckv_running, ctrlr); - if (ctrlr && strncmp(reinterpret_cast(ctrlr), - reinterpret_cast(ctrlr_id), - sizeof(strlen(reinterpret_cast(ctrlr_id))))) - continue; - UPLL_LOG_TRACE("Diff Record: Keytype: Phase: is %d\n %d\n %s", - keytype, loop, ckv_running->ToStrAll().c_str()); - result_code = GetDiffRecord(ckv_running, ckv_audit, (uuc::UpdateCtrlrPhase)loop, tbl, - ckv_update, dmi, invalid_attr); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetDiffRecord failed err code is %d", result_code); - return result_code; - } - if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { - result_code = DupConfigKeyVal(ctrlr_key, ckv_running, CTRLRTBL); - } else { - result_code = DupConfigKeyVal(ctrlr_key, ckv_running, MAINTBL); - } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("DupConfigKeyVal failed"); - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_update); - dmi->CloseCursor(cursor, true); - return result_code; - } - if (UNC_KT_VTN == keytype) { - result_code = UpdateCtrlrConfigStatus(UNC_CS_APPLIED, - (uuc::UpdateCtrlrPhase)loop, ctrlr_key); - } else { - result_code = UpdateAuditConfigStatus(UNC_CS_APPLIED, - (uuc::UpdateCtrlrPhase)loop, ctrlr_key); - } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("UpdateAuditConfigStatus failed"); + + upll_rc_t MoMgrImpl::AuditCommitCtrlrStatus( + unc_key_type_t keytype , + CtrlrCommitStatus *ctrlr_commit_status, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { + UPLL_LOG_DEBUG("ctrlr_commit_status or dmi is NULL"); + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t result_code = UPLL_RC_SUCCESS; + DalResultCode db_result = uud::kDalRcSuccess; + ConfigKeyVal *ckv_running = NULL; + ConfigKeyVal *ckv_audit = NULL; + ConfigKeyVal *ckv_update = NULL; + ConfigKeyVal *ctrlr_key = NULL; + DalCursor *cursor = NULL; + bool invalid_attr = false; + uint8_t *ctrlr_id = + reinterpret_cast((char *) + (ctrlr_commit_status->ctrlr_id.c_str())); + uint32_t ctrlr_result = ctrlr_commit_status->upll_ctrlr_result; + UPLL_LOG_INFO("controller id & commit result is %s %d", ctrlr_id, + ctrlr_result); + MoMgrTables tbl = MAINTBL; + unc_keytype_operation_t operation = UNC_OP_INVALID; + GET_TABLE_TYPE(keytype, tbl); + switch (ctrlr_result) { + /* if controller returns commit success, set CS Status as applied + retreived from database */ + case UPLL_RC_SUCCESS: + /* retreives the delta of running and audit configuration + - created and updated only */ + for (int loop = uuc::kUpllUcpCreate; loop < uuc::kUpllUcpDelete; + ++loop) { + operation = + (loop == uuc::kUpllUcpCreate)?UNC_OP_CREATE:UNC_OP_UPDATE; + /* if ((operation == UNC_OP_UPDATE) && + * (keytype == UNC_KT_VTN)) + return UPLL_RC_SUCCESS;*/ + result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, + operation, + ckv_running, ckv_audit, + &cursor, + dmi, ctrlr_id, tbl, true); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("No record found for op %d", operation); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_update); - DELETE_IF_NOT_NULL(ctrlr_key); - dmi->CloseCursor(cursor, true); - return result_code; + continue; } - result_code = UpdateConfigDB(ctrlr_key, UPLL_DT_RUNNING, - UNC_OP_UPDATE, dmi, tbl); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB for config status update failed %d", - result_code); + UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); - DELETE_IF_NOT_NULL(ckv_update); - DELETE_IF_NOT_NULL(ctrlr_key); - dmi->CloseCursor(cursor, true); + // continue; return result_code; } - DELETE_IF_NOT_NULL(ctrlr_key); - if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { - result_code = SetConsolidatedStatus(ckv_update, dmi); + /* Get the record one by one, duplicate the configkeyval + and update cs status */ + while (uud::kDalRcSuccess == + (db_result = dmi->GetNextRecord(cursor))) { + /* VlanmapOnBoundary: ignore records of another controller + * for create and update operation */ + uint8_t *db_ctrlr = NULL; + GET_USER_DATA_CTRLR(ckv_running, db_ctrlr); + if ((!db_ctrlr) || (db_ctrlr && strncmp( + reinterpret_cast(db_ctrlr), + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast + (ctrlr_id)) + 1))) { + if (keytype == UNC_KT_VLINK) { + unc_key_type_t ktype = UNC_KT_ROOT; + VlinkMoMgr *mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + if (!mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_update); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + ktype = mgr->GetVlinkVnodeIfKeyType(ckv_running, 1); + if (ktype != UNC_KT_VUNK_IF) { + GET_USER_DATA_CTRLR(ckv_running->get_cfg_val(), db_ctrlr); + if (db_ctrlr && strncmp( + reinterpret_cast + (db_ctrlr), + reinterpret_cast + (ctrlr_id), + strlen(reinterpret_cast + (ctrlr_id)) + 1)) { + continue; + } + } else { + continue; + } + } else { + continue; + } + } + UPLL_LOG_TRACE("Diff Record: Keytype: Phase: is %d\n %d\n %s", + keytype, loop, ckv_running->ToStrAll().c_str()); + + result_code = GetDiffRecord(ckv_running, ckv_audit, + (uuc::UpdateCtrlrPhase)loop, tbl, + ckv_update, dmi, invalid_attr); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("GetDiffRecord failed err code is %d", + result_code); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_update); + dmi->CloseCursor(cursor, true); + return result_code; + } + if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { + result_code = DupConfigKeyVal(ctrlr_key, ckv_running, CTRLRTBL); + } else { + result_code = DupConfigKeyVal(ctrlr_key, ckv_running, MAINTBL); + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("DupConfigKeyVal failed"); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_update); + dmi->CloseCursor(cursor, true); + return result_code; + } + if (UNC_KT_VTN == keytype) { + result_code = UpdateCtrlrConfigStatus(UNC_CS_APPLIED, + (uuc::UpdateCtrlrPhase)loop, + ctrlr_key); + } else { + result_code = UpdateAuditConfigStatus(UNC_CS_APPLIED, + (uuc::UpdateCtrlrPhase)loop, + ctrlr_key, dmi); + } if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("SetConsolidatedStatus failed err code %d", result_code); + UPLL_LOG_INFO("UpdateAuditConfigStatus failed"); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_update); + DELETE_IF_NOT_NULL(ctrlr_key); + dmi->CloseCursor(cursor, true); + return result_code; + } + result_code = UpdateConfigDB(ctrlr_key, UPLL_DT_RUNNING, + UNC_OP_UPDATE, dmi, tbl); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB for config status" + "update failed %d", + result_code); DELETE_IF_NOT_NULL(ckv_running); DELETE_IF_NOT_NULL(ckv_audit); DELETE_IF_NOT_NULL(ckv_update); + DELETE_IF_NOT_NULL(ctrlr_key); dmi->CloseCursor(cursor, true); return result_code; } + DELETE_IF_NOT_NULL(ctrlr_key); + if (CTRLRTBL == (GET_TABLE_TYPE(keytype, tbl))) { + result_code = SetConsolidatedStatus(ckv_update, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("SetConsolidatedStatus failed err code %d", + result_code); + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); + DELETE_IF_NOT_NULL(ckv_update); + dmi->CloseCursor(cursor, true); + return result_code; + } + } + DELETE_IF_NOT_NULL(ckv_update); + if (invalid_attr) + continue; } - DELETE_IF_NOT_NULL(ckv_update); - if (invalid_attr) - continue; + if (cursor) { + dmi->CloseCursor(cursor, true); + cursor = NULL; + } + DELETE_IF_NOT_NULL(ckv_running); + DELETE_IF_NOT_NULL(ckv_audit); } - if (cursor) { - dmi->CloseCursor(cursor, true); - cursor = NULL; + if (uud::kDalRcSuccess != db_result) { + UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", + db_result); + result_code = DalToUpllResCode(db_result); } - DELETE_IF_NOT_NULL(ckv_running); - DELETE_IF_NOT_NULL(ckv_audit); - } - if (uud::kDalRcSuccess != db_result) { - UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", - db_result); - result_code = DalToUpllResCode(db_result); - } - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; - break; - case UPLL_RC_ERR_RESOURCE_DISCONNECTED: - break; // NO OPERATION - default: - /* retrieves the error configkeyval one by one and if the keytype matches, - rename the key with UNC name */ - result_code = AuditVoteCtrlrStatus(keytype, ctrlr_commit_status, dmi); - } - return result_code; -} - -upll_rc_t MoMgrImpl::AuditEnd(unc_key_type_t keytype, - const char *ctrlr_id, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode db_result; - uudst::kDalTableIndex tbl_index; - for (int tbl = MAINTBL; tbl < ntable; tbl++) { - tbl_index = GetTable((MoMgrTables)tbl, UPLL_DT_AUDIT); - UPLL_LOG_DEBUG("Table Index value is %d", tbl_index); - if (tbl_index >= uudst::kDalNumTables) - continue; - db_result = dmi->DeleteRecords(UPLL_DT_AUDIT, tbl_index, NULL); - result_code = DalToUpllResCode(db_result); - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DAL error in DeleteRecords call - %d", result_code); + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) + ? UPLL_RC_SUCCESS : result_code; break; + case UNC_RC_CTR_DISCONNECTED: + break; // NO OPERATION + default: + /* retrieves the error configkeyval one by one and if + * the keytype matches, + rename the key with UNC name */ + result_code = AuditVoteCtrlrStatus(keytype, ctrlr_commit_status, dmi); } + return result_code; + } + + upll_rc_t MoMgrImpl::AuditEnd(unc_key_type_t keytype, + const char *ctrlr_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + return (ClearConfiguration(keytype, dmi, UPLL_DT_AUDIT)); } - return result_code; -} -upll_rc_t MoMgrImpl::ClearStartup(unc_key_type_t kt, - DalDmlIntf *dmi) { + // Some configuration types maintain parent-child relationship. + // It is advised to call this API with REVERSE_ORDER + upll_rc_t MoMgrImpl::ClearConfiguration(unc_key_type_t kt, + DalDmlIntf *dmi, + upll_keytype_datatype_t cfg_type) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result; - for (int tbl = MAINTBL; tbl < ntable; tbl++) { + for (int tbl = ntable; tbl > MAINTBL; tbl--) { uudst::kDalTableIndex tbl_index; - tbl_index = GetTable((MoMgrTables)tbl, UPLL_DT_IMPORT); - if ((tbl_index >= uudst::kDalNumTables) || - ((tbl == RENAMETBL) && (kt != UNC_KT_VBRIDGE))) + tbl_index = GetTable((MoMgrTables)(tbl - 1), cfg_type); + if ((tbl_index >= uudst::kDalNumTables)) + continue; + // vnode_rename_tbl should be copied only once. + if (((tbl - 1) == RENAMETBL) && (VNODE_KEYTYPE(kt)) && + (kt != UNC_KT_VBRIDGE)) continue; - db_result = dmi->DeleteRecords(UPLL_DT_STARTUP, tbl_index, NULL); + db_result = dmi->DeleteRecords(cfg_type, tbl_index, NULL); result_code = DalToUpllResCode(db_result); if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) return result_code; } return UPLL_RC_SUCCESS; -} - -upll_rc_t MoMgrImpl::CopyRunningToStartup(unc_key_type_t kt, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - - upll_keytype_datatype_t dest_cfg_type = UPLL_DT_STARTUP; - upll_keytype_datatype_t src_cfg_type = UPLL_DT_RUNNING; - - for (int i = MAINTBL; i < ntable; i++) { - DalResultCode db_result = uud::kDalRcSuccess; - const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)i, - src_cfg_type); - if (tbl_index >= uudst::kDalNumTables) - continue; - db_result = dmi->CopyEntireRecords(dest_cfg_type, src_cfg_type, - tbl_index, NULL); - if ((db_result != uud::kDalRcSuccess) && - (db_result != uud::kDalRcRecordNotFound)) { - return DalToUpllResCode(db_result); - } } - return UPLL_RC_SUCCESS; -} -upll_rc_t MoMgrImpl::CopyStartupToCandidate(unc_key_type_t kt, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_keytype_datatype_t dest_cfg_type = UPLL_DT_CANDIDATE; - upll_keytype_datatype_t src_cfg_type = UPLL_DT_STARTUP; - for (int i = MAINTBL; i < ntable; i++) { - DalResultCode db_result = uud::kDalRcSuccess; - const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)i, - src_cfg_type); - if (tbl_index >= uudst::kDalNumTables) - continue; - db_result = dmi->CopyEntireRecords(dest_cfg_type, src_cfg_type, - tbl_index, NULL); - if ((db_result != uud::kDalRcSuccess) && - (db_result != uud::kDalRcRecordNotFound)) { - return DalToUpllResCode(db_result); - } + upll_rc_t MoMgrImpl::ClearStartup(unc_key_type_t kt, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + return(ClearConfiguration(kt, dmi, UPLL_DT_STARTUP)); } - return UPLL_RC_SUCCESS; -} -upll_rc_t MoMgrImpl::CopyRunningToCandidate(unc_key_type_t kt, + upll_rc_t MoMgrImpl::CopyRunningToStartup(unc_key_type_t kt, DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - DalResultCode db_result = uud::kDalRcSuccess; - upll_keytype_datatype_t dest_cfg_type = UPLL_DT_CANDIDATE; - upll_keytype_datatype_t src_cfg_type = UPLL_DT_RUNNING; - for (int i = MAINTBL; i < ntable; i++) { - const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)i, - src_cfg_type); - if (tbl_index >= uudst::kDalNumTables) - continue; - db_result = dmi->CopyModifiedRecords(dest_cfg_type, src_cfg_type, tbl_index, - NULL); - if (db_result != uud::kDalRcSuccess) { - break; - } - } - return DalToUpllResCode(db_result); -} - -upll_rc_t MoMgrImpl::LoadStartup(unc_key_type_t kt, DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - /* copy startup to candidate */ - upll_rc_t result_code = CopyStartupToCandidate(kt, dmi); - if (result_code != UPLL_RC_SUCCESS) - return result_code; + UPLL_FUNC_TRACE; - /* copy startup to running */ - upll_keytype_datatype_t dest_cfg_type = UPLL_DT_RUNNING; - upll_keytype_datatype_t src_cfg_type = UPLL_DT_STARTUP; - for (int tbl = MAINTBL; tbl < ntable; tbl++) { - DalResultCode db_result = uud::kDalRcSuccess; - const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)tbl, - dest_cfg_type); - if (tbl_index >= uudst::kDalNumTables) - continue; - db_result = dmi->CopyEntireRecords(dest_cfg_type, src_cfg_type, - tbl_index, NULL); - if ((db_result != uud::kDalRcSuccess) && - (db_result != uud::kDalRcRecordNotFound)) { - UPLL_LOG_INFO("Copy error"); - break; - } - if (tbl != RENAMETBL) { - DalBindInfo dal_bind_info(tbl_index); - result_code = BindStartup(&dal_bind_info, dest_cfg_type, - (MoMgrTables)tbl); - if (result_code != UPLL_RC_SUCCESS) { - return result_code; - } - db_result = dmi->UpdateRecords(dest_cfg_type, tbl_index, - &dal_bind_info); + upll_keytype_datatype_t dest_cfg_type = UPLL_DT_STARTUP; + upll_keytype_datatype_t src_cfg_type = UPLL_DT_RUNNING; + + for (int tbl = MAINTBL; tbl < ntable; tbl++) { + DalResultCode db_result = uud::kDalRcSuccess; + const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)tbl, + src_cfg_type); + if (tbl_index >= uudst::kDalNumTables) + continue; + // vnode_rename_tbl should be copied only once. + if ((tbl == RENAMETBL) && VNODE_KEYTYPE(kt) && (kt != UNC_KT_VBRIDGE)) + continue; + db_result = dmi->CopyEntireRecords(dest_cfg_type, src_cfg_type, + tbl_index, NULL); if ((db_result != uud::kDalRcSuccess) && (db_result != uud::kDalRcRecordNotFound)) { - UPLL_LOG_INFO("Update error %d, kt - %d", db_result, kt); return DalToUpllResCode(db_result); } } + return UPLL_RC_SUCCESS; } - return UPLL_RC_SUCCESS; -} - -upll_rc_t MoMgrImpl::IsCandidateDirty(unc_key_type_t kt, - bool *dirty, - DalDmlIntf *dmi) { - DalResultCode db_result = uud::kDalRcSuccess; - upll_rc_t result_code = UPLL_RC_SUCCESS; - bool identical = false; - *dirty = false; - - upll_keytype_datatype_t cfg_type1 = UPLL_DT_RUNNING; - upll_keytype_datatype_t cfg_type2 = UPLL_DT_CANDIDATE; -// DalBindInfo *matching_attr_info; - for (int i = MAINTBL; i < ntable; i++) { - const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)i, cfg_type1); - if (tbl_index >= uudst::kDalNumTables) - continue; - DalBindInfo dal_bind_info(tbl_index); - result_code = BindCandidateDirty(&dal_bind_info, - cfg_type1, (MoMgrTables)i, - tbl_index); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error while binding %d", result_code); - return result_code; - } - db_result = dmi->CheckRecordsIdentical(cfg_type1, - cfg_type2, - tbl_index, - &dal_bind_info, - &identical); - result_code = DalToUpllResCode(db_result); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Check Records identical Failed %d", result_code); - return result_code; - } - /* dirty is set if records are identical */ - *dirty = !identical; - if (!identical) { - break; + + upll_rc_t MoMgrImpl::CopyStartupToCandidate(unc_key_type_t kt, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_keytype_datatype_t dest_cfg_type = UPLL_DT_CANDIDATE; + upll_keytype_datatype_t src_cfg_type = UPLL_DT_STARTUP; + for (int tbl = MAINTBL; tbl < ntable; tbl++) { + DalResultCode db_result = uud::kDalRcSuccess; + const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)tbl, + src_cfg_type); + if (tbl_index >= uudst::kDalNumTables) + continue; + // vnode_rename_tbl should be copied only once. + if ((tbl == RENAMETBL) && VNODE_KEYTYPE(kt) && (kt != UNC_KT_VBRIDGE)) + continue; + db_result = dmi->CopyEntireRecords(dest_cfg_type, src_cfg_type, + tbl_index, NULL); + if (db_result == uud::kDalRcRecordNotFound) { + db_result = uud::kDalRcSuccess; + } + if (db_result != uud::kDalRcSuccess) { + return DalToUpllResCode(db_result); + } } + return UPLL_RC_SUCCESS; } - return result_code; -} -upll_rc_t MoMgrImpl::DalToUpllResCode(DalResultCode result_code) { - switch (result_code) { - case uud::kDalRcSuccess: - return UPLL_RC_SUCCESS; - case uud::kDalRcConnNotAvailable: - return UPLL_RC_ERR_RESOURCE_DISCONNECTED; - case uud::kDalRcTxnError: - return UPLL_RC_ERR_GENERIC; - case uud::kDalRcInvalidConnHandle: - return UPLL_RC_ERR_DB_ACCESS; - case uud::kDalRcRecordNotFound: - case uud::kDalRcRecordNoMore: - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - case uud::kDalRcRecordAlreadyExists: - return UPLL_RC_ERR_INSTANCE_EXISTS; - case uud::kDalRcAccessViolation: - return UPLL_RC_ERR_DB_ACCESS; - case uud::kDalRcConnNotEstablished: - case uud::kDalRcDataError: - case uud::kDalRcInvalidCursor: - case uud::kDalRcMemoryError: - case uud::kDalRcInternalError: - case uud::kDalRcGeneralError: - default: - return UPLL_RC_ERR_GENERIC; + upll_rc_t MoMgrImpl::CopyRunningToCandidate(unc_key_type_t kt, + DalDmlIntf *dmi, + unc_keytype_operation_t op) { + UPLL_FUNC_TRACE; + DalResultCode db_result = uud::kDalRcSuccess; + upll_keytype_datatype_t dest_cfg_type = UPLL_DT_CANDIDATE; + upll_keytype_datatype_t src_cfg_type = UPLL_DT_RUNNING; + for (int tbl = MAINTBL; tbl < ntable; tbl++) { + const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)tbl, + src_cfg_type); + if (tbl_index >= uudst::kDalNumTables) + continue; + db_result = dmi->CopyModifiedRecords(dest_cfg_type, + src_cfg_type, + tbl_index, + NULL, + op); + if (db_result == uud::kDalRcRecordNotFound) { + db_result = uud::kDalRcSuccess; + } + if (db_result != uud::kDalRcSuccess) { + break; + } + } + return DalToUpllResCode(db_result); } -} - + upll_rc_t MoMgrImpl::LoadStartup(unc_key_type_t kt, DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + // Clearing Candidate and Running configuration should be handled by + // the caller + /* copy startup to candidate */ + upll_rc_t result_code = CopyStartupToCandidate(kt, dmi); + if (result_code != UPLL_RC_SUCCESS) + return result_code; -upll_rc_t MoMgrImpl:: UpdateVnodeTables(ConfigKeyVal *ikey, - upll_keytype_datatype_t data_type, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - if (!ikey) { - UPLL_LOG_DEBUG("Given Input is Empty "); - return UPLL_RC_ERR_GENERIC; + /* copy startup to running */ + upll_keytype_datatype_t dest_cfg_type = UPLL_DT_RUNNING; + upll_keytype_datatype_t src_cfg_type = UPLL_DT_STARTUP; + for (int tbl = MAINTBL; tbl < ntable; tbl++) { + DalResultCode db_result = uud::kDalRcSuccess; + const uudst::kDalTableIndex tbl_index = GetTable((MoMgrTables)tbl, + dest_cfg_type); + if (tbl_index >= uudst::kDalNumTables) + continue; + // vnode_rename_tbl should be copied only once. + if ((tbl == RENAMETBL) && VNODE_KEYTYPE(kt) && (kt != UNC_KT_VBRIDGE)) + continue; + db_result = dmi->CopyEntireRecords(dest_cfg_type, src_cfg_type, + tbl_index, NULL); + if ((db_result != uud::kDalRcSuccess) && + (db_result != uud::kDalRcRecordNotFound)) { + UPLL_LOG_INFO("Copy error"); + break; + } + if (tbl != RENAMETBL) { + DalBindInfo dal_bind_info(tbl_index); + result_code = BindStartup(&dal_bind_info, dest_cfg_type, + (MoMgrTables)tbl); + if (result_code != UPLL_RC_SUCCESS) { + return result_code; + } + db_result = dmi->UpdateRecords(dest_cfg_type, tbl_index, + &dal_bind_info); + if ((db_result != uud::kDalRcSuccess) && + (db_result != uud::kDalRcRecordNotFound)) { + UPLL_LOG_INFO("Update error %d, kt - %d", db_result, kt); + return DalToUpllResCode(db_result); + } + } + } + return UPLL_RC_SUCCESS; } - upll_rc_t result_code = UPLL_RC_SUCCESS; - for (int tbl = MAINTBL; tbl < ntable; tbl++) { - if (GetTable((MoMgrTables)tbl, data_type) < uudst::kDalNumTables) { - UPLL_LOG_TRACE("TABLE INDEX IS %d", GetTable((MoMgrTables)tbl, data_type)); - DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; - result_code = UpdateRenameKey(ikey, data_type, UNC_OP_UPDATE, - dmi, &dbop, (MoMgrTables)tbl); - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG(" UpdateRenameKey Reurn Failure = %d", result_code); + upll_rc_t MoMgrImpl::IsCandidateDirty(unc_key_type_t kt, + bool *dirty, + DalDmlIntf *dmi) { + DalResultCode db_result = uud::kDalRcSuccess; + upll_rc_t result_code = UPLL_RC_SUCCESS; + bool identical = false; + *dirty = false; + + upll_keytype_datatype_t cfg_type1 = UPLL_DT_RUNNING; + upll_keytype_datatype_t cfg_type2 = UPLL_DT_CANDIDATE; + // DalBindInfo *matching_attr_info; + for (int i = MAINTBL; i < ntable; i++) { + const uudst::kDalTableIndex tbl_index = + GetTable((MoMgrTables)i, cfg_type1); + if (tbl_index >= uudst::kDalNumTables) + continue; + DalBindInfo dal_bind_info(tbl_index); + result_code = BindCandidateDirty(&dal_bind_info, + cfg_type1, (MoMgrTables)i, + tbl_index); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error while binding %d", result_code); + return result_code; + } + db_result = dmi->CheckRecordsIdentical(cfg_type1, + cfg_type2, + tbl_index, + &dal_bind_info, + &identical); + result_code = DalToUpllResCode(db_result); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Check Records identical Failed %d", result_code); return result_code; } - UPLL_LOG_TRACE("Updated Successfully in the Table "); + /* dirty is set if records are identical */ + *dirty = !identical; + if (!identical) { + break; + } } + return result_code; } - result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? - UPLL_RC_SUCCESS:result_code; - return result_code; -} - - -upll_rc_t MoMgrImpl::UpdateRenamedValue(ConfigKeyVal *&rename_info, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &renamed, - bool &no_rename) { - UPLL_FUNC_TRACE; - if (!rename_info || (!rename_info->get_key())) { - UPLL_LOG_DEBUG("Given Input is Empty "); - return UPLL_RC_ERR_GENERIC; + upll_rc_t MoMgrImpl::DalToUpllResCode(DalResultCode result_code) { + switch (result_code) { + case uud::kDalRcSuccess: + return UPLL_RC_SUCCESS; + case uud::kDalRcConnNotAvailable: + case uud::kDalRcConnTimeOut: + case uud::kDalRcQueryTimeOut: + return UPLL_RC_ERR_RESOURCE_DISCONNECTED; + case uud::kDalRcTxnError: + return UPLL_RC_ERR_GENERIC; + case uud::kDalRcAccessViolation: + UPLL_LOG_FATAL("DB access error: %d", result_code); + return UPLL_RC_ERR_DB_ACCESS; + case uud::kDalRcParentNotFound: + return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + case uud::kDalRcRecordNotFound: + case uud::kDalRcRecordNoMore: + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + case uud::kDalRcRecordAlreadyExists: + return UPLL_RC_ERR_INSTANCE_EXISTS; + case uud::kDalRcConnNotEstablished: + case uud::kDalRcNotDisconnected: + case uud::kDalRcInvalidConnHandle: + case uud::kDalRcInvalidCursor: + case uud::kDalRcDataError: + case uud::kDalRcMemoryError: + case uud::kDalRcInternalError: + case uud::kDalRcGeneralError: + default: + return UPLL_RC_ERR_GENERIC; + } } - upll_rc_t result_code = UPLL_RC_SUCCESS; - - ConfigKeyVal *okey = NULL; - uint8_t rename = 0; - - ConfigKeyVal *combine_key = NULL; - /* Create the partial key */ - result_code = CopyToConfigKey(okey, rename_info); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyToConfig Return Empty key"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("The CopyToConfigKey out is %s", (okey->ToStrAll()).c_str()); - /* Get the Full key Information */ - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain}; - /* For VTN, we need to read it from Controller Table - * since while doing VTN rename we are skipping the vtn - * MAINTBL - */ - result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB returns Error = %d ", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - ConfigKeyVal *temp = okey; - while (okey) { - rename = 0; - val_rename_vnode *vnode = NULL; - key_rename_vnode_info *vnode_rename = - reinterpret_cast(rename_info->get_key()); - GET_USER_DATA_FLAGS(okey, rename); - /* Set the rename flag */ - UPLL_LOG_TRACE("Before Renaming the Rename Flag = %d", rename); - switch (rename_info->get_key_type()) { - case UNC_KT_VTN: - if (!no_rename) - rename = rename | VTN_RENAME; - else - rename = rename & NO_VTN_RENAME; - UPLL_LOG_TRACE("After the Renaming the Rename Flag = %d ", rename); - break; - case UNC_KT_VROUTER: - case UNC_KT_VLINK: - case UNC_KT_VBRIDGE: - if (!no_rename) - rename = rename | VN_RENAME; - else - rename = rename & NO_VN_RENAME; - UPLL_LOG_TRACE("After the Renaming the Rename Flag = %d ", rename); - break; - // Update Here - case UNC_KT_POLICING_PROFILE: - switch (table[MAINTBL]->get_key_type()) { - case UNC_KT_POLICING_PROFILE: - case UNC_KT_POLICING_PROFILE_ENTRY: - if (!no_rename) - rename = rename | PP_RENAME; - else - rename = rename & NO_PP_RENAME; - break; - case UNC_KT_VTN_POLICINGMAP: - case UNC_KT_VBR_POLICINGMAP: - case UNC_KT_VBRIF_POLICINGMAP: - if (!no_rename) - rename = rename | PM_RENAME; - else - rename = rename & NO_PM_RENAME; - break; - default: - break; - } - break; - case UNC_KT_FLOWLIST: - switch (table[MAINTBL]->get_key_type()) { - case UNC_KT_FLOWLIST: - case UNC_KT_FLOWLIST_ENTRY: - if (!no_rename) - rename = rename | FL_RENAME; - else - rename = rename & NO_FL_RENAME; - break; - case UNC_KT_VTN_FLOWFILTER: - case UNC_KT_VTN_FLOWFILTER_ENTRY: - case UNC_KT_VTN_FLOWFILTER_CONTROLLER: - case UNC_KT_VBR_FLOWFILTER: - case UNC_KT_VBR_FLOWFILTER_ENTRY: - case UNC_KT_VBRIF_FLOWFILTER: - case UNC_KT_VBRIF_FLOWFILTER_ENTRY: - case UNC_KT_VRTIF_FLOWFILTER: - case UNC_KT_VRTIF_FLOWFILTER_ENTRY: - if (!no_rename) - rename = rename | FF_RENAME; - else - rename = rename & NO_FF_RENAME; - break; - default: - break; + upll_rc_t MoMgrImpl::UpdateVnodeTables(ConfigKeyVal *ikey, + upll_keytype_datatype_t data_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + if (!ikey) { + UPLL_LOG_DEBUG("Given Input is Empty "); + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t result_code = UPLL_RC_SUCCESS; + for (int tbl = MAINTBL; tbl < ntable; tbl++) { + /* Skipping the VTN Main Table During the VTN rename */ + if (GetTable((MoMgrTables)tbl, data_type) != uudst::kDbiVtnTbl && + GetTable((MoMgrTables)tbl, data_type) < uudst::kDalNumTables) { + UPLL_LOG_TRACE("TABLE INDEX IS %d", + GetTable((MoMgrTables)tbl, data_type)); + DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; + result_code = UpdateRenameKey(ikey, data_type, UNC_OP_UPDATE, + dmi, &dbop, (MoMgrTables)tbl); + + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG(" UpdateRenameKey Reurn Failure = %d", result_code); + return result_code; } - default: - break; + UPLL_LOG_TRACE("Updated Successfully in the Table "); + } } - /* Create the duplicate key by using this function */ - UPLL_LOG_TRACE("The Okey is %s", okey->ToStrAll().c_str()); - result_code = GetChildConfigKey(combine_key, okey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Return Empty Key "); - if (combine_key) { - combine_key->set_next_cfg_key_val(NULL); - DELETE_IF_NOT_NULL(combine_key); - } - DELETE_IF_NOT_NULL(temp); - return UPLL_RC_ERR_GENERIC; - } - /* Set the rename flag */ - SET_USER_DATA_FLAGS(combine_key, rename); - DumpRenameInfo(rename_info); - switch (rename_info->get_key_type()) { - /* fill the vnode if vtn is renamed - * This part create an etrn in vnode rename table*/ - case UNC_KT_VTN: - UPLL_LOG_TRACE("Update the Vnode rename tables"); - vnode = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); - uuu::upll_strncpy(vnode->ctrlr_vtn_name, - vnode_rename->ctrlr_vtn_name, - (kMaxLenCtrlrId + 1)); - switch (table[MAINTBL]->get_key_type()) { - case UNC_KT_VBRIDGE: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast(okey->get_key()))->vbridge_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(vnode->ctrlr_vnode_name, - (reinterpret_cast(okey->get_key()))->vbridge_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VROUTER: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast(okey->get_key()))->vrouter_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(vnode->ctrlr_vnode_name, - (reinterpret_cast(okey->get_key()))->vrouter_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VLINK: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast(okey->get_key()))->vlink_name, - (kMaxLenVlinkName + 1)); - uuu::upll_strncpy(vnode->ctrlr_vnode_name, - (reinterpret_cast(okey->get_key()))->vlink_name, - (kMaxLenVlinkName + 1)); - break; - case UNC_KT_VBR_POLICINGMAP: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast(okey->get_key()))->vbridge_name, - (kMaxLenVnodeName + 1)); - break; + result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? + UPLL_RC_SUCCESS:result_code; + return result_code; + } - case UNC_KT_VBRIF_POLICINGMAP: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast - (okey->get_key()))->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VBR_FLOWFILTER: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast - (okey->get_key()))->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VBR_FLOWFILTER_ENTRY: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast - (okey->get_key()))->flowfilter_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VBRIF_FLOWFILTER: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast - (okey->get_key()))->if_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VBRIF_FLOWFILTER_ENTRY: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast - (okey->get_key()))->flowfilter_key.if_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VRTIF_FLOWFILTER: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast - (okey->get_key()))->if_key.vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); - break; - case UNC_KT_VRTIF_FLOWFILTER_ENTRY: - uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, - (reinterpret_cast - (okey->get_key()))->flowfilter_key.if_key.vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); - break; - default: - break; + upll_rc_t MoMgrImpl::UpdateRenamedValue(ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &renamed, + bool &no_rename) { + UPLL_FUNC_TRACE; + if (!rename_info || (!rename_info->get_key())) { + UPLL_LOG_DEBUG("Given Input is Empty "); + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t result_code = UPLL_RC_SUCCESS; + + ConfigKeyVal *okey = NULL; + + uint8_t rename = 0; + + ConfigKeyVal *combine_key = NULL; + /* Create the partial key */ + result_code = CopyToConfigKey(okey, rename_info); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("CopyToConfig Return Empty key"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_DEBUG("The CopyToConfigKey out is %s", + (okey->ToStrAll()).c_str()); + /* Get the Full key Information */ + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain}; + /* For VTN, we need to read it from Controller Table + * since while doing VTN rename we are skipping the vtn + * MAINTBL + */ + if (UNC_KT_VTN != okey->get_key_type()) + result_code = ReadConfigDB(okey, + data_type, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + else + result_code = ReadConfigDB(okey, + data_type, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB returns Error = %d ", result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + ConfigKeyVal *temp = okey; + while (okey) { + rename = 0; + val_rename_vnode *vnode = NULL; + key_rename_vnode_info *vnode_rename = + reinterpret_cast(rename_info->get_key()); + GET_USER_DATA_FLAGS(okey, rename); + /* Set the rename flag */ + UPLL_LOG_TRACE("Before Renaming the Rename Flag = %d", rename); + switch (rename_info->get_key_type()) { + case UNC_KT_VTN: + if (!no_rename) + rename = rename | VTN_RENAME; + else + rename = rename & NO_VTN_RENAME; + UPLL_LOG_TRACE("After the Renaming the Rename Flag = %d ", rename); + break; + case UNC_KT_VROUTER: + case UNC_KT_VLINK: + case UNC_KT_VBRIDGE: + if (!no_rename) + rename = rename | VN_RENAME; + else + rename = rename & NO_VN_RENAME; + UPLL_LOG_TRACE("After the Renaming the Rename Flag = %d ", rename); + break; + // Update Here + case UNC_KT_POLICING_PROFILE: + switch (table[MAINTBL]->get_key_type()) { + case UNC_KT_POLICING_PROFILE: + case UNC_KT_POLICING_PROFILE_ENTRY: + if (!no_rename) + rename = rename | PP_RENAME; + else + rename = rename & NO_PP_RENAME; + break; + case UNC_KT_VTN_POLICINGMAP: + case UNC_KT_VBR_POLICINGMAP: + case UNC_KT_VBRIF_POLICINGMAP: + if (!no_rename) + rename = rename | PM_RENAME; + else + rename = rename & NO_PM_RENAME; + break; + default: + break; + } + break; + case UNC_KT_FLOWLIST: + switch (table[MAINTBL]->get_key_type()) { + case UNC_KT_FLOWLIST: + case UNC_KT_FLOWLIST_ENTRY: + if (!no_rename) + rename = rename | FL_RENAME; + else + rename = rename & NO_FL_RENAME; + break; + case UNC_KT_VTN_FLOWFILTER: + case UNC_KT_VTN_FLOWFILTER_ENTRY: + case UNC_KT_VTN_FLOWFILTER_CONTROLLER: + case UNC_KT_VBR_FLOWFILTER: + case UNC_KT_VBR_FLOWFILTER_ENTRY: + case UNC_KT_VBRIF_FLOWFILTER: + case UNC_KT_VBRIF_FLOWFILTER_ENTRY: + case UNC_KT_VRTIF_FLOWFILTER: + case UNC_KT_VRTIF_FLOWFILTER_ENTRY: + if (!no_rename) + rename = rename | FF_RENAME; + else + rename = rename & NO_FF_RENAME; + break; + default: + break; + } + default: + break; + } + /* Create the duplicate key by using this function */ + UPLL_LOG_TRACE("The Okey is %s", okey->ToStrAll().c_str()); + result_code = GetChildConfigKey(combine_key, okey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Return Empty Key "); + if (combine_key) { + combine_key->set_next_cfg_key_val(NULL); + DELETE_IF_NOT_NULL(combine_key); } - UPLL_LOG_TRACE("The Renamed Value is %d", renamed); - if (!renamed && !no_rename) { - /* If VTN is renamed add the entry in vnode and vlink rename table */ - if (table[MAINTBL]->get_key_type() == UNC_KT_VBRIDGE || - table[MAINTBL]->get_key_type() == UNC_KT_VROUTER || - table[MAINTBL]->get_key_type() == UNC_KT_VLINK) { - ConfigKeyVal *tmp_key = NULL; - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; - controller_domain ctrlr_dom; - UPLL_LOG_TRACE("Updating the Rename Table"); - result_code = GetControllerDomainId(okey, &ctrlr_dom); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetControllerDomainId Failed"); - free(vnode); - if (combine_key) { - combine_key->set_next_cfg_key_val(NULL); - DELETE_IF_NOT_NULL(combine_key); + DELETE_IF_NOT_NULL(temp); + return UPLL_RC_ERR_GENERIC; + } + /* Set the rename flag */ + SET_USER_DATA_FLAGS(combine_key, rename); + DumpRenameInfo(rename_info); + switch (rename_info->get_key_type()) { + /* fill the vnode if vtn is renamed + * This part create an etrn in vnode rename table*/ + case UNC_KT_VTN: + UPLL_LOG_TRACE("Update the Vnode rename tables"); + vnode = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); + uuu::upll_strncpy(vnode->ctrlr_vtn_name, + vnode_rename->ctrlr_vtn_name, + (kMaxLenCtrlrId + 1)); + switch (table[MAINTBL]->get_key_type()) { + case UNC_KT_VBRIDGE: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))->vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(vnode->ctrlr_vnode_name, + (reinterpret_cast + (okey->get_key()))->vbridge_name, + (kMaxLenVnodeName + 1)); + break; + case UNC_KT_VROUTER: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))->vrouter_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(vnode->ctrlr_vnode_name, + (reinterpret_cast + (okey->get_key()))->vrouter_name, + (kMaxLenVnodeName + 1)); + break; + case UNC_KT_VLINK: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))->vlink_name, + (kMaxLenVlinkName + 1)); + uuu::upll_strncpy(vnode->ctrlr_vnode_name, + (reinterpret_cast + (okey->get_key()))->vlink_name, + (kMaxLenVlinkName + 1)); + break; + case UNC_KT_VBR_POLICINGMAP: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))->vbridge_name, + (kMaxLenVnodeName + 1)); + break; + + case UNC_KT_VBRIF_POLICINGMAP: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + break; + case UNC_KT_VBR_FLOWFILTER: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + break; + + case UNC_KT_VBR_FLOWFILTER_ENTRY: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))-> + flowfilter_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + break; + case UNC_KT_VBRIF_FLOWFILTER: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))-> + if_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + break; + + case UNC_KT_VBRIF_FLOWFILTER_ENTRY: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))-> + flowfilter_key.if_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + break; + case UNC_KT_VRTIF_FLOWFILTER: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + (okey->get_key()))-> + if_key.vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); + break; + case UNC_KT_VRTIF_FLOWFILTER_ENTRY: + uuu::upll_strncpy(vnode_rename->new_unc_vnode_name, + (reinterpret_cast + + (okey->get_key()))-> + flowfilter_key.if_key.vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); + break; + default: + break; + } + UPLL_LOG_TRACE("The Renamed Value is %d", renamed); + if (!renamed && !no_rename) { + /* If VTN is renamed add the entry in vnode and vlink + * rename table */ + if (table[MAINTBL]->get_key_type() == UNC_KT_VBRIDGE || + table[MAINTBL]->get_key_type() == UNC_KT_VROUTER || + table[MAINTBL]->get_key_type() == UNC_KT_VLINK) { + ConfigKeyVal *tmp_key = NULL; + DbSubOp dbop = {kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; + controller_domain ctrlr_dom; + UPLL_LOG_TRACE("Updating the Rename Table"); + result_code = GetControllerDomainId(okey, &ctrlr_dom); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetControllerDomainId Failed"); + free(vnode); + if (combine_key) { + combine_key->set_next_cfg_key_val(NULL); + DELETE_IF_NOT_NULL(combine_key); + } + DELETE_IF_NOT_NULL(temp); + return result_code; } - DELETE_IF_NOT_NULL(temp); - return result_code; + result_code = GetChildConfigKey(tmp_key, okey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + free(vnode); + if (combine_key) { + combine_key->set_next_cfg_key_val(NULL); + DELETE_IF_NOT_NULL(combine_key); + } + DELETE_IF_NOT_NULL(temp); + return result_code; + } + ConfigVal *cfg_val = + new ConfigVal(IpctSt::kIpcInvalidStNum, vnode); + tmp_key->SetCfgVal(cfg_val); + SET_USER_DATA_CTRLR_DOMAIN(tmp_key, ctrlr_dom); + dbop.readop = kOpReadSingle; + dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; + result_code = ReadConfigDB(tmp_key, data_type, UNC_OP_READ, dbop, + dmi, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_key); + DELETE_IF_NOT_NULL(temp); + if (combine_key) { + combine_key->set_next_cfg_key_val(NULL); + DELETE_IF_NOT_NULL(combine_key); + } + return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + /* If rename case create an entry in rename table + * otherwise delete from the rename table */ + vnode->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; + vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; + + dbop.readop = kOpNotRead; + dbop.matchop = kOpMatchNone; + dbop.inoutop = kOpInOutCtrlr | kOpInOutDomain; + UPLL_LOG_TRACE("Rename No Rename Falg = %d", no_rename); + result_code = UpdateConfigDB(tmp_key, data_type, UNC_OP_CREATE, + dmi, &dbop, RENAMETBL); + } + DELETE_IF_NOT_NULL(tmp_key); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG(" UpdateConfigDB Failed %d", result_code); + if (combine_key) { + combine_key->set_next_cfg_key_val(NULL); + DELETE_IF_NOT_NULL(combine_key); + } + DELETE_IF_NOT_NULL(temp); + return result_code; + } + } else { + FREE_IF_NOT_NULL(vnode); } - result_code = GetChildConfigKey(tmp_key, okey); + } else { + FREE_IF_NOT_NULL(vnode); + } + break; + default: + break; + } + if (no_rename) { + if (table[MAINTBL]->get_key_type() == UNC_KT_VTN || + table[MAINTBL]->get_key_type() == UNC_KT_VBRIDGE || + table[MAINTBL]->get_key_type() == UNC_KT_VROUTER || + table[MAINTBL]->get_key_type() == UNC_KT_VLINK || + table[MAINTBL]->get_key_type() == UNC_KT_FLOWLIST || + table[MAINTBL]->get_key_type() == UNC_KT_POLICING_PROFILE) { + UPLL_LOG_TRACE("Delete Entry from Rename Table"); + UPLL_LOG_TRACE("Rename Flag is %d", rename); + if ((table[MAINTBL]->get_key_type() == UNC_KT_VLINK && + !(rename & 0X03)) + || !rename) { + ConfigKeyVal *rename_key = NULL; + result_code = GetChildConfigKey(rename_key, okey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - free(vnode); if (combine_key) { combine_key->set_next_cfg_key_val(NULL); DELETE_IF_NOT_NULL(combine_key); @@ -3128,415 +3904,430 @@ upll_rc_t MoMgrImpl::UpdateRenamedValue(ConfigKeyVal *&rename_info, DELETE_IF_NOT_NULL(temp); return result_code; } - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcInvalidStNum, vnode); - tmp_key->SetCfgVal(cfg_val); - SET_USER_DATA_CTRLR_DOMAIN(tmp_key, ctrlr_dom); - dbop.readop = kOpReadSingle; - dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; - result_code = ReadConfigDB(tmp_key, data_type, UNC_OP_READ, dbop, - dmi, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); - DELETE_IF_NOT_NULL(tmp_key); - DELETE_IF_NOT_NULL(temp); - if (combine_key) { - combine_key->set_next_cfg_key_val(NULL); - DELETE_IF_NOT_NULL(combine_key); - } - return result_code; - } - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - /* If rename case create an entry in rename table - * otherwise delete from the rename table */ - vnode->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; - vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; - - dbop.readop = kOpNotRead; - dbop.matchop = kOpMatchNone; - dbop.inoutop = kOpInOutCtrlr | kOpInOutDomain; - UPLL_LOG_TRACE("Rename No Rename Falg = %d", no_rename); - result_code = UpdateConfigDB(tmp_key, data_type, UNC_OP_CREATE, - dmi, &dbop, RENAMETBL); - } - DELETE_IF_NOT_NULL(tmp_key); + DbSubOp dbop = {kOpNotRead, + kOpMatchCtrlr|kOpMatchDomain, + kOpInOutNone}; + result_code = UpdateConfigDB(rename_key, data_type, UNC_OP_DELETE, + dmi, &dbop, RENAMETBL); + if (rename_key) + DELETE_IF_NOT_NULL(rename_key); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" UpdateConfigDB Failed %d", result_code); + UPLL_LOG_TRACE("UpdateConfigDB Failed"); + DELETE_IF_NOT_NULL(temp); if (combine_key) { combine_key->set_next_cfg_key_val(NULL); DELETE_IF_NOT_NULL(combine_key); } - DELETE_IF_NOT_NULL(temp); return result_code; } - } else { - FREE_IF_NOT_NULL(vnode); - } - } else { - FREE_IF_NOT_NULL(vnode); - } - break; - default: - break; - } - if (no_rename) { - if (table[MAINTBL]->get_key_type() == UNC_KT_VTN || - table[MAINTBL]->get_key_type() == UNC_KT_VBRIDGE || - table[MAINTBL]->get_key_type() == UNC_KT_VROUTER || - table[MAINTBL]->get_key_type() == UNC_KT_VLINK || - table[MAINTBL]->get_key_type() == UNC_KT_FLOWLIST || - table[MAINTBL]->get_key_type() == UNC_KT_POLICING_PROFILE) { - UPLL_LOG_TRACE("Delete Entry from Rename Table"); - UPLL_LOG_TRACE("Rename Flag is %d", rename); - if ((table[MAINTBL]->get_key_type() == UNC_KT_VLINK && !(rename & 0X03)) - || !rename) { - ConfigKeyVal *rename_key = NULL; - result_code = GetChildConfigKey(rename_key, okey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - if (combine_key) { - combine_key->set_next_cfg_key_val(NULL); - DELETE_IF_NOT_NULL(combine_key); - } - DELETE_IF_NOT_NULL(temp); - return result_code; - } - DbSubOp dbop = {kOpNotRead, kOpMatchCtrlr|kOpMatchDomain, kOpInOutNone}; - result_code = UpdateConfigDB(rename_key, data_type, UNC_OP_DELETE, - dmi, &dbop, RENAMETBL); - if (rename_key) - DELETE_IF_NOT_NULL(rename_key); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_TRACE("UpdateConfigDB Failed"); - DELETE_IF_NOT_NULL(temp); - if (combine_key) { - combine_key->set_next_cfg_key_val(NULL); - DELETE_IF_NOT_NULL(combine_key); - } - return result_code; } } } - } - DumpRenameInfo(rename_info); - /* Add the New name configkeyval to old name configkeyval */ - combine_key->AppendCfgKeyVal(rename_info); - /* Update the new name into the table */ - DumpRenameInfo(rename_info); - result_code = UpdateVnodeTables(combine_key, data_type, dmi); - if (combine_key) { - combine_key->set_next_cfg_key_val(NULL); - DELETE_IF_NOT_NULL(combine_key); - } - UPLL_LOG_TRACE("Updated in Vnode Tables "); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(temp); - return result_code; - } - for (int i = 0; i < nchild; i++) { - unc_key_type_t ktype = child[i]; - /* Avoid the Overlay key types here */ - if (OVERLAY_KT(ktype)) { - UPLL_LOG_TRACE("Overlay Key type %d is skipping from rename operation" - , ktype); - continue; - } - MoMgrImpl *mgr = reinterpret_cast( - const_cast(GetMoManager(ktype))); - if (!mgr) { - UPLL_LOG_DEBUG("Invalid mgr param"); - DELETE_IF_NOT_NULL(temp); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_TRACE("Update Key for the Child key type %d", ktype); DumpRenameInfo(rename_info); - result_code = mgr->UpdateRenamedValue(rename_info, dmi, data_type, - renamed, no_rename); - if (UPLL_RC_SUCCESS != result_code - && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - DELETE_IF_NOT_NULL(temp); - UPLL_LOG_DEBUG("UpdateRenamedValue is Failed %d", result_code); - return result_code; - } - } - UPLL_LOG_TRACE("The current Instance key type %d return result_code %d", - table[MAINTBL]->get_key_type(), result_code); - okey = okey->get_next_cfg_key_val(); - UPLL_LOG_TRACE("Fetching Next Record "); - } - DELETE_IF_NOT_NULL(temp); - return result_code; -} - -upll_rc_t MoMgrImpl::UpdateTables(IpcReqRespHeader *req, - ConfigKeyVal *&rename_info, - bool &renamed, - DalDmlIntf *dmi, bool &no_rename) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!rename_info) { - UPLL_LOG_DEBUG("Input key is null"); - return UPLL_RC_ERR_GENERIC; - } - - switch (rename_info->get_key_type()) { - case UNC_KT_VTN: - case UNC_KT_VROUTER: - case UNC_KT_VBRIDGE: - case UNC_KT_VLINK: - case UNC_KT_POLICING_PROFILE: - case UNC_KT_FLOWLIST: - /* Update the new name into the tables */ + /* Add the New name configkeyval to old name configkeyval */ + combine_key->AppendCfgKeyVal(rename_info); + /* Update the new name into the table */ DumpRenameInfo(rename_info); - /* Current Instance is Supporting Rename - * Then Get the Info */ - result_code = UpdateRenamedValue(rename_info, dmi, req->datatype, - renamed, no_rename); - if (UPLL_RC_SUCCESS != result_code - && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("UpdateRenamedValue is Failed %d", result_code); + result_code = UpdateVnodeTables(combine_key, data_type, dmi); + if (combine_key) { + combine_key->set_next_cfg_key_val(NULL); + DELETE_IF_NOT_NULL(combine_key); + } + UPLL_LOG_TRACE("Updated in Vnode Tables "); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(temp); return result_code; } - UPLL_LOG_TRACE("UpdateRenamedValue Return code %d", result_code); - break; - default: - break; - } - switch (rename_info->get_key_type()) { - case UNC_KT_VBRIDGE: - case UNC_KT_VROUTER: - { - /* The current instance is VBRIDGE or VROUTER then only - * call this api - */ + for (int i = 0; i < nchild; i++) { + unc_key_type_t ktype = child[i]; + /* Avoid the Overlay key types here */ + if (OVERLAY_KT(ktype) || (UNKNOWN_KT(ktype))) { + UPLL_LOG_TRACE("Key type %d is skipping from rename operation" + , ktype); + continue; + } MoMgrImpl *mgr = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VLINK))); + const_cast(GetMoManager(ktype))); if (!mgr) { - UPLL_LOG_DEBUG("Invalid mgr"); + UPLL_LOG_DEBUG("Invalid mgr param"); + DELETE_IF_NOT_NULL(temp); return UPLL_RC_ERR_GENERIC; } + UPLL_LOG_TRACE("Update Key for the Child key type %d", ktype); + DumpRenameInfo(rename_info); + result_code = mgr->UpdateRenamedValue(rename_info, dmi, data_type, + renamed, no_rename); + if (UPLL_RC_SUCCESS != result_code + && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + DELETE_IF_NOT_NULL(temp); + UPLL_LOG_DEBUG("UpdateRenamedValue is Failed %d", result_code); + return result_code; + } + } + UPLL_LOG_TRACE("The current Instance key type %d return result_code %d", + table[MAINTBL]->get_key_type(), result_code); + okey = okey->get_next_cfg_key_val(); + UPLL_LOG_TRACE("Fetching Next Record "); + } + DELETE_IF_NOT_NULL(temp); + return result_code; + } + + upll_rc_t MoMgrImpl::UpdateTables(IpcReqRespHeader *req, + ConfigKeyVal *&rename_info, + bool &renamed, + DalDmlIntf *dmi, bool &no_rename) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!rename_info) { + UPLL_LOG_DEBUG("Input key is null"); + return UPLL_RC_ERR_GENERIC; + } + switch (rename_info->get_key_type()) { + case UNC_KT_VTN: + case UNC_KT_VROUTER: + case UNC_KT_VBRIDGE: + case UNC_KT_VLINK: + case UNC_KT_POLICING_PROFILE: + case UNC_KT_FLOWLIST: + /* Update the new name into the tables */ DumpRenameInfo(rename_info); - /* Update the Vnode info in the Vlink table */ - result_code = mgr->UpdateVnodeVal(rename_info, dmi, req->datatype, - no_rename); - UPLL_LOG_TRACE("The Update Vnode val return value is %d", result_code); - - unc_key_type_t child_key[]= { - UNC_KT_VBR_FLOWFILTER_ENTRY, UNC_KT_VBRIF_FLOWFILTER_ENTRY, - UNC_KT_VRTIF_FLOWFILTER_ENTRY }; - - for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { - const unc_key_type_t ktype = child_key[i]; + /* Current Instance is Supporting Rename + * Then Get the Info */ + result_code = UpdateRenamedValue(rename_info, dmi, req->datatype, + renamed, no_rename); + if (UPLL_RC_SUCCESS != result_code + && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateRenamedValue is Failed %d", result_code); + return result_code; + } + UPLL_LOG_TRACE("UpdateRenamedValue Return code %d", result_code); + break; + default: + break; + } + switch (rename_info->get_key_type()) { + case UNC_KT_VBRIDGE: + case UNC_KT_VROUTER: + { + /* The current instance is VBRIDGE or VROUTER then only + * call this api + */ MoMgrImpl *mgr = reinterpret_cast( - const_cast(GetMoManager(ktype))); + const_cast(GetMoManager(UNC_KT_VLINK))); if (!mgr) { - UPLL_LOG_DEBUG("Instance is NULL"); + UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; } + DumpRenameInfo(rename_info); /* Update the Vnode info in the Vlink table */ result_code = mgr->UpdateVnodeVal(rename_info, dmi, req->datatype, no_rename); - UPLL_LOG_TRACE("The Update Vnode val return value is %d", result_code); - } - } - break; - case UNC_KT_FLOWLIST: - { - unc_key_type_t child_key[]= { - UNC_KT_POLICING_PROFILE, UNC_KT_POLICING_PROFILE_ENTRY, - UNC_KT_VTN_FLOWFILTER, UNC_KT_VTN_FLOWFILTER_ENTRY, - UNC_KT_VBR_FLOWFILTER, UNC_KT_VBR_FLOWFILTER_ENTRY, - UNC_KT_VBRIF_FLOWFILTER, UNC_KT_VBRIF_FLOWFILTER_ENTRY, - UNC_KT_VRTIF_FLOWFILTER, UNC_KT_VRTIF_FLOWFILTER_ENTRY}; - for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { - const unc_key_type_t ktype = child_key[i]; - MoMgrImpl *mgr = reinterpret_cast( - const_cast(GetMoManager(ktype))); - if (!mgr) { - UPLL_LOG_DEBUG("Instance is NULL"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_TRACE("The Update Vnode val return value is %d", + result_code); + + unc_key_type_t child_key[]= { + UNC_KT_VBR_FLOWFILTER_ENTRY, UNC_KT_VBRIF_FLOWFILTER_ENTRY, + UNC_KT_VRTIF_FLOWFILTER_ENTRY }; + + for (unsigned int i = 0; + i < sizeof(child_key)/sizeof(child_key[0]); i++) { + const unc_key_type_t ktype = child_key[i]; + MoMgrImpl *mgr = reinterpret_cast( + const_cast(GetMoManager(ktype))); + if (!mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + DumpRenameInfo(rename_info); + /* Update the Vnode info in the Vlink table */ + result_code = mgr->UpdateVnodeVal(rename_info, dmi, req->datatype, + no_rename); + UPLL_LOG_TRACE("The Update Vnode val return value is %d", + result_code); } - DumpRenameInfo(rename_info); - /* Update the Vnode info in the Vlink table */ - result_code = mgr->UpdateVnodeVal(rename_info, dmi, req->datatype, - no_rename); - UPLL_LOG_TRACE("The Update Vnode val return value is %d", result_code); - } - } - break; - case UNC_KT_POLICING_PROFILE: - { - unc_key_type_t child_key[]= { - UNC_KT_VTN_POLICINGMAP, UNC_KT_VBR_POLICINGMAP, - UNC_KT_VBRIF_POLICINGMAP }; - for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { - const unc_key_type_t ktype = child_key[i]; - MoMgrImpl *mgr = reinterpret_cast( - const_cast(GetMoManager(ktype))); - if (!mgr) { - UPLL_LOG_DEBUG("Instance is NULL"); - return UPLL_RC_ERR_GENERIC; + } + break; + case UNC_KT_FLOWLIST: + { + unc_key_type_t child_key[]= { + UNC_KT_POLICING_PROFILE, UNC_KT_POLICING_PROFILE_ENTRY, + UNC_KT_VTN_FLOWFILTER, UNC_KT_VTN_FLOWFILTER_ENTRY, + UNC_KT_VBR_FLOWFILTER, UNC_KT_VBR_FLOWFILTER_ENTRY, + UNC_KT_VBRIF_FLOWFILTER, UNC_KT_VBRIF_FLOWFILTER_ENTRY, + UNC_KT_VRTIF_FLOWFILTER, UNC_KT_VRTIF_FLOWFILTER_ENTRY}; + for (unsigned int i = 0; + i < sizeof(child_key)/sizeof(child_key[0]); i++) { + const unc_key_type_t ktype = child_key[i]; + MoMgrImpl *mgr = reinterpret_cast( + const_cast(GetMoManager(ktype))); + if (!mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + DumpRenameInfo(rename_info); + /* Update the Vnode info in the Vlink table */ + result_code = mgr->UpdateVnodeVal(rename_info, dmi, req->datatype, + no_rename); + UPLL_LOG_TRACE("The Update Vnode val return value is %d", + result_code); } - DumpRenameInfo(rename_info); - /* Update the Vnode info in the Vlink table */ - result_code = mgr->UpdateVnodeVal(rename_info, dmi, req->datatype, - no_rename); - UPLL_LOG_TRACE("The Update Vnode val return value is %d", result_code); } - } - break; - default: - break; + break; + case UNC_KT_POLICING_PROFILE: + { + unc_key_type_t child_key[]= { + UNC_KT_VTN_POLICINGMAP, UNC_KT_VBR_POLICINGMAP, + UNC_KT_VBRIF_POLICINGMAP }; + for (unsigned int i = 0; + i < sizeof(child_key)/sizeof(child_key[0]); i++) { + const unc_key_type_t ktype = child_key[i]; + MoMgrImpl *mgr = reinterpret_cast( + const_cast(GetMoManager(ktype))); + if (!mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + DumpRenameInfo(rename_info); + /* Update the Vnode info in the Vlink table */ + result_code = mgr->UpdateVnodeVal(rename_info, + dmi, + req->datatype, + no_rename); + UPLL_LOG_TRACE("The Update Vnode val return value is %d", + result_code); + } + } + break; + default: + break; + } + result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? + UPLL_RC_SUCCESS:result_code; + return result_code; } - result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? - UPLL_RC_SUCCESS:result_code; - return result_code; -} -/* - * This function used to chekcs the give node is - * unique or not - */ -upll_rc_t MoMgrImpl::VnodeChecks(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - if (!ikey || !(ikey->get_key())) - return UPLL_RC_ERR_GENERIC; - unc_key_type_t nodes[] = {UNC_KT_VBRIDGE, UNC_KT_VROUTER, UNC_KT_VLINK, - UNC_KT_VUNKNOWN, UNC_KT_VTEP, UNC_KT_VTUNNEL}; - int nop = sizeof(nodes)/ sizeof(nodes[0]); - ConfigKeyVal *ck_vnode = NULL; - UPLL_LOG_TRACE("ikey keytype %d", ikey->get_key_type()); - for (int indx = 0; indx < nop; indx++) { - MoMgrImpl *mgr = reinterpret_cast( - const_cast(GetMoManager(nodes[indx]))); - if (!mgr) { - UPLL_LOG_TRACE("Invalid mgr"); - continue; - } - result_code = mgr->CreateVnodeConfigKey(ikey, ck_vnode); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("CreateVnodeConfigKey failed - %d", result_code); - return result_code; - } - result_code = mgr->UpdateConfigDB(ck_vnode, dt_type, UNC_OP_READ, - dmi, MAINTBL); - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_TRACE("Existence check in keytype %d result_code %d", - ck_vnode->get_key_type(), result_code); - delete ck_vnode; - return result_code; - } - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - if (ikey->get_key_type() != ck_vnode->get_key_type()) { - UPLL_LOG_INFO("vnode already exists in another vnode tbl"); - result_code = UPLL_RC_ERR_CFG_SEMANTIC; + /* + * This function used to chekcs the give node is + * unique or not + */ + upll_rc_t MoMgrImpl::VnodeChecks(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + + if (!ikey || !(ikey->get_key())) + return UPLL_RC_ERR_GENERIC; + unc_key_type_t nodes[] = {UNC_KT_VBRIDGE, UNC_KT_VROUTER, + /* VlanmapOnBoundary: Added vlink */ + UNC_KT_VLINK, + UNC_KT_VUNKNOWN, UNC_KT_VTEP, UNC_KT_VTUNNEL}; + int nop = sizeof(nodes)/ sizeof(nodes[0]); + ConfigKeyVal *ck_vnode = NULL; + UPLL_LOG_TRACE("ikey keytype %d", ikey->get_key_type()); + for (int indx = 0; indx < nop; indx++) { + MoMgrImpl *mgr = reinterpret_cast( + const_cast(GetMoManager(nodes[indx]))); + if (!mgr) { + UPLL_LOG_TRACE("Invalid mgr"); + continue; + } + result_code = mgr->CreateVnodeConfigKey(ikey, ck_vnode); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("CreateVnodeConfigKey failed - %d", result_code); + return result_code; + } + result_code = mgr->UpdateConfigDB(ck_vnode, dt_type, UNC_OP_READ, + dmi, MAINTBL); + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_TRACE("Existence check in keytype %d result_code %d", + ck_vnode->get_key_type(), result_code); + delete ck_vnode; + return result_code; + } + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + if (ikey->get_key_type() != ck_vnode->get_key_type()) { + UPLL_LOG_INFO("vnode already exists in another vnode tbl"); + result_code = UPLL_RC_ERR_CFG_SEMANTIC; + } + delete ck_vnode; + return result_code; + } + if (ck_vnode) { + delete ck_vnode; + ck_vnode = NULL; } - delete ck_vnode; - return result_code; - } - if (ck_vnode) { - delete ck_vnode; - ck_vnode = NULL; } - } - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? UPLL_RC_SUCCESS : - result_code; - return result_code; -} - -unc_keytype_configstatus_t MoMgrImpl::GetConsolidatedCsStatus( - list< unc_keytype_configstatus_t > cs_status) { - unc_keytype_configstatus_t final_cs_status; - unc_keytype_configstatus_t current_cs_status; - - list< unc_keytype_configstatus_t >::iterator iter; - iter = cs_status.begin(); - final_cs_status = *iter; - if (iter != cs_status.end() && UNC_CS_NOT_SUPPORTED == final_cs_status) { - return UNC_CS_NOT_APPLIED; + result_code = + (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? UPLL_RC_SUCCESS : + result_code; + return result_code; } - while (iter != cs_status.end()) { - current_cs_status = *iter; + unc_keytype_configstatus_t MoMgrImpl::GetConsolidatedCsStatus( + list< unc_keytype_configstatus_t > cs_status) { + unc_keytype_configstatus_t final_cs_status; + unc_keytype_configstatus_t current_cs_status; - final_cs_status = ComputeStatus(final_cs_status, current_cs_status); - ++iter; - } - return final_cs_status; -} - -unc_keytype_configstatus_t MoMgrImpl::ComputeStatus( - unc_keytype_configstatus_t db_status, - unc_keytype_configstatus_t cs_status) { - unc_keytype_configstatus_t result_code; - -/* UNC_CS_APPLIED UNC_CS_INVALID UNC_CS_INVALID - * UNC_CS_PARTIALLY_APPLIED UNC_CS_INVALID UNC_CS_INVALID - * UNC_CS_NOT_APPLIED UNC_CS_INVALID UNC_CS_INVALID - * UNC_CS_INVALID UNC_CS_APPLIED UNC_CS_INVALID - * UNC_CS_INVALID UNC_CS_INVALID UNC_CS_INVALID - * UNC_CS_INVALID UNC_CS_NOT_APPLIED UNC_CS_INVALID - * UNC_CS_NOT_SUPPORTED UNC_CS_INVALID UNC_CS_INVALID*/ - if (UNC_CS_INVALID == db_status || UNC_CS_INVALID == cs_status) { - result_code = UNC_CS_INVALID; - } + list< unc_keytype_configstatus_t >::iterator iter; + iter = cs_status.begin(); + if (iter == cs_status.end()) { + return UNC_CS_UNKNOWN; + } else { + final_cs_status = *iter; + if (iter != cs_status.end() && UNC_CS_NOT_SUPPORTED == final_cs_status) { + return UNC_CS_NOT_APPLIED; + } + } -/* UNC_CS_APPLIED UNC_CS_APPLIED UNC_CS_APPLIED*/ + while (iter != cs_status.end()) { + current_cs_status = *iter; - else if (UNC_CS_APPLIED == db_status && UNC_CS_APPLIED == cs_status) { - result_code = UNC_CS_APPLIED; + final_cs_status = ComputeStatus(final_cs_status, current_cs_status); + ++iter; + } + return final_cs_status; } -/* UNC_CS_NOT_APPLIED UNC_CS_NOT_APPLIED UNC_CS_NOT_APPLIED - * UNC_CS_NOT_SUPPORTED UNC_CS_NOT_APPLIED UNC_CS_NOT_APPLIED - * UNC_CS_NOT_APPLIED UNC_CS_NOT_SUPPORTED UNC_CS_NOT_APPLIED - * UNC_CS_NOT_SUPPORTED UNC_CS_NOT_SUPPORTED UNC_CS_NOT_APPLIED*/ - - else if ((UNC_CS_NOT_APPLIED == db_status && - UNC_CS_NOT_APPLIED == cs_status) || - (UNC_CS_NOT_SUPPORTED == db_status && - UNC_CS_NOT_APPLIED == cs_status) || - (UNC_CS_NOT_SUPPORTED == cs_status && - UNC_CS_NOT_APPLIED == db_status) || - (UNC_CS_NOT_SUPPORTED == cs_status && - UNC_CS_NOT_SUPPORTED == db_status)) { - result_code = UNC_CS_NOT_APPLIED; + unc_keytype_configstatus_t MoMgrImpl::ComputeStatus( + unc_keytype_configstatus_t db_status, + unc_keytype_configstatus_t cs_status) { + unc_keytype_configstatus_t result_code; + + /* UNC_CS_APPLIED UNC_CS_INVALID UNC_CS_INVALID + * UNC_CS_PARTIALLY_APPLIED UNC_CS_INVALID UNC_CS_INVALID + * UNC_CS_NOT_APPLIED UNC_CS_INVALID UNC_CS_INVALID + * UNC_CS_INVALID UNC_CS_APPLIED UNC_CS_INVALID + * UNC_CS_INVALID UNC_CS_INVALID UNC_CS_INVALID + * UNC_CS_INVALID UNC_CS_NOT_APPLIED UNC_CS_INVALID + * UNC_CS_NOT_SUPPORTED UNC_CS_INVALID UNC_CS_INVALID*/ + if (UNC_CS_INVALID == db_status || UNC_CS_INVALID == cs_status) { + result_code = UNC_CS_INVALID; + } else if (UNC_CS_APPLIED == db_status && UNC_CS_APPLIED == cs_status) { + /* UNC_CS_APPLIED UNC_CS_APPLIED UNC_CS_APPLIED*/ + result_code = UNC_CS_APPLIED; + } + + /* UNC_CS_NOT_APPLIED UNC_CS_NOT_APPLIED UNC_CS_NOT_APPLIED + * UNC_CS_NOT_SUPPORTED UNC_CS_NOT_APPLIED UNC_CS_NOT_APPLIED + * UNC_CS_NOT_APPLIED UNC_CS_NOT_SUPPORTED UNC_CS_NOT_APPLIED + * UNC_CS_NOT_SUPPORTED UNC_CS_NOT_SUPPORTED UNC_CS_NOT_APPLIED*/ + + else if ((UNC_CS_NOT_APPLIED == db_status && + UNC_CS_NOT_APPLIED == cs_status) || + (UNC_CS_NOT_SUPPORTED == db_status && + UNC_CS_NOT_APPLIED == cs_status) || + (UNC_CS_NOT_SUPPORTED == cs_status && + UNC_CS_NOT_APPLIED == db_status) || + (UNC_CS_NOT_SUPPORTED == cs_status && + UNC_CS_NOT_SUPPORTED == db_status)) { + result_code = UNC_CS_NOT_APPLIED; + } + + /* UNC_CS_APPLIED UNC_CS_NOT_APPLIED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_NOT_APPLIED UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_NOT_SUPPORTED UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_APPLIED UNC_CS_NOT_SUPPORTED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_PARTIALLY_APPLIED UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_NOT_APPLIED UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_PARTIALLY_APPLIED UNC_CS_NOT_APPLIED UNC_CS_PARTIALLY_APPLIED + * UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED*/ + + else if ((UNC_CS_APPLIED == db_status || + UNC_CS_NOT_APPLIED == db_status || + UNC_CS_NOT_SUPPORTED == db_status || + UNC_CS_PARTIALLY_APPLIED == db_status) && + (UNC_CS_APPLIED == cs_status || + UNC_CS_NOT_APPLIED == cs_status || + UNC_CS_NOT_SUPPORTED == cs_status || + UNC_CS_PARTIALLY_APPLIED == cs_status)) { + result_code = UNC_CS_PARTIALLY_APPLIED; + } else { + result_code = UNC_CS_UNKNOWN; + } + return result_code; } -/* UNC_CS_APPLIED UNC_CS_NOT_APPLIED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_NOT_APPLIED UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_NOT_SUPPORTED UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_APPLIED UNC_CS_NOT_SUPPORTED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_PARTIALLY_APPLIED UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_APPLIED UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_NOT_APPLIED UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_PARTIALLY_APPLIED UNC_CS_NOT_APPLIED UNC_CS_PARTIALLY_APPLIED - * UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED UNC_CS_PARTIALLY_APPLIED*/ - - else if ((UNC_CS_APPLIED == db_status || - UNC_CS_NOT_APPLIED == db_status || - UNC_CS_NOT_SUPPORTED == db_status || - UNC_CS_PARTIALLY_APPLIED == db_status) && - (UNC_CS_APPLIED == cs_status || - UNC_CS_NOT_APPLIED == cs_status || - UNC_CS_NOT_SUPPORTED == cs_status || - UNC_CS_PARTIALLY_APPLIED == cs_status)) { - result_code = UNC_CS_PARTIALLY_APPLIED; - } else { - result_code = UNC_CS_UNKNOWN; + upll_rc_t MoMgrImpl::AdaptErrValToVtn(ConfigKeyVal *ckv_drv_rslt, + DalDmlIntf *dmi, + uint8_t* ctrlr_id) { + upll_rc_t result_code = UPLL_RC_SUCCESS; + while (ckv_drv_rslt) { + // Convert the driver returned key to unc specific key + result_code = GetRenamedUncKey(ckv_drv_rslt, + UPLL_DT_RUNNING, dmi, ctrlr_id); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("GetRenamedUncKey failed - %d", result_code); + return result_code; + } + ConfigVal *cval = ckv_drv_rslt->get_cfg_val(); + while (cval) { + switch (ckv_drv_rslt->get_key_type()) { + // Get VBridge interface name using vExternal Name + case UNC_KT_VBR_IF: { + uint8_t *vext_name; + UPLL_LOG_TRACE("Received Structure: %d", cval->get_st_num()); + if (IpctSt::kIpcStPfcdrvValVbrIf == cval->get_st_num()) { + val_drv_vbr_if *vbr_if_val = reinterpret_cast + (cval->get_val()); + if (vbr_if_val == NULL) { + UPLL_LOG_DEBUG("vbr_if_val is NULL."); + cval = cval->get_next_cfg_val(); + continue; + } + if (vbr_if_val->valid[PFCDRV_IDX_VEXTERNAL_NAME_VBRIF] == + UNC_VF_VALID) { + vext_name = vbr_if_val->vex_name; + } else { + UPLL_LOG_DEBUG("Vexternal name is not valid." + "No translation required"); + cval = cval->get_next_cfg_val(); + continue; + } + } else { + UPLL_LOG_TRACE("No translation required"); + cval = cval->get_next_cfg_val(); + continue; + } + + ConfigKeyVal *vbrif_key_val = NULL; + VbrIfMoMgr *vbrifmgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VBR_IF))); + if (vbrifmgr == NULL) { + UPLL_LOG_DEBUG("Invalid momgr object"); + return UPLL_RC_ERR_GENERIC; + } + result_code = vbrifmgr->GetVbrIfFromVExternal( + reinterpret_cast + (ckv_drv_rslt->get_key())->vbr_key.vtn_key.vtn_name, + vext_name, + vbrif_key_val, + dmi); + if (result_code == UPLL_RC_SUCCESS) { + memcpy(ckv_drv_rslt->get_key(), vbrif_key_val->get_key(), + sizeof(key_vbr_if)); + UPLL_LOG_DEBUG("Driver result updated with logical values"); + } + DELETE_IF_NOT_NULL(vbrif_key_val); + cval = cval->get_next_cfg_val(); + } + break; + default: + cval = cval->get_next_cfg_val(); + break; + } + } + ckv_drv_rslt = ckv_drv_rslt->get_next_cfg_key_val(); + } + return UPLL_RC_SUCCESS; } - return result_code; -} + } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/momgr_impl.hh b/coordinator/modules/upll/momgr_impl.hh index 2eec3cca..0bbd45c6 100644 --- a/coordinator/modules/upll/momgr_impl.hh +++ b/coordinator/modules/upll/momgr_impl.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -18,6 +18,7 @@ #include #include #include +#include #include "unc/keytype.h" #include "unc/pfcdriver_include.h" @@ -64,6 +65,7 @@ using unc::upll::ipc_util::IpcReqRespHeader; using unc::upll::ipc_util::IpcRequest; using unc::upll::config_momgr::CtrlrCommitStatus; using unc::upll::config_momgr::CtrlrVoteStatus; +using unc::upll::config_momgr::KTxCtrlrAffectedState; using unc::upll::config_momgr::MoManager; using unc::upll::dal::DalBindInfo; using unc::upll::dal::DalDmlIntf; @@ -77,24 +79,24 @@ using unc::upll::dal::DalResultCode; #define ResetValid(x, val) { \ struct x *tval = reinterpret_cast(val); \ for (uint8_t i = 0; i < sizeof(tval->valid)/sizeof(tval->valid[0]); i++) \ - *reinterpret_cast(tval->valid + i) = UNC_VF_INVALID; \ + *reinterpret_cast(tval->valid + i) = UNC_VF_INVALID; \ } #define GetVal(ikey) \ - ((ikey) ? \ - (((ikey)->get_cfg_val()) ? \ + ((ikey) ? \ + (((ikey)->get_cfg_val()) ? \ (((ikey)->get_cfg_val())->get_val()) \ - : NULL) \ - : NULL) + : NULL) \ + : NULL) #define GetStateVal(ikey) \ - ((ikey) ? \ - (((ikey)->get_cfg_val()) ? \ - (((ikey)->get_cfg_val()->get_next_cfg_val()) ? \ + ((ikey) ? \ + (((ikey)->get_cfg_val()) ? \ + (((ikey)->get_cfg_val()->get_next_cfg_val()) ? \ ((ikey)->get_cfg_val()->get_next_cfg_val()->get_val()) \ - : NULL) \ - : NULL) \ - : NULL) + : NULL) \ + : NULL) \ + : NULL) // #define KEY_RESET(x) *(x) = ' ' @@ -105,18 +107,24 @@ using unc::upll::dal::DalResultCode; typedef list CtrlrCommitStatusList; typedef list CtrlrVoteStatusList; // typedef multimapControllerKeyMap; +#define UNKNOWN_KT(keytype) ((keytype == UNC_KT_VUNKNOWN) || \ + (keytype == UNC_KT_VUNK_IF)) #define OVERLAY_KT(keytype) ((keytype == UNC_KT_VTEP) || \ - (keytype == UNC_KT_VTEP_IF) || (keytype == UNC_KT_VTEP_GRP) || \ - (keytype == UNC_KT_VTEP_GRP_MEMBER) || (keytype == UNC_KT_VTUNNEL) ||\ - (keytype == UNC_KT_VTUNNEL_IF)) + (keytype == UNC_KT_VTEP_IF) || (keytype == UNC_KT_VTEP_GRP) || \ + (keytype == UNC_KT_VTEP_GRP_MEMBER) || (keytype == UNC_KT_VTUNNEL) ||\ + (keytype == UNC_KT_VTUNNEL_IF)) #define PORT_MAPPED_KEYTYPE(keytype) ((keytype == UNC_KT_VBR_IF) || \ - (keytype == UNC_KT_VTEP_IF) || (keytype == UNC_KT_VTUNNEL_IF)) + (keytype == UNC_KT_VTEP_IF) || (keytype == UNC_KT_VTUNNEL_IF)) #define VN_IF_KEYTYPE(keytype) ((keytype == UNC_KT_VBR_IF) || \ - (keytype == UNC_KT_VTEP_IF) || (keytype == UNC_KT_VTUNNEL_IF) || \ - (keytype == UNC_KT_VRT_IF)) + (keytype == UNC_KT_VTEP_IF) || (keytype == UNC_KT_VTUNNEL_IF) || \ + (keytype == UNC_KT_VRT_IF)) + +#define VNODE_KEYTYPE(keytype) ((keytype == UNC_KT_VBRIDGE) || \ + (keytype == UNC_KT_VROUTER) || (keytype == UNC_KT_VUNKNOWN) || \ + (keytype == UNC_KT_VTEP) || (keytype == UNC_KT_VTUNNEL)) #define GET_USER_DATA(ckey) { \ void *user_data = (ckey)->get_user_data(); \ @@ -131,24 +139,32 @@ typedef list CtrlrVoteStatusList; #define SET_USER_DATA(ckey, skey) { \ key_user_data_t *suser_data = \ - reinterpret_cast((skey)?(skey->get_user_data()):NULL); \ + reinterpret_cast((skey)?(skey->get_user_data()):NULL); \ if (suser_data) {\ GET_USER_DATA(ckey) \ key_user_data_t *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ uuu::upll_strncpy(user_data->ctrlr_id, suser_data->ctrlr_id, \ - (kMaxLenCtrlrId+1)); \ + (kMaxLenCtrlrId+1)); \ uuu::upll_strncpy(user_data->domain_id, suser_data->domain_id, \ - (kMaxLenDomainId+1)); \ + (kMaxLenDomainId+1)); \ user_data->flags = suser_data->flags; \ } \ } +// free the user data and set it to NULL +#define DEL_USER_DATA(ckey) { \ + if ((ckey)->get_user_data()) { \ + free((ckey)->get_user_data()); \ + } \ + (ckey)->set_user_data(NULL); \ +} + #define SET_USER_DATA_CTRLR(ckey, ctrlr) { \ GET_USER_DATA(ckey) \ if (ctrlr && strlen(reinterpret_cast(ctrlr))) { \ key_user_data *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ uuu::upll_strncpy(user_data->ctrlr_id, (ctrlr), (kMaxLenCtrlrId+1)); \ } \ } @@ -157,7 +173,7 @@ typedef list CtrlrVoteStatusList; GET_USER_DATA(ckey) \ if (domain && strlen(reinterpret_cast(domain))) { \ key_user_data *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ uuu::upll_strncpy(user_data->domain_id, (domain), (kMaxLenDomainId+1)); \ } \ } @@ -165,26 +181,26 @@ typedef list CtrlrVoteStatusList; #define SET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom) { \ GET_USER_DATA(ckey) \ key_user_data *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ if (((ctrlr_dom).ctrlr) && \ - strlen(reinterpret_cast((ctrlr_dom).ctrlr))) {\ + strlen(reinterpret_cast((ctrlr_dom).ctrlr))) {\ uuu::upll_strncpy(user_data->ctrlr_id, (ctrlr_dom).ctrlr, \ - (kMaxLenCtrlrId+1)); \ + (kMaxLenCtrlrId+1)); \ } else { \ - (ctrlr_dom).ctrlr = NULL; \ + (ctrlr_dom).ctrlr = NULL; \ }\ if (((ctrlr_dom).domain) && \ - strlen(reinterpret_cast((ctrlr_dom).domain))) \ - uuu::upll_strncpy(user_data->domain_id, ((ctrlr_dom).domain), \ - (kMaxLenDomainId+1)); \ + strlen(reinterpret_cast((ctrlr_dom).domain))) \ + uuu::upll_strncpy(user_data->domain_id, ((ctrlr_dom).domain), \ + (kMaxLenDomainId+1)); \ else \ - (ctrlr_dom).domain = NULL; \ + (ctrlr_dom).domain = NULL; \ } #define GET_USER_DATA_FLAGS(ckey, rename) \ { \ key_user_data_t *user_data = \ - reinterpret_cast((ckey)->get_user_data()); \ + reinterpret_cast((ckey)->get_user_data()); \ if (user_data) { \ rename = user_data->flags; \ } \ @@ -193,37 +209,37 @@ typedef list CtrlrVoteStatusList; #define GET_USER_DATA_CTRLR(ckey, ctrlr) \ { \ key_user_data_t *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ if (user_data) { \ (ctrlr) = \ - (reinterpret_cast(ckey->get_user_data()))->ctrlr_id; \ + (reinterpret_cast(ckey->get_user_data()))->ctrlr_id; \ } \ } #define GET_USER_DATA_DOMAIN(ckey, domain) \ { \ key_user_data_t *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ if (user_data) { \ (domain) = \ - (reinterpret_cast(ckey->get_user_data()))->domain_id; \ + (reinterpret_cast(ckey->get_user_data()))->domain_id; \ } \ } #define GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_domain) \ { \ key_user_data_t *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ if (user_data) { \ if (strlen(reinterpret_cast((reinterpret_cast \ - (ckey->get_user_data()))->ctrlr_id))) { \ - (ctrlr_domain).ctrlr = \ - (reinterpret_cast(ckey->get_user_data()))->ctrlr_id; \ + (ckey->get_user_data()))->ctrlr_id))) { \ + (ctrlr_domain).ctrlr = \ + (reinterpret_cast(ckey->get_user_data()))->ctrlr_id; \ } \ if (strlen(reinterpret_cast((reinterpret_cast \ - (ckey->get_user_data()))->domain_id))) { \ - (ctrlr_domain).domain = \ - (reinterpret_cast(ckey->get_user_data()))->domain_id;\ + (ckey->get_user_data()))->domain_id))) { \ + (ctrlr_domain).domain = \ + (reinterpret_cast(ckey->get_user_data()))->domain_id;\ } \ } \ } @@ -232,22 +248,22 @@ typedef list CtrlrVoteStatusList; { \ GET_USER_DATA(ckey) \ key_user_data_t *user_data = \ - reinterpret_cast(ckey->get_user_data()); \ + reinterpret_cast(ckey->get_user_data()); \ user_data->flags = (rename); \ } #define FREE_IF_NOT_NULL(key) \ -do { \ - if (key) \ - free(key); \ -} while (0); + do { \ + if (key) \ + free(key); \ + } while (0); #define DELETE_IF_NOT_NULL(key) \ -do { \ - if (key)\ - delete key;\ - key = NULL;\ -} while (0); + do { \ + if (key)\ + delete key;\ + key = NULL;\ + } while (0); #define GET_TABLE_TYPE(keytype, tbl) \ { \ @@ -267,28 +283,34 @@ do { \ #define KEYTYPE_WITHOUT_DOMAIN(keytype, domain) \ { \ domain = ((keytype == UNC_KT_POLICING_PROFILE) \ - || (keytype == UNC_KT_POLICING_PROFILE_ENTRY) \ - || (keytype == UNC_KT_FLOWLIST) \ - || (keytype == UNC_KT_FLOWLIST_ENTRY) \ - || (keytype == UNC_KT_VTEP_GRP) \ - || (keytype == UNC_KT_VTEP_GRP_MEMBER))?true:false; \ + || (keytype == UNC_KT_POLICING_PROFILE_ENTRY) \ + || (keytype == UNC_KT_FLOWLIST) \ + || (keytype == UNC_KT_FLOWLIST_ENTRY) \ + || (keytype == UNC_KT_VTEP_GRP) \ + || (keytype == UNC_KT_VTEP_GRP_MEMBER))?true:false; \ } #define IS_POM_KT(keytype, flag) \ { \ flag = ((keytype == UNC_KT_VTN_POLICINGMAP) \ - || (keytype == UNC_KT_VBR_POLICINGMAP) \ - || (keytype == UNC_KT_VBRIF_POLICINGMAP) \ - || (keytype == UNC_KT_VTN_FLOWFILTER) \ - || (keytype == UNC_KT_VTN_FLOWFILTER_ENTRY) \ - || (keytype == UNC_KT_VBR_FLOWFILTER) \ - || (keytype == UNC_KT_VBR_FLOWFILTER_ENTRY) \ - || (keytype == UNC_KT_VBRIF_FLOWFILTER) \ - || (keytype == UNC_KT_VBRIF_FLOWFILTER_ENTRY) \ - || (keytype == UNC_KT_VRTIF_FLOWFILTER) \ - || (keytype == UNC_KT_VRTIF_FLOWFILTER_ENTRY))?true:false; \ + || (keytype == UNC_KT_VBR_POLICINGMAP) \ + || (keytype == UNC_KT_VBRIF_POLICINGMAP) \ + || (keytype == UNC_KT_VTN_FLOWFILTER) \ + || (keytype == UNC_KT_VTN_FLOWFILTER_ENTRY) \ + || (keytype == UNC_KT_VBR_FLOWFILTER) \ + || (keytype == UNC_KT_VBR_FLOWFILTER_ENTRY) \ + || (keytype == UNC_KT_VBRIF_FLOWFILTER) \ + || (keytype == UNC_KT_VBRIF_FLOWFILTER_ENTRY) \ + || (keytype == UNC_KT_VRTIF_FLOWFILTER) \ + || (keytype == UNC_KT_VRTIF_FLOWFILTER_ENTRY))?true:false; \ } +#define IS_INTERFACE_KEY(kt_type) ((kt_type == UNC_KT_VBR_IF) || \ + (kt_type == UNC_KT_VRT_IF) || \ + (kt_type == UNC_KT_VTEP_IF) || \ + (kt_type == UNC_KT_VTUNNEL_IF) || \ + (kt_type == UNC_KT_VUNK_IF)) + enum state_notification { kCtrlrReconnect = 0x0, kCtrlrReconnectIfUp, @@ -296,12 +318,15 @@ enum state_notification { kCtrlrDisconnect, kAdminStatusDisabled, kAdminStatusEnabled, + kPortUnknown, kPortFault, kPathFault, kPortFaultReset, kPathFaultReset, kBoundaryFault, - kBoundaryFaultReset + kBoundaryFaultReset, + kPortFaultResetWithAdminDisabled, + kBoundaryFaultResetWithAdminDisabled }; #define POM_RENAME_KT(ktype) (((ktype) == UNC_KT_VBR_POLICINGMAP) || \ @@ -314,9 +339,9 @@ enum state_notification { #define GET_RENAME_FLAG(rename, ktype) \ { \ if (POM_RENAME_KT(ktype)) \ - rename = rename & RENAME; \ + rename = rename & RENAME; \ else \ - rename = rename & RENAME_BITS; \ + rename = rename & RENAME_BITS; \ } #define NO_VTN_RENAME 0xFE @@ -352,7 +377,7 @@ typedef struct key_vnode_type { struct key_vnode_type_compare { inline bool operator()(const key_vnode_type &keyvnodetype1, - const key_vnode_type keyvnodetype2) const { + const key_vnode_type keyvnodetype2) const { int ret = strcmp((const char *)keyvnodetype1.vnode_key.vtn_key.vtn_name, (const char *)keyvnodetype1.vnode_key.vtn_key.vtn_name); if (ret == 0) { @@ -378,7 +403,10 @@ enum vnode_if_type { kVrtIf, kVunkIf, kVtepIf, - kVtunnelIf + kVtunnelIf, + /* VlanmapOnBoundary: kVlanMap is used when boundary + * vnode_if is mapped to SD or SW */ + kVlanMap }; #define VLINK_FLAG_NODE_TYPE 0xFC @@ -388,10 +416,10 @@ enum vnode_if_type { #define kVlinkVnodeIf1Type 5 #define GET_VLINK_NODE1_TYPE(vlink_flag) \ - ((vlink_flag & VLINK_FLAG_NODE1_TYPE) >> kVlinkVnodeIf1Type) + ((vlink_flag & VLINK_FLAG_NODE1_TYPE) >> kVlinkVnodeIf1Type) #define GET_VLINK_NODE2_TYPE(vlink_flag) \ - ((vlink_flag & VLINK_FLAG_NODE2_TYPE) >> kVlinkVnodeIf2Type) + ((vlink_flag & VLINK_FLAG_NODE2_TYPE) >> kVlinkVnodeIf2Type) enum if_type { kUnboundInterface = 0x0, @@ -408,6 +436,13 @@ enum vn_if_type { kVlinkInternalNode2 = 0x10 }; +enum NotifyPOMForPortMapInfo { + kPortMapNoChange = 0, + kPortMapCreated, // Used to notify POM when PortMap is Created + kPortMapDeleted, // Used to notifyPOM when PortMap is Deleted + kPortMapUpdated, // PortMap is Updated. No Notification is required for POM +}; + enum InterfacePortMapInfo { kVlinkPortMapNotConfigured = 0x00, kVlinkConfigured = 0x01, @@ -424,7 +459,7 @@ typedef struct val_rename_vnode { struct vlink_compare { inline bool operator()(const key_vlink_t &keyvlink1, - const key_vlink_t keyvlink2) const { + const key_vlink_t keyvlink2) const { int ret = strcmp((const char *)keyvlink1.vtn_key.vtn_name, (const char *)keyvlink2.vtn_key.vtn_name); if (ret == 0) { @@ -443,6 +478,10 @@ enum VlinkNodePosition { }; #define VLINK_FLAG_NODE_POS 0xC0 +/* VlanmapOnBoundary: Below flags used to set/clear + * user or boundary configured bit in vlanmap flag */ +#define USER_VLANMAP_FLAG 0x40 +#define BOUNDARY_VLANMAP_FLAG 0x80 typedef struct controller_domain { uint8_t *ctrlr; @@ -549,14 +588,14 @@ class Table { public: Table(uudst::kDalTableIndex itbl_index, unc_key_type_t ikey_type, - BindInfo *binfo, uui::IpctSt::IpcStructNum ikey_struct, - IpctSt::IpcStructNum ival_struct, + BindInfo *binfo, uui::IpctSt::IpcStructNum ikey_struct, + IpctSt::IpcStructNum ival_struct, int inattr): key_type(ikey_type), key_struct(ikey_struct), val_struct(ival_struct), nattr(inattr) { tbl_index = itbl_index; db_info = binfo; - } + } ~Table() { } unc_key_type_t get_key_type() { return key_type; } @@ -577,28 +616,36 @@ class Table { class MoMgrImpl : public MoManager { private: upll_rc_t CreateImportMoImpl(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id, - const char *domain_id); + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id, + const char *domain_id); // Returns Query String for Read Import based on operation and keytype std::string GetReadImportQueryString(unc_keytype_operation_t op, unc_key_type_t kt) const; bool OperStatusSupported(unc_key_type_t kt) { - switch (kt) { - case UNC_KT_VTN: - case UNC_KT_VBRIDGE: - case UNC_KT_VROUTER: - case UNC_KT_VBR_IF: - case UNC_KT_VRT_IF: - return true; - default: - return false; - } + switch (kt) { + case UNC_KT_VTN: + case UNC_KT_VBRIDGE: + case UNC_KT_VROUTER: + case UNC_KT_VBR_IF: + case UNC_KT_VRT_IF: + case UNC_KT_VBR_VLANMAP: + return true; + default: + return false; + } } + // Converts the driver returned err_ckv specific to VTN + // This method is used when the err_ckv sent from driver + // does not have all required key values filled + // Calls GetRenamedUncKey as well + upll_rc_t AdaptErrValToVtn(ConfigKeyVal *ckv_drv_rslt, + DalDmlIntf *dmi, + uint8_t* ctrlr_id); protected: Table **table; @@ -607,56 +654,56 @@ class MoMgrImpl : public MoManager { int nchild; upll_rc_t DalToUpllResCode(DalResultCode result_code); - /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING operations - * - * @param[in/out] key Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ + /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING operations + * + * @param[in/out] key Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ virtual upll_rc_t PopulateValVtnNeighbor(ConfigKeyVal *&key, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { return UPLL_RC_SUCCESS; } upll_rc_t TxCopyRenameTableFromCandidateToRunning( - unc_key_type_t key_type, - unc_keytype_operation_t op, - DalDmlIntf* dmi); + unc_key_type_t key_type, + unc_keytype_operation_t op, + DalDmlIntf* dmi); #if 0 /** - * @brief Get configkey val with oper status initialized to UNINIT - * - * @param[out] ck_vn pointer to ConfigKeyVal - * @param[in] ktype key type - * @param[in] dmi Poiner to database connection params. - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC Generic error - */ + * @brief Get configkey val with oper status initialized to UNINIT + * + * @param[out] ck_vn pointer to ConfigKeyVal + * @param[in] ktype key type + * @param[in] dmi Poiner to database connection params. + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC Generic error + */ template - upll_rc_t GetCkvWithOperSt(ConfigKeyVal *&ck_vn, - unc_key_type_t ktype, - DalDmlIntf *dmi); +upll_rc_t GetCkvWithOperSt(ConfigKeyVal *&ck_vn, + unc_key_type_t ktype, + DalDmlIntf *dmi); #else - /* @brief Gets ports with uninitialized oper status - * - ports whose status have to be obtained from physical - * - * @param[out] ikey Pointer to a list of configkeyvals - * @param[in] dmi Database connection parameter - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t GetUninitOperState(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); + /* @brief Gets ports with uninitialized oper status + * - ports whose status have to be obtained from physical + * + * @param[out] ikey Pointer to a list of configkeyvals + * @param[in] dmi Database connection parameter + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t GetUninitOperState(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); #endif virtual upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, @@ -667,8 +714,8 @@ class MoMgrImpl : public MoManager { return UPLL_RC_ERR_GENERIC; }; upll_rc_t ValidateDeleteMoReq(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey, + DalDmlIntf *dmi); upll_rc_t DeleteCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); @@ -690,7 +737,7 @@ class MoMgrImpl : public MoManager { virtual upll_rc_t UpdateParentOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_LOG_DEBUG("Unsupported operation for this keytype %d\n", - (ikey)?ikey->get_key_type():0); + (ikey)?ikey->get_key_type():0); return UPLL_RC_ERR_GENERIC; } @@ -703,27 +750,30 @@ class MoMgrImpl : public MoManager { * **/ virtual upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, - unc_keytype_operation_t op, - uint32_t result, - ConfigKeyVal *upd_key = NULL, - DalDmlIntf *dmi = NULL, - ConfigKeyVal *ctrlr_key = NULL) = 0; + unc_keytype_operation_t op, + uint32_t result, + ConfigKeyVal *upd_key = NULL, + DalDmlIntf *dmi = NULL, + ConfigKeyVal *ctrlr_key = NULL) = 0; /** * @brief Update config status for commit result and vote result. * * @param[in/out] ckv_running ConfigKeyVal instance. * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] phase specify the phase (CREATE, DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * **/ virtual upll_rc_t UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) = 0; + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) = 0; + virtual upll_rc_t UpdateCtrlrConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running) { return UPLL_RC_SUCCESS; } virtual upll_rc_t UpdateRenameKey(ConfigKeyVal *&ikey, @@ -734,25 +784,15 @@ class MoMgrImpl : public MoManager { MoMgrTables tbl); virtual upll_rc_t GetDiffRecord(ConfigKeyVal *ckv_running, - ConfigKeyVal *ckv_audit, - uuc::UpdateCtrlrPhase phase, MoMgrTables tbl, - ConfigKeyVal *&ckv_driver_req, - DalDmlIntf *dmi, - bool &invalid_attr); + ConfigKeyVal *ckv_audit, + uuc::UpdateCtrlrPhase phase, MoMgrTables tbl, + ConfigKeyVal *&ckv_driver_req, + DalDmlIntf *dmi, + bool &invalid_attr); virtual upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) = 0; - /** - * @brief Perform Semantic Check to check Different vbridges - * contain same switch-id and vlan-id - * - * @param[in] ikey ConfigKeyVal - * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - **/ - virtual upll_rc_t ValidateAttribute(ConfigKeyVal *kval, DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL) =0; /** * @brief Gets the valid array position of the variable in the value * structure from the table in the specified configuration @@ -772,16 +812,18 @@ class MoMgrImpl : public MoManager { MoMgrTables tbl = MAINTBL)= 0; virtual upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi, + bool restore_flag = false); upll_rc_t BindStartup(DalBindInfo *db_info, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); + upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); upll_rc_t BindCandidateDirty(DalBindInfo *db_info, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL, - const uudst::kDalTableIndex index = uudst::kDalNumTables); + upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL, + const uudst::kDalTableIndex index = + uudst::kDalNumTables); virtual upll_rc_t BindAttr(DalBindInfo *db_info, ConfigKeyVal *&req, @@ -794,14 +836,14 @@ class MoMgrImpl : public MoManager { DbSubOp dbop, MoMgrTables tbl = MAINTBL); /*const */uudst::kDalTableIndex GetTable(MoMgrTables tbl, - upll_keytype_datatype_t dt_type) { + upll_keytype_datatype_t dt_type) { if (NULL != table[tbl]) return table[tbl]->GetTblIndex(); else return uudst::kDalNumTables; } unc_key_type_t GetMoMgrKeyType(MoMgrTables tbl, - upll_keytype_datatype_t dt_type) { + upll_keytype_datatype_t dt_type) { if (table[tbl]) return table[tbl]->get_key_type(); else @@ -845,14 +887,23 @@ class MoMgrImpl : public MoManager { ntable = 0; child = NULL; nchild = 0; - cur_instance_count = 0; } virtual ~MoMgrImpl() {} - uint32_t cur_instance_count; - /* @brief - allocates a configkeyval with oper status = UNINIT + /** + * @brief Perform Semantic Check to check Different vbridges + * contain same switch-id and vlan-id * - * @param[out] ck_vn Pointer to a configkeyval - * @param[in] ikey null if no key is to be copied + * @param[in] ikey ConfigKeyVal + * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success + **/ + virtual upll_rc_t ValidateAttribute(ConfigKeyVal *kval, DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL) =0; + + /* @brief - allocates a configkeyval with oper status = UNINIT + * + * @param[out] ck_vn Pointer to a configkeyval + * @param[in] ikey null if no key is to be copied * @param[in] dmi Database connection parameter * * @retval UPLL_RC_SUCCESS Completed successfully. @@ -869,13 +920,15 @@ class MoMgrImpl : public MoManager { uint32_t *count, DalDmlIntf *dmi, MoMgrTables tbl); + /** * @brief Duplicates the input configkeyval including the key and val. * based on the tbl specified. * * @param[in] okey Output Configkeyval - allocated within the function * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * @param[in] tbl specifies if the val structure belongs to the main table/ + * controller table or rename table. * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure case. @@ -904,12 +957,12 @@ class MoMgrImpl : public MoManager { * **/ virtual bool FilterAttributes(void *&val1, - void *val2, - bool audit_status, - unc_keytype_operation_t op) { - if (op != UNC_OP_CREATE) - return CompareValidValue(val1, val2, audit_status); - return false; + void *val2, + bool audit_status, + unc_keytype_operation_t op) { + if (op != UNC_OP_CREATE) + return CompareValidValue(val1, val2, audit_status); + return false; } /** * @brief Compares the valid value between two database records. @@ -918,7 +971,8 @@ class MoMgrImpl : public MoManager { * * @param[in/out] val1 first record value instance. * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. + * @param[in] audit if true, CompareValidValue called + * from audit process. * **/ virtual bool CompareValidValue(void *&val1, @@ -928,7 +982,7 @@ class MoMgrImpl : public MoManager { virtual upll_rc_t PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, DalDmlIntf *dmi, upll_keytype_datatype_t dt_type) { - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; } /** * @brief Method to get renamed controller key from unc key. @@ -942,12 +996,13 @@ class MoMgrImpl : public MoManager { * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure case. */ - virtual upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom = NULL) { - return UPLL_RC_SUCCESS; - } + virtual upll_rc_t GetRenamedControllerKey + (ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom = NULL) { + return UPLL_RC_SUCCESS; + } /** * @brief Method to get a configkeyval of a specified keytype from * an input configkeyval @@ -991,6 +1046,7 @@ class MoMgrImpl : public MoManager { DalDmlIntf *dmi, MoMgrTables tbl = MAINTBL); upll_rc_t DeleteChildren(ConfigKeyVal *ikey, + ConfigKeyVal *pkey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, MoMgrTables tbl = MAINTBL); @@ -1018,6 +1074,7 @@ class MoMgrImpl : public MoManager { upll_keytype_datatype_t dest_cfg, upll_keytype_datatype_t src_cfg, DalDmlIntf *dmi, + IpcReqRespHeader *req, MoMgrTables tbl = MAINTBL); upll_rc_t UpdateConfigDB(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, @@ -1053,12 +1110,12 @@ class MoMgrImpl : public MoManager { * */ upll_rc_t SendIpcReq(uint32_t session_id, - uint32_t config_id, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - ConfigKeyVal *&ckv, - controller_domain_t *ctrlr_dom, - IpcResponse *ipc_resp); + uint32_t config_id, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + ConfigKeyVal *&ckv, + controller_domain_t *ctrlr_dom, + IpcResponse *ipc_resp); virtual upll_rc_t EnqueCfgNotification(unc_keytype_operation_t op, upll_keytype_datatype_t dt_type, ConfigKeyVal *ctrlr_key); @@ -1075,7 +1132,8 @@ class MoMgrImpl : public MoManager { /** * @brief Method used to Delete the Values in the specified key type. * - * @param[in] req contains first 8 fields of input request structure + * @param[in] req contains first 8 fields of input + * request structure * @param[in] ikey key and value structure * @param[in] dmi Pointer to DalDmlIntf Class. * @@ -1091,7 +1149,8 @@ class MoMgrImpl : public MoManager { /** * @brief Method used to Update the Values in the specified key type. * - * @param[in] req contains first 8 fields of input request structure + * @param[in] req contains first 8 fields of + * input request structure * @param[in] ikey key and value structure * @param[in] dmi Pointer to DalDmlIntf Class. * @@ -1106,7 +1165,8 @@ class MoMgrImpl : public MoManager { * @brief Method used to Rename the VTN and Vnodes during IMPORT operation * when conflicting with corresponding objects in the UNC. * - * @param[in] req contains first 8 fields of input request structure + * @param[in] req contains first 8 fields of + * input request structure * @param[in] key key and value structure * @param[in] dmi Pointer to DalDmlIntf Class. * @param[in] ctrlr_id Controller Id. @@ -1120,7 +1180,8 @@ class MoMgrImpl : public MoManager { DalDmlIntf *dmi, const char *ctrlr_id); - /* @brief Read the configuration either from RDBMS and/or from the controller + /* @brief Read the configuration either from RDBMS + * and/or from the controller * * @param[in] req Pointer to IpcResResHeader * @param[in/out] ikey Pointer to the ConfigKeyVal Structure @@ -1192,9 +1253,9 @@ class MoMgrImpl : public MoManager { * **/ virtual upll_rc_t ReadInfoFromDB(IpcReqRespHeader *header, - ConfigKeyVal* ikey, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom); + ConfigKeyVal* ikey, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom); /* @brief To control operation on key types * @@ -1212,19 +1273,23 @@ class MoMgrImpl : public MoManager { virtual upll_rc_t ControlMo(IpcReqRespHeader *header, ConfigKeyVal *ikey, DalDmlIntf *dmi) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } virtual upll_rc_t TxVote(unc_key_type_t keytype, DalDmlIntf *dmi, ConfigKeyVal **err_ckv); - virtual upll_rc_t TxVoteCtrlrStatus(unc_key_type_t keytype, - list *ctrlr_vote_status, - DalDmlIntf *dmi); + virtual upll_rc_t TxVoteCtrlrStatus + (unc_key_type_t keytype, + list *ctrlr_vote_status, + DalDmlIntf *dmi); /** - * @brief Update controller with the new created / updated / deleted configuration - * between the Candidate and the Running configuration + * @brief Update controller with the new + * created / updated / + * deleted configuration + * between the Candidate and + * the Running configuration * * @param[in] keytype Specifies the keytype * @param[in] session_id Ipc client session id @@ -1261,7 +1326,8 @@ class MoMgrImpl : public MoManager { } /** - * @brief Method used to Copy the datas from IMPORT to CANDIDATE Datatbase + * @brief Method used to Copy the datas from IMPORT to + * CANDIDATE Datatbase * * @param[in] key_type unc key type. * @param[in] ctrlr_id Controller Id. @@ -1306,14 +1372,15 @@ class MoMgrImpl : public MoManager { * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Instance specified does not exist. * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance specified already exist. */ - virtual upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); - + virtual upll_rc_t AuditUpdateController + (unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected); /** * @brief updates the config status of errored objects returned by the * controller as invalid. @@ -1375,6 +1442,9 @@ class MoMgrImpl : public MoManager { DalDmlIntf *dmi); virtual upll_rc_t CopyRunningToStartup(unc_key_type_t kt, DalDmlIntf *dmi); + virtual upll_rc_t ClearConfiguration(unc_key_type_t kt, + DalDmlIntf *dmi, + upll_keytype_datatype_t cfg_type); virtual upll_rc_t ClearStartup(unc_key_type_t kt, DalDmlIntf *dmi); /* updates both candidate and running from startup */ @@ -1383,7 +1453,8 @@ class MoMgrImpl : public MoManager { virtual upll_rc_t CopyStartupToCandidate(unc_key_type_t kt, DalDmlIntf *dmi); virtual upll_rc_t CopyRunningToCandidate(unc_key_type_t kt, - DalDmlIntf *dmi); + DalDmlIntf *dmi, + unc_keytype_operation_t op); virtual upll_rc_t IsCandidateDirty(unc_key_type_t kt, bool *dirty, DalDmlIntf *dmi); @@ -1413,8 +1484,8 @@ class MoMgrImpl : public MoManager { DalDmlIntf *dmi, const char *ctrlr_id, bool &renamed) { - UPLL_FUNC_TRACE; - return UPLL_RC_ERR_GENERIC; + UPLL_FUNC_TRACE; + return UPLL_RC_ERR_GENERIC; } /** @@ -1428,7 +1499,8 @@ class MoMgrImpl : public MoManager { * new VBridge name into the vlink table. * * - * @param[in] req contains first 8 fields of input request structure* + * @param[in] req contains first 8 fields of + * input request structure* * @param[in] rename_info key and value structure. * @param[in] renamed Flag for Already renamed or not. * @param[in] dmi Pointer to DalDmlIntf Class. @@ -1437,10 +1509,10 @@ class MoMgrImpl : public MoManager { * @retval UPLL_RC_ERR_GENERIC Failure case. */ virtual upll_rc_t UpdateTables(IpcReqRespHeader *req, - ConfigKeyVal *&rename_info, - bool &renamed, - DalDmlIntf *dmi, - bool &no_rename); + ConfigKeyVal *&rename_info, + bool &renamed, + DalDmlIntf *dmi, + bool &no_rename); /** * @brief Method used in rename opertaion while update the new name into the tables @@ -1459,12 +1531,15 @@ class MoMgrImpl : public MoManager { MoMgrTables tbl) = 0; /** - * @brief Method used in rename opertaion while update the new name into the tables. - * This method getting the full key informtion from the Database and Update the + * @brief Method used in rename opertaion while + * update the new name into the tables. + * This method getting the full key informtion + * from the Database and Update the * new name and set the rename flag accordingly. * * Ex - * While renaming the VTN name in VBR_IF, we need the full key to update the + * While renaming the VTN name in VBR_IF, + * we need the full key to update the * VBR_IF table and set the rename flag accordingly. * * @@ -1484,8 +1559,10 @@ class MoMgrImpl : public MoManager { /** - * @brief Method used in rename opertaion while update the new name into the tables. - * Based on the Key type this function will update the new name into the table. + * @brief Method used in rename opertaion while update + * the new name into the tables. + * Based on the Key type this function will update + * the new name into the table. * * @param[in] ikey key and value structure. * @param[in] data_type Database. @@ -1514,7 +1591,8 @@ class MoMgrImpl : public MoManager { /** - * @brief Method used to update the New name for the vnodes which presents in + * @brief Method used to update the New name for the + * vnodes which presents in * the Vlink Table. * * @param[in] rename_info key and value structure. @@ -1563,7 +1641,7 @@ class MoMgrImpl : public MoManager { virtual upll_rc_t CheckVnodeInfo(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } /* @@ -1593,7 +1671,7 @@ class MoMgrImpl : public MoManager { * @retval UPLL_RC_SUCCESS Successful */ virtual upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey) { + ConfigKeyVal *&okey) { return UPLL_RC_ERR_GENERIC; } @@ -1612,7 +1690,7 @@ class MoMgrImpl : public MoManager { * @retval UNC_CS_UNKNOWN State before the exact status of configuration is known. */ unc_keytype_configstatus_t GetConsolidatedCsStatus( - list< unc_keytype_configstatus_t > cs_status); + list< unc_keytype_configstatus_t > cs_status); /** * @brief compute the consolidated configstatus between all the controllers and current controller. @@ -1627,10 +1705,11 @@ class MoMgrImpl : public MoManager { * pertaining to this configuration * @retval UNC_CS_UNKNOWN State before the exact status of configuration is known. */ - unc_keytype_configstatus_t ComputeStatus(unc_keytype_configstatus_t db_status, - unc_keytype_configstatus_t cs_status); + unc_keytype_configstatus_t ComputeStatus + (unc_keytype_configstatus_t db_status, + unc_keytype_configstatus_t cs_status); virtual upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { return UPLL_RC_SUCCESS; } @@ -1652,27 +1731,28 @@ class MoMgrImpl : public MoManager { * */ virtual upll_rc_t UpdateControllerTableForVtn(uint8_t *vtn_name, - controller_domain *ctrlr_dom, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t flag) { + controller_domain *ctrlr_dom, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t flag) { UPLL_FUNC_TRACE - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } - virtual upll_rc_t SetVlinkPortmapConfiguration(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - InterfacePortMapInfo flag, - unc_keytype_operation_t oper) { - return UPLL_RC_ERR_GENERIC; -} + virtual upll_rc_t SetVlinkPortmapConfiguration + (ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + InterfacePortMapInfo flag, + unc_keytype_operation_t oper) { + return UPLL_RC_ERR_GENERIC; + } virtual upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl, - DalDmlIntf* dmi) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl, + DalDmlIntf* dmi) { UPLL_FUNC_TRACE; return UPLL_RC_SUCCESS; } @@ -1680,18 +1760,18 @@ class MoMgrImpl : public MoManager { * @Brief This API is to Dump the local rename's structure. */ void DumpRenameInfo(ConfigKeyVal *ikey); - /** - * @brief returns the controller name from ConfigKeyVal - * - * @param[in] ikey ConfigKeyVal pointer - * - * @retval uint8_t pointer - * @retval NULL if ConfigKeyVal is empty - */ - virtual upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, - controller_domain_t *ctrlr_dom) { - return UPLL_RC_ERR_GENERIC; - } + /** + * @brief returns the controller name from ConfigKeyVal + * + * @param[in] ikey ConfigKeyVal pointer + * + * @retval uint8_t pointer + * @retval NULL if ConfigKeyVal is empty + */ + virtual upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, + controller_domain_t *ctrlr_dom) { + return UPLL_RC_ERR_GENERIC; + } virtual upll_rc_t IsHostAddrAndPrefixLenInUse(ConfigKeyVal *ckv, DalDmlIntf *dmi, IpcReqRespHeader *req) { @@ -1700,16 +1780,16 @@ class MoMgrImpl : public MoManager { virtual upll_rc_t IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, DalDmlIntf *dmi, IpcReqRespHeader *req) { - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; }; virtual upll_rc_t EnableAdminStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; }; virtual upll_rc_t IsAdminStatusEnable(ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; }; virtual upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, @@ -1735,7 +1815,11 @@ class MoMgrImpl : public MoManager { upll_rc_t Getvalstnum(ConfigKeyVal *&ikey, uui::IpctSt::IpcStructNum &struct_num); upll_rc_t Swapvaltokey(ConfigKeyVal *&ikey, - uint8_t rename_flag); + uint8_t rename_flag); + upll_rc_t CheckExistenceInRenameTable(ConfigKeyVal *&req, + upll_keytype_datatype_t dt_type, + unc_key_type_t instance_key_type, + DalDmlIntf *dmi); /** * @brief Method to get a configkeyval of the parent keytype * @@ -1764,27 +1848,51 @@ class MoMgrImpl : public MoManager { upll_keytype_datatype_t dt_type, MoMgrTables tbl = MAINTBL) = 0; + /* VlanmapOnBoundary: Handle all boundary vlanmap request */ + virtual upll_rc_t BoundaryVlanmapReq + (IpcReqRespHeader *req, + ConfigKeyVal *ikey, ConfigKeyVal *db_vlink, + ConfigKeyVal *vlanmap_ckv, DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + + /* @brief Returns portmap information if portmap is valid + * Else returns NULL for portmap + * + * @param[in] ikey Pointer to ConfigKeyVal + * @param[out] valid_pm portmap is valid + * @param[out] pm pointer to portmap informtation if valid_pm + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, + val_port_map_t *&pm, uint8_t &valid_admin, + uint8_t &admin_status) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } }; // class MoMgrImpl } // namespace kt_momgr } // namespace upll } // namespace unc namespace std { - using unc::upll::kt_momgr::key_vnode_t; - template<> - struct less { - bool operator()(const key_vnode_t &keyvnode1, - const key_vnode_t keyvnode2) const { - int ret = strcmp((const char *)keyvnode1.vtn_key.vtn_name, +using unc::upll::kt_momgr::key_vnode_t; +template<> +struct less { + bool operator()(const key_vnode_t &keyvnode1, + const key_vnode_t keyvnode2) const { + int ret = strcmp((const char *)keyvnode1.vtn_key.vtn_name, (const char *)keyvnode2.vtn_key.vtn_name); - if (ret == 0) { - return (strcmp((const char *)keyvnode1.vnode_name, + if (ret == 0) { + return (strcmp((const char *)keyvnode1.vnode_name, (const char*)keyvnode2.vnode_name) < 0); - } else { - return (ret < 0); - } + } else { + return (ret < 0); } - }; -} + } +}; +} // namespace std #endif diff --git a/coordinator/modules/upll/momgr_intf.cc b/coordinator/modules/upll/momgr_intf.cc index 174129fd..527e835c 100644 --- a/coordinator/modules/upll/momgr_intf.cc +++ b/coordinator/modules/upll/momgr_intf.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -40,7 +40,7 @@ bool MoManager::GetMaxInstanceCount(const char *ctrlr_name, unc::capa::CapaIntf *capa = reinterpret_cast( pfc::core::Module::getInstance("capa")); if (capa == NULL) { - pfc_log_fatal("%s:%d: CapaModule is not found", __FUNCTION__, __LINE__); + UPLL_LOG_FATAL("CapaModule is not found"); return false; } @@ -68,9 +68,9 @@ bool MoManager::GetCreateCapability(const char *ctrlr_name, } unc::capa::CapaModule *capa = reinterpret_cast( - pfc::core::Module::getInstance("capa")); + pfc::core::Module::getInstance("capa")); if (capa == NULL) { - pfc_log_fatal("%s:%d: CapaModule is not found", __FUNCTION__, __LINE__); + UPLL_LOG_FATAL("CapaModule is not found"); return false; } @@ -97,9 +97,9 @@ bool MoManager::GetUpdateCapability(const char *ctrlr_name, } unc::capa::CapaModule *capa = reinterpret_cast( - pfc::core::Module::getInstance("capa")); + pfc::core::Module::getInstance("capa")); if (capa == NULL) { - pfc_log_fatal("%s:%d: CapaModule is not found", __FUNCTION__, __LINE__); + UPLL_LOG_FATAL("CapaModule is not found"); return false; } @@ -126,9 +126,9 @@ bool MoManager::GetReadCapability(const char *ctrlr_name, } unc::capa::CapaModule *capa = reinterpret_cast( - pfc::core::Module::getInstance("capa")); + pfc::core::Module::getInstance("capa")); if (capa == NULL) { - pfc_log_fatal("%s:%d: CapaModule is not found", __FUNCTION__, __LINE__); + UPLL_LOG_FATAL("CapaModule is not found"); return false; } @@ -154,9 +154,9 @@ bool MoManager::GetStateCapability(const char *ctrlr_name, } unc::capa::CapaModule *capa = reinterpret_cast( - pfc::core::Module::getInstance("capa")); + pfc::core::Module::getInstance("capa")); if (capa == NULL) { - pfc_log_fatal("CapaModule is not found"); + UPLL_LOG_FATAL("CapaModule is not found"); return false; } diff --git a/coordinator/modules/upll/momgr_intf.hh b/coordinator/modules/upll/momgr_intf.hh index 498e72c5..277fc274 100644 --- a/coordinator/modules/upll/momgr_intf.hh +++ b/coordinator/modules/upll/momgr_intf.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -58,13 +58,13 @@ class MoCfgServiceIntf { public: virtual ~MoCfgServiceIntf() {} virtual upll_rc_t CreateMo(IpcReqRespHeader *req, ConfigKeyVal *key, - DalDmlIntf *dmi) = 0; + DalDmlIntf *dmi) = 0; // domain_id is guaranteed for VTN, for vnode it might be there (driver team // need to confirm), for others it is optional and not present does not mean // no domain id. virtual upll_rc_t CreateImportMo(IpcReqRespHeader *req, ConfigKeyVal *key, - DalDmlIntf *dmi, const char *ctrlr_id, - const char *domain_id) = 0; + DalDmlIntf *dmi, const char *ctrlr_id, + const char *domain_id) = 0; virtual upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *key, DalDmlIntf *dmi) = 0; virtual upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *key, @@ -95,16 +95,22 @@ enum UpdateCtrlrPhase { kUpllUcpDelete2 }; +enum KTxCtrlrAffectedState { + kCtrlrAffectedNoDiff = 0, // There is no diff in UNC and Ctrlr Configuration + kCtrlrAffectedOnlyCSDiff, // No config diff, only diff in the config status + kCtrlrAffectedConfigDiff // There is a diff in the configuration, + // add the controller to affected ctrlr list +}; // Interface class for normal transaction operations class MoTxServiceIntf { public: virtual ~MoTxServiceIntf() {} virtual upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, uint32_t config_id, - UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) = 0; + uint32_t session_id, uint32_t config_id, + UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) = 0; virtual upll_rc_t TxVote(unc_key_type_t keytype, DalDmlIntf *dmi, ConfigKeyVal **err_ckv) = 0; virtual upll_rc_t TxVoteCtrlrStatus( @@ -123,8 +129,8 @@ class MoTxServiceIntf { virtual upll_rc_t TxUpdateDtState(unc_key_type_t ktype, uint32_t session_id, - uint32_t config_id, - DalDmlIntf *dmi) { + uint32_t config_id, + DalDmlIntf *dmi) { UPLL_LOG_DEBUG("kt: %u", ktype); return UPLL_RC_SUCCESS; } @@ -135,13 +141,16 @@ class MoTxServiceIntf { class MoAuditServiceIntf { public: virtual ~MoAuditServiceIntf() {} - virtual upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi) = 0; + virtual upll_rc_t AuditUpdateController + (unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) = 0; + // virtual upll_rc_t AuditVote(const char *ctrlr_id) = 0; virtual upll_rc_t AuditVoteCtrlrStatus(unc_key_type_t keytype, CtrlrVoteStatus *vote_satus, @@ -179,10 +188,13 @@ class MoDbServiceIntf { virtual ~MoDbServiceIntf() {} virtual upll_rc_t CopyRunningToStartup(unc_key_type_t kt, DalDmlIntf *dmi) = 0; + virtual upll_rc_t ClearConfiguration(unc_key_type_t kt, DalDmlIntf *dmi, + upll_keytype_datatype_t cfg_type) = 0; virtual upll_rc_t ClearStartup(unc_key_type_t kt, DalDmlIntf *dmi) = 0; virtual upll_rc_t LoadStartup(unc_key_type_t kt, DalDmlIntf *dmi) = 0; virtual upll_rc_t CopyRunningToCandidate(unc_key_type_t kt, - DalDmlIntf *dmi) = 0; + DalDmlIntf *dmi, + unc_keytype_operation_t op) = 0; virtual upll_rc_t IsCandidateDirty(unc_key_type_t kt, bool *dirty, DalDmlIntf *dmi) = 0; }; @@ -190,140 +202,147 @@ class MoDbServiceIntf { class MoManager : public MoCfgServiceIntf, public MoTxServiceIntf, public MoAuditServiceIntf, public MoImportServiceIntf, public MoDbServiceIntf { - public: - static const uint32_t kMaxReadBulkCount = 10000; + public: + static const uint32_t kMaxReadBulkCount = 10000; - virtual ~MoManager() {} + virtual ~MoManager() {} - const MoManager *GetMoManager(unc_key_type_t kt); - // virtual void UpplNotificationHandler(pfc_event_t event, pfc_ptr_t arg); - // virtual void DriverNotificationHandler(pfc_event_t event, pfc_ptr_t arg); - virtual upll_rc_t IsKeyInUse(upll_keytype_datatype_t datatype, - const ConfigKeyVal *ckv, bool *in_use, - DalDmlIntf *dmi) { - *in_use = true; - return UPLL_RC_ERR_GENERIC; - } + const MoManager *GetMoManager(unc_key_type_t kt); + // virtual void UpplNotificationHandler(pfc_event_t event, pfc_ptr_t arg); + // virtual void DriverNotificationHandler(pfc_event_t event, + // pfc_ptr_t arg); + virtual upll_rc_t IsKeyInUse(upll_keytype_datatype_t datatype, + const ConfigKeyVal *ckv, bool *in_use, + DalDmlIntf *dmi) { + *in_use = true; + return UPLL_RC_ERR_GENERIC; + } - /** - * @brief Method to get a configkeyval of a specified keytype from - * an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from - * which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - virtual upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) = 0; + /** + * @brief Method to get a configkeyval of a specified keytype from + * an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from + * which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + virtual upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key) = 0; - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - virtual upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) = 0; - // Capabiltiy functions - /** - * @brief Return instance count of specified key type. - * - * @param[in] ctrlr_name controller name. - * @param[in] keytype key type - * @param[out] instance_count Max instance count for specified keytype. - * @param[in] datatype Datatype. default is CANDIDATE - * - * @retval true Successful - * @retval false controller/keytype is not found - */ - virtual bool GetMaxInstanceCount(const char *ctrlr_name, - unc_key_type_t keytype, - uint32_t &instance_count, - upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE); - /** - * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * - * @param[in] ctrlr_name controller name. - * @param[in] version controller version - * @param[in] keytype Key type. - * @param[out] instance_count Instance count for specified keytype. - * @param[in] num_attrs Maximum attribute for specified key type - * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * @param[in] datatype Datatype. default is CANDIDATE - * - * @retval true Successful - * @retval false controller or keytype is not found - */ - virtual bool GetCreateCapability(const char *ctrlr_name, - unc_key_type_t keytype, - uint32_t *instnace_count, - uint32_t *num_attrs, - const uint8_t **attrs, - upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE); - /** - * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * - * @param[in] ctrlr_type controller type. - * @param[in] keytype Key type. - * @param[in] num_attrs Maximum attribute for specified key type - * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * @param[in] datatype Datatype. default is CANDIDATE - * - * @retval true Successful - * @retval false controler or keytype is not found - */ - virtual bool GetUpdateCapability(const char *ctrlr_name, - unc_key_type_t keytype, - uint32_t *num_attrs, - const uint8_t **attrs, - upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE); - /** - * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * - * @param[in] ctrlr_name controller name. - * @param[in] keytype Key type. - * @param[in] num_attrs Maximum attribute for specified key type - * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * @param[in] datatype Datatype. default is CANDIDATE - * - * @retval true Successful - * @retval false controller or keytype is not found - */ - virtual bool GetReadCapability(const char *ctrlr_name, - unc_key_type_t keytype, - uint32_t *num_attrs, - const uint8_t **attrs, - upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE); - /** - * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. - * - * @param[in] ctrlr_name controller name. - * @param[in] keytype Key type. - * @param[in] num_attrs Maximum attribute for specified key type - * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information - * @param[in] datatype Datatype. default is CANDIDATE - * - * @retval true Successful - * @retval false controller or keytype is not found - */ - virtual bool GetStateCapability(const char *ctrlr_name, - unc_key_type_t keytype, - uint32_t *num_attrs, - const uint8_t **attrs, - upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE); - private: - static bool GetCtrlrTypeAndVersion(const char *ctrlr_name, - upll_keytype_datatype_t datatype, - unc_keytype_ctrtype_t *ctrlr_type, - std::string *version); -}; + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + virtual upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey) = 0; + // Capabiltiy functions + /** + * @brief Return instance count of specified key type. + * + * @param[in] ctrlr_name controller name. + * @param[in] keytype key type + * @param[out] instance_count Max instance count for specified keytype. + * @param[in] datatype Datatype. default is CANDIDATE + * + * @retval true Successful + * @retval false controller/keytype is not found + */ + virtual bool GetMaxInstanceCount(const char *ctrlr_name, + unc_key_type_t keytype, + uint32_t &instance_count, + upll_keytype_datatype_t datatype = + UPLL_DT_CANDIDATE); + /** + * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of + * specified key type. + * + * @param[in] ctrlr_name controller name. + * @param[in] version controller version + * @param[in] keytype Key type. + * @param[out] instance_count Instance count for specified keytype. + * @param[in] num_attrs Maximum attribute for specified key type + * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information + * @param[in] datatype Datatype. default is CANDIDATE + * + * @retval true Successful + * @retval false controller or keytype is not found + */ + virtual bool GetCreateCapability(const char *ctrlr_name, + unc_key_type_t keytype, + uint32_t *instnace_count, + uint32_t *num_attrs, + const uint8_t **attrs, + upll_keytype_datatype_t datatype = + UPLL_DT_CANDIDATE); + /** + * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. + * + * @param[in] ctrlr_type controller type. + * @param[in] keytype Key type. + * @param[in] num_attrs Maximum attribute for specified key type + * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information + * @param[in] datatype Datatype. default is CANDIDATE + * + * @retval true Successful + * @retval false controler or keytype is not found + */ + virtual bool GetUpdateCapability(const char *ctrlr_name, + unc_key_type_t keytype, + uint32_t *num_attrs, + const uint8_t **attrs, + upll_keytype_datatype_t datatype = + UPLL_DT_CANDIDATE); + /** + * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. + * + * @param[in] ctrlr_name controller name. + * @param[in] keytype Key type. + * @param[in] num_attrs Maximum attribute for specified key type + * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information + * @param[in] datatype Datatype. default is CANDIDATE + * + * @retval true Successful + * @retval false controller or keytype is not found + */ + virtual bool GetReadCapability(const char *ctrlr_name, + unc_key_type_t keytype, + uint32_t *num_attrs, + const uint8_t **attrs, + upll_keytype_datatype_t datatype = + UPLL_DT_CANDIDATE); + /** + * @brief Return Attribute SUPPORTED or NOT_SUPPORTED of specified key type. + * + * @param[in] ctrlr_name controller name. + * @param[in] keytype Key type. + * @param[in] num_attrs Maximum attribute for specified key type + * @param[out] attrs Array of SUPPORTED and NOT_SUPPORTED information + * @param[in] datatype Datatype. default is CANDIDATE + * + * @retval true Successful + * @retval false controller or keytype is not found + */ + virtual bool GetStateCapability(const char *ctrlr_name, + unc_key_type_t keytype, + uint32_t *num_attrs, + const uint8_t **attrs, + upll_keytype_datatype_t datatype = + UPLL_DT_CANDIDATE); + private: + static bool GetCtrlrTypeAndVersion(const char *ctrlr_name, + upll_keytype_datatype_t datatype, + unc_keytype_ctrtype_t *ctrlr_type, + std::string *version); + }; } // namespace config_momgr } // namespace upll diff --git a/coordinator/modules/upll/momgr_util.cc b/coordinator/modules/upll/momgr_util.cc index 27f41800..981e0d72 100644 --- a/coordinator/modules/upll/momgr_util.cc +++ b/coordinator/modules/upll/momgr_util.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -55,7 +55,11 @@ upll_rc_t MoMgrImpl::GetInstanceCount(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } result_code = DalToUpllResCode( - dmi->GetRecordCount((dt_type == UPLL_DT_STATE)?UPLL_DT_RUNNING:dt_type, tbl_index, dal_bind_info, count)); + dmi->GetRecordCount(( + dt_type == UPLL_DT_STATE)?UPLL_DT_RUNNING:dt_type, + tbl_index, + dal_bind_info, + count)); delete dal_bind_info; return result_code; } @@ -66,7 +70,7 @@ upll_rc_t MoMgrImpl::IsRenamed(ConfigKeyVal *ikey, uint8_t &rename) { UPLL_FUNC_TRACE; DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; ConfigKeyVal *okey = NULL; upll_rc_t result_code; MoMgrTables tbl = MAINTBL; @@ -74,15 +78,15 @@ upll_rc_t MoMgrImpl::IsRenamed(ConfigKeyVal *ikey, * operaton is delete and ikey has to be populated with * val from db. */ - if (rename && - ((dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_AUDIT))) { + if (rename && + ((dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_AUDIT))) { okey = ikey; } else { result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Returning error %d",result_code); - return result_code; + UPLL_LOG_TRACE("Returning error %d", result_code); + return result_code; } } @@ -95,29 +99,29 @@ upll_rc_t MoMgrImpl::IsRenamed(ConfigKeyVal *ikey, * match and get the exact information from vtn controller * table */ - if (ctrlr_dom.ctrlr != NULL && ctrlr_dom.domain != NULL) { - dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; - dbop.inoutop = kOpInOutFlag; - } - tbl = CTRLRTBL; + if (ctrlr_dom.ctrlr != NULL && ctrlr_dom.domain != NULL) { + dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; + dbop.inoutop = kOpInOutFlag; + } + tbl = CTRLRTBL; } result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - tbl); + tbl); if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Returning error code %d",result_code); + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("Returning error code %d", result_code); if (okey != ikey) delete okey; return UPLL_RC_ERR_GENERIC; } if (okey != ikey) - SET_USER_DATA(ikey,okey); + SET_USER_DATA(ikey, okey); GET_USER_DATA_FLAGS(okey, rename); #if 0 rename &= RENAME; #else - GET_RENAME_FLAG(rename,ikey->get_key_type()) + GET_RENAME_FLAG(rename, ikey->get_key_type()) #endif - if (okey != ikey) delete okey; + if (okey != ikey) delete okey; return UPLL_RC_SUCCESS; } @@ -136,29 +140,43 @@ upll_rc_t MoMgrImpl::RenameChildren(ConfigKeyVal *ikey, for (int i = 0; i < nchild; i++) { unc_key_type_t ktype = child[i]; MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(ktype))); + (const_cast(GetMoManager(ktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; } // cout << *ikey << ktype << " " << mgr << "\n"; - mgr->GetChildConfigKey(tkey, ikey); + result_code = mgr->GetChildConfigKey(tkey, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); + return result_code; + } // cout << "Renaming keytype " << ktype << " " << *tkey << "\n"; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - result_code = mgr->ReadConfigDB(tkey, dt_type, UNC_OP_READ, dbop, dmi, tbl); + result_code = mgr->ReadConfigDB(tkey, + dt_type, + UNC_OP_READ, + dbop, + dmi, + tbl); ConfigKeyVal *tmp = tkey; while (tmp != NULL) { - uint8_t child_rename=0; + uint8_t child_rename = 0; GET_USER_DATA_FLAGS(tmp, child_rename); child_rename &= RENAME; if (child_rename == rename) continue; rename &= RENAME; SET_USER_DATA_FLAGS(tmp, rename); - result_code = mgr->UpdateConfigDB(tkey, dt_type, UNC_OP_UPDATE, dmi, tbl); + result_code = mgr->UpdateConfigDB(tkey, + dt_type, + UNC_OP_UPDATE, + dmi, + tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed with error code %d", - result_code); - return result_code; + UPLL_LOG_DEBUG("UpdateConfigDB failed with error code %d", + result_code); + DELETE_IF_NOT_NULL(tkey); + return result_code; } tmp = tmp->get_next_cfg_key_val(); } @@ -174,57 +192,62 @@ upll_rc_t MoMgrImpl::RenameChildren(ConfigKeyVal *ikey, } upll_rc_t MoMgrImpl::DeleteChildren(ConfigKeyVal *ikey, + ConfigKeyVal *pkey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, MoMgrTables tbl) { UPLL_FUNC_TRACE; - ConfigKeyVal *tkey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; bool fail = false; + unc_key_type_t ktype; - for (int i = 0; i < nchild; i++) { - unc_key_type_t ktype = child[i]; + for (int i = nchild; i > 0; i--) { + ConfigKeyVal *tkey = NULL; + ktype = child[(i - 1)]; MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(ktype))); + (const_cast(GetMoManager(ktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr %d", ktype); continue; } - bool kt_flag = false; - IS_POM_KT(ktype, kt_flag); - if (kt_flag) { - mgr->DeleteChildrenPOM(ikey, dt_type, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DeleteChildrenPOM failed %d", result_code); - return result_code; - } + result_code = mgr->GetChildConfigKey(tkey, pkey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); + return result_code; } - mgr->GetChildConfigKey(tkey, ikey); /* For deleting the vnode rename table for the vtn or vnode * need no to match the controller and domain */ memset(tkey->get_user_data(), 0 , sizeof(key_user_data_t)); - result_code = mgr->DeleteChildren(tkey, dt_type, dmi); + result_code = mgr->DeleteChildren(tkey, pkey, dt_type, dmi); + DELETE_IF_NOT_NULL(tkey); + } + bool kt_flag = false; + IS_POM_KT(GetMoMgrKeyType(MAINTBL, dt_type), kt_flag); + if (kt_flag) { + result_code = DeleteChildrenPOM(ikey, dt_type, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DeleteChildrenPOM failed %d", result_code); + return result_code; + } + } else { /* Delete all the tables for this momgr * RENAMETBL to be deleted only once */ - for (int j = 0; j < mgr->get_ntable(); j++) { - if ((mgr == NULL) || - (mgr->GetTable((MoMgrTables)j, dt_type) >= uudst::kDalNumTables)) { + for (int j = get_ntable(); j > MAINTBL; j--) { + if ((GetTable((MoMgrTables)(j - 1), dt_type) >= uudst::kDalNumTables)) { continue; } /* Match Controller and domain is not need for delete children*/ DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; - result_code = mgr->UpdateConfigDB(tkey, dt_type, UNC_OP_DELETE, dmi, &dbop, - (MoMgrTables) j); + result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_DELETE, dmi, &dbop, + (MoMgrTables)(j - 1)); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS : result_code; + UPLL_RC_SUCCESS : result_code; if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DeleteChild failed with result_code %d", result_code); fail = true; } } - delete tkey; - tkey = NULL; } return ((fail == true) ? UPLL_RC_ERR_GENERIC : UPLL_RC_SUCCESS); } @@ -233,96 +256,68 @@ upll_rc_t MoMgrImpl::RestoreChildren(ConfigKeyVal *&ikey, upll_keytype_datatype_t dest_cfg, upll_keytype_datatype_t src_cfg, DalDmlIntf *dmi, + IpcReqRespHeader *req, MoMgrTables tbl) { UPLL_FUNC_TRACE; ConfigKeyVal *tkey = NULL; + ConfigKeyVal *start_ptr = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; - bool fail = false; + bool restore_flag = true; + int index = MAINTBL; int i = 0; - MoMgrImpl *chld_mgr = NULL; - unc_key_type_t chld_ktype = (unc_key_type_t)0; while (true) { unc_key_type_t ktype = (unc_key_type_t)0; + unc_key_type_t instance_key_type = GetMoMgrKeyType(tbl, src_cfg); - if (GetMoMgrKeyType(tbl, src_cfg) == ikey->get_key_type()) { - ktype = ikey->get_key_type(); + result_code = GetChildConfigKey(tkey, ikey); + if (UPLL_RC_SUCCESS != result_code) { + return result_code; } - for (int index = MAINTBL; index < MAX_MOMGR_TBLS; index++) { - if (table[index] == NULL) - continue; - result_code = GetChildConfigKey(tkey, ikey); - - if (UPLL_RC_SUCCESS != result_code) { - return result_code; - } + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(tkey, + src_cfg, + UNC_OP_READ, + dbop, + dmi, + (MoMgrTables)index); + if (UPLL_RC_SUCCESS != result_code + && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed"); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; - result_code = ReadConfigDB(tkey, src_cfg, UNC_OP_READ, dbop, dmi, (MoMgrTables)index); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + DELETE_IF_NOT_NULL(tkey); + return result_code; + } - if (UPLL_RC_SUCCESS != result_code - && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("GetControllerDomainId Failed"); - DELETE_IF_NOT_NULL(tkey); + start_ptr = tkey; + while (tkey != NULL) { + result_code = CreateCandidateMo(req, tkey, dmi, restore_flag); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("CreateCandidateMo failed with error code %d\n", + result_code); + DELETE_IF_NOT_NULL(start_ptr); return result_code; } - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - DELETE_IF_NOT_NULL(tkey); - continue; - } - ConfigKeyVal *tmp1 = tkey; - while (tkey != NULL) { - ConfigKeyVal *tmp = NULL; - result_code = DupConfigKeyVal(tmp, tkey, (MoMgrTables)index); - SET_USER_DATA(tmp, tkey); - - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DupConfiKeyVal Failed"); - } - chld_ktype = tmp->get_key_type(); - dbop.readop = kOpNotRead; - result_code = UpdateConfigDB(tmp, dest_cfg, UNC_OP_CREATE, dmi, &dbop, (MoMgrTables)index); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed with error code %d", - result_code); - DELETE_IF_NOT_NULL(tmp); - return result_code; - } - if ((chld_ktype == UNC_KT_VTN_FLOWFILTER_ENTRY) || - (chld_ktype == UNC_KT_VBR_FLOWFILTER_ENTRY) || - (chld_ktype == UNC_KT_VBRIF_FLOWFILTER_ENTRY) || - (chld_ktype == UNC_KT_VRTIF_FLOWFILTER_ENTRY) || - (chld_ktype == UNC_KT_VTN_POLICINGMAP) || - (chld_ktype == UNC_KT_VBR_POLICINGMAP) || - (chld_ktype == UNC_KT_VBRIF_POLICINGMAP)) { - chld_mgr = reinterpret_cast - (const_cast(GetMoManager(chld_ktype))); - if (!chld_mgr) { - UPLL_LOG_DEBUG("Invalid mgr"); - DELETE_IF_NOT_NULL(tmp); - return UPLL_RC_ERR_GENERIC; - } - - result_code = chld_mgr->RestorePOMInCtrlTbl(tmp, - dest_cfg, - (MoMgrTables)index, - dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Err in restoring POM Obj in Ctrltbl, err %d, kt%d", - result_code, chld_ktype); - DELETE_IF_NOT_NULL(tmp); - return result_code; - } - chld_mgr = NULL; - } - tkey = tkey->get_next_cfg_key_val(); - DELETE_IF_NOT_NULL(tmp); + result_code = CheckExistenceInRenameTable(ikey, + src_cfg, + instance_key_type, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("CheckExistenceInRenameTable failed with err code %d\n", + result_code); + DELETE_IF_NOT_NULL(start_ptr); + return result_code; } - DELETE_IF_NOT_NULL(tmp1); + tkey = tkey->get_next_cfg_key_val(); } + DELETE_IF_NOT_NULL(start_ptr); if (nchild == 0) { return UPLL_RC_SUCCESS; @@ -331,27 +326,202 @@ upll_rc_t MoMgrImpl::RestoreChildren(ConfigKeyVal *&ikey, while (true) { ktype = child[i]; chld_mgr = reinterpret_cast - (const_cast(GetMoManager(ktype))); + (const_cast(GetMoManager(ktype))); if (!chld_mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; } - result_code = chld_mgr->RestoreChildren(ikey, dest_cfg, src_cfg, dmi); + result_code = chld_mgr->RestoreChildren(ikey, + dest_cfg, + src_cfg, + dmi, + req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restored failed with error code %d", result_code); - fail = true; - break; + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("Restored failed with error code %d\n", result_code); + return UPLL_RC_ERR_GENERIC; } if ((nchild-1) <= i) return UPLL_RC_SUCCESS; i++; } - break; } - return ((fail == true) ? UPLL_RC_ERR_GENERIC : UPLL_RC_SUCCESS); +} + +upll_rc_t MoMgrImpl::CheckExistenceInRenameTable( + ConfigKeyVal *&req, + upll_keytype_datatype_t dt_type, + unc_key_type_t instance_key_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *tkey = NULL; + ConfigKeyVal *ctrl_key = NULL; + MoMgrImpl *vtn_mgr = NULL; + if ((instance_key_type == UNC_KT_VBRIDGE) || + (instance_key_type == UNC_KT_VROUTER)) { + result_code = GetChildConfigKey(tkey, req); + if (UPLL_RC_SUCCESS != result_code) { + return result_code; + } + result_code = GetParentConfigKey(ctrl_key, tkey); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(tkey); + UPLL_LOG_DEBUG("GetParentConfigKey Failed %d", result_code); + return result_code; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, + kOpInOutCtrlr | kOpInOutDomain }; + vtn_mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VTN))); + if (!vtn_mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + DELETE_IF_NOT_NULL(ctrl_key); + DELETE_IF_NOT_NULL(tkey); + return UPLL_RC_ERR_GENERIC; + } + result_code = vtn_mgr->ReadConfigDB(ctrl_key, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi , + (MoMgrTables)RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB Failed in candidateDB %d", result_code); + DELETE_IF_NOT_NULL(ctrl_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + if ((UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)) { + result_code = vtn_mgr->ReadConfigDB(ctrl_key, dt_type, UNC_OP_READ, + dbop, dmi , (MoMgrTables)RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB Failed in RunningDB %d", result_code); + DELETE_IF_NOT_NULL(ctrl_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + val_rename_vtn *ival = reinterpret_cast + (GetVal(ctrl_key)); + if (ival == NULL) { + UPLL_LOG_DEBUG("Null Val structure"); + DELETE_IF_NOT_NULL(ctrl_key); + DELETE_IF_NOT_NULL(tkey); + return UPLL_RC_ERR_GENERIC; + } + ival->valid[0] = UNC_VF_VALID; + dbop.readop = kOpNotRead; + result_code = vtn_mgr->UpdateConfigDB(ctrl_key, + UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + dmi, + &dbop, + (MoMgrTables)RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("UpdateConfigDB failed with error code %d\n", + result_code); + DELETE_IF_NOT_NULL(ctrl_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + } + } + DELETE_IF_NOT_NULL(ctrl_key); + DbSubOp dboper = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, + kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(tkey, + dt_type, + UNC_OP_READ, + dboper, + dmi, + (MoMgrTables)RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB Failed"); + DELETE_IF_NOT_NULL(ctrl_key); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + val_rename_vnode *ival = reinterpret_cast + (GetVal(tkey)); + if (ival == NULL) { + UPLL_LOG_DEBUG("Null Val structure"); + DELETE_IF_NOT_NULL(ctrl_key); + DELETE_IF_NOT_NULL(tkey); + return UPLL_RC_ERR_GENERIC; + } + ival->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; + ival->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; + dboper.readop = kOpNotRead; + result_code = UpdateConfigDB(tkey, + UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + dmi, + &dboper, + (MoMgrTables)RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB failed with error code %d\n", + result_code); + DELETE_IF_NOT_NULL(tkey); + DELETE_IF_NOT_NULL(ctrl_key); + return result_code; + } + } + } + + if ((instance_key_type == UNC_KT_FLOWLIST) || + (instance_key_type == UNC_KT_POLICING_PROFILE)) { + result_code = GetChildConfigKey(tkey, req); + if (UPLL_RC_SUCCESS != result_code) { + return result_code; + } + DbSubOp dboper = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, + kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(tkey, + dt_type, + UNC_OP_READ, + dboper, + dmi, + (MoMgrTables)RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB Failed"); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + val_rename_flowlist *ival = reinterpret_cast + (GetVal(tkey)); + if (ival == NULL) { + UPLL_LOG_DEBUG("Null Val structure"); + DELETE_IF_NOT_NULL(tkey); + return UPLL_RC_ERR_GENERIC; + } + ival->valid[0] = UNC_VF_VALID; + dboper.readop = kOpNotRead; + result_code = UpdateConfigDB(tkey, + UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + dmi, + &dboper, + (MoMgrTables)RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB failed with error code %d\n", + result_code); + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + } + } + DELETE_IF_NOT_NULL(tkey); + return UPLL_RC_SUCCESS; } upll_rc_t MoMgrImpl::DiffConfigDB(upll_keytype_datatype_t dt_cfg1, @@ -367,9 +537,6 @@ upll_rc_t MoMgrImpl::DiffConfigDB(upll_keytype_datatype_t dt_cfg1, upll_rc_t result_code; result_code = DiffConfigDB(dt_cfg1, dt_cfg2, op, req, nreq, cfg1_cursor, dmi, NULL, tbl); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - return UPLL_RC_SUCCESS; - return result_code; } @@ -398,16 +565,16 @@ upll_rc_t MoMgrImpl::DiffConfigDB(upll_keytype_datatype_t dt_cfg1, return result_code; } DbSubOp dbop = { kOpReadDiff, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; if (UNC_OP_DELETE == op) - dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; + dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; uint16_t max_record_count = 0; - #if 0 +#if 0 if (ctrlr_id) { dbop.inoutop &= ~kOpInOutCtrlr; SET_USER_DATA_CTRLR(req, ctrlr_id) } - #endif +#endif if (tbl == CTRLRTBL) { dbop.inoutop |= kOpInOutCs; } @@ -420,13 +587,16 @@ upll_rc_t MoMgrImpl::DiffConfigDB(upll_keytype_datatype_t dt_cfg1, if (read_withcs) dbop.inoutop |= kOpInOutCs; } - if (dt_cfg2 == UPLL_DT_AUDIT) dbop.matchop |= kOpMatchCs; + if (dt_cfg2 == UPLL_DT_AUDIT) { + dbop.matchop |= kOpMatchCs; + dbop.matchop &= ~kOpMatchFlag; + } DalBindInfo *binfo_cfg1 = new DalBindInfo(tbl_index); result_code = BindAttr(binfo_cfg1, req, UNC_OP_READ, dt_cfg1, dbop, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error from BindAttr for table(%d)", tbl_index); delete binfo_cfg1; - delete req; + DELETE_IF_NOT_NULL(req); req = NULL; return result_code; } @@ -453,7 +623,9 @@ upll_rc_t MoMgrImpl::DiffConfigDB(upll_keytype_datatype_t dt_cfg1, req = NULL; return result_code; } - result_code = BindAttr(binfo_cfg2, nreq, UNC_OP_READ,((dt_cfg2 == UPLL_DT_RUNNING)?UPLL_DT_STATE:dt_cfg2), dbop, tbl); + result_code = BindAttr( + binfo_cfg2, nreq, UNC_OP_READ, + ((dt_cfg2 == UPLL_DT_RUNNING)?UPLL_DT_STATE:dt_cfg2), dbop, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error from BindAttr for table(%d)", tbl_index); delete binfo_cfg1; @@ -509,7 +681,7 @@ upll_rc_t MoMgrImpl::ReadConfigDB(ConfigKeyVal *ikey, UPLL_LOG_DEBUG(" Invalid Table index - %d", tbl_index); return UPLL_RC_ERR_GENERIC; } - DalCursor *dal_cursor_handle; + DalCursor *dal_cursor_handle = NULL; UPLL_LOG_TRACE("tbl_index is %d", tbl_index); if (!READ_OP(op)) { UPLL_LOG_INFO("Exiting MoMgrImpl::ReadConfigDB"); @@ -537,7 +709,7 @@ upll_rc_t MoMgrImpl::ReadConfigDB(ConfigKeyVal *ikey, &sibling_count); uint32_t *sib_count = reinterpret_cast(ConfigKeyVal::Malloc - (sizeof(uint32_t))); + (sizeof(uint32_t))); *sib_count = sibling_count; ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStUint32, sib_count)); } @@ -555,18 +727,22 @@ upll_rc_t MoMgrImpl::ReadConfigDB(ConfigKeyVal *ikey, break; case UNC_OP_READ: if (dbop.readop & kOpReadMultiple) { - db_result = dmi->GetMultipleRecords(dt_type, tbl_index, - sibling_count, dal_bind_info, &dal_cursor_handle); + db_result = dmi->GetMultipleRecords(dt_type, + tbl_index, + sibling_count, + dal_bind_info, + &dal_cursor_handle); } else { db_result = dmi->GetSingleRecord(dt_type, tbl_index, dal_bind_info); } break; default: + DELETE_IF_NOT_NULL(dal_bind_info); return UPLL_RC_ERR_GENERIC; } result_code = DalToUpllResCode(db_result); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning %d",result_code); + UPLL_LOG_DEBUG("Returning %d", result_code); delete dal_bind_info; return result_code; } @@ -579,9 +755,9 @@ upll_rc_t MoMgrImpl::ReadConfigDB(ConfigKeyVal *ikey, result_code = DalToUpllResCode(db_result); if (result_code != UPLL_RC_SUCCESS) { if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - count = (op == UNC_OP_READ)?nrec_read:count; - result_code = (count) ? UPLL_RC_SUCCESS : result_code; - sibling_count = count; + count = (op == UNC_OP_READ)?nrec_read:count; + result_code = (count) ? UPLL_RC_SUCCESS : result_code; + sibling_count = count; } break; } @@ -589,15 +765,15 @@ upll_rc_t MoMgrImpl::ReadConfigDB(ConfigKeyVal *ikey, tkey = NULL; result_code = DupConfigKeyVal(tkey, ikey, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Dup failed error %d",result_code); - delete dal_bind_info; - DELETE_IF_NOT_NULL(end_resp); - return result_code; + UPLL_LOG_DEBUG("Dup failed error %d", result_code); + delete dal_bind_info; + DELETE_IF_NOT_NULL(end_resp); + return result_code; } if (!end_resp) - end_resp = tkey; + end_resp = tkey; else { - prev_key->AppendCfgKeyVal(tkey); + prev_key->AppendCfgKeyVal(tkey); } if (op != UNC_OP_READ) count++; else nrec_read++; } @@ -605,8 +781,7 @@ upll_rc_t MoMgrImpl::ReadConfigDB(ConfigKeyVal *ikey, if (end_resp) ikey->ResetWith(end_resp); UPLL_LOG_DEBUG(" sibling_count %d count %d operation %d response %s", - sibling_count, count, op, (ikey->ToStrAll()).c_str()); - + sibling_count, count, op, (ikey->ToStrAll()).c_str()); } dmi->CloseCursor(dal_cursor_handle); DELETE_IF_NOT_NULL(end_resp); @@ -643,24 +818,27 @@ upll_rc_t MoMgrImpl::UpdateConfigDB(ConfigKeyVal *ikey, DalBindInfo *dal_bind_info = new DalBindInfo(tbl_index); upll_rc_t result_code; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; if (pdbop == NULL) { if (op == UNC_OP_DELETE) dbop.inoutop = kOpInOutNone; if (op != UNC_OP_CREATE) { if ((tbl == RENAMETBL) || (tbl == CTRLRTBL)) { dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; dbop.inoutop = kOpInOutFlag | kOpInOutCs; - } + } if (op == UNC_OP_UPDATE) { if (dt_type == UPLL_DT_CANDIDATE) { dbop.inoutop = kOpInOutCs; } else if (dt_type == UPLL_DT_RUNNING) { dbop.inoutop |= kOpInOutCs; + } else if (dt_type == UPLL_DT_AUDIT) { + dbop.inoutop = kOpInOutFlag; } } } else { if (dt_type != UPLL_DT_CANDIDATE || tbl == CTRLRTBL) - dbop.inoutop |= kOpInOutCs; + if (dt_type != UPLL_DT_AUDIT) + dbop.inoutop |= kOpInOutCs; } pdbop = &dbop; } @@ -672,33 +850,37 @@ upll_rc_t MoMgrImpl::UpdateConfigDB(ConfigKeyVal *ikey, dt_type = (dt_type == UPLL_DT_STATE) ? UPLL_DT_RUNNING : dt_type; switch (op) { case UNC_OP_CREATE: - UPLL_LOG_TRACE("Dbop %s dt_type %d CREATE %d", (ikey->ToStrAll()).c_str(), dt_type, - tbl_index); + UPLL_LOG_TRACE("Dbop %s dt_type %d CREATE %d", + (ikey->ToStrAll()).c_str(), dt_type, + tbl_index); result_code = DalToUpllResCode( dmi->CreateRecord(dt_type, tbl_index, dal_bind_info)); break; case UNC_OP_DELETE: - UPLL_LOG_TRACE("Dbop %s dt_type %d DELETE %d", (ikey->ToStrAll()).c_str(), dt_type, - tbl_index); + UPLL_LOG_TRACE("Dbop %s dt_type %d DELETE %d", + (ikey->ToStrAll()).c_str(), dt_type, + tbl_index); result_code = DalToUpllResCode( dmi->DeleteRecords(dt_type, tbl_index, dal_bind_info)); break; case UNC_OP_UPDATE: - UPLL_LOG_TRACE("Dbop %s dt_type %d UPD %d", (ikey->ToStrAll()).c_str(), dt_type, - tbl_index); + UPLL_LOG_TRACE("Dbop %s dt_type %d UPD %d", + (ikey->ToStrAll()).c_str(), dt_type, + tbl_index); result_code = DalToUpllResCode( dmi->UpdateRecords(dt_type, tbl_index, dal_bind_info)); break; case UNC_OP_READ: - UPLL_LOG_TRACE("Dbop %s dt_type %d EXISTS %d", (ikey->ToStrAll()).c_str(), dt_type, - tbl_index); + UPLL_LOG_TRACE("Dbop %s dt_type %d EXISTS %d", + (ikey->ToStrAll()).c_str(), dt_type, + tbl_index); result_code = DalToUpllResCode( dmi->RecordExists(dt_type, tbl_index, dal_bind_info, &exists)); if (result_code == UPLL_RC_SUCCESS) { if (exists) - result_code = UPLL_RC_ERR_INSTANCE_EXISTS; + result_code = UPLL_RC_ERR_INSTANCE_EXISTS; else - result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } break; default: @@ -730,7 +912,9 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, UPLL_LOG_DEBUG("NULL input parameters"); return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_TRACE("Valid Falg is true ConfigKeyVal %s", (req->ToStrAll()).c_str());//COV: FORWARD NULL + UPLL_LOG_TRACE("Valid Falg is true ConfigKeyVal %s", + (req->ToStrAll()).c_str()); + // COV: FORWARD NULL if (!GetBindInfo(tbl, dt_type, binfo, nattr)) return UPLL_RC_ERR_GENERIC; tuser_data = reinterpret_cast(req->get_user_data()); switch (op) { @@ -743,15 +927,15 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, AllocVal(ck_val, dt_type, tbl); if (!ck_val) return UPLL_RC_ERR_GENERIC; req->AppendCfgVal(ck_val); - } else if ((dt_type == UPLL_DT_STATE) && + } else if ((dt_type == UPLL_DT_STATE) && (ck_val->get_next_cfg_val() == NULL) && tbl != RENAMETBL) { ConfigVal *ck_val1 = NULL; AllocVal(ck_val1, dt_type, tbl); const pfc_ipcstdef_t *st_def = IpctSt::GetIpcStdef( - ck_val->get_st_num()); + ck_val->get_st_num()); if (st_def) { - memcpy(ck_val1->get_val(),ck_val->get_val(),st_def->ist_size); - req->SetCfgVal(ck_val1); + memcpy(ck_val1->get_val(), ck_val->get_val(), st_def->ist_size); + req->SetCfgVal(ck_val1); ck_val = ck_val1; } else { delete ck_val1; @@ -801,7 +985,7 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, UPLL_LOG_TRACE(" the attr_type %x number %d", binfo[i].struct_type, i); if (attr_type == CFG_KEY) { p = reinterpret_cast(reinterpret_cast(tkey) - + binfo[i].offset); + + binfo[i].offset); UPLL_LOG_TRACE(" key struct %d tkey %p p %p", attr_type, tkey, p); switch (op) { case UNC_OP_CREATE: @@ -820,7 +1004,7 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, if (IsValidKey(tkey, indx)) { UPLL_LOG_TRACE("tkey %p bind match DEL p %p", tkey, p); db_info->BindMatch(indx, binfo[i].app_data_type, - binfo[i].array_size, p); + binfo[i].array_size, p); } break; case UNC_OP_READ: @@ -828,7 +1012,8 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: if ((dbop.readop & kOpReadSingle) || (dbop.readop & kOpReadExist) - || (dbop.readop & kOpReadMultiple) || (dbop.readop & kOpReadCount)) { + || (dbop.readop & kOpReadMultiple) || + (dbop.readop & kOpReadCount)) { if (IsValidKey(tkey, indx)) { UPLL_LOG_TRACE("tkey %p bind match READ p %p", tkey, p); db_info->BindMatch(indx, binfo[i].app_data_type, @@ -836,7 +1021,7 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, if (dbop.readop & kOpReadMultiple) { UPLL_LOG_TRACE("tkey %p bind output READ p %p", tkey, p); db_info->BindOutput(indx, binfo[i].app_data_type, - binfo[i].array_size, p); + binfo[i].array_size, p); } } else { UPLL_LOG_TRACE("tkey %p bind output READ p %p", tkey, p); @@ -855,24 +1040,24 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, break; } } else if (tuser_data - && ((attr_type == CK_VAL) || (attr_type == CK_VAL2))) { + && ((attr_type == CK_VAL) || (attr_type == CK_VAL2))) { if (attr_type == CK_VAL2) { if (req->get_cfg_val()) { GET_USER_DATA(req->get_cfg_val()); tuser_data = - reinterpret_cast - (req->get_cfg_val()->get_user_data()); - } else + reinterpret_cast + (req->get_cfg_val()->get_user_data()); + } else tuser_data = NULL; } else { tuser_data = reinterpret_cast(req->get_user_data()); } if (!tuser_data) { UPLL_LOG_DEBUG("null tuser_data"); - continue; + continue; } p = reinterpret_cast(reinterpret_cast(tuser_data) - + binfo[i].offset); + + binfo[i].offset); bool par_flag = false, par_ctrlr = false, par_dom = false; if (binfo[i].offset == offsetof(key_user_data_t, flags)) par_flag = true; @@ -898,8 +1083,8 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, db_info->BindMatch(indx, binfo[i].app_data_type, binfo[i].array_size, p); } else if ((par_ctrlr && (dbop.inoutop & kOpInOutCtrlr)) - || (par_dom && (dbop.inoutop & kOpInOutDomain)) - || (par_flag && (dbop.inoutop & kOpInOutFlag))) { + || (par_dom && (dbop.inoutop & kOpInOutDomain)) + || (par_flag && (dbop.inoutop & kOpInOutFlag))) { UPLL_LOG_TRACE("UPD bind input flag/Cntrlr/domain %p ", p); db_info->BindInput(indx, binfo[i].app_data_type, binfo[i].array_size, p); @@ -934,48 +1119,51 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, } else if (tval && (attr_type != ST_VAL) && (attr_type != ST_META_VAL)) { #if 1 if (attr_type == CFG_DEF_VAL) { - attr_type = (dbop.readop & kOpReadDiffUpd)?attr_type:CFG_META_VAL; - UPLL_LOG_DEBUG("ATTR: attr_type %d readop %d op %d\n",attr_type, dbop.readop,op); + attr_type = (dbop.readop & kOpReadDiffUpd)?attr_type:CFG_META_VAL; + UPLL_LOG_DEBUG("ATTR: attr_type %d readop %d op %d\n", + attr_type, + dbop.readop, + op); } #endif if (op == UNC_OP_DELETE) continue; if (dt_type == UPLL_DT_STATE) { #if 0 attr_type = (attr_type == CFG_ST_VAL)?CFG_VAL: - ((attr_type == CFG_ST_META_VAL)?CFG_META_VAL:attr_type); + ((attr_type == CFG_ST_META_VAL)?CFG_META_VAL:attr_type); #else // bind down count only for output and not for match if (attr_type == CFG_ST_VAL) { attr_type = (dbop.readop & kOpReadDiffUpd)?CFG_DEF_VAL:CFG_VAL; } else if (attr_type == CFG_ST_META_VAL) { attr_type = (dbop.readop & kOpReadDiffUpd)?CFG_DEF_VAL:CFG_META_VAL; - } + } #endif } else if ((attr_type == CFG_ST_VAL) || (attr_type == CFG_ST_META_VAL)) { continue; } p = reinterpret_cast(reinterpret_cast(tval) - + binfo[i].offset); + + binfo[i].offset); bool valid_is_defined = false; if (attr_type == CFG_VAL) { result_code = GetValid(tval, indx, valid, dt_type, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Returning %d",result_code); - return result_code; + UPLL_LOG_TRACE("Returning %d", result_code); + return result_code; } if (!valid) { UPLL_LOG_TRACE(" Invalid for attr %d", i); - switch (op) { - case UNC_OP_CREATE: - case UNC_OP_UPDATE: - valid_is_defined = true; + switch (op) { + case UNC_OP_CREATE: + case UNC_OP_UPDATE: + valid_is_defined = true; break; - default: - valid_is_defined = false; - } - } else if ((*valid == UNC_VF_VALID) || - ( *valid == UNC_VF_VALID_NO_VALUE)) { - valid_is_defined = true; + default: + valid_is_defined = false; + } + } else if ((*valid == UNC_VF_VALID) || + (*valid == UNC_VF_VALID_NO_VALUE)) { + valid_is_defined = true; } } else if (attr_type == CFG_META_VAL) { if ((*(reinterpret_cast(p)) == UNC_VF_VALID) @@ -985,135 +1173,144 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, switch (op) { case UNC_OP_CREATE: #if 0 - if ((attr_type == CFG_META_VAL) || valid_is_defined + if ((attr_type == CFG_META_VAL) || valid_is_defined #else - if ((attr_type == CFG_META_VAL) || (attr_type == CFG_VAL) + if ((attr_type == CFG_META_VAL) || (attr_type == CFG_VAL) #endif - || ((attr_type == CS_VAL) && (dbop.inoutop & kOpInOutCs))) { - UPLL_LOG_TRACE("tval/meta CR bind input %p p %p", tval, p); - db_info->BindInput(indx, binfo[i].app_data_type, - binfo[i].array_size, - reinterpret_cast(p)); - } - break; - case UNC_OP_UPDATE: + || ((attr_type == CS_VAL) && (dbop.inoutop & kOpInOutCs))) { + UPLL_LOG_TRACE("tval/meta CR bind input %p p %p", tval, p); + db_info->BindInput(indx, binfo[i].app_data_type, + binfo[i].array_size, + reinterpret_cast(p)); + } + break; + case UNC_OP_UPDATE: #if 0 - if ((attr_type == CFG_META_VAL) - || ((attr_type == CS_VAL) && (dbop.matchop & kOpMatchCs))) { - UPLL_LOG_TRACE("tval/meta UP bind match %p p %p", tval, p); - db_info->BindMatch(indx, binfo[i].app_data_type, - binfo[i].array_size, - reinterpret_cast(p)); - } -#endif - if (valid_is_defined || - ((attr_type == CS_VAL) && (dbop.inoutop & kOpInOutCs))) { - UPLL_LOG_TRACE("tval/meta UP bind input %p p %p", tval, p); - // store VALID_NO_VALUE flag in candidate as INVALID - if ((attr_type == CFG_META_VAL) && - (*(reinterpret_cast(p)) == UNC_VF_VALID_NO_VALUE)) { - UPLL_LOG_TRACE("Resetting VALID_NO_VALUE to INVALID %p", p); - *(reinterpret_cast(p)) = UNC_VF_INVALID; - } - db_info->BindInput(indx, binfo[i].app_data_type, - binfo[i].array_size, - reinterpret_cast(p)); - } - break; - case UNC_OP_READ: - case UNC_OP_READ_SIBLING: - case UNC_OP_READ_SIBLING_BEGIN: - case UNC_OP_READ_SIBLING_COUNT: - if (dbop.readop & ~(kOpReadDiff | kOpReadExist | kOpReadDiffUpd)) { - if (valid_is_defined) { - UPLL_LOG_TRACE("tval RD bind match %p p %p", tval, p); + if ((attr_type == CFG_META_VAL) + || ((attr_type == CS_VAL) && (dbop.matchop & kOpMatchCs))) { + UPLL_LOG_TRACE("tval/meta UP bind match %p p %p", tval, p); db_info->BindMatch(indx, binfo[i].app_data_type, binfo[i].array_size, reinterpret_cast(p)); - } else if ((dbop.readop & (kOpReadExist | kOpReadCount)) == 0) { - switch (attr_type) { - case CS_VAL: - if (dbop.inoutop & kOpInOutCs) { - UPLL_LOG_TRACE("tvalcs RD bind output %p p %p", tval, p); - db_info->BindOutput(indx, binfo[i].app_data_type, - binfo[i].array_size, - reinterpret_cast(p)); + } +#endif + if (valid_is_defined || + ((attr_type == CS_VAL) && (dbop.inoutop & kOpInOutCs))) { + UPLL_LOG_TRACE("tval/meta UP bind input %p p %p", tval, p); + // store VALID_NO_VALUE flag in candidate as INVALID + if ((attr_type == CFG_META_VAL) && + (*(reinterpret_cast(p)) == + UNC_VF_VALID_NO_VALUE)) { + UPLL_LOG_TRACE("Resetting VALID_NO_VALUE to INVALID %p", p); + *(reinterpret_cast(p)) = UNC_VF_INVALID; + } + db_info->BindInput(indx, binfo[i].app_data_type, + binfo[i].array_size, + reinterpret_cast(p)); + } + break; + case UNC_OP_READ: + case UNC_OP_READ_SIBLING: + case UNC_OP_READ_SIBLING_BEGIN: + case UNC_OP_READ_SIBLING_COUNT: + if (dbop.readop & ~(kOpReadDiff | kOpReadExist | + kOpReadDiffUpd)) { + if (valid_is_defined) { + UPLL_LOG_TRACE("tval RD bind match %p p %p", tval, p); + db_info->BindMatch(indx, binfo[i].app_data_type, + binfo[i].array_size, + reinterpret_cast(p)); + } else if ((dbop.readop & + (kOpReadExist | kOpReadCount)) == 0) { + switch (attr_type) { + case CS_VAL: + if (dbop.inoutop & kOpInOutCs) { + UPLL_LOG_TRACE("tvalcs RD bind output %p p %p", + tval, p); + db_info->BindOutput(indx, binfo[i].app_data_type, + binfo[i].array_size, + reinterpret_cast(p)); + } + break; + case CFG_VAL: + case CFG_META_VAL: + UPLL_LOG_TRACE("tval RD bind output %p p %p", tval, p); + db_info->BindOutput(indx, binfo[i].app_data_type, + binfo[i].array_size, + reinterpret_cast(p)); + default: + break; } - break; - case CFG_VAL: - case CFG_META_VAL: - UPLL_LOG_TRACE("tval RD bind output %p p %p", tval, p); + } + } else if (dbop.readop & kOpReadDiff) { + if ((attr_type == CFG_META_VAL) || (attr_type == CFG_VAL) || +#if 1 + (attr_type == CFG_DEF_VAL) || +#endif + ((attr_type == CS_VAL) && (dbop.inoutop & kOpInOutCs))) { + UPLL_LOG_TRACE("tval %d RDDiff bind output %p p %p", + attr_type, + tval, p); db_info->BindOutput(indx, binfo[i].app_data_type, binfo[i].array_size, reinterpret_cast(p)); - default: - break; - } - } - } else if (dbop.readop & kOpReadDiff) { - if ((attr_type == CFG_META_VAL) || (attr_type == CFG_VAL) || -#if 1 - (attr_type == CFG_DEF_VAL) || -#endif - ((attr_type == CS_VAL) && (dbop.inoutop & kOpInOutCs))) { - UPLL_LOG_TRACE("tval %d RDDiff bind output %p p %p", attr_type, - tval, p); - db_info->BindOutput(indx, binfo[i].app_data_type, - binfo[i].array_size, - reinterpret_cast(p)); - } + } #if 1 - if ((attr_type == CFG_META_VAL) || (attr_type == CFG_VAL) || + if ((attr_type == CFG_META_VAL) || (attr_type == CFG_VAL) || #else - if ((attr_type == CFG_VAL) || + if ((attr_type == CFG_VAL) || #endif - ((attr_type == CS_VAL) && (dbop.matchop & kOpMatchCs))) { + ((attr_type == CS_VAL) && + (dbop.matchop & kOpMatchCs))) { #if 1 - if ((dbop.readop & kOpReadDiffUpd) && (attr_type != CFG_DEF_VAL)) { + if ((dbop.readop & kOpReadDiffUpd) && + (attr_type != CFG_DEF_VAL)) { #else - if (dbop.readop & kOpReadDiffUpd) + if (dbop.readop & kOpReadDiffUpd) #endif - UPLL_LOG_TRACE("tval %d RDDiff bind match %p p %p", attr_type, - tval, p); - db_info->BindMatch(indx, binfo[i].app_data_type, - binfo[i].array_size, - reinterpret_cast(p)); - } - } - } - default: - break; - } + UPLL_LOG_TRACE("tval %d RDDiff bind match %p p %p", + attr_type, + tval, p); + db_info->BindMatch(indx, binfo[i].app_data_type, + binfo[i].array_size, + reinterpret_cast(p)); + } + } + } + default: + break; + } } else if (sval) { if (op == UNC_OP_DELETE) continue; bool valid_is_defined = false; p = reinterpret_cast(reinterpret_cast(sval) - + binfo[i].offset); + + binfo[i].offset); #if 0 - if (attr_type == CFG_ST_VAL) { + if (attr_type == CFG_ST_VAL) { uint32_t val_p = *(reinterpret_cast(p)); attr_type = (op == UNC_OP_UPDATE)? - ((val_p != INVALID_MATCH_VALUE)?ST_VAL:attr_type):ST_VAL; + ((val_p != INVALID_MATCH_VALUE)?ST_VAL:attr_type):ST_VAL; } #endif if (attr_type == ST_VAL) { result_code = GetValid(sval, indx, valid_st, dt_type, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Returning %d",result_code); + UPLL_LOG_TRACE("Returning %d", result_code); return result_code; } - if (!valid_st) { + if (!valid_st) { switch (op) { - case UNC_OP_CREATE: - case UNC_OP_UPDATE: - valid_is_defined = true; - break; - default: - valid_is_defined = false; + case UNC_OP_CREATE: + case UNC_OP_UPDATE: + valid_is_defined = true; + break; + default: + valid_is_defined = false; } } else if ((*(reinterpret_cast(valid_st)) == UNC_VF_VALID) || - (*(reinterpret_cast(valid_st)) == UNC_VF_VALID_NO_VALUE)) + (*(reinterpret_cast(valid_st)) == + UNC_VF_VALID_NO_VALUE)) valid_is_defined = true; UPLL_LOG_TRACE(" The ST_VAL valid flag is %d", valid_is_defined); } else if (attr_type == ST_META_VAL) { @@ -1150,7 +1347,7 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, case UNC_OP_READ_SIBLING: case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: - if (dbop.readop & ~( kOpReadDiff | kOpReadDiffUpd | kOpReadExist)) { + if (dbop.readop & ~(kOpReadDiff | kOpReadDiffUpd | kOpReadExist)) { if (valid_is_defined) { UPLL_LOG_TRACE("sval RD bind match %p p %p", sval, p); db_info->BindMatch(indx, binfo[i].app_data_type, @@ -1172,7 +1369,7 @@ upll_rc_t MoMgrImpl::BindAttr(DalBindInfo *db_info, #if 0 if (dbop.readop & kOpReadDiffUpd) { UPLL_LOG_TRACE("sval %d RDDiff bind match %p p %p", attr_type, - sval, p); + sval, p); db_info->BindMatch(indx, binfo[i].app_data_type, binfo[i].array_size, reinterpret_cast(p)); @@ -1199,12 +1396,12 @@ upll_rc_t MoMgrImpl::UpdateRenameKey(ConfigKeyVal *&ikey, UPLL_LOG_DEBUG(" Invalid Table index - %d", tbl_index); return UPLL_RC_ERR_GENERIC; } -// cout << tbl_index << "\n"; + // cout << tbl_index << "\n"; bool exists = false; DalBindInfo *dal_bind_info = new DalBindInfo(tbl_index); upll_rc_t result_code; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; if (pdbop == NULL) { if (op == UNC_OP_DELETE) dbop.inoutop = kOpInOutNone; @@ -1214,35 +1411,35 @@ upll_rc_t MoMgrImpl::UpdateRenameKey(ConfigKeyVal *&ikey, } pdbop = &dbop; } - result_code = BindAttrRename(dal_bind_info, ikey, op, dt_type, *pdbop, tbl); - switch (op) { - case UNC_OP_CREATE: - result_code = DalToUpllResCode( - dmi->CreateRecord(dt_type, tbl_index, dal_bind_info)); - break; - case UNC_OP_UPDATE: - result_code = DalToUpllResCode( - dmi->UpdateRecords(dt_type, tbl_index, dal_bind_info)); - break; - case UNC_OP_READ: - result_code = DalToUpllResCode( - dmi->RecordExists(dt_type, tbl_index, dal_bind_info, &exists)); - if (result_code == UPLL_RC_SUCCESS) { - if (exists) - result_code = UPLL_RC_ERR_INSTANCE_EXISTS; - else - result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - break; - default: - break; - } - delete dal_bind_info; - - return result_code; - } - - upll_rc_t MoMgrImpl::BindAttrRename(DalBindInfo *db_info, + result_code = BindAttrRename(dal_bind_info, ikey, op, dt_type, *pdbop, tbl); + switch (op) { + case UNC_OP_CREATE: + result_code = DalToUpllResCode( + dmi->CreateRecord(dt_type, tbl_index, dal_bind_info)); + break; + case UNC_OP_UPDATE: + result_code = DalToUpllResCode( + dmi->UpdateRecords(dt_type, tbl_index, dal_bind_info)); + break; + case UNC_OP_READ: + result_code = DalToUpllResCode( + dmi->RecordExists(dt_type, tbl_index, dal_bind_info, &exists)); + if (result_code == UPLL_RC_SUCCESS) { + if (exists) + result_code = UPLL_RC_ERR_INSTANCE_EXISTS; + else + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + break; + default: + break; + } + delete dal_bind_info; + + return result_code; +} + +upll_rc_t MoMgrImpl::BindAttrRename(DalBindInfo *db_info, ConfigKeyVal *&req, unc_keytype_operation_t op, upll_keytype_datatype_t dt_type, @@ -1260,14 +1457,14 @@ upll_rc_t MoMgrImpl::UpdateRenameKey(ConfigKeyVal *&ikey, UPLL_LOG_DEBUG("Input is NULL"); return UPLL_RC_ERR_GENERIC; } - if (!GetRenameKeyBindInfo(req->get_key_type(), binfo, nattr, tbl)){ - UPLL_LOG_DEBUG("GetRenameKeyBindInfo Not available for the keytype %d" - "For the Table %d", req->get_key_type(), tbl); + if (!GetRenameKeyBindInfo(req->get_key_type(), binfo, nattr, tbl)) { + UPLL_LOG_DEBUG("GetRenameKeyBindInfo Not available for the keytype %d" + "For the Table %d", req->get_key_type(), tbl); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("The nAttribute %d", nattr); tuser_data = reinterpret_cast(req->get_user_data()); - for (int i = 0; i < nattr; i++ ) { + for (int i = 0; i < nattr; i++) { UPLL_LOG_TRACE("The If condition value is %d i=%d", (nattr/2), i); if (i == (nattr / 2)) { if (req->get_next_cfg_key_val() @@ -1281,229 +1478,238 @@ upll_rc_t MoMgrImpl::UpdateRenameKey(ConfigKeyVal *&ikey, UPLL_LOG_TRACE("the attr_type %d attr number %d", binfo[i].struct_type, i); p = reinterpret_cast(reinterpret_cast(tkey) - + binfo[i].offset); + + binfo[i].offset); UPLL_LOG_TRACE("key struct %d tkey %p p %p", attr_type, tkey, p); if (CFG_INPUT_KEY == attr_type || CFG_MATCH_KEY == attr_type) { switch (op) { case UNC_OP_CREATE: #if 0 - if (!IsValidKey(tkey, indx)) { - UPLL_LOG_TRACE("Given Key is Invalid %s", (req->ToStrAll()).c_str()); + if (!IsValidKey(tkey, indx)) { + UPLL_LOG_TRACE("Given Key is Invalid %s", + (req->ToStrAll()).c_str()); return UPLL_RC_ERR_GENERIC; } #endif UPLL_LOG_TRACE(" Bind input Key %"PFC_PFMT_u64" p %p", indx, - reinterpret_cast(p)); + reinterpret_cast(p)); db_info->BindInput(indx, binfo[i].app_data_type, binfo[i].array_size, - p); + p); break; case UNC_OP_UPDATE: UPLL_LOG_TRACE("Validate the Key in Update"); -// if (IsValidKey(tkey, indx)) { - switch (attr_type) { - case CFG_INPUT_KEY: - UPLL_LOG_TRACE("tkey %p bindinput %p", tkey, + // if (IsValidKey(tkey, indx)) { + switch (attr_type) { + case CFG_INPUT_KEY: + UPLL_LOG_TRACE("tkey %p bindinput %p", tkey, reinterpret_cast(p)); - db_info->BindInput(indx, binfo[i].app_data_type, + db_info->BindInput(indx, binfo[i].app_data_type, binfo[i].array_size, p); - break; - case CFG_MATCH_KEY: - UPLL_LOG_TRACE("tkey %p bindmatch %p", tkey, - reinterpret_cast(p)); - db_info->BindMatch(indx, binfo[i].app_data_type, - binfo[i].array_size, p); - break; - default: - break; - } - break; - default: - break; - } - } - if (tuser_data && attr_type == CK_VAL) { - p = reinterpret_cast(reinterpret_cast(tuser_data) - + binfo[i].offset); - switch (op) { - case UNC_OP_CREATE: - if ((dbop.inoutop & (kOpInOutCtrlr | kOpInOutDomain))) { - UPLL_LOG_TRACE("CR bind input Cntrlr/Flag %p", p); - db_info->BindInput(indx, binfo[i].app_data_type, - binfo[i].array_size, p); - } - break; - case UNC_OP_UPDATE: - if ((dbop.matchop & (kOpMatchCtrlr | kOpMatchDomain)) - || (dbop.matchop & kOpMatchFlag)) { - UPLL_LOG_TRACE("UPD bind match Cntrlr/Flag %p", p); - db_info->BindMatch(indx, binfo[i].app_data_type, - binfo[i].array_size, p); - } else if ((dbop.inoutop & (kOpInOutCtrlr | kOpInOutDomain)) - || (dbop.inoutop & kOpInOutFlag)) { - UPLL_LOG_TRACE("UPD bind input Cntrlr/Flag %p", p); - db_info->BindInput(indx, binfo[i].app_data_type, - binfo[i].array_size, p); + break; + case CFG_MATCH_KEY: + UPLL_LOG_TRACE("tkey %p bindmatch %p", tkey, + reinterpret_cast(p)); + db_info->BindMatch(indx, binfo[i].app_data_type, + binfo[i].array_size, p); + break; + default: + break; } break; default: break; } + } + if (tuser_data && attr_type == CK_VAL) { + p = reinterpret_cast(reinterpret_cast(tuser_data) + + binfo[i].offset); + switch (op) { + case UNC_OP_CREATE: + if ((dbop.inoutop & (kOpInOutCtrlr | kOpInOutDomain))) { + UPLL_LOG_TRACE("CR bind input Cntrlr/Flag %p", p); + db_info->BindInput(indx, binfo[i].app_data_type, + binfo[i].array_size, p); + } + break; + case UNC_OP_UPDATE: + if ((dbop.matchop & (kOpMatchCtrlr | kOpMatchDomain)) + || (dbop.matchop & kOpMatchFlag)) { + UPLL_LOG_TRACE("UPD bind match Cntrlr/Flag %p", p); + db_info->BindMatch(indx, binfo[i].app_data_type, + binfo[i].array_size, p); + } else if ((dbop.inoutop & (kOpInOutCtrlr | kOpInOutDomain)) + || (dbop.inoutop & kOpInOutFlag)) { + UPLL_LOG_TRACE("UPD bind input Cntrlr/Flag %p", p); + db_info->BindInput(indx, binfo[i].app_data_type, + binfo[i].array_size, p); + } + break; + default: + break; + } + } } + return result_code; } - return result_code; -} -upll_rc_t MoMgrImpl::BindStartup(DalBindInfo *db_info, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - UPLL_FUNC_TRACE; - int nattr; - BindInfo *binfo; - unc_keytype_configstatus_t cs_val = UNC_CS_NOT_APPLIED; - if (!GetBindInfo(tbl, dt_type, binfo, nattr)) - return UPLL_RC_ERR_GENERIC; - for (int i = 0; i < nattr; i++) { - uint64_t indx = binfo[i].index; - BindStructTypes attr_type = binfo[i].struct_type; - if (attr_type == CS_VAL) { - db_info->BindInput(indx, binfo[i].app_data_type, - binfo[i].array_size, &cs_val); + upll_rc_t MoMgrImpl::BindStartup(DalBindInfo *db_info, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + int nattr; + BindInfo *binfo; + unc_keytype_configstatus_t cs_val = UNC_CS_NOT_APPLIED; + if (!GetBindInfo(tbl, dt_type, binfo, nattr)) + return UPLL_RC_ERR_GENERIC; + for (int i = 0; i < nattr; i++) { + uint64_t indx = binfo[i].index; + BindStructTypes attr_type = binfo[i].struct_type; + if (attr_type == CS_VAL) { + db_info->BindInput(indx, binfo[i].app_data_type, + binfo[i].array_size, &cs_val); + } } + return UPLL_RC_SUCCESS; } - return UPLL_RC_SUCCESS; -} -// Binding Dummy pointers for matching -// This is currently specific for CheckRecordsIdentical API. -upll_rc_t MoMgrImpl::BindCandidateDirty(DalBindInfo *db_info, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl, - const uudst::kDalTableIndex index) { - UPLL_FUNC_TRACE; - int nattr; - BindInfo *binfo; - - void *dummy = malloc(sizeof(uint16_t)); /* dummy pointer */ - if (dummy == NULL) { - free(dummy); - throw new std::bad_alloc; - } - memset(dummy, 0, sizeof(uint16_t)); + // Binding Dummy pointers for matching + // This is currently specific for CheckRecordsIdentical API. + upll_rc_t MoMgrImpl::BindCandidateDirty(DalBindInfo *db_info, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl, + const uudst::kDalTableIndex index) { + UPLL_FUNC_TRACE; + int nattr; + BindInfo *binfo; - if (!GetBindInfo(tbl, dt_type, binfo, nattr)) { - free(dummy); - return UPLL_RC_ERR_GENERIC; - } + void *dummy = malloc(sizeof(uint16_t)); /* dummy pointer */ + if (dummy == NULL) { + throw new std::bad_alloc; + } + memset(dummy, 0, sizeof(uint16_t)); - for (int i = 0; i < nattr; i++) { - uint64_t indx = binfo[i].index; - BindStructTypes attr_type = binfo[i].struct_type; - if (attr_type != CS_VAL && attr_type != ST_VAL && - attr_type != ST_META_VAL && (((attr_type == CFG_KEY) - || (uudst::kDbiVtnCtrlrTbl != index)) - || ((CK_VAL == attr_type) && (uudst::kDbiVtnCtrlrTbl == index)))) { - UPLL_LOG_TRACE("Bind for attr type %d", attr_type); - db_info->BindMatch(indx, binfo[i].app_data_type, - binfo[i].array_size, dummy); + if (!GetBindInfo(tbl, dt_type, binfo, nattr)) { + free(dummy); + return UPLL_RC_ERR_GENERIC; } - } - free(dummy); - return UPLL_RC_SUCCESS; -} + for (int i = 0; i < nattr; i++) { + uint64_t indx = binfo[i].index; + BindStructTypes attr_type = binfo[i].struct_type; + if (attr_type != CS_VAL && attr_type != ST_VAL && + attr_type != ST_META_VAL && (( + (attr_type == CFG_KEY) + || (uudst::kDbiVtnCtrlrTbl != index)) + || ((CK_VAL == attr_type) && + (uudst::kDbiVtnCtrlrTbl == index)))) { + UPLL_LOG_TRACE("Bind for attr type %d", attr_type); + db_info->BindMatch(indx, binfo[i].app_data_type, + binfo[i].array_size, dummy); + } + } -upll_rc_t MoMgrImpl::TxCopyRenameTableFromCandidateToRunning( - unc_key_type_t key_type, - unc_keytype_operation_t op, - DalDmlIntf* dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *can_ckv = NULL, *run_ckv = NULL; - DalCursor *cfg1_cursor; - DalResultCode db_result = uud::kDalRcSuccess; - if (op == UNC_OP_UPDATE) { - UPLL_LOG_TRACE("No action is performed for Update"); + free(dummy); return UPLL_RC_SUCCESS; } - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op, - can_ckv, run_ckv, &cfg1_cursor, dmi, NULL, RENAMETBL, true); - while (result_code == UPLL_RC_SUCCESS) { - db_result = dmi->GetNextRecord(cfg1_cursor); - result_code = DalToUpllResCode(db_result); - if (result_code != UPLL_RC_SUCCESS) - break; - /* VRT and VBR sharing the same table so need not use - * VRT key type here */ - switch (key_type) { - case UNC_KT_VTN: { - val_rename_vtn *ren_val = static_cast( - GetVal(can_ckv)); - ren_val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - } - break; - case UNC_KT_VBRIDGE: - case UNC_KT_VLINK: { - val_rename_vnode *ren_val = static_cast( - GetVal(can_ckv)); - ren_val->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; - ren_val->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; - } - break; - case UNC_KT_POLICING_PROFILE: { - val_rename_policingprofile_t *ren_val = static_cast - (GetVal(can_ckv)); - ren_val->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; + + upll_rc_t MoMgrImpl::TxCopyRenameTableFromCandidateToRunning( + unc_key_type_t key_type, + unc_keytype_operation_t op, + DalDmlIntf* dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *can_ckv = NULL, *run_ckv = NULL; + DalCursor *cfg1_cursor = NULL; + DalResultCode db_result = uud::kDalRcSuccess; + if (op == UNC_OP_UPDATE) { + UPLL_LOG_TRACE("No action is performed for Update"); + return UPLL_RC_SUCCESS; + } + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op, + can_ckv, run_ckv, &cfg1_cursor, dmi, NULL, + RENAMETBL, true); + while (result_code == UPLL_RC_SUCCESS) { + db_result = dmi->GetNextRecord(cfg1_cursor); + result_code = DalToUpllResCode(db_result); + if (result_code != UPLL_RC_SUCCESS) + break; + /* VRT and VBR sharing the same table so need not use + * VRT key type here */ + switch (key_type) { + case UNC_KT_VTN: { + val_rename_vtn *ren_val = static_cast( + GetVal(can_ckv)); + ren_val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + } + break; + case UNC_KT_VBRIDGE: + case UNC_KT_VLINK: { + val_rename_vnode *ren_val = static_cast( + GetVal(can_ckv)); + ren_val->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; + ren_val->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; + } + break; + case UNC_KT_POLICING_PROFILE: { + val_rename_policingprofile_t *ren_val = static_cast + (GetVal(can_ckv)); + ren_val->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; + } + break; + case UNC_KT_FLOWLIST: { + val_rename_flowlist_t *ren_val = static_cast + (GetVal(can_ckv)); + ren_val->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; + } + break; + default: + UPLL_LOG_DEBUG("No special operation for %u", key_type); + break; } - break; - case UNC_KT_FLOWLIST: { - val_rename_flowlist_t *ren_val = static_cast - (GetVal(can_ckv)); - ren_val->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; + // Copy Rename Table Info into Running + result_code = UpdateConfigDB(can_ckv, + UPLL_DT_RUNNING, + op, + dmi, + RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + delete can_ckv; can_ckv = NULL; + DELETE_IF_NOT_NULL(run_ckv); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + UPLL_LOG_DEBUG("Returning error %d", result_code); + return UPLL_RC_ERR_GENERIC; } - break; - default: - UPLL_LOG_DEBUG("No special operation for %u", key_type); - break; - } - // Copy Rename Table Info into Running - result_code = UpdateConfigDB(can_ckv, UPLL_DT_RUNNING, op, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - delete can_ckv; can_ckv = NULL; - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - UPLL_LOG_DEBUG("Returning error %d",result_code); - return UPLL_RC_ERR_GENERIC; } + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(can_ckv); + DELETE_IF_NOT_NULL(run_ckv); + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS : result_code; + return result_code; } - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(can_ckv); - DELETE_IF_NOT_NULL(run_ckv); - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS : result_code; - return result_code; -} #if 0 -template + template upll_rc_t MoMgrImpl::GetCkvWithOperSt(ConfigKeyVal *&ck_vn, - unc_key_type_t ktype, - DalDmlIntf *dmi) { + unc_key_type_t ktype, + DalDmlIntf *dmi) { if (ck_vn != NULL) return UPLL_RC_ERR_GENERIC; ConfigVal *cval = NULL; - MoMgrImpl *mgr = NULL ; - upll_rc_t result_code = AllocVal(cval,UPLL_DT_STATE,MAINTBL); + MoMgrImpl *mgr = NULL; + upll_rc_t result_code = AllocVal(cval, UPLL_DT_STATE, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("Returning error %d", result_code); return result_code; } /* initialize vnode st */ T2 * vnode_st = reinterpret_cast - (cval->get_next_cfg_val()->get_val()); + (cval->get_next_cfg_val()->get_val()); if (!vnode_st) { - delete cval; - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; + delete cval; + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; } T1 *vn_st = reinterpret_cast(vnode_st); vn_st->valid[UPLL_IDX_OPER_STATUS_VBRIS] = UNC_VF_VALID; @@ -1511,89 +1717,107 @@ upll_rc_t MoMgrImpl::GetCkvWithOperSt(ConfigKeyVal *&ck_vn, /* Create Vnode If child */ switch (ktype) { - case UNC_KT_VTN: - case UNC_KT_VLINK: - mgr = reinterpret_cast(const_cast - (GetMoManager(ktype))); - break; - case UNC_KT_VBRIDGE: - mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VBR_IF))); - break; - case UNC_KT_VROUTER: - mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VRT_IF))); - break; - case UNC_KT_VTEP: - mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTEP_IF))); - break; - case UNC_KT_VTUNNEL: - mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTUNNEL_IF))); - break; - default: - UPLL_LOG_DEBUG("Unsupported operation on keytype %d",ktype); - return UPLL_RC_ERR_GENERIC; + case UNC_KT_VTN: + case UNC_KT_VLINK: + mgr = reinterpret_cast(const_cast + (GetMoManager(ktype))); + break; + case UNC_KT_VBRIDGE: + mgr = reinterpret_cast(const_cast + (GetMoManager(UNC_KT_VBR_IF))); + break; + case UNC_KT_VROUTER: + mgr = reinterpret_cast(const_cast + (GetMoManager(UNC_KT_VRT_IF))); + break; + case UNC_KT_VTEP: + mgr = reinterpret_cast(const_cast + (GetMoManager(UNC_KT_VTEP_IF))); + break; + case UNC_KT_VTUNNEL: + mgr = reinterpret_cast(const_cast + (GetMoManager(UNC_KT_VTUNNEL_IF))); + break; + default: + UPLL_LOG_DEBUG("Unsupported operation on keytype %d", ktype); + return UPLL_RC_ERR_GENERIC; } - result_code = mgr->GetChildConfigKey(ck_vn, NULL); + result_code = mgr->GetChildConfigKey(ck_vn, NULL); if (UPLL_RC_SUCCESS != result_code || ck_vn == NULL) { delete cval; if (ck_vn) delete ck_vn; UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); return result_code; } - ck_vn->AppendCfgVal(cval); + ck_vn->AppendCfgVal(cval); - /* Reading the Vnode Table and Check the Operstatus is unknown + /* Reading the Vnode Table and Check the Operstatus is unknown * for any one of the vnode if */ DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag | - kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutCtrlr | kOpInOutDomain }; result_code = mgr->ReadConfigDB(ck_vn, UPLL_DT_STATE, UNC_OP_READ, - dbop,dmi,MAINTBL); + dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS : result_code; - UPLL_LOG_DEBUG("Returning %d",result_code); - if (ck_vn) delete ck_vn; - return result_code; + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS : result_code; + UPLL_LOG_DEBUG("Returning %d", result_code); + if (ck_vn) delete ck_vn; + return result_code; } return UPLL_RC_SUCCESS; } -template upll_rc_t -MoMgrImpl::GetCkvWithOperSt (ConfigKeyVal *&ck_vn, unc_key_type_t ktype, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetCkvWithOperSt (ConfigKeyVal *&ck_vn, unc_key_type_t ktype, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetCkvWithOperSt (ConfigKeyVal *&ck_vn, unc_key_type_t ktype, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetCkvWithOperSt (ConfigKeyVal *&ck_vn, unc_key_type_t ktype, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetCkvWithOperSt (ConfigKeyVal *&ck_vn, unc_key_type_t ktype, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetCkvWithOperSt (ConfigKeyVal *&ck_vn, unc_key_type_t ktype, DalDmlIntf *dmi) ; +template upll_rc_t +MoMgrImpl::GetCkvWithOperSt ( + ConfigKeyVal *&ck_vn, + unc_key_type_t ktype, + DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetCkvWithOperSt ( + ConfigKeyVal *&ck_vn, + unc_key_type_t ktype, + DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetCkvWithOperSt ( + ConfigKeyVal *&ck_vn, + unc_key_type_t ktype, + DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetCkvWithOperSt ( + ConfigKeyVal *&ck_vn, + unc_key_type_t ktype, + DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetCkvWithOperSt ( + ConfigKeyVal *&ck_vn, + unc_key_type_t ktype, + DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetCkvWithOperSt ( + ConfigKeyVal *&ck_vn, + unc_key_type_t ktype, + DalDmlIntf *dmi); #else upll_rc_t MoMgrImpl::GetUninitOperState(ConfigKeyVal *&ck_vn, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; result_code = GetCkvUninit(ck_vn, NULL, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - return result_code; + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag | - kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutCtrlr | kOpInOutDomain }; result_code = ReadConfigDB(ck_vn, UPLL_DT_STATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS : result_code; - UPLL_LOG_DEBUG("Returning %d",result_code); - delete ck_vn; - ck_vn = NULL; + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS : result_code; + UPLL_LOG_DEBUG("Returning %d", result_code); + delete ck_vn; + ck_vn = NULL; } return result_code; } @@ -1603,76 +1827,77 @@ upll_rc_t MoMgrImpl::GetCkvUninit(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - + if (ck_vn == NULL) { ConfigVal *cval = NULL; /* Create ckv of corresponding keytype */ - result_code = GetChildConfigKey (ck_vn, ikey); + result_code = GetChildConfigKey(ck_vn, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); return result_code; } /* Allocate Memory for vnode st */ - result_code = AllocVal(cval,UPLL_DT_STATE,MAINTBL); + result_code = AllocVal(cval, UPLL_DT_STATE, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("Returning error %d", result_code); DELETE_IF_NOT_NULL(ck_vn); return result_code; } - ck_vn->AppendCfgVal(cval); - } - /* initialize vnode st */ + ck_vn->AppendCfgVal(cval); + } + /* initialize vnode st */ void *vnif = GetStateVal(ck_vn); if (!vnif) { UPLL_LOG_DEBUG("Invalid param\n"); + DELETE_IF_NOT_NULL(ck_vn); return UPLL_RC_ERR_GENERIC; } switch (ck_vn->get_key_type()) { - case UNC_KT_VTN: - { - val_vtn_st *vtnst = reinterpret_cast(vnif); - vtnst->valid[UPLL_IDX_OPER_STATUS_VBRIS] = UNC_VF_VALID; - vtnst->oper_status = UPLL_OPER_STATUS_UNINIT; - break; - } - case UNC_KT_VBRIDGE: - case UNC_KT_VROUTER: - case UNC_KT_VTUNNEL: - case UNC_KT_VTEP: - case UNC_KT_VLINK: - { - /* cast generically as vbr as all vnode st structures - * are the same and form the first field in the db st structure. - */ - val_vbr_st *vnodest = reinterpret_cast(vnif); - vnodest->valid[UPLL_IDX_OPER_STATUS_VBRIS] = UNC_VF_VALID; - vnodest->oper_status = UPLL_OPER_STATUS_UNINIT; - break; - } - case UNC_KT_VBR_IF: - case UNC_KT_VRT_IF: - case UNC_KT_VTEP_IF: - case UNC_KT_VTUNNEL_IF: - { - /* cast generically as vbr_if as all vnodeif st structures - * are the same and form the first field in the db st structure. - */ - val_vbr_if_st *vnifst = reinterpret_cast(vnif); - vnifst->valid[UPLL_IDX_OPER_STATUS_VBRIS] = UNC_VF_VALID; - vnifst->oper_status = UPLL_OPER_STATUS_UNINIT; - break; - } - default: - UPLL_LOG_DEBUG("Unsupported keytype\n"); - DELETE_IF_NOT_NULL(ck_vn); - return UPLL_RC_ERR_GENERIC; + case UNC_KT_VTN: + { + val_vtn_st *vtnst = reinterpret_cast(vnif); + vtnst->valid[UPLL_IDX_OPER_STATUS_VBRIS] = UNC_VF_VALID; + vtnst->oper_status = UPLL_OPER_STATUS_UNINIT; + break; + } + case UNC_KT_VBRIDGE: + case UNC_KT_VROUTER: + case UNC_KT_VTUNNEL: + case UNC_KT_VTEP: + case UNC_KT_VLINK: + { + /* cast generically as vbr as all vnode st structures + * are the same and form the first field in the db st structure. + */ + val_vbr_st *vnodest = reinterpret_cast(vnif); + vnodest->valid[UPLL_IDX_OPER_STATUS_VBRIS] = UNC_VF_VALID; + vnodest->oper_status = UPLL_OPER_STATUS_UNINIT; + break; + } + case UNC_KT_VBR_IF: + case UNC_KT_VRT_IF: + case UNC_KT_VTEP_IF: + case UNC_KT_VTUNNEL_IF: + { + /* cast generically as vbr_if as all vnodeif st structures + * are the same and form the first field in the db st structure. + */ + val_vbr_if_st *vnifst = reinterpret_cast(vnif); + vnifst->valid[UPLL_IDX_OPER_STATUS_VBRIS] = UNC_VF_VALID; + vnifst->oper_status = UPLL_OPER_STATUS_UNINIT; + break; + } + default: + UPLL_LOG_DEBUG("Unsupported keytype\n"); + DELETE_IF_NOT_NULL(ck_vn); + return UPLL_RC_ERR_GENERIC; } #if 0 - /* Reading the Vnode Table and Check the Operstatus is unknown + /* Reading the Vnode Table and Check the Operstatus is unknown * for any one of the vnode if */ DbSubOp dbop = { kOpReadExist | kOpReadMultiple, kOpMatchNone, kOpInOutFlag | - kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutCtrlr | kOpInOutDomain }; if (PORT_MAPPED_KEYTYPE(ck_vn->get_key_type())) dbop.readop = kOpReadMultiple; #endif @@ -1692,10 +1917,10 @@ upll_rc_t MoMgrImpl::BindImportDB(ConfigKeyVal *&ikey, UPLL_LOG_DEBUG("Input key is Empty"); return UPLL_RC_ERR_GENERIC; } - /* Allocate memeory for key user data to fetch - * controller, domain and rename flag */ + /* Allocate memeory for key user data to fetch + * controller, domain and rename flag */ AllocVal(ck_val, dt_type, RENAMETBL); - if(!ck_val) return UPLL_RC_ERR_GENERIC; + if (!ck_val) return UPLL_RC_ERR_GENERIC; ikey->SetCfgVal(ck_val); void *tval = ck_val->get_val(); if (!tval) return UPLL_RC_ERR_GENERIC; @@ -1703,8 +1928,8 @@ upll_rc_t MoMgrImpl::BindImportDB(ConfigKeyVal *&ikey, tuser_data = reinterpret_cast(ikey->get_user_data()); if (!tuser_data) { - UPLL_LOG_DEBUG("Memory Allocation Failed"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Memory Allocation Failed"); + return UPLL_RC_ERR_GENERIC; } void *tkey = ikey->get_key(); void *p = NULL; @@ -1719,60 +1944,59 @@ upll_rc_t MoMgrImpl::BindImportDB(ConfigKeyVal *&ikey, UPLL_LOG_TRACE("Attribute type is %d", attr_type); if (CFG_KEY == attr_type) { p = reinterpret_cast(reinterpret_cast(tkey) - + binfo[i].offset); - UPLL_LOG_TRACE("Attribute type is %d", attr_type); - if (IsValidKey(tkey, indx)) { - UPLL_LOG_TRACE("Key is valid "); - db_info->BindMatch(indx, binfo[i].app_data_type, - binfo[i].array_size, p); - } + + binfo[i].offset); + UPLL_LOG_TRACE("Attribute type is %d", attr_type); + if (IsValidKey(tkey, indx)) { + UPLL_LOG_TRACE("Key is valid "); + db_info->BindMatch(indx, binfo[i].app_data_type, + binfo[i].array_size, p); + } } if (CK_VAL == attr_type) { /* For Domain and controller output */ UPLL_LOG_TRACE("Attribute type is %d", attr_type); p = reinterpret_cast(reinterpret_cast(tuser_data) - + binfo[i].offset); + + binfo[i].offset); } if (CFG_VAL == attr_type) { - UPLL_LOG_TRACE("Attribute type is %d", attr_type); + UPLL_LOG_TRACE("Attribute type is %d", attr_type); p = reinterpret_cast(reinterpret_cast(tval) - + binfo[i].offset); + + binfo[i].offset); } if (p) - db_info->BindOutput(indx, binfo[i].app_data_type, - binfo[i].array_size, p); - } + db_info->BindOutput(indx, binfo[i].app_data_type, + binfo[i].array_size, p); + } return UPLL_RC_SUCCESS; } -upll_rc_t MoMgrImpl::Getvalstnum(ConfigKeyVal *&ikey, +upll_rc_t MoMgrImpl::Getvalstnum(ConfigKeyVal *&ikey, uui::IpctSt::IpcStructNum &struct_num) { - - switch(ikey->get_key_type()) { - case UNC_KT_FLOWLIST: - struct_num = IpctSt::kIpcStValRenameFlowlist; - break; - case UNC_KT_POLICING_PROFILE: - struct_num = IpctSt::kIpcStValRenamePolicingprofile; - break; - case UNC_KT_VTN: - struct_num = IpctSt::kIpcStValRenameVtn; - break; - case UNC_KT_VBRIDGE: - struct_num = IpctSt::kIpcStValRenameVbr; - break; - case UNC_KT_VROUTER: - struct_num = IpctSt::kIpcStValRenameVrt; - break; - case UNC_KT_VLINK: - struct_num = IpctSt::kIpcStValRenameVlink; - break; - default: - struct_num = IpctSt::kIpcInvalidStNum; - break; - } - return UPLL_RC_SUCCESS; + switch (ikey->get_key_type()) { + case UNC_KT_FLOWLIST: + struct_num = IpctSt::kIpcStValRenameFlowlist; + break; + case UNC_KT_POLICING_PROFILE: + struct_num = IpctSt::kIpcStValRenamePolicingprofile; + break; + case UNC_KT_VTN: + struct_num = IpctSt::kIpcStValRenameVtn; + break; + case UNC_KT_VBRIDGE: + struct_num = IpctSt::kIpcStValRenameVbr; + break; + case UNC_KT_VROUTER: + struct_num = IpctSt::kIpcStValRenameVrt; + break; + case UNC_KT_VLINK: + struct_num = IpctSt::kIpcStValRenameVlink; + break; + default: + struct_num = IpctSt::kIpcInvalidStNum; + break; + } + return UPLL_RC_SUCCESS; } upll_rc_t MoMgrImpl::Swapvaltokey(ConfigKeyVal *&ikey, @@ -1790,150 +2014,175 @@ upll_rc_t MoMgrImpl::Swapvaltokey(ConfigKeyVal *&ikey, switch (ikey->get_key_type()) { case UNC_KT_FLOWLIST: { - rename = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); - rename_val = reinterpret_cast(GetVal(ikey)); - if (!rename_val) { - UPLL_LOG_DEBUG("Val is Empty"); - free(rename); - return UPLL_RC_ERR_GENERIC; - } - if (!rename_flag) { - if (!strcmp((const char *)reinterpret_cast(ikey->get_key())->flowlist_name, - (const char *)reinterpret_cast(rename_val)->new_name)) - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; - } - else { - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; - } - /* copyt key to temp */ - uuu::upll_strncpy (temp_str, reinterpret_cast - (ikey->get_key())->flowlist_name, - (kMaxLenFlowListName+1)); - /* Copy Controller name to key */ - uuu::upll_strncpy( reinterpret_cast(ikey->get_key())->flowlist_name, - reinterpret_cast(rename_val)->flowlist_newname, - (kMaxLenFlowListName+1)); - /* Copy the UNC name to Val */ - uuu::upll_strncpy ( reinterpret_cast(rename)->flowlist_newname, temp_str, + rename = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + rename_val = reinterpret_cast(GetVal(ikey)); + if (!rename_val) { + UPLL_LOG_DEBUG("Val is Empty"); + free(rename); + return UPLL_RC_ERR_GENERIC; + } + if (!rename_flag) { + if (!strcmp((const char *)reinterpret_cast + (ikey->get_key())->flowlist_name, + (const char *)reinterpret_cast + (rename_val)->new_name)) + reinterpret_cast + (rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; + } + else { + reinterpret_cast + (rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; + } + /* copyt key to temp */ + uuu::upll_strncpy(temp_str, reinterpret_cast + (ikey->get_key())->flowlist_name, + (kMaxLenFlowListName+1)); + /* Copy Controller name to key */ + uuu::upll_strncpy(reinterpret_cast + (ikey->get_key())->flowlist_name, + reinterpret_cast + (rename_val)->flowlist_newname, (kMaxLenFlowListName+1)); + /* Copy the UNC name to Val */ + uuu::upll_strncpy(reinterpret_cast + (rename)->flowlist_newname, temp_str, + (kMaxLenFlowListName+1)); } break; case UNC_KT_POLICING_PROFILE: { - rename = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); - rename_val = reinterpret_cast(GetVal(ikey)); - if (!rename_val) { - UPLL_LOG_DEBUG("Val is Empty"); - free(rename); - return UPLL_RC_ERR_GENERIC; - } - if (!rename_flag) { - if (!strcmp((const char *)reinterpret_cast(ikey->get_key())->policingprofile_name, - (const char *)reinterpret_cast(rename_val)->new_name)) - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; - } - else { - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; - } - /* copyt key to temp */ - uuu::upll_strncpy (temp_str, reinterpret_cast - (ikey->get_key())->policingprofile_name, - (kMaxLenPolicingProfileName+1)); - /* Copy Controller name to key */ - uuu::upll_strncpy( reinterpret_cast + rename = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); + rename_val = reinterpret_cast + (GetVal(ikey)); + if (!rename_val) { + UPLL_LOG_DEBUG("Val is Empty"); + free(rename); + return UPLL_RC_ERR_GENERIC; + } + if (!rename_flag) { + if (!strcmp((const char *)reinterpret_cast + (ikey->get_key())->policingprofile_name, + (const char *)reinterpret_cast + (rename_val)->new_name)) + reinterpret_cast(rename)-> + valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; + } + else { + reinterpret_cast(rename)-> + valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; + } + /* copyt key to temp */ + uuu::upll_strncpy(temp_str, reinterpret_cast + (ikey->get_key())->policingprofile_name, + (kMaxLenPolicingProfileName+1)); + /* Copy Controller name to key */ + uuu::upll_strncpy(reinterpret_cast (ikey->get_key())->policingprofile_name, - reinterpret_cast + reinterpret_cast (rename_val)->policingprofile_newname, (kMaxLenPolicingProfileName+1)); - /* Copy the UNC name to Val */ - uuu::upll_strncpy ( reinterpret_cast(rename)->policingprofile_newname, temp_str, - (kMaxLenPolicingProfileName+1)); + /* Copy the UNC name to Val */ + uuu::upll_strncpy(reinterpret_cast + (rename)->policingprofile_newname, temp_str, + (kMaxLenPolicingProfileName+1)); } break; case UNC_KT_VTN: { - rename = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); - rename_val = reinterpret_cast(GetVal(ikey)); - if (!rename_val) { - UPLL_LOG_DEBUG("Val is Empty"); - free(rename); - return UPLL_RC_ERR_GENERIC; - } - if (!rename_flag) { - if (!strcmp((const char *)reinterpret_cast(ikey->get_key())->vtn_name, - (const char *)reinterpret_cast(rename_val)->new_name)) - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; - } - else { - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; - } - /* copyt key to temp */ - uuu::upll_strncpy (temp_str, reinterpret_cast - (ikey->get_key())->vtn_name, - (kMaxLenVtnName+1)); - /* Copy Controller name to key */ - uuu::upll_strncpy( reinterpret_cast + rename = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); + rename_val = reinterpret_cast(GetVal(ikey)); + if (!rename_val) { + UPLL_LOG_DEBUG("Val is Empty"); + free(rename); + return UPLL_RC_ERR_GENERIC; + } + if (!rename_flag) { + if (!strcmp((const char *)reinterpret_cast + (ikey->get_key())->vtn_name, + (const char *)reinterpret_cast + (rename_val)->new_name)) + reinterpret_cast(rename)-> + valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; + } + else { + reinterpret_cast(rename)-> + valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; + } + /* copyt key to temp */ + uuu::upll_strncpy(temp_str, reinterpret_cast + (ikey->get_key())->vtn_name, + (kMaxLenVtnName+1)); + /* Copy Controller name to key */ + uuu::upll_strncpy(reinterpret_cast (ikey->get_key())->vtn_name, - reinterpret_cast + reinterpret_cast (rename_val)->new_name, (kMaxLenVtnName+1)); - /* Copy the UNC name to Val */ - uuu::upll_strncpy (reinterpret_cast(rename)->new_name, temp_str, - (kMaxLenVtnName+1)); + /* Copy the UNC name to Val */ + uuu::upll_strncpy(reinterpret_cast + (rename)->new_name, temp_str, + (kMaxLenVtnName+1)); } break; case UNC_KT_VBRIDGE: case UNC_KT_VROUTER: case UNC_KT_VLINK: - { - rename = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); - rename_val = reinterpret_cast(GetVal(ikey)); - if (!rename_val) { - UPLL_LOG_DEBUG("Val is Empty"); - free(rename); - return UPLL_RC_ERR_GENERIC; - } - if (!strcmp((const char*)reinterpret_cast(ikey->get_key())->vbridge_name, - (const char *)reinterpret_cast(rename_val)->ctrlr_vnode_name)) { - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; - } - else { - reinterpret_cast(rename)->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; - } + { + rename = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); + rename_val = reinterpret_cast(GetVal(ikey)); + if (!rename_val) { + UPLL_LOG_DEBUG("Val is Empty"); + free(rename); + return UPLL_RC_ERR_GENERIC; + } + if (!strcmp((const char*)reinterpret_cast + (ikey->get_key())->vbridge_name, + (const char *)reinterpret_cast + (rename_val)->ctrlr_vnode_name)) { + reinterpret_cast(rename)-> + valid[UPLL_CTRLR_VTN_NAME_VALID] = + UNC_VF_INVALID; + } + else { + reinterpret_cast(rename)-> + valid[UPLL_CTRLR_VTN_NAME_VALID] = + UNC_VF_VALID; + } - /* copyt key to temp */ - uuu::upll_strncpy (temp_str, reinterpret_cast - (ikey->get_key())->vbridge_name, - (kMaxLenVnodeName+1)); + /* copyt key to temp */ + uuu::upll_strncpy(temp_str, reinterpret_cast + (ikey->get_key())->vbridge_name, + (kMaxLenVnodeName+1)); - /* Copy Controller name to key */ - uuu::upll_strncpy( reinterpret_cast + /* Copy Controller name to key */ + uuu::upll_strncpy(reinterpret_cast (ikey->get_key())->vtn_key.vtn_name, - reinterpret_cast + reinterpret_cast (rename_val)->ctrlr_vtn_name, (kMaxLenVtnName+1)); - uuu::upll_strncpy( reinterpret_cast + uuu::upll_strncpy(reinterpret_cast (ikey->get_key())->vbridge_name, - reinterpret_cast + reinterpret_cast (rename_val)->ctrlr_vnode_name, (kMaxLenVnodeName+1)); - /* Copy the UNC name to Val */ - uuu::upll_strncpy ( reinterpret_cast(rename)->new_name, temp_str, - (kMaxLenVnodeName+1)); - } + /* Copy the UNC name to Val */ + uuu::upll_strncpy(reinterpret_cast + (rename)->new_name, + temp_str, + (kMaxLenVnodeName+1)); + } break; default: break; } - } - ikey->SetCfgVal(new ConfigVal(struct_num, rename)); - return UPLL_RC_SUCCESS; - + } + ikey->SetCfgVal(new ConfigVal(struct_num, rename)); + return UPLL_RC_SUCCESS; } @@ -1941,60 +2190,62 @@ upll_rc_t MoMgrImpl::SwapKey(ConfigKeyVal *&ikey, uint8_t rename_flag) { UPLL_FUNC_TRACE; uui::IpctSt::IpcStructNum struct_num = IpctSt::kIpcInvalidStNum; - void *rename = NULL; - UPLL_LOG_TRACE("Before Swap Key %s %d", ikey->ToStrAll().c_str(),rename_flag); + void *rename = NULL; + UPLL_LOG_TRACE("Before Swap Key %s %d", ikey->ToStrAll().c_str(), + rename_flag); if (rename_flag) { Swapvaltokey(ikey, rename_flag); } else { - - Getvalstnum(ikey, struct_num); + Getvalstnum(ikey, struct_num); switch (ikey->get_key_type()) { case UNC_KT_FLOWLIST: - rename = reinterpret_cast - (ConfigKeyVal::Malloc - (sizeof(val_rename_flowlist))); - uuu::upll_strncpy(reinterpret_cast(rename) - ->flowlist_newname, - reinterpret_cast(ikey->get_key()) - ->flowlist_name, (kMaxLenFlowListName+1)); - break; - case UNC_KT_POLICING_PROFILE: - rename = reinterpret_cast - ( - ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile))); - uuu::upll_strncpy(reinterpret_cast - (rename)->policingprofile_newname, - reinterpret_cast - (ikey->get_key())->policingprofile_name, - (kMaxLenPolicingProfileName+1)); - break; + rename = reinterpret_cast + (ConfigKeyVal::Malloc + (sizeof(val_rename_flowlist))); + uuu::upll_strncpy(reinterpret_cast(rename) + ->flowlist_newname, + reinterpret_cast(ikey->get_key()) + ->flowlist_name, (kMaxLenFlowListName+1)); + break; + case UNC_KT_POLICING_PROFILE: + rename = reinterpret_cast + ( + ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile))); + uuu::upll_strncpy(reinterpret_cast + (rename)->policingprofile_newname, + reinterpret_cast + (ikey->get_key())->policingprofile_name, + (kMaxLenPolicingProfileName+1)); + break; case UNC_KT_VTN: - rename = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); - uuu::upll_strncpy(reinterpret_cast - (rename)->new_name, - reinterpret_cast(ikey->get_key())->vtn_name, + rename = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); + uuu::upll_strncpy(reinterpret_cast + (rename)->new_name, + reinterpret_cast + (ikey->get_key())->vtn_name, (kMaxLenVtnName+1)); - break; + break; case UNC_KT_VBRIDGE: case UNC_KT_VROUTER: case UNC_KT_VLINK: - rename = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); - uuu::upll_strncpy(reinterpret_cast - (rename)->new_name, - reinterpret_cast(ikey->get_key())->vbridge_name, - (kMaxLenVnodeName+1)); - break; - default: - return UPLL_RC_ERR_GENERIC; - break; + rename = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vtn_t))); + uuu::upll_strncpy(reinterpret_cast + (rename)->new_name, + reinterpret_cast + (ikey->get_key())->vbridge_name, + (kMaxLenVnodeName+1)); + break; + default: + return UPLL_RC_ERR_GENERIC; + break; } - + reinterpret_cast(rename)->valid - [UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; - ikey->SetCfgVal(new ConfigVal(struct_num, rename)); + [UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; + ikey->SetCfgVal(new ConfigVal(struct_num, rename)); } UPLL_LOG_TRACE("AfterSwap Key %s", ikey->ToStrAll().c_str()); return UPLL_RC_SUCCESS; @@ -2008,60 +2259,60 @@ std::string MoMgrImpl::GetReadImportQueryString(unc_keytype_operation_t op, switch (kt) { case UNC_KT_FLOWLIST: query_string = \ - " (select unc_flowlist_name, ctrlr_name, ctrlr_flowlist_name from " - " (select unc_flowlist_name, ctrlr_name, ctrlr_flowlist_name " - " from im_flowlist_rename_tbl " - " union all " - "select flowlist_name, ctrlr_name, flowlist_name from " - "im_flowlist_ctrlr_tbl where flags & 1 = 0 ) as temp " - "where ctrlr_flowlist_name > ?) " - " order by ctrlr_flowlist_name "; - break; + " (select unc_flowlist_name, ctrlr_name, ctrlr_flowlist_name from " + " (select unc_flowlist_name, ctrlr_name, ctrlr_flowlist_name " + " from im_flowlist_rename_tbl " + " union all " + "select flowlist_name, ctrlr_name, flowlist_name from " + "im_flowlist_ctrlr_tbl where flags & 1 = 0 ) as temp " + "where ctrlr_flowlist_name > ?) " + " order by ctrlr_flowlist_name "; + break; case UNC_KT_POLICING_PROFILE: query_string = "(select unc_policingprofile_name, ctrlr_name, ctrlr_policingprofile_name from \ - (select unc_policingprofile_name, ctrlr_name, ctrlr_policingprofile_name \ - from im_policingprofile_rename_tbl union all select policingprofile_name,\ - ctrlr_name, policingprofile_name from im_policingprofile_ctrlr_tbl \ - where flags & 1 = 0 ) as temp where ctrlr_policingprofile_name > ?) \ - order by ctrlr_policingprofile_name"; + (select unc_policingprofile_name, ctrlr_name, ctrlr_policingprofile_name \ + from im_policingprofile_rename_tbl union all select policingprofile_name, \ + ctrlr_name, policingprofile_name from im_policingprofile_ctrlr_tbl \ + where flags & 1 = 0 ) as temp where ctrlr_policingprofile_name > ?) \ + order by ctrlr_policingprofile_name"; break; case UNC_KT_VTN: query_string = "(select unc_vtn_name, controller_name, domain_id, ctrlr_vtn_name from \ - (select unc_vtn_name, controller_name, domain_id, ctrlr_vtn_name \ - from im_vtn_rename_tbl union all select vtn_name,\ - controller_name, domain_id, vtn_name from im_vtn_ctrlr_tbl \ - where flags & 1 = 0 ) as temp where ctrlr_vtn_name > ?) order by ctrlr_vtn_name"; + (select unc_vtn_name, controller_name, domain_id, ctrlr_vtn_name \ + from im_vtn_rename_tbl union all select vtn_name, \ + controller_name, domain_id, vtn_name from im_vtn_ctrlr_tbl \ + where flags & 1 = 0) as temp where ctrlr_vtn_name > ?) order by ctrlr_vtn_name"; break; case UNC_KT_VBRIDGE: query_string = "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from " - "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " - "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vbridge_name " - "from im_vbr_tbl) " - "union all select vtn_name, vbridge_name, controller_name, domain_id, " - "vtn_name, vbridge_name from im_vbr_tbl where flags & 3 = 0) as temp where " - "ctrlr_vtn_name = ? and ctrlr_vnode_name > ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; + "ctrlr_vtn_name, ctrlr_vnode_name from " + "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " + "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " + "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vbridge_name " + "from im_vbr_tbl) " + "union all select vtn_name, vbridge_name, controller_name, domain_id, " + "vtn_name, vbridge_name from im_vbr_tbl where flags & 3 = 0) as temp where " + "ctrlr_vtn_name = ? and ctrlr_vnode_name > ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; break; case UNC_KT_VROUTER: query_string = "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from " - "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " - "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vrouter_name " - "from im_vrt_tbl) " - "union all select vtn_name, vrouter_name, controller_name, domain_id, " - "vtn_name, vrouter_name from im_vrt_tbl where flags & 3 = 0) as temp where " - "ctrlr_vtn_name = ? and ctrlr_vnode_name > ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; + "ctrlr_vtn_name, ctrlr_vnode_name from " + "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " + "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " + "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vrouter_name " + "from im_vrt_tbl) " + "union all select vtn_name, vrouter_name, controller_name, domain_id, " + "vtn_name, vrouter_name from im_vrt_tbl where flags & 3 = 0) as temp where " + "ctrlr_vtn_name = ? and ctrlr_vnode_name > ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; break; case UNC_KT_VLINK: query_string = "(select unc_vtn_name, unc_vlink_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vlink_name from " - "(select unc_vtn_name, unc_vlink_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vlink_name from im_vlink_rename_tbl " - "union all select vtn_name, vlink_name, controller1_name, domain1_id, " - "vtn_name, vlink_name from im_vlink_tbl where key_flags & 3 = 0) as temp where " - "ctrlr_vtn_name = ? and ctrlr_vlink_name > ?) order by ctrlr_vtn_name, ctrlr_vlink_name "; + "ctrlr_vtn_name, ctrlr_vlink_name from " + "(select unc_vtn_name, unc_vlink_name, controller_name, domain_id, " + "ctrlr_vtn_name, ctrlr_vlink_name from im_vlink_rename_tbl " + "union all select vtn_name, vlink_name, controller1_name, domain1_id, " + "vtn_name, vlink_name from im_vlink_tbl where key_flags & 3 = 0) as temp where " + "ctrlr_vtn_name = ? and ctrlr_vlink_name > ?) order by ctrlr_vtn_name, ctrlr_vlink_name "; break; default: break; @@ -2069,52 +2320,56 @@ std::string MoMgrImpl::GetReadImportQueryString(unc_keytype_operation_t op, } else if (op == UNC_OP_READ_SIBLING_BEGIN) { switch (kt) { case UNC_KT_FLOWLIST: - query_string = "(select unc_flowlist_name, ctrlr_name, ctrlr_flowlist_name from im_flowlist_rename_tbl \ - union all select flowlist_name, ctrlr_name, flowlist_name from im_flowlist_ctrlr_tbl \ - where flags & 1 = 0) order by ctrlr_flowlist_name "; + query_string = "(select unc_flowlist_name, ctrlr_name," + "ctrlr_flowlist_name from im_flowlist_rename_tbl " + "union all select flowlist_name, ctrlr_name," + "flowlist_name from im_flowlist_ctrlr_tbl " + "where flags & 1 = 0) order by ctrlr_flowlist_name "; break; case UNC_KT_POLICING_PROFILE: - query_string = "(select unc_policingprofile_name, ctrlr_name, ctrlr_policingprofile_name from im_policingprofile_rename_tbl \ - union all select policingprofile_name, ctrlr_name, policingprofile_name from im_policingprofile_ctrlr_tbl \ - where flags & 1 = 0) order by ctrlr_policingprofile_name"; + query_string = "(select unc_policingprofile_name, ctrlr_name," + "ctrlr_policingprofile_name from im_policingprofile_rename_tbl " + " union all select policingprofile_name, ctrlr_name," + "policingprofile_name from im_policingprofile_ctrlr_tbl " + "where flags & 1 = 0) order by ctrlr_policingprofile_name"; break; case UNC_KT_VTN: - query_string = "(select unc_vtn_name, controller_name, domain_id, \ - ctrlr_vtn_name from im_vtn_rename_tbl union all \ - select vtn_name, controller_name, domain_id, vtn_name \ - from im_vtn_ctrlr_tbl where flags & 1 = 0) \ - order by ctrlr_vtn_name "; + query_string = "(select unc_vtn_name, controller_name, domain_id, " + "ctrlr_vtn_name from im_vtn_rename_tbl union all " + "select vtn_name, controller_name, domain_id, vtn_name " + "from im_vtn_ctrlr_tbl where flags & 1 = 0) " + "order by ctrlr_vtn_name "; break; case UNC_KT_VBRIDGE: query_string = "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from " - "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " - "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vbridge_name " - "from im_vbr_tbl) " - "union all select vtn_name, vbridge_name, controller_name, domain_id, " - "vtn_name, vbridge_name from im_vbr_tbl where flags & 3 = 0) as temp where " - "ctrlr_vtn_name = ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; + "ctrlr_vtn_name, ctrlr_vnode_name from " + "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " + "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " + "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vbridge_name " + "from im_vbr_tbl) " + "union all select vtn_name, vbridge_name, controller_name, domain_id, " + "vtn_name, vbridge_name from im_vbr_tbl where flags & 3 = 0) as temp where " + "ctrlr_vtn_name = ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; break; case UNC_KT_VROUTER: query_string = "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from " - "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " - "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vrouter_name " - "from im_vrt_tbl) " - "union all select vtn_name, vrouter_name, controller_name, domain_id, " - "vtn_name, vrouter_name from im_vrt_tbl where flags & 3 = 0) as temp where " - "ctrlr_vtn_name = ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; + "ctrlr_vtn_name, ctrlr_vnode_name from " + "(select unc_vtn_name, unc_vnode_name, controller_name, domain_id, " + "ctrlr_vtn_name, ctrlr_vnode_name from im_vnode_rename_tbl where " + "(unc_vtn_name, unc_vnode_name) IN (select vtn_name, vrouter_name " + "from im_vrt_tbl) " + "union all select vtn_name, vrouter_name, controller_name, domain_id, " + "vtn_name, vrouter_name from im_vrt_tbl where flags & 3 = 0) as temp where " + "ctrlr_vtn_name = ?) order by ctrlr_vtn_name, ctrlr_vnode_name "; break; case UNC_KT_VLINK: query_string = "(select unc_vtn_name, unc_vlink_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vlink_name from " - "(select unc_vtn_name, unc_vlink_name, controller_name, domain_id, " - "ctrlr_vtn_name, ctrlr_vlink_name from im_vlink_rename_tbl " - "union all select vtn_name, vlink_name, controller1_name, domain1_id, " - "vtn_name, vlink_name from im_vlink_tbl where key_flags & 3 = 0) as temp where " - "ctrlr_vtn_name = ? ) order by ctrlr_vtn_name, ctrlr_vlink_name "; + "ctrlr_vtn_name, ctrlr_vlink_name from " + "(select unc_vtn_name, unc_vlink_name, controller_name, domain_id, " + "ctrlr_vtn_name, ctrlr_vlink_name from im_vlink_rename_tbl " + "union all select vtn_name, vlink_name, controller1_name, domain1_id, " + "vtn_name, vlink_name from im_vlink_tbl where key_flags & 3 = 0) as temp where " + "ctrlr_vtn_name = ? ) order by ctrlr_vtn_name, ctrlr_vlink_name "; break; default: break; @@ -2123,7 +2378,7 @@ std::string MoMgrImpl::GetReadImportQueryString(unc_keytype_operation_t op, return query_string; } -upll_rc_t MoMgrImpl::ReadImportDB (ConfigKeyVal *&in_key, +upll_rc_t MoMgrImpl::ReadImportDB(ConfigKeyVal *&in_key, IpcReqRespHeader *header, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; @@ -2134,7 +2389,8 @@ upll_rc_t MoMgrImpl::ReadImportDB (ConfigKeyVal *&in_key, result_code = GetChildConfigKey(ikey, in_key); if (UPLL_RC_SUCCESS != result_code) return result_code; - const uudst::kDalTableIndex tbl_index = GetTable(RENAMETBL, header->datatype); + const uudst::kDalTableIndex tbl_index = GetTable(RENAMETBL, + header->datatype); void *tkey = (ikey)?ikey->get_key():NULL; if (!tkey) { delete ikey; @@ -2145,7 +2401,7 @@ upll_rc_t MoMgrImpl::ReadImportDB (ConfigKeyVal *&in_key, delete ikey; return UPLL_RC_ERR_GENERIC; } - DalCursor *dal_cursor_handle; + DalCursor *dal_cursor_handle = NULL; UPLL_LOG_TRACE("tbl_index is %d", tbl_index); unc_keytype_operation_t op = header->operation; @@ -2156,175 +2412,179 @@ upll_rc_t MoMgrImpl::ReadImportDB (ConfigKeyVal *&in_key, } #if 0 uint16_t max_record_count = 1; - result_code = GetRenamedUncKey( ikey, header->datatype, - dmi, NULL); + result_code = GetRenamedUncKey(ikey, header->datatype, + dmi, NULL); if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("GetRenamedUncKey is Failed %d", result_code); - return result_code; + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("GetRenamedUncKey is Failed %d", result_code); + return result_code; } #endif if (op == UNC_OP_READ_SIBLING_BEGIN || op == UNC_OP_READ_SIBLING) { - DalBindInfo *dal_bind_info = new DalBindInfo(tbl_index); - result_code = BindImportDB(ikey, dal_bind_info, header->datatype, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (dal_bind_info) delete dal_bind_info; - UPLL_LOG_INFO("Exiting MoMgrImpl::ReadConfigDB result code %d", - result_code); - delete ikey; - return result_code; - } - std::string query_string = GetReadImportQueryString(op, ikey->get_key_type()); - if (query_string.empty()) { - UPLL_LOG_TRACE("Null Query String for Operation(%d) KeyType(%d)", - op, ikey->get_key_type()); - if (dal_bind_info) delete dal_bind_info; - delete ikey; - return UPLL_RC_ERR_GENERIC; - } - result_code = DalToUpllResCode( - dmi->ExecuteAppQueryMultipleRecords(query_string, header->rep_count, - dal_bind_info, &dal_cursor_handle)); - ConfigKeyVal *end_resp = NULL; - bool flag = false; - while (result_code == UPLL_RC_SUCCESS && ((count < header->rep_count) || - (header->rep_count == 0))) { - result_code = DalToUpllResCode(dmi->GetNextRecord(dal_cursor_handle)); - if (UPLL_RC_SUCCESS == result_code) { - ConfigKeyVal *tkey = NULL; - val_rename_vtn_t *val = (ikey)?reinterpret_cast - (GetVal(ikey)):NULL; - if (val) { - val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - } - UPLL_LOG_TRACE("GetNextRecord %s", ikey->ToStrAll().c_str()); - result_code = DupConfigKeyVal(tkey, ikey, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Dup failed error %d",result_code); - delete ikey; - delete dal_bind_info; - dmi->CloseCursor(dal_cursor_handle); - return result_code; - } - flag = true; - rename = 0; - result_code = UpdateConfigDB(tkey, header->datatype, UNC_OP_READ, - dmi, RENAMETBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) - rename = 1; - else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - delete ikey; - dmi->CloseCursor(dal_cursor_handle); - delete dal_bind_info; - DELETE_IF_NOT_NULL(tkey); - return result_code; - } - result_code = SwapKey(tkey, rename); - UPLL_LOG_TRACE("After No SwapKey %s", ikey->ToStrAll().c_str()); - ConfigKeyVal *prev_key = tkey; - if (!end_resp) - end_resp = tkey; - else - prev_key->AppendCfgKeyVal(tkey); - count++; - UPLL_LOG_TRACE("end_resp %s", end_resp->ToStrAll().c_str()); - } - } - header->rep_count = count; - result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code && flag)? - UPLL_RC_SUCCESS:result_code; - dmi->CloseCursor(dal_cursor_handle); - delete dal_bind_info; - if (result_code == UPLL_RC_SUCCESS) { - if (end_resp) - ikey->ResetWith(end_resp); - DELETE_IF_NOT_NULL(end_resp); - in_key->ResetWith(ikey); - DELETE_IF_NOT_NULL(ikey); - UPLL_LOG_TRACE("ResetWith is Called"); - } else { - delete ikey; - return result_code; - } - } else if (op == UNC_OP_READ) { + DalBindInfo *dal_bind_info = new DalBindInfo(tbl_index); + result_code = BindImportDB(ikey, dal_bind_info, header->datatype, + RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + if (dal_bind_info) delete dal_bind_info; + UPLL_LOG_INFO("Exiting MoMgrImpl::ReadConfigDB result code %d", + result_code); + delete ikey; + return result_code; + } + std::string query_string = GetReadImportQueryString(op, + ikey->get_key_type()); + if (query_string.empty()) { + UPLL_LOG_TRACE("Null Query String for Operation(%d) KeyType(%d)", + op, ikey->get_key_type()); + if (dal_bind_info) delete dal_bind_info; + delete ikey; + return UPLL_RC_ERR_GENERIC; + } + result_code = DalToUpllResCode( + dmi->ExecuteAppQueryMultipleRecords(query_string, header->rep_count, + dal_bind_info, &dal_cursor_handle)); + ConfigKeyVal *end_resp = NULL; + bool flag = false; + while (result_code == UPLL_RC_SUCCESS && ((count < header->rep_count) || + (header->rep_count == 0))) { + result_code = DalToUpllResCode(dmi->GetNextRecord(dal_cursor_handle)); + if (UPLL_RC_SUCCESS == result_code) { + ConfigKeyVal *tkey = NULL; + val_rename_vtn_t *val = (ikey)?reinterpret_cast + (GetVal(ikey)):NULL; + if (val) { + val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + } + UPLL_LOG_TRACE("GetNextRecord %s", ikey->ToStrAll().c_str()); + result_code = DupConfigKeyVal(tkey, ikey, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Dup failed error %d", result_code); + delete ikey; + delete dal_bind_info; + dmi->CloseCursor(dal_cursor_handle); + return result_code; + } + flag = true; + rename = 0; + result_code = UpdateConfigDB(tkey, header->datatype, UNC_OP_READ, + dmi, RENAMETBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) + rename = 1; + else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + delete ikey; + dmi->CloseCursor(dal_cursor_handle); + delete dal_bind_info; + DELETE_IF_NOT_NULL(tkey); + return result_code; + } + result_code = SwapKey(tkey, rename); + UPLL_LOG_TRACE("After No SwapKey %s", ikey->ToStrAll().c_str()); + ConfigKeyVal *prev_key = tkey; + if (!end_resp) + end_resp = tkey; + else + prev_key->AppendCfgKeyVal(tkey); + count++; + UPLL_LOG_TRACE("end_resp %s", end_resp->ToStrAll().c_str()); + } + } + header->rep_count = count; + result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code && flag)? + UPLL_RC_SUCCESS:result_code; + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle); + if (dal_bind_info) + delete dal_bind_info; + if (result_code == UPLL_RC_SUCCESS) { + if (end_resp) + ikey->ResetWith(end_resp); + DELETE_IF_NOT_NULL(end_resp); + in_key->ResetWith(ikey); + DELETE_IF_NOT_NULL(ikey); + UPLL_LOG_TRACE("ResetWith is Called"); + } else { + delete ikey; + return result_code; + } + } else if (op == UNC_OP_READ) { #if 0 // tbl is set, but not used. - MoMgrTables tbl = MAINTBL; - if (UNC_KT_VTN == ikey->get_key_type() || - UNC_KT_FLOWLIST == ikey->get_key_type() || - UNC_KT_POLICING_PROFILE == ikey->get_key_type()) - tbl = CTRLRTBL; + MoMgrTables tbl = MAINTBL; + if (UNC_KT_VTN == ikey->get_key_type() || + UNC_KT_FLOWLIST == ikey->get_key_type() || + UNC_KT_POLICING_PROFILE == ikey->get_key_type()) + tbl = CTRLRTBL; #endif - /* We are not allow to read using the UNC Name - */ -#if 1 - DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone}; - - ConfigKeyVal *temp = NULL; - result_code = DupConfigKeyVal (temp, ikey, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DupConfigKeyVal Failed"); - return result_code; - } - result_code = UpdateConfigDB(temp, header->datatype, UNC_OP_READ, - dmi, &dbop, RENAMETBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp); - return result_code; - } - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("Read Not allowed by using UNC Name"); - delete ikey; - DELETE_IF_NOT_NULL(temp); - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - DELETE_IF_NOT_NULL(temp); + /* We are not allow to read using the UNC Name + */ +#if 1 + DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone}; + + ConfigKeyVal *temp = NULL; + result_code = DupConfigKeyVal(temp, ikey, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DupConfigKeyVal Failed"); + DELETE_IF_NOT_NULL(ikey); + return result_code; + } + result_code = UpdateConfigDB(temp, header->datatype, UNC_OP_READ, + dmi, &dbop, RENAMETBL); + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp); + return result_code; + } + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + UPLL_LOG_DEBUG("Read Not allowed by using UNC Name"); + delete ikey; + DELETE_IF_NOT_NULL(temp); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + DELETE_IF_NOT_NULL(temp); #endif - rename = 0; - result_code = GetRenamedUncKey( ikey, header->datatype, - dmi, NULL); - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("GetRenamedUncKey is Failed %d", result_code); - delete ikey; - return result_code; - } - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - result_code = UpdateConfigDB(ikey, header->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("VTN doesn't exist in IMPORT DB. Error code : %d", - result_code); - delete ikey; - return result_code; - } else - result_code = UPLL_RC_SUCCESS; - ikey->SetCfgVal(NULL); - } else { - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(ikey, header->datatype, header->operation, - dbop, dmi, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - delete ikey; - return result_code; - } - rename = 1; - } - result_code = SwapKey(ikey, rename); - UPLL_LOG_TRACE("After No SwapKey %s", ikey->ToStrAll().c_str()); - in_key->ResetWith(ikey); - delete ikey; - } else { - UPLL_LOG_TRACE("Unexpected Operation : %d", op); - delete ikey; - return UPLL_RC_ERR_GENERIC; - } + rename = 0; + result_code = GetRenamedUncKey(ikey, header->datatype, + dmi, NULL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("GetRenamedUncKey is Failed %d", result_code); + delete ikey; return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UpdateConfigDB(ikey, header->datatype, UNC_OP_READ, + dmi, MAINTBL); + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("VTN doesn't exist in IMPORT DB. Error code : %d", + result_code); + delete ikey; + return result_code; + } else + result_code = UPLL_RC_SUCCESS; + ikey->SetCfgVal(NULL); + } else { + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; + result_code = ReadConfigDB(ikey, header->datatype, header->operation, + dbop, dmi, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + delete ikey; + return result_code; + } + rename = 1; + } + result_code = SwapKey(ikey, rename); + UPLL_LOG_TRACE("After No SwapKey %s", ikey->ToStrAll().c_str()); + in_key->ResetWith(ikey); + delete ikey; + } else { + UPLL_LOG_TRACE("Unexpected Operation : %d", op); + delete ikey; + return UPLL_RC_ERR_GENERIC; + } + return result_code; } @@ -2346,36 +2606,36 @@ upll_rc_t MoMgrImpl::ReadImportDB (ConfigKeyVal *&in_key, #if 0 -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi) ; -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); -template upll_rc_t -MoMgrImpl::GetUninitOperState - (ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); +template upll_rc_t +MoMgrImpl::GetUninitOperState +(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); #endif #endif diff --git a/coordinator/modules/upll/nwm_host_momgr.cc b/coordinator/modules/upll/nwm_host_momgr.cc index 36d9d565..b0609701 100644 --- a/coordinator/modules/upll/nwm_host_momgr.cc +++ b/coordinator/modules/upll/nwm_host_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -17,104 +17,105 @@ namespace upll { namespace kt_momgr { BindInfo NwMonitorHostMoMgr::nwm_host_bind_info[] = - { { uudst::vbridge_networkmonitor_host::kDbiVtnName, CFG_KEY, offsetof( - key_nwm_host, nwm_key.vbr_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_host::kDbiVbrName, CFG_KEY, offsetof( - key_nwm_host, nwm_key.vbr_key.vbridge_name), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_host::kDbiNwmName, CFG_KEY, offsetof( - key_nwm_host, nwm_key.nwmonitor_name), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_host::kDbiHostAddress, CFG_KEY, offsetof( - key_nwm_host, host_address.s_addr), - uud::kDalUint32, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiHealthInterval, CFG_VAL, - offsetof(val_nwm_host, health_interval), uud::kDalUint16, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiRecoveryInterval, CFG_VAL, - offsetof(val_nwm_host, recovery_interval), uud::kDalUint16, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiFailureCount, CFG_VAL, offsetof( - val_nwm_host, failure_count), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiRecoveryCount, CFG_VAL, - offsetof(val_nwm_host, recovery_count), uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiWaitTime, CFG_VAL, offsetof( - val_nwm_host, wait_time), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiCtrlrName, CK_VAL, offsetof( - key_user_data, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_host::kDbiDomainId, CK_VAL, offsetof( - key_user_data, domain_id), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_host::kDbiValidHealthInterval, - CFG_META_VAL, offsetof(val_nwm_host, - valid[UPLL_IDX_HEALTH_INTERVAL_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiValidRecoveryInterval, - CFG_META_VAL, offsetof(val_nwm_host, - valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiValidFailureCount, CFG_META_VAL, - offsetof(val_nwm_host, valid[UPLL_IDX_FAILURE_COUNT_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiValidRecoveryCount, - CFG_META_VAL, offsetof(val_nwm_host, - valid[UPLL_IDX_RECOVERY_COUNT_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiValidWaitTime, CFG_META_VAL, - offsetof(val_nwm_host, valid[UPLL_IDX_WAIT_TIME_NWMH]), uud::kDalUint8, - 1 }, - { uudst::vbridge_networkmonitor_host::kDbiCsHealthInterval, CS_VAL, - offsetof(val_nwm_host, cs_attr[UPLL_IDX_HEALTH_INTERVAL_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiCsRecoveryInterval, CS_VAL, - offsetof(val_nwm_host, cs_attr[UPLL_IDX_RECOVERY_INTERVAL_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiCsFailureCount, CS_VAL, - offsetof(val_nwm_host, cs_attr[UPLL_IDX_FAILURE_COUNT_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiCsRecoveryCount, CS_VAL, - offsetof(val_nwm_host, cs_attr[UPLL_IDX_RECOVERY_COUNT_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiCsWaitTime, CS_VAL, offsetof( - val_nwm_host, cs_attr[UPLL_IDX_WAIT_TIME_NWMH]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiCsRowstatus, CS_VAL, offsetof( - val_nwm_host, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_host::kDbiFlags, CK_VAL, offsetof( - key_user_data, flags), - uud::kDalUint8, 1 }, }; - -BindInfo NwMonitorHostMoMgr::key_nwm_host_maintbl_update_bind_info[] = { - { uudst::vbridge_networkmonitor_host::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_nwm_host, nwm_key.vbr_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge_networkmonitor_host::kDbiVbrName, CFG_MATCH_KEY, offsetof( +{ { uudst::vbridge_networkmonitor_host::kDbiVtnName, CFG_KEY, offsetof( + key_nwm_host, nwm_key.vbr_key.vtn_key.vtn_name), +uud::kDalChar, 32 }, +{ uudst::vbridge_networkmonitor_host::kDbiVbrName, CFG_KEY, offsetof( key_nwm_host, nwm_key.vbr_key.vbridge_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_networkmonitor_host::kDbiNwmName, CFG_MATCH_KEY, offsetof( +uud::kDalChar, 32 }, +{ uudst::vbridge_networkmonitor_host::kDbiNwmName, CFG_KEY, offsetof( key_nwm_host, nwm_key.nwmonitor_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_networkmonitor_host::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge_networkmonitor_host::kDbiVbrName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_networkmonitor_host::kDbiFlags, CK_VAL, offsetof( +uud::kDalChar, 32 }, +{ uudst::vbridge_networkmonitor_host::kDbiHostAddress, CFG_KEY, offsetof( + key_nwm_host, host_address.s_addr), +uud::kDalUint32, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiHealthInterval, CFG_VAL, + offsetof(val_nwm_host, health_interval), uud::kDalUint16, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiRecoveryInterval, CFG_VAL, + offsetof(val_nwm_host, recovery_interval), uud::kDalUint16, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiFailureCount, CFG_VAL, offsetof( + val_nwm_host, failure_count), +uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiRecoveryCount, CFG_VAL, + offsetof(val_nwm_host, recovery_count), uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiWaitTime, CFG_VAL, offsetof( + val_nwm_host, wait_time), +uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiCtrlrName, CK_VAL, offsetof( + key_user_data, ctrlr_id), +uud::kDalChar, 32 }, +{ uudst::vbridge_networkmonitor_host::kDbiDomainId, CK_VAL, offsetof( + key_user_data, domain_id), +uud::kDalChar, 32 }, +{ uudst::vbridge_networkmonitor_host::kDbiValidHealthInterval, + CFG_META_VAL, offsetof(val_nwm_host, + valid[UPLL_IDX_HEALTH_INTERVAL_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiValidRecoveryInterval, + CFG_META_VAL, offsetof(val_nwm_host, + valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiValidFailureCount, CFG_META_VAL, + offsetof(val_nwm_host, valid[UPLL_IDX_FAILURE_COUNT_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiValidRecoveryCount, + CFG_META_VAL, offsetof(val_nwm_host, + valid[UPLL_IDX_RECOVERY_COUNT_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiValidWaitTime, CFG_META_VAL, + offsetof(val_nwm_host, valid[UPLL_IDX_WAIT_TIME_NWMH]), uud::kDalUint8, + 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiCsHealthInterval, CS_VAL, + offsetof(val_nwm_host, cs_attr[UPLL_IDX_HEALTH_INTERVAL_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiCsRecoveryInterval, CS_VAL, + offsetof(val_nwm_host, cs_attr[UPLL_IDX_RECOVERY_INTERVAL_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiCsFailureCount, CS_VAL, + offsetof(val_nwm_host, cs_attr[UPLL_IDX_FAILURE_COUNT_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiCsRecoveryCount, CS_VAL, + offsetof(val_nwm_host, cs_attr[UPLL_IDX_RECOVERY_COUNT_NWMH]), + uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiCsWaitTime, CS_VAL, offsetof( + val_nwm_host, cs_attr[UPLL_IDX_WAIT_TIME_NWMH]), +uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiCsRowstatus, CS_VAL, offsetof( + val_nwm_host, cs_row_status), +uud::kDalUint8, 1 }, +{ uudst::vbridge_networkmonitor_host::kDbiFlags, CK_VAL, offsetof( key_user_data, flags), - uud::kDalUint8, 1 }, }; +uud::kDalUint8, 1 }, }; + +BindInfo NwMonitorHostMoMgr::key_nwm_host_maintbl_update_bind_info[] = { + { uudst::vbridge_networkmonitor_host::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_nwm_host, nwm_key.vbr_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge_networkmonitor_host::kDbiVbrName, CFG_MATCH_KEY, offsetof( + key_nwm_host, nwm_key.vbr_key.vbridge_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_networkmonitor_host::kDbiNwmName, CFG_MATCH_KEY, offsetof( + key_nwm_host, nwm_key.nwmonitor_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_networkmonitor_host::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge_networkmonitor_host::kDbiVbrName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_networkmonitor_host::kDbiFlags, CK_VAL, offsetof( + key_user_data, flags), + uud::kDalUint8, 1 }, }; NwMonitorHostMoMgr::NwMonitorHostMoMgr() { UPLL_FUNC_TRACE - ntable = MAX_MOMGR_TBLS; + ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; - table[MAINTBL] = new Table(uudst::kDbiVbrNwMonHostTbl, - UNC_KT_VBR_NWMONITOR_HOST, nwm_host_bind_info, - IpctSt::kIpcStKeyNwmHost, IpctSt::kIpcStValNwmHost, - uudst::vbridge_networkmonitor_host::kDbiVbrNwMonHostNumCols); + table[MAINTBL] = new Table + (uudst::kDbiVbrNwMonHostTbl, + UNC_KT_VBR_NWMONITOR_HOST, nwm_host_bind_info, + IpctSt::kIpcStKeyNwmHost, IpctSt::kIpcStValNwmHost, + uudst::vbridge_networkmonitor_host::kDbiVbrNwMonHostNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; nchild = 0; @@ -192,7 +193,7 @@ upll_rc_t NwMonitorHostMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, if (parent_key == NULL || !(parent_key->get_key())) { UPLL_LOG_DEBUG("parentkey is Null"); nwmh_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_nwm_host))); + ConfigKeyVal::Malloc(sizeof(key_nwm_host))); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VBR_NWMONITOR_HOST, IpctSt::kIpcStKeyNwmHost, nwmh_key, NULL); @@ -207,40 +208,52 @@ upll_rc_t NwMonitorHostMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, nwmh_key = reinterpret_cast(okey->get_key()); } else { nwmh_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_nwm_host))); + ConfigKeyVal::Malloc(sizeof(key_nwm_host))); } unc_key_type_t keytype = parent_key->get_key_type(); switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(nwmh_key->nwm_key.vbr_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName + 1)); *(nwmh_key->nwm_key.vbr_key.vbridge_name) = *""; *nwmh_key->nwm_key.nwmonitor_name = *""; nwmh_key->host_address.s_addr = 0; break; + case UNC_KT_VBRIDGE: + uuu::upll_strncpy + (nwmh_key->nwm_key.vbr_key.vtn_key.vtn_name, + reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(nwmh_key->nwm_key.vbr_key.vbridge_name, + reinterpret_cast(pkey)->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + break; case UNC_KT_VBR_NWMONITOR: - uuu::upll_strncpy(nwmh_key->nwm_key.vbr_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + uuu::upll_strncpy + (nwmh_key->nwm_key.vbr_key.vtn_key.vtn_name, + reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(nwmh_key->nwm_key.vbr_key.vbridge_name, - reinterpret_cast(pkey)->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(pkey)->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(nwmh_key->nwm_key.nwmonitor_name, - reinterpret_cast(pkey)->nwmonitor_name, - (kMaxLenNwmName + 1)); + reinterpret_cast(pkey)->nwmonitor_name, + (kMaxLenNwmName + 1)); break; case UNC_KT_VBR_NWMONITOR_HOST: uuu::upll_strncpy(nwmh_key->nwm_key.vbr_key.vtn_key.vtn_name, - reinterpret_cast - (pkey)->nwm_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - uuu::upll_strncpy(nwmh_key->nwm_key.vbr_key.vbridge_name, - reinterpret_cast(pkey)->nwm_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(nwmh_key->nwm_key.nwmonitor_name, - reinterpret_cast(pkey)->nwm_key.nwmonitor_name, - (kMaxLenNwmName + 1)); + reinterpret_cast + (pkey)->nwm_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy + (nwmh_key->nwm_key.vbr_key.vbridge_name, + reinterpret_cast(pkey)->nwm_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy + (nwmh_key->nwm_key.nwmonitor_name, + reinterpret_cast(pkey)->nwm_key.nwmonitor_name, + (kMaxLenNwmName + 1)); nwmh_key->host_address.s_addr = reinterpret_cast(pkey)->host_address.s_addr; default: @@ -276,16 +289,19 @@ upll_rc_t NwMonitorHostMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, (ikey->get_key()); if (!pkey) return UPLL_RC_ERR_GENERIC; key_nwm *nwm_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_nwm))); - uuu::upll_strncpy(nwm_key->vbr_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->nwm_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - uuu::upll_strncpy(nwm_key->vbr_key.vbridge_name, - reinterpret_cast(pkey)->nwm_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(nwm_key->nwmonitor_name, - reinterpret_cast(pkey)->nwm_key.nwmonitor_name, - (kMaxLenNwmName + 1)); + ConfigKeyVal::Malloc(sizeof(key_nwm))); + uuu::upll_strncpy + (nwm_key->vbr_key.vtn_key.vtn_name, + reinterpret_cast(pkey)->nwm_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy + (nwm_key->vbr_key.vbridge_name, + reinterpret_cast(pkey)->nwm_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy + (nwm_key->nwmonitor_name, + reinterpret_cast(pkey)->nwm_key.nwmonitor_name, + (kMaxLenNwmName + 1)); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VBR_NWMONITOR, IpctSt::kIpcStKeyNwm, nwm_key, NULL); @@ -328,7 +344,7 @@ upll_rc_t NwMonitorHostMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, UPLL_FUNC_TRACE; if (req == NULL) return UPLL_RC_ERR_GENERIC; if (okey != NULL) return UPLL_RC_ERR_GENERIC; - if (req->get_key_type() != UNC_KT_VBR_NWMONITOR_HOST) + if (req->get_key_type() != UNC_KT_VBR_NWMONITOR_HOST) return UPLL_RC_ERR_GENERIC; ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); if (tmp) { @@ -348,7 +364,7 @@ upll_rc_t NwMonitorHostMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tmp) { if (tbl == MAINTBL) { val_nwm_host_st *ival = reinterpret_cast - (tmp->get_val()); + (tmp->get_val()); if (ival == NULL) { UPLL_LOG_DEBUG("NULL val structure"); delete tmp1; @@ -373,7 +389,8 @@ upll_rc_t NwMonitorHostMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (okey) { SET_USER_DATA(okey, req); } else { - delete tmp1; + DELETE_IF_NOT_NULL(tmp1); + DELETE_IF_NOT_NULL(nwm_key); } return UPLL_RC_SUCCESS; } @@ -397,7 +414,7 @@ upll_rc_t NwMonitorHostMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, } else if (op == UNC_OP_UPDATE) { void *val = reinterpret_cast(nwm_val); CompareValidValue(val, GetVal(upd_key), true); - UPLL_LOG_TRACE("Key in Running %s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("Key in Running %s", (upd_key->ToStrAll()).c_str()); nwm_val->cs_row_status = nwm_val2->cs_row_status; } else { return UPLL_RC_ERR_GENERIC; @@ -405,14 +422,14 @@ upll_rc_t NwMonitorHostMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, for (unsigned int loop = 0; loop < sizeof(nwm_val->valid) / sizeof(nwm_val->valid[0]); ++loop) { if ((UNC_VF_VALID == (uint8_t) nwm_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == (uint8_t) nwm_val->valid[loop])) { + || (UNC_VF_VALID_NO_VALUE == (uint8_t) nwm_val->valid[loop])) { nwm_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == nwm_val->valid[loop]) && (UNC_OP_CREATE == op)) { - nwm_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; + nwm_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; } else if ((UNC_VF_INVALID == nwm_val->valid[loop]) && (UNC_OP_UPDATE == op)) { - nwm_val->cs_attr[loop] = nwm_val2->cs_attr[loop]; + nwm_val->cs_attr[loop] = nwm_val2->cs_attr[loop]; } } return UPLL_RC_SUCCESS; @@ -434,7 +451,7 @@ bool NwMonitorHostMoMgr::CompareValidValue(void *&val1, void *val2, val_nwm_host_t *valnwmhost1 = reinterpret_cast(val1); val_nwm_host_t *valnwmhost2 = reinterpret_cast(val2); for (unsigned int loop = 0; - loop < sizeof(valnwmhost1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(valnwmhost1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == valnwmhost1->valid[loop] && UNC_VF_VALID == valnwmhost2->valid[loop]) valnwmhost1->valid[loop] = UNC_VF_VALID_NO_VALUE; @@ -442,32 +459,32 @@ bool NwMonitorHostMoMgr::CompareValidValue(void *&val1, void *val2, if (UNC_VF_VALID == valnwmhost1->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] && UNC_VF_VALID == valnwmhost2->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH]) { if (valnwmhost1->health_interval == valnwmhost2->health_interval) - valnwmhost1->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + valnwmhost1->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (UNC_VF_VALID == valnwmhost1->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] && UNC_VF_VALID == valnwmhost2->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH]) { if (valnwmhost1->recovery_interval == valnwmhost2->recovery_interval) - valnwmhost1->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + valnwmhost1->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (UNC_VF_VALID == valnwmhost1->valid[UPLL_IDX_FAILURE_COUNT_NWMH] && UNC_VF_VALID == valnwmhost2->valid[UPLL_IDX_FAILURE_COUNT_NWMH]) { if (valnwmhost1->failure_count == valnwmhost2->failure_count) - valnwmhost1->valid[UPLL_IDX_FAILURE_COUNT_NWMH] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + valnwmhost1->valid[UPLL_IDX_FAILURE_COUNT_NWMH] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (UNC_VF_VALID == valnwmhost1->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] && UNC_VF_VALID == valnwmhost2->valid[UPLL_IDX_RECOVERY_COUNT_NWMH]) { if (valnwmhost1->recovery_count == valnwmhost2->recovery_count) - valnwmhost1->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + valnwmhost1->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (UNC_VF_VALID == valnwmhost1->valid[UPLL_IDX_WAIT_TIME_NWMH] && UNC_VF_VALID == valnwmhost2->valid[UPLL_IDX_WAIT_TIME_NWMH]) { if (valnwmhost1->wait_time == valnwmhost2->wait_time) - valnwmhost1->valid[UPLL_IDX_WAIT_TIME_NWMH] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + valnwmhost1->valid[UPLL_IDX_WAIT_TIME_NWMH] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } for (unsigned int loop = 0; loop < (sizeof(valnwmhost1->valid) / sizeof(valnwmhost1->valid[0])); @@ -482,8 +499,11 @@ bool NwMonitorHostMoMgr::CompareValidValue(void *&val1, void *val2, } upll_rc_t NwMonitorHostMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_nwm_host_t *val; val = (ckv_running != NULL) ? @@ -493,13 +513,13 @@ upll_rc_t NwMonitorHostMoMgr::UpdateAuditConfigStatus( } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) { + cs_status == UNC_CS_APPLIED) { val->cs_attr[loop] = cs_status; } } @@ -515,28 +535,28 @@ upll_rc_t NwMonitorHostMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_rename_vnode_info *key_rename = reinterpret_cast(ikey->get_key()); key_nwm_host_t * key_vwm = static_cast( - ConfigKeyVal::Malloc(sizeof(key_nwm_host_t))); + ConfigKeyVal::Malloc(sizeof(key_nwm_host_t))); // key_nwm_host, nwm_key.vbr_key.vtn_key.vtn_name if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { free(key_vwm); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vwm->nwm_key.vbr_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, (kMaxLenVtnName + 1)); + key_rename->old_unc_vtn_name, (kMaxLenVtnName + 1)); if (ikey->get_key_type() == UNC_KT_VBRIDGE) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { free(key_vwm); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vwm->nwm_key.vbr_key.vbridge_name, - key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); + key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { FREE_IF_NOT_NULL(key_vwm); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vwm->nwm_key.vbr_key.vbridge_name, - key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); + key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); } okey = new ConfigKeyVal(UNC_KT_VBR_NWMONITOR_HOST, IpctSt::kIpcStKeyNwmHost, key_vwm, NULL); @@ -547,7 +567,7 @@ upll_rc_t NwMonitorHostMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } upll_rc_t NwMonitorHostMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; if (!ikey || !req || !(ikey->get_key())) { @@ -568,12 +588,12 @@ upll_rc_t NwMonitorHostMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } key_nwm_host_t *key_nwm_host = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); val_nwm_host_t *val_nwm_host = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValNwmHost)) { val_nwm_host = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } upll_keytype_datatype_t dt_type = req->datatype; unc_keytype_operation_t operation = req->operation; @@ -586,7 +606,8 @@ upll_rc_t NwMonitorHostMoMgr::ValidateMessage(IpcReqRespHeader *req, } ret_val = ValidateNwMonHostKey(key_nwm_host, operation); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key structure validation failure for KT_VBR_NWMONITOR_HOST"); + UPLL_LOG_DEBUG("Key structure validation failure for" + "KT_VBR_NWMONITOR_HOST"); return UPLL_RC_ERR_CFG_SYNTAX; } else { if (((operation == UNC_OP_CREATE) || (operation == UNC_OP_UPDATE)) @@ -603,10 +624,12 @@ upll_rc_t NwMonitorHostMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_CFG_SYNTAX; } } else if (((operation == UNC_OP_READ) || (operation == UNC_OP_READ_SIBLING) - || (operation == UNC_OP_READ_SIBLING_BEGIN) - || (operation == UNC_OP_READ_SIBLING_COUNT)) - && ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) - || (dt_type == UPLL_DT_STARTUP) || (dt_type == UPLL_DT_STATE))) { + || (operation == UNC_OP_READ_SIBLING_BEGIN) + || (operation == UNC_OP_READ_SIBLING_COUNT)) + && ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) + || (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { if (val_nwm_host != NULL) { @@ -629,12 +652,13 @@ upll_rc_t NwMonitorHostMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION1; } } else if ((operation == UNC_OP_DELETE) || (operation == UNC_OP_READ_NEXT) - || (operation == UNC_OP_READ_BULK)) { - UPLL_LOG_TRACE("Value structure is none for operation type:%d", operation); + || (operation == UNC_OP_READ_BULK)) { + UPLL_LOG_TRACE("Value structure is none for operation type:%d", + operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Invalid datatype(%d) and operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } @@ -646,86 +670,86 @@ upll_rc_t NwMonitorHostMoMgr::ValidateNwMonHostValue( if (val_nwm_host->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] == UNC_VF_VALID) { if (!ValidateNumericRange(val_nwm_host->health_interval, - (uint16_t) kMinNWMHHealthInterval, - uint16_t(kMaxNWMHHealthInterval), true, true)) { + (uint16_t) kMinNWMHHealthInterval, + uint16_t(kMaxNWMHHealthInterval), true, true)) { UPLL_LOG_DEBUG("Syntax check failed.health_interval(%d)", - val_nwm_host->health_interval); + val_nwm_host->health_interval); return UPLL_RC_ERR_CFG_SYNTAX; } - } + } #if 0 else if ((val_nwm_host->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { val_nwm_host->health_interval = 0; } #endif if (val_nwm_host->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] == UNC_VF_VALID) { if (!ValidateNumericRange(val_nwm_host->recovery_interval, - (uint16_t) kMinNWMHRecoveryInterval, - (uint16_t) kMaxNWMHRecoveryInterval, true, - true)) { + (uint16_t) kMinNWMHRecoveryInterval, + (uint16_t) kMaxNWMHRecoveryInterval, true, + true)) { UPLL_LOG_DEBUG("Syntax check failed.recovery_interval:(%d)", - val_nwm_host->recovery_interval); + val_nwm_host->recovery_interval); return UPLL_RC_ERR_CFG_SYNTAX; } - } + } #if 0 else if ((val_nwm_host->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { val_nwm_host->recovery_interval = 0; } #endif if (val_nwm_host->valid[UPLL_IDX_FAILURE_COUNT_NWMH] == UNC_VF_VALID) { if (!ValidateNumericRange(val_nwm_host->failure_count, - (uint8_t) kMinNWMHFailureCount, - (uint8_t) kMaxNWMHFailureCount, true, true)) { + (uint8_t) kMinNWMHFailureCount, + (uint8_t) kMaxNWMHFailureCount, true, true)) { UPLL_LOG_DEBUG("Syntax check failed.failure_count(%d)", - val_nwm_host->failure_count); + val_nwm_host->failure_count); return UPLL_RC_ERR_CFG_SYNTAX; } - } + } #if 0 else if ((val_nwm_host->valid[UPLL_IDX_FAILURE_COUNT_NWMH] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { val_nwm_host->failure_count = 0; } #endif if (val_nwm_host->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] == UNC_VF_VALID) { if (!ValidateNumericRange(val_nwm_host->recovery_count, - (uint8_t) kMinNWMHRecoveryCount, - (uint8_t) kMaxNWMHRecoveryCount, true, true)) { + (uint8_t) kMinNWMHRecoveryCount, + (uint8_t) kMaxNWMHRecoveryCount, true, true)) { UPLL_LOG_DEBUG("Syntax check failed.recovery_count(%d)", - val_nwm_host->recovery_count); + val_nwm_host->recovery_count); return UPLL_RC_ERR_CFG_SYNTAX; } - } + } #if 0 else if ((val_nwm_host->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { val_nwm_host->recovery_count = 0; } #endif if (val_nwm_host->valid[UPLL_IDX_WAIT_TIME_NWMH] == UNC_VF_VALID) { if (!ValidateNumericRange(val_nwm_host->wait_time, - (uint8_t) kMinNWMHWaitTime, - (uint8_t) kMaxNWMHWaitTime, true, true)) { + (uint8_t) kMinNWMHWaitTime, + (uint8_t) kMaxNWMHWaitTime, true, true)) { UPLL_LOG_DEBUG("Syntax check failed.wait_time(%d)", - val_nwm_host->wait_time); + val_nwm_host->wait_time); return UPLL_RC_ERR_CFG_SYNTAX; } - } + } #if 0 else if ((val_nwm_host->valid[UPLL_IDX_WAIT_TIME_NWMH] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { val_nwm_host->wait_time = 0; } #endif @@ -739,8 +763,8 @@ upll_rc_t NwMonitorHostMoMgr::ValidateNwMonHostKey( UPLL_FUNC_TRACE; bool ret_val = UPLL_RC_SUCCESS; NwMonitorMoMgr *objnwmmgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_NWMONITOR))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_NWMONITOR))); if (NULL == objnwmmgr) { UPLL_LOG_DEBUG("unable to get NwMonitorMoMgr"); return UPLL_RC_ERR_GENERIC; @@ -753,8 +777,7 @@ upll_rc_t NwMonitorHostMoMgr::ValidateNwMonHostKey( } if ((operation == UNC_OP_READ_SIBLING_BEGIN) || (operation == UNC_OP_READ_SIBLING_COUNT)) { - - key_nwm_host->host_address.s_addr = 0x00000000; + key_nwm_host->host_address.s_addr = 0x00000000; } return UPLL_RC_SUCCESS; } @@ -764,7 +787,7 @@ upll_rc_t NwMonitorHostMoMgr::ValNwMonHostAttributeSupportCheck( UPLL_FUNC_TRACE; if ((val_nwm_host->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] == UNC_VF_VALID) || (val_nwm_host->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::nwm_host::kCapHealthInterval] == 0) { val_nwm_host->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -775,7 +798,7 @@ upll_rc_t NwMonitorHostMoMgr::ValNwMonHostAttributeSupportCheck( } if ((val_nwm_host->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] == UNC_VF_VALID) || (val_nwm_host->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::nwm_host::kCapRecoveryInterval] == 0) { val_nwm_host->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -786,7 +809,7 @@ upll_rc_t NwMonitorHostMoMgr::ValNwMonHostAttributeSupportCheck( } if ((val_nwm_host->valid[UPLL_IDX_FAILURE_COUNT_NWMH] == UNC_VF_VALID) || (val_nwm_host->valid[UPLL_IDX_FAILURE_COUNT_NWMH] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::nwm_host::kCapFailureCount] == 0) { val_nwm_host->valid[UPLL_IDX_FAILURE_COUNT_NWMH] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -797,7 +820,7 @@ upll_rc_t NwMonitorHostMoMgr::ValNwMonHostAttributeSupportCheck( } if ((val_nwm_host->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] == UNC_VF_VALID) || (val_nwm_host->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::nwm_host::kCapRecoveryCount] == 0) { val_nwm_host->valid[UPLL_IDX_RECOVERY_COUNT_NWMH] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -808,7 +831,7 @@ upll_rc_t NwMonitorHostMoMgr::ValNwMonHostAttributeSupportCheck( } if ((val_nwm_host->valid[UPLL_IDX_WAIT_TIME_NWMH] == UNC_VF_VALID) || (val_nwm_host->valid[UPLL_IDX_WAIT_TIME_NWMH] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::nwm_host::kCapWaitTime] == 0) { val_nwm_host->valid[UPLL_IDX_WAIT_TIME_NWMH] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -821,17 +844,17 @@ upll_rc_t NwMonitorHostMoMgr::ValNwMonHostAttributeSupportCheck( } upll_rc_t NwMonitorHostMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char * ctrlr_name) { + ConfigKeyVal *ikey, + const char * ctrlr_name) { UPLL_FUNC_TRACE; - if (!ikey || !req ) { + if (!ikey || !req) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); return UPLL_RC_ERR_GENERIC; } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -839,7 +862,7 @@ upll_rc_t NwMonitorHostMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + ctrlr_name, req->operation); bool result_code = false; uint32_t max_instance_count = 0; @@ -849,20 +872,13 @@ upll_rc_t NwMonitorHostMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, - &attrs); - if (result_code && (max_instance_count != 0) && - cur_instance_count >= max_instance_count) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &max_instance_count, &max_attrs, + &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; case UNC_OP_READ: @@ -870,7 +886,7 @@ upll_rc_t NwMonitorHostMoMgr::ValidateCapability(IpcReqRespHeader *req, case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; default: @@ -879,44 +895,48 @@ upll_rc_t NwMonitorHostMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " - "for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + "for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_nwm_host_t *val_nwm_host = NULL; if ((ikey->get_cfg_val()) && (ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValNwmHost) { val_nwm_host = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } if (val_nwm_host) { if (max_attrs > 0) { - return ValNwMonHostAttributeSupportCheck(val_nwm_host, attrs, req->operation); + return ValNwMonHostAttributeSupportCheck(val_nwm_host, + attrs, + req->operation); } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } return UPLL_RC_SUCCESS; } -upll_rc_t NwMonitorHostMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - controller_domain_t *ctrlr_dom, - DalDmlIntf *dmi) { +upll_rc_t +NwMonitorHostMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + controller_domain_t *ctrlr_dom, + DalDmlIntf *dmi) { DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; NwMonitorMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); + (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); upll_rc_t result_code = mgr->ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("Returning error %d", result_code); return result_code; } - GET_USER_DATA_CTRLR_DOMAIN(ikey,*ctrlr_dom); + GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); if ((!ctrlr_dom->ctrlr || !ctrlr_dom->domain)) return UPLL_RC_ERR_GENERIC; - UPLL_LOG_DEBUG("ctrlr %s domain %s",ctrlr_dom->ctrlr,ctrlr_dom->domain); + UPLL_LOG_DEBUG("ctrlr %s domain %s", ctrlr_dom->ctrlr, ctrlr_dom->domain); return UPLL_RC_SUCCESS; } diff --git a/coordinator/modules/upll/nwm_host_momgr.hh b/coordinator/modules/upll/nwm_host_momgr.hh index 45567cb2..aea056e2 100644 --- a/coordinator/modules/upll/nwm_host_momgr.hh +++ b/coordinator/modules/upll/nwm_host_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -19,250 +19,256 @@ namespace upll { namespace kt_momgr { class NwMonitorHostMoMgr : public VnodeChildMoMgr { - private: - static BindInfo nwm_host_bind_info[]; - static BindInfo key_nwm_host_maintbl_update_bind_info[]; + private: + static BindInfo nwm_host_bind_info[]; + static BindInfo key_nwm_host_maintbl_update_bind_info[]; - upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - controller_domain_t *ctrlr_dom, - DalDmlIntf *dmi); - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vbridge_networkmonitor_host::kDbiHealthInterval: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH]; - break; - case uudst::vbridge_networkmonitor_host::kDbiRecoveryInterval: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH]; - break; - case uudst::vbridge_networkmonitor_host::kDbiFailureCount: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_FAILURE_COUNT_NWMH]; - break; - case uudst::vbridge_networkmonitor_host::kDbiRecoveryCount: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_RECOVERY_COUNT_NWMH]; - break; - case uudst::vbridge_networkmonitor_host::kDbiWaitTime: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_WAIT_TIME_NWMH]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } + upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + controller_domain_t *ctrlr_dom, + DalDmlIntf *dmi); + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vbridge_networkmonitor_host::kDbiHealthInterval: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_HEALTH_INTERVAL_NWMH]; + break; + case uudst::vbridge_networkmonitor_host::kDbiRecoveryInterval: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_RECOVERY_INTERVAL_NWMH]; + break; + case uudst::vbridge_networkmonitor_host::kDbiFailureCount: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_FAILURE_COUNT_NWMH]; + break; + case uudst::vbridge_networkmonitor_host::kDbiRecoveryCount: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_RECOVERY_COUNT_NWMH]; + break; + case uudst::vbridge_networkmonitor_host::kDbiWaitTime: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_WAIT_TIME_NWMH]; + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; + } - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, void *val2, bool audit_status, - unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool audit); + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, void *val2, bool audit_status, + unc_keytype_operation_t op); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool audit); - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, - uint32_t driver_result, ConfigKeyVal *upd_key, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /* Rename */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VBR_NWMONITOR_HOST keytype - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + uint32_t driver_result, ConfigKeyVal *upd_key, + DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + /* Rename */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VBR_NWMONITOR_HOST keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_VBR_NWMONITOR_HOST keytype key structure. - * - * @param[in] key_nwm_host KT_VBR_NWMONITOR_HOST key structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateNwMonHostKey(key_nwm_host_t *key_nwm_host, - unc_keytype_operation_t operation = UNC_OP_INVALID); + /** + * @Brief Validates the syntax for KT_VBR_NWMONITOR_HOST keytype key structure. + * + * @param[in] key_nwm_host KT_VBR_NWMONITOR_HOST key structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateNwMonHostKey(key_nwm_host_t *key_nwm_host, + unc_keytype_operation_t operation = + UNC_OP_INVALID); - /** - * @Brief Validates the syntax for KT_VBR_NWMONITOR_HOST keytype value structure. - * - * @param[in] val_nwm_host KT_VBR_NWMONITOR_HOST value structure. - * @param[in] operation Operation name. - * - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateNwMonHostValue(val_nwm_host_t *val_nwm_host, - unc_keytype_operation_t operation = UNC_OP_INVALID); + /** + * @Brief Validates the syntax for KT_VBR_NWMONITOR_HOST keytype value structure. + * + * @param[in] val_nwm_host KT_VBR_NWMONITOR_HOST value structure. + * @param[in] operation Operation name. + * + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateNwMonHostValue(val_nwm_host_t *val_nwm_host, + unc_keytype_operation_t operation = + UNC_OP_INVALID); - /** - * @Brief Checks if the specified key type(KT_VBR_NWMONITOR_HOST) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] crtlr_name Controller name. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + /** + * @Brief Checks if the specified key type(KT_VBR_NWMONITOR_HOST) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] crtlr_name Controller name. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char * crtlr_name); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_nwm_host Value Structure. - * @param[in] attr pointer to controller attribute - * @param[in] operation Operation Name - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValNwMonHostAttributeSupportCheck(val_nwm_host_t *val_nwm_host, - const uint8_t* attrs, unc_keytype_operation_t operation); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_nwm_host Value Structure. + * @param[in] attr pointer to controller attribute + * @param[in] operation Operation Name + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValNwMonHostAttributeSupportCheck + (val_nwm_host_t *val_nwm_host, + const uint8_t* attrs, + unc_keytype_operation_t operation); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL) { - return UPLL_RC_SUCCESS; - } + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL) { + return UPLL_RC_SUCCESS; + } - public: - NwMonitorHostMoMgr(); - virtual ~NwMonitorHostMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, uint64_t index); + public: + NwMonitorHostMoMgr(); + virtual ~NwMonitorHostMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, uint64_t index); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/nwm_momgr.cc b/coordinator/modules/upll/nwm_momgr.cc index ee8572a6..6e4d9a04 100644 --- a/coordinator/modules/upll/nwm_momgr.cc +++ b/coordinator/modules/upll/nwm_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -18,66 +18,66 @@ namespace upll { namespace kt_momgr { BindInfo NwMonitorMoMgr::nwm_bind_info[] = { - { uudst::vbridge_networkmonitor_group::kDbiVtnName, CFG_KEY, offsetof( - key_nwm, vbr_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_group::kDbiVbrName, CFG_KEY, offsetof( - key_nwm, vbr_key.vbridge_name), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_group::kDbiNwmName, CFG_KEY, offsetof( - key_nwm, nwmonitor_name), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_group::kDbiAdminStatus, CFG_VAL, offsetof( - val_nwm, admin_status), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_group::kDbiOperStatus, ST_VAL, offsetof( - val_nwm_st, status), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_group::kDbiCtrlrName, CK_VAL, offsetof( - key_user_data_t, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_group::kDbiDomainId, CK_VAL, offsetof( - key_user_data_t, domain_id), - uud::kDalChar, 32 }, - { uudst::vbridge_networkmonitor_group::kDbiValidAdminStatus, CFG_META_VAL, - offsetof(val_nwm, valid[UPLL_IDX_ADMIN_STATUS_NWM]), uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_group::kDbiValidOperStatus, ST_META_VAL, - offsetof(val_nwm_st, valid[UPLL_IDX_STATUS_NWMS]), uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_group::kDbiCsAdminStatus, CS_VAL, offsetof( - val_nwm, cs_attr[0]), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_group::kDbiCsRowstatus, CS_VAL, offsetof( - val_nwm, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vbridge_networkmonitor_group::kDbiFlags, CK_VAL, offsetof( - key_user_data, flags), - uud::kDalUint8, 1 } }; + { uudst::vbridge_networkmonitor_group::kDbiVtnName, CFG_KEY, offsetof( + key_nwm, vbr_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vbridge_networkmonitor_group::kDbiVbrName, CFG_KEY, offsetof( + key_nwm, vbr_key.vbridge_name), + uud::kDalChar, 32 }, + { uudst::vbridge_networkmonitor_group::kDbiNwmName, CFG_KEY, offsetof( + key_nwm, nwmonitor_name), + uud::kDalChar, 32 }, + { uudst::vbridge_networkmonitor_group::kDbiAdminStatus, CFG_VAL, offsetof( + val_nwm, admin_status), + uud::kDalUint8, 1 }, + { uudst::vbridge_networkmonitor_group::kDbiOperStatus, ST_VAL, offsetof( + val_nwm_st, status), + uud::kDalUint8, 1 }, + { uudst::vbridge_networkmonitor_group::kDbiCtrlrName, CK_VAL, offsetof( + key_user_data_t, ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vbridge_networkmonitor_group::kDbiDomainId, CK_VAL, offsetof( + key_user_data_t, domain_id), + uud::kDalChar, 32 }, + { uudst::vbridge_networkmonitor_group::kDbiValidAdminStatus, CFG_META_VAL, + offsetof(val_nwm, valid[UPLL_IDX_ADMIN_STATUS_NWM]), uud::kDalUint8, 1 }, + { uudst::vbridge_networkmonitor_group::kDbiValidOperStatus, ST_META_VAL, + offsetof(val_nwm_st, valid[UPLL_IDX_STATUS_NWMS]), uud::kDalUint8, 1 }, + { uudst::vbridge_networkmonitor_group::kDbiCsAdminStatus, CS_VAL, offsetof( + val_nwm, cs_attr[0]), + uud::kDalUint8, 1 }, + { uudst::vbridge_networkmonitor_group::kDbiCsRowstatus, CS_VAL, offsetof( + val_nwm, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vbridge_networkmonitor_group::kDbiFlags, CK_VAL, offsetof( + key_user_data, flags), + uud::kDalUint8, 1 } }; BindInfo NwMonitorMoMgr::key_nwm_maintbl_update_bind_info[] = { - { uudst::vbridge_networkmonitor_group::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_nwm, vbr_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge_networkmonitor_group::kDbiVbrName, CFG_MATCH_KEY, offsetof( - key_nwm, vbr_key.vbridge_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_networkmonitor_group::kDbiNwmName, CFG_MATCH_KEY, offsetof( - key_nwm, nwmonitor_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_networkmonitor_group::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge_networkmonitor_group::kDbiVbrName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_networkmonitor_group::kDbiFlags, CK_VAL, offsetof( - key_user_data, flags), - uud::kDalUint8, 1 } }; + { uudst::vbridge_networkmonitor_group::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_nwm, vbr_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge_networkmonitor_group::kDbiVbrName, CFG_MATCH_KEY, offsetof( + key_nwm, vbr_key.vbridge_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_networkmonitor_group::kDbiNwmName, CFG_MATCH_KEY, offsetof( + key_nwm, nwmonitor_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_networkmonitor_group::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge_networkmonitor_group::kDbiVbrName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_networkmonitor_group::kDbiFlags, CK_VAL, offsetof( + key_user_data, flags), + uud::kDalUint8, 1 } }; unc_key_type_t NwMonitorMoMgr::nwm_child[] = { UNC_KT_VBR_NWMONITOR_HOST }; NwMonitorMoMgr::NwMonitorMoMgr() { UPLL_FUNC_TRACE - ntable = MAX_MOMGR_TBLS; + ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table( uudst::kDbiVbrNwMonTbl, UNC_KT_VBR_NWMONITOR, nwm_bind_info, @@ -172,27 +172,28 @@ upll_rc_t NwMonitorMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(nwm_key->vbr_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName + 1)); break; case UNC_KT_VBRIDGE: uuu::upll_strncpy(nwm_key->vbr_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(nwm_key->vbr_key.vbridge_name, - reinterpret_cast(pkey)->vbridge_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(pkey)->vbridge_name, + (kMaxLenVnodeName + 1)); break; case UNC_KT_VBR_NWMONITOR: uuu::upll_strncpy(nwm_key->vbr_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast + (pkey)->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(nwm_key->vbr_key.vbridge_name, - reinterpret_cast(pkey)->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(pkey)->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(nwm_key->nwmonitor_name, - reinterpret_cast(pkey)->nwmonitor_name, - (kMaxLenNwmName+1)); + reinterpret_cast(pkey)->nwmonitor_name, + (kMaxLenNwmName+1)); default: break; } @@ -225,11 +226,11 @@ upll_rc_t NwMonitorMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, key_vbr *vbr_key = reinterpret_cast( ConfigKeyVal::Malloc(sizeof(key_vbr))); uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(vbr_key->vbridge_name, - reinterpret_cast(pkey)->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(pkey)->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, vbr_key, NULL); SET_USER_DATA(okey, ikey); @@ -341,24 +342,27 @@ upll_rc_t NwMonitorMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < (sizeof(nwm_val->valid) / sizeof(nwm_val->valid[0])); - ++loop) { + loop < (sizeof(nwm_val->valid) / sizeof(nwm_val->valid[0])); + ++loop) { if ((UNC_VF_VALID == (uint8_t) nwm_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == (uint8_t) nwm_val->valid[loop])) - nwm_val->cs_attr[loop] = cs_status; + || (UNC_VF_VALID_NO_VALUE == (uint8_t) nwm_val->valid[loop])) + nwm_val->cs_attr[loop] = cs_status; else if ((UNC_VF_INVALID == nwm_val->valid[loop]) && - (UNC_OP_CREATE == op)) - nwm_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; + (UNC_OP_CREATE == op)) + nwm_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; else if ((UNC_VF_INVALID == nwm_val->valid[loop]) && - (UNC_OP_UPDATE == op)) - nwm_val->cs_attr[loop] = nwm_val2->cs_attr[loop]; + (UNC_OP_UPDATE == op)) + nwm_val->cs_attr[loop] = nwm_val2->cs_attr[loop]; } return UPLL_RC_SUCCESS; } upll_rc_t NwMonitorMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_nwm_t *val; val = (ckv_running != NULL) ? @@ -368,13 +372,13 @@ upll_rc_t NwMonitorMoMgr::UpdateAuditConfigStatus( } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && - UNC_VF_VALID == val->valid[loop]) || cs_status == UNC_CS_APPLIED) { + UNC_VF_VALID == val->valid[loop]) || cs_status == UNC_CS_APPLIED) { val->cs_attr[loop] = cs_status; } } @@ -397,7 +401,7 @@ upll_rc_t NwMonitorMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vwm->vbr_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, (kMaxLenVtnName + 1)); + key_rename->old_unc_vtn_name, (kMaxLenVtnName + 1)); if (ikey->get_key_type() == UNC_KT_VBRIDGE) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { /* Addressed RESOURCE_LEAK */ @@ -405,14 +409,14 @@ upll_rc_t NwMonitorMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vwm->vbr_key.vbridge_name, - key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); + key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { ConfigKeyVal::Free(key_vwm); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vwm->vbr_key.vbridge_name, - key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); + key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); } okey = new ConfigKeyVal(UNC_KT_VBR_NWMONITOR, IpctSt::kIpcStKeyNwm, key_vwm, @@ -437,7 +441,7 @@ bool NwMonitorMoMgr::CompareValidValue(void *&val1, void *val2, val_nwm_t *val_nwm1 = reinterpret_cast(val1); val_nwm_t *val_nwm2 = reinterpret_cast(val2); for (unsigned int loop = 0; - loop < sizeof(val_nwm1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_nwm1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == val_nwm1->valid[loop] && UNC_VF_VALID == val_nwm2->valid[loop]) val_nwm1->valid[loop] = UNC_VF_VALID_NO_VALUE; @@ -449,7 +453,7 @@ bool NwMonitorMoMgr::CompareValidValue(void *&val1, void *val2, } for (unsigned int loop = 0; loop < (sizeof(val_nwm1->valid) / sizeof(val_nwm1->valid[0])); - ++loop) { + ++loop) { if ((UNC_VF_VALID == (uint8_t) val_nwm1->valid[loop])|| (UNC_VF_VALID_NO_VALUE == (uint8_t) val_nwm1->valid[loop])) { invalid_attr = false; @@ -460,7 +464,7 @@ bool NwMonitorMoMgr::CompareValidValue(void *&val1, void *val2, } upll_rc_t NwMonitorMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; if (!ikey || !req || !(ikey->get_key())) { @@ -514,13 +518,13 @@ upll_rc_t NwMonitorMoMgr::ValidateMessage(IpcReqRespHeader *req, } } else if (((operation == UNC_OP_READ) || - (operation == UNC_OP_READ_SIBLING) || - (operation == UNC_OP_READ_SIBLING_BEGIN) || - (operation == UNC_OP_READ_SIBLING_COUNT)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP) || - (dt_type == UPLL_DT_STATE))) { + (operation == UNC_OP_READ_SIBLING) || + (operation == UNC_OP_READ_SIBLING_BEGIN) || + (operation == UNC_OP_READ_SIBLING_COUNT)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { if ((option1 == UNC_OPT1_NORMAL) || ((option1 == UNC_OPT1_DETAIL) && (operation != UNC_OP_READ_SIBLING_COUNT) && @@ -549,46 +553,48 @@ upll_rc_t NwMonitorMoMgr::ValidateMessage(IpcReqRespHeader *req, } } else if ((operation == UNC_OP_DELETE) || (operation == UNC_OP_READ_NEXT) - || (operation == UNC_OP_READ_BULK)) { + || (operation == UNC_OP_READ_BULK)) { UPLL_LOG_TRACE("Value structure is none for operation type:%d", operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Invalid datatype(%d) and operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } return UPLL_RC_SUCCESS; } -upll_rc_t NwMonitorMoMgr::ValidateNwMonValue(val_nwm_t *val_nwm, - unc_keytype_operation_t operation) { +upll_rc_t +NwMonitorMoMgr::ValidateNwMonValue(val_nwm_t *val_nwm, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if (val_nwm->valid[UPLL_IDX_ADMIN_STATUS_NWM] == UNC_VF_VALID) { if (!ValidateNumericRange(val_nwm->admin_status, - (uint8_t) UPLL_ADMIN_ENABLE, - (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { + (uint8_t) UPLL_ADMIN_ENABLE, + (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { UPLL_LOG_DEBUG("Syntax check failed admin_stat-%d", val_nwm->admin_status); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((val_nwm->valid[UPLL_IDX_ADMIN_STATUS_NWM] == - UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { /* Copy default value */ val_nwm->admin_status = UPLL_ADMIN_ENABLE; } return UPLL_RC_SUCCESS; } upll_rc_t NwMonitorMoMgr::ValidateNwMonKey(key_nwm_t *key_nwm, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; VbrMoMgr *objvbrmgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); if (NULL == objvbrmgr) { UPLL_LOG_DEBUG("unable to get VbrMoMgr object to validate key_vbr"); return UPLL_RC_ERR_GENERIC; @@ -602,11 +608,11 @@ upll_rc_t NwMonitorMoMgr::ValidateNwMonKey(key_nwm_t *key_nwm, if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { ret_val = ValidateKey(reinterpret_cast(key_nwm->nwmonitor_name), - kMinLenVnodeName, kMaxLenVnodeName); + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed.nwmonitor_name-(%s)", - key_nwm->nwmonitor_name); + key_nwm->nwmonitor_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -616,8 +622,11 @@ upll_rc_t NwMonitorMoMgr::ValidateNwMonKey(key_nwm_t *key_nwm, return ret_val; } -upll_rc_t NwMonitorMoMgr::ValNwMonAttributeSupportCheck(val_nwm_t *val_nwm, - const uint8_t* attrs, unc_keytype_operation_t operation) { +upll_rc_t +NwMonitorMoMgr::ValNwMonAttributeSupportCheck( + val_nwm_t *val_nwm, + const uint8_t* attrs, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if ((val_nwm->valid[UPLL_IDX_ADMIN_STATUS_NWM] == UNC_VF_VALID) || (val_nwm->valid[UPLL_IDX_ADMIN_STATUS_NWM] == UNC_VF_VALID_NO_VALUE)) { @@ -634,8 +643,8 @@ upll_rc_t NwMonitorMoMgr::ValNwMonAttributeSupportCheck(val_nwm_t *val_nwm, } upll_rc_t NwMonitorMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char * ctrlr_name) { + ConfigKeyVal *ikey, + const char * ctrlr_name) { UPLL_FUNC_TRACE; if (!ikey || !req) { @@ -665,12 +674,6 @@ upll_rc_t NwMonitorMoMgr::ValidateCapability(IpcReqRespHeader *req, result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - cur_instance_count >= max_instance_count) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; } @@ -740,22 +743,24 @@ upll_rc_t NwMonitorMoMgr::IsReferenced(ConfigKeyVal *ikey, } if (indx == 0) { val_vtn_flowfilter_entry_t *flowfilter_val =reinterpret_cast - - (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); + + (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); flowfilter_val->valid[UPLL_IDX_NWN_NAME_VFFE] = UNC_VF_VALID; uuu::upll_strncpy(flowfilter_val->nwm_name, reinterpret_cast - (ikey->get_key())->nwmonitor_name, (kMaxLenNwmName + 1)); + (ikey->get_key())->nwmonitor_name, + (kMaxLenNwmName + 1)); cval = new ConfigVal(IpctSt::kIpcStValVtnFlowfilterEntry, - flowfilter_val); + flowfilter_val); } else { val_flowfilter_entry_t *flowfilter_val =reinterpret_cast - - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); flowfilter_val->valid[UPLL_IDX_NWM_NAME_FFE] = UNC_VF_VALID; uuu::upll_strncpy(flowfilter_val->nwm_name, reinterpret_cast - (ikey->get_key())->nwmonitor_name, (kMaxLenNwmName + 1)); + (ikey->get_key())->nwmonitor_name, + (kMaxLenNwmName + 1)); cval = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, - flowfilter_val); + flowfilter_val); } result_code = mgr->GetChildConfigKey(ckv_tmp, ikey); if (result_code != UPLL_RC_SUCCESS) { @@ -768,11 +773,11 @@ upll_rc_t NwMonitorMoMgr::IsReferenced(ConfigKeyVal *ikey, ckv_tmp->SetCfgVal(cval); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = mgr->ReadConfigDB(ckv_tmp, dt_type, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Existence check in keytype %d result_code %d", - ckv_tmp->get_key_type(), result_code); + ckv_tmp->get_key_type(), result_code); delete ckv_tmp; return result_code; } @@ -790,12 +795,12 @@ upll_rc_t NwMonitorMoMgr::IsReferenced(ConfigKeyVal *ikey, } upll_rc_t NwMonitorMoMgr::OnNwmonFault( - string ctrlr_name , - string domain_id, - const key_vtn &key_vtn, - const pfcdrv_network_mon_alarm_data_t &alarm_data, - bool alarm_raised, - DalDmlIntf *dmi ) { + string ctrlr_name , + string domain_id, + const key_vtn &key_vtn, + const pfcdrv_network_mon_alarm_data_t &alarm_data, + bool alarm_raised, + DalDmlIntf *dmi ) { UPLL_FUNC_TRACE; ConfigKeyVal *ikey = NULL; char *alarm_status = NULL; @@ -805,7 +810,7 @@ upll_rc_t NwMonitorMoMgr::OnNwmonFault( upll_rc_t result_code = UPLL_RC_SUCCESS; char *vtn_name = NULL; VtnMoMgr *vtn_mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); + (const_cast(GetMoManager(UNC_KT_VTN))); if (NULL == vtn_mgr) { UPLL_LOG_DEBUG("unable to get VtnMoMgr object to validate key_vtn"); return UPLL_RC_ERR_GENERIC; @@ -829,7 +834,7 @@ upll_rc_t NwMonitorMoMgr::OnNwmonFault( uint8_t *ctrlr_id = reinterpret_cast (const_cast(ctrlr_name.c_str())); result_code = vtn_mgr->GetRenamedUncKey(ikey, UPLL_DT_RUNNING, - dmi, ctrlr_id); + dmi, ctrlr_id); if (result_code != UPLL_RC_SUCCESS && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("Error in getting renamed vtn name"); @@ -839,15 +844,14 @@ upll_rc_t NwMonitorMoMgr::OnNwmonFault( if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { ikey->SetCfgVal(NULL); result_code = vtn_mgr->UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, - dmi, MAINTBL); + dmi, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { delete ikey; return result_code; } - result_code = UPLL_RC_ERR_INSTANCE_EXISTS == result_code?UPLL_RC_SUCCESS: - result_code; + result_code = UPLL_RC_SUCCESS; } - + vtn_key = reinterpret_cast(ikey->get_key()); vtn_name = reinterpret_cast(vtn_key->vtn_name); @@ -859,7 +863,7 @@ upll_rc_t NwMonitorMoMgr::OnNwmonFault( UPLL_LOG_INFO("Network Monitor Fault alarm : status - %s, " "network_mon_group_name - %s, " - "controller - %s, domain - %s, vtn - %s", + "controller - %s, domain - %s, vtn - %s", alarm_status, alarm_data.network_mon_group_name, ctrlr_name.c_str(), domain_id.c_str(), vtn_name); @@ -867,6 +871,94 @@ upll_rc_t NwMonitorMoMgr::OnNwmonFault( return result_code; } +upll_rc_t NwMonitorMoMgr::MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; + ConfigKeyVal *tkey = NULL; + + if (!ikey || !ikey->get_key() || !(strlen(reinterpret_cast + (ctrlr_id)))) { + UPLL_LOG_DEBUG("Input is NULL"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *dup_key = NULL; + result_code = GetChildConfigKey(dup_key, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + DELETE_IF_NOT_NULL(dup_key); + return result_code; + } + /* + * Here getting FULL Key (VTN, VBR and Network Monitor Name ) + */ + result_code = ReadConfigDB(dup_key, UPLL_DT_IMPORT, UNC_OP_READ, dbop, dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(dup_key); + return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + DELETE_IF_NOT_NULL(dup_key); + return result_code; + } + ConfigKeyVal *travel = dup_key; + while (travel) { + /* + * Checks the Val structure is available or not.If availabl + * Checks Host address value is available or not in import ckval + */ + result_code = DupConfigKeyVal(tkey, travel, MAINTBL); + + if (UPLL_RC_SUCCESS != result_code || tkey == NULL) { + UPLL_LOG_DEBUG(" DupConfigKeyVal is Failed"); + DELETE_IF_NOT_NULL(tkey); + DELETE_IF_NOT_NULL(dup_key); + return result_code; + } + /* Same Network Monitor Name should not present under parent VTN + * in Candidate DB + */ + key_nwm *key_nwmon = + reinterpret_cast(tkey->get_key()); + memset(key_nwmon->vbr_key.vbridge_name, 0, + sizeof(key_nwmon->vbr_key.vbridge_name)); + // Existence check in Candidate DB + result_code = UpdateConfigDB(tkey, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + ikey->ResetWith(tkey); + DELETE_IF_NOT_NULL(tkey); + DELETE_IF_NOT_NULL(dup_key); + UPLL_LOG_DEBUG("NetworkMonitor Name Conflict %s", + (ikey->ToStrAll()).c_str()); + return UPLL_RC_ERR_MERGE_CONFLICT; + } + + /* Any other DB error */ + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + DELETE_IF_NOT_NULL(tkey); + DELETE_IF_NOT_NULL(dup_key); + return result_code; + } + DELETE_IF_NOT_NULL(tkey); + travel = travel->get_next_cfg_key_val(); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + DELETE_IF_NOT_NULL(dup_key); + return UPLL_RC_SUCCESS; + } + DELETE_IF_NOT_NULL(dup_key); + return result_code; +} + } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/nwm_momgr.hh b/coordinator/modules/upll/nwm_momgr.hh index 901b98ab..275feb09 100644 --- a/coordinator/modules/upll/nwm_momgr.hh +++ b/coordinator/modules/upll/nwm_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -19,243 +19,270 @@ namespace upll { namespace kt_momgr { class NwMonitorMoMgr : public VnodeChildMoMgr { - private: - static unc_key_type_t nwm_child[]; - static BindInfo nwm_bind_info[]; - static BindInfo key_nwm_maintbl_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vbridge_networkmonitor_group::kDbiOperStatus: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_STATUS_NWMS]; - break; - case uudst::vbridge_networkmonitor_group::kDbiAdminStatus: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_ADMIN_STATUS_NWM]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } + private: + static unc_key_type_t nwm_child[]; + static BindInfo nwm_bind_info[]; + static BindInfo key_nwm_maintbl_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vbridge_networkmonitor_group::kDbiOperStatus: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_STATUS_NWMS]; + break; + case uudst::vbridge_networkmonitor_group::kDbiAdminStatus: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_ADMIN_STATUS_NWM]; + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, void *val2, bool audit_status, - unc_keytype_operation_t op); + return UPLL_RC_SUCCESS; + } + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, void *val2, bool audit_status, + unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool audit); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool audit); - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an - * input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from - * which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /* Rename */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VBR_NWMONITOR keytype - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of - * input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_VBR_NWMONITOR keytype value structure. - * - * @param[in] val_nwm KT_VBR_NWMONITOR value structure. - * @param[in] operation Operation name. - * - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateNwMonValue(val_nwm_t *val_nwm, - unc_keytype_operation_t operation = UNC_OP_INVALID); - /** - * @Brief Checks if the specified key type(KT_VBR_NWMONITOR) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] crtlr_name Controller name. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an + * input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from + * which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + /* Rename */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VBR_NWMONITOR keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of + * input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax for KT_VBR_NWMONITOR keytype value structure. + * + * @param[in] val_nwm KT_VBR_NWMONITOR value structure. + * @param[in] operation Operation name. + * + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateNwMonValue(val_nwm_t *val_nwm, + unc_keytype_operation_t operation = + UNC_OP_INVALID); + /** + * @Brief Checks if the specified key type(KT_VBR_NWMONITOR) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] crtlr_name Controller name. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char * crtlr_name); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_nwm Value Structure. - * @param[in] attr pointer to controller attribute - * @param[in] operation Operation Name - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValNwMonAttributeSupportCheck(val_nwm_t *val_nwm, - const uint8_t* attrs, - unc_keytype_operation_t operation); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_nwm Value Structure. + * @param[in] attr pointer to controller attribute + * @param[in] operation Operation Name + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValNwMonAttributeSupportCheck(val_nwm_t *val_nwm, + const uint8_t* attrs, + unc_keytype_operation_t operation); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL) { - return UPLL_RC_SUCCESS; - } + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL) { + return UPLL_RC_SUCCESS; + } - public: - NwMonitorMoMgr(); - virtual ~NwMonitorMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } + public: + NwMonitorMoMgr(); + virtual ~NwMonitorMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, uint64_t index); - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, uint64_t index); + /* @brief This method invoke when the Network MOnitor merge + * hapeening between Running and DT import. This will + * checks the network monitor name is unique or not + * under the parent VTN + * + * @param[in] keytype UNC KEY TYPE + * @param[in/out] ctrlr_id Controller ID + * @param[in] conflict_ckv key and value structure + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ - /** - * @Brief Validates the syntax for KT_VBR_NWMONITOR keytype key structure. - * - * @param[in] key_nwm KT_VBR_NWMONITOR key structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateNwMonKey(key_nwm_t *key_nwm, - unc_keytype_operation_t operation = UNC_OP_INVALID); - upll_rc_t OnNwmonFault( - string ctrlr_name , - string domain_id, - const key_vtn &key_vtn, - const pfcdrv_network_mon_alarm_data_t &alarm_data, - bool alarm_raised, - DalDmlIntf *dmi ); + upll_rc_t MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); + /** + * @Brief Validates the syntax for KT_VBR_NWMONITOR keytype key structure. + * + * @param[in] key_nwm KT_VBR_NWMONITOR key structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateNwMonKey(key_nwm_t *key_nwm, + unc_keytype_operation_t operation = + UNC_OP_INVALID); + upll_rc_t OnNwmonFault( + string ctrlr_name , + string domain_id, + const key_vtn &key_vtn, + const pfcdrv_network_mon_alarm_data_t &alarm_data, + bool alarm_raised, + DalDmlIntf *dmi); }; } // namespace kt_momgr } // namespace upll diff --git a/coordinator/modules/upll/policingprofile_entry_momgr.cc b/coordinator/modules/upll/policingprofile_entry_momgr.cc index 401afef4..a2e77aee 100644 --- a/coordinator/modules/upll/policingprofile_entry_momgr.cc +++ b/coordinator/modules/upll/policingprofile_entry_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -17,7 +17,7 @@ #include "unc/upll_errno.h" #define GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, en) \ - (tbl == MAINTBL) ? &(l_val_ff->valid[en]) : &(l_val_ctrl_ff->valid[en]) + (tbl == MAINTBL) ? &(l_val_ff->valid[en]) : &(l_val_ctrl_ff->valid[en]) namespace unc { namespace upll { @@ -209,137 +209,137 @@ BindInfo PolicingProfileEntryMoMgr::policingprofileentry_bind_info[] = { offsetof(val_policingprofile_entry_t, cs_attr[2]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsCbs, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[3]), + val_policingprofile_entry_t, cs_attr[3]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsPir, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[4]), + val_policingprofile_entry_t, cs_attr[4]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsPbs, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[5]), + val_policingprofile_entry_t, cs_attr[5]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsGreenAction, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[6]), + val_policingprofile_entry_t, cs_attr[6]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsGreenPriority, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[7]), + val_policingprofile_entry_t, cs_attr[7]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsGreenDscp, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[8]), + val_policingprofile_entry_t, cs_attr[8]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsGreenDrop, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[9]), + val_policingprofile_entry_t, cs_attr[9]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsYellowAction, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[10]), + val_policingprofile_entry_t, cs_attr[10]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsYellowPriority, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[11]), + val_policingprofile_entry_t, cs_attr[11]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsYellowDscp, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[12]), + val_policingprofile_entry_t, cs_attr[12]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsYellowDrop, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[13]), + val_policingprofile_entry_t, cs_attr[13]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsRedAction, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[14]), + val_policingprofile_entry_t, cs_attr[14]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsRedPriority, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[15]), + val_policingprofile_entry_t, cs_attr[15]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsRedDscp, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[16]), + val_policingprofile_entry_t, cs_attr[16]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiCsRedDrop, CS_VAL, offsetof( - val_policingprofile_entry_t, cs_attr[17]), + val_policingprofile_entry_t, cs_attr[17]), uud::kDalUint8, 1 } }; BindInfo PolicingProfileEntryMoMgr:: - policingprofileentry_controller_bind_info[] = { +policingprofileentry_controller_bind_info[] = { { uudst::policingprofile_entry_ctrlr::kDbiPolicingProfileName, CFG_KEY, offsetof(key_policingprofile_entry_t, policingprofile_key.policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) }, + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) }, { uudst::policingprofile_entry_ctrlr::kDbiSequenceNum, CFG_KEY, offsetof( - key_policingprofile_entry_t, sequence_num), + key_policingprofile_entry_t, sequence_num), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCtrlrName, CK_VAL, offsetof( - key_user_data_t, ctrlr_id), + key_user_data_t, ctrlr_id), uud::kDalChar, kMaxLenCtrlrId + 1 }, { uudst::policingprofile_entry_ctrlr::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), + key_user_data_t, flags), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidFlowlist, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[0]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[0]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidRate, CFG_META_VAL, offsetof( - val_policingprofile_entry_ctrl_t, valid[1]), + val_policingprofile_entry_ctrl_t, valid[1]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidCir, CFG_META_VAL, offsetof( - val_policingprofile_entry_ctrl_t, valid[2]), + val_policingprofile_entry_ctrl_t, valid[2]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidCbs, CFG_META_VAL, offsetof( - val_policingprofile_entry_ctrl_t, valid[3]), + val_policingprofile_entry_ctrl_t, valid[3]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidPir, CFG_META_VAL, offsetof( - val_policingprofile_entry_ctrl_t, valid[4]), + val_policingprofile_entry_ctrl_t, valid[4]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidPbs, CFG_META_VAL, offsetof( - val_policingprofile_entry_ctrl_t, valid[5]), + val_policingprofile_entry_ctrl_t, valid[5]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidGreenAction, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[6]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[6]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidGreenPriority, CFG_META_VAL, offsetof(val_policingprofile_entry_ctrl_t, valid[7]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidGreenDscp, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[8]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[8]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidGreenDrop, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[9]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[9]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidYellowAction, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[10]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[10]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidYellowPriority, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[11]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[11]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidYellowDscp, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[12]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[12]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidYellowDrop, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[13]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[13]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidRedAction, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[14]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[14]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidRedPriority, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[15]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[15]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidRedDscp, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[16]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[16]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiValidRedDrop, CFG_META_VAL, - offsetof(val_policingprofile_entry_ctrl_t, valid[17]), - uud::kDalUint8, 1 }, + offsetof(val_policingprofile_entry_ctrl_t, valid[17]), + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsRowStatus, CS_VAL, offsetof( - val_policingprofile_entry_ctrl_t, cs_row_status), + val_policingprofile_entry_ctrl_t, cs_row_status), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsFlowlist, CS_VAL, offsetof( - val_policingprofile_entry_ctrl_t, cs_attr[0]), + val_policingprofile_entry_ctrl_t, cs_attr[0]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsRate, CS_VAL, offsetof( - val_policingprofile_entry_ctrl_t, cs_attr[1]), + val_policingprofile_entry_ctrl_t, cs_attr[1]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsCir, CS_VAL, offsetof( - val_policingprofile_entry_ctrl_t, cs_attr[2]), + val_policingprofile_entry_ctrl_t, cs_attr[2]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsCbs, CS_VAL, offsetof( - val_policingprofile_entry_ctrl_t, cs_attr[3]), + val_policingprofile_entry_ctrl_t, cs_attr[3]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsPir, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[4]), @@ -355,68 +355,68 @@ BindInfo PolicingProfileEntryMoMgr:: uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsGreenDscp, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[8]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsGreenDrop, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[9]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsYellowAction, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[10]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsYellowPriority, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[11]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsYellowDscp, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[12]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsYellowDrop, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[13]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsRedAction, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[14]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsRedPriority, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[15]), uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsRedDscp, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[16]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiCsRedDrop, CS_VAL, offsetof(val_policingprofile_entry_ctrl_t, cs_attr[17]), - uud::kDalUint8, 1 } }; + uud::kDalUint8, 1 } }; BindInfo PolicingProfileEntryMoMgr::rename_policingprofile_entry_main_tbl[] = { { uudst::policingprofile_entry::kDbiPolicingProfileName, CFG_MATCH_KEY, offsetof(key_policingprofile_entry_t, policingprofile_key.policingprofile_name), - uud::kDalChar, kMaxLenPolicingProfileName + 1 }, + uud::kDalChar, kMaxLenPolicingProfileName + 1 }, { uudst::policingprofile_entry::kDbiSequenceNum, CFG_MATCH_KEY, offsetof( - key_policingprofile_entry_t, sequence_num), + key_policingprofile_entry_t, sequence_num), uud::kDalUint8, 1 }, { uudst::policingprofile_entry::kDbiPolicingProfileName, CFG_INPUT_KEY, offsetof(key_rename_vnode_info_t, new_policingprofile_name), - uud::kDalChar, kMaxLenPolicingProfileName + 1 }, + uud::kDalChar, kMaxLenPolicingProfileName + 1 }, { uudst::policingprofile_entry::kDbiFlags, CK_VAL, offsetof(key_user_data_t, flags), uud::kDalUint8, 1 } }; BindInfo PolicingProfileEntryMoMgr::rename_policingprofile_entry_ctrl_tbl[] = { { uudst::policingprofile_entry_ctrlr::kDbiPolicingProfileName, CFG_MATCH_KEY, offsetof(key_policingprofile_entry_t, - policingprofile_key.policingprofile_name), + policingprofile_key.policingprofile_name), uud::kDalChar, kMaxLenPolicingProfileName + 1 }, { uudst::policingprofile_entry_ctrlr::kDbiSequenceNum, CFG_MATCH_KEY, offsetof(key_policingprofile_entry_t, sequence_num), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::policingprofile_entry_ctrlr::kDbiPolicingProfileName, CFG_INPUT_KEY, offsetof(key_rename_vnode_info_t, new_policingprofile_name), uud::kDalChar, kMaxLenPolicingProfileName + 1 }, { uudst::policingprofile_entry_ctrlr::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } }; + key_user_data_t, flags), + uud::kDalUint8, 1 } }; bool PolicingProfileEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (MAINTBL == tbl) { nattr = NUM_PP_KEY_MAIN_COL; @@ -432,13 +432,15 @@ bool PolicingProfileEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, PolicingProfileEntryMoMgr::PolicingProfileEntryMoMgr() : MoMgrImpl() { UPLL_FUNC_TRACE; - // Rename operation is not support for this KT + // Rename operation is not support for this KT ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; /* For Main Table */ - table[MAINTBL]= new Table(uudst::kDbiPolicingProfileEntryTbl, - UNC_KT_POLICING_PROFILE_ENTRY, policingprofileentry_bind_info, + table[MAINTBL]= new Table( + uudst::kDbiPolicingProfileEntryTbl, + UNC_KT_POLICING_PROFILE_ENTRY, + policingprofileentry_bind_info, IpctSt::kIpcStKeyPolicingprofileEntry, IpctSt::kIpcStValPolicingprofileEntry, uudst::policingprofile_entry::kDbiPolicingProfileEntryNumCols); @@ -447,20 +449,22 @@ PolicingProfileEntryMoMgr::PolicingProfileEntryMoMgr() : MoMgrImpl() { table[RENAMETBL] = NULL; /* For Controller Table */ - table[CTRLRTBL] = new Table(uudst::kDbiPolicingProfileEntryCtrlrTbl, - UNC_KT_POLICING_PROFILE_ENTRY, policingprofileentry_controller_bind_info, - IpctSt::kIpcStKeyPolicingprofileEntry, IpctSt::kIpcInvalidStNum, + table[CTRLRTBL] = new Table( + uudst::kDbiPolicingProfileEntryCtrlrTbl, + UNC_KT_POLICING_PROFILE_ENTRY, + policingprofileentry_controller_bind_info, + IpctSt::kIpcStKeyPolicingprofileEntry, + IpctSt::kIpcInvalidStNum, uudst::policingprofile_entry_ctrlr::kDbiPolicingProfileEntryCtrlrNumCols); nchild = 0; child = NULL; - cur_instance_count = 0; }; upll_rc_t PolicingProfileEntryMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; /* *ck_nxtval;*/ int array_size = 0; @@ -474,27 +478,27 @@ upll_rc_t PolicingProfileEntryMoMgr::AllocVal(ConfigVal *&ck_val, (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); array_size = (sizeof(reinterpret_cast - (val)->valid)/ + (val)->valid)/ sizeof(reinterpret_cast (val)->valid[0])); for (int index = 0; index < array_size; index++) { reinterpret_cast(val)->valid[index] = - UNC_VF_INVALID; + UNC_VF_INVALID; } ck_val = new ConfigVal(IpctSt::kIpcStValPolicingprofileEntry, val); break; case CTRLRTBL: val = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_policingprofile_entry_ctrl_t))); + sizeof(val_policingprofile_entry_ctrl_t))); array_size = (sizeof(reinterpret_cast - (val)->valid)/ - sizeof(reinterpret_cast - (val)->valid[0])); + (val)->valid)/ + sizeof(reinterpret_cast + (val)->valid[0])); for (int index = 0; index < array_size; index++) { reinterpret_cast(val)->valid[index] = - UNC_VF_INVALID; + UNC_VF_INVALID; } ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); break; @@ -529,7 +533,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetChildConfigKey( } if (NULL == pkey) { UPLL_LOG_DEBUG("error Generated::Key type not supported :-"); -// if(key_ppe) free(key_ppe); + // if ( key_ppe) free(key_ppe); return UPLL_RC_ERR_GENERIC; } if (okey) { @@ -571,10 +575,10 @@ upll_rc_t PolicingProfileEntryMoMgr::GetChildConfigKey( key_ppe->policingprofile_key.policingprofile_name); UPLL_LOG_DEBUG("GetChildConfigKey %d", key_ppe->sequence_num); - + if ((okey) && !(okey->get_key())) { UPLL_LOG_TRACE("okey not NULL profile name updated"); - okey->SetKey(IpctSt::kIpcStKeyPolicingprofileEntry, key_ppe); + okey->SetKey(IpctSt::kIpcStKeyPolicingprofileEntry, key_ppe); } if (!okey) { @@ -596,33 +600,34 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *unc_key = NULL; UPLL_LOG_TRACE("%s GetRenamedUncKey pp_entry start", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); if ((NULL == ctrlr_key) || (NULL == ctrlr_id) || (NULL == dmi)) { UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::GetRenamedUncKey Failed."); return result_code; } key_policingprofile_entry_t *ctrlr_policingprofile_entry_key = - reinterpret_cast(ctrlr_key->get_key()); + reinterpret_cast(ctrlr_key->get_key()); if (NULL == ctrlr_policingprofile_entry_key) { UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::GetRenamedUncKey Failed."); return result_code; } DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; val_rename_policingprofile_t *rename_policingprofile = - reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_rename_policingprofile_t))); + reinterpret_cast(ConfigKeyVal::Malloc( + sizeof(val_rename_policingprofile_t))); if (!rename_policingprofile) { UPLL_LOG_DEBUG("rename_policingprofile NULL"); return result_code; } uuu::upll_strncpy( rename_policingprofile->policingprofile_newname, - ctrlr_policingprofile_entry_key->policingprofile_key.policingprofile_name, + ctrlr_policingprofile_entry_key-> + policingprofile_key.policingprofile_name, (kMaxLenPolicingProfileName + 1)); rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (!mgr) { UPLL_LOG_TRACE("mgr failed"); if (rename_policingprofile) free(rename_policingprofile); @@ -640,20 +645,21 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( return UPLL_RC_ERR_GENERIC; } unc_key->AppendCfgVal(IpctSt::kIpcStValRenamePolicingprofile, - rename_policingprofile); + rename_policingprofile); if (ctrlr_id) SET_USER_DATA_CTRLR(unc_key, ctrlr_id); UPLL_LOG_DEBUG("ctrlr_id (%s)", ctrlr_id); result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (UPLL_RC_SUCCESS == result_code) { key_policingprofile_entry_t *policingprofile_entry = - reinterpret_cast(unc_key->get_key()); + reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy( - ctrlr_policingprofile_entry_key->policingprofile_key.policingprofile_name, - policingprofile_entry->policingprofile_key.policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + ctrlr_policingprofile_entry_key-> + policingprofile_key.policingprofile_name, + policingprofile_entry->policingprofile_key.policingprofile_name, + (kMaxLenPolicingProfileName + 1)); } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(unc_key); @@ -664,7 +670,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( DELETE_IF_NOT_NULL(unc_key); val_policingprofile_entry_t *val_ppe = - reinterpret_cast(GetVal(ctrlr_key)); + reinterpret_cast(GetVal(ctrlr_key)); if (!val_ppe) { UPLL_LOG_DEBUG("val_ppe NULL"); return UPLL_RC_SUCCESS; @@ -675,8 +681,8 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( } ConfigKeyVal *fl_ckv = NULL; val_rename_flowlist_t *rename_flowlist = - reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_rename_flowlist_t))); + reinterpret_cast(ConfigKeyVal::Malloc( + sizeof(val_rename_flowlist_t))); if (!rename_flowlist) { UPLL_LOG_DEBUG("rename_flowlist NULL"); @@ -687,8 +693,8 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( (kMaxLenFlowListName + 1)); rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; MoMgrImpl *mgr_fl = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (!mgr_fl) { UPLL_LOG_TRACE("mgr failed"); if (rename_flowlist) free(rename_flowlist); @@ -707,7 +713,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( return UPLL_RC_ERR_GENERIC; } fl_ckv->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, - rename_flowlist); + rename_flowlist); UPLL_LOG_DEBUG("ctrlr_id ppe (%s)", ctrlr_id); @@ -715,10 +721,10 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( SET_USER_DATA_CTRLR(fl_ckv, ctrlr_id); result_code = mgr_fl->ReadConfigDB(fl_ckv, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (UPLL_RC_SUCCESS == result_code) { key_flowlist_t *key_flowlist = - reinterpret_cast(fl_ckv->get_key()); + reinterpret_cast(fl_ckv->get_key()); uuu::upll_strncpy(val_ppe->flowlist, key_flowlist->flowlist_name, (kMaxLenFlowListName + 1)); @@ -729,15 +735,15 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedUncKey( return result_code; } UPLL_LOG_TRACE("%s GetRenamedUncKey pp_entry end", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); DELETE_IF_NOT_NULL(fl_ckv); mgr_fl = NULL; return UPLL_RC_SUCCESS; } upll_rc_t PolicingProfileEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl) { + ConfigKeyVal *&req, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (NULL == req) { return UPLL_RC_ERR_GENERIC; @@ -756,56 +762,64 @@ upll_rc_t PolicingProfileEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tmp) { if (tbl == MAINTBL) { val_policingprofile_entry_t *ival = - reinterpret_cast(GetVal(req)); + reinterpret_cast(GetVal(req)); if (NULL != ival) { val_policingprofile_entry_t *policingprofile_entry_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); memcpy(policingprofile_entry_val, ival, - sizeof(val_policingprofile_entry_t)); + sizeof(val_policingprofile_entry_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValPolicingprofileEntry, - policingprofile_entry_val); - // free(policingprofile_entry_val); // TODO(check whether req) + policingprofile_entry_val); + if (NULL == tmp1) { + UPLL_LOG_DEBUG("Null Pointer:"); + FREE_IF_NOT_NULL(policingprofile_entry_val); + return UPLL_RC_ERR_GENERIC; + } + + // free(policingprofile_entry_val); // TODO(check whether req) } } else if (CTRLRTBL == tbl) { val_policingprofile_entry_ctrl_t *ival = - reinterpret_cast(GetVal(req)); + reinterpret_cast(GetVal(req)); if (NULL != ival) { val_policingprofile_entry_ctrl_t *entry_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_ctrl_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_ctrl_t))); memcpy(entry_val, ival, sizeof(val_policingprofile_entry_ctrl_t)); tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, entry_val); - // free(entry_val); // TODO(check whether req) + if (NULL == tmp1) { + UPLL_LOG_DEBUG("Null Pointer:"); + FREE_IF_NOT_NULL(entry_val); + return UPLL_RC_ERR_GENERIC; + } + // free(entry_val); // TODO(check whether req) } } else { return UPLL_RC_ERR_GENERIC; } - - if (NULL == tmp1) { - UPLL_LOG_DEBUG("Null Pointer:"); - return UPLL_RC_ERR_GENERIC; + if (tmp1 != NULL) { + tmp1->set_user_data(tmp->get_user_data()); } - tmp1->set_user_data(tmp->get_user_data()); } key_policingprofile_entry_t *tkey = reinterpret_cast(req->get_key()); if (NULL == tkey) { - delete tmp1; // COV RESOURCE LEAK + delete tmp1; // COV RESOURCE LEAK return UPLL_RC_ERR_GENERIC; } key_policingprofile_entry_t *policingprofile_entry = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_policingprofile_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_policingprofile_entry_t))); memcpy(policingprofile_entry, tkey, sizeof(key_policingprofile_entry_t)); okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE_ENTRY, - IpctSt::kIpcStKeyPolicingprofileEntry, - policingprofile_entry, tmp1); + IpctSt::kIpcStKeyPolicingprofileEntry, + policingprofile_entry, tmp1); SET_USER_DATA(okey, req); - // free(policingprofile_entry); //TODO (check whether req) + // free(policingprofile_entry); // TODO (check whether req) UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::Successful Compilation "); return UPLL_RC_SUCCESS; } @@ -813,33 +827,34 @@ upll_rc_t PolicingProfileEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, upll_rc_t PolicingProfileEntryMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingprofile_entry_ctrl_t *val; val = (ckv_running != NULL) ? reinterpret_cast (GetVal( - ckv_running)) : NULL; + ckv_running)) : NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } bool PolicingProfileEntryMoMgr::CompareKey(ConfigKeyVal *key1, - ConfigKeyVal *key2) { + ConfigKeyVal *key2) { UPLL_FUNC_TRACE; bool match = false; if (NULL == key1 || NULL == key2) { @@ -853,37 +868,39 @@ bool PolicingProfileEntryMoMgr::CompareKey(ConfigKeyVal *key1, key_policingprofile_entry_t *policingprofile_entry_key1, *policingprofile_entry_key2; policingprofile_entry_key1 = - reinterpret_cast(key1->get_key()); + reinterpret_cast(key1->get_key()); policingprofile_entry_key2 = - reinterpret_cast(key2->get_key()); + reinterpret_cast(key2->get_key()); if (NULL == policingprofile_entry_key1 || - NULL == policingprofile_entry_key2) { + NULL == policingprofile_entry_key2) { return match; } if (strcmp( - reinterpret_cast(policingprofile_entry_key1-> - policingprofile_key.policingprofile_name), - reinterpret_cast(policingprofile_entry_key2-> - policingprofile_key.policingprofile_name)) == 0 && + reinterpret_cast( + policingprofile_entry_key1-> + policingprofile_key.policingprofile_name), + reinterpret_cast + (policingprofile_entry_key2-> + policingprofile_key.policingprofile_name)) == 0 && policingprofile_entry_key1->sequence_num == policingprofile_entry_key2->sequence_num) { match = true; - UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::CompareKey," + UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::CompareKey, " " Both Keys are same"); } return match; } upll_rc_t PolicingProfileEntryMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr param"); return UPLL_RC_ERR_GENERIC; @@ -895,10 +912,10 @@ upll_rc_t PolicingProfileEntryMoMgr::MergeValidate(unc_key_type_t keytype, } upll_rc_t PolicingProfileEntryMoMgr::RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { - // No Implementation for RenameMo. + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id) { + // No Implementation for RenameMo. UPLL_FUNC_TRACE; UPLL_LOG_DEBUG( " PolicingProfileEntryMoMgr::Alolocation of Memory is successful "); @@ -911,13 +928,13 @@ upll_rc_t PolicingProfileEntryMoMgr::IsReferenced( upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; result_code = UpdateConfigDB(ikey, - dt_type, UNC_OP_READ, dmi, CTRLRTBL); + dt_type, UNC_OP_READ, dmi, CTRLRTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { return UPLL_RC_ERR_CFG_SEMANTIC; } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { return result_code; } - // Change to GetParentKey + // Change to GetParentKey result_code = GetPolicingprofileKeyVal(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory is not allocated for okey %d", result_code); @@ -925,11 +942,11 @@ upll_rc_t PolicingProfileEntryMoMgr::IsReferenced( return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr param"); - DELETE_IF_NOT_NULL(okey); // RESOURCE LEAK + DELETE_IF_NOT_NULL(okey); // RESOURCE LEAK return UPLL_RC_ERR_GENERIC; } @@ -949,7 +966,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetPolicingprofileKeyVal( UPLL_FUNC_TRACE; key_policingprofile_entry_t *key_policingprofile_entry = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); if (NULL == key_policingprofile_entry) { UPLL_LOG_DEBUG("PolicingProfileEntryMoMgr:: Invalid key"); @@ -957,16 +974,16 @@ upll_rc_t PolicingProfileEntryMoMgr::GetPolicingprofileKeyVal( } key_policingprofile_t *key_policingprofile = - reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(key_policingprofile_t))); + reinterpret_cast(ConfigKeyVal::Malloc( + sizeof(key_policingprofile_t))); uuu::upll_strncpy( key_policingprofile->policingprofile_name, key_policingprofile_entry->policingprofile_key.policingprofile_name, (kMaxLenPolicingProfileName + 1)); okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, - IpctSt::kIpcStKeyPolicingprofile, key_policingprofile, - NULL); + IpctSt::kIpcStKeyPolicingprofile, key_policingprofile, + NULL); if (okey) { SET_USER_DATA(okey, ikey); @@ -987,91 +1004,85 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedControllerKey( } upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *okey = NULL; - uint8_t rename = 0; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) { - UPLL_LOG_DEBUG("Key not Renamed"); - return UPLL_RC_SUCCESS; - } /* PolicingProfile_name is renamed */ - if (rename & PP_RENAME_FLAG) { - MoMgrImpl *ppmgr = static_cast - ((const_cast(GetMoManager(UNC_KT_POLICING_PROFILE)))); - result_code = ppmgr->GetChildConfigKey(okey, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); - return UPLL_RC_ERR_GENERIC; - } + MoMgrImpl *ppmgr = static_cast + ((const_cast(GetMoManager(UNC_KT_POLICING_PROFILE)))); + result_code = ppmgr->GetChildConfigKey(okey, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); + return UPLL_RC_ERR_GENERIC; + } - if (ctrlr_dom != NULL) + if (NULL != ctrlr_dom) { SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); + } else { + UPLL_LOG_DEBUG("ctrlr null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->policingprofile_name, - reinterpret_cast - (ikey->get_key())->policingprofile_key.policingprofile_name, - (kMaxLenPolicingProfileName + 1)); - - UPLL_LOG_DEBUG("profile name (%s) (%s)", - reinterpret_cast(okey->get_key())->policingprofile_name, - reinterpret_cast - (ikey->get_key())->policingprofile_key.policingprofile_name); - - /* ctrlr_name */ - result_code = ppmgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); // COVERITY CHECKED RETURN - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("ReadConfigDB failed (%d)", result_code); - return result_code; - } - /* Null check missing */ + uuu::upll_strncpy( + reinterpret_cast + (okey->get_key())->policingprofile_name, + reinterpret_cast + (ikey->get_key())->policingprofile_key.policingprofile_name, + (kMaxLenPolicingProfileName + 1)); + + UPLL_LOG_DEBUG("profile name (%s) (%s)", + reinterpret_cast(okey->get_key())-> + policingprofile_name, + reinterpret_cast + (ikey->get_key())->policingprofile_key.policingprofile_name); + + /* ctrlr_name */ + result_code = ppmgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); // COVERITY CHECKED RETURN + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_DEBUG("ReadConfigDB failed (%d)", result_code); + return result_code; + } + /* Null check missing */ + if (UPLL_RC_SUCCESS == result_code) { val_rename_policingprofile_t *rename_val = - reinterpret_cast(GetVal(okey)); + reinterpret_cast(GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("rename_val null"); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } - + uuu::upll_strncpy( reinterpret_cast (ikey->get_key())->policingprofile_key.policingprofile_name, rename_val->policingprofile_newname, (kMaxLenPolicingProfileName + 1)); - DELETE_IF_NOT_NULL(okey); } + DELETE_IF_NOT_NULL(okey); /* rename flowlist */ - if (rename & FLOWLIST_RENAME) { - UPLL_LOG_DEBUG("flowlist name renamed"); - // Since during delete there wont be val structure - if (NULL == GetVal(ikey)) { - return UPLL_RC_SUCCESS; - } + UPLL_LOG_DEBUG("flowlist name renamed"); + // Since during delete there wont be val structure + val_policingprofile_entry_t *val_ppe = + reinterpret_cast(GetVal(ikey)); + if (NULL == val_ppe) { + return UPLL_RC_SUCCESS; + } + if (strlen(reinterpret_cast + (val_ppe->flowlist))) { MoMgrImpl *mgrflist = static_cast - ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); + ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); result_code = mgrflist->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey fail"); return result_code; } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); UPLL_LOG_DEBUG("ctrlr : %s;", ctrlr_dom->ctrlr); @@ -1082,42 +1093,41 @@ upll_rc_t PolicingProfileEntryMoMgr::GetRenamedControllerKey( kMaxLenFlowListName + 1); UPLL_LOG_DEBUG("flowlist name (%s) (%s)", - reinterpret_cast(okey->get_key())->flowlist_name, - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist); + reinterpret_cast(okey->get_key())-> + flowlist_name, + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist); DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; /* ctrlr_name */ result_code = mgrflist->ReadConfigDB(okey, dt_type, - UNC_OP_READ, dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } + UNC_OP_READ, dbop, dmi, RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS ) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB fail"); DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } - val_rename_flowlist_t *rename_val = - reinterpret_cast (GetVal(okey)); + if (UPLL_RC_SUCCESS == result_code) { + val_rename_flowlist_t *rename_val = + reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("flowlist is not valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + if (!rename_val) { + UPLL_LOG_DEBUG("flowlist is not valid"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy( + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist, + rename_val->flowlist_newname, + (kMaxLenFlowListName + 1)); } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); DELETE_IF_NOT_NULL(okey); } UPLL_LOG_DEBUG("%s GetRenamedCtrl pp_entry end", - (ikey->ToStrAll()).c_str()); + (ikey->ToStrAll()).c_str()); UPLL_LOG_DEBUG("GetRenamedControllerKey is successful "); return UPLL_RC_SUCCESS; } @@ -1132,10 +1142,10 @@ upll_rc_t PolicingProfileEntryMoMgr::TxUpdateController( upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode dal_result = uud::kDalRcSuccess; ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; - controller_domain ctrlr_dom; // UNINIT + controller_domain ctrlr_dom; // UNINIT ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; - DalCursor *dal_cursor_handle; + DalCursor *dal_cursor_handle = NULL; IpcResponse resp; memset(&resp, 0, sizeof(resp)); if (uuc::kUpllUcpDelete == phase) { @@ -1169,6 +1179,7 @@ upll_rc_t PolicingProfileEntryMoMgr::TxUpdateController( if (result_code != UPLL_RC_SUCCESS) break; ck_main = NULL; + bool driver_resp = false; if ((op == UNC_OP_CREATE) || (op == UNC_OP_DELETE)) { result_code = DupConfigKeyVal(ck_main, req, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -1186,15 +1197,19 @@ upll_rc_t PolicingProfileEntryMoMgr::TxUpdateController( dal_cursor_handle = NULL; return UPLL_RC_ERR_GENERIC; } - result_code = TxUpdateProcess(ck_main, &resp, - op, dmi, &ctrlr_dom); - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); - if (result_code != UPLL_RC_SUCCESS) { + result_code = TxUpdateProcess(ck_main, + &resp, + op, + dmi, + &ctrlr_dom, + affected_ctrlr_set, + &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdateProcess Returns error %d", result_code); upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); + ctrlr_dom.ctrlr); if (UPLL_RC_SUCCESS != local_rc && UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); @@ -1203,9 +1218,14 @@ upll_rc_t PolicingProfileEntryMoMgr::TxUpdateController( result_code = UPLL_RC_ERR_GENERIC; break; } + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = resp.ckv_data; DELETE_IF_NOT_NULL(ck_main); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(resp.ckv_data); + break; } DELETE_IF_NOT_NULL(resp.ckv_data); DELETE_IF_NOT_NULL(ck_main); @@ -1242,11 +1262,14 @@ upll_rc_t PolicingProfileEntryMoMgr::GetControllerSpan( return result_code; } -upll_rc_t PolicingProfileEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, +upll_rc_t PolicingProfileEntryMoMgr::TxUpdateProcess( + ConfigKeyVal *ck_main, IpcResponse *ipc_resp, unc_keytype_operation_t op, DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { UPLL_FUNC_TRACE; upll_rc_t result_code; /* read from main table */ @@ -1264,7 +1287,7 @@ upll_rc_t PolicingProfileEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("%s Policingprofile Entry read failed %d", - (dup_ckmain->ToStrAll()).c_str(), result_code); + (dup_ckmain->ToStrAll()).c_str(), result_code); delete dup_ckmain; return result_code; } @@ -1278,22 +1301,25 @@ upll_rc_t PolicingProfileEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, ipc_resp->header.config_id, op, UPLL_DT_CANDIDATE, dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG("Controller disconnected"); result_code = UPLL_RC_SUCCESS; } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + *driver_resp = true; } + affected_ctrlr_set->insert((const char *)ctrlr_dom->ctrlr); if ((op == UNC_OP_CREATE) && dup_ckmain) { delete dup_ckmain; dup_ckmain = NULL; } - return result_code; + UPLL_LOG_TRACE("Driver response received %d", *driver_resp) + return result_code; } upll_rc_t PolicingProfileEntryMoMgr::FilterAttributes( - ConfigKeyVal *ckv_main, ConfigKeyVal *ckv_ctrlr) { + ConfigKeyVal *ckv_main, ConfigKeyVal *ckv_ctrlr) { UPLL_FUNC_TRACE; val_policingprofile_entry_t *val_main = reinterpret_cast (GetVal(ckv_main)); @@ -1303,8 +1329,8 @@ upll_rc_t PolicingProfileEntryMoMgr::FilterAttributes( return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val_ctrlr->valid) / - sizeof(val_ctrlr->valid[0]); ++loop) { + loop < sizeof(val_ctrlr->valid) / + sizeof(val_ctrlr->valid[0]); ++loop) { val_main->valid[loop] = val_ctrlr->valid[loop]; } return UPLL_RC_SUCCESS; @@ -1316,8 +1342,8 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result; - unc_keytype_operation_t op[] = { UNC_OP_DELETE,UNC_OP_CREATE, - UNC_OP_UPDATE }; + unc_keytype_operation_t op[] = { UNC_OP_DELETE, UNC_OP_CREATE, + UNC_OP_UPDATE }; int nop = sizeof(op) / sizeof(op[0]); ConfigKeyVal *ppe_key = NULL, *req = NULL, *nreq = NULL, *pp_ck_run = NULL; @@ -1331,35 +1357,42 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( CtrlrCommitStatusList::iterator ccsListItr; CtrlrCommitStatus *ccStatusPtr; - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { - UPLL_LOG_DEBUG( - " PolicingProfileEntryMoMgr::ctrlr_commit_statusm, dmi is not valid "); - return UPLL_RC_ERR_GENERIC; - } - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; - ck_err = ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, - ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG( - " PolicingProfileEntryMoMgr::GetRenamedUncKey is successful -%d", - result_code); - return result_code; + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { + ccStatusPtr = *ccsListItr; + ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; + ck_err = ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG( + " PolicingProfileEntryMoMgr::GetRenamedUncKey is " + "successful -%d", + result_code); + return result_code; + } } } } } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; if (op[i] != UNC_OP_UPDATE) { - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, - nreq, &cfg1_cursor, dmi, NULL, MAINTBL,true); + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + MAINTBL, + true); while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); @@ -1386,6 +1419,7 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; MoMgrTables tbl = (op[i] == UNC_OP_UPDATE)?MAINTBL:CTRLRTBL; result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, nreq, &cfg1_cursor, dmi, NULL, tbl, true); @@ -1398,11 +1432,12 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( break; if (op[i] == UNC_OP_UPDATE) { - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr |kOpInOutCs }; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr |kOpInOutCs }; result_code = GetChildConfigKey(ppe_ctrlr_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); @@ -1432,8 +1467,9 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( continue; } } else { - UPLL_LOG_DEBUG("DB err while reading records from ctrlrtbl, err %d", - result_code); + UPLL_LOG_DEBUG("DB err while reading records from " + "ctrlrtbl, err %d", + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); DELETE_IF_NOT_NULL(ppe_ctrlr_key); @@ -1444,7 +1480,6 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( for (ConfigKeyVal *tmp = ppe_ctrlr_key; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { - GET_USER_DATA_CTRLR(tmp, ctrlr_id); string controller(reinterpret_cast(ctrlr_id)); @@ -1453,7 +1488,7 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( result_code = GetChildConfigKey(ppe_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); DELETE_IF_NOT_NULL(ppe_ctrlr_key); @@ -1472,13 +1507,20 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( return result_code; } static_cast - (GetVal(ppe_key))->cs_row_status = - static_cast - (GetVal(nreq))->cs_row_status; - - result_code = UpdateConfigStatus(ppe_key, op[i], - ctrlr_result[controller], nreq, - dmi, tmp); + (GetVal(ppe_key))->cs_row_status = + static_cast + (GetVal(nreq))->cs_row_status; + + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL."); + result_code = UpdateConfigStatus(ppe_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, nreq, + dmi, tmp); + } else { + result_code = UpdateConfigStatus(ppe_key, op[i], + ctrlr_result[controller], nreq, + dmi, tmp); + } if (result_code != UPLL_RC_SUCCESS) break; void *fle_val1 = GetVal(tmp); @@ -1505,7 +1547,7 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); return result_code; - } // COV UNREACHABLE + } // COV UNREACHABLE EnqueCfgNotification(op[i], UPLL_DT_RUNNING, tmp); DELETE_IF_NOT_NULL(ppe_key); @@ -1513,7 +1555,9 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(ppe_ctrlr_key); } else { if (op[i] == UNC_OP_CREATE) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag |kOpInOutCs }; + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag |kOpInOutCs }; result_code = GetChildConfigKey(ppe_key, req); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -1521,8 +1565,12 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); } - result_code = ReadConfigDB(ppe_key, UPLL_DT_RUNNING /*UPLL_DT_CANDIDATE*/, - UNC_OP_READ, dbop, dmi, MAINTBL); + result_code = ReadConfigDB(ppe_key, + UPLL_DT_RUNNING /*UPLL_DT_CANDIDATE*/, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { UPLL_LOG_DEBUG("ReadConfigDB is failed -%d", result_code); @@ -1536,9 +1584,12 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( * to the cs_status of first controller */ uint32_t cur_instance_count; - result_code = GetInstanceCount(ppe_key, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); + result_code = GetInstanceCount(ppe_key, + NULL, + UPLL_DT_CANDIDATE, + &cur_instance_count, + dmi, + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); DELETE_IF_NOT_NULL(ppe_key); @@ -1549,7 +1600,7 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( } if (cur_instance_count == 1) reinterpret_cast(GetVal(ppe_key))-> - cs_row_status = UNC_CS_UNKNOWN ; + cs_row_status = UNC_CS_UNKNOWN; /* Capability check * req_header->operation = op[i]; * strcpy((char*)req_header->datatype, (char*)UNC_DT_CANDIDATE); @@ -1567,22 +1618,35 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( GET_USER_DATA_CTRLR(ppe_ctrlr_key, ctrlr_id); string controller(reinterpret_cast(ctrlr_id)); - result_code = UpdateConfigStatus(ppe_key, op[i], - ctrlr_result[controller], nreq, - dmi, ppe_ctrlr_key); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL."); + result_code = UpdateConfigStatus(ppe_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + nreq, + dmi, + ppe_ctrlr_key); + } else { + result_code = UpdateConfigStatus(ppe_key, + op[i], + ctrlr_result[controller], + nreq, + dmi, + ppe_ctrlr_key); + } } else if (op[i] == UNC_OP_DELETE) { - //Reading Main Running DB for delete op - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCs }; + // Reading Main Running DB for delete op + DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCs }; result_code = GetChildConfigKey(pp_ck_run, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); dmi->CloseCursor(cfg1_cursor, true); return result_code; } result_code = ReadConfigDB(pp_ck_run, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); + UNC_OP_READ, dbop1, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Unable to read configuration from RunningDB"); @@ -1595,9 +1659,11 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( if (result_code == UPLL_RC_SUCCESS) { GET_USER_DATA_CTRLR(req, ctrlr_id); string controller(reinterpret_cast(ctrlr_id)); - result_code = SetPPEntryConsolidatedStatus(pp_ck_run, ctrlr_id, dmi); + result_code = SetPPEntryConsolidatedStatus(pp_ck_run, + ctrlr_id, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", result_code); + UPLL_LOG_DEBUG("Could not set consolidated status %d", + result_code); DELETE_IF_NOT_NULL(pp_ck_run); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); @@ -1663,8 +1729,10 @@ upll_rc_t PolicingProfileEntryMoMgr::TxCopyCandidateToRunning( } upll_rc_t PolicingProfileEntryMoMgr::UpdateMainTbl(ConfigKeyVal *ppe_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi) { ConfigKeyVal *ck_ppe = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingprofile_entry_t *ppe_val = NULL; @@ -1703,7 +1771,8 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateMainTbl(ConfigKeyVal *ppe_key, } CompareValidValue(ppeval, nppeval, true); ppe_val->cs_row_status = - reinterpret_cast(GetVal(nreq))->cs_row_status; + reinterpret_cast + (GetVal(nreq))->cs_row_status; break; case UNC_OP_DELETE: @@ -1723,143 +1792,143 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateMainTbl(ConfigKeyVal *ppe_key, } bool PolicingProfileEntryMoMgr::CompareValidValue(void *&val1, void *val2, - bool copy_to_running) { + bool copy_to_running) { UPLL_FUNC_TRACE; bool invalid_attr = true; val_policingprofile_entry_t *val_pp_entry1 = - reinterpret_cast(val1); + reinterpret_cast(val1); val_policingprofile_entry_t *val_pp_entry2 = - reinterpret_cast(val2); + reinterpret_cast(val2); -// if (audit) { - for (unsigned int loop = 0; - loop < sizeof(val_pp_entry1->valid) / - sizeof(val_pp_entry1->valid[0]); ++loop) { - if (val_pp_entry1->valid[loop] == UNC_VF_INVALID - && val_pp_entry2->valid[loop] == UNC_VF_VALID) { - val_pp_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; - } + // if (audit) { + for (unsigned int loop = 0; + loop < sizeof(val_pp_entry1->valid) / + sizeof(val_pp_entry1->valid[0]); ++loop) { + if (val_pp_entry1->valid[loop] == UNC_VF_INVALID + && val_pp_entry2->valid[loop] == UNC_VF_VALID) { + val_pp_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; } -// } + } + // } if (val_pp_entry1->valid[UPLL_IDX_FLOWLIST_PPE] == (UNC_VF_VALID) && val_pp_entry2->valid[UPLL_IDX_FLOWLIST_PPE] == UNC_VF_VALID) { if (strcmp(reinterpret_cast(val_pp_entry1->flowlist), - reinterpret_cast(val_pp_entry2->flowlist)) != 0) + reinterpret_cast(val_pp_entry2->flowlist)) != 0) val_pp_entry1->valid[UPLL_IDX_FLOWLIST_PPE] = UNC_VF_VALID; } if (val_pp_entry1->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID) { if (val_pp_entry1->rate == val_pp_entry2->rate) { val_pp_entry1->valid[UPLL_IDX_RATE_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } } if (val_pp_entry1->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID) { if (val_pp_entry1->cir == val_pp_entry2->cir) val_pp_entry1->valid[UPLL_IDX_CIR_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID) { if (val_pp_entry1->cbs == val_pp_entry2->cbs) val_pp_entry1->valid[UPLL_IDX_CBS_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID) { if (val_pp_entry1->pir == val_pp_entry2->pir) val_pp_entry1->valid[UPLL_IDX_PIR_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID) { if (val_pp_entry1->pbs == val_pp_entry2->pbs) val_pp_entry1->valid[UPLL_IDX_PBS_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID) { if (val_pp_entry1->green_action == val_pp_entry2->green_action) val_pp_entry1->valid[UPLL_IDX_GREEN_ACTION_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID) { if (val_pp_entry1->green_action_priority == val_pp_entry2->green_action_priority) val_pp_entry1->valid[UPLL_IDX_GREEN_PRIORITY_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID) { if (val_pp_entry1->green_action_dscp == val_pp_entry2->green_action_dscp) val_pp_entry1->valid[UPLL_IDX_GREEN_DSCP_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID) { if (val_pp_entry1->green_action_drop_precedence == val_pp_entry2->green_action_drop_precedence) val_pp_entry1->valid[UPLL_IDX_GREEN_DROP_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID) { if (val_pp_entry1->yellow_action == val_pp_entry2->yellow_action) val_pp_entry1->valid[UPLL_IDX_YELLOW_ACTION_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID) { if (val_pp_entry1->yellow_action_priority == val_pp_entry2->yellow_action_priority) val_pp_entry1->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID) { if (val_pp_entry1->yellow_action_dscp == val_pp_entry2->yellow_action_dscp) val_pp_entry1->valid[UPLL_IDX_YELLOW_DSCP_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID) { if (val_pp_entry1->yellow_action_drop_precedence == val_pp_entry2->yellow_action_drop_precedence) val_pp_entry1->valid[UPLL_IDX_YELLOW_DROP_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID) { if (val_pp_entry1->red_action == val_pp_entry2->red_action) val_pp_entry1->valid[UPLL_IDX_RED_ACTION_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID) { if (val_pp_entry1->red_action_priority == val_pp_entry2->red_action_priority) val_pp_entry1->valid[UPLL_IDX_RED_PRIORITY_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID) { if (val_pp_entry1->red_action_dscp == val_pp_entry2->red_action_dscp) val_pp_entry1->valid[UPLL_IDX_RED_DSCP_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_pp_entry1->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID && val_pp_entry2->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID) { if (val_pp_entry1->red_action_drop_precedence == val_pp_entry2->red_action_drop_precedence) val_pp_entry1->valid[UPLL_IDX_RED_DROP_PPE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } for (unsigned int loop = 0; - loop < sizeof(val_pp_entry1->valid)/ sizeof(uint8_t); ++loop) { + loop < sizeof(val_pp_entry1->valid)/ sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_pp_entry1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_pp_entry1->valid[loop])) invalid_attr = false; @@ -1868,9 +1937,9 @@ bool PolicingProfileEntryMoMgr::CompareValidValue(void *&val1, void *val2, } upll_rc_t PolicingProfileEntryMoMgr::ReadRecord(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - unc_keytype_operation_t op) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; upll_rc_t result_code; @@ -1891,18 +1960,18 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadRecord(IpcReqRespHeader *req, if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::UpdateConfigDB is failed :-%d", - result_code); + result_code); return UPLL_RC_ERR_NO_SUCH_INSTANCE; } switch (req->datatype) { - // Retrieving config information - case UPLL_DT_CANDIDATE: // MIXED ENUMS + // Retrieving config information + case UPLL_DT_CANDIDATE: // MIXED ENUMS case UPLL_DT_RUNNING: case UPLL_DT_STARTUP: case UPLL_DT_STATE: if (req->option1 == UNC_OPT1_NORMAL) { result_code = ReadConfigDB(ikey, req->datatype, req->operation, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG( " PolicingProfileEntryMoMgr::ReadConfigDB is Successful :-%d", @@ -1916,11 +1985,11 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadRecord(IpcReqRespHeader *req, break; - case UPLL_DT_IMPORT: // MIXED ENUMS + case UPLL_DT_IMPORT: // MIXED ENUMS if (req->option1 == UNC_OPT1_NORMAL) { result_code = GetRenamedUncKey(ikey, req->datatype, dmi, NULL); result_code = ReadConfigDB(ikey, req->datatype, req->operation, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG( " PolicingProfileEntryMoMgr::ReadConfigDB is Successful :-%d", @@ -1937,23 +2006,23 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadRecord(IpcReqRespHeader *req, default: UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::Operation not allowed:-"); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } // end of switch + } // end of switch UPLL_LOG_DEBUG(" PolicingProfileEntryMoMgr::ReadMo is Successful :-%d", - result_code); + result_code); return UPLL_RC_SUCCESS; } upll_rc_t PolicingProfileEntryMoMgr::ReadMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; } result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -1963,8 +2032,8 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadMo(IpcReqRespHeader *req, } upll_rc_t PolicingProfileEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -1980,7 +2049,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } return result_code; - // return ReadRecord(req, ikey, dmi, UNC_OP_READ_SIBLING); + // return ReadRecord(req, ikey, dmi, UNC_OP_READ_SIBLING); } upll_rc_t PolicingProfileEntryMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, @@ -1991,7 +2060,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_POLICING_PROFILE_ENTRY) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -2025,9 +2094,9 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateRate( /* validate Rate */ if (ValidateNumericRange(val_ppe->rate, - (uint8_t) UPLL_POLICINGPROFILE_RATE_KBPS, - (uint8_t) UPLL_POLICINGPROFILE_RATE_PPS, true, - true)) { + (uint8_t) UPLL_POLICINGPROFILE_RATE_KBPS, + (uint8_t) UPLL_POLICINGPROFILE_RATE_PPS, true, + true)) { UPLL_LOG_DEBUG(" Rate validation is success"); /** validate cir if filled */ @@ -2036,13 +2105,13 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateRate( /** check cir range */ if (!(ValidateNumericRange(val_ppe->cir, kMinRateType, - kMaxRateType, true, true))) { + kMaxRateType, true, true))) { UPLL_LOG_DEBUG(" CIR validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_CIR_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_CIR_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset CIR"); val_ppe->cir = 0; } @@ -2053,13 +2122,13 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateRate( /** check cbs range */ if (!(ValidateNumericRange(val_ppe->cbs, kMinBurstSize, - kMaxBurstSize, true, true))) { + kMaxBurstSize, true, true))) { UPLL_LOG_DEBUG(" CBS validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_CBS_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_CBS_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset CBS"); val_ppe->cbs = 0; } @@ -2070,13 +2139,13 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateRate( /** check pir range */ if (!(ValidateNumericRange(val_ppe->pir, kMinRateType, - kMaxRateType, true, true))) { + kMaxRateType, true, true))) { UPLL_LOG_DEBUG(" PIR validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_PIR_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_PIR_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset PIR"); val_ppe->pir = 0; } @@ -2087,19 +2156,19 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateRate( /** check pbs range */ if (!(ValidateNumericRange(val_ppe->pbs, kMinBurstSize, - kMaxBurstSize, true, true))) { + kMaxBurstSize, true, true))) { UPLL_LOG_DEBUG(" PBS validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_PBS_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_PBS_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset PBS"); val_ppe->pbs = 0; } if (UNC_OP_CREATE == operation) { if ((UNC_VF_VALID == val_ppe->valid[UPLL_IDX_PIR_PPE]) - && (UNC_VF_VALID == val_ppe->valid[UPLL_IDX_CIR_PPE])) { + && (UNC_VF_VALID == val_ppe->valid[UPLL_IDX_CIR_PPE])) { if (val_ppe->pir < val_ppe->cir) { UPLL_LOG_DEBUG("cir is greated"); return UPLL_RC_ERR_CFG_SYNTAX; @@ -2124,15 +2193,16 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorAction( if (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID) { if (!(ValidateNumericRange(val_ppe->green_action, - (uint8_t) UPLL_POLICINGPROFILE_ACT_PASS, - (uint8_t) UPLL_POLICINGPROFILE_ACT_PENALTY, true, - true))) { + (uint8_t) UPLL_POLICINGPROFILE_ACT_PASS, + (uint8_t) UPLL_POLICINGPROFILE_ACT_PENALTY, + true, + true))) { UPLL_LOG_DEBUG("green_action syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset green_action"); val_ppe->green_action = 0; } @@ -2141,15 +2211,16 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorAction( if (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID) { if (!(ValidateNumericRange(val_ppe->red_action, - (uint8_t) UPLL_POLICINGPROFILE_ACT_PASS, - (uint8_t) UPLL_POLICINGPROFILE_ACT_PENALTY, true, - true))) { + (uint8_t) UPLL_POLICINGPROFILE_ACT_PASS, + (uint8_t) UPLL_POLICINGPROFILE_ACT_PENALTY, + true, + true))) { UPLL_LOG_DEBUG("red_action syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset red_action"); val_ppe->red_action = 0; } @@ -2158,15 +2229,16 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorAction( if (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID) { if (!(ValidateNumericRange(val_ppe->yellow_action, - (uint8_t) UPLL_POLICINGPROFILE_ACT_PASS, - (uint8_t) UPLL_POLICINGPROFILE_ACT_PENALTY, true, - true))) { + (uint8_t) UPLL_POLICINGPROFILE_ACT_PASS, + (uint8_t) UPLL_POLICINGPROFILE_ACT_PENALTY, + true, + true))) { UPLL_LOG_DEBUG("yellow_action syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset yellow_action"); val_ppe->yellow_action = 0; } @@ -2185,21 +2257,21 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorPriority( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check green_action_priority range */ if (!ValidateNumericRange( - val_ppe->green_action_priority, kMinVlanPriority, - kMaxVlanPriority, true, true)) { + val_ppe->green_action_priority, kMinVlanPriority, + kMaxVlanPriority, true, true)) { UPLL_LOG_DEBUG("green_action_priority syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("Error Green_action_priority configured but green_action" - "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset green_priority"); val_ppe->green_action_priority = 0; } @@ -2211,21 +2283,21 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorPriority( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check green_action_priority range */ if (!ValidateNumericRange(val_ppe->red_action_priority, - kMinVlanPriority, kMaxVlanPriority, true, - true)) { + kMinVlanPriority, kMaxVlanPriority, true, + true)) { UPLL_LOG_DEBUG("red_action_priority syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("Error red_action_priority configured but red_action" - "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset red_priority"); val_ppe->red_action_priority = 0; } @@ -2237,20 +2309,21 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorPriority( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check yellow_action_priority range */ if (!ValidateNumericRange( - val_ppe->yellow_action_priority, kMinVlanPriority, - kMaxVlanPriority, true, true)) { + val_ppe->yellow_action_priority, kMinVlanPriority, + kMaxVlanPriority, true, true)) { UPLL_LOG_DEBUG("yellow_action_priority syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { - UPLL_LOG_DEBUG("Error yellow_action_priority configured but yellow_action" - "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + UPLL_LOG_DEBUG("Error yellow_action_priority configured but" + "yellow_action" + "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset yellow priority"); val_ppe->yellow_action_priority = 0; } @@ -2269,20 +2342,21 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorPrecedence( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check green_action_drop_precedence range */ if (!(ValidateNumericRange( - val_ppe->green_action_drop_precedence, - kMinPrecedence, kMaxPrecedence, true, true))) { - UPLL_LOG_DEBUG("green_action_drop_precedence syntax validation failed"); + val_ppe->green_action_drop_precedence, + kMinPrecedence, kMaxPrecedence, true, true))) { + UPLL_LOG_DEBUG("green_action_drop_precedence syntax" + "validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("Error Green_action_drop_precedence configured but" - " green_action is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + " green_action is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset Green_action_drop_precedence"); val_ppe->green_action_drop_precedence = 0; } @@ -2293,8 +2367,8 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorPrecedence( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check green_action_drop_precedence range */ if (!(ValidateNumericRange( - val_ppe->red_action_drop_precedence, kMinPrecedence, - kMaxPrecedence, true, true))) { + val_ppe->red_action_drop_precedence, kMinPrecedence, + kMaxPrecedence, true, true))) { UPLL_LOG_DEBUG("red_action_drop_precedence syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } @@ -2305,8 +2379,8 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorPrecedence( return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset red_action_drop_precedence"); val_ppe->red_action_drop_precedence = 0; } @@ -2318,20 +2392,20 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorPrecedence( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check yellow_action_drop_precedence range */ if (!(ValidateNumericRange( - val_ppe->yellow_action_drop_precedence, - kMinPrecedence, kMaxPrecedence, true, true))) { + val_ppe->yellow_action_drop_precedence, + kMinPrecedence, kMaxPrecedence, true, true))) { UPLL_LOG_DEBUG("yellow_action_drop_precedence syntax check failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("Error yellow_action_drop_precedence configured but" - " yellow_action is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + " yellow_action is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset yellow_action_drop_precedence"); val_ppe->yellow_action_drop_precedence = 0; } @@ -2350,19 +2424,19 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorDscp( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** Use common function to check green_action_dscp range */ if (!ValidateNumericRange(val_ppe->green_action_dscp, - kMinIPDscp, kMaxIPDscp, true, true)) { + kMinIPDscp, kMaxIPDscp, true, true)) { UPLL_LOG_DEBUG("green_action_dscp syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("Error Green_action_dscp configured but green_action" - "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset green_action_dscp"); val_ppe->green_action_dscp = 0; } @@ -2373,19 +2447,19 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorDscp( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check green_action_dscp range */ if (!ValidateNumericRange(val_ppe->red_action_dscp, - kMinIPDscp, kMaxIPDscp, true, true)) { + kMinIPDscp, kMaxIPDscp, true, true)) { UPLL_LOG_DEBUG("red_action_dscp syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("Error red_action_dscp configured but red_action" - "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset Red action dscp"); val_ppe->red_action_dscp = 0; } @@ -2397,28 +2471,29 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateColorDscp( == UPLL_POLICINGPROFILE_ACT_PENALTY) { /** check yellow_action_dscp range */ if (!ValidateNumericRange(val_ppe->yellow_action_dscp, - kMinIPDscp, kMaxIPDscp, true, true)) { + kMinIPDscp, kMaxIPDscp, true, true)) { UPLL_LOG_DEBUG("yellow_action_dscp syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("Error yellow_action_dscp configured but yellow_action" - "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); + "is not UPLL_POLICINGPROFILE_ACT_PENALTY"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE) - && (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset yellow action dscp"); val_ppe->yellow_action_dscp = 0; } return UPLL_RC_SUCCESS; } -upll_rc_t PolicingProfileEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name) { +upll_rc_t PolicingProfileEntryMoMgr::ValidateCapability( + IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char* ctrlr_name) { UPLL_FUNC_TRACE; if ((NULL == req) || (NULL == ikey)) { @@ -2433,9 +2508,9 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, UPLL_LOG_DEBUG("ctrlr_name is NULL"); return UPLL_RC_ERR_GENERIC; } - + UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + ctrlr_name, req->operation); bool ret_code = false; uint32_t max_instance_count = 0; @@ -2445,19 +2520,12 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { ret_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - - if (ret_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &max_instance_count, &max_attrs, &attrs); break; } case UNC_OP_UPDATE: { ret_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } default: { @@ -2466,7 +2534,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, &max_attrs, &attrs); else ret_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } } @@ -2478,16 +2546,17 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, } val_policingprofile_entry_t *val_policingprofile_entry = - reinterpret_cast( - GetVal(ikey)); + reinterpret_cast( + GetVal(ikey)); if (val_policingprofile_entry) { if (max_attrs > 0) { return ValPolicingProfileEntryAttributeSupportCheck( - val_policingprofile_entry, attrs); + val_policingprofile_entry, attrs); } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } return UPLL_RC_SUCCESS; @@ -2495,8 +2564,8 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, upll_rc_t PolicingProfileEntryMoMgr:: ValPolicingProfileEntryAttributeSupportCheck( - val_policingprofile_entry_t *val_policingprofile_entry, - const uint8_t *attrs) { + val_policingprofile_entry_t *val_policingprofile_entry, + const uint8_t *attrs) { UPLL_FUNC_TRACE; if ((val_policingprofile_entry->valid[UPLL_IDX_FLOWLIST_PPE] == @@ -2576,7 +2645,7 @@ void PolicingProfileEntryMoMgr::ValidateGreenFieldAttribute( UPLL_FUNC_TRACE; if ((val_policingprofile_entry->valid[UPLL_IDX_GREEN_ACTION_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapGreenAction] == 0) { @@ -2587,7 +2656,7 @@ void PolicingProfileEntryMoMgr::ValidateGreenFieldAttribute( } if ((val_policingprofile_entry->valid[UPLL_IDX_GREEN_PRIORITY_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapGreenPriority] == 0) { @@ -2598,18 +2667,18 @@ void PolicingProfileEntryMoMgr::ValidateGreenFieldAttribute( } if ((val_policingprofile_entry->valid[UPLL_IDX_GREEN_DSCP_PPE] == - UNC_VF_VALID) + UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapGreenDscp] == 0) { UPLL_LOG_DEBUG("GREEN_DSCP attr is not supported by ctrlr"); val_policingprofile_entry->valid[UPLL_IDX_GREEN_DSCP_PPE] = UNC_VF_NOT_SUPPORTED; - } + } } if ((val_policingprofile_entry->valid[UPLL_IDX_GREEN_DROP_PPE] == - UNC_VF_VALID) + UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapGreenDrop] == 0) { @@ -2626,7 +2695,7 @@ void PolicingProfileEntryMoMgr::ValidateYellowFieldAttribute( UPLL_FUNC_TRACE; if ((val_policingprofile_entry->valid[UPLL_IDX_YELLOW_ACTION_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapYellowAction] == 0) { @@ -2637,18 +2706,18 @@ void PolicingProfileEntryMoMgr::ValidateYellowFieldAttribute( } if ((val_policingprofile_entry->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapYellowPriority] == 0) { UPLL_LOG_DEBUG("YELLOW_PRIORITY attr is not supported by ctrlr"); val_policingprofile_entry->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] = UNC_VF_NOT_SUPPORTED; - } + } } if ((val_policingprofile_entry->valid[UPLL_IDX_YELLOW_DSCP_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapYellowDscp] == 0) { @@ -2659,7 +2728,7 @@ void PolicingProfileEntryMoMgr::ValidateYellowFieldAttribute( } if ((val_policingprofile_entry->valid[UPLL_IDX_YELLOW_DROP_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapYellowDrop] == 0) { @@ -2676,7 +2745,7 @@ void PolicingProfileEntryMoMgr::ValidateRedFieldAttribute( UPLL_FUNC_TRACE; if ((val_policingprofile_entry->valid[UPLL_IDX_RED_ACTION_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapRedAction] == 0) { @@ -2687,7 +2756,7 @@ void PolicingProfileEntryMoMgr::ValidateRedFieldAttribute( } if ((val_policingprofile_entry->valid[UPLL_IDX_RED_PRIORITY_PPE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingprofile_entry->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::policingprofile_entry::kCapRedPriority] == 0) { @@ -2719,7 +2788,7 @@ void PolicingProfileEntryMoMgr::ValidateRedFieldAttribute( } upll_rc_t PolicingProfileEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL ==(ikey->get_key()) || NULL != okey) { @@ -2729,13 +2798,13 @@ upll_rc_t PolicingProfileEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_policingprofile_entry_t *key_policingprofile = - reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(key_policingprofile_entry_t))); + reinterpret_cast(ConfigKeyVal::Malloc( + sizeof(key_policingprofile_entry_t))); if (!strlen( - reinterpret_cast(key_rename->old_policingprofile_name))) { + reinterpret_cast(key_rename->old_policingprofile_name))) { UPLL_LOG_DEBUG("key_rename->old_policingprofile_name NULL"); if (key_policingprofile) free(key_policingprofile); return UPLL_RC_ERR_GENERIC; @@ -2746,8 +2815,8 @@ upll_rc_t PolicingProfileEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, (kMaxLenPolicingProfileName + 1)); okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE_ENTRY, - IpctSt::kIpcStKeyPolicingprofileEntry, - key_policingprofile, NULL); + IpctSt::kIpcStKeyPolicingprofileEntry, + key_policingprofile, NULL); if (!okey) { UPLL_LOG_DEBUG("okey NULL"); return UPLL_RC_ERR_GENERIC; @@ -2755,10 +2824,11 @@ upll_rc_t PolicingProfileEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; @@ -2767,12 +2837,12 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); - UPLL_LOG_TRACE("old name (%s) (%s)",key_rename->old_flowlist_name, - key_rename->new_flowlist_name); + reinterpret_cast(ikey->get_key()); + UPLL_LOG_TRACE("old name (%s) (%s)", key_rename->old_flowlist_name, + key_rename->new_flowlist_name); val_policingprofile_entry_t *val_ppe = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); if (!val_ppe) { UPLL_LOG_TRACE("val_ppe Failed"); return UPLL_RC_ERR_GENERIC; @@ -2792,17 +2862,18 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(val_ppe->flowlist, key_rename->old_flowlist_name, - (kMaxLenFlowListName + 1)); + (kMaxLenFlowListName + 1)); val_ppe->valid[UPLL_IDX_FLOWLIST_PPE] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val_ppe->valid[UPLL_IDX_FLOWLIST_PPE], val_ppe->flowlist); - okey->SetCfgVal(new ConfigVal (IpctSt::kIpcStValPolicingprofileEntry, val_ppe)); + val_ppe->valid[UPLL_IDX_FLOWLIST_PPE], val_ppe->flowlist); + okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValPolicingprofileEntry, + val_ppe)); DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - // Read the record of key structure and old policer name in maintbl + // Read the record of key structure and old policer name in maintbl result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG(" ReadConfigDB failed "); DELETE_IF_NOT_NULL(okey); @@ -2810,7 +2881,7 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } ConfigKeyVal *first_ckv = okey; while (okey != NULL) { - // Update the new flowlist name in MAINTBL + // Update the new flowlist name in MAINTBL result_code = GetChildConfigKey(kval, okey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey kval NULL"); @@ -2818,14 +2889,14 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return result_code; } - // Copy the new flowlist name in val_policingprofile_entry + // Copy the new flowlist name in val_policingprofile_entry val_policingprofile_entry_t *val1 = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); if (!val1) return UPLL_RC_ERR_GENERIC; memset(val1, 0, sizeof(val_policingprofile_entry_t)); - // New name null check + // New name null check if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { if (val1) free(val1); UPLL_LOG_DEBUG("new_policingprofile_name NULL"); @@ -2833,14 +2904,15 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(first_ckv); return UPLL_RC_ERR_GENERIC; } - // Copy the new flowlist name into val_policingprofile_entry_t - uuu::upll_strncpy(val1->flowlist, key_rename->new_flowlist_name, - (kMaxLenFlowListName + 1)); + // Copy the new flowlist name into val_policingprofile_entry_t + uuu::upll_strncpy(val1->flowlist, key_rename->new_flowlist_name, + (kMaxLenFlowListName + 1)); val1->valid[UPLL_IDX_FLOWLIST_PPE] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val1->valid[UPLL_IDX_FLOWLIST_PPE], val1->flowlist); + val1->valid[UPLL_IDX_FLOWLIST_PPE], val1->flowlist); - ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValPolicingprofileEntry, val1); + ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValPolicingprofileEntry, + val1); kval->SetCfgVal(cval1); @@ -2853,12 +2925,12 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, SET_USER_DATA_FLAGS(kval, rename); - // Update the new flowlist name in MAINTBL + // Update the new flowlist name in MAINTBL result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(first_ckv); return result_code; @@ -2874,9 +2946,9 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdatePolicingProfileEntryRenamed( ConfigKeyVal *rename_info, DalDmlIntf *dmi, upll_keytype_datatype_t data_type) { UPLL_FUNC_TRACE; - uint8_t rename = 0; // UNINIT + uint8_t rename = 0; // UNINIT uint8_t *ctrlr_id = NULL; - if (!rename_info || !rename_info->get_key()) { // COVERITY FORWARD NULL + if (!rename_info || !rename_info->get_key()) { // COVERITY FORWARD NULL return UPLL_RC_ERR_GENERIC; } GET_USER_DATA_CTRLR(rename_info, ctrlr_id); @@ -2902,12 +2974,17 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdatePolicingProfileEntryRenamed( return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy( - key_rename->new_flowlist_name, - reinterpret_cast - (rename_info->get_key())->new_flowlist_name, - (kMaxLenFlowListName + 1)); + key_rename->new_flowlist_name, + reinterpret_cast + (rename_info->get_key())->new_flowlist_name, + (kMaxLenFlowListName + 1)); DbSubOp dbop1 = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop1, dmi, MAINTBL); + result_code = ReadConfigDB(okey, + data_type, + UNC_OP_READ, + dbop1, + dmi, + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { free(key_rename); return result_code; @@ -2915,25 +2992,25 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdatePolicingProfileEntryRenamed( while (okey) { result_code = GetChildConfigKey(tmp_key, okey); if (result_code != UPLL_RC_SUCCESS) { - free(key_rename); // COV RESOURCE LEAK FIC + free(key_rename); // COV RESOURCE LEAK FIC return result_code; } result_code = GetChildConfigKey(ctrlr_tmp_key, okey); if (result_code != UPLL_RC_SUCCESS) { - // COV RESOURCE LEAK FIX + // COV RESOURCE LEAK FIX delete tmp_key; free(key_rename); return result_code; } - if (!tmp_key || !(tmp_key->get_key())) { // COVERITY FORWARD NULL - delete ctrlr_tmp_key; // COV RESOURCE LEAK FIX + if (!tmp_key || !(tmp_key->get_key())) { // COVERITY FORWARD NULL + delete ctrlr_tmp_key; // COV RESOURCE LEAK FIX free(key_rename); delete tmp_key; return UPLL_RC_ERR_GENERIC; } - // COVERITY FORWARD NULL + // COVERITY FORWARD NULL if (!ctrlr_tmp_key || !(ctrlr_tmp_key->get_key())) { - // COV RESOURCE LEAK FIX + // COV RESOURCE LEAK FIX free(key_rename); delete ctrlr_tmp_key; delete tmp_key; @@ -2944,12 +3021,16 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdatePolicingProfileEntryRenamed( SET_USER_DATA_FLAGS(tmp_key, rename); SET_USER_DATA_FLAGS(ctrlr_tmp_key, rename); tmp_key->AppendCfgKeyVal(table[MAINTBL]->get_key_type(), - IpctSt::kIpcInvalidStNum, key_rename, NULL); + IpctSt::kIpcInvalidStNum, key_rename, NULL); ctrlr_tmp_key->AppendCfgKeyVal(table[MAINTBL]->get_key_type(), - IpctSt::kIpcInvalidStNum, key_rename, NULL); + IpctSt::kIpcInvalidStNum, key_rename, NULL); DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; - result_code = UpdateRenameKey(tmp_key, data_type, UNC_OP_UPDATE, dmi, &dbop, - MAINTBL); + result_code = UpdateRenameKey(tmp_key, + data_type, + UNC_OP_UPDATE, + dmi, + &dbop, + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmp_key); DELETE_IF_NOT_NULL(ctrlr_tmp_key); @@ -2959,19 +3040,19 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdatePolicingProfileEntryRenamed( SET_USER_DATA_CTRLR(ctrlr_tmp_key, ctrlr_id); DbSubOp dbop1 = { kOpNotRead, kOpMatchCtrlr, kOpInOutFlag }; result_code = UpdateRenameKey(tmp_key, data_type, UNC_OP_UPDATE, dmi, - &dbop1, CTRLRTBL); + &dbop1, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmp_key); DELETE_IF_NOT_NULL(ctrlr_tmp_key); DELETE_IF_NOT_NULL(okey); return result_code; } - // Check with Sarath - Start + // Check with Sarath - Start DELETE_IF_NOT_NULL(tmp_key); DELETE_IF_NOT_NULL(ctrlr_tmp_key); okey = okey->get_next_cfg_key_val(); } - DELETE_IF_NOT_NULL(okey); // Logically dead code + DELETE_IF_NOT_NULL(okey); // Logically dead code FREE_IF_NOT_NULL(key_rename); return result_code; } @@ -2979,12 +3060,13 @@ upll_rc_t PolicingProfileEntryMoMgr::UpdatePolicingProfileEntryRenamed( bool PolicingProfileEntryMoMgr::IsValidKey(void *ikey, uint64_t index) { UPLL_FUNC_TRACE; key_policingprofile_entry *key = - reinterpret_cast(ikey); + reinterpret_cast(ikey); upll_rc_t ret_val = UPLL_RC_SUCCESS; if (index == uudst::policingprofile_entry::kDbiPolicingProfileName) { ret_val = ValidateKey( - reinterpret_cast(key->policingprofile_key.policingprofile_name), + reinterpret_cast + (key->policingprofile_key.policingprofile_name), kMinLenPolicingProfileName, kMaxLenPolicingProfileName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Policingprofile Name is not valid(%d)", ret_val); @@ -2993,8 +3075,8 @@ bool PolicingProfileEntryMoMgr::IsValidKey(void *ikey, uint64_t index) { } if (index == uudst::policingprofile_entry::kDbiSequenceNum) { if (!ValidateNumericRange(key->sequence_num, - kMinPolicingProfileSeqNum, - kMaxPolicingProfileSeqNum, true, true)) { + kMinPolicingProfileSeqNum, + kMaxPolicingProfileSeqNum, true, true)) { UPLL_LOG_DEBUG("Sequence number Syntax validation failed "); return false; } @@ -3009,7 +3091,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetPolicingProfileEntryCtrlrKeyval( upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == policingprofile_name || NULL == ctrlr_id || - NULL != ppe_keyval) { + NULL != ppe_keyval) { return UPLL_RC_ERR_GENERIC; } @@ -3019,7 +3101,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetPolicingProfileEntryCtrlrKeyval( } key_policingprofile_entry_t *key_policingprofie = - reinterpret_cast(ppe_keyval->get_key()); + reinterpret_cast(ppe_keyval->get_key()); uuu::upll_strncpy( key_policingprofie->policingprofile_key.policingprofile_name, policingprofile_name, @@ -3037,8 +3119,8 @@ upll_rc_t PolicingProfileEntryMoMgr::PolicingProfileEntryCtrlrTblOper( upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ppe_ckv = NULL; result_code = GetPolicingProfileEntryCtrlrKeyval(ppe_ckv, - policingprofile_name, - ctrlr_id); + policingprofile_name, + ctrlr_id); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ppe_ckv); return result_code; @@ -3064,7 +3146,7 @@ upll_rc_t PolicingProfileEntryMoMgr::PolicingProfileEntryCtrlrTblOper( } DbSubOp dbop = { kOpReadExist, kOpMatchCtrlr, kOpInOutNone }; result_code = mgr->UpdateConfigDB(okey, dt_type, UNC_OP_READ, dmi, &dbop, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("Delete in entry table"); result_code = CtrlrTblDelete(ppe_ckv, dmi, dt_type); @@ -3089,7 +3171,7 @@ upll_rc_t PolicingProfileEntryMoMgr::PolicingProfileEntryCtrlrTblOper( } else { result_code = UPLL_RC_ERR_NO_SUCH_OPERATION; } - DELETE_IF_NOT_NULL(ppe_ckv); // COV RESOURCE LEAK FIX + DELETE_IF_NOT_NULL(ppe_ckv); // COV RESOURCE LEAK FIX return result_code; } @@ -3122,14 +3204,14 @@ upll_rc_t PolicingProfileEntryMoMgr::DecrementRefCount( return UPLL_RC_ERR_GENERIC; } if (UNC_VF_VALID == temp_ppe_val->valid[UPLL_IDX_FLOWLIST_PPE ]) { - FlowListMoMgr *flowlist_mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - if (NULL == flowlist_mgr) { - UPLL_LOG_DEBUG("flowlist_mgr is NULL"); - DELETE_IF_NOT_NULL(temp_ckv); - return UPLL_RC_ERR_GENERIC; - } - result_code = flowlist_mgr->AddFlowListToController( + FlowListMoMgr *flowlist_mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + if (NULL == flowlist_mgr) { + UPLL_LOG_DEBUG("flowlist_mgr is NULL"); + DELETE_IF_NOT_NULL(temp_ckv); + return UPLL_RC_ERR_GENERIC; + } + result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ppe_val->flowlist), dmi, reinterpret_cast(ctrlr_id), dt_type, UNC_OP_DELETE); if (result_code != UPLL_RC_SUCCESS) { @@ -3138,7 +3220,7 @@ upll_rc_t PolicingProfileEntryMoMgr::DecrementRefCount( } UPLL_LOG_DEBUG("AddFlowListToController failed err code(%d)", result_code) - DELETE_IF_NOT_NULL(temp_ckv); + DELETE_IF_NOT_NULL(temp_ckv); return result_code; } } @@ -3178,9 +3260,9 @@ upll_rc_t PolicingProfileEntryMoMgr::CtrlrTblDelete( return UPLL_RC_ERR_GENERIC; } if (UNC_VF_VALID == temp_ppe_val->valid[UPLL_IDX_FLOWLIST_PPE ]) { - FlowListMoMgr *flowlist_mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - result_code = flowlist_mgr->AddFlowListToController( + FlowListMoMgr *flowlist_mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ppe_val->flowlist), dmi, reinterpret_cast(ctrlr_id), dt_type, UNC_OP_DELETE); if (result_code != UPLL_RC_SUCCESS) { @@ -3190,7 +3272,7 @@ upll_rc_t PolicingProfileEntryMoMgr::CtrlrTblDelete( } UPLL_LOG_DEBUG("AddFlowListToController failed err code(%d)", result_code) - DELETE_IF_NOT_NULL(temp_ckv); + DELETE_IF_NOT_NULL(temp_ckv); return result_code; } } @@ -3199,7 +3281,7 @@ upll_rc_t PolicingProfileEntryMoMgr::CtrlrTblDelete( DELETE_IF_NOT_NULL(temp_ckv); DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; result_code = UpdateConfigDB(ppe_ckv, dt_type, UNC_OP_DELETE, dmi, &dbop, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { return UPLL_RC_SUCCESS; } else if (UPLL_RC_SUCCESS != result_code) { @@ -3216,7 +3298,12 @@ upll_rc_t PolicingProfileEntryMoMgr::CtrlrTblCreate( DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCs }; - result_code = ReadConfigDB(ppe_ckv, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); + result_code = ReadConfigDB(ppe_ckv, + dt_type, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("No entry in policingprofile entry maintbl"); return UPLL_RC_SUCCESS; @@ -3241,20 +3328,20 @@ upll_rc_t PolicingProfileEntryMoMgr::CtrlrTblCreate( return UPLL_RC_ERR_GENERIC; } if (UNC_VF_VALID == temp_ppe_val->valid[UPLL_IDX_FLOWLIST_PPE ]) { - FlowListMoMgr *flowlist_mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - if (NULL == flowlist_mgr) { - UPLL_LOG_DEBUG("flowlist_mgr is NULL"); - free(req_header); - return UPLL_RC_ERR_GENERIC; - } - result_code = flowlist_mgr->AddFlowListToController( + FlowListMoMgr *flowlist_mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + if (NULL == flowlist_mgr) { + UPLL_LOG_DEBUG("flowlist_mgr is NULL"); + free(req_header); + return UPLL_RC_ERR_GENERIC; + } + result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ppe_val->flowlist), dmi, reinterpret_cast(ctrlr_id), dt_type, UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("AddFlowListToController failed err code(%d)", result_code) - free(req_header); + free(req_header); return result_code; } } @@ -3266,97 +3353,75 @@ upll_rc_t PolicingProfileEntryMoMgr::CtrlrTblCreate( return result_code; } SET_USER_DATA_CTRLR(new_ppe, ctrlr_id); - DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; - result_code = ReadConfigDB(new_ppe, dt_type, UNC_OP_READ, dbop1, dmi, - CTRLRTBL); - if (UPLL_RC_SUCCESS == result_code) { - ppe_ckv = ppe_ckv->get_next_cfg_key_val(); - DELETE_IF_NOT_NULL(new_ppe); - continue; - } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("CtrlrTbl create failed %d", result_code); - free(req_header); - DELETE_IF_NOT_NULL(new_ppe); - return result_code; - } val_policingprofile_entry_ctrl_t *val_ctrlr = - reinterpret_cast(GetVal(new_ppe)); + reinterpret_cast + (ConfigKeyVal::Malloc( + sizeof(val_policingprofile_entry_ctrl_t))); if (NULL == val_ctrlr) { free(req_header); DELETE_IF_NOT_NULL(new_ppe); return UPLL_RC_ERR_GENERIC; } + new_ppe->AppendCfgVal(IpctSt::kIpcInvalidStNum, val_ctrlr); val_policingprofile_entry_t *val = - reinterpret_cast(GetVal(ppe_ckv)); + reinterpret_cast(GetVal(ppe_ckv)); val_ctrlr->cs_row_status = (unc_keytype_configstatus_t)val->cs_row_status; - // capability check - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(new_ppe); - free(req_header); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, - reinterpret_cast(ctrlr_id), - dt_type, - &cur_instance_count, - dmi, CTRLRTBL); - DELETE_IF_NOT_NULL(temp_key); - - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(new_ppe); - free(req_header); - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - + // capability check result_code = ValidateCapability( - req_header, ppe_ckv, reinterpret_cast(ctrlr_id)); + req_header, ppe_ckv, reinterpret_cast(ctrlr_id)); unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); if (result_code != UPLL_RC_SUCCESS) { - // Policingprofile is not supported for other than PFC Controller - // so skip adding entry for such sontroller in ctrlr table + // Policingprofile is not supported for other than PFC Controller + // so skip adding entry for such sontroller in ctrlr table DELETE_IF_NOT_NULL(new_ppe); if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_id), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - ppe_ckv = ppe_ckv->get_next_cfg_key_val(); - continue; - } - free(req_header); - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; + dt_type, + &ctrlrtype)) || (ctrlrtype != + UNC_CT_PFC)) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + ppe_ckv = ppe_ckv->get_next_cfg_key_val(); + continue; + } + free(req_header); + UPLL_LOG_DEBUG("Key not supported by controller"); + return result_code; } for (unsigned int loop = 0; loop < (sizeof(val_ctrlr->valid)/sizeof(val_ctrlr->valid[0])); loop++) { if (val->valid[loop] == UNC_VF_NOT_SUPPORTED) - val_ctrlr->valid[loop] = UNC_VF_INVALID; + val_ctrlr->valid[loop] = UNC_VF_INVALID; else val_ctrlr->valid[loop] = val->valid[loop]; - UPLL_LOG_DEBUG("valid of %d - %d ctrlrtbl - %d", loop, val->valid[loop], - val_ctrlr->valid[loop]); + UPLL_LOG_DEBUG("valid of %d - %d ctrlrtbl - %d", + loop, + val->valid[loop], + val_ctrlr->valid[loop]); } - //Audit + // Audit if (UPLL_DT_AUDIT == dt_type) { UPLL_LOG_DEBUG("Audit db setting cs"); for (unsigned int loop = 0; - loop < (sizeof(val_ctrlr->valid)/sizeof(val_ctrlr->valid[0])); - loop++) { - val_ctrlr->cs_attr[loop] = (unc_keytype_configstatus_t)val->cs_attr[loop]; + loop < (sizeof(val_ctrlr->valid)/sizeof(val_ctrlr->valid[0])); + loop++) { + val_ctrlr->cs_attr[loop] = (unc_keytype_configstatus_t) + val->cs_attr[loop]; } - val_ctrlr->cs_row_status = (unc_keytype_configstatus_t)val->cs_row_status; + val_ctrlr->cs_row_status = (unc_keytype_configstatus_t) + val->cs_row_status; } result_code = UpdateConfigDB(new_ppe, dt_type, UNC_OP_CREATE, dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + ppe_ckv = ppe_ckv->get_next_cfg_key_val(); + DELETE_IF_NOT_NULL(new_ppe); + continue; + } DELETE_IF_NOT_NULL(new_ppe); free(req_header); return result_code; @@ -3369,7 +3434,7 @@ upll_rc_t PolicingProfileEntryMoMgr::CtrlrTblCreate( } upll_rc_t PolicingProfileEntryMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckv = NULL; @@ -3379,7 +3444,7 @@ upll_rc_t PolicingProfileEntryMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, return result_code; } result_code = ReadConfigDB(ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { delete ckv; return result_code; @@ -3388,30 +3453,30 @@ upll_rc_t PolicingProfileEntryMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, std::list < unc_keytype_configstatus_t > list_cs_row; val_policingprofile_entry_ctrl_t *val; for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { + ++loop) { std::list < unc_keytype_configstatus_t > list_attr; vec_attr.push_back(list_attr); } ConfigKeyVal *temp_ckv = ckv; for (; temp_ckv != NULL; temp_ckv = temp_ckv->get_next_cfg_key_val()) { val = reinterpret_cast - (GetVal(temp_ckv)); + (GetVal(temp_ckv)); list_cs_row.push_back((unc_keytype_configstatus_t) val->cs_row_status); for (unsigned int loop = 0; loop < sizeof(val->valid)/ - sizeof(val->valid[0]); ++loop) { + sizeof(val->valid[0]); ++loop) { vec_attr[loop].push_back((unc_keytype_configstatus_t) - val->cs_attr[loop]); + val->cs_attr[loop]); } } val_policingprofile_entry_t *val_temp = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); for (unsigned int loop = 0; loop < sizeof(val->valid)/ - sizeof(val->valid[0]); ++loop) { + sizeof(val->valid[0]); ++loop) { val_temp->cs_attr[loop] = GetConsolidatedCsStatus(vec_attr[loop]); } result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { return result_code; } @@ -3428,7 +3493,8 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadPolicingProfileEntry( const uint8_t *attrs = NULL; uint32_t max_attrs = 0; upll_rc_t result_code; - if (NULL == policingprofile_name || (!ctrlr_id) || (!dmi)) { // FORWARD NULL + if (NULL == policingprofile_name || (!ctrlr_id) || (!dmi)) { + // FORWARD NULL return UPLL_RC_ERR_GENERIC; } if (NULL != ppe_ckv) { @@ -3440,7 +3506,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadPolicingProfileEntry( return result_code; } key_policingprofile_entry_t *key = - reinterpret_cast(ppe_ckv->get_key()); + reinterpret_cast(ppe_ckv->get_key()); if (!key) { delete ppe_ckv; return UPLL_RC_ERR_GENERIC; @@ -3451,7 +3517,12 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadPolicingProfileEntry( (kMaxLenPolicingProfileName + 1)); key->sequence_num = seq_num; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCs }; - result_code = ReadConfigDB(ppe_ckv, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); + result_code = ReadConfigDB(ppe_ckv, + dt_type, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { delete ppe_ckv; return result_code; @@ -3467,100 +3538,102 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadPolicingProfileEntry( SET_USER_DATA_CTRLR(ctrlr_ckv, ctrlr_id); DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutCs }; result_code = ReadConfigDB(ctrlr_ckv, dt_type, UNC_OP_READ, dbop1, dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { delete ppe_ckv; delete ctrlr_ckv; return result_code; } val_policingprofile_entry_t *val = - reinterpret_cast(GetVal(temp_ckv)); + reinterpret_cast(GetVal(temp_ckv)); val_policingprofile_entry_ctrl_t *ctrl_val = - reinterpret_cast(GetVal(ctrlr_ckv)); + reinterpret_cast + (GetVal(ctrlr_ckv)); val->cs_row_status = ctrl_val->cs_row_status; bool ret_code = false; if ((opt1 == UNC_OPT1_DETAIL) && (dt_type == UPLL_DT_STATE)) { ret_code = GetStateCapability(ctrlr_id, UNC_KT_POLICING_PROFILE_ENTRY, - &max_attrs, &attrs); - if (!ret_code ) { - UPLL_LOG_DEBUG("GetStateCapability Is failed in PolicingProfileEntry %d", - ret_code); + &max_attrs, &attrs); + if (!ret_code) { + UPLL_LOG_DEBUG("GetStateCapability Is failed in" + "PolicingProfileEntry %d", + ret_code); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - if (max_attrs>0) { + if (max_attrs > 0) { result_code = ValPolicingProfileEntryAttributeSupportCheck( - val, attrs); + val, attrs); } for (unsigned int loop = 0; loop < - sizeof(val->valid[loop]/sizeof(val->valid[0])); loop++) { + sizeof(val->valid[loop]/sizeof(val->valid[0])); loop++) { val->cs_attr[loop] = ctrl_val->cs_attr[loop]; } } else { for (unsigned int loop = 0; loop < - sizeof(val->valid[loop]/sizeof(val->valid[0])); loop++) { + sizeof(val->valid[loop]/sizeof(val->valid[0])); loop++) { val->valid[loop] = ctrl_val->valid[loop]; val->cs_attr[loop] = ctrl_val->cs_attr[loop]; } } - if (val->valid[UPLL_IDX_FLOWLIST_PPE] != UNC_VF_VALID) { + if (val->valid[UPLL_IDX_FLOWLIST_PPE] != UNC_VF_VALID) { uuu::upll_strncpy(val->flowlist, - "\0", (kMaxLenFlowListName + 1)); - } - if (val->valid[UPLL_IDX_CBS_PPE] != UNC_VF_VALID) { - val->cbs = 0; - } - if (val->valid[UPLL_IDX_PIR_PPE] != UNC_VF_VALID) { - val->pir = 0; - } - if (val->valid[UPLL_IDX_PBS_PPE] != UNC_VF_VALID) { - val->pbs = 0; - } - if (val->valid[UPLL_IDX_GREEN_ACTION_PPE] != UNC_VF_VALID) { - val->green_action = 0; - } - if (val->valid[UPLL_IDX_GREEN_PRIORITY_PPE] != UNC_VF_VALID) { - val->green_action_priority = 0; - } - if (val->valid[UPLL_IDX_GREEN_DSCP_PPE] != UNC_VF_VALID) { - val->green_action_dscp = 0; - } - if (val->valid[UPLL_IDX_GREEN_DROP_PPE] != UNC_VF_VALID) { - val->green_action_drop_precedence = 0; - } + "\0", (kMaxLenFlowListName + 1)); + } + if (val->valid[UPLL_IDX_CBS_PPE] != UNC_VF_VALID) { + val->cbs = 0; + } + if (val->valid[UPLL_IDX_PIR_PPE] != UNC_VF_VALID) { + val->pir = 0; + } + if (val->valid[UPLL_IDX_PBS_PPE] != UNC_VF_VALID) { + val->pbs = 0; + } + if (val->valid[UPLL_IDX_GREEN_ACTION_PPE] != UNC_VF_VALID) { + val->green_action = 0; + } + if (val->valid[UPLL_IDX_GREEN_PRIORITY_PPE] != UNC_VF_VALID) { + val->green_action_priority = 0; + } + if (val->valid[UPLL_IDX_GREEN_DSCP_PPE] != UNC_VF_VALID) { + val->green_action_dscp = 0; + } + if (val->valid[UPLL_IDX_GREEN_DROP_PPE] != UNC_VF_VALID) { + val->green_action_drop_precedence = 0; + } - if (val->valid[UPLL_IDX_YELLOW_ACTION_PPE] != UNC_VF_VALID) { - val->yellow_action = 0; - } + if (val->valid[UPLL_IDX_YELLOW_ACTION_PPE] != UNC_VF_VALID) { + val->yellow_action = 0; + } - if (val->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] != UNC_VF_VALID) { - val->yellow_action_priority = 0; - } + if (val->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] != UNC_VF_VALID) { + val->yellow_action_priority = 0; + } - if (val->valid[UPLL_IDX_YELLOW_DSCP_PPE] != UNC_VF_VALID) { - val->yellow_action_dscp = 0; - } + if (val->valid[UPLL_IDX_YELLOW_DSCP_PPE] != UNC_VF_VALID) { + val->yellow_action_dscp = 0; + } - if (val->valid[UPLL_IDX_YELLOW_DROP_PPE] != UNC_VF_VALID) { - val->yellow_action_drop_precedence = 0; - } + if (val->valid[UPLL_IDX_YELLOW_DROP_PPE] != UNC_VF_VALID) { + val->yellow_action_drop_precedence = 0; + } - if (val->valid[UPLL_IDX_RED_ACTION_PPE] != UNC_VF_VALID) { - val->red_action = 0; - } + if (val->valid[UPLL_IDX_RED_ACTION_PPE] != UNC_VF_VALID) { + val->red_action = 0; + } - if (val->valid[UPLL_IDX_RED_PRIORITY_PPE] != UNC_VF_VALID) { - val->red_action_priority = 0; - } + if (val->valid[UPLL_IDX_RED_PRIORITY_PPE] != UNC_VF_VALID) { + val->red_action_priority = 0; + } - if (val->valid[UPLL_IDX_RED_DSCP_PPE] != UNC_VF_VALID) { - val->red_action_dscp = 0; - } + if (val->valid[UPLL_IDX_RED_DSCP_PPE] != UNC_VF_VALID) { + val->red_action_dscp = 0; + } - if (val->valid[UPLL_IDX_RED_DROP_PPE] != UNC_VF_VALID) { - val->red_action_drop_precedence = 0; - } + if (val->valid[UPLL_IDX_RED_DROP_PPE] != UNC_VF_VALID) { + val->red_action_drop_precedence = 0; + } temp_ckv = temp_ckv->get_next_cfg_key_val(); delete ctrlr_ckv; @@ -3569,9 +3642,9 @@ upll_rc_t PolicingProfileEntryMoMgr::ReadPolicingProfileEntry( } upll_rc_t PolicingProfileEntryMoMgr::GetValid(void *val, uint64_t index, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; val_policingprofile_entry_t *val_ppe = NULL; val_policingprofile_entry_ctrl_t *val_ppe_ctrl = NULL; @@ -3588,93 +3661,93 @@ upll_rc_t PolicingProfileEntryMoMgr::GetValid(void *val, uint64_t index, switch (index) { case uudst::policingprofile_entry::kDbiFlowlist: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_FLOWLIST_PPE); - break; + UPLL_IDX_FLOWLIST_PPE); + break; case uudst::policingprofile_entry::kDbiRate: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_RATE_PPE); - break; + UPLL_IDX_RATE_PPE); + break; case uudst::policingprofile_entry::kDbiCir: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_CIR_PPE); - break; + UPLL_IDX_CIR_PPE); + break; case uudst::policingprofile_entry::kDbiCbs: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_CBS_PPE); - break; + UPLL_IDX_CBS_PPE); + break; case uudst::policingprofile_entry::kDbiPir: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_PIR_PPE); - break; + UPLL_IDX_PIR_PPE); + break; case uudst::policingprofile_entry::kDbiPbs: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_PBS_PPE); - break; + UPLL_IDX_PBS_PPE); + break; case uudst::policingprofile_entry::kDbiGreenAction: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_GREEN_ACTION_PPE); - break; + UPLL_IDX_GREEN_ACTION_PPE); + break; case uudst::policingprofile_entry::kDbiGreenPriority: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_GREEN_PRIORITY_PPE); - break; + UPLL_IDX_GREEN_PRIORITY_PPE); + break; case uudst::policingprofile_entry::kDbiGreenDscp: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_GREEN_DSCP_PPE); - break; + UPLL_IDX_GREEN_DSCP_PPE); + break; case uudst::policingprofile_entry::kDbiGreenDrop: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_GREEN_DROP_PPE); - break; + UPLL_IDX_GREEN_DROP_PPE); + break; case uudst::policingprofile_entry::kDbiYellowAction: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_YELLOW_ACTION_PPE); - break; + UPLL_IDX_YELLOW_ACTION_PPE); + break; case uudst::policingprofile_entry::kDbiYellowPriority: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_YELLOW_PRIORITY_PPE); - break; + UPLL_IDX_YELLOW_PRIORITY_PPE); + break; case uudst::policingprofile_entry::kDbiYellowDscp: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_YELLOW_DSCP_PPE); - break; + UPLL_IDX_YELLOW_DSCP_PPE); + break; case uudst::policingprofile_entry::kDbiYellowDrop: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_YELLOW_DROP_PPE); - break; + UPLL_IDX_YELLOW_DROP_PPE); + break; case uudst::policingprofile_entry::kDbiRedAction: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_RED_ACTION_PPE); - break; + UPLL_IDX_RED_ACTION_PPE); + break; case uudst::policingprofile_entry::kDbiRedPriority: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_RED_PRIORITY_PPE); - break; + UPLL_IDX_RED_PRIORITY_PPE); + break; case uudst::policingprofile_entry::kDbiRedDscp: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_RED_DSCP_PPE); - break; + UPLL_IDX_RED_DSCP_PPE); + break; case uudst::policingprofile_entry::kDbiRedDrop: valid = GET_VALID_MAINCTRL(tbl, val_ppe_ctrl, val_ppe, - UPLL_IDX_RED_DROP_PPE); - break; + UPLL_IDX_RED_DROP_PPE); + break; default : valid = NULL; @@ -3684,7 +3757,7 @@ upll_rc_t PolicingProfileEntryMoMgr::GetValid(void *val, uint64_t index, } upll_rc_t PolicingProfileEntryMoMgr::IsFlowlistConfigured( - const char* flowlist_name, DalDmlIntf *dmi) { + const char* flowlist_name, DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *ckv = NULL; result_code = GetChildConfigKey(ckv, NULL); @@ -3695,7 +3768,7 @@ upll_rc_t PolicingProfileEntryMoMgr::IsFlowlistConfigured( reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); uuu::upll_strncpy(ppe_val->flowlist, flowlist_name, - (kMaxLenFlowListName + 1)); + (kMaxLenFlowListName + 1)); ppe_val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; ckv->AppendCfgVal(IpctSt::kIpcStValPolicingprofileEntry, ppe_val); DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; @@ -3734,7 +3807,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, if (UNC_KT_POLICING_PROFILE_ENTRY != key->get_key_type()) { UPLL_LOG_DEBUG("Received keytype (%d) is not KT_POLICINGPROFILE_ENTRY!!", - key->get_key_type()); + key->get_key_type()); return UPLL_RC_ERR_BAD_REQUEST; } @@ -3751,8 +3824,8 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS != (rt_code = ValidatePolicingProfileEntryKey(key, req->operation))) { UPLL_LOG_DEBUG("KT_POLICING_PROFILE_ENTRY key structure syntax " - "validation failed: Err code-%d", - rt_code); + "validation failed: Err code-%d", + rt_code); return rt_code; } @@ -3787,28 +3860,31 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryKey( rt_code = ValidateKey( reinterpret_cast(key_policingprofile_entry-> - policingprofile_key.policingprofile_name), - kMinLenPolicingProfileName, kMaxLenPolicingProfileName); + policingprofile_key.policingprofile_name), + kMinLenPolicingProfileName, kMaxLenPolicingProfileName); if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG("PolicingProfile Name(%s) syntax validation failed: " - "err code - %d", key_policingprofile_entry->policingprofile_key. - policingprofile_name , rt_code); + "err code - %d", + key_policingprofile_entry->policingprofile_key. + policingprofile_name , rt_code); return rt_code; } if ((op != UNC_OP_READ_SIBLING_COUNT) && (op != UNC_OP_READ_SIBLING_BEGIN)) { - /** when policingprofile name is set to "flood", - * seq_num should be set as 1 */ - if (strcmp(reinterpret_cast(key_policingprofile_entry-> - policingprofile_key.policingprofile_name), "flood") == 0) { + /** when policingprofile name is set to "flood", + * seq_num should be set as 1 */ + if (strcmp(reinterpret_cast( + key_policingprofile_entry-> + policingprofile_key.policingprofile_name), + "flood") == 0) { if (key_policingprofile_entry->sequence_num == 1) { UPLL_LOG_DEBUG("valid sequence_num filled for profile_name-flood"); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Error Invalid sequence_num for policing name-flood(%d)", - key_policingprofile_entry->sequence_num); + key_policingprofile_entry->sequence_num); return UPLL_RC_ERR_CFG_SEMANTIC; } } @@ -3817,14 +3893,14 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryKey( kMinPolicingProfileSeqNum, kMaxPolicingProfileSeqNum, true, true)) { UPLL_LOG_DEBUG("SeqNum(%d) syntax validation failed: err code - %d", - key_policingprofile_entry->sequence_num, rt_code); + key_policingprofile_entry->sequence_num, rt_code); return UPLL_RC_ERR_CFG_SYNTAX; } } else { if (key_policingprofile_entry->sequence_num) { - // reset the sequence number - // for sibling read and count - // operation + // reset the sequence number + // for sibling read and count + // operation key_policingprofile_entry->sequence_num = 0; } } @@ -3868,41 +3944,25 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingprofileEntryVal( } upll_rc_t PolicingProfileEntryMoMgr::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == req || !(ikey->get_key())) { - UPLL_LOG_ERROR("Given Input is Empty"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_ERROR("Given Input is Empty"); + return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_ERROR("UpdateMo for %d", ikey->get_key_type()); + UPLL_LOG_TRACE("UpdateMo for %d", ikey->get_key_type()); result_code = ValidateMessage(req, ikey); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Validation Message is Failed "); - return result_code; - } - ConfigKeyVal *okey = NULL; - result_code = GetChildConfigKey(okey, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); + UPLL_LOG_ERROR("Validation Message is Failed "); return result_code; } - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; - result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Record does Not Exists"); - delete okey; - return result_code; - } - delete okey; result_code = ValidateAttribute(ikey, dmi, req); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Validate Attribute is Failed"); - return result_code; + UPLL_LOG_ERROR("Validate Attribute is Failed"); + return result_code; } DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, @@ -3933,21 +3993,16 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, return result_code; } - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } return result_code; } upll_rc_t PolicingProfileEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingprofile_entry_t *val_ppe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_ppe) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -3960,8 +4015,8 @@ upll_rc_t PolicingProfileEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -3976,19 +4031,19 @@ upll_rc_t PolicingProfileEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } UPLL_LOG_DEBUG("Flag from parent : %d", rename); DELETE_IF_NOT_NULL(pkey); - // Check flowlist is renamed + // Check flowlist is renamed if ((UNC_VF_VALID == val_ppe->valid[UPLL_IDX_FLOWLIST_PPE]) && ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ppe->flowlist), fl_ckv, dmi); + (val_ppe->flowlist), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -4001,7 +4056,8 @@ upll_rc_t PolicingProfileEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (fl_rename & 0x01) { - rename |= FLOWLIST_RENAME; // TODO Check for correct flag value + rename |= FLOWLIST_RENAME; // TODO(upll) : + // Check for correct flag value } DELETE_IF_NOT_NULL(fl_ckv); } @@ -4016,14 +4072,14 @@ upll_rc_t PolicingProfileEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, if (UNC_VF_VALID == val_ppe->valid[UPLL_IDX_FLOWLIST_PPE]) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ppe->flowlist), fl_ckv, dmi); + (val_ppe->flowlist), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -4036,14 +4092,16 @@ upll_rc_t PolicingProfileEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (fl_rename & 0x01) { - rename |= FLOWLIST_RENAME; // TODO Check for correct flag value + rename |= FLOWLIST_RENAME; // TODO(upll) : Check for correct + // flag value } else { rename = rename & NO_FLOWLIST_RENAME; } DELETE_IF_NOT_NULL(fl_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_ppe->valid [UPLL_IDX_FLOWLIST_PPE]) { - rename |= ~FLOWLIST_RENAME; // TODO Check for correct flag value. No rename flowlist value should be set + rename |= ~FLOWLIST_RENAME; // TODO(upll) : Check for correct flag value. + // No rename flowlist value should be set } SET_USER_DATA_FLAGS(ikey, rename); } @@ -4051,13 +4109,13 @@ upll_rc_t PolicingProfileEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t PolicingProfileEntryMoMgr::GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + UNC_KT_FLOWLIST))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -4066,8 +4124,8 @@ upll_rc_t PolicingProfileEntryMoMgr::GetFlowlistConfigKey( key_flowlist_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->flowlist_name, - flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_name, + (kMaxLenFlowListName+1)); return UPLL_RC_SUCCESS; } @@ -4077,7 +4135,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileName( UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; - // if policing profile is applied in policing map return error + // if policing profile is applied in policing map return error if (req->operation == UNC_OP_CREATE) { rt_code = ValidatePolicingProfileEntryInPolicingMap(ikey, dmi, req); if (rt_code != UPLL_RC_SUCCESS) { @@ -4085,44 +4143,6 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileName( return rt_code; } } - /* validate policingprofile name */ - key_policingprofile_entry_t *ppe_key =reinterpret_cast - (ikey->get_key()); - - /** check policingprofile_name exists in KT_POLICINGPROFILE table */ - MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); - if (NULL == mgr) { - return UPLL_RC_ERR_GENERIC; - } - ConfigKeyVal *pp_ckv = NULL; - rt_code = mgr->GetChildConfigKey(pp_ckv, NULL); - if (UPLL_RC_SUCCESS != rt_code) { - UPLL_LOG_DEBUG("GetChildConfigKey fails %d", rt_code); - return rt_code; - } - key_policingprofile_t *pp_key = reinterpret_cast - (pp_ckv->get_key()); - if (NULL == pp_key) { - UPLL_LOG_DEBUG("PolicingProfile key is NULL"); - delete pp_ckv; - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(pp_key->policingprofile_name, - ppe_key->policingprofile_key.policingprofile_name, - kMaxLenPolicingProfileName+1); - - rt_code = mgr->UpdateConfigDB(pp_ckv, req->datatype, - UNC_OP_READ, dmi); - - if (rt_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("policingprofile name does not exists in " - "KT_POLICINGPROFILE table"); - delete pp_ckv; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } - delete pp_ckv; return UPLL_RC_SUCCESS; } @@ -4133,7 +4153,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryValue( upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; bool check = false; val_policingprofile_entry_t *val_ppe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (val_ppe != NULL) { rt_code = ValidateFlowList(ikey, dmi, req); @@ -4144,64 +4164,71 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryValue( uint32_t operation = req->operation; if (UNC_OP_CREATE == operation) { if ((val_ppe->valid[UPLL_IDX_FLOWLIST_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID)) { + || (val_ppe->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID)) { check = true; } } else if (UNC_OP_UPDATE == operation) { if ((val_ppe->valid[UPLL_IDX_FLOWLIST_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_FLOWLIST_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID_NO_VALUE) - || (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID_NO_VALUE)) { - check = true; - } + || (val_ppe->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_FLOWLIST_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_CIR_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_GREEN_ACTION_PPE] == + UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_GREEN_PRIORITY_PPE] == + UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_GREEN_DSCP_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_GREEN_DROP_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_YELLOW_ACTION_PPE] == + UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_YELLOW_PRIORITY_PPE] == + UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_YELLOW_DSCP_PPE] == + UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_YELLOW_DROP_PPE] == + UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_RED_ACTION_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_RED_PRIORITY_PPE] == + UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_RED_DSCP_PPE] == UNC_VF_VALID_NO_VALUE) + || (val_ppe->valid[UPLL_IDX_RED_DROP_PPE] == UNC_VF_VALID_NO_VALUE)) { + check = true; + } } if (check) { rt_code = ValidatePolicingProfileEntryInPolicingMap(ikey, dmi, req); @@ -4217,20 +4244,22 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryValue( if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG( - " PolicingProfileEntryname Syntax validation failed :Err Code - %d", + " PolicingProfileEntryname Syntax validation failed" + ":Err Code - %d", rt_code); return rt_code; } } else if ((val_ppe->valid[UPLL_IDX_CIR_PPE] - == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID) - || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID)) { + == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_CBS_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_PIR_PPE] == UNC_VF_VALID) + || (val_ppe->valid[UPLL_IDX_PBS_PPE] == UNC_VF_VALID)) { UPLL_LOG_DEBUG("Error Rate is not filled but its subsequent field " "filled"); return UPLL_RC_ERR_CFG_SYNTAX; } else if ((operation == UNC_OP_UPDATE) - && (val_ppe->valid[UPLL_IDX_RATE_PPE] == UNC_VF_VALID_NO_VALUE)) { + && (val_ppe->valid[UPLL_IDX_RATE_PPE] == + UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset Rate"); val_ppe->rate = 0; } @@ -4240,17 +4269,17 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryValue( if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" Color action syntax validation failed :Err Code - %d", - rt_code); + rt_code); return rt_code; } /** Validate red_action_priority, green_action_priority, - yellow_action_priority */ + yellow_action_priority */ rt_code = ValidateColorPriority(val_ppe, operation); if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" Color priority syntax validation failed :Err Code - %d", - rt_code); + rt_code); return rt_code; } @@ -4259,7 +4288,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryValue( if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" Color precedence syntax validation failed:Err Code- %d", - rt_code); + rt_code); return rt_code; } @@ -4281,7 +4310,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateFlowList( upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; val_policingprofile_entry_t *ppe_val = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (ppe_val->valid[UPLL_IDX_FLOWLIST_PPE] == UNC_VF_VALID) { rt_code = ValidateKey(reinterpret_cast(ppe_val->flowlist), kMinLenFlowListName, @@ -4305,25 +4334,26 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateFlowList( return rt_code; } key_flowlist_t *fl_key = reinterpret_cast - (fl_ckv->get_key()); + (fl_ckv->get_key()); uuu::upll_strncpy(fl_key->flowlist_name, - ppe_val->flowlist, - kMaxLenFlowListName+1); + ppe_val->flowlist, + kMaxLenFlowListName+1); rt_code = mgr->UpdateConfigDB(fl_ckv, req->datatype, - UNC_OP_READ, dmi); + UNC_OP_READ, dmi); delete fl_ckv; if (rt_code != UPLL_RC_ERR_INSTANCE_EXISTS) { UPLL_LOG_DEBUG("flowlist name does not exists in " - "KT_FLOWLIST table"); + "KT_FLOWLIST table"); return UPLL_RC_ERR_CFG_SEMANTIC; } } else if ((req->operation == UNC_OP_UPDATE || req->operation == UNC_OP_CREATE) - && (ppe_val->valid[UPLL_IDX_FLOWLIST_PPE] == UNC_VF_VALID_NO_VALUE)) { - UPLL_LOG_DEBUG("Reset Flowlist name "); - memset(ppe_val->flowlist, '\0', sizeof(ppe_val->flowlist)); + && (ppe_val->valid[UPLL_IDX_FLOWLIST_PPE] == + UNC_VF_VALID_NO_VALUE)) { + UPLL_LOG_DEBUG("Reset Flowlist name "); + memset(ppe_val->flowlist, '\0', sizeof(ppe_val->flowlist)); } return UPLL_RC_SUCCESS; } @@ -4336,16 +4366,16 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryInPolicingMap( upll_rc_t result_code = UPLL_RC_ERR_GENERIC; val_policingmap_t *val_policingmap = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); key_policingprofile_entry_t *key_ppe = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uuu::upll_strncpy(val_policingmap->policer_name, - key_ppe->policingprofile_key.policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_ppe->policingprofile_key.policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; ConfigVal *tempval = new ConfigVal(IpctSt::kIpcStValPolicingmap, - val_policingmap); + val_policingmap); MoMgrImpl *mgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_VTN_POLICINGMAP))); if (!mgr) { @@ -4363,31 +4393,31 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryInPolicingMap( DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = mgr->ReadConfigDB(vtn_ckv, req->datatype, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Policing profile name used in VTN_POLICINGMAP table"); DELETE_IF_NOT_NULL(vtn_ckv); return UPLL_RC_ERR_CFG_SEMANTIC; } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("Policing profile name check in pm failed %d", - result_code); + result_code); DELETE_IF_NOT_NULL(vtn_ckv); return result_code; } DELETE_IF_NOT_NULL(vtn_ckv); val_policingmap_t *val_policingmap1 = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); uuu::upll_strncpy(val_policingmap1->policer_name, - key_ppe->policingprofile_key.policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_ppe->policingprofile_key.policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val_policingmap1->valid[UPLL_IDX_POLICERNAME_PM ] = UNC_VF_VALID; ConfigVal *tempval1 = new ConfigVal(IpctSt::kIpcStValPolicingmap, - val_policingmap1); + val_policingmap1); mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_POLICINGMAP))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_POLICINGMAP))); if (!mgr) { DELETE_IF_NOT_NULL(tempval1); return UPLL_RC_ERR_GENERIC; @@ -4402,31 +4432,31 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryInPolicingMap( vbr_ckv->AppendCfgVal(tempval1); result_code = mgr->ReadConfigDB(vbr_ckv, req->datatype, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Policing profile name used in VTN_POLICINGMAP table"); DELETE_IF_NOT_NULL(vbr_ckv); return UPLL_RC_ERR_CFG_SEMANTIC; } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("Policing profile name check in pm failed %d", - result_code); + result_code); DELETE_IF_NOT_NULL(vbr_ckv); return result_code; } DELETE_IF_NOT_NULL(vbr_ckv); val_policingmap_t *val_policingmap2 = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); uuu::upll_strncpy(val_policingmap2->policer_name, - key_ppe->policingprofile_key.policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_ppe->policingprofile_key.policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val_policingmap2->valid[UPLL_IDX_POLICERNAME_PM ] = UNC_VF_VALID; ConfigVal *tempval2 = new ConfigVal(IpctSt::kIpcStValPolicingmap, - val_policingmap2); + val_policingmap2); mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIF_POLICINGMAP))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIF_POLICINGMAP))); if (!mgr) { DELETE_IF_NOT_NULL(tempval2); return UPLL_RC_ERR_GENERIC; @@ -4441,14 +4471,14 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryInPolicingMap( vbrif_ckv->AppendCfgVal(tempval2); result_code = mgr->ReadConfigDB(vbrif_ckv, req->datatype, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(vbrif_ckv); UPLL_LOG_DEBUG("Policing profile name used in VTN_POLICINGMAP table"); return UPLL_RC_ERR_CFG_SEMANTIC; } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("Policing profile name check in pm failed %d", - result_code); + result_code); DELETE_IF_NOT_NULL(vbrif_ckv); return result_code; } @@ -4458,7 +4488,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidatePolicingProfileEntryInPolicingMap( } upll_rc_t PolicingProfileEntryMoMgr::GetFlowListEntryConfigKey( - ConfigKeyVal *&okey, ConfigKeyVal *ikey) { + ConfigKeyVal *&okey, ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -4466,11 +4496,11 @@ upll_rc_t PolicingProfileEntryMoMgr::GetFlowListEntryConfigKey( (GetVal(ikey)); key_flowlist_entry_t *out_key = reinterpret_cast (ConfigKeyVal:: - Malloc(sizeof(key_flowlist_entry_t))); + Malloc(sizeof(key_flowlist_entry_t))); uuu::upll_strncpy(out_key->flowlist_key.flowlist_name, - val->flowlist, kMaxLenFlowListName); + val->flowlist, kMaxLenFlowListName); okey = new ConfigKeyVal(UNC_KT_FLOWLIST_ENTRY, - IpctSt::kIpcStKeyFlowlistEntry, out_key, NULL); + IpctSt::kIpcStKeyFlowlistEntry, out_key, NULL); if (!okey) return UPLL_RC_ERR_GENERIC; return result_code; @@ -4489,10 +4519,15 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateValidElements( key_policingprofile_entry_t *ppe_key = reinterpret_cast (ppe_ckv->get_key()); uuu::upll_strncpy(ppe_key->policingprofile_key.policingprofile_name, - policingprofile_name, kMaxLenPolicingProfileName); + policingprofile_name, kMaxLenPolicingProfileName); DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; - result_code = ReadConfigDB(ppe_ckv, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); + result_code = ReadConfigDB(ppe_ckv, + dt_type, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("No entry in policingprofile entry maintbl"); delete ppe_ckv; @@ -4501,7 +4536,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateValidElements( ConfigKeyVal *temp_ppe_ckv = ppe_ckv; while (NULL != temp_ppe_ckv) { val_policingprofile_entry_t *val_ppe = reinterpret_cast - (GetVal(temp_ppe_ckv)); + (GetVal(temp_ppe_ckv)); if (UNC_VF_VALID != val_ppe->valid[UPLL_IDX_FLOWLIST_PPE ]) { UPLL_LOG_DEBUG("Attribute flowlist is not valid"); DELETE_IF_NOT_NULL(ppe_ckv); @@ -4516,7 +4551,7 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateValidElements( } MoMgrImpl *fle_mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST_ENTRY))); + UNC_KT_FLOWLIST_ENTRY))); if (NULL == fle_mgr) { UPLL_LOG_DEBUG("fle_mgr is NULL"); DELETE_IF_NOT_NULL(ppe_ckv); @@ -4524,7 +4559,10 @@ upll_rc_t PolicingProfileEntryMoMgr::ValidateValidElements( return UPLL_RC_ERR_GENERIC; } result_code = fle_mgr->UpdateConfigDB(okey, - dt_type, UNC_OP_READ, dmi, MAINTBL); + dt_type, + UNC_OP_READ, + dmi, + MAINTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("No seq number for given flowlist"); DELETE_IF_NOT_NULL(ppe_ckv); @@ -4623,15 +4661,16 @@ upll_rc_t PolicingProfileEntryMoMgr::IsFlowListMatched( return result_code; } val_policingprofile_entry_t *val_ppe = reinterpret_cast - (ConfigKeyVal:: - Malloc(sizeof(val_policingprofile_entry_t))); + (ConfigKeyVal:: + Malloc(sizeof( + val_policingprofile_entry_t))); val_ppe->valid[UPLL_IDX_FLOWLIST_PPE ] = UNC_VF_VALID; uuu::upll_strncpy(val_ppe->flowlist, flowlist_name, - kMaxLenFlowListName + 1); + kMaxLenFlowListName + 1); ppe_ckv->AppendCfgVal(IpctSt::kIpcStValPolicingprofileEntry, val_ppe); DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; result_code = ReadConfigDB(ppe_ckv, dt_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ppe_ckv); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { @@ -4652,7 +4691,7 @@ upll_rc_t PolicingProfileEntryMoMgr::IsFlowListMatched( } DbSubOp dbop1 = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; result_code = ReadConfigDB(ctrlr_ppe_ckv, dt_type, UNC_OP_READ, dbop1, dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { DELETE_IF_NOT_NULL(ppe_ckv); DELETE_IF_NOT_NULL(ctrlr_ppe_ckv); @@ -4680,8 +4719,8 @@ upll_rc_t PolicingProfileEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val->valid) / sizeof(val->valid[0]); - ++loop) { + loop < sizeof(val->valid) / sizeof(val->valid[0]); + ++loop) { val->cs_attr[loop] = UNC_CS_APPLIED; } val->cs_row_status = UNC_CS_APPLIED; @@ -4689,98 +4728,100 @@ upll_rc_t PolicingProfileEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } bool PolicingProfileEntryMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); return false; } -upll_rc_t PolicingProfileEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *main_ckv, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { +upll_rc_t PolicingProfileEntryMoMgr::UpdateConfigStatus( + ConfigKeyVal *main_ckv, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_policingprofile_entry_ctrl_t *ppe_val; unc_keytype_configstatus_t ctrlr_status; - uint8_t cs_status; + uint8_t cs_status; val_policingprofile_entry_t *val_ppe_main = reinterpret_cast (GetVal(main_ckv)); - ctrlr_status = - (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + ctrlr_status = + (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; ppe_val = reinterpret_cast - (GetVal(ctrlr_key)); + (GetVal(ctrlr_key)); if (ppe_val == NULL) return UPLL_RC_ERR_GENERIC; - cs_status = (val_ppe_main->cs_row_status); + cs_status = (val_ppe_main->cs_row_status); UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); if (op == UNC_OP_CREATE) { ppe_val->cs_row_status = ctrlr_status; - if (val_ppe_main->cs_row_status == UNC_CS_UNKNOWN) { - /* first entry in ctrlr table */ + if (val_ppe_main->cs_row_status == UNC_CS_UNKNOWN) { + /* first entry in ctrlr table */ cs_status = ctrlr_status; - } else if (val_ppe_main->cs_row_status == UNC_CS_APPLIED) { + } else if (val_ppe_main->cs_row_status == UNC_CS_APPLIED) { if (ctrlr_status == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; + cs_status = UNC_CS_PARTIALLY_APPLIED; } } else if (val_ppe_main->cs_row_status == UNC_CS_NOT_APPLIED) { - if (ctrlr_status == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; + if (ctrlr_status == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; } } else if (val_ppe_main->cs_row_status == UNC_CS_INVALID) { cs_status = UNC_CS_INVALID; } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; + cs_status = UNC_CS_PARTIALLY_APPLIED; } val_ppe_main->cs_row_status = cs_status; } - // Updating the Controller cs_row_status - val_policingprofile_entry_ctrl *run_ctrlr_val = - reinterpret_cast - (GetVal(upd_key)); + // Updating the Controller cs_row_status + val_policingprofile_entry_ctrl *run_ctrlr_val = + reinterpret_cast + (GetVal(upd_key)); if ((op == UNC_OP_UPDATE) && (upd_key != NULL)) { if (run_ctrlr_val != NULL) ppe_val->cs_row_status = run_ctrlr_val->cs_row_status; } for (unsigned int loop = 0; loop < sizeof(val_ppe_main->valid)/ - sizeof(val_ppe_main->valid[0]); ++loop) { - if (val_ppe_main->valid[loop] != UNC_VF_INVALID) { - if (ppe_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) - ppe_val->cs_attr[loop] = ctrlr_status; - else - ppe_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; - - if (op == UNC_OP_CREATE ) { - if (val_ppe_main->cs_attr[loop] == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; - } if (val_ppe_main->cs_attr[loop] == ctrlr_status) { - cs_status = ctrlr_status; - } else if (ctrlr_status == UNC_CS_APPLIED) { - if (val_ppe_main->cs_attr[loop] == UNC_CS_UNKNOWN) { - cs_status = ctrlr_status; - } else if (val_ppe_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - val_ppe_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; - } else { - cs_status = val_ppe_main->cs_attr[loop]; - } - } else if(ctrlr_status == UNC_CS_NOT_APPLIED) { - if(val_ppe_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_NOT_APPLIED; - } - } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } - val_ppe_main->cs_attr[loop] = cs_status; - UPLL_LOG_DEBUG("Main tbl cs_attr : %d", val_ppe_main->cs_attr[loop]); - } - } - } + sizeof(val_ppe_main->valid[0]); ++loop) { + if (val_ppe_main->valid[loop] != UNC_VF_INVALID) { + if (ppe_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) + ppe_val->cs_attr[loop] = ctrlr_status; + else + ppe_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + + if (op == UNC_OP_CREATE) { + if (val_ppe_main->cs_attr[loop] == UNC_CS_INVALID) { + cs_status = UNC_CS_INVALID; + } + if (val_ppe_main->cs_attr[loop] == ctrlr_status) { + cs_status = ctrlr_status; + } else if (ctrlr_status == UNC_CS_APPLIED) { + if (val_ppe_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + cs_status = ctrlr_status; + } else if (val_ppe_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + val_ppe_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } else { + cs_status = val_ppe_main->cs_attr[loop]; + } + } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { + if (val_ppe_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_NOT_APPLIED; + } + } else { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } + val_ppe_main->cs_attr[loop] = cs_status; + UPLL_LOG_DEBUG("Main tbl cs_attr : %d", val_ppe_main->cs_attr[loop]); + } + } + } return UPLL_RC_SUCCESS; } @@ -4796,9 +4837,9 @@ upll_rc_t PolicingProfileEntryMoMgr::Get_Tx_Consolidated_Status( break; case UNC_CS_PARTIALLY_APPLIED: if (current_ctrlr_cs == UNC_CS_NOT_APPLIED) { - // Todo: if this vtn has caused it then to change to applied. + // Todo: if this vtn has caused it then to change to applied. status = (drv_result_status != UNC_CS_APPLIED) ? - UNC_CS_PARTIALLY_APPLIED : drv_result_status; + UNC_CS_PARTIALLY_APPLIED : drv_result_status; } break; case UNC_CS_APPLIED: @@ -4806,16 +4847,17 @@ upll_rc_t PolicingProfileEntryMoMgr::Get_Tx_Consolidated_Status( case UNC_CS_INVALID: default: status = (drv_result_status == UNC_CS_NOT_APPLIED)? - UNC_CS_PARTIALLY_APPLIED: - (status == UNC_CS_UNKNOWN)?drv_result_status:status; + UNC_CS_PARTIALLY_APPLIED: + (status == UNC_CS_UNKNOWN)?drv_result_status:status; break; } return UPLL_RC_SUCCESS; } -upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal *ikey, - uint8_t *ctrlr_id, - DalDmlIntf *dmi) { +upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus( + ConfigKeyVal *ikey, + uint8_t *ctrlr_id, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ctrlr_ckv = NULL; @@ -4824,7 +4866,7 @@ upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal * bool applied = false, not_applied = false, invalid = false; unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutCs }; + kOpInOutCtrlr | kOpInOutCs }; if (!ikey || !dmi) { UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; @@ -4834,7 +4876,11 @@ upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal * UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", result_code); return result_code; } - result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, + result_code = ReadConfigDB(ctrlr_ckv, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB from ctrltbl failed err code %d", @@ -4844,9 +4890,9 @@ upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal * } for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { + tmp = tmp->get_next_cfg_key_val()) { ctrlr_val = reinterpret_cast - (GetVal(tmp)); + (GetVal(tmp)); if (!ctrlr_val) { UPLL_LOG_DEBUG("Controller Value is empty"); tmp = NULL; @@ -4856,15 +4902,15 @@ upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal * GET_USER_DATA_CTRLR(tmp, pp_exist_on_ctrlr); if (!strcmp(reinterpret_cast(pp_exist_on_ctrlr), reinterpret_cast(ctrlr_id))) - continue; // skipping entry of deleted controller + continue; // skipping entry of deleted controller switch (ctrlr_val->cs_row_status) { case UNC_CS_APPLIED: applied = true; - break; + break; case UNC_CS_NOT_APPLIED: not_applied = true; - break; + break; case UNC_CS_INVALID: invalid = true; break; @@ -4872,14 +4918,15 @@ upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal * UPLL_LOG_DEBUG("Invalid status"); DELETE_IF_NOT_NULL(ctrlr_ckv); break; - // return UPLL_RC_ERR_GENERIC; + // return UPLL_RC_ERR_GENERIC; } pp_exist_on_ctrlr = NULL; } UPLL_LOG_DEBUG("PPE - applied %d not_applied %d", applied, not_applied); if (invalid) { c_status = UNC_CS_INVALID; - } if (applied && !not_applied) { + } + if (applied && !not_applied) { c_status = UNC_CS_APPLIED; } else if (!applied && not_applied) { c_status = UNC_CS_NOT_APPLIED; @@ -4888,7 +4935,7 @@ upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal * } else { c_status = UNC_CS_APPLIED; } - // Set cs_status + // Set cs_status val_policingprofile_entry_t *val = static_cast (GetVal(ikey)); val->cs_row_status = c_status; @@ -4896,45 +4943,46 @@ upll_rc_t PolicingProfileEntryMoMgr::SetPPEntryConsolidatedStatus(ConfigKeyVal * sizeof(val->valid)/sizeof(val->valid[0]); ++loop) { for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { - ctrlr_val = reinterpret_cast(GetVal(tmp)); + tmp = tmp->get_next_cfg_key_val()) { + ctrlr_val = reinterpret_cast + (GetVal(tmp)); GET_USER_DATA_CTRLR(tmp, pp_exist_on_ctrlr); - UPLL_LOG_DEBUG("Controller name in DB %s",pp_exist_on_ctrlr); + UPLL_LOG_DEBUG("Controller name in DB %s", pp_exist_on_ctrlr); if (!strcmp(reinterpret_cast(pp_exist_on_ctrlr), - reinterpret_cast(ctrlr_id))) - continue; // skipping entry of deleted controller - if (ctrlr_val->valid[loop] == UNC_VF_VALID) { + reinterpret_cast(ctrlr_id))) + continue; // skipping entry of deleted controller + if (ctrlr_val->valid[loop] == UNC_VF_VALID) { switch (ctrlr_val->cs_attr[loop]) { case UNC_CS_APPLIED: applied = true; - break; - case UNC_CS_NOT_APPLIED: - not_applied = true; - break; - case UNC_CS_INVALID: - invalid = true; - break; - default: - UPLL_LOG_DEBUG("Invalid status %d", ctrlr_val->cs_attr[loop]); + break; + case UNC_CS_NOT_APPLIED: + not_applied = true; + break; + case UNC_CS_INVALID: + invalid = true; + break; + default: + UPLL_LOG_DEBUG("Invalid status %d", ctrlr_val->cs_attr[loop]); } } } if (invalid) { c_status = UNC_CS_INVALID; } else if (applied && !not_applied) { - c_status = UNC_CS_APPLIED; + c_status = UNC_CS_APPLIED; } else if (!applied && not_applied) { - c_status = UNC_CS_NOT_APPLIED; + c_status = UNC_CS_NOT_APPLIED; } else if (applied && not_applied) { - c_status = UNC_CS_PARTIALLY_APPLIED; + c_status = UNC_CS_PARTIALLY_APPLIED; } else { - c_status = UNC_CS_APPLIED; + c_status = UNC_CS_APPLIED; } val->cs_attr[loop] = c_status; applied = not_applied =false; } - + DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, &dbop_update, MAINTBL); diff --git a/coordinator/modules/upll/policingprofile_entry_momgr.hh b/coordinator/modules/upll/policingprofile_entry_momgr.hh index 554f10dd..d55d8b70 100644 --- a/coordinator/modules/upll/policingprofile_entry_momgr.hh +++ b/coordinator/modules/upll/policingprofile_entry_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -19,13 +19,13 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_POLICINGPROFILE_ENTRY */ -/* - * @brief PolicingProfileEntryMoMgr class handles all the request - * received from service. - */ + /* + * @brief PolicingProfileEntryMoMgr class handles all the request + * received from service. + */ -class PolicingProfileEntryMoMgr: public MoMgrImpl { - private: + class PolicingProfileEntryMoMgr: public MoMgrImpl { + private: /** * Member Variable for PolicingProfileEntryBindInfo. */ @@ -48,9 +48,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { static BindInfo rename_flowlist_pp_entry_main_tbl[]; /** * Member Variable for PolicingProfileEntryBindInfo. - */ + */ static BindInfo rename_flowlist_pp_entry_ctrl_tbl[]; - uint32_t cur_instance_count; /** * @brief Validates the Attribute of a Particular Class. * @@ -73,8 +72,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateRate( - val_policingprofile_entry_t *val_policingprofile_entry, - uint32_t operation); + val_policingprofile_entry_t *val_policingprofile_entry, + uint32_t operation); /** * @Brief Validates the syntax of red_action,green_action,yellow_action @@ -87,8 +86,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateColorAction( - val_policingprofile_entry_t *val_policingprofile_entry, - uint32_t operation); + val_policingprofile_entry_t *val_policingprofile_entry, + uint32_t operation); /** * @Brief Validates the syntax ofred_action_priority,green_action_priority, @@ -102,8 +101,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateColorPriority( - val_policingprofile_entry_t *val_policingprofile_entry, - uint32_t operation); + val_policingprofile_entry_t *val_policingprofile_entry, + uint32_t operation); /** * @Brief Validates the syntax of Precedence for red,green,yellow @@ -116,8 +115,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateColorPrecedence( - val_policingprofile_entry_t *val_policingprofile_entry, - uint32_t operation); + val_policingprofile_entry_t *val_policingprofile_entry, + uint32_t operation); /** * @Brief Validates the syntax of dscp for red,green,yellow @@ -130,13 +129,13 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateColorDscp( - val_policingprofile_entry_t *val_policingprofile_entry, - uint32_t operation); + val_policingprofile_entry_t *val_policingprofile_entry, + uint32_t operation); /** * @Brief Validates syntax of policingprofile name and checks whether it * exists in KT_POLICINGPROFILE table, if not exists sends - SEMANTIC error. + SEMANTIC error. * * @param[in] policing_profile_name policingprofile_name. * @@ -145,7 +144,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_SEMANTIC name is not exists in table */ upll_rc_t ValidatePolicingProfileName(ConfigKeyVal *ikey, DalDmlIntf *dmi, - IpcReqRespHeader *req); + IpcReqRespHeader *req); /** * @Brief Validates the syntax of the specified key and value structure @@ -168,17 +167,17 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * key structure. * * @param[in] key_policingprofile_entry KT_POLICING_PROFILE_ENTRY - key structure. + key structure. * * @retval UPLL_RC_SUCCESS validation succeeded. * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ - upll_rc_t ValidatePolicingProfileEntryKey( - ConfigKeyVal *key, uint32_t operation); + upll_rc_t ValidatePolicingProfileEntryKey( + ConfigKeyVal *key, uint32_t operation); /** * @Brief Validates the syntax for KT_POLICING_PROFILE_ENTRY - keytype value structure. + keytype value structure. * * @param[in] key_policingprofile_entry KT_POLICING_PROFILE_ENTRY * key structure. @@ -209,7 +208,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); + const char* ctrlr_name = NULL); /** * @Brief Checks if the specified key type and @@ -224,7 +223,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t ValPolicingProfileEntryAttributeSupportCheck( val_policingprofile_entry_t *val_policingprofile_entry, - const uint8_t* attrs); + const uint8_t* attrs); /** * @Brief Checks if the specified green_action, green_action_priority, @@ -235,8 +234,9 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @param[in] attrs Refers supported capability file attributes * for the given controller name. */ - void ValidateGreenFieldAttribute(val_policingprofile_entry_t * - val_policingprofile_entry, const uint8_t *attrs); + void ValidateGreenFieldAttribute(val_policingprofile_entry_t * + val_policingprofile_entry, + const uint8_t *attrs); /** * @Brief Checks if the specified yellow_action, yellow_action_priority, @@ -247,8 +247,9 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @param[in] attrs Refers supported capability file * attributes for the given controller name. */ - void ValidateYellowFieldAttribute(val_policingprofile_entry_t * - val_policingprofile_entry, const uint8_t *attrs); + void ValidateYellowFieldAttribute(val_policingprofile_entry_t * + val_policingprofile_entry, + const uint8_t *attrs); /** * @Brief Checks if the specified red_action, red_action_priority, @@ -258,13 +259,14 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @param[in] val_policingprofile_entry value structure. * @param[in] attrs Refers supported capability file attributes */ - void ValidateRedFieldAttribute(val_policingprofile_entry_t * - val_policingprofile_entry, const uint8_t *attrs); + void ValidateRedFieldAttribute(val_policingprofile_entry_t * + val_policingprofile_entry, + const uint8_t *attrs); /** * @Brief Validates the policingprofile_name in key_sttruct exists in * VTN/VBR/VBRIF policingmap table, if exists UPDATE/DELETE - * opearations are not allowed for val struct fields . + * opearations are not allowed for val struct fields . * * @param[in] policingprofile_name name. * @@ -276,7 +278,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { IpcReqRespHeader *req); - public: + public: /** * @brief PolicingProfileEntryMoMgr Class Constructor. */ @@ -297,7 +299,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @brief Validation or the Incoming Attributes of the Class. * * @param[out] val This Contains the pointer to the Class - for which memory has to be allocated. + for which memory has to be allocated. * @param[in] indx Describes the Attributes. * @param[in] valid Describes the Pointer to attributes of Class * @param[in] dt_type Describes Configiration Information. @@ -308,15 +310,15 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t GetValid(void *val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl); + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl); /** * @brief Allocates Memory for the Incoming Pointer to the Class. * * @param[out] ck_val This Contains the pointer to the Class - for which memory has to be allocated. + for which memory has to be allocated. * @param[in] dt_type Describes Configiration Information. * @param[in] tbl Describes the Destination table Information. * @@ -325,29 +327,29 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl); + upll_keytype_datatype_t dt_type, + MoMgrTables tbl); /** * @brief Method Updates the ConfigStatus for AuditConfigiration. * - * @param[out] ctrlr_rslt This Contains the pointer to the Class - * for which ConfigStatus is Updated. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] phase Describes Commit Control Status - Information. + Information. * @param[in] ckv_running Describes the Response Code. - * @param[in] ckv_audit Pointer to DalDmlIntf Class. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RT_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure. */ - upll_rc_t UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** * @brief Method used to fill the CongigKeyVal with the Parent Class - Information. + Information. * * @param[out] okey This Contains the pointer to the * ConfigKeyVal Class for which fields have to be @@ -361,14 +363,14 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); + ConfigKeyVal *parent_key); /** * @brief Method used to get the RenamedUncKey. * * @param[out] ctrlr_key This Contains the pointer to the Class for which * fields have to be updated with values - from the parent Class. + from the parent Class. * @param[in] dt_type Describes Configiration Information. * @param[in] dmi Pointer to DalDmlIntf Class. * @param[in] ctrlr_id Describes the Controller Name. @@ -378,17 +380,17 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, uint8_t *ctrlr_id); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, uint8_t *ctrlr_id); /** * @brief Method used to Duplicate the ConfigkeyVal. * * @param[out] okey This Contains the pointer to the * Class for which fields have to be - updated with values from the Request. + updated with values from the Request. * @param[in] req This Contains the pointer to the Class - which is used for the Duplication . + which is used for the Duplication . * @param[in] tbl Describes the Destination tables. * * @retval UPLL_RT_SUCCESS Successfull completion. @@ -396,8 +398,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl); + ConfigKeyVal *&req, + MoMgrTables tbl); /** * @brief Method used for Validation before Merge. @@ -413,8 +415,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, DalDmlIntf *dmi); + const char *ctrlr_id, + ConfigKeyVal *ikey, DalDmlIntf *dmi); /** * @brief Method used for Rename Operation. @@ -429,8 +431,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, const char *ctrlr_id); + ConfigKeyVal *ikey, + DalDmlIntf *dmi, const char *ctrlr_id); /** @@ -444,14 +446,14 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Failure. */ upll_rc_t IsReferenced( - ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); /** * @brief Method used for RenamedControllerkey(PfcName). * * @param[out] ikey Contains the Pointer to ConfigkeyVal Class - and contains the Pfc Name. + and contains the Pfc Name. * @param[in] dt_type Describes Configiration Information. * @param[in] dmi Pointer to DalDmlIntf Class. * @param[in] ctrlr_name Describes the Controller Name. @@ -461,15 +463,15 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom = NULL); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom = NULL); /** * @brief Method used for TxCopyCandidateToRunning. * * @param[in] keytype Describes the followong keytype - undergoing the operation. + undergoing the operation. * @param[in] ctrlr_commit_status Pointer to the CtrlrCommitStatusList Class * @param[in] dmi Pointer to DalDmlIntf Class. * @@ -478,9 +480,10 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Recorde Exists in database. */ - upll_rc_t TxCopyCandidateToRunning(unc_key_type_t keytype, - CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf *dmi); + upll_rc_t TxCopyCandidateToRunning( + unc_key_type_t keytype, + CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi); /** * @brief Method used to Update the Values in the specified key type. @@ -493,8 +496,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Failure case. */ upll_rc_t UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey, + DalDmlIntf *dmi); /** * @brief Method used for UpdateConfigStatus. @@ -510,11 +513,11 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t UpdateConfigStatus(ConfigKeyVal *key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *nreq, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key); + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key); /** * @brief Method used for Read Operation. @@ -528,8 +531,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t ReadMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey, + DalDmlIntf *dmi); /** * @brief Method used for ReadSibling Operation. @@ -543,8 +546,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey, + DalDmlIntf *dmi); /** * @brief Method used for Trasaction Vote Operation. @@ -560,12 +563,12 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t ReadRecord(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, unc_keytype_operation_t op); + ConfigKeyVal *ikey, + DalDmlIntf *dmi, unc_keytype_operation_t op); /** * @brief Method GetPolicingprofileKeyVal used for checking - the refernce count for policngprofile object . + the refernce count for policngprofile object . * @param[out] okey Contains the Pointer to ConfigkeyVal Class * and contains the Pfc Name. @@ -577,7 +580,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t GetPolicingprofileKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&ikey); + ConfigKeyVal *&ikey); /** * @brief Method to compare to keys @@ -616,12 +619,12 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); /** * @brief Method TxUpdateProcess . @@ -639,10 +642,12 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, - unc_keytype_operation_t op, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom); + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp); /** * @brief Method GetControllerSpan. @@ -656,7 +661,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t GetControllerSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); /** * @brief Method CopyToConfigKey. @@ -670,7 +676,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); + ConfigKeyVal *ikey); /** * @brief Method GetRenameKeyBindInfo. @@ -683,7 +689,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, int &nattr, MoMgrTables tbl); + BindInfo *&binfo, int &nattr, MoMgrTables tbl); /** * @brief Method UpdatePolicingProfileEntryRenamed. @@ -697,8 +703,8 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { */ upll_rc_t UpdatePolicingProfileEntryRenamed( - ConfigKeyVal *rename_info, - DalDmlIntf *dmi, upll_keytype_datatype_t data_type); + ConfigKeyVal *rename_info, + DalDmlIntf *dmi, upll_keytype_datatype_t data_type); /** * @brief Method to get Parent ConfigKeyVal @@ -736,7 +742,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t CtrlrTblDelete(ConfigKeyVal *ppe_ckv, - DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); + DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); /** * @brief Method to Create or Delete record in ctrlrtbl @@ -753,9 +759,9 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t PolicingProfileEntryCtrlrTblOper - (const char *policingprofile_name, const char *ctrlr_id, - DalDmlIntf *dmi, unc_keytype_operation_t oper, - upll_keytype_datatype_t dt_type); + (const char *policingprofile_name, const char *ctrlr_id, + DalDmlIntf *dmi, unc_keytype_operation_t oper, + upll_keytype_datatype_t dt_type); /** * @brief Method to Get Policingprofile ConfigKeyVal @@ -787,7 +793,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t CtrlrTblCreate(ConfigKeyVal *ppe_ckv, - DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); + DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); /** * @brief Method to Set the Consolidated status @@ -801,7 +807,7 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi); /** * @brief Method to Read policingprofileentry avl structure @@ -818,44 +824,45 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t ReadPolicingProfileEntry( - const char *policingprofile_name, uint8_t seq_num, - const char *ctrlr_id, DalDmlIntf *dmi, upll_keytype_datatype_t dt_type, - ConfigKeyVal *&ppe_ckv, unc_keytype_option1_t opt1 = UNC_OPT1_NORMAL); + const char *policingprofile_name, uint8_t seq_num, + const char *ctrlr_id, DalDmlIntf *dmi, upll_keytype_datatype_t dt_type, + ConfigKeyVal *&ppe_ckv, unc_keytype_option1_t opt1 = UNC_OPT1_NORMAL); upll_rc_t IsFlowlistConfigured(const char* flowlist_name, - DalDmlIntf *dmi); + DalDmlIntf *dmi); upll_rc_t ReadDetailEntry( - ConfigKeyVal *ff_ckv, upll_keytype_datatype_t dt_type, - DbSubOp dbop, DalDmlIntf *dmi); + ConfigKeyVal *ff_ckv, upll_keytype_datatype_t dt_type, + DbSubOp dbop, DalDmlIntf *dmi); upll_rc_t ValidatePolicingprofileEntryVal(ConfigKeyVal *key, uint32_t operation, uint32_t datatype); upll_rc_t ValidateFlowList( - ConfigKeyVal *ikey, DalDmlIntf *dmi, - IpcReqRespHeader *req); + ConfigKeyVal *ikey, DalDmlIntf *dmi, + IpcReqRespHeader *req); upll_rc_t UpdateMainTbl(ConfigKeyVal *ppe_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi); + unc_keytype_operation_t op, uint32_t driver_result, + ConfigKeyVal *nreq, DalDmlIntf *dmi); upll_rc_t FilterAttributes(ConfigKeyVal *ckv_main, ConfigKeyVal *ckv_ctrlr); upll_rc_t ValidateValidElements( - const char *policingprofile_name, DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type); + const char *policingprofile_name, DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type); upll_rc_t IsFlowListMatched(const char *flowlist_name, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); upll_rc_t DecrementRefCount( - ConfigKeyVal *ppe_ckv, DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type); + ConfigKeyVal *ppe_ckv, DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type); upll_rc_t UpdateVnodeVal(ConfigKeyVal *ikey, DalDmlIntf *dmi, upll_keytype_datatype_t data_type, @@ -871,28 +878,28 @@ class PolicingProfileEntryMoMgr: public MoMgrImpl { unc_keytype_configstatus_t current_cs, unc_keytype_configstatus_t current_ctrlr_cs); - upll_rc_t GetFlowListEntryConfigKey( + upll_rc_t GetFlowListEntryConfigKey( ConfigKeyVal *&okey, ConfigKeyVal *ikey); - upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, + upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req); - upll_rc_t GetFlowlistConfigKey( + upll_rc_t GetFlowlistConfigKey( const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); + DalDmlIntf *dmi); upll_rc_t SetPPEntryConsolidatedStatus(ConfigKeyVal *ikey, uint8_t *ctrlr_id, DalDmlIntf *dmi); -}; - -typedef struct val_policingprofile_entry_ctrl { - uint8_t valid[18]; - unc_keytype_configstatus_t cs_row_status; - unc_keytype_configstatus_t cs_attr[18]; - uint8_t flags; -}val_policingprofile_entry_ctrl_t; + }; + + typedef struct val_policingprofile_entry_ctrl { + uint8_t valid[18]; + unc_keytype_configstatus_t cs_row_status; + unc_keytype_configstatus_t cs_attr[18]; + uint8_t flags; + }val_policingprofile_entry_ctrl_t; } // namespace kt_momgr } // namespace upll diff --git a/coordinator/modules/upll/policingprofile_momgr.cc b/coordinator/modules/upll/policingprofile_momgr.cc index ba6a7a2e..fad2ddde 100644 --- a/coordinator/modules/upll/policingprofile_momgr.cc +++ b/coordinator/modules/upll/policingprofile_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -25,421 +25,422 @@ namespace kt_momgr { #define POLICINGPROFILE_RENAME 0x01 /* This file declares interfaces for keyType KT_POLICING_PROFILE */ -/** - * @brief PolicingProfileMoMgr class handles all the request - * received from service. - */ + /** + * @brief PolicingProfileMoMgr class handles all the request + * received from service. + */ + + // PolicingProfile Table(Main Table) + BindInfo PolicingProfileMoMgr::policingprofile_bind_info[] = { + { uudst::policingprofile::kDbiPolicingProfileName, + CFG_KEY, + offsetof(key_policingprofile_t, policingprofile_name), + uud::kDalChar, + kMaxLenPolicingProfileName + 1 }, + { uudst::policingprofile::kDbiFlags, + CK_VAL, + offsetof(key_user_data_t, flags), + uud::kDalUint8, 1}, + { uudst::policingprofile::kDbiCsRowStatus, + CS_VAL, + offsetof(val_policingprofile_t, cs_row_status), + uud::kDalUint8, 1 } + }; + + // PolicingProfile Rename Table + BindInfo PolicingProfileMoMgr::policingprofile_rename_bind_info[] = { + { uudst::policingprofile_rename::kDbiPolicingProfileName, + CFG_KEY, + offsetof(key_policingprofile_t, policingprofile_name), + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) }, + { uudst::policingprofile_rename::kDbiCtrlrName, + CK_VAL, + offsetof(key_user_data_t, ctrlr_id), + uud::kDalChar, + (kMaxLenCtrlrId + 1) }, + { uudst::policingprofile_rename::kDbiPolicingProfileNameCtrlr, + CFG_VAL, + offsetof(val_rename_policingprofile_t, policingprofile_newname), + uud::kDalChar, + (kMaxLenPolicingProfileName+1) } + }; + + // PolicingProfileController Table + BindInfo PolicingProfileMoMgr::policingprofile_controller_bind_info[] = { + { uudst::policingprofile_ctrlr::kDbiPolicingProfileName, + CFG_KEY, + offsetof(key_policingprofile_t, policingprofile_name), + uud::kDalChar, (kMaxLenPolicingProfileName + 1) }, + { uudst::policingprofile_ctrlr::kDbiCtrlrName, + CK_VAL, + offsetof(key_user_data_t, ctrlr_id), + uud::kDalChar, (kMaxLenCtrlrId + 1) }, + { uudst::policingprofile_ctrlr::kDbiRefCount, + CFG_VAL, + offsetof(val_policingprofile_ctrl_t, ref_count), + uud::kDalUint32, 1 }, + { uudst::policingprofile_ctrlr::kDbiFlags, + CK_VAL, + offsetof(key_user_data_t, flags), + uud::kDalUint8, 1}, + { uudst::policingprofile_ctrlr::kDbiCsRowStatus, + CS_VAL, + offsetof(val_policingprofile_ctrl_t, cs_row_status), + uud::kDalUint8, 1 }, + }; + + BindInfo PolicingProfileMoMgr::rename_policingprofile_main_tbl[] = { + { uudst::policingprofile::kDbiPolicingProfileName, + CFG_MATCH_KEY, + offsetof(key_policingprofile_t, policingprofile_name), + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) }, + { uudst::policingprofile::kDbiPolicingProfileName, + CFG_INPUT_KEY, + offsetof(key_rename_vnode_info_t, new_policingprofile_name), + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) }, + { uudst::policingprofile::kDbiFlags, + CK_VAL, + offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 } + }; + + BindInfo PolicingProfileMoMgr::rename_policingprofile_ctrlr_tbl[] = { + { uudst::policingprofile_ctrlr::kDbiPolicingProfileName, + CFG_MATCH_KEY, + offsetof(key_policingprofile_t, policingprofile_name), + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) }, + { uudst::policingprofile_ctrlr::kDbiPolicingProfileName, + CFG_INPUT_KEY, + offsetof(key_rename_vnode_info_t, new_policingprofile_name), + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) }, + { uudst::policingprofile_ctrlr::kDbiFlags, + CK_VAL, + offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 } + }; + + BindInfo PolicingProfileMoMgr::rename_policingprofile_rename_tbl[] = { + { uudst::policingprofile_rename::kDbiPolicingProfileName, + CFG_MATCH_KEY, + offsetof(key_policingprofile_t, policingprofile_name), + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) }, + { uudst::policingprofile_rename::kDbiPolicingProfileName, + CFG_INPUT_KEY, + offsetof(key_rename_vnode_info_t, new_policingprofile_name), + uud::kDalChar, + (kMaxLenPolicingProfileName + 1) } + }; + + unc_key_type_t PolicingProfileMoMgr::policingprofile_child[] = { + UNC_KT_POLICING_PROFILE_ENTRY, + }; + + bool PolicingProfileMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { + switch (key_type) { + case UNC_KT_POLICING_PROFILE: + if (MAINTBL == tbl) { + nattr = NUM_KEY_MAIN_COL; + binfo = rename_policingprofile_main_tbl; + } else if (CTRLRTBL == tbl) { + nattr = NUM_KEY_CTRL_COL; + binfo = rename_policingprofile_ctrlr_tbl; + } else { + nattr = NUM_KEY_RENAME_COL; + binfo = rename_policingprofile_rename_tbl; + } + break; + default: + return PFC_FALSE; + } + return PFC_TRUE; + } -// PolicingProfile Table(Main Table) -BindInfo PolicingProfileMoMgr::policingprofile_bind_info[] = { - { uudst::policingprofile::kDbiPolicingProfileName, - CFG_KEY, - offsetof(key_policingprofile_t, policingprofile_name), - uud::kDalChar, - kMaxLenPolicingProfileName + 1 }, - { uudst::policingprofile::kDbiFlags, - CK_VAL, - offsetof(key_user_data_t, flags), - uud::kDalUint8, 1}, - { uudst::policingprofile::kDbiCsRowStatus, - CS_VAL, - offsetof(val_policingprofile_t, cs_row_status), - uud::kDalUint8, 1 } -}; - -// PolicingProfile Rename Table -BindInfo PolicingProfileMoMgr::policingprofile_rename_bind_info[] = { - { uudst::policingprofile_rename::kDbiPolicingProfileName, - CFG_KEY, - offsetof(key_policingprofile_t, policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) }, - { uudst::policingprofile_rename::kDbiCtrlrName, - CK_VAL, - offsetof(key_user_data_t, ctrlr_id), - uud::kDalChar, - (kMaxLenCtrlrId + 1) }, - { uudst::policingprofile_rename::kDbiPolicingProfileNameCtrlr, - CFG_VAL, - offsetof(val_rename_policingprofile_t, policingprofile_newname), - uud::kDalChar, - (kMaxLenPolicingProfileName+1) } -}; - -// PolicingProfileController Table -BindInfo PolicingProfileMoMgr::policingprofile_controller_bind_info[] = { - { uudst::policingprofile_ctrlr::kDbiPolicingProfileName, - CFG_KEY, - offsetof(key_policingprofile_t, policingprofile_name), - uud::kDalChar, (kMaxLenPolicingProfileName + 1) }, - { uudst::policingprofile_ctrlr::kDbiCtrlrName, - CK_VAL, - offsetof(key_user_data_t, ctrlr_id), - uud::kDalChar, (kMaxLenCtrlrId + 1) }, - { uudst::policingprofile_ctrlr::kDbiRefCount, - CFG_VAL, - offsetof(val_policingprofile_ctrl_t, ref_count), - uud::kDalUint32, 1 }, - { uudst::policingprofile_ctrlr::kDbiFlags, - CK_VAL, - offsetof(key_user_data_t, flags), - uud::kDalUint8, 1}, - { uudst::policingprofile_ctrlr::kDbiCsRowStatus, - CS_VAL, - offsetof(val_policingprofile_ctrl_t, cs_row_status), - uud::kDalUint8, 1 }, -}; - -BindInfo PolicingProfileMoMgr::rename_policingprofile_main_tbl[] = { - { uudst::policingprofile::kDbiPolicingProfileName, - CFG_MATCH_KEY, - offsetof(key_policingprofile_t, policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) }, - { uudst::policingprofile::kDbiPolicingProfileName, - CFG_INPUT_KEY, - offsetof(key_rename_vnode_info_t, new_policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) }, - { uudst::policingprofile::kDbiFlags, - CK_VAL, - offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } -}; - -BindInfo PolicingProfileMoMgr::rename_policingprofile_ctrlr_tbl[] = { - { uudst::policingprofile_ctrlr::kDbiPolicingProfileName, - CFG_MATCH_KEY, - offsetof(key_policingprofile_t, policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) }, - { uudst::policingprofile_ctrlr::kDbiPolicingProfileName, - CFG_INPUT_KEY, - offsetof(key_rename_vnode_info_t, new_policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) }, - { uudst::policingprofile_ctrlr::kDbiFlags, - CK_VAL, - offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } -}; - -BindInfo PolicingProfileMoMgr::rename_policingprofile_rename_tbl[] = { - { uudst::policingprofile_rename::kDbiPolicingProfileName, - CFG_MATCH_KEY, - offsetof(key_policingprofile_t, policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) }, - { uudst::policingprofile_rename::kDbiPolicingProfileName, - CFG_INPUT_KEY, - offsetof(key_rename_vnode_info_t, new_policingprofile_name), - uud::kDalChar, - (kMaxLenPolicingProfileName + 1) } -}; - -unc_key_type_t PolicingProfileMoMgr::policingprofile_child[] = { - UNC_KT_POLICING_PROFILE_ENTRY, -}; - -bool PolicingProfileMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, int &nattr, MoMgrTables tbl) { - switch (key_type) { - case UNC_KT_POLICING_PROFILE: - if (MAINTBL == tbl) { - nattr = NUM_KEY_MAIN_COL; - binfo = rename_policingprofile_main_tbl; - } else if (CTRLRTBL == tbl) { - nattr = NUM_KEY_CTRL_COL; - binfo = rename_policingprofile_ctrlr_tbl; - } else { - nattr = NUM_KEY_RENAME_COL; - binfo = rename_policingprofile_rename_tbl; + /** + * @brief PolicingProfileMoMgr Class Constructor. + */ + PolicingProfileMoMgr::PolicingProfileMoMgr() { + UPLL_FUNC_TRACE; + ntable = MAX_MOMGR_TBLS; + table = new Table *[ntable]; + + table[MAINTBL] = new Table( + uudst::kDbiPolicingProfileTbl, + UNC_KT_POLICING_PROFILE, + policingprofile_bind_info, + IpctSt::kIpcStKeyPolicingprofile, + IpctSt::kIpcStValPolicingprofile, + uudst::policingprofile::kDbiPolicingProfileNumCols); + + table[RENAMETBL] = new Table( + uudst::kDbiPolicingProfileRenameTbl, + UNC_KT_POLICING_PROFILE, + policingprofile_rename_bind_info, + IpctSt::kIpcStKeyPolicingprofile, + IpctSt::kIpcStValRenamePolicingprofile, + uudst::policingprofile_rename::kDbiPolicingProfileRenameNumCols); + + table[CTRLRTBL] = new Table( + uudst::kDbiPolicingProfileCtrlrTbl, + UNC_KT_POLICING_PROFILE, + policingprofile_controller_bind_info, + IpctSt::kIpcStKeyPolicingprofile, + IpctSt::kIpcInvalidStNum, + uudst::policingprofile_ctrlr::kDbiPolicingProfileCtrlrNumCols); + + nchild = sizeof(policingprofile_child) / sizeof(policingprofile_child[0]); + child = policingprofile_child; + } + + /** + @brief PolicingProfileMoMgr Class Destructor. + */ + PolicingProfileMoMgr::~PolicingProfileMoMgr() { + for (int i = 0 ; i < ntable; i++) { + if (table[i]) { + delete table[i]; } - break; - default: - return PFC_FALSE; + } + delete[] table; } - return PFC_TRUE; -} -/** - * @brief PolicingProfileMoMgr Class Constructor. - */ -PolicingProfileMoMgr::PolicingProfileMoMgr() { - UPLL_FUNC_TRACE; - ntable = MAX_MOMGR_TBLS; - table = new Table *[ntable]; - - table[MAINTBL] = new Table(uudst::kDbiPolicingProfileTbl, - UNC_KT_POLICING_PROFILE, policingprofile_bind_info, - IpctSt::kIpcStKeyPolicingprofile, IpctSt::kIpcStValPolicingprofile, - uudst::policingprofile::kDbiPolicingProfileNumCols); - - table[RENAMETBL] = new Table(uudst::kDbiPolicingProfileRenameTbl, - UNC_KT_POLICING_PROFILE, policingprofile_rename_bind_info, - IpctSt::kIpcStKeyPolicingprofile, IpctSt::kIpcStValRenamePolicingprofile, - uudst::policingprofile_rename::kDbiPolicingProfileRenameNumCols); - - table[CTRLRTBL] = new Table(uudst::kDbiPolicingProfileCtrlrTbl, - UNC_KT_POLICING_PROFILE, policingprofile_controller_bind_info, - IpctSt::kIpcStKeyPolicingprofile, IpctSt::kIpcInvalidStNum, - uudst::policingprofile_ctrlr::kDbiPolicingProfileCtrlrNumCols); - - nchild = sizeof(policingprofile_child) / sizeof(policingprofile_child[0]); - child = policingprofile_child; - cur_instance_count = 0; -} - -/** - @brief PolicingProfileMoMgr Class Destructor. - */ -PolicingProfileMoMgr::~PolicingProfileMoMgr() { - for (int i = 0 ; i < ntable; i++) { - if (table[i]) { - delete table[i]; + upll_rc_t PolicingProfileMoMgr::ValidateAttribute(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (NULL == ikey) { + return UPLL_RC_ERR_GENERIC; } - } - delete[] table; -} - -upll_rc_t PolicingProfileMoMgr::ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (NULL == ikey) { - return UPLL_RC_ERR_GENERIC; - } - if (ikey->get_key_type() != UNC_KT_POLICING_PROFILE) - return UPLL_RC_ERR_GENERIC; - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::GetValid(void *val, uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (val == NULL) { - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value structure is NULL "); - return UPLL_RC_ERR_GENERIC; - } - if (tbl == RENAMETBL) { - val_rename_policingprofile_t *val_rename = - reinterpret_cast (val); - valid = &val_rename->valid[UPLL_IDX_RENAME_PROFILE_RPP]; - } else if (tbl == CTRLRTBL) { - val_policingprofile_ctrl_t *val_ctrl = - reinterpret_cast(val); - if (uudst::policingprofile_ctrlr::kDbiRefCount == indx) { - valid = &val_ctrl->valid[0]; - } - } else { - valid = NULL; - UPLL_LOG_DEBUG(" PolicingProfileMoMgr:: Invalid tbl"); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_TRACE(" PolicingProfileMoMgr:: GetValid is Successful"); - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - void *val; // *ck_nxtval; - if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; - switch (tbl) { - case MAINTBL: - val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_t))); - ck_val = new ConfigVal(IpctSt::kIpcStValPolicingprofile, val); - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation successful" - " for PolicingProfile MainTbl "); - break; - case RENAMETBL: - val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); - ck_val = new ConfigVal(IpctSt::kIpcStValRenamePolicingprofile, val); - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation successful" - " for PolicingProfile RenameTbl "); - break; - case CTRLRTBL: - val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_ctrl_t))); - ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation successful" - " for PolicingProfile CtrlrTbl "); - break; - default: - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Invalid Tbl"); + if (ikey->get_key_type() != UNC_KT_POLICING_PROFILE) return UPLL_RC_ERR_GENERIC; + return result_code; } - if (NULL == val) { - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation Failed"); - return UPLL_RC_ERR_GENERIC; - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { - UPLL_FUNC_TRACE; - key_policingprofile_t *policingprofile_key = NULL; - void *pkey = NULL; - - if (parent_key == NULL) { - policingprofile_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); - okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, - IpctSt::kIpcStKeyPolicingprofile, - policingprofile_key, NULL); - UPLL_LOG_TRACE(" PolicingProfileMoMgr::ConfigKeyVal Allocation " - " Successful"); + upll_rc_t PolicingProfileMoMgr::GetValid(void *val, uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (val == NULL) { + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value structure is NULL "); + return UPLL_RC_ERR_GENERIC; + } + if (tbl == RENAMETBL) { + val_rename_policingprofile_t *val_rename = + reinterpret_cast (val); + valid = &val_rename->valid[UPLL_IDX_RENAME_PROFILE_RPP]; + } else if (tbl == CTRLRTBL) { + val_policingprofile_ctrl_t *val_ctrl = + reinterpret_cast(val); + if (uudst::policingprofile_ctrlr::kDbiRefCount == indx) { + valid = &val_ctrl->valid[0]; + } + } else { + valid = NULL; + UPLL_LOG_DEBUG(" PolicingProfileMoMgr:: Invalid tbl"); + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_TRACE(" PolicingProfileMoMgr:: GetValid is Successful"); return UPLL_RC_SUCCESS; - } else { - pkey = parent_key->get_key(); } - if (NULL == pkey) { - UPLL_LOG_TRACE("Key structure is NULL"); - return UPLL_RC_ERR_GENERIC; + upll_rc_t PolicingProfileMoMgr::AllocVal(ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + void *val; // *ck_nxtval; + if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; + switch (tbl) { + case MAINTBL: + val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_t))); + ck_val = new ConfigVal(IpctSt::kIpcStValPolicingprofile, val); + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation successful" + " for PolicingProfile MainTbl "); + break; + case RENAMETBL: + val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); + ck_val = new ConfigVal(IpctSt::kIpcStValRenamePolicingprofile, val); + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation successful" + " for PolicingProfile RenameTbl "); + break; + case CTRLRTBL: + val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_ctrl_t))); + ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation successful" + " for PolicingProfile CtrlrTbl "); + break; + default: + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Invalid Tbl"); + return UPLL_RC_ERR_GENERIC; + } + if (NULL == val) { + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Value Allocation Failed"); + return UPLL_RC_ERR_GENERIC; + } + return UPLL_RC_SUCCESS; } - if (okey) { - if (okey->get_key_type() != UNC_KT_POLICING_PROFILE) + upll_rc_t PolicingProfileMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key) { + UPLL_FUNC_TRACE; + key_policingprofile_t *policingprofile_key = NULL; + void *pkey = NULL; + + if (parent_key == NULL) { + policingprofile_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); + + okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, + IpctSt::kIpcStKeyPolicingprofile, + policingprofile_key, NULL); + UPLL_LOG_TRACE(" PolicingProfileMoMgr::ConfigKeyVal Allocation " + " Successful"); + return UPLL_RC_SUCCESS; + } else { + pkey = parent_key->get_key(); + } + + if (NULL == pkey) { + UPLL_LOG_TRACE("Key structure is NULL"); return UPLL_RC_ERR_GENERIC; - } - if ((okey) && (okey->get_key())) { - policingprofile_key = reinterpret_cast + } + + if (okey) { + if (okey->get_key_type() != UNC_KT_POLICING_PROFILE) + return UPLL_RC_ERR_GENERIC; + } + if ((okey) && (okey->get_key())) { + policingprofile_key = reinterpret_cast (okey->get_key()); - } else { - policingprofile_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); - } + } else { + policingprofile_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); + } - switch (parent_key->get_key_type()) { - case UNC_KT_ROOT: - break; - case UNC_KT_POLICING_PROFILE: - uuu::upll_strncpy(policingprofile_key->policingprofile_name, - (reinterpret_cast - (pkey)->policingprofile_name), - (kMaxLenPolicingProfileName + 1)); - break; - default: - if (policingprofile_key) free(policingprofile_key); - return UPLL_RC_ERR_GENERIC; - } - if ((okey) && !(okey->get_key())) { - UPLL_LOG_TRACE("okey not NULL profile name updated"); - okey->SetKey(IpctSt::kIpcStKeyPolicingprofile, policingprofile_key); - } - if (!okey) { - okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, - IpctSt::kIpcStKeyPolicingprofile, - policingprofile_key, NULL); - } - SET_USER_DATA(okey, parent_key); - UPLL_LOG_TRACE("%s GetChildConfigKey fl start", - okey->ToStrAll().c_str()); - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::GetRenamedUncKey( - ConfigKeyVal *ctrlr_key, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - UPLL_LOG_TRACE("%s GetRenamedUncKey pp start", - ctrlr_key->ToStrAll().c_str()); - if ((NULL == ctrlr_key) || (NULL == dmi)) { - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Input ConfigKeyVal is NULL."); - return result_code; - } - ConfigKeyVal *unc_key = NULL; - key_policingprofile_t *ctrlr_policingprofile_key = - reinterpret_cast(ctrlr_key->get_key()); - if (NULL == ctrlr_policingprofile_key) { - UPLL_LOG_DEBUG("PolicingProfileMoMgr::Key struct is NULL"); - return result_code; - } - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; - - val_rename_policingprofile_t *rename_policingprofile = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); - if (!rename_policingprofile) { - UPLL_LOG_DEBUG("rename_policingprofile NULL"); - return UPLL_RC_ERR_GENERIC; + switch (parent_key->get_key_type()) { + case UNC_KT_ROOT: + break; + case UNC_KT_POLICING_PROFILE: + uuu::upll_strncpy(policingprofile_key->policingprofile_name, + (reinterpret_cast + (pkey)->policingprofile_name), + (kMaxLenPolicingProfileName + 1)); + break; + default: + if (policingprofile_key) free(policingprofile_key); + return UPLL_RC_ERR_GENERIC; + } + if ((okey) && !(okey->get_key())) { + UPLL_LOG_TRACE("okey not NULL profile name updated"); + okey->SetKey(IpctSt::kIpcStKeyPolicingprofile, policingprofile_key); + } + if (!okey) { + okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, + IpctSt::kIpcStKeyPolicingprofile, + policingprofile_key, NULL); + } + SET_USER_DATA(okey, parent_key); + UPLL_LOG_TRACE("%s GetChildConfigKey fl start", + okey->ToStrAll().c_str()); + return UPLL_RC_SUCCESS; } - uuu::upll_strncpy(rename_policingprofile->policingprofile_newname, - ctrlr_policingprofile_key->policingprofile_name, - (kMaxLenPolicingProfileName+1)); - rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; + upll_rc_t PolicingProfileMoMgr::GetRenamedUncKey( + ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + UPLL_LOG_TRACE("%s GetRenamedUncKey pp start", + ctrlr_key->ToStrAll().c_str()); + if ((NULL == ctrlr_key) || (NULL == dmi)) { + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::Input ConfigKeyVal is NULL."); + return result_code; + } + ConfigKeyVal *unc_key = NULL; + key_policingprofile_t *ctrlr_policingprofile_key = + reinterpret_cast(ctrlr_key->get_key()); + if (NULL == ctrlr_policingprofile_key) { + UPLL_LOG_DEBUG("PolicingProfileMoMgr::Key struct is NULL"); + return result_code; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; - result_code = GetChildConfigKey(unc_key, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed (%d)", result_code); - free(rename_policingprofile); - return result_code; - } - if (!unc_key) { - UPLL_LOG_DEBUG("unc_key NULL"); - free(rename_policingprofile); - return UPLL_RC_ERR_GENERIC; - } - unc_key->AppendCfgVal(IpctSt::kIpcStValRenamePolicingprofile, - rename_policingprofile); - UPLL_LOG_DEBUG("ctrlr_id pp (%s)", ctrlr_id); - if (ctrlr_id) { - SET_USER_DATA_CTRLR(unc_key, ctrlr_id); - } else { - dbop.matchop = kOpMatchNone; - } + val_rename_policingprofile_t *rename_policingprofile = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); + if (!rename_policingprofile) { + UPLL_LOG_DEBUG("rename_policingprofile NULL"); + return UPLL_RC_ERR_GENERIC; + } - result_code = ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code == UPLL_RC_SUCCESS) { - key_policingprofile_t *policingprofile_key = - reinterpret_cast(unc_key->get_key()); - uuu::upll_strncpy(ctrlr_policingprofile_key->policingprofile_name, - policingprofile_key->policingprofile_name, + uuu::upll_strncpy(rename_policingprofile->policingprofile_newname, + ctrlr_policingprofile_key->policingprofile_name, (kMaxLenPolicingProfileName+1)); - } - UPLL_LOG_TRACE("%s GetRenamedUncKey pp end", - ctrlr_key->ToStrAll().c_str()); - DELETE_IF_NOT_NULL(unc_key); - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::GetRenamedControllerKey( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - if (NULL == ikey || (NULL == dmi)) { - UPLL_LOG_DEBUG("Input ConfigKeyVal is NULL"); - return result_code; - } + rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; - ConfigKeyVal *okey = NULL; - uint8_t rename = 0; - result_code = IsRenamed(ikey, dt_type, dmi, rename); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("IsRenamed function failed (%d)", result_code); + result_code = GetChildConfigKey(unc_key, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed (%d)", result_code); + free(rename_policingprofile); + return result_code; + } + if (!unc_key) { + UPLL_LOG_DEBUG("unc_key NULL"); + free(rename_policingprofile); + return UPLL_RC_ERR_GENERIC; + } + unc_key->AppendCfgVal(IpctSt::kIpcStValRenamePolicingprofile, + rename_policingprofile); + UPLL_LOG_DEBUG("ctrlr_id pp (%s)", ctrlr_id); + if (ctrlr_id) { + SET_USER_DATA_CTRLR(unc_key, ctrlr_id); + } else { + dbop.matchop = kOpMatchNone; + } + + result_code = ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if (result_code == UPLL_RC_SUCCESS) { + key_policingprofile_t *policingprofile_key = + reinterpret_cast(unc_key->get_key()); + uuu::upll_strncpy(ctrlr_policingprofile_key->policingprofile_name, + policingprofile_key->policingprofile_name, + (kMaxLenPolicingProfileName+1)); + } + UPLL_LOG_TRACE("%s GetRenamedUncKey pp end", + ctrlr_key->ToStrAll().c_str()); + DELETE_IF_NOT_NULL(unc_key); return result_code; } - if (!rename) { - UPLL_LOG_DEBUG("Key not renamed"); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_TRACE("%s GetRenamedCtrl pp start", (ikey->ToStrAll()).c_str()); - /* PolicingProfile renamed */ - if (rename & POLICINGPROFILE_RENAME) { + upll_rc_t PolicingProfileMoMgr::GetRenamedControllerKey( + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + controller_domain *ctrlr_dom) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + if (NULL == ikey || (NULL == dmi)) { + UPLL_LOG_DEBUG("Input ConfigKeyVal is NULL"); + return result_code; + } + + ConfigKeyVal *okey = NULL; + UPLL_LOG_TRACE("%s GetRenamedCtrl pp start", (ikey->ToStrAll()).c_str()); + + /* PolicingProfile renamed */ result_code = GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); @@ -454,11 +455,11 @@ upll_rc_t PolicingProfileMoMgr::GetRenamedControllerKey( return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); /* ctrlr_name */ + RENAMETBL); /* ctrlr_name */ if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("ReadConfigDB no instance"); @@ -471,7 +472,7 @@ upll_rc_t PolicingProfileMoMgr::GetRenamedControllerKey( } val_rename_policingprofile_t *rename_val = - reinterpret_cast(GetVal(okey)); + reinterpret_cast(GetVal(okey)); if (NULL == rename_val) { UPLL_LOG_DEBUG("memory Allocation failed for rename val struct"); DELETE_IF_NOT_NULL(okey); @@ -484,357 +485,408 @@ upll_rc_t PolicingProfileMoMgr::GetRenamedControllerKey( rename_val->policingprofile_newname, (kMaxLenPolicingProfileName+1)); UPLL_LOG_DEBUG("profile name (%s) (%s)", - reinterpret_cast - (ikey->get_key())->policingprofile_name, - rename_val->policingprofile_newname); + reinterpret_cast + (ikey->get_key())->policingprofile_name, + rename_val->policingprofile_newname); DELETE_IF_NOT_NULL(okey); + UPLL_LOG_TRACE("%s GetRenamedCtrl pp end", (ikey->ToStrAll()).c_str()); + UPLL_LOG_TRACE(" PolicingProfileMOMgr::GetRenameUncKey Successful"); + return UPLL_RC_SUCCESS; } - SET_USER_DATA_FLAGS(ikey, rename); - UPLL_LOG_TRACE("%s GetRenamedCtrl pp end", (ikey->ToStrAll()).c_str()); - UPLL_LOG_TRACE(" PolicingProfileMOMgr::GetRenameUncKey Successful"); - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (req == NULL) { - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::DupConfigKeyVal Failed." - " Input ConfigKeyVal is NULL "); - return UPLL_RC_ERR_GENERIC; - } - if (okey != NULL) { - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::DupConfigKeyVal Failed." - " Output ConfigKeyVal is not NULL "); - return UPLL_RC_ERR_GENERIC; - } - if (req->get_key_type() != UNC_KT_POLICING_PROFILE) { - UPLL_LOG_DEBUG("PolicingProfileMoMgr::Invalid Key type"); - return UPLL_RC_ERR_GENERIC; - } - if (NULL == (req->get_key())) { - return UPLL_RC_ERR_GENERIC; - } - ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); - - if (tmp) { - if (tbl == MAINTBL) { - val_policingprofile_t *ival = - reinterpret_cast(GetVal(req)); - if (NULL != ival) { - val_policingprofile_t *policingprofile_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_t))); - memcpy(policingprofile_val, ival, - sizeof(val_policingprofile_t)); - tmp1 = new ConfigVal(IpctSt::kIpcStValPolicingprofile, - policingprofile_val); - } - } else if (tbl == RENAMETBL) { - val_rename_policingprofile_t *ival = - reinterpret_cast (GetVal(req)); - val_rename_policingprofile_t *rename_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); - memcpy(rename_val, ival, sizeof(val_rename_policingprofile_t)); - tmp1 = new ConfigVal(IpctSt::kIpcStValRenamePolicingprofile, rename_val); - } else if (tbl == CTRLRTBL) { - val_policingprofile_ctrl_t *ival = - reinterpret_cast(GetVal(req)); - if (NULL != ival) { - val_policingprofile_ctrl_t *ctrl_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_ctrl_t))); - memcpy(ctrl_val, ival, sizeof(val_policingprofile_ctrl_t)); - tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, - ctrl_val); - } + + + upll_rc_t PolicingProfileMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (req == NULL) { + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::DupConfigKeyVal Failed." + " Input ConfigKeyVal is NULL "); + return UPLL_RC_ERR_GENERIC; } - if (NULL == tmp1) { - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::DupConfigKeyVal Failed."); - UPLL_LOG_DEBUG(" Value allocation failed"); + if (okey != NULL) { + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::DupConfigKeyVal Failed." + " Output ConfigKeyVal is not NULL "); return UPLL_RC_ERR_GENERIC; } - tmp1->set_user_data(tmp->get_user_data()); - } - key_policingprofile_t *tkey = reinterpret_cast - (req->get_key()); - key_policingprofile_t *policingprofile_key = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); - memcpy(policingprofile_key, reinterpret_cast(tkey), - sizeof(key_policingprofile_t)); - okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, - IpctSt::kIpcStKeyPolicingprofile, policingprofile_key, - tmp1); - SET_USER_DATA(okey, req); - return UPLL_RC_SUCCESS; -} - -pfc_bool_t PolicingProfileMoMgr::CompareKey(ConfigKeyVal *key1, - ConfigKeyVal *key2) { - UPLL_FUNC_TRACE; - bool match = false; - if (NULL == key1 || NULL == key2) { - return match; - } - if (key1->get_key_type() != UNC_KT_POLICING_PROFILE) { - UPLL_LOG_DEBUG("PolicingProfileMoMgr::Invalid Key type"); - return match; + if (req->get_key_type() != UNC_KT_POLICING_PROFILE) { + UPLL_LOG_DEBUG("PolicingProfileMoMgr::Invalid Key type"); + return UPLL_RC_ERR_GENERIC; + } + if (NULL == (req->get_key())) { + return UPLL_RC_ERR_GENERIC; + } + ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); + + if (tmp) { + if (tbl == MAINTBL) { + val_policingprofile_t *ival = + reinterpret_cast(GetVal(req)); + if (NULL != ival) { + val_policingprofile_t *policingprofile_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_t))); + memcpy(policingprofile_val, ival, + sizeof(val_policingprofile_t)); + tmp1 = new ConfigVal(IpctSt::kIpcStValPolicingprofile, + policingprofile_val); + } + } else if (tbl == RENAMETBL) { + val_rename_policingprofile_t *ival = + reinterpret_cast (GetVal(req)); + val_rename_policingprofile_t *rename_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); + memcpy(rename_val, ival, sizeof(val_rename_policingprofile_t)); + tmp1 = new ConfigVal(IpctSt::kIpcStValRenamePolicingprofile, + rename_val); + } else if (tbl == CTRLRTBL) { + val_policingprofile_ctrl_t *ival = + reinterpret_cast(GetVal(req)); + if (NULL != ival) { + val_policingprofile_ctrl_t *ctrl_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_ctrl_t))); + memcpy(ctrl_val, ival, sizeof(val_policingprofile_ctrl_t)); + tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, + ctrl_val); + } + } + if (NULL == tmp1) { + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::DupConfigKeyVal Failed."); + UPLL_LOG_DEBUG(" Value allocation failed"); + return UPLL_RC_ERR_GENERIC; + } + tmp1->set_user_data(tmp->get_user_data()); + } + key_policingprofile_t *tkey = reinterpret_cast + (req->get_key()); + key_policingprofile_t *policingprofile_key = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); + memcpy(policingprofile_key, reinterpret_cast + (tkey), + sizeof(key_policingprofile_t)); + okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, + IpctSt::kIpcStKeyPolicingprofile, + policingprofile_key, + tmp1); + SET_USER_DATA(okey, req); + return UPLL_RC_SUCCESS; } - key_policingprofile_t *policingprofile_key1, *policingprofile_key2; - policingprofile_key1 = - reinterpret_cast(key1->get_key()); - policingprofile_key2 = - reinterpret_cast(key2->get_key()); - if (NULL == policingprofile_key1 || NULL == policingprofile_key2) { - return false; - } + pfc_bool_t PolicingProfileMoMgr::CompareKey(ConfigKeyVal *key1, + ConfigKeyVal *key2) { + UPLL_FUNC_TRACE; + bool match = false; + if (NULL == key1 || NULL == key2) { + return match; + } + if (key1->get_key_type() != UNC_KT_POLICING_PROFILE) { + UPLL_LOG_DEBUG("PolicingProfileMoMgr::Invalid Key type"); + return match; + } + key_policingprofile_t *policingprofile_key1, *policingprofile_key2; + policingprofile_key1 = + reinterpret_cast(key1->get_key()); + policingprofile_key2 = + reinterpret_cast(key2->get_key()); + + if (NULL == policingprofile_key1 || NULL == policingprofile_key2) { + return false; + } - if (strcmp(reinterpret_cast - (policingprofile_key1->policingprofile_name), - reinterpret_cast - (policingprofile_key2->policingprofile_name)) == 0) { - match = true; - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::CompareKey .Both Keys are same"); - } - return match; -} - -upll_rc_t PolicingProfileMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - val_policingprofile_ctrl_t *val = NULL; - val = (ckv_running != NULL)?reinterpret_cast - - (GetVal(ckv_running)):NULL; - if (NULL == val) { - return UPLL_RC_ERR_GENERIC; + if (strcmp(reinterpret_cast + (policingprofile_key1->policingprofile_name), + reinterpret_cast + (policingprofile_key2->policingprofile_name)) == 0) { + match = true; + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::CompareKey .Both Keys are same"); + } + return match; } - if (uuc::kUpllUcpCreate == phase ) - val->cs_row_status = cs_status; - if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) - val->cs_row_status = cs_status; - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, ConfigKeyVal *okey, - DalDmlIntf *dmi) { + + upll_rc_t PolicingProfileMoMgr::UpdateAuditConfigStatus( + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - ConfigKeyVal *ckval = NULL; - if (NULL == ctrlr_id) { - UPLL_LOG_DEBUG("ctrlr_id NULL"); - return result_code; - } - result_code = GetChildConfigKey(ckval, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ckval fail"); + upll_rc_t result_code = UPLL_RC_SUCCESS; + val_policingprofile_ctrl_t *val = NULL; + val = (ckv_running != NULL)?reinterpret_cast + + (GetVal(ckv_running)):NULL; + if (NULL == val) { + return UPLL_RC_ERR_GENERIC; + } + if (uuc::kUpllUcpCreate == phase ) + val->cs_row_status = cs_status; + if ((uuc::kUpllUcpUpdate == phase) && + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) + val->cs_row_status = cs_status; return result_code; } - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ckval); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); + + upll_rc_t PolicingProfileMoMgr::MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *okey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + ConfigKeyVal *ckval = NULL; + if (NULL == ctrlr_id) { + UPLL_LOG_DEBUG("ctrlr_id NULL"); return result_code; } - return UPLL_RC_SUCCESS; - } - ConfigKeyVal *tmp_ckval = ckval; - while (NULL != ckval) { - // Check the profile is stand alone - ConfigKeyVal *ctrl_ckval = NULL; - DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - result_code = GetChildConfigKey(ctrl_ckval, ckval); + result_code = GetChildConfigKey(ckval, NULL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Failed to get ctrl configkeyval,err %d", result_code); - DELETE_IF_NOT_NULL(tmp_ckval); + UPLL_LOG_DEBUG("ckval fail"); return result_code; } - result_code = UpdateConfigDB(ctrl_ckval, - UPLL_DT_IMPORT, - UNC_OP_READ, dmi, - &dbop, CTRLRTBL); - DELETE_IF_NOT_NULL(ctrl_ckval); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("profile name is stand alone"); - result_code = GetChildConfigKey(okey, ckval); - DELETE_IF_NOT_NULL(tmp_ckval); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone}; + result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(ckval); + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); return result_code; } - return UPLL_RC_ERR_MERGE_CONFLICT; - } else if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Database Error"); - DELETE_IF_NOT_NULL(tmp_ckval); - return result_code; + return UPLL_RC_SUCCESS; } + ConfigKeyVal *tmp_ckval = ckval; + while (NULL != ckval) { + // Check the profile is stand alone + ConfigKeyVal *ctrl_ckval = NULL; + DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; + result_code = GetChildConfigKey(ctrl_ckval, ckval); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Failed to get ctrl configkeyval,err %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + result_code = UpdateConfigDB(ctrl_ckval, + UPLL_DT_IMPORT, + UNC_OP_READ, dmi, + &dbop, CTRLRTBL); + DELETE_IF_NOT_NULL(ctrl_ckval); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("profile name is stand alone"); + result_code = GetChildConfigKey(okey, ckval); + DELETE_IF_NOT_NULL(tmp_ckval); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + return UPLL_RC_ERR_MERGE_CONFLICT; + } else if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Database Error"); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } - // Check whether the configuration exists in the Running configuration or - // not, if exists then return an error - result_code = UpdateConfigDB(ckval, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - result_code = GetChildConfigKey(okey, ckval); - DELETE_IF_NOT_NULL(tmp_ckval); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); + // Check whether the configuration exists in the Running configuration or + // not, if exists then return an error + result_code = UpdateConfigDB(ckval, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + result_code = GetChildConfigKey(okey, ckval); + DELETE_IF_NOT_NULL(tmp_ckval); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + return UPLL_RC_ERR_MERGE_CONFLICT; + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + ckval = ckval->get_next_cfg_key_val(); + } else { + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - return UPLL_RC_ERR_MERGE_CONFLICT; - } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - ckval = ckval->get_next_cfg_key_val(); - } else { - DELETE_IF_NOT_NULL(tmp_ckval); - return result_code; } - } - DELETE_IF_NOT_NULL(tmp_ckval); - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::SwapKeyVal(ConfigKeyVal *ikey, - ConfigKeyVal *&okey, - uud::DalDmlIntf *dmi, - uint8_t *ctrlr, bool &no_rename) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!ikey || !(ikey->get_key()) || !(strlen(reinterpret_cast - (ctrlr)))){ - UPLL_LOG_DEBUG("Input ConfigKeyVal is NULL"); - return UPLL_RC_ERR_GENERIC; + DELETE_IF_NOT_NULL(tmp_ckval); + return UPLL_RC_SUCCESS; } - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (NULL == cfg_val) { - UPLL_LOG_DEBUG("Value struct is NULL"); - return UPLL_RC_ERR_GENERIC; - } + upll_rc_t PolicingProfileMoMgr::SwapKeyVal(ConfigKeyVal *ikey, + ConfigKeyVal *&okey, + uud::DalDmlIntf *dmi, + uint8_t *ctrlr, bool &no_rename) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey || !(ikey->get_key()) || !(strlen(reinterpret_cast + (ctrlr)))) { + UPLL_LOG_DEBUG("Input ConfigKeyVal is NULL"); + return UPLL_RC_ERR_GENERIC; + } - val_rename_policingprofile_t *tval = - reinterpret_cast(cfg_val->get_val()); - if (NULL == tval) { - UPLL_LOG_DEBUG("Rename val struct is NULL"); - return UPLL_RC_ERR_GENERIC; - } + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (NULL == cfg_val) { + UPLL_LOG_DEBUG("Value struct is NULL"); + return UPLL_RC_ERR_GENERIC; + } - key_policingprofile_t *key_policingprofile = - reinterpret_cast(ConfigKeyVal::Malloc - (sizeof(key_policingprofile_t))); + val_rename_policingprofile_t *tval = + reinterpret_cast(cfg_val->get_val()); + if (NULL == tval) { + UPLL_LOG_DEBUG("Rename val struct is NULL"); + return UPLL_RC_ERR_GENERIC; + } - if (UNC_VF_VALID_NO_VALUE == - tval->valid[UPLL_IDX_RENAME_PROFILE_RPP]) { - no_rename = true; - uuu::upll_strncpy(key_policingprofile->policingprofile_name, - reinterpret_cast - (ikey->get_key())->policingprofile_name, - (kMaxLenPolicingProfileName+1)); - UPLL_LOG_DEBUG("No Rename Operation %d", no_rename); - } else { - if (UNC_VF_VALID == tval->valid[UPLL_IDX_RENAME_PROFILE_RPP]) { - /* checking the string is empty or not*/ - if (!strlen(reinterpret_cast(tval->policingprofile_newname))) { - UPLL_LOG_DEBUG(" PolicingProfile_newname is NULL"); + key_policingprofile_t *key_policingprofile = + reinterpret_cast( + ConfigKeyVal::Malloc + (sizeof(key_policingprofile_t))); + + if (UNC_VF_VALID_NO_VALUE == + tval->valid[UPLL_IDX_RENAME_PROFILE_RPP]) { + no_rename = true; + uuu::upll_strncpy(key_policingprofile->policingprofile_name, + reinterpret_cast + (ikey->get_key())->policingprofile_name, + (kMaxLenPolicingProfileName+1)); + UPLL_LOG_DEBUG("No Rename Operation %d", no_rename); + } else { + if (UNC_VF_VALID == tval->valid[UPLL_IDX_RENAME_PROFILE_RPP]) { + /* checking the string is empty or not*/ + if (!strlen(reinterpret_cast(tval->policingprofile_newname))) { + UPLL_LOG_DEBUG(" PolicingProfile_newname is NULL"); + free(key_policingprofile); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(key_policingprofile->policingprofile_name, + tval->policingprofile_newname, + (kMaxLenPolicingProfileName+1)); + // copy the new UNC name to KeyVtn + /* The New Name and PFC name should not be same name */ + if (!strcmp(reinterpret_cast + ((reinterpret_cast + (ikey->get_key())) + ->policingprofile_name), reinterpret_cast + (tval->policingprofile_newname))) { + UPLL_LOG_DEBUG("ctrl , new name is same"); + free(key_policingprofile); + return UPLL_RC_ERR_GENERIC; + } + } else { + UPLL_LOG_DEBUG("Invalid Input"); free(key_policingprofile); return UPLL_RC_ERR_GENERIC; + } } - uuu::upll_strncpy(key_policingprofile->policingprofile_name, - tval->policingprofile_newname, - (kMaxLenPolicingProfileName+1)); - // copy the new UNC name to KeyVtn - /* The New Name and PFC name should not be same name */ - if (!strcmp(reinterpret_cast - ((reinterpret_cast(ikey->get_key())) - ->policingprofile_name), reinterpret_cast - (tval->policingprofile_newname))) { - UPLL_LOG_DEBUG("ctrl , new name is same"); - free(key_policingprofile); - return UPLL_RC_ERR_GENERIC; - } - } else { - UPLL_LOG_DEBUG("Invalid Input"); + + okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, + IpctSt::kIpcStValPolicingprofile, + key_policingprofile, + NULL); + if (NULL == okey) { + UPLL_LOG_DEBUG("okey Memory Allocation for ConfigKeyVal failed"); free(key_policingprofile); return UPLL_RC_ERR_GENERIC; } + return result_code; } - okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, - IpctSt::kIpcStValPolicingprofile, key_policingprofile, - NULL); - if (NULL == okey) { - UPLL_LOG_DEBUG("okey Memory Allocation for ConfigKeyVal failed"); - free(key_policingprofile); - return UPLL_RC_ERR_GENERIC; - } - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::TxCopyCandidateToRunning( - unc_key_type_t keytype, CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode db_result = uud::kDalRcGeneralError; - unc_keytype_operation_t op[] = { UNC_OP_CREATE, UNC_OP_DELETE , - UNC_OP_UPDATE}; - int nop = sizeof(op) / sizeof(op[0]); - ConfigKeyVal *policingprofile_key = NULL, *req = NULL, *nreq = NULL, - *pp_ck_run = NULL; - DalCursor *cfg1_cursor = NULL; - uint8_t *ctrlr_id = NULL; + upll_rc_t PolicingProfileMoMgr::TxCopyCandidateToRunning( + unc_key_type_t keytype, CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DalResultCode db_result = uud::kDalRcGeneralError; + unc_keytype_operation_t op[] = { UNC_OP_CREATE, UNC_OP_DELETE , + UNC_OP_UPDATE}; + int nop = sizeof(op) / sizeof(op[0]); + ConfigKeyVal *policingprofile_key = NULL, *req = NULL, *nreq = NULL, + *pp_ck_run = NULL; + DalCursor *cfg1_cursor = NULL; + uint8_t *ctrlr_id = NULL; #if 0 - IpcReqRespHeader *req_header = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + IpcReqRespHeader *req_header = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); #endif - map ctrlr_result; - CtrlrCommitStatusList::iterator ccsListItr; - CtrlrCommitStatus *ccStatusPtr; - - if (ctrlr_commit_status == NULL || (NULL == dmi)) { - UPLL_LOG_DEBUG( - " PolicingProfileMoMgr::TxCopyCandidateToRunning Failed."); - UPLL_LOG_DEBUG(" Incoming CtrlrCommitStatusList is NULL"); - return UPLL_RC_ERR_GENERIC; - } - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = reinterpret_cast - (const_cast(ccStatusPtr->ctrlr_id.c_str())); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; ck_err = - ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, - ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG( - " PolicingProfileMoMgr::TxCopyCandidateToRunning Failed."); - UPLL_LOG_DEBUG(" GetRenamedUncKey Function failed - %d ", - result_code); - return result_code; + map ctrlr_result; + CtrlrCommitStatusList::iterator ccsListItr; + CtrlrCommitStatus *ccStatusPtr; + + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { + ccStatusPtr = *ccsListItr; + ctrlr_id = reinterpret_cast + (const_cast(ccStatusPtr->ctrlr_id.c_str())); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; + ck_err = + ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG( + " PolicingProfileMoMgr::TxCopyCandidateToRunning Failed."); + UPLL_LOG_DEBUG(" GetRenamedUncKey Function failed - %d ", + result_code); + return result_code; + } + } } } } - } - for (int i = 0; i < nop; i++) { - // Update the Main table - if (op[i] != UNC_OP_UPDATE) { - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], - req, nreq, &cfg1_cursor, dmi,NULL, MAINTBL, true); + for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; + // Update the Main table + if (op[i] != UNC_OP_UPDATE) { + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + MAINTBL, + true); + while (result_code == UPLL_RC_SUCCESS) { + db_result = dmi->GetNextRecord(cfg1_cursor); + result_code = DalToUpllResCode(db_result); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + break; + } + result_code = UpdateMainTbl(req, op[i], UPLL_RC_SUCCESS, + nreq, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Updating Main table Error %d", result_code); + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + return result_code; + } + } + if (cfg1_cursor) { + dmi->CloseCursor(cfg1_cursor, true); + cfg1_cursor = NULL; + } + DELETE_IF_NOT_NULL(req); + } + UPLL_LOG_DEBUG("Updating main table complete with op %d", op[i]); + } + for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; + // Update the controller table + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + CTRLRTBL, + true); + ConfigKeyVal *pp_ctrlr_key = NULL; while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); @@ -842,1464 +894,1527 @@ upll_rc_t PolicingProfileMoMgr::TxCopyCandidateToRunning( result_code = UPLL_RC_SUCCESS; break; } - result_code = UpdateMainTbl(req, op[i], UPLL_RC_SUCCESS, - nreq, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Updating Main table Error %d", result_code); - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - return result_code; - } - } - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; - } - DELETE_IF_NOT_NULL(req); - } - UPLL_LOG_DEBUG("Updating main table complete with op %d", op[i]); - } - for (int i = 0; i < nop; i++) { - // Update the controller table - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, - nreq, &cfg1_cursor, dmi,NULL, CTRLRTBL, true); - ConfigKeyVal *pp_ctrlr_key = NULL; - while (result_code == UPLL_RC_SUCCESS) { - db_result = dmi->GetNextRecord(cfg1_cursor); - result_code = DalToUpllResCode(db_result); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - - result_code = UPLL_RC_SUCCESS; - break; - } - if (op[i] == UNC_OP_CREATE ) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag |kOpInOutCs }; - result_code = GetChildConfigKey(policingprofile_key, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); - DELETE_IF_NOT_NULL(req); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } + if (op[i] == UNC_OP_CREATE) { + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag |kOpInOutCs }; + result_code = GetChildConfigKey(policingprofile_key, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", + result_code); + DELETE_IF_NOT_NULL(req); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } - result_code = ReadConfigDB(policingprofile_key, UPLL_DT_RUNNING /*UPLL_DT_CANDIDATE*/, - UNC_OP_READ, dbop, dmi, MAINTBL); - if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); - DELETE_IF_NOT_NULL(policingprofile_key); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } - /* set consolidated config status to UNKNOWN to init vtn cs_status - * to the cs_status of first controller - */ - uint32_t cur_instance_count; - ConfigKeyVal *temp_val=NULL; - result_code = DupConfigKeyVal(temp_val, req, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DupConfigval failed %d", result_code); - DELETE_IF_NOT_NULL(policingprofile_key); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - DELETE_IF_NOT_NULL(temp_val); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } + result_code = ReadConfigDB(policingprofile_key, + UPLL_DT_RUNNING /*UPLL_DT_CANDIDATE*/, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if ((result_code != UPLL_RC_SUCCESS) && + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); + DELETE_IF_NOT_NULL(policingprofile_key); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } + /* set consolidated config status to UNKNOWN to init vtn cs_status + * to the cs_status of first controller + */ + uint32_t cur_instance_count; + ConfigKeyVal *temp_val = NULL; + result_code = DupConfigKeyVal(temp_val, req, CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DupConfigval failed %d", result_code); + DELETE_IF_NOT_NULL(policingprofile_key); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(temp_val); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } - result_code = GetInstanceCount(temp_val, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); - DELETE_IF_NOT_NULL(policingprofile_key); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - DELETE_IF_NOT_NULL(temp_val); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } - if (cur_instance_count == 1) { - reinterpret_cast - (GetVal(policingprofile_key))->cs_row_status = - UNC_CS_UNKNOWN; - } - result_code = DupConfigKeyVal(pp_ctrlr_key, req, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigVal function is failed %d", result_code); - DELETE_IF_NOT_NULL(policingprofile_key); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - DELETE_IF_NOT_NULL(temp_val); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } + result_code = GetInstanceCount(temp_val, NULL, + UPLL_DT_CANDIDATE, + &cur_instance_count, + dmi, CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); + DELETE_IF_NOT_NULL(policingprofile_key); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(temp_val); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } + if (cur_instance_count == 1) { + reinterpret_cast + (GetVal(policingprofile_key))->cs_row_status = + UNC_CS_UNKNOWN; + } + result_code = DupConfigKeyVal(pp_ctrlr_key, req, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigVal function is failed %d", result_code); + DELETE_IF_NOT_NULL(policingprofile_key); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(temp_val); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } - DELETE_IF_NOT_NULL(temp_val); - GET_USER_DATA_CTRLR(pp_ctrlr_key, ctrlr_id); - string controller(reinterpret_cast(ctrlr_id)); - result_code = UpdateConfigStatus(policingprofile_key, op[i], - ctrlr_result[controller], nreq, - dmi, pp_ctrlr_key); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" UpdateConfigStatus Function Failed - %d ", - result_code); - DELETE_IF_NOT_NULL(policingprofile_key); - DELETE_IF_NOT_NULL(pp_ctrlr_key); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } - } else if (op[i] == UNC_OP_DELETE) { - //Reading Main Running DB for delete op - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCs }; - result_code = GetChildConfigKey(pp_ck_run, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } - result_code = ReadConfigDB(pp_ck_run, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); + DELETE_IF_NOT_NULL(temp_val); + GET_USER_DATA_CTRLR(pp_ctrlr_key, ctrlr_id); + string controller(reinterpret_cast(ctrlr_id)); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL."); + result_code = UpdateConfigStatus(policingprofile_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, nreq, + dmi, pp_ctrlr_key); + } else { + result_code = UpdateConfigStatus(policingprofile_key, op[i], + ctrlr_result[controller], nreq, + dmi, pp_ctrlr_key); + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" UpdateConfigStatus Function Failed - %d ", + result_code); + DELETE_IF_NOT_NULL(policingprofile_key); + DELETE_IF_NOT_NULL(pp_ctrlr_key); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } + } else if (op[i] == UNC_OP_DELETE) { + // Reading Main Running DB for delete op + DbSubOp dbop1 = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag | kOpInOutCs }; + result_code = GetChildConfigKey(pp_ck_run, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", + result_code); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } + result_code = ReadConfigDB(pp_ck_run, UPLL_DT_RUNNING, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); + DELETE_IF_NOT_NULL(pp_ck_run); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } + if (result_code == UPLL_RC_SUCCESS) { + GET_USER_DATA_CTRLR(req, ctrlr_id); + result_code = SetPPConsolidatedStatus(pp_ck_run, ctrlr_id, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Could not set consolidated status %d", + result_code); + DELETE_IF_NOT_NULL(pp_ck_run); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } + } DELETE_IF_NOT_NULL(pp_ck_run); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; + result_code = GetChildConfigKey(pp_ctrlr_key, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } } - if (result_code == UPLL_RC_SUCCESS) { - GET_USER_DATA_CTRLR(req, ctrlr_id); - result_code = SetPPConsolidatedStatus(pp_ck_run, ctrlr_id, dmi); + if (UNC_OP_CREATE == op[i]) { + val_policingprofile_ctrl_t *val_ctrlr_temp = reinterpret_cast + (GetVal(pp_ctrlr_key)); + val_ctrlr_temp->valid[0] = UNC_VF_VALID; + val_policingprofile_ctrl_t *val_ctrlr_temp1 = reinterpret_cast + (GetVal(req)); + val_ctrlr_temp->ref_count = val_ctrlr_temp1->ref_count; + UPLL_LOG_DEBUG("Ref count in dupckv%d", val_ctrlr_temp->ref_count); + UPLL_LOG_DEBUG("Ref count in req%d", val_ctrlr_temp1->ref_count); + } else if (UNC_OP_UPDATE == op[i]) { + result_code = DupConfigKeyVal(pp_ctrlr_key, nreq, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", result_code); - DELETE_IF_NOT_NULL(pp_ck_run); + UPLL_LOG_DEBUG("DupConfigVal function is failed %d", result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); return result_code; } + val_policingprofile_ctrl_t *val_ctrlr_temp = reinterpret_cast + (GetVal(pp_ctrlr_key)); + val_ctrlr_temp->valid[0] = UNC_VF_VALID; + val_policingprofile_ctrl_t *val_ctrlr_temp1 = reinterpret_cast + (GetVal(req)); + val_ctrlr_temp->ref_count = val_ctrlr_temp1->ref_count; + UPLL_LOG_DEBUG("Ref count in dupckv%d", val_ctrlr_temp->ref_count); + UPLL_LOG_DEBUG("Ref count in req%d", val_ctrlr_temp1->ref_count); } - DELETE_IF_NOT_NULL(pp_ck_run); - result_code = GetChildConfigKey(pp_ctrlr_key, req); + result_code = UpdateConfigDB(pp_ctrlr_key, UPLL_DT_RUNNING, op[i], + dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); + UPLL_LOG_DEBUG("Unable to Update Configuration at DB %d", + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(pp_ctrlr_key); dmi->CloseCursor(cfg1_cursor, true); return result_code; } - } - if (UNC_OP_CREATE == op[i]) { - val_policingprofile_ctrl_t *val_ctrlr_temp = reinterpret_cast - (GetVal(pp_ctrlr_key)); - val_ctrlr_temp->valid[0] = UNC_VF_VALID; - val_policingprofile_ctrl_t *val_ctrlr_temp1 = reinterpret_cast - (GetVal(req)); - val_ctrlr_temp->ref_count = val_ctrlr_temp1->ref_count; - UPLL_LOG_DEBUG("Ref count in dupckv%d", val_ctrlr_temp->ref_count); - UPLL_LOG_DEBUG("Ref count in req%d", val_ctrlr_temp1->ref_count); - } else if (UNC_OP_UPDATE == op[i]) { - result_code = DupConfigKeyVal(pp_ctrlr_key, nreq, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigVal function is failed %d", result_code); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; + + // update the consolidated config status in the Main Table + if (op[i] == UNC_OP_CREATE) { + result_code = UpdateConfigDB(policingprofile_key, UPLL_DT_RUNNING, + UNC_OP_UPDATE, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(policingprofile_key); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } } - val_policingprofile_ctrl_t *val_ctrlr_temp = reinterpret_cast - (GetVal(pp_ctrlr_key)); - val_ctrlr_temp->valid[0] = UNC_VF_VALID; - val_policingprofile_ctrl_t *val_ctrlr_temp1 = reinterpret_cast - (GetVal(req)); - val_ctrlr_temp->ref_count = val_ctrlr_temp1->ref_count; - UPLL_LOG_DEBUG("Ref count in dupckv%d", val_ctrlr_temp->ref_count); - UPLL_LOG_DEBUG("Ref count in req%d", val_ctrlr_temp1->ref_count); - } - result_code = UpdateConfigDB(pp_ctrlr_key, UPLL_DT_RUNNING, op[i], - dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to Update Configuration at DB %d", result_code); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); + + EnqueCfgNotification(op[i], UPLL_DT_RUNNING, pp_ctrlr_key); + DELETE_IF_NOT_NULL(policingprofile_key); DELETE_IF_NOT_NULL(pp_ctrlr_key); + result_code = DalToUpllResCode(db_result); + } + if (cfg1_cursor) { dmi->CloseCursor(cfg1_cursor, true); - return result_code; + cfg1_cursor = NULL; } + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + result_code = TxCopyRenameTableFromCandidateToRunning(keytype, + op[i], dmi); + UPLL_LOG_DEBUG("TxCopyRenameTableFromCandidateToRunning returned %d", + result_code); + } + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? + UPLL_RC_SUCCESS : result_code; + return result_code; + } - // update the consolidated config status in the Main Table - if (op[i] == UNC_OP_CREATE) { - result_code = UpdateConfigDB(policingprofile_key, UPLL_DT_RUNNING, - UNC_OP_UPDATE, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - DELETE_IF_NOT_NULL(policingprofile_key); - dmi->CloseCursor(cfg1_cursor, true); + upll_rc_t PolicingProfileMoMgr::UpdateMainTbl(ConfigKeyVal *key_pp, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + ConfigKeyVal *ck_pp = NULL; + upll_rc_t result_code = UPLL_RC_SUCCESS; + val_policingprofile_t *val_pp = NULL; + + switch (op) { + case UNC_OP_CREATE: + result_code = DupConfigKeyVal(ck_pp, key_pp, MAINTBL); + if (!ck_pp || (result_code != UPLL_RC_SUCCESS)) { + UPLL_LOG_DEBUG("DupConfigKeyVal() Returning error %d", result_code); return result_code; } - } + val_pp = reinterpret_cast(GetVal(ck_pp)); + if (!val_pp) { + UPLL_LOG_DEBUG("invalid val"); + return UPLL_RC_ERR_GENERIC; + } + val_pp->cs_row_status = UNC_CS_APPLIED; + break; + case UNC_OP_DELETE: - EnqueCfgNotification(op[i], UPLL_DT_RUNNING, pp_ctrlr_key); - DELETE_IF_NOT_NULL(policingprofile_key); - DELETE_IF_NOT_NULL(pp_ctrlr_key); - result_code = DalToUpllResCode(db_result); - } - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; - } - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - result_code = TxCopyRenameTableFromCandidateToRunning(keytype, - op[i], dmi); - UPLL_LOG_DEBUG("TxCopyRenameTableFromCandidateToRunning returned %d", - result_code); - } - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? - UPLL_RC_SUCCESS : result_code; - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::UpdateMainTbl(ConfigKeyVal *key_pp, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - ConfigKeyVal *ck_pp = NULL; - upll_rc_t result_code = UPLL_RC_SUCCESS; - val_policingprofile_t *val_pp = NULL; - - switch (op) { - case UNC_OP_CREATE: - result_code = DupConfigKeyVal(ck_pp, key_pp, MAINTBL); - if (!ck_pp || (result_code != UPLL_RC_SUCCESS)) { - UPLL_LOG_DEBUG("DupConfigKeyVal() Returning error %d", result_code); - return result_code; - } - val_pp = reinterpret_cast(GetVal(ck_pp)); - if (!val_pp) { - UPLL_LOG_DEBUG("invalid val"); + result_code = GetChildConfigKey(ck_pp, key_pp); + if (!ck_pp || (result_code != UPLL_RC_SUCCESS)) { + UPLL_LOG_DEBUG("GetChildConfigKey() returning error %d", + result_code); + return UPLL_RC_ERR_GENERIC; + } + break; + default: + UPLL_LOG_DEBUG("Inalid operation"); return UPLL_RC_ERR_GENERIC; - } - val_pp->cs_row_status = UNC_CS_APPLIED; - break; - case UNC_OP_DELETE: + } - result_code = GetChildConfigKey(ck_pp, key_pp); - if (!ck_pp || (result_code != UPLL_RC_SUCCESS)) { - UPLL_LOG_DEBUG("GetChildConfigKey() returning error %d", result_code); - return UPLL_RC_ERR_GENERIC; - } - break; - default: - UPLL_LOG_DEBUG("Inalid operation"); - return UPLL_RC_ERR_GENERIC; + DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; + dbop.inoutop = kOpInOutCs | kOpInOutFlag; + result_code = UpdateConfigDB(ck_pp, + UPLL_DT_STATE, + op, + dmi, + &dbop, + MAINTBL); + EnqueCfgNotification(op, UPLL_DT_RUNNING, key_pp); + delete ck_pp; + return result_code; } - DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; - dbop.inoutop = kOpInOutCs | kOpInOutFlag; - result_code = UpdateConfigDB(ck_pp, UPLL_DT_STATE, op, dmi, &dbop, MAINTBL); - EnqueCfgNotification(op, UPLL_DT_RUNNING, key_pp); - delete ck_pp; - return result_code; -} - - -upll_rc_t PolicingProfileMoMgr::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode dal_result = uud::kDalRcSuccess; - ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - DalCursor *dal_cursor_handle; - IpcResponse resp; - if (uuc::kUpllUcpDelete == phase) { - UPLL_LOG_TRACE("Delete phase 1"); - return UPLL_RC_SUCCESS; - } - if (uuc::kUpllUcpDelete2 == phase) UPLL_LOG_DEBUG("Delete phase 2"); - unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete2)?UNC_OP_DELETE:UNC_OP_INVALID)); - switch (op) { - case UNC_OP_CREATE: - case UNC_OP_DELETE: - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" PolicingProfileMoMgr::TxUpdateController failed." - " DiffConfigDB failed to get diff"); - return result_code; - } - break; - case UNC_OP_UPDATE: - // not supported by keytype - // return success - UPLL_LOG_TRACE(" Not supported operation"); - return UPLL_RC_SUCCESS; - default: - UPLL_LOG_TRACE(" Invalid ooperation"); - return UPLL_RC_ERR_GENERIC; - } - resp.header.clnt_sess_id = session_id; - resp.header.config_id = config_id; - while (result_code == UPLL_RC_SUCCESS) { - // Get Next Record - dal_result = dmi->GetNextRecord(dal_cursor_handle); - result_code = DalToUpllResCode(dal_result); - if (result_code != UPLL_RC_SUCCESS) { - break; + upll_rc_t PolicingProfileMoMgr::TxUpdateController( + unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DalResultCode dal_result = uud::kDalRcSuccess; + ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + DalCursor *dal_cursor_handle = NULL; + IpcResponse resp; + if (uuc::kUpllUcpDelete == phase) { + UPLL_LOG_TRACE("Delete phase 1"); + return UPLL_RC_SUCCESS; } - ck_main = NULL; - if ((op == UNC_OP_CREATE) || (op == UNC_OP_DELETE)) { - result_code = DupConfigKeyVal(ck_main, req, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed during TxUpdate."); - return result_code; - } + if (uuc::kUpllUcpDelete2 == phase) UPLL_LOG_DEBUG("Delete phase 2"); + unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete2)?UNC_OP_DELETE:UNC_OP_INVALID)); + switch (op) { + case UNC_OP_CREATE: + case UNC_OP_DELETE: + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op, + req, + nreq, + &dal_cursor_handle, + dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG(" PolicingProfileMoMgr::TxUpdateController failed." + " DiffConfigDB failed to get diff"); + return result_code; + } + break; + case UNC_OP_UPDATE: + // not supported by keytype + // return success + UPLL_LOG_TRACE(" Not supported operation"); + return UPLL_RC_SUCCESS; + default: + UPLL_LOG_TRACE(" Invalid ooperation"); + return UPLL_RC_ERR_GENERIC; + } + resp.header.clnt_sess_id = session_id; + resp.header.config_id = config_id; - GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - if (NULL == ctrlr_dom.ctrlr) { - UPLL_LOG_DEBUG("Invalid controller/domain"); - result_code = UPLL_RC_ERR_GENERIC; - DELETE_IF_NOT_NULL(ck_main); + while (result_code == UPLL_RC_SUCCESS) { + // Get Next Record + dal_result = dmi->GetNextRecord(dal_cursor_handle); + result_code = DalToUpllResCode(dal_result); + if (result_code != UPLL_RC_SUCCESS) { break; } - result_code = TxUpdateProcess(ck_main, &resp, op, - dmi, &ctrlr_dom); - if (result_code == UPLL_RC_SUCCESS) { - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); - } else { - UPLL_LOG_DEBUG("TxUpdateProcess error %d", result_code); - upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? - UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; - upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); - if (UPLL_RC_SUCCESS != local_rc && - UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { - UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); + ck_main = NULL; + if ((op == UNC_OP_CREATE) || (op == UNC_OP_DELETE)) { + result_code = DupConfigKeyVal(ck_main, req, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed during TxUpdate."); + return result_code; + } + + GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + if (NULL == ctrlr_dom.ctrlr) { + UPLL_LOG_DEBUG("Invalid controller/domain"); + result_code = UPLL_RC_ERR_GENERIC; + DELETE_IF_NOT_NULL(ck_main); + break; + } + bool driver_resp = false; + result_code = TxUpdateProcess(ck_main, + &resp, + op, + dmi, + &ctrlr_dom, + affected_ctrlr_set, + &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { + UPLL_LOG_DEBUG("TxUpdateProcess error %d", result_code); + upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? + UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; + upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, + ctrlr_dom.ctrlr); + if (UPLL_RC_SUCCESS != local_rc && + UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { + UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(resp.ckv_data); + result_code = UPLL_RC_ERR_GENERIC; + break; + } + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); + *err_ckv = resp.ckv_data; + DELETE_IF_NOT_NULL(ck_main); + break; + } else if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(ck_main); DELETE_IF_NOT_NULL(resp.ckv_data); - result_code = UPLL_RC_ERR_GENERIC; break; } - *err_ckv = resp.ckv_data; - DELETE_IF_NOT_NULL(ck_main); - break; + DELETE_IF_NOT_NULL(resp.ckv_data); } - DELETE_IF_NOT_NULL(resp.ckv_data); + DELETE_IF_NOT_NULL(ck_main); } - DELETE_IF_NOT_NULL(ck_main); - } - if (nreq) - delete nreq; - if (req) - delete req; - if (dal_cursor_handle) { - dmi->CloseCursor(dal_cursor_handle, true); - dal_cursor_handle = NULL; + if (nreq) + delete nreq; + if (req) + delete req; + if (dal_cursor_handle) { + dmi->CloseCursor(dal_cursor_handle, true); + dal_cursor_handle = NULL; + } + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? + UPLL_RC_SUCCESS:result_code; + return result_code; } - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? - UPLL_RC_SUCCESS:result_code; - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, unc_keytype_operation_t op, - DalDmlIntf *dmi, controller_domain *ctrlr_dom) { - UPLL_FUNC_TRACE; - upll_rc_t result_code; - /* read from main table */ - ConfigKeyVal *dup_ckmain = ck_main; - if (op == UNC_OP_CREATE) { - dup_ckmain = NULL; - result_code = GetChildConfigKey(dup_ckmain, ck_main); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - if (dup_ckmain) delete dup_ckmain; - return result_code; + + upll_rc_t PolicingProfileMoMgr::TxUpdateProcess( + ConfigKeyVal *ck_main, + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { + UPLL_FUNC_TRACE; + upll_rc_t result_code; + /* read from main table */ + ConfigKeyVal *dup_ckmain = ck_main; + if (op == UNC_OP_CREATE) { + dup_ckmain = NULL; + result_code = GetChildConfigKey(dup_ckmain, ck_main); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + if (dup_ckmain) delete dup_ckmain; + return result_code; + } + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; + result_code = ReadConfigDB(dup_ckmain, UPLL_DT_CANDIDATE, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("%s policingprofile read failed from candidatedb (%d)", + (dup_ckmain->ToStrAll()).c_str(), result_code); + // Since during delete ck_main is set to dup_ckmain + // which is deleted by calling method + if (op == UNC_OP_CREATE) + DELETE_IF_NOT_NULL(dup_ckmain); + return result_code; + } } - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; - result_code = ReadConfigDB(dup_ckmain, UPLL_DT_CANDIDATE, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("%s policingprofile read failed from candidatedb (%d)", - (dup_ckmain->ToStrAll()).c_str(), result_code); + /* Get renamed key if key is renamed */ + result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_CANDIDATE, + dmi, ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to get the Renamed ControllerKey"); // Since during delete ck_main is set to dup_ckmain // which is deleted by calling method if (op == UNC_OP_CREATE) DELETE_IF_NOT_NULL(dup_ckmain); return result_code; } - } - /* Get renamed key if key is renamed */ - result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_CANDIDATE, - dmi, ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to get the Renamed ControllerKey"); - // Since during delete ck_main is set to dup_ckmain - // which is deleted by calling method - if (op == UNC_OP_CREATE) - DELETE_IF_NOT_NULL(dup_ckmain); + result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, + ipc_resp->header.config_id, op, + UPLL_DT_CANDIDATE, + dup_ckmain, ctrlr_dom, ipc_resp); + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("controller disconnected error proceed with commit"); + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + *driver_resp = true; + } + affected_ctrlr_set->insert((const char *)ctrlr_dom->ctrlr); + if ((op == UNC_OP_CREATE) && dup_ckmain) { + delete dup_ckmain; + dup_ckmain = NULL; + } + UPLL_LOG_TRACE("Driver response received %d", *driver_resp); return result_code; } - result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, - ipc_resp->header.config_id, op, - UPLL_DT_CANDIDATE, - dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { - result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("controller disconnected error proceed with commit"); - } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("IpcSend failed %d", result_code); - } - if ((op == UNC_OP_CREATE) && dup_ckmain) { - delete dup_ckmain; - dup_ckmain = NULL; - } - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::GetDiffRecord(ConfigKeyVal *ckv_running, - ConfigKeyVal *ckv_audit, - uuc::UpdateCtrlrPhase phase, MoMgrTables tbl, - ConfigKeyVal *&okey, - DalDmlIntf *dmi, - bool &invalid_attr) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckv_dup = NULL; - okey = NULL; - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; - switch (phase) { - case uuc::kUpllUcpDelete: - UPLL_LOG_DEBUG("Deleted record is %s ",ckv_running->ToStrAll().c_str()); - result_code = GetChildConfigKey(okey, ckv_running); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); - return result_code; - } - break; - case uuc::kUpllUcpCreate: - if (tbl == CTRLRTBL) { - UPLL_LOG_DEBUG("Created record fot ctrlr_tbl is %s ",ckv_running->ToStrAll().c_str()); + + upll_rc_t PolicingProfileMoMgr::GetDiffRecord(ConfigKeyVal *ckv_running, + ConfigKeyVal *ckv_audit, + uuc::UpdateCtrlrPhase phase, + MoMgrTables tbl, + ConfigKeyVal *&okey, + DalDmlIntf *dmi, + bool &invalid_attr) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckv_dup = NULL; + okey = NULL; + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; + switch (phase) { + case uuc::kUpllUcpDelete: + UPLL_LOG_DEBUG("Deleted record is %s ", + ckv_running->ToStrAll().c_str()); result_code = GetChildConfigKey(okey, ckv_running); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); return result_code; } - result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, + break; + case uuc::kUpllUcpCreate: + if (tbl == CTRLRTBL) { + UPLL_LOG_DEBUG("Created record fot ctrlr_tbl is %s ", + ckv_running->ToStrAll().c_str()); + result_code = GetChildConfigKey(okey, ckv_running); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", + result_code, phase); + return result_code; + } + result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB failed. err_code & phase %d %d", + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB failed. err_code & phase %d %d", result_code, phase); - return result_code; - } - } else { - UPLL_LOG_DEBUG("Created record is %s ",ckv_running->ToStrAll().c_str()); + return result_code; + } + } else { + UPLL_LOG_DEBUG("Created record is %s ", + ckv_running->ToStrAll().c_str()); result_code = DupConfigKeyVal(okey, ckv_running, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", result_code, phase); return result_code; } - } - break; - case uuc::kUpllUcpUpdate: - if (tbl == CTRLRTBL) { - UPLL_LOG_DEBUG("UpdateRecord record for run Ctrlr_tbl is %s ",ckv_running->ToStrAll().c_str()); - /*To be removed*/ - val_policingprofile_ctrl_t *val1 = reinterpret_cast - (GetVal(ckv_running)); - UPLL_LOG_DEBUG("cs_row_status : %d flags : %d ref_count : %d", val1->cs_row_status, - val1->flags, val1->ref_count); - UPLL_LOG_DEBUG("UpdateRecord record for audit Ctrlr_tbl is %s ",ckv_audit->ToStrAll().c_str()); - val_policingprofile_ctrl_t *val2 = reinterpret_cast - (GetVal(ckv_audit)); - UPLL_LOG_DEBUG("cs_row_status : %d flags : %d ref_count : %d", val2->cs_row_status, - val2->flags, val2->ref_count); - result_code = GetChildConfigKey(okey, ckv_running); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey for running record failed. \ - err_code & phase %d %d", result_code, phase); - return result_code; } - result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, + break; + case uuc::kUpllUcpUpdate: + if (tbl == CTRLRTBL) { + UPLL_LOG_DEBUG("UpdateRecord record for run Ctrlr_tbl is %s ", + ckv_running->ToStrAll().c_str()); + /*To be removed*/ + val_policingprofile_ctrl_t *val1 = reinterpret_cast + + (GetVal(ckv_running)); + UPLL_LOG_DEBUG("cs_row_status : %d flags : %d ref_count : %d", + val1->cs_row_status, + val1->flags, val1->ref_count); + UPLL_LOG_DEBUG("UpdateRecord record for audit Ctrlr_tbl is %s ", + ckv_audit->ToStrAll().c_str()); + val_policingprofile_ctrl_t *val2 = reinterpret_cast + + (GetVal(ckv_audit)); + UPLL_LOG_DEBUG("cs_row_status : %d flags : %d ref_count : %d", + val2->cs_row_status, + val2->flags, val2->ref_count); + result_code = GetChildConfigKey(okey, ckv_running); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey for running record failed." + "err_code & phase %d %d", result_code, phase); + return result_code; + } + result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from running failed. \ - err_code & phase %d %d", result_code, phase); - return result_code; - } - result_code = GetChildConfigKey(ckv_dup, ckv_audit); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey for audit record failed. \ - err_code & phase %d %d", result_code, phase); - return result_code; - } - result_code = ReadConfigDB(ckv_dup, UPLL_DT_AUDIT, + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from running failed." + "err_code & phase %d %d", result_code, phase); + return result_code; + } + result_code = GetChildConfigKey(ckv_dup, ckv_audit); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey for audit record failed." + "err_code & phase %d %d", result_code, phase); + return result_code; + } + result_code = ReadConfigDB(ckv_dup, UPLL_DT_AUDIT, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from audit failed. \ - err_code & phase %d %d", result_code, phase); - DELETE_IF_NOT_NULL(ckv_dup); - return result_code; - } - } else { - UPLL_LOG_DEBUG("UpdateRecord record is %s ",ckv_running->ToStrAll().c_str()); - UPLL_LOG_DEBUG("UpdateRecord record is %s ",ckv_audit->ToStrAll().c_str()); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB from audit failed." + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_dup); + return result_code; + } + } else { + UPLL_LOG_DEBUG("UpdateRecord record is %s ", + ckv_running->ToStrAll().c_str()); + UPLL_LOG_DEBUG("UpdateRecord record is %s ", + ckv_audit->ToStrAll().c_str()); result_code = DupConfigKeyVal(okey, ckv_running, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record." + "err_code & phase %d %d", result_code, phase); return result_code; } result_code = DupConfigKeyVal(ckv_dup, ckv_audit, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record." + "err_code & phase %d %d", result_code, phase); return result_code; } - } - if (GetVal(okey) != NULL && - GetVal(ckv_dup) != NULL) { - void *val1 = GetVal(okey); - invalid_attr = FilterAttributes(val1, GetVal(ckv_dup), true, - UNC_OP_UPDATE); - } - DELETE_IF_NOT_NULL(ckv_dup); - break; - default: - UPLL_LOG_DEBUG("Invalid operation %d", phase); - return UPLL_RC_ERR_NO_SUCH_OPERATION; - break; - } - return result_code; -} - - -upll_rc_t PolicingProfileMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (NULL == ikey) return UPLL_RC_ERR_GENERIC; - - unc::upll::kt_momgr::VtnPolicingMapMoMgr *vtnpmmgr = reinterpret_cast - - (const_cast(GetMoManager(UNC_KT_VTN_POLICINGMAP))); - if (NULL == vtnpmmgr) { - return UPLL_RC_ERR_GENERIC; - } - result_code = vtnpmmgr->IsPolicingProfileConfigured( - reinterpret_cast - (reinterpret_cast(ikey->get_key())-> - policingprofile_name), dmi); - if (UPLL_RC_SUCCESS != result_code) { - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("PolicingProfile is referred in VTN"); - return UPLL_RC_ERR_CFG_SEMANTIC; - } - UPLL_LOG_DEBUG("VTN IsPolicingProfileConfigured failed. code(%d)", - result_code); + } + if (GetVal(okey) != NULL && + GetVal(ckv_dup) != NULL) { + void *val1 = GetVal(okey); + invalid_attr = FilterAttributes(val1, GetVal(ckv_dup), true, + UNC_OP_UPDATE); + } + DELETE_IF_NOT_NULL(ckv_dup); + break; + default: + UPLL_LOG_DEBUG("Invalid operation %d", phase); + return UPLL_RC_ERR_NO_SUCH_OPERATION; + break; + } return result_code; } - unc::upll::kt_momgr::VbrPolicingMapMoMgr *vbrpmmgr = reinterpret_cast - - (const_cast(GetMoManager(UNC_KT_VBR_POLICINGMAP))); - if (NULL == vbrpmmgr) { - return UPLL_RC_ERR_GENERIC; - } - result_code = vbrpmmgr->IsPolicingProfileConfigured( - reinterpret_cast - (reinterpret_cast(ikey->get_key())-> - policingprofile_name), dmi); - if (UPLL_RC_SUCCESS != result_code) { - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("PolicingProfile is referred in vBridge"); - return UPLL_RC_ERR_CFG_SEMANTIC; - } - UPLL_LOG_DEBUG("vBridge IsPolicingProfileConfigured failed. code(%d)", - result_code); - return result_code; - } - unc::upll::kt_momgr::VbrIfPolicingMapMoMgr *vbrifpmmgr = reinterpret_cast - - (const_cast(GetMoManager(UNC_KT_VBRIF_POLICINGMAP))); - if (NULL == vbrifpmmgr) { - return UPLL_RC_ERR_GENERIC; - } - result_code = vbrifpmmgr->IsPolicingProfileConfigured( - reinterpret_cast - (reinterpret_cast(ikey->get_key())-> - policingprofile_name), dmi); - if (UPLL_RC_SUCCESS != result_code) { - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG(" PolicingProfile is referred in vBridge Interface"); - return UPLL_RC_ERR_CFG_SEMANTIC; - } - UPLL_LOG_DEBUG("vBridge If IsPolicingProfileConfigured failed. code(%d)", - result_code); - return result_code; + upll_rc_t PolicingProfileMoMgr::IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (NULL == ikey) return UPLL_RC_ERR_GENERIC; + + unc::upll::kt_momgr::VtnPolicingMapMoMgr *vtnpmmgr = reinterpret_cast + + (const_cast(GetMoManager(UNC_KT_VTN_POLICINGMAP))); + if (NULL == vtnpmmgr) { + return UPLL_RC_ERR_GENERIC; + } + result_code = vtnpmmgr->IsPolicingProfileConfigured( + reinterpret_cast + (reinterpret_cast(ikey->get_key())-> + policingprofile_name), dmi); + if (UPLL_RC_SUCCESS != result_code) { + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + UPLL_LOG_DEBUG("PolicingProfile is referred in VTN"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + UPLL_LOG_DEBUG("VTN IsPolicingProfileConfigured failed. code(%d)", + result_code); + return result_code; + } + + unc::upll::kt_momgr::VbrPolicingMapMoMgr *vbrpmmgr = reinterpret_cast + + (const_cast(GetMoManager(UNC_KT_VBR_POLICINGMAP))); + if (NULL == vbrpmmgr) { + return UPLL_RC_ERR_GENERIC; + } + result_code = vbrpmmgr->IsPolicingProfileConfigured( + reinterpret_cast + (reinterpret_cast(ikey->get_key())-> + policingprofile_name), dmi); + if (UPLL_RC_SUCCESS != result_code) { + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + UPLL_LOG_DEBUG("PolicingProfile is referred in vBridge"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + UPLL_LOG_DEBUG("vBridge IsPolicingProfileConfigured failed. code(%d)", + result_code); + return result_code; + } + + unc::upll::kt_momgr::VbrIfPolicingMapMoMgr *vbrifpmmgr = reinterpret_cast + + (const_cast(GetMoManager(UNC_KT_VBRIF_POLICINGMAP))); + if (NULL == vbrifpmmgr) { + return UPLL_RC_ERR_GENERIC; + } + result_code = vbrifpmmgr->IsPolicingProfileConfigured( + reinterpret_cast + (reinterpret_cast(ikey->get_key())-> + policingprofile_name), dmi); + if (UPLL_RC_SUCCESS != result_code) { + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + UPLL_LOG_DEBUG(" PolicingProfile is referred in vBridge Interface"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + UPLL_LOG_DEBUG("vBridge If IsPolicingProfileConfigured failed. code(%d)", + result_code); + return result_code; + } + return UPLL_RC_SUCCESS; } - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::ReadMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { + + upll_rc_t PolicingProfileMoMgr::ReadMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); + result_code); return result_code; - } + } - result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Read request failed result(%d)", result_code); + result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" Read request failed result(%d)", result_code); + } + return result_code; } - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::ReadSiblingMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, bool begin, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { + + upll_rc_t PolicingProfileMoMgr::ReadSiblingMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, bool begin, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); + result_code); return result_code; + } + result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" Read request failed result(%d)", result_code); + } + return result_code; } - result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Read request failed result(%d)", result_code); - } - return result_code; -} -upll_rc_t PolicingProfileMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name) { - UPLL_FUNC_TRACE; + upll_rc_t PolicingProfileMoMgr::ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char *ctrlr_name) { + UPLL_FUNC_TRACE; + + if ((NULL == req) || (NULL == ikey)) { + UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); + return UPLL_RC_ERR_GENERIC; + } + + if (!ctrlr_name) { + ctrlr_name = static_cast(ikey->get_user_data()); + } - if ((NULL == req) || (NULL == ikey)) { - UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); - return UPLL_RC_ERR_GENERIC; - } + UPLL_LOG_TRACE("Controller_name:(%s), operation:(%d)", + ctrlr_name, req->operation); - if (!ctrlr_name) { - ctrlr_name = static_cast(ikey->get_user_data()); - } + bool result_code = false; + uint32_t max_instance_count; + const uint8_t *attrs = NULL; + uint32_t max_attrs = 0; - UPLL_LOG_TRACE("Controller_name:(%s), operation:(%d)", - ctrlr_name, req->operation); - - bool result_code = false; - uint32_t max_instance_count; - const uint8_t *attrs = NULL; - uint32_t max_attrs = 0; - - switch (req->operation) { - case UNC_OP_CREATE: { - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; + switch (req->operation) { + case UNC_OP_CREATE: { + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, &attrs); + break; + } + case UNC_OP_UPDATE: { + result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), + &max_attrs, &attrs); + break; + } + default: { + if (req->datatype == UPLL_DT_STATE) + result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), + &max_attrs, &attrs); + else + result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), + &max_attrs, &attrs); } - break; - } - case UNC_OP_UPDATE: { - result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); - break; } - default: { - if (req->datatype == UPLL_DT_STATE) - result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); - else - result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + + if (!result_code) { + UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " + "for opeartion(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } + return UPLL_RC_SUCCESS; } - if (!result_code) { - UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " - "for opeartion(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } - return UPLL_RC_SUCCESS; -} + upll_rc_t PolicingProfileMoMgr::ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *key) { + UPLL_FUNC_TRACE; -upll_rc_t PolicingProfileMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *key) { - UPLL_FUNC_TRACE; + upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; - upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; + if ((NULL == req) || (NULL == key)) { + UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); + return UPLL_RC_ERR_BAD_REQUEST; + } - if ((NULL == req) || (NULL == key)) { - UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); - return UPLL_RC_ERR_BAD_REQUEST; - } + if (UNC_KT_POLICING_PROFILE != key->get_key_type()) { + UPLL_LOG_DEBUG("Received keytype (%d) is not KT_POLICINGPROFILE!!", + key->get_key_type()); + return UPLL_RC_ERR_BAD_REQUEST; + } - if (UNC_KT_POLICING_PROFILE != key->get_key_type()) { - UPLL_LOG_DEBUG("Received keytype (%d) is not KT_POLICINGPROFILE!!", - key->get_key_type()); - return UPLL_RC_ERR_BAD_REQUEST; - } + if (key->get_st_num() != IpctSt::kIpcStKeyPolicingprofile) { + UPLL_LOG_DEBUG("Invalid key structure received." + "received struct num - %d", + key->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + if (req->option2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG(" Error: option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (req->option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } - if (key->get_st_num() != IpctSt::kIpcStKeyPolicingprofile) { - UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", - key->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; - } - if(req->option2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG(" Error: option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - if(req->option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - - /** Read key, val struct from ConfigKeyVal */ - key_policingprofile_t *key_policingprofile = - reinterpret_cast(key->get_key()); - - if (NULL == key_policingprofile) { - UPLL_LOG_ERROR("KT_POLICINGPROFILE Key structure is empty!!"); - return UPLL_RC_ERR_BAD_REQUEST; - } + /** Read key, val struct from ConfigKeyVal */ + key_policingprofile_t *key_policingprofile = + reinterpret_cast(key->get_key()); - if ((req->operation != UNC_OP_READ_SIBLING_COUNT) && - (req->operation != UNC_OP_READ_SIBLING_BEGIN)) { - rt_code = ValidateKey(reinterpret_cast( - key_policingprofile->policingprofile_name), - (unsigned int)kMinLenPolicingProfileName, - (unsigned int)kMaxLenPolicingProfileName); - - if (UPLL_RC_SUCCESS != rt_code) { - UPLL_LOG_ERROR("key structure syntax validation failed Err code-%d", - rt_code); - return rt_code; - } - } else { - UPLL_LOG_TRACE("Operation is %d", req->operation); - StringReset(key_policingprofile->policingprofile_name); - } + if (NULL == key_policingprofile) { + UPLL_LOG_ERROR("KT_POLICINGPROFILE Key structure is empty!!"); + return UPLL_RC_ERR_BAD_REQUEST; + } - UPLL_LOG_TRACE(" key struct validation is success"); - uint32_t dt_type = req->datatype; - uint32_t operation = req->operation; - if (operation == UNC_OP_RENAME) { - if (dt_type == UPLL_DT_IMPORT) { - val_rename_policingprofile_t *val_rename_policingprofile = NULL; - /** Read rename value structure*/ - if (key->get_cfg_val() && (key->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValRenamePolicingprofile)) { - val_rename_policingprofile = - reinterpret_cast( - key->get_cfg_val()->get_val()); - } - if (val_rename_policingprofile) { - return ValidatePolicingProfileRenameValue(val_rename_policingprofile, - operation); + if ((req->operation != UNC_OP_READ_SIBLING_COUNT) && + (req->operation != UNC_OP_READ_SIBLING_BEGIN)) { + rt_code = ValidateKey(reinterpret_cast( + key_policingprofile->policingprofile_name), + (unsigned int)kMinLenPolicingProfileName, + (unsigned int)kMaxLenPolicingProfileName); + + if (UPLL_RC_SUCCESS != rt_code) { + UPLL_LOG_ERROR("key structure syntax validation failed Err code-%d", + rt_code); + return rt_code; } - UPLL_LOG_DEBUG("Mandatory val_rename_policingprofile struct is NULL" - " for RENAME"); - return UPLL_RC_ERR_BAD_REQUEST; } else { - UPLL_LOG_DEBUG("Invalid datatype(%d) received for RENAME", dt_type); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + UPLL_LOG_TRACE("Operation is %d", req->operation); + StringReset(key_policingprofile->policingprofile_name); + } + + UPLL_LOG_TRACE(" key struct validation is success"); + uint32_t dt_type = req->datatype; + uint32_t operation = req->operation; + if (operation == UNC_OP_RENAME) { + if (dt_type == UPLL_DT_IMPORT) { + val_rename_policingprofile_t *val_rename_policingprofile = NULL; + /** Read rename value structure*/ + if (key->get_cfg_val() && (key->get_cfg_val()->get_st_num() == + IpctSt::kIpcStValRenamePolicingprofile)) { + val_rename_policingprofile = + reinterpret_cast( + key->get_cfg_val()->get_val()); + } + if (val_rename_policingprofile) { + return ValidatePolicingProfileRenameValue(val_rename_policingprofile, + operation); + } + UPLL_LOG_DEBUG("Mandatory val_rename_policingprofile struct is NULL" + " for RENAME"); + return UPLL_RC_ERR_BAD_REQUEST; + } else { + UPLL_LOG_DEBUG("Invalid datatype(%d) received for RENAME", dt_type); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } } + /** Expected value structure in Request is NONE for all operation, + so no validation required for value structure */ + return UPLL_RC_SUCCESS; } - /** Expected value structure in Request is NONE for all operation, - so no validation required for value structure */ - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::ValidatePolicingProfileRenameValue( - val_rename_policingprofile_t *val_rename_policingprofile, - uint32_t operation) { - UPLL_FUNC_TRACE; - - - if (val_rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] == - UNC_VF_VALID) { - /** validate flowlist_newname syntax*/ - return ValidateKey(reinterpret_cast( - val_rename_policingprofile->policingprofile_newname), + + upll_rc_t PolicingProfileMoMgr::ValidatePolicingProfileRenameValue( + val_rename_policingprofile_t *val_rename_policingprofile, + uint32_t operation) { + UPLL_FUNC_TRACE; + + + if (val_rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] == + UNC_VF_VALID) { + /** validate flowlist_newname syntax*/ + return ValidateKey(reinterpret_cast( + val_rename_policingprofile->policingprofile_newname), (unsigned int)kMinLenPolicingProfileName, (unsigned int)kMaxLenPolicingProfileName); - } else if ((operation == UNC_OP_UPDATE) && ( - val_rename_policingprofile->valid[ UPLL_IDX_RENAME_PROFILE_RPP ] == - UNC_VF_VALID_NO_VALUE)) { - /** Reset the field with default value */ - memset(val_rename_policingprofile->policingprofile_newname, 0, - kMaxLenPolicingProfileName); - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::GetRenameInfo(ConfigKeyVal *ikey, - ConfigKeyVal *okey, ConfigKeyVal *&rename_info, DalDmlIntf *dmi, - const char *ctrlr_id, bool &renamed) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!ikey || !okey || NULL != rename_info - || !(ikey->get_key()) || !(okey->get_key())) { - UPLL_LOG_DEBUG("Input is NULL"); - return UPLL_RC_ERR_GENERIC; + } else if ((operation == UNC_OP_UPDATE) && ( + val_rename_policingprofile->valid[ UPLL_IDX_RENAME_PROFILE_RPP ] == + UNC_VF_VALID_NO_VALUE)) { + /** Reset the field with default value */ + memset(val_rename_policingprofile->policingprofile_newname, 0, + kMaxLenPolicingProfileName); + } + return UPLL_RC_SUCCESS; } - key_policingprofile_t *policingprofile_key = NULL; - policingprofile_key = reinterpret_cast - (ikey->get_key()); - if (policingprofile_key == NULL) { - UPLL_LOG_DEBUG("policingprofile_key NULL"); - return UPLL_RC_ERR_GENERIC; - } - key_rename_vnode_info_t *key_rename_info = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info_t))); - - /* Checks the profile is already renamed or not */ - if (renamed) { - /* if already renamed store the controller name */ - uuu::upll_strncpy(key_rename_info->ctrlr_profile_name, - reinterpret_cast(GetVal(ikey)) - ->policingprofile_newname, (kMaxLenPolicingProfileName + 1)); - UPLL_LOG_DEBUG("key_rename_info->ctrlr_profile_name ::: (%s)", - key_rename_info->ctrlr_profile_name); - } else { - /* if not renamed the ikey contains the controller name */ - uuu::upll_strncpy(key_rename_info->ctrlr_profile_name, - policingprofile_key->policingprofile_name, - (kMaxLenPolicingProfileName + 1)); - UPLL_LOG_DEBUG("key_rename_info->ctrlr_profile_name ::: (%s)", - key_rename_info->ctrlr_profile_name); - } - // To check for standalone configuration - DbSubOp dbop1 = {kOpReadExist, kOpMatchNone, - kOpInOutNone}; - result_code = UpdateConfigDB(ikey, UPLL_DT_IMPORT, - UNC_OP_READ, dmi, &dbop1, CTRLRTBL); - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - result_code = UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; - UPLL_LOG_DEBUG("Stand Alone configuration found %d", result_code); - free(key_rename_info); // resource leak - return result_code; - } else if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed - %d", result_code); - free(key_rename_info); // resource leak - return result_code; - } - /* Store the old UNC VTN name */ - uuu::upll_strncpy(key_rename_info->old_policingprofile_name, - policingprofile_key->policingprofile_name, - (kMaxLenPolicingProfileName + 1)); - UPLL_LOG_DEBUG("key_rename_info->old_policingprofile_name ::: (%s)", - key_rename_info->old_policingprofile_name); - - policingprofile_key = reinterpret_cast - (okey->get_key()); - - uuu::upll_strncpy(key_rename_info->new_policingprofile_name, - policingprofile_key->policingprofile_name, - (kMaxLenPolicingProfileName + 1)); - UPLL_LOG_DEBUG("key_rename_info->new_policingprofile_name ::: (%s)", - key_rename_info->new_policingprofile_name); - - rename_info = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, - IpctSt::kIpcInvalidStNum, key_rename_info, NULL); - if (!rename_info) { - free(key_rename_info); - UPLL_LOG_DEBUG("Failed to allocate memory for ConfigkeyVal"); - return UPLL_RC_ERR_GENERIC; - } - SET_USER_DATA_CTRLR(rename_info, ctrlr_id); - - if (!renamed) { - val_rename_policingprofile_t *val_rename = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); - uuu::upll_strncpy(val_rename->policingprofile_newname, - key_rename_info->ctrlr_profile_name, - (kMaxLenPolicingProfileName+1)); - val_rename->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValRenamePolicingprofile, - val_rename); + upll_rc_t PolicingProfileMoMgr::GetRenameInfo(ConfigKeyVal *ikey, + ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + const char *ctrlr_id, + bool &renamed) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey || !okey || NULL != rename_info + || !(ikey->get_key()) || !(okey->get_key())) { + UPLL_LOG_DEBUG("Input is NULL"); + return UPLL_RC_ERR_GENERIC; + } - SET_USER_DATA_CTRLR(ikey, ctrlr_id); + key_policingprofile_t *policingprofile_key = NULL; + policingprofile_key = reinterpret_cast + (ikey->get_key()); + if (policingprofile_key == NULL) { + UPLL_LOG_DEBUG("policingprofile_key NULL"); + return UPLL_RC_ERR_GENERIC; + } + key_rename_vnode_info_t *key_rename_info = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info_t))); + + /* Checks the profile is already renamed or not */ + if (renamed) { + /* if already renamed store the controller name */ + uuu::upll_strncpy(key_rename_info->ctrlr_profile_name, + reinterpret_cast + (GetVal(ikey)) + ->policingprofile_newname, + (kMaxLenPolicingProfileName + 1)); + UPLL_LOG_DEBUG("key_rename_info->ctrlr_profile_name ::: (%s)", + key_rename_info->ctrlr_profile_name); + } else { + /* if not renamed the ikey contains the controller name */ + uuu::upll_strncpy(key_rename_info->ctrlr_profile_name, + policingprofile_key->policingprofile_name, + (kMaxLenPolicingProfileName + 1)); + UPLL_LOG_DEBUG("key_rename_info->ctrlr_profile_name ::: (%s)", + key_rename_info->ctrlr_profile_name); + } + // To check for standalone configuration + DbSubOp dbop1 = {kOpReadExist, kOpMatchNone, + kOpInOutNone}; + result_code = UpdateConfigDB(ikey, UPLL_DT_IMPORT, + UNC_OP_READ, dmi, &dbop1, CTRLRTBL); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; + UPLL_LOG_DEBUG("Stand Alone configuration found %d", result_code); + free(key_rename_info); // resource leak + return result_code; + } else if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed - %d", result_code); + free(key_rename_info); // resource leak + return result_code; + } + /* Store the old UNC VTN name */ + uuu::upll_strncpy(key_rename_info->old_policingprofile_name, + policingprofile_key->policingprofile_name, + (kMaxLenPolicingProfileName + 1)); + UPLL_LOG_DEBUG("key_rename_info->old_policingprofile_name ::: (%s)", + key_rename_info->old_policingprofile_name); - ikey->SetCfgVal(cfg_val); + policingprofile_key = reinterpret_cast + (okey->get_key()); - DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutCtrlr}; - result_code = UpdateConfigDB(ikey, UPLL_DT_IMPORT, UNC_OP_CREATE, dmi, - &dbop, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDb Failed (%d)", result_code); + uuu::upll_strncpy(key_rename_info->new_policingprofile_name, + policingprofile_key->policingprofile_name, + (kMaxLenPolicingProfileName + 1)); + UPLL_LOG_DEBUG("key_rename_info->new_policingprofile_name ::: (%s)", + key_rename_info->new_policingprofile_name); + + rename_info = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, + IpctSt::kIpcInvalidStNum, + key_rename_info, + NULL); + if (!rename_info) { + free(key_rename_info); + UPLL_LOG_DEBUG("Failed to allocate memory for ConfigkeyVal"); + return UPLL_RC_ERR_GENERIC; } - } - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) - result_code = UPLL_RC_SUCCESS; - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; - if (NULL == ikey || NULL == (ikey->get_key()) || NULL != okey) { - UPLL_LOG_DEBUG("Invalid Input"); - return UPLL_RC_ERR_GENERIC; - } + SET_USER_DATA_CTRLR(rename_info, ctrlr_id); - upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!renamed) { + val_rename_policingprofile_t *val_rename = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile_t))); + uuu::upll_strncpy(val_rename->policingprofile_newname, + key_rename_info->ctrlr_profile_name, + (kMaxLenPolicingProfileName+1)); + val_rename->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; + ConfigVal *cfg_val = new ConfigVal( + IpctSt::kIpcStValRenamePolicingprofile, + val_rename); - key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); - if (!strlen(reinterpret_cast - (key_rename->old_policingprofile_name))) { - UPLL_LOG_DEBUG(" Invalid Policing Profile Name"); - return UPLL_RC_ERR_GENERIC; - } - key_policingprofile_t *key_policingprofile = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); - uuu::upll_strncpy(key_policingprofile->policingprofile_name, - key_rename->old_policingprofile_name, - kMaxLenPolicingProfileName+1); - - okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, - IpctSt::kIpcStKeyPolicingprofile, key_policingprofile, NULL); - if (!okey) { - UPLL_LOG_DEBUG("okey NULL"); - free(key_policingprofile); - return UPLL_RC_ERR_GENERIC; - } - SET_USER_DATA(okey, ikey); - return result_code; -} - -bool PolicingProfileMoMgr::IsValidKey(void *ikey, uint64_t index) { - UPLL_FUNC_TRACE; - key_policingprofile_t *key = - reinterpret_cast(ikey); - upll_rc_t ret_val = UPLL_RC_SUCCESS; - - ret_val = ValidateKey(reinterpret_cast(key->policingprofile_name), - kMinLenPolicingProfileName, - kMaxLenPolicingProfileName); - - if (UPLL_RC_SUCCESS != ret_val) { - UPLL_LOG_DEBUG("Policingprofile Name is not valid(%d)", ret_val); - return false; - } - return true; -} - -upll_rc_t PolicingProfileMoMgr::GetControllerSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code; - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr}; - - result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); - UPLL_LOG_DEBUG("GetControllerSpan successful:- %d", result_code); - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckv = NULL; - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCs}; - result_code = GetChildConfigKey(ckv, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" SetConsolidatedStatus failed. GetChildConfigKey Failed" - " Result Code - %d", result_code); - return result_code; - } - result_code = ReadConfigDB(ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, - CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" SetConsolidatedStatus failed. ReadConfigDB Failed" - " Result Code - %d", result_code); - delete ckv; - return result_code; - } - std::list< unc_keytype_configstatus_t > list_cs_row; - val_policingprofile_ctrl_t *val; - ConfigKeyVal *tmp_ckv = ckv; - for ( ; tmp_ckv != NULL ; tmp_ckv = tmp_ckv->get_next_cfg_key_val()) { - val = reinterpret_cast(GetVal(tmp_ckv)); - list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); - UPLL_LOG_DEBUG("Printing Cs_attr %d",val->cs_row_status); - } - if (ckv) delete ckv; - val_policingprofile_t *val_temp = - reinterpret_cast(GetVal(ikey)); - val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, - MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" SetConsolidatedStatus failed. UpdateConfigDB Failed" - " Result Code - %d", result_code); - return result_code; - } - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::GetPolicingProfileCtrlrKeyval( - ConfigKeyVal *&pp_keyval, - const char *policingprofile_name, - const char *ctrlr_id) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - if (NULL == policingprofile_name || NULL == ctrlr_id || - NULL != pp_keyval) { - return UPLL_RC_ERR_GENERIC; - } + SET_USER_DATA_CTRLR(ikey, ctrlr_id); + + ikey->SetCfgVal(cfg_val); - result_code = GetChildConfigKey(pp_keyval, NULL); - if (result_code != UPLL_RC_SUCCESS) { + DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutCtrlr}; + result_code = UpdateConfigDB(ikey, UPLL_DT_IMPORT, UNC_OP_CREATE, dmi, + &dbop, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDb Failed (%d)", result_code); + } + } + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) + result_code = UPLL_RC_SUCCESS; return result_code; } - key_policingprofile_t *key_policingprofie = - reinterpret_cast(pp_keyval->get_key()); - uuu::upll_strncpy(key_policingprofie->policingprofile_name, - policingprofile_name, - (kMaxLenPolicingProfileName+1)); - - UPLL_LOG_DEBUG("PP name in GetPolicingProfileCtrlrKeyval %s", - key_policingprofie->policingprofile_name); - UPLL_LOG_DEBUG("Ctrlrid in GetPolicingProfileCtrlrKeyval %s", - ctrlr_id); - SET_USER_DATA_CTRLR(pp_keyval, ctrlr_id); - - return UPLL_RC_SUCCESS; -} - - -upll_rc_t PolicingProfileMoMgr::PolicingProfileCtrlrTblOper - (const char *policingprofile_name, const char *ctrlr_id, - DalDmlIntf *dmi, unc_keytype_operation_t oper, - upll_keytype_datatype_t dt_type) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *pp_ckv = NULL; - result_code = GetPolicingProfileCtrlrKeyval(pp_ckv, - policingprofile_name, ctrlr_id); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed. UpdateConfigDB failed" - "Result code - %d", result_code); + upll_rc_t PolicingProfileMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + if (NULL == ikey || NULL == (ikey->get_key()) || NULL != okey) { + UPLL_LOG_DEBUG("Invalid Input"); + return UPLL_RC_ERR_GENERIC; + } + + upll_rc_t result_code = UPLL_RC_SUCCESS; + + key_rename_vnode_info_t *key_rename = + reinterpret_cast(ikey->get_key()); + if (!strlen(reinterpret_cast + (key_rename->old_policingprofile_name))) { + UPLL_LOG_DEBUG(" Invalid Policing Profile Name"); + return UPLL_RC_ERR_GENERIC; + } + key_policingprofile_t *key_policingprofile = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_policingprofile_t))); + uuu::upll_strncpy(key_policingprofile->policingprofile_name, + key_rename->old_policingprofile_name, + kMaxLenPolicingProfileName+1); + + okey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE, + IpctSt::kIpcStKeyPolicingprofile, + key_policingprofile, + NULL); + if (!okey) { + UPLL_LOG_DEBUG("okey NULL"); + free(key_policingprofile); + return UPLL_RC_ERR_GENERIC; + } + SET_USER_DATA(okey, ikey); return result_code; } - if (UNC_OP_CREATE == oper) { - result_code = CtrlrTblCreate(pp_ckv, dmi, dt_type); - UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed.CtrlrTblCreate failed" - "Result code - %d", result_code); - } else if (UNC_OP_DELETE == oper) { - result_code = CtrlrTblDelete(pp_ckv, dmi, dt_type); - UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed.CtrlrTblDelete failed" - "Result code - %d", result_code); - } else { - result_code = UPLL_RC_ERR_NO_SUCH_OPERATION; - UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed. " - "Result code - %d", result_code); + bool PolicingProfileMoMgr::IsValidKey(void *ikey, uint64_t index) { + UPLL_FUNC_TRACE; + key_policingprofile_t *key = + reinterpret_cast(ikey); + upll_rc_t ret_val = UPLL_RC_SUCCESS; + + ret_val = ValidateKey(reinterpret_cast(key->policingprofile_name), + kMinLenPolicingProfileName, + kMaxLenPolicingProfileName); + + if (UPLL_RC_SUCCESS != ret_val) { + UPLL_LOG_DEBUG("Policingprofile Name is not valid(%d)", ret_val); + return false; + } + return true; } - delete pp_ckv; - PolicingProfileEntryMoMgr *ppe_mgr = - reinterpret_cast - (const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE_ENTRY))); - result_code = ppe_mgr->PolicingProfileEntryCtrlrTblOper( - policingprofile_name, ctrlr_id, dmi, oper, dt_type); - if (UPLL_RC_SUCCESS != result_code) { + + upll_rc_t PolicingProfileMoMgr::GetControllerSpan( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code; + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr}; + + result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); + UPLL_LOG_DEBUG("GetControllerSpan successful:- %d", result_code); return result_code; } - return result_code; -} - -upll_rc_t PolicingProfileMoMgr::CtrlrTblCreate(ConfigKeyVal *pp_ckv, - DalDmlIntf *dmi, upll_keytype_datatype_t dt_type) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutNone}; - /*Check whether present in CTRLRTBL*/ - val_policingprofile_ctrl_t *val_ctrlr; - result_code = ReadConfigDB(pp_ckv, dt_type, - UNC_OP_READ, dbop, dmi, CTRLRTBL); - UPLL_LOG_DEBUG(" Read result in CtrlrTblCreate %d ", result_code); - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - // capability check - ConfigKeyVal *temp_key = NULL; - uint8_t *ctrlr_id = NULL; - GET_USER_DATA_CTRLR(pp_ckv, ctrlr_id); - result_code = GetChildConfigKey(temp_key, NULL); + upll_rc_t PolicingProfileMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckv = NULL; + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCs}; + result_code = GetChildConfigKey(ckv, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG(" SetConsolidatedStatus failed. GetChildConfigKey Failed" + " Result Code - %d", result_code); + return result_code; + } + result_code = ReadConfigDB(ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG(" SetConsolidatedStatus failed. ReadConfigDB Failed" + " Result Code - %d", result_code); + delete ckv; + return result_code; + } + std::list< unc_keytype_configstatus_t > list_cs_row; + val_policingprofile_ctrl_t *val; + ConfigKeyVal *tmp_ckv = ckv; + for ( ; tmp_ckv != NULL ; tmp_ckv = tmp_ckv->get_next_cfg_key_val()) { + val = reinterpret_cast(GetVal(tmp_ckv)); + list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); + UPLL_LOG_DEBUG("Printing Cs_attr %d", val->cs_row_status); + } + if (ckv) delete ckv; + val_policingprofile_t *val_temp = + reinterpret_cast(GetVal(ikey)); + val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); + UPLL_LOG_DEBUG(" SetConsolidatedStatus failed. UpdateConfigDB Failed" + " Result Code - %d", result_code); return result_code; } + return result_code; + } - result_code = GetInstanceCount(temp_key, reinterpret_cast(ctrlr_id), - dt_type, - &cur_instance_count, - dmi, CTRLRTBL); - DELETE_IF_NOT_NULL(temp_key); + upll_rc_t PolicingProfileMoMgr::GetPolicingProfileCtrlrKeyval( + ConfigKeyVal *&pp_keyval, + const char *policingprofile_name, + const char *ctrlr_id) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); + if (NULL == policingprofile_name || NULL == ctrlr_id || + NULL != pp_keyval) { + return UPLL_RC_ERR_GENERIC; + } + + result_code = GetChildConfigKey(pp_keyval, NULL); + if (result_code != UPLL_RC_SUCCESS) { return result_code; } - IpcReqRespHeader *temp_req = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); - - temp_req->operation = UNC_OP_CREATE; - temp_req->datatype = dt_type; + key_policingprofile_t *key_policingprofie = + reinterpret_cast(pp_keyval->get_key()); + uuu::upll_strncpy(key_policingprofie->policingprofile_name, + policingprofile_name, + (kMaxLenPolicingProfileName+1)); - result_code = ValidateCapability(temp_req, pp_ckv, reinterpret_cast(ctrlr_id)); + UPLL_LOG_DEBUG("PP name in GetPolicingProfileCtrlrKeyval %s", + key_policingprofie->policingprofile_name); + UPLL_LOG_DEBUG("Ctrlrid in GetPolicingProfileCtrlrKeyval %s", + ctrlr_id); + SET_USER_DATA_CTRLR(pp_keyval, ctrlr_id); - free(temp_req); + return UPLL_RC_SUCCESS; + } - unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; - uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); - if (result_code != UPLL_RC_SUCCESS) { - // Policingprofile is not supported for other than PFC Controller - // so skip adding entry for such sontroller in ctrlr table - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_id), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { + + upll_rc_t PolicingProfileMoMgr::PolicingProfileCtrlrTblOper + (const char *policingprofile_name, const char *ctrlr_id, + DalDmlIntf *dmi, unc_keytype_operation_t oper, + upll_keytype_datatype_t dt_type) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *pp_ckv = NULL; + result_code = GetPolicingProfileCtrlrKeyval(pp_ckv, + policingprofile_name, + ctrlr_id); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed." + "UpdateConfigDB failed" + "Result code - %d", result_code); + return result_code; + } + + if (UNC_OP_CREATE == oper) { + result_code = CtrlrTblCreate(pp_ckv, dmi, dt_type); + UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed." + "CtrlrTblCreate failed" + "Result code - %d", result_code); + } else if (UNC_OP_DELETE == oper) { + result_code = CtrlrTblDelete(pp_ckv, dmi, dt_type); + UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed." + "CtrlrTblDelete failed" + "Result code - %d", result_code); + } else { + result_code = UPLL_RC_ERR_NO_SUCH_OPERATION; + UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper Failed. " + "Result code - %d", result_code); + } + delete pp_ckv; + return result_code; + } + + upll_rc_t PolicingProfileMoMgr::CtrlrTblCreate( + ConfigKeyVal *pp_ckv, + DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutNone}; + /*Check whether present in CTRLRTBL*/ + val_policingprofile_ctrl_t *val_ctrlr; + result_code = ReadConfigDB(pp_ckv, dt_type, + UNC_OP_READ, dbop, dmi, CTRLRTBL); + UPLL_LOG_DEBUG(" Read result in CtrlrTblCreate %d ", result_code); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + // capability check + IpcReqRespHeader *temp_req = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + + temp_req->operation = UNC_OP_CREATE; + temp_req->datatype = dt_type; + uint8_t *ctrlr_id = NULL; + GET_USER_DATA_CTRLR(pp_ckv, ctrlr_id); + result_code = ValidateCapability(temp_req, + pp_ckv, + reinterpret_cast(ctrlr_id)); + + free(temp_req); + + unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; + uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); + if (result_code != UPLL_RC_SUCCESS) { + // Policingprofile is not supported for other than PFC Controller + // so skip adding entry for such sontroller in ctrlr table + if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_id), + dt_type, &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; - } - UPLL_LOG_DEBUG(" No record found. Create new record"); - val_ctrlr = reinterpret_cast - (GetVal(pp_ckv)); - val_ctrlr->ref_count = 1; - val_ctrlr->valid[0] = UNC_VF_VALID; - if (UPLL_DT_AUDIT == dt_type) { - ConfigKeyVal *temp_pp_ckv = NULL; - result_code = GetChildConfigKey(temp_pp_ckv, pp_ckv); + } + UPLL_LOG_DEBUG("Key not supported by controller"); + return result_code; + } + UPLL_LOG_DEBUG(" No record found. Create new record"); + val_ctrlr = reinterpret_cast + (GetVal(pp_ckv)); + val_ctrlr->ref_count = 1; + val_ctrlr->valid[0] = UNC_VF_VALID; + if (UPLL_DT_AUDIT == dt_type) { + ConfigKeyVal *temp_pp_ckv = NULL; + result_code = GetChildConfigKey(temp_pp_ckv, pp_ckv); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + return result_code; + } + DbSubOp dbop1 = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; + result_code = ReadConfigDB(temp_pp_ckv, dt_type, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_pp_ckv); + return result_code; + } + val_policingprofile_t *temp_val = reinterpret_cast + (GetVal(temp_pp_ckv)); + val_ctrlr->cs_row_status = static_cast + (temp_val->cs_row_status); + DELETE_IF_NOT_NULL(temp_pp_ckv); + } + result_code = UpdateConfigDB(pp_ckv, dt_type, + UNC_OP_CREATE, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); + UPLL_LOG_DEBUG(" CtrlrTblCreate Failed. Create record failed." + " Result_code - %d", result_code); return result_code; } - DbSubOp dbop1 = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; - result_code = ReadConfigDB(temp_pp_ckv, dt_type, - UNC_OP_READ, dbop1, dmi, MAINTBL); + val_policingprofile_ctrl_t *tmp = reinterpret_cast + (GetVal(pp_ckv)); + UPLL_LOG_DEBUG(" refcount from ckv - %d %d", tmp->ref_count, + tmp->valid[0]); + UPLL_LOG_DEBUG(" refcount - %d ", val_ctrlr->ref_count); + + PolicingProfileEntryMoMgr *ppe_mgr = + reinterpret_cast + (const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE_ENTRY))); + key_policingprofile_t *key_policingprofile = + reinterpret_cast(pp_ckv->get_key()); + result_code = ppe_mgr->PolicingProfileEntryCtrlrTblOper( + reinterpret_cast(key_policingprofile->policingprofile_name), + reinterpret_cast(ctrlr_id), dmi, UNC_OP_CREATE, dt_type); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_pp_ckv); + UPLL_LOG_DEBUG("Error in PolicingProfileEntryCtrlrTblOper" + "in CREATE (%d)", + result_code); return result_code; } - val_policingprofile_t *temp_val = reinterpret_cast - (GetVal(temp_pp_ckv)); - val_ctrlr->cs_row_status = static_cast - (temp_val->cs_row_status); - DELETE_IF_NOT_NULL(temp_pp_ckv); - } - result_code = UpdateConfigDB(pp_ckv, dt_type, - UNC_OP_CREATE, dmi, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" CtrlrTblCreate Failed. Create record failed." - " Result_code - %d", result_code); - return result_code; - } - val_policingprofile_ctrl_t *tmp = reinterpret_cast - (GetVal(pp_ckv)); - UPLL_LOG_DEBUG(" refcount from ckv - %d %d", tmp->ref_count, - tmp->valid[0]); - UPLL_LOG_DEBUG(" refcount - %d ", val_ctrlr->ref_count); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" CtrlrTblCreate Failed. ReadConfigDb Failed." - " Result_code - %d", result_code); - return result_code; - } else { - UPLL_LOG_DEBUG(" Record exixts . Update"); - val_ctrlr = reinterpret_cast - (GetVal(pp_ckv)); - /*Check max ref_count*/ - val_ctrlr->ref_count = val_ctrlr->ref_count+1; - val_ctrlr->valid[0] = UNC_VF_VALID; - UPLL_LOG_DEBUG(" refcount - %d ", val_ctrlr->ref_count); - result_code = UpdateConfigDB(pp_ckv, dt_type, UNC_OP_UPDATE, dmi, - &dbop, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" CtrlrTblCreate Failed. Update record failed." - " Result_code - %d", result_code); + } else if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" CtrlrTblCreate Failed. ReadConfigDb Failed." + " Result_code - %d", result_code); return result_code; - } - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::CtrlrTblDelete(ConfigKeyVal *pp_ckv, - DalDmlIntf *dmi, upll_keytype_datatype_t dt_type) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutNone}; - DbSubOp dbop1 = {kOpNotRead, kOpMatchCtrlr, kOpInOutNone}; - // Check whether entry is present in CTRLRTBL - val_policingprofile_ctrl_t *val_ctrlr; - result_code = ReadConfigDB(pp_ckv, dt_type, - UNC_OP_READ, dbop, dmi, CTRLRTBL); - // Doesnt exists return error - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG(" CtrlrTblDelete Failed. No record found." - " Result_code - %d", result_code); - // Success is sent to continue deleting the record - return UPLL_RC_SUCCESS; - } else if (UPLL_RC_SUCCESS == result_code) { - val_ctrlr = reinterpret_cast(GetVal(pp_ckv)); - UPLL_LOG_DEBUG(" Read is success in CtrlrTblDelete"); - if (1 < val_ctrlr->ref_count) { - val_ctrlr->ref_count = val_ctrlr->ref_count-1; - UPLL_LOG_DEBUG(" Refcount is - %d %d", val_ctrlr->ref_count, - val_ctrlr->valid[0]); + } else { + UPLL_LOG_DEBUG(" Record exixts . Update"); + val_ctrlr = reinterpret_cast + (GetVal(pp_ckv)); + /*Check max ref_count*/ + val_ctrlr->ref_count = val_ctrlr->ref_count+1; val_ctrlr->valid[0] = UNC_VF_VALID; + UPLL_LOG_DEBUG(" refcount - %d ", val_ctrlr->ref_count); result_code = UpdateConfigDB(pp_ckv, dt_type, UNC_OP_UPDATE, dmi, - &dbop1, CTRLRTBL); + &dbop, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" CtrlrTblDelete Failed. Update record failed." + UPLL_LOG_DEBUG(" CtrlrTblCreate Failed. Update record failed." " Result_code - %d", result_code); return result_code; } - } else if (1 >= val_ctrlr->ref_count) { - // If ref_count = 0 delete the entry in ctrlrtbl - UPLL_LOG_DEBUG(" Refcount is less than 1 - %d %d", val_ctrlr->ref_count, + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t PolicingProfileMoMgr::CtrlrTblDelete( + ConfigKeyVal *pp_ckv, + DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutNone}; + DbSubOp dbop1 = {kOpNotRead, kOpMatchCtrlr, kOpInOutNone}; + uint8_t *ctrlr_id = NULL; + // Check whether entry is present in CTRLRTBL + val_policingprofile_ctrl_t *val_ctrlr; + result_code = ReadConfigDB(pp_ckv, dt_type, + UNC_OP_READ, dbop, dmi, CTRLRTBL); + // Doesnt exists return error + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG(" CtrlrTblDelete Failed. No record found." + " Result_code - %d", result_code); + // Success is sent to continue deleting the record + return UPLL_RC_SUCCESS; + } else if (UPLL_RC_SUCCESS == result_code) { + val_ctrlr = reinterpret_cast + (GetVal(pp_ckv)); + UPLL_LOG_DEBUG(" Read is success in CtrlrTblDelete"); + GET_USER_DATA_CTRLR(pp_ckv, ctrlr_id); + if (1 < val_ctrlr->ref_count) { + val_ctrlr->ref_count = val_ctrlr->ref_count-1; + UPLL_LOG_DEBUG(" Refcount is - %d %d", val_ctrlr->ref_count, val_ctrlr->valid[0]); - result_code = UpdateConfigDB(pp_ckv, dt_type, UNC_OP_DELETE, dmi, - &dbop1, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - return result_code; + val_ctrlr->valid[0] = UNC_VF_VALID; + result_code = UpdateConfigDB(pp_ckv, dt_type, UNC_OP_UPDATE, dmi, + &dbop1, CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG(" CtrlrTblDelete Failed. Update record failed." + " Result_code - %d", result_code); + return result_code; + } + } else if (1 >= val_ctrlr->ref_count) { + // If ref_count = 0 delete the entry in ctrlrtbl + UPLL_LOG_DEBUG(" Refcount is less than 1 - %d %d", val_ctrlr->ref_count, + val_ctrlr->valid[0]); + result_code = UpdateConfigDB(pp_ckv, dt_type, UNC_OP_DELETE, dmi, + &dbop1, CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + return result_code; + } + PolicingProfileEntryMoMgr *ppe_mgr = + reinterpret_cast + (const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE_ENTRY))); + key_policingprofile_t *key_policingprofile = + reinterpret_cast(pp_ckv->get_key()); + result_code = ppe_mgr->PolicingProfileEntryCtrlrTblOper( + reinterpret_cast(key_policingprofile->policingprofile_name), + reinterpret_cast(ctrlr_id), dmi, UNC_OP_DELETE, dt_type); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Error in PolicingProfileEntryCtrlrTblOper" + "in DELETE (%d)", + result_code); + return result_code; + } } + } else { + return result_code; } - } else { - return result_code; - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *nreq, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - unc_keytype_configstatus_t ctrlr_status; - uint8_t cs_status; - ctrlr_status = (driver_result == UPLL_RC_SUCCESS) ? - UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; - if ((NULL == ckv) || (NULL == ctrlr_key)) { - UPLL_LOG_DEBUG("input struct is NULL"); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_SUCCESS; } - val_policingprofile_t *val_policingprofile = - reinterpret_cast(GetVal(ckv)); - val_policingprofile_ctrl *ctrlr_val_policingprofile = - reinterpret_cast(GetVal(ctrlr_key)); - if ((val_policingprofile == NULL) || (ctrlr_val_policingprofile == NULL)) { - UPLL_LOG_ERROR("Value structure is empty!!"); - return UPLL_RC_ERR_GENERIC; - } - cs_status = val_policingprofile->cs_row_status; - UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); - if (op == UNC_OP_CREATE) { - ctrlr_val_policingprofile->cs_row_status = ctrlr_status; - /* update the vtn status in main tbl */ - if (val_policingprofile->cs_row_status == UNC_CS_UNKNOWN) { + upll_rc_t PolicingProfileMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + unc_keytype_configstatus_t ctrlr_status; + uint8_t cs_status; + ctrlr_status = (driver_result == UPLL_RC_SUCCESS) ? + UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + if ((NULL == ckv) || (NULL == ctrlr_key)) { + UPLL_LOG_DEBUG("input struct is NULL"); + return UPLL_RC_ERR_GENERIC; + } + + val_policingprofile_t *val_policingprofile = + reinterpret_cast(GetVal(ckv)); + val_policingprofile_ctrl *ctrlr_val_policingprofile = + reinterpret_cast(GetVal(ctrlr_key)); + if ((val_policingprofile == NULL) || (ctrlr_val_policingprofile == NULL)) { + UPLL_LOG_ERROR("Value structure is empty!!"); + return UPLL_RC_ERR_GENERIC; + } + cs_status = val_policingprofile->cs_row_status; + UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); + if (op == UNC_OP_CREATE) { + ctrlr_val_policingprofile->cs_row_status = ctrlr_status; + /* update the vtn status in main tbl */ + if (val_policingprofile->cs_row_status == UNC_CS_UNKNOWN) { /* first entry in ctrlr table */ - cs_status = ctrlr_status; - } else if (val_policingprofile->cs_row_status == UNC_CS_APPLIED) { + cs_status = ctrlr_status; + } else if (val_policingprofile->cs_row_status == UNC_CS_APPLIED) { if (ctrlr_status == UNC_CS_NOT_APPLIED) { cs_status = UNC_CS_PARTIALLY_APPLIED; } - } else if (val_policingprofile->cs_row_status == UNC_CS_NOT_APPLIED) { + } else if (val_policingprofile->cs_row_status == UNC_CS_NOT_APPLIED) { if (ctrlr_status == UNC_CS_APPLIED) { cs_status = UNC_CS_PARTIALLY_APPLIED; } - } else if (val_policingprofile->cs_row_status == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; - } else { + } else if (val_policingprofile->cs_row_status == UNC_CS_INVALID) { + cs_status = UNC_CS_INVALID; + } else { cs_status = UNC_CS_PARTIALLY_APPLIED; + } + val_policingprofile->cs_row_status = cs_status; } - val_policingprofile->cs_row_status = cs_status; + return result_code; } - return result_code; -} -upll_rc_t PolicingProfileMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; + upll_rc_t PolicingProfileMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; - if (!ikey) { - UPLL_LOG_DEBUG(" Input Key is NULL"); - return UPLL_RC_ERR_GENERIC; - } + if (!ikey) { + UPLL_LOG_DEBUG(" Input Key is NULL"); + return UPLL_RC_ERR_GENERIC; + } - unc_key_type_t ikey_type = ikey->get_key_type(); - if (ikey_type != UNC_KT_POLICING_PROFILE) { - UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); - return UPLL_RC_ERR_GENERIC; - } + unc_key_type_t ikey_type = ikey->get_key_type(); + if (ikey_type != UNC_KT_POLICING_PROFILE) { + UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); + return UPLL_RC_ERR_GENERIC; + } - key_root_t *root_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_root_t))); - - okey = new ConfigKeyVal(UNC_KT_ROOT, IpctSt::kIpcStKeyRoot, - root_key, NULL); - SET_USER_DATA(okey, ikey); - return UPLL_RC_SUCCESS; -} - -upll_rc_t PolicingProfileMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { - UPLL_FUNC_TRACE; - val_policingprofile_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingprofile_t))); - val->cs_row_status = UNC_CS_APPLIED; - ikey->AppendCfgVal(IpctSt::kIpcStValPolicingprofile, val); - return UPLL_RC_SUCCESS; -} - -bool PolicingProfileMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { - UPLL_FUNC_TRACE; - if (op != UNC_OP_CREATE) - return true; - return false; -} - -upll_rc_t PolicingProfileMoMgr::SetPPConsolidatedStatus(ConfigKeyVal *ikey, - uint8_t *ctrlr_id, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ctrlr_ckv = NULL; - val_policingprofile_ctrl_t *ctrlr_val = NULL; - uint8_t *pp_exist_on_ctrlr = NULL; - bool applied = false, not_applied = false, invalid = false; - unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutCs }; - if (!ikey || !dmi) { - UPLL_LOG_DEBUG("Invalid Input"); - return UPLL_RC_ERR_GENERIC; + key_root_t *root_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_root_t))); + + okey = new ConfigKeyVal(UNC_KT_ROOT, IpctSt::kIpcStKeyRoot, + root_key, NULL); + SET_USER_DATA(okey, ikey); + return UPLL_RC_SUCCESS; } - result_code = GetChildConfigKey(ctrlr_ckv, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", result_code); - return result_code; + + upll_rc_t PolicingProfileMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { + UPLL_FUNC_TRACE; + val_policingprofile_t *val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingprofile_t))); + val->cs_row_status = UNC_CS_APPLIED; + ikey->AppendCfgVal(IpctSt::kIpcStValPolicingprofile, val); + return UPLL_RC_SUCCESS; } - result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, - CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB from ctrltbl failed err code %d", - result_code); - DELETE_IF_NOT_NULL(ctrlr_ckv); - return result_code; + + bool PolicingProfileMoMgr::FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { + UPLL_FUNC_TRACE; + if (op != UNC_OP_CREATE) + return true; + return false; } - for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { - ctrlr_val = reinterpret_cast(GetVal(tmp)); - if (!ctrlr_val) { - UPLL_LOG_DEBUG("Controller Value is empty"); - tmp = NULL; - DELETE_IF_NOT_NULL(ctrlr_ckv); + upll_rc_t PolicingProfileMoMgr::SetPPConsolidatedStatus(ConfigKeyVal *ikey, + uint8_t *ctrlr_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ctrlr_ckv = NULL; + val_policingprofile_ctrl_t *ctrlr_val = NULL; + uint8_t *pp_exist_on_ctrlr = NULL; + bool applied = false, not_applied = false, invalid = false; + unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr | kOpInOutCs }; + if (!ikey || !dmi) { + UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; } - GET_USER_DATA_CTRLR(tmp, pp_exist_on_ctrlr); - if (!strcmp(reinterpret_cast(pp_exist_on_ctrlr), - reinterpret_cast(ctrlr_id))) - continue; // skipping entry of deleted controller - - switch (ctrlr_val->cs_row_status) { - case UNC_CS_APPLIED: - applied = true; - break; - case UNC_CS_NOT_APPLIED: - not_applied = true; - break; - case UNC_CS_INVALID: - invalid = true; - break; - default: - UPLL_LOG_DEBUG("Invalid status"); + result_code = GetChildConfigKey(ctrlr_ckv, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", result_code); + return result_code; + } + result_code = ReadConfigDB(ctrlr_ckv, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB from ctrltbl failed err code %d", + result_code); + DELETE_IF_NOT_NULL(ctrlr_ckv); + return result_code; + } + + for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; + tmp = tmp->get_next_cfg_key_val()) { + ctrlr_val = reinterpret_cast(GetVal(tmp)); + if (!ctrlr_val) { + UPLL_LOG_DEBUG("Controller Value is empty"); + tmp = NULL; DELETE_IF_NOT_NULL(ctrlr_ckv); - // return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_CTRLR(tmp, pp_exist_on_ctrlr); + if (!strcmp(reinterpret_cast(pp_exist_on_ctrlr), + reinterpret_cast(ctrlr_id))) + continue; // skipping entry of deleted controller + + switch (ctrlr_val->cs_row_status) { + case UNC_CS_APPLIED: + applied = true; + break; + case UNC_CS_NOT_APPLIED: + not_applied = true; + break; + case UNC_CS_INVALID: + invalid = true; + break; + default: + UPLL_LOG_DEBUG("Invalid status"); + DELETE_IF_NOT_NULL(ctrlr_ckv); + // return UPLL_RC_ERR_GENERIC; + } + pp_exist_on_ctrlr = NULL; } - pp_exist_on_ctrlr = NULL; - } - if (invalid) { - c_status = UNC_CS_INVALID; - } else if (applied && !not_applied) { - c_status = UNC_CS_APPLIED; - } else if (!applied && not_applied) { - c_status = UNC_CS_NOT_APPLIED; - } else if (applied && not_applied) { - c_status = UNC_CS_PARTIALLY_APPLIED; - } else { - c_status = UNC_CS_APPLIED; + if (invalid) { + c_status = UNC_CS_INVALID; + } else if (applied && !not_applied) { + c_status = UNC_CS_APPLIED; + } else if (!applied && not_applied) { + c_status = UNC_CS_NOT_APPLIED; + } else if (applied && not_applied) { + c_status = UNC_CS_PARTIALLY_APPLIED; + } else { + c_status = UNC_CS_APPLIED; + } + // Set cs_status + val_policingprofile_t *val = static_cast + (GetVal(ikey)); + val->cs_row_status = c_status; + DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, + &dbop_update, MAINTBL); + DELETE_IF_NOT_NULL(ctrlr_ckv); + return result_code; } - // Set cs_status - val_policingprofile_t *val = static_cast - (GetVal(ikey)); - val->cs_row_status = c_status; - DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, - &dbop_update, MAINTBL); - DELETE_IF_NOT_NULL(ctrlr_ckv); - return result_code; -} } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/policingprofile_momgr.hh b/coordinator/modules/upll/policingprofile_momgr.hh index c773fd8f..eea9c50b 100644 --- a/coordinator/modules/upll/policingprofile_momgr.hh +++ b/coordinator/modules/upll/policingprofile_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -19,12 +19,12 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_POLICING_PROFILE */ -/** - * @brief PolicingProfileMoMgr class handles all the request - * received from service. - */ -class PolicingProfileMoMgr : public MoMgrImpl { - private: + /** + * @brief PolicingProfileMoMgr class handles all the request + * received from service. + */ + class PolicingProfileMoMgr : public MoMgrImpl { + private: /** * Member Variable for PolicingProfileBindInfo. */ @@ -59,56 +59,55 @@ class PolicingProfileMoMgr : public MoMgrImpl { * Member Variable for PolicingProfileBindInfo. */ static BindInfo rename_policingprofile_rename_tbl[]; - uint32_t cur_instance_count; - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_POLICINGPROFILE keytype - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request - * structure - * @param[in] ConfigKeyVal key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE policingprofile is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_POLICINGPROFILE keytype + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request + * structure + * @param[in] ConfigKeyVal key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE policingprofile is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); - /** - * @Brief Validates the syntax for KT_POLICING_PROFILE keytype - * key structure. - * - * @param[in] key_flowlist KT_POLICING_PROFILE key structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + /** + * @Brief Validates the syntax for KT_POLICING_PROFILE keytype + * key structure. + * + * @param[in] key_flowlist KT_POLICING_PROFILE key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidatePolicingProfileRenameValue( - val_rename_policingprofile_t *val_rename_policingprofile, - uint32_t operation); - - /** - * @Brief Checks if the specified key type(KT_POLICING_PROFILE) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request - * structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller_name - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + val_rename_policingprofile_t *val_rename_policingprofile, + uint32_t operation); + + /** + * @Brief Checks if the specified key type(KT_POLICING_PROFILE) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request + * structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller_name + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); + const char* ctrlr_name = NULL); - public: + public: /** * @brief PolicingProfileMoMgr Class Constructor. */ @@ -130,7 +129,7 @@ class PolicingProfileMoMgr : public MoMgrImpl { DalDmlIntf *dmi, IpcReqRespHeader *req = NULL); - /** + /** * @brief Gets the validity of the index in the given val structure * * @param[out] valid This will contain the output of validity of @@ -143,8 +142,10 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Val is NULL. */ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl = MAINTBL); + upll_rc_t GetValid(void *val, uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); /** * @brief Allocates Memory for the Incoming Pointer to the Class. @@ -192,7 +193,8 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, uint8_t *ctrlr_id); /** @@ -246,7 +248,7 @@ class PolicingProfileMoMgr : public MoMgrImpl { */ upll_rc_t UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + ConfigKeyVal *&ckv_running, DalDmlIntf *dmi); /** * @brief Method Swaps the Key and Val structures. @@ -395,10 +397,11 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); + uint32_t session_id, uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); /** * @brief Method to send req to driver @@ -416,8 +419,12 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, unc_keytype_operation_t op, DalDmlIntf *dmi, - controller_domain *ctrlr_dom); + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp); /** * @brief Method to old policingprofile name from rename struct to @@ -436,8 +443,11 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Failure */ upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, - ConfigKeyVal *okey, ConfigKeyVal *&rename_info, DalDmlIntf *dmi, - const char *ctrlr_id, bool &renamed); + ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + const char *ctrlr_id, + bool &renamed); /** * @brief Method to Create ConfigKeyVal with rename struct as key @@ -511,8 +521,8 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t GetControllerSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); /** * @brief Method to Set the Consolidated status @@ -526,7 +536,7 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi); /** * @brief Method to Delete record in ctrlrtbl @@ -541,7 +551,7 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t CtrlrTblDelete(ConfigKeyVal *pp_ckv, - DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); + DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); /** * @brief Method to Create record in ctrlrtbl @@ -556,7 +566,7 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t CtrlrTblCreate(ConfigKeyVal *pp_ckv, - DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); + DalDmlIntf *dmi, upll_keytype_datatype_t dt_type); /** * @brief Method to Create or Delete record in ctrlrtbl @@ -572,8 +582,10 @@ class PolicingProfileMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_DB_ACCESS DB access error */ upll_rc_t PolicingProfileCtrlrTblOper(const char *policingprofile_name, - const char *ctrlr_id, DalDmlIntf *dmi, unc_keytype_operation_t oper, - upll_keytype_datatype_t dt_type); + const char *ctrlr_id, + DalDmlIntf *dmi, + unc_keytype_operation_t oper, + upll_keytype_datatype_t dt_type); /** * @brief Method to Get Policingprofile COnfigKeyVal @@ -593,8 +605,8 @@ class PolicingProfileMoMgr : public MoMgrImpl { const char *ctrlr_id); upll_rc_t UpdateMainTbl(ConfigKeyVal *key_pp, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi); + unc_keytype_operation_t op, uint32_t driver_result, + ConfigKeyVal *nreq, DalDmlIntf *dmi); upll_rc_t GetDiffRecord(ConfigKeyVal *ckv_running, ConfigKeyVal *ckv_audit, @@ -613,19 +625,19 @@ class PolicingProfileMoMgr : public MoMgrImpl { upll_rc_t SetPPConsolidatedStatus(ConfigKeyVal *ikey, uint8_t *ctrlr_id, DalDmlIntf *dmi); -}; + }; -typedef struct val_policingprofile_ctrl { + typedef struct val_policingprofile_ctrl { unc_keytype_configstatus_t cs_row_status; uint8_t flags; // DBFLAGS uint32_t ref_count; // DB RefCount uint8_t valid[1]; -} val_policingprofile_ctrl_t; + } val_policingprofile_ctrl_t; -typedef struct key_policingprofile_ctrl { - uint8_t policingprofile_name[33]; - uint8_t ctrlr_name[32]; -} key_policingprofile_ctrl_t; + typedef struct key_policingprofile_ctrl { + uint8_t policingprofile_name[33]; + uint8_t ctrlr_name[32]; + } key_policingprofile_ctrl_t; } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/read_bulk.cc b/coordinator/modules/upll/read_bulk.cc index 7da64fe2..75af55c6 100644 --- a/coordinator/modules/upll/read_bulk.cc +++ b/coordinator/modules/upll/read_bulk.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -36,7 +36,8 @@ static bool GetNextSiblingKT(const KeyTree &kt_tree, const unc_key_type_t kt, } static bool GetFirstChildKT(const KeyTree &kt_tree, - unc_key_type_t parent_kt, unc_key_type_t *child_kt) { + unc_key_type_t parent_kt, + unc_key_type_t *child_kt) { UPLL_FUNC_TRACE; UPLL_LOG_TRACE("Request parent KT = %d", parent_kt); bool ok = kt_tree.GetFirstChild(parent_kt, child_kt); @@ -238,10 +239,10 @@ upll_rc_t UpllConfigMgr::ReadBulkGetSubtree(const KeyTree &kt_tree, upll_rc_t curr_urc; ConfigKeyVal *curr_resp_ckv = NULL; for ((curr_urc = ReadBulkGetSibling(datatype, curr_req_ckv, &curr_resp_ckv, - true, dmi)); + true, dmi)); curr_urc == UPLL_RC_SUCCESS; (curr_urc = ReadBulkGetSibling(datatype, curr_req_ckv, &curr_resp_ckv, - false, dmi))) { + false, dmi))) { delete curr_req_ckv; curr_req_ckv = curr_resp_ckv->DupKey(); // prepare for loop if (curr_req_ckv == NULL) { @@ -385,6 +386,10 @@ upll_rc_t UpllConfigMgr::ReadBulkMo(IpcReqRespHeader *msghdr, bool begin = true; bool retrieve_user_req_mo = true; // Check the presence of user given key const ConfigKeyVal *step_req_ckv = user_req_ckv->DupKey(); + if (!step_req_ckv) { + UPLL_LOG_DEBUG("step_req_ckv is NULL"); + return UPLL_RC_ERR_GENERIC; + } upll_rc_t urc; while (pending_cnt > 0) { ConfigKeyVal *step_resp_ckv = NULL; @@ -484,8 +489,8 @@ upll_rc_t UpllConfigMgr::ReadBulkMo(IpcReqRespHeader *msghdr, subtree_req_ckv = NULL; } else { /* Can't delete step_resp_ckv as is it attached to user_resp_ckv - delete step_resp_ckv; - */ + delete step_resp_ckv; + */ delete subtree_req_ckv; subtree_req_ckv = NULL; msghdr->result_code = UPLL_RC_SUCCESS; @@ -502,7 +507,7 @@ upll_rc_t UpllConfigMgr::ReadBulkMo(IpcReqRespHeader *msghdr, step_req_ckv->get_key_type()); unc_key_type_t next_sibling_kt; if (GetNextSiblingKT(*kt_tree, step_req_ckv->get_key_type(), - &next_sibling_kt)) { + &next_sibling_kt)) { // There is a NEXT SIBLING KT for the given KT; get the first // instance of the next KT begin = true; @@ -596,7 +601,7 @@ upll_rc_t UpllConfigMgr::ReadBulkMo(IpcReqRespHeader *msghdr, UPLL_LOG_TRACE("Returning from %s", __FUNCTION__); return UPLL_RC_ERR_GENERIC; } - // NOLINT -} // namesapce config_momgr -} // namesapce upll -} // namesapce unc +// NOLINT +} // namespace config_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/tclib_intf_impl.cc b/coordinator/modules/upll/tclib_intf_impl.cc index 1374ac6b..f186b09d 100644 --- a/coordinator/modules/upll/tclib_intf_impl.cc +++ b/coordinator/modules/upll/tclib_intf_impl.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -44,16 +44,27 @@ TcCommonRet TcLibIntfImpl::HandleCommitTransactionStart(uint32_t session_id, ConfigKeyVal *err_ckv = NULL; upll_rc_t urc = ucm_->OnTxStart(session_id, config_id, &err_ckv); if (urc != UPLL_RC_SUCCESS) { + // If local error in UPLL, send it to TC with controller id as "" + const char *ctrlr_id = kUpllCtrlrId; if (err_ckv != NULL) { - // Local error in UPLL, send it to TC with controller id as "" - list tx_res_list; - CtrlrTxResult unc_res(kUpllCtrlrId, urc, urc); - unc_res.err_ckv = err_ckv; // err_ckv will be freed by CtlrTxResult - tx_res_list.push_back(&unc_res); - if (WriteBackTxResult(tx_res_list) != true) { - urc = UPLL_RC_ERR_GENERIC; + if (err_ckv->get_user_data()) { + ctrlr_id = reinterpret_cast( + (reinterpret_cast( + err_ckv->get_user_data()))->ctrlr_id); + if (ctrlr_id == NULL) { + UPLL_LOG_INFO("Controller Id is null"); + ctrlr_id = kUpllCtrlrId; + } + UPLL_LOG_TRACE("Controller Id set in response: %s", ctrlr_id); } } + list tx_res_list; + CtrlrTxResult unc_res(ctrlr_id, urc, urc); + unc_res.err_ckv = err_ckv; // err_ckv will be freed by CtlrTxResult + tx_res_list.push_back(&unc_res); + if (WriteBackTxResult(tx_res_list) != true) { + urc = UPLL_RC_ERR_GENERIC; + } // There was an error, let us end tx as TC won't call TxEnd ucm_->OnTxEnd(); } @@ -65,6 +76,7 @@ TcCommonRet TcLibIntfImpl::HandleCommitTransactionEnd( uint32_t session_id, uint32_t config_id, TcTransEndResult end_result) { UPLL_LOG_TRACE("TxEnd result: %d", end_result); upll_rc_t urc = ucm_->OnTxEnd(); + WriteUpllErrorBlock(&urc); return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : unc::tclib::TC_FAILURE); } @@ -86,10 +98,10 @@ upll_rc_t TcLibIntfImpl::FillTcDriverInfoMap( upll_keytype_datatype_t datatype; datatype = audit ? UPLL_DT_RUNNING : UPLL_DT_CANDIDATE; if (false == CtrlrMgr::GetInstance()->GetCtrlrType( - ctrlr_name.c_str(), datatype, &ctrlr_type)) { + ctrlr_name.c_str(), datatype, &ctrlr_type)) { if (datatype != UPLL_DT_RUNNING) { if (false == CtrlrMgr::GetInstance()->GetCtrlrType( - ctrlr_name.c_str(), UPLL_DT_RUNNING, &ctrlr_type)) { + ctrlr_name.c_str(), UPLL_DT_RUNNING, &ctrlr_type)) { UPLL_LOG_WARN("Unable to get controller type for %s", ctrlr_name.c_str()); return UPLL_RC_ERR_GENERIC; @@ -101,15 +113,15 @@ upll_rc_t TcLibIntfImpl::FillTcDriverInfoMap( } } UPLL_LOG_TRACE("Affected controller name=%s, type=%d", - ctrlr_name.c_str(), ctrlr_type); + ctrlr_name.c_str(), ctrlr_type); if (ctrlr_type == UNC_CT_PFC) { openflow_cnt++; openflow_list.push_back(ctrlr_name); - /* - } else if (ctrlr_type == UNC_CT_LEGACY) { - legacy_cnt++; - legacy_list.push_back(ctrlr_name); - */ + /* + } else if (ctrlr_type == UNC_CT_LEGACY) { + legacy_cnt++; + legacy_list.push_back(ctrlr_name); + */ } else if (ctrlr_type == UNC_CT_VNP) { overlay_cnt++; overlay_list.push_back(ctrlr_name); @@ -125,10 +137,10 @@ upll_rc_t TcLibIntfImpl::FillTcDriverInfoMap( (*driver_info)[UNC_CT_PFC] = openflow_list; } /* - if (legacy_cnt) { - (*driver_info)[UNC_CT_LEGACY] = legacy_list; - } - */ + if (legacy_cnt) { + (*driver_info)[UNC_CT_LEGACY] = legacy_list; + } + */ if (overlay_cnt) { (*driver_info)[UNC_CT_VNP] = overlay_list; } @@ -146,15 +158,13 @@ TcCommonRet TcLibIntfImpl::HandleCommitVoteRequest( if (urc == UPLL_RC_SUCCESS) { urc = FillTcDriverInfoMap(&driver_info, affected_ctrlr_list, false); } else { - if (err_ckv != NULL) { - // Local error in UPLL, send it to TC with controller id as "" - list tx_res_list; - CtrlrTxResult unc_res(kUpllCtrlrId, urc, urc); - unc_res.err_ckv = err_ckv; // err_ckv will be freed by CtlrTxResult - tx_res_list.push_back(&unc_res); - if (WriteBackTxResult(tx_res_list) != true) { - urc = UPLL_RC_ERR_GENERIC; - } + // Local error in UPLL, send it to TC with controller id as "" + list tx_res_list; + CtrlrTxResult unc_res(kUpllCtrlrId, urc, urc); + unc_res.err_ckv = err_ckv; // err_ckv will be freed by CtlrTxResult + tx_res_list.push_back(&unc_res); + if (WriteBackTxResult(tx_res_list) != true) { + urc = UPLL_RC_ERR_GENERIC; } } return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : @@ -168,9 +178,10 @@ TcCommonRet TcLibIntfImpl::HandleCommitGlobalCommit( if (urc == UPLL_RC_SUCCESS) { urc = FillTcDriverInfoMap(&driver_info, affected_ctrlr_list, false); if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("Failed to fill TcDriverInfoMap in Commit-GlobalCommit"); + UPLL_LOG_FATAL("Failed to fill TcDriverInfoMap in Commit-GlobalCommit"); } } + WriteUpllErrorBlock(&urc); return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : unc::tclib::TC_FAILURE); } @@ -241,12 +252,12 @@ bool TcLibIntfImpl::GetTxKtResult(const string &ctrlr_id, if (val_exists) { val_stdef = IpctSt::GetIpcStdef(val_stnum); } else { - bzero(&val_stdef_dummy, sizeof(val_stdef_dummy)); - val_stdef = &val_stdef_dummy; + bzero(&val_stdef_dummy, sizeof(val_stdef_dummy)); + val_stdef = &val_stdef_dummy; } if (key_stdef == NULL || (val_exists && (val_stdef == NULL))) { UPLL_LOG_TRACE("key_stnum=%d key_stdef=%p val_stnum=%d val_stdef=%p", - key_stnum, key_stdef, val_stnum, val_stdef); + key_stnum, key_stdef, val_stnum, val_stdef); if (*err_ckv != NULL) { delete *err_ckv; *err_ckv = NULL; @@ -300,31 +311,34 @@ upll_rc_t TcLibIntfImpl::DriverResultCodeToTxURC( case UNC_CT_VNP: { switch (driver_result_code) { - case DRVAPI_RESPONSE_SUCCESS: + case UNC_RC_SUCCESS: return UPLL_RC_SUCCESS; - case DRVAPI_RESPONSE_NOT_RUNNING: - return UPLL_RC_ERR_GENERIC; // TODO(a) confirm this with NEC. - case DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED: - return UPLL_RC_ERR_RESOURCE_DISCONNECTED; - case DRVAPI_RESPONSE_NOT_SENT_TO_CONTROLLER: + case UNC_DRV_RC_DAEMON_INACTIVE: + return UPLL_RC_ERR_GENERIC; + case UNC_RC_CTR_DISCONNECTED: + return UPLL_RC_ERR_CTR_DISCONNECTED; + case UNC_DRV_RC_ERR_ATTRIBUTE_SYNTAX: + return UPLL_RC_ERR_CFG_SYNTAX; + case UNC_DRV_RC_ERR_ATTRIBUTE_SEMANTIC: + return UPLL_RC_ERR_CFG_SEMANTIC; + case UNC_RC_REQ_NOT_SENT_TO_CTR: // It will not be sent to controller only in the case of // vote phase For now map it to SUCCESS as we are looking for // errors here in vote phase. return UPLL_RC_SUCCESS; - case DRVAPI_RESPONSE_FAILURE: - case DRVAPI_RESPONSE_CTRLAPI_FAILURE: - case DRVAPI_RESPONSE_INVALID_REQUEST_FORMAT: - case DRVAPI_RESPONSE_INVALID_SESSION_ID: - case DRVAPI_RESPONSE_INVALID_CONFIG_ID: - case DRVAPI_RESPONSE_INVALID_OPERATION: - case DRVAPI_RESPONSE_INVALID_OPTION1: - case DRVAPI_RESPONSE_INVALID_OPTION2: - case DRVAPI_RESPONSE_INVALID_DATATYPE: - case DRVAPI_RESPONSE_INVALID_KEYTYPE: - case DRVAPI_RESPONSE_MISSING_KEY_STRUCT: - case DRVAPI_RESPONSE_MISSING_VAL_STRUCT: - case DRVAPI_RESPONSE_NO_SUCH_INSTANCE: - case DRVAPI_RESPONSE_INVALID_TRANSACTION: + case UNC_DRV_RC_ERR_GENERIC: + case UNC_RC_CTRLAPI_FAILURE: + case UNC_DRV_RC_INVALID_REQUEST_FORMAT: + case UNC_DRV_RC_INVALID_SESSION_ID: + case UNC_DRV_RC_INVALID_CONFIG_ID: + case UNC_DRV_RC_INVALID_OPERATION: + case UNC_DRV_RC_INVALID_OPTION1: + case UNC_DRV_RC_INVALID_OPTION2: + case UNC_DRV_RC_INVALID_DATATYPE: + case UNC_DRV_RC_INVALID_KEYTYPE: + case UNC_DRV_RC_MISSING_KEY_STRUCT: + case UNC_DRV_RC_MISSING_VAL_STRUCT: + case UNC_RC_NO_SUCH_INSTANCE: default: return UPLL_RC_ERR_GENERIC; } @@ -335,6 +349,59 @@ upll_rc_t TcLibIntfImpl::DriverResultCodeToTxURC( } } +static UncRespCode ConvertToTcErrorCode(uint32_t ctr_err_code) { + switch (ctr_err_code) { + case UNC_RC_SUCCESS: + return UNC_RC_SUCCESS; + + case UNC_UPLL_RC_ERR_GENERIC: + case UNC_UPLL_RC_ERR_DB_ACCESS: + // If ctrlr is disconnected then it is success. + case UNC_UPLL_RC_ERR_RESOURCE_DISCONNECTED: + return UNC_RC_INTERNAL_ERR; + case UNC_UPLL_RC_ERR_BAD_REQUEST: + case UNC_UPLL_RC_ERR_BAD_CONFIG_OR_SESSION_ID: + case UNC_UPLL_RC_ERR_NO_SUCH_OPERATION: + case UNC_UPLL_RC_ERR_INVALID_OPTION1: + case UNC_UPLL_RC_ERR_INVALID_OPTION2: + case UNC_UPLL_RC_ERR_NO_SUCH_NAME: + case UNC_UPLL_RC_ERR_NO_SUCH_DATATYPE: + case UNC_UPLL_RC_ERR_NOT_SUPPORTED_BY_STANDBY: + case UNC_UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT: + case UNC_UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT: + case UNC_UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME: + case UNC_UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT: + case UNC_UPLL_RC_ERR_MERGE_CONFLICT: + case UNC_UPLL_RC_ERR_CANDIDATE_IS_DIRTY: + case UNC_UPLL_RC_ERR_SHUTTING_DOWN: + UPLL_LOG_DEBUG("Error code %d is unexpected", ctr_err_code); + return UNC_RC_INTERNAL_ERR; + + case UNC_UPLL_RC_ERR_CFG_SYNTAX: + case UNC_UPLL_RC_ERR_CFG_SEMANTIC: + case UNC_UPLL_RC_ERR_NO_SUCH_INSTANCE: + case UNC_UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR: + case UNC_UPLL_RC_ERR_PARENT_DOES_NOT_EXIST: + case UNC_UPLL_RC_ERR_INSTANCE_EXISTS: + return UNC_RC_CONFIG_INVAL; + + /* Transaction errors */ + case UNC_RC_INTERNAL_ERR: + case UNC_RC_CONFIG_INVAL: + case UNC_RC_CTRLAPI_FAILURE: + case UNC_RC_CTR_CONFIG_STATUS_ERR: + case UNC_RC_CTR_BUSY: + case UNC_RC_CTR_DISCONNECTED: + case UNC_RC_REQ_NOT_SENT_TO_CTR: + case UNC_RC_NO_SUCH_INSTANCE: + return static_cast(ctr_err_code); + + default: + UPLL_LOG_DEBUG("Error code %d is unexpected", ctr_err_code); + return UNC_RC_INTERNAL_ERR; + } +} + /** * Driver result is converted to UPLL specific format. * On error (false return), tx_res_list will be empty. @@ -347,21 +414,21 @@ bool TcLibIntfImpl::GetTxResult(const TcCommitPhaseResult *driver_result, PFC_ASSERT(tx_res_list != NULL); UPLL_LOG_TRACE("Controller count=%u", - static_cast(driver_result->size())); + static_cast(driver_result->size())); // Iterate over each controller status for (TcCommitPhaseResult::const_iterator ctr_it = driver_result->begin(); ctr_it != driver_result->end(); ++ctr_it) { unc_keytype_ctrtype_t ctrlr_type = UNC_CT_UNKNOWN; if (false == CtrlrMgr::GetInstance()->GetCtrlrType( - ctr_it->controller_id.c_str(), UPLL_DT_CANDIDATE, &ctrlr_type)) { + ctr_it->controller_id.c_str(), UPLL_DT_CANDIDATE, &ctrlr_type)) { if (false == CtrlrMgr::GetInstance()->GetCtrlrType( - ctr_it->controller_id.c_str(), UPLL_DT_RUNNING, &ctrlr_type)) { + ctr_it->controller_id.c_str(), UPLL_DT_RUNNING, &ctrlr_type)) { UPLL_LOG_DEBUG("Controller %s does not exist", ctr_it->controller_id.c_str()); // empty tx_res_list and free its contents for (list::iterator tx_res_it = tx_res_list->begin(); - tx_res_it != tx_res_list->end(); tx_res_it++) { + tx_res_it != tx_res_list->end(); tx_res_it++) { CtrlrTxResult *tx_res = *tx_res_it; delete tx_res; } @@ -370,64 +437,64 @@ bool TcLibIntfImpl::GetTxResult(const TcCommitPhaseResult *driver_result, } } /* - if (ctrlr_type == UNC_CT_PFC) { - // TODO(a) NOT_SENT error will be used only in Global Commit Phase - if (ctr_it->resp_code == DRVAPI_RESPONSE_NOT_SENT_TO_CONTROLLER) - continue; // skip this controller - } else { - continue; // Not implemeted other controller types - } - */ - upll_rc_t converted_result = DriverResultCodeToTxURC(ctrlr_type, - ctr_it->resp_code); - /* - if (converted_result != UPLL_RC_ERR_RESOURCE_DISCONNECTED) { - if (ctr_it->num_of_errors == 0) { - UPLL_LOG_TRACE("Skipping Controller ID=%s CtrResult=%d", - ctr_it->controller_id.c_str(), ctr_it->resp_code); - continue; - } - } - */ - - UPLL_LOG_INFO("Controller ID=%s CtrlrResult=%d Urc=%d ErrCount=%d", - ctr_it->controller_id.c_str(), ctr_it->resp_code, - converted_result, ctr_it->num_of_errors); - - CtrlrTxResult *tx_res = new CtrlrTxResult(ctr_it->controller_id, - converted_result, - ctr_it->resp_code); - tx_res->err_ckv = NULL; - - if (GetTxKtResult(tx_res->ctrlr_id, &ctr_it->key_list, &tx_res->err_ckv) == - false) { - // empty tx_res_list and free its contents - for (list::iterator tx_res_it = tx_res_list->begin(); - tx_res_it != tx_res_list->end(); tx_res_it++) { - CtrlrTxResult *tx_res = *tx_res_it; - delete tx_res; - } - tx_res_list->clear(); - delete tx_res; - return false; - } - if (tx_res->err_ckv != NULL) { - UPLL_LOG_INFO("Error CKV received from controller <%s>: %s", - ctr_it->controller_id.c_str(), - tx_res->err_ckv->ToStrAll().c_str()); - } - tx_res_list->push_back(tx_res); - /* - if (tx_res->err_ckv->size() != 0) { - tx_res_list->push_back(tx_res); - } else { - if (converted_result == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { - tx_res_list->push_back(tx_res); - } - } - */ + if (ctrlr_type == UNC_CT_PFC) { +// TODO(a) NOT_SENT error will be used only in Global Commit Phase +if (ctr_it->resp_code == UNC_RC_REQ_NOT_SENT_TO_CTR) +continue; // skip this controller +} else { +continue; // Not implemeted other controller types +} +*/ +upll_rc_t converted_result = DriverResultCodeToTxURC(ctrlr_type, + ctr_it->resp_code); +/* + if (converted_result != UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (ctr_it->num_of_errors == 0) { + UPLL_LOG_TRACE("Skipping Controller ID=%s CtrResult=%d", + ctr_it->controller_id.c_str(), ctr_it->resp_code); + continue; + } + } + */ + +UPLL_LOG_INFO("Controller ID=%s CtrlrResult=%d Urc=%d ErrCount=%d", + ctr_it->controller_id.c_str(), ctr_it->resp_code, + converted_result, ctr_it->num_of_errors); + +CtrlrTxResult *tx_res = new CtrlrTxResult(ctr_it->controller_id, + converted_result, + ctr_it->resp_code); +tx_res->err_ckv = NULL; + +if (GetTxKtResult(tx_res->ctrlr_id, &ctr_it->key_list, &tx_res->err_ckv) == + false) { + // empty tx_res_list and free its contents + for (list::iterator tx_res_it = tx_res_list->begin(); + tx_res_it != tx_res_list->end(); tx_res_it++) { + CtrlrTxResult *tx_res = *tx_res_it; + delete tx_res; } - return true; + tx_res_list->clear(); + delete tx_res; + return false; +} +if (tx_res->err_ckv != NULL) { + UPLL_LOG_INFO("Error CKV received from controller <%s>: %s", + ctr_it->controller_id.c_str(), + tx_res->err_ckv->ToStrAll().c_str()); +} +tx_res_list->push_back(tx_res); +/* + if (tx_res->err_ckv->size() != 0) { + tx_res_list->push_back(tx_res); + } else { + if (converted_result == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + tx_res_list->push_back(tx_res); + } + } + */ +} +return true; } bool TcLibIntfImpl::WriteBackTxResult(const list &tx_res_list) { @@ -443,13 +510,26 @@ bool TcLibIntfImpl::WriteBackTxResult(const list &tx_res_list) { const CtrlrTxResult *res = *ctrlr_it; // Skip controllers whose status is success. // During Vote/G-Commit, disconnected controller information is not skipped - // During Vote, DRVAPI_RESPONSE_NOT_SENT_TO_CONTROLLER is not skipped. + // During Vote, UNC_RC_REQ_NOT_SENT_TO_CTR is not skipped. if ((res->ctrlr_id.compare(kUpllCtrlrId) != 0) && - (res->ctrlr_orig_result == DRVAPI_RESPONSE_SUCCESS)) { + (res->ctrlr_orig_result == UNC_RC_SUCCESS)) { + continue; + } + UncRespCode unc_rc = ConvertToTcErrorCode(res->ctrlr_orig_result); + UPLL_LOG_DEBUG("Sending error %d to TC", unc_rc); + if (unc_rc == UNC_RC_CTR_BUSY) { + // If error is UNC_RC_CTR_BUSY, there is no keytype error. So, err_ckv + // should not be used. + unc::tclib::TcApiCommonRet tclib_ret = tclib->TcLibWriteControllerInfo( + res->ctrlr_id, unc_rc, 0); + if (tclib_ret != unc::tclib::TC_API_COMMON_SUCCESS) { + UPLL_LOG_DEBUG("Failed to write to tclib %d", tclib_ret); + return false; + } continue; } unc::tclib::TcApiCommonRet tclib_ret = tclib->TcLibWriteControllerInfo( - res->ctrlr_id, res->ctrlr_orig_result, res->err_ckv->size()); + res->ctrlr_id, unc_rc, ((res->err_ckv)?res->err_ckv->size():0)); if (tclib_ret != unc::tclib::TC_API_COMMON_SUCCESS) { UPLL_LOG_DEBUG("Failed to write to tclib %d", tclib_ret); return false; @@ -457,42 +537,44 @@ bool TcLibIntfImpl::WriteBackTxResult(const list &tx_res_list) { if (res->err_ckv) { UPLL_LOG_INFO("Proccessed Error CKV for controller <%s>: %s", res->ctrlr_id.c_str(), res->err_ckv->ToStrAll().c_str()); - } - for (const ConfigKeyVal *ckv = res->err_ckv; ckv; - ckv = ckv->get_next_cfg_key_val()) { - if (ckv->get_key() == NULL) { - UPLL_LOG_DEBUG("Bad ConfigKeyVal key is NULL"); - return false; - } - const pfc_ipcstdef_t *key_stdef = IpctSt::GetIpcStdef(ckv->get_st_num()); - if (key_stdef == NULL) { - UPLL_LOG_DEBUG("Unknown ConfigKeyVal key=%d", ckv->get_st_num()); - return false; - } - const pfc_ipcstdef_t *val_stdef = NULL; - // Need a dummy for val_stdef; - pfc_ipcstdef_t val_stdef_dummy; - const ConfigVal *cv = ckv->get_cfg_val(); - if (cv != NULL) { - if (cv->get_val() == NULL) { - UPLL_LOG_DEBUG("Bad ConfigKeyVal val is NULL"); + for (const ConfigKeyVal *ckv = res->err_ckv; ckv; + ckv = ckv->get_next_cfg_key_val()) { + if (ckv->get_key() == NULL) { + UPLL_LOG_DEBUG("Bad ConfigKeyVal key is NULL"); return false; } - val_stdef = IpctSt::GetIpcStdef(cv->get_st_num()); - if (val_stdef == NULL) { - UPLL_LOG_DEBUG("Unknown ConfigKeyVal val=%d", cv->get_st_num()); + const pfc_ipcstdef_t *key_stdef = + IpctSt::GetIpcStdef(ckv->get_st_num()); + if (key_stdef == NULL) { + UPLL_LOG_DEBUG("Unknown ConfigKeyVal key=%d", ckv->get_st_num()); + return false; + } + const pfc_ipcstdef_t *val_stdef = NULL; + // Need a dummy for val_stdef; + pfc_ipcstdef_t val_stdef_dummy; + const ConfigVal *cv = ckv->get_cfg_val(); + if (cv != NULL) { + if (cv->get_val() == NULL) { + UPLL_LOG_DEBUG("Bad ConfigKeyVal val is NULL"); + return false; + } + val_stdef = IpctSt::GetIpcStdef(cv->get_st_num()); + if (val_stdef == NULL) { + UPLL_LOG_DEBUG("Unknown ConfigKeyVal val=%d", cv->get_st_num()); + return false; + } + } else { + bzero(&val_stdef_dummy, sizeof(val_stdef_dummy)); + val_stdef = &val_stdef_dummy; + } + unc::tclib::TcApiCommonRet tclib_ret = + tclib->TcLibWriteKeyValueDataInfo( + res->ctrlr_id, ckv->get_key_type(), *key_stdef, *val_stdef, + ckv->get_key(), ((cv) ? cv->get_val() : NULL)); + if (tclib_ret != unc::tclib::TC_API_COMMON_SUCCESS) { + UPLL_LOG_DEBUG("Failed to write to tclib %d", tclib_ret); return false; } - } else { - bzero(&val_stdef_dummy, sizeof(val_stdef_dummy)); - val_stdef = &val_stdef_dummy; - } - unc::tclib::TcApiCommonRet tclib_ret = tclib->TcLibWriteKeyValueDataInfo( - res->ctrlr_id, ckv->get_key_type(), *key_stdef, *val_stdef, - ckv->get_key(), ((cv) ? cv->get_val() : NULL)); - if (tclib_ret != unc::tclib::TC_API_COMMON_SUCCESS) { - UPLL_LOG_DEBUG("Failed to write to tclib %d", tclib_ret); - return false; } } } @@ -513,9 +595,12 @@ TcCommonRet TcLibIntfImpl::HandleCommonTxDriverResult( if (GetTxResult(&driver_result, &tx_res_list) == false) { UPLL_LOG_DEBUG("Failed to convert driver result"); PFC_ASSERT(tx_res_list.empty() == true); + upll_rc_t urc = UPLL_RC_ERR_GENERIC; + WriteUpllErrorBlock(&urc); return unc::tclib::TC_FAILURE; } + // Now call tx_mgr's commit handler upll_rc_t urc; switch (tx_phase) { @@ -557,6 +642,7 @@ TcCommonRet TcLibIntfImpl::HandleCommonTxDriverResult( unc::tclib::TC_FAILURE); } else { UPLL_LOG_TRACE("ConfigMgr failed to process the commit result %d", urc); + WriteUpllErrorBlock(&urc); tcr = unc::tclib::TC_FAILURE; } // free tx_res_list and also compute final TC result; @@ -569,16 +655,15 @@ TcCommonRet TcLibIntfImpl::HandleCommonTxDriverResult( // For Global-Commit phase, tcr is not dependent on the controller result. if (tcr == unc::tclib::TC_SUCCESS) { if (tx_phase == unc::tclib::TC_COMMIT_VOTE_PHASE) { - if ((tx_res->ctrlr_orig_result != DRVAPI_RESPONSE_SUCCESS) && - (tx_res->ctrlr_orig_result != - DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED)) { - /* Assumption: If err is DRVAPI_RESPONSE_NOT_SENT_TO_CONTROLLER, then + if ((tx_res->ctrlr_orig_result != UNC_RC_SUCCESS) && + (tx_res->ctrlr_orig_result != UNC_RC_CTR_DISCONNECTED)) { + /* Assumption: If err is UNC_RC_REQ_NOT_SENT_TO_CTR, then * atleast one controller failed the vote. */ tcr = unc::tclib::TC_FAILURE; } } else if (tx_phase == unc::tclib::TC_AUDIT_VOTE_PHASE) { - if (tx_res->ctrlr_orig_result != DRVAPI_RESPONSE_SUCCESS) { - /* Note: If err is DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED, then + if (tx_res->ctrlr_orig_result != UNC_RC_SUCCESS) { + /* Note: If err is UNC_RC_CTR_DISCONNECTED, then * Audit for the controller is incomplete, so tcr is failure. */ tcr = unc::tclib::TC_FAILURE; } @@ -612,6 +697,7 @@ TcCommonRet TcLibIntfImpl::HandleAuditStart(uint32_t session_id, if (urc != UPLL_RC_SUCCESS) { ucm_->OnAuditEnd(controller_id.c_str(), false); } + WriteUpllErrorBlock(&urc); return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : unc::tclib::TC_FAILURE); } @@ -623,6 +709,7 @@ TcCommonRet TcLibIntfImpl::HandleAuditEnd(uint32_t session_id, TcAuditResult audit_result) { UPLL_LOG_TRACE("AuditEnd result: %d", audit_result); upll_rc_t urc = ucm_->OnAuditEnd(controller_id.c_str(), false); + WriteUpllErrorBlock(&urc); return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : unc::tclib::TC_FAILURE); } @@ -631,7 +718,34 @@ TcCommonRet TcLibIntfImpl::HandleAuditEnd(uint32_t session_id, TcCommonRet TcLibIntfImpl::HandleAuditTransactionStart( uint32_t session_id, unc_keytype_ctrtype_t ctr_type, std::string controller_id) { - upll_rc_t urc = ucm_->OnAuditTxStart(controller_id.c_str(), session_id, 0); + ConfigKeyVal *err_ckv = NULL; + upll_rc_t urc = ucm_->OnAuditTxStart(controller_id.c_str(), + session_id, + 0, + &err_ckv); + if (urc != UPLL_RC_SUCCESS) { + // If local error in UPLL, send it to TC with controller id as "" + const char *ctrlr_id = kUpllCtrlrId; + if (err_ckv != NULL) { + if (err_ckv->get_user_data()) { + ctrlr_id = reinterpret_cast( + (reinterpret_cast( + err_ckv->get_user_data()))->ctrlr_id); + if (ctrlr_id == NULL) { + UPLL_LOG_INFO("Controller Id is null"); + ctrlr_id = kUpllCtrlrId; + } + UPLL_LOG_TRACE("Controller Id set in response: %s", ctrlr_id); + } + } + list tx_res_list; + CtrlrTxResult unc_res(ctrlr_id, urc, urc); + unc_res.err_ckv = err_ckv; // err_ckv will be freed by CtlrTxResult + tx_res_list.push_back(&unc_res); + if (WriteBackTxResult(tx_res_list) != true) { + urc = UPLL_RC_ERR_GENERIC; + } + } return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : unc::tclib::TC_FAILURE); } @@ -641,6 +755,7 @@ TcCommonRet TcLibIntfImpl::HandleAuditTransactionEnd( uint32_t session_id, unc_keytype_ctrtype_t ctr_type, std::string controller_id, TcTransEndResult end_result) { upll_rc_t urc = ucm_->OnAuditTxEnd(controller_id.c_str()); + WriteUpllErrorBlock(&urc); return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : unc::tclib::TC_FAILURE); } @@ -655,6 +770,7 @@ TcCommonRet TcLibIntfImpl::HandleAuditVoteRequest( if (urc == UPLL_RC_SUCCESS) { urc = FillTcDriverInfoMap(&driver_info, affected_ctrlr_list, true); } + WriteUpllErrorBlock(&urc); return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : unc::tclib::TC_FAILURE); } @@ -669,13 +785,14 @@ TcCommonRet TcLibIntfImpl::HandleAuditGlobalCommit( if (urc == UPLL_RC_SUCCESS) { urc = FillTcDriverInfoMap(&driver_info, affected_ctrlr_list, true); if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("Failed to fill TcDriverInfoMap in AuditGlobalCommit"); + UPLL_LOG_FATAL("Failed to fill TcDriverInfoMap in AuditGlobalCommit"); } } + WriteUpllErrorBlock(&urc); audit_result = ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_AUDIT_SUCCESS : unc::tclib::TC_AUDIT_FAILURE); return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : - unc::tclib::TC_FAILURE); + unc::tclib::TC_FAILURE); } TcCommonRet TcLibIntfImpl::HandleAuditDriverResult( @@ -695,7 +812,7 @@ TcCommonRet TcLibIntfImpl::HandleAuditDriverResult( /* Iterate over each controller status to find audit_result */ for (TcCommitPhaseResult::const_iterator ctr_it = driver_result.begin(); ctr_it != driver_result.end(); ++ctr_it) { - if (ctr_it->resp_code != DRVAPI_RESPONSE_SUCCESS) { + if (ctr_it->resp_code != UNC_RC_SUCCESS) { /* audit_result is failure even if ctrlr is disconnected or * vote request not sent to controller. */ audit_result = unc::tclib::TC_AUDIT_FAILURE; @@ -786,10 +903,10 @@ TcCommonRet TcLibIntfImpl::HandleAuditConfig(unc_keytype_datatype_t db_target, case TC_OP_DRIVER_AUDIT: { /* Always done as part transitioning to ACT, so no need to do it here. - upll_rc_t urc = ucm_->OnAuditEnd("TcRecovery", true); - return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : - unc::tclib::TC_FAILURE); - */ + upll_rc_t urc = ucm_->OnAuditEnd("TcRecovery", true); + return ((urc == UPLL_RC_SUCCESS) ? unc::tclib::TC_SUCCESS : + unc::tclib::TC_FAILURE); + */ return unc::tclib::TC_SUCCESS; } break; @@ -825,11 +942,11 @@ TcCommonRet TcLibIntfImpl::HandleSetupComplete() { * Invoked from TC to detect the driver id for a controller */ /* -unc_keytype_ctrtype_t TcLibIntfImpl::HandleGetDriverId( - std::string controller_id) { - // As per TC design, this API shouldn't have been called. - UPLL_LOG_DEBUG("Shouldn't be here."); - return UNC_CT_UNKNOWN; + unc_keytype_ctrtype_t TcLibIntfImpl::HandleGetDriverId( + std::string controller_id) { +// As per TC design, this API shouldn't have been called. +UPLL_LOG_DEBUG("Shouldn't be here."); +return UNC_CT_UNKNOWN; } */ @@ -858,7 +975,25 @@ unc_keytype_ctrtype_t TcLibIntfImpl::HandleGetControllerType() { UPLL_LOG_DEBUG("Shouldn't be here."); return UNC_CT_UNKNOWN; } - // NOLINT -} // config_momgr -} // upll -} // unc + +/** + * @brief Write the logical error block to TC in case of internal error + * @param[in] upll response code urc + */ +void TcLibIntfImpl::WriteUpllErrorBlock(upll_rc_t *urc) { + if (*urc != UPLL_RC_SUCCESS) { + const char *ctrlr_id = kUpllCtrlrId; + list tx_res_list; + CtrlrTxResult unc_res(ctrlr_id, *urc, *urc); + unc_res.err_ckv = NULL; + tx_res_list.push_back(&unc_res); + if (WriteBackTxResult(tx_res_list) != true) { + *urc = UPLL_RC_ERR_GENERIC; + } + } +} + +// NOLINT +} // namespace config_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/tclib_intf_impl.hh b/coordinator/modules/upll/tclib_intf_impl.hh index 80a0ca17..9ee5982d 100644 --- a/coordinator/modules/upll/tclib_intf_impl.hh +++ b/coordinator/modules/upll/tclib_intf_impl.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -90,6 +90,13 @@ class TcLibIntfImpl : public unc::tclib::TcLibInterface { uint32_t session_id, unc_keytype_ctrtype_t ctr_type, std::string controller_id); + virtual TcCommonRet HandleAuditStart( + uint32_t session_id, unc_keytype_ctrtype_t ctr_type, + std::string controller_id, pfc_bool_t force_reconnect) { + PFC_ASSERT(0); // This function should never have been called + return unc::tclib::TC_FAILURE; + } + virtual TcCommonRet HandleAuditEnd( uint32_t session_id, unc_keytype_ctrtype_t ctr_type, std::string controller_id, TcAuditResult audit_result); @@ -133,59 +140,59 @@ class TcLibIntfImpl : public unc::tclib::TcLibInterface { uint32_t session_id, unc_keytype_ctrtype_t ctr_type, std::string controller_id, TcAuditOpAbortPhase fail_phase); - /** - * @brief Save Configuration + /** + * @brief Save Configuration */ virtual TcCommonRet HandleSaveConfiguration(uint32_t session_id); - /** - * @brief Abort Candidate Configuration + /** + * @brief Abort Candidate Configuration */ virtual TcCommonRet HandleAbortCandidate(uint32_t session_id, uint32_t config_id); - /** + /** * @brief Clear Startup Configuration */ virtual TcCommonRet HandleClearStartup(uint32_t session_id); - /** + /** * @brief HandleAuditConfig DB */ virtual TcCommonRet HandleAuditConfig(unc_keytype_datatype_t db_target, TcServiceType fail_oper); - /** + /** * @brief Setup Configuration * Message sent to UPPL at the end of startup operation to send messages to * driver */ virtual TcCommonRet HandleSetup(); - /** + /** * @brief Setup Complete * Message sent to UPPL during state changes */ virtual TcCommonRet HandleSetupComplete(); - /** + /** * @brief Get Driver Id * Invoked from TC to detect the driver id for a controller */ // virtual unc_keytype_ctrtype_t HandleGetDriverId(std::string controller_id); - /** - * @brief Get controller type invoked from TC to detect the controller type + /** + * @brief Get controller type invoked from TC to detect the controller type * for a controller * @param[in] controller_id controller id intended for audit * @retval openflow/overlay/legacy if controller id matches - * @retval UNC_CT_UNKNOWN if controller id does not belong to + * @retval UNC_CT_UNKNOWN if controller id does not belong to * any of controller type */ virtual unc_keytype_ctrtype_t HandleGetControllerType( std::string controller_id); - /** - * @brief Get Controller Type + /** + * @brief Get Controller Type * Invoked from TC to detect the type of the controller * Intended for the driver modules */ @@ -231,6 +238,7 @@ class TcLibIntfImpl : public unc::tclib::TcLibInterface { std::list *tx_res_list); static upll_rc_t DriverResultCodeToTxURC(unc_keytype_ctrtype_t ctrlr_type, int driver_result_code); + static void WriteUpllErrorBlock(upll_rc_t *urc); UpllConfigMgr *ucm_; uint32_t session_id_; @@ -239,9 +247,9 @@ class TcLibIntfImpl : public unc::tclib::TcLibInterface { bool shutting_down_; pfc::core::ReadWriteLock sys_state_rwlock_; }; - // NOLINT -} // config_momgr -} // upll -} // unc - // NOLINT +// NOLINT +} // namespace config_momgr +} // namespace upll +} // namespace unc +// NOLINT #endif // UPLL_TCLIB_INTF_IMPL_HH_ diff --git a/coordinator/modules/upll/tx_mgr.cc b/coordinator/modules/upll/tx_mgr.cc index 47b50d2d..19dbeeac 100644 --- a/coordinator/modules/upll/tx_mgr.cc +++ b/coordinator/modules/upll/tx_mgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,42 +20,55 @@ namespace upll { namespace config_momgr { using unc::upll::dal::DalOdbcMgr; +using namespace unc::upll::upll_util; #define CALL_MOMGRS_PREORDER(func, ...) \ - { \ - const std::list *lst = cktt_.get_preorder_list(); \ - for (std::list::const_iterator it = lst->begin(); \ - it != lst->end(); it++) { \ - const unc_key_type_t kt(*it); \ - if (upll_kt_momgrs_.count(kt) > 0) { \ - UPLL_LOG_DEBUG("KT: %u; kt_name: %s", kt, kt_name_map_[kt].c_str());\ - MoManager *momgr = upll_kt_momgrs_[kt]; \ - urc = momgr->func(kt, __VA_ARGS__); \ - if (urc != UPLL_RC_SUCCESS) { \ - UPLL_LOG_WARN("Error = %d, KT: %s", urc, kt_name_map_[kt].c_str());\ - break; \ - } \ - } \ - } \ - } +{ \ + const std::list *lst = cktt_.get_preorder_list(); \ + for (std::list::const_iterator it = lst->begin(); \ + it != lst->end(); it++) { \ + const unc_key_type_t kt(*it); \ + std::map::iterator momgr_it = \ + upll_kt_momgrs_.find(kt); \ + if (momgr_it != upll_kt_momgrs_.end()) { \ + UPLL_LOG_DEBUG("KT: %u; kt_name: %s", kt, kt_name_map_[kt].c_str());\ + MoManager *momgr = momgr_it->second; \ + urc = momgr->func(kt, __VA_ARGS__); \ + if (urc != UPLL_RC_SUCCESS) { \ + UPLL_LOG_WARN("Error = %d, KT: %s", urc, kt_name_map_[kt].c_str());\ + break; \ + } \ + if ((urc = ContinueActiveProcess()) != UPLL_RC_SUCCESS) { \ + UPLL_LOG_WARN("Error = %d, KT: %s", urc, kt_name_map_[kt].c_str());\ + break; \ + } \ + } \ + } \ +} #define CALL_MOMGRS_REVERSE_ORDER(func, ...) \ - { \ - const std::list *lst = cktt_.get_reverse_postorder_list();\ - for (std::list::const_iterator it = lst->begin(); \ - it != lst->end(); it++) { \ - const unc_key_type_t kt(*it); \ - if (upll_kt_momgrs_.count(kt) > 0) { \ - UPLL_LOG_DEBUG("KT: %u; kt_name: %s", kt, kt_name_map_[kt].c_str());\ - MoManager *momgr = upll_kt_momgrs_[kt]; \ - urc = momgr->func(kt, __VA_ARGS__); \ - if (urc != UPLL_RC_SUCCESS) { \ - UPLL_LOG_INFO("Error = %d, KT: %s", urc, kt_name_map_[kt].c_str());\ - break; \ - } \ - } \ - } \ - } +{ \ + const std::list *lst = cktt_.get_reverse_postorder_list();\ + for (std::list::const_iterator it = lst->begin(); \ + it != lst->end(); it++) { \ + const unc_key_type_t kt(*it); \ + std::map::iterator momgr_it = \ + upll_kt_momgrs_.find(kt); \ + if (momgr_it != upll_kt_momgrs_.end()) { \ + UPLL_LOG_DEBUG("KT: %u; kt_name: %s", kt, kt_name_map_[kt].c_str());\ + MoManager *momgr = momgr_it->second; \ + urc = momgr->func(kt, __VA_ARGS__); \ + if (urc != UPLL_RC_SUCCESS) { \ + UPLL_LOG_WARN("Error = %d, KT: %s", urc, kt_name_map_[kt].c_str());\ + break; \ + } \ + if ((urc = ContinueActiveProcess()) != UPLL_RC_SUCCESS) { \ + UPLL_LOG_WARN("Error = %d, KT: %s", urc, kt_name_map_[kt].c_str());\ + break; \ + } \ + } \ + } \ +} upll_rc_t UpllConfigMgr::ValidateCommit(const char *caller) { UPLL_FUNC_TRACE; @@ -98,7 +111,7 @@ upll_rc_t UpllConfigMgr::ValidateAudit(const char *caller, } if (0 != audit_ctrlr_id_.compare(req_ctrlr_id)) { UPLL_LOG_WARN("%s: Requested controller: %s, audit_ctrlr_id_: %s", - caller, req_ctrlr_id, audit_ctrlr_id_.c_str()); + caller, req_ctrlr_id, audit_ctrlr_id_.c_str()); return UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; } @@ -128,14 +141,15 @@ upll_rc_t UpllConfigMgr::OnTxStart(uint32_t session_id, uint32_t config_id, UPLL_DT_CANDIDATE, ConfigLock::CFG_WRITE_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); CALL_MOMGRS_REVERSE_ORDER(TxUpdateController, session_id, config_id, kUpllUcpDelete, &affected_ctrlr_set_, dbinst, err_ckv); if (urc != UPLL_RC_SUCCESS) { - DalClose(dbinst, false, __FUNCTION__); + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); return urc; } @@ -143,7 +157,8 @@ upll_rc_t UpllConfigMgr::OnTxStart(uint32_t session_id, uint32_t config_id, kUpllUcpCreate, &affected_ctrlr_set_, dbinst, err_ckv); if (urc != UPLL_RC_SUCCESS) { - DalClose(dbinst, false, __FUNCTION__); + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); return urc; } @@ -151,26 +166,36 @@ upll_rc_t UpllConfigMgr::OnTxStart(uint32_t session_id, uint32_t config_id, kUpllUcpUpdate, &affected_ctrlr_set_, dbinst, err_ckv); if (urc != UPLL_RC_SUCCESS) { - DalClose(dbinst, false, __FUNCTION__); + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); return urc; } unc_key_type_t phase2_kts[] = { UNC_KT_POLICING_PROFILE_ENTRY, - UNC_KT_POLICING_PROFILE, - UNC_KT_FLOWLIST_ENTRY, - UNC_KT_FLOWLIST - }; + UNC_KT_POLICING_PROFILE, + UNC_KT_FLOWLIST_ENTRY, + UNC_KT_FLOWLIST + }; for (unsigned int i = 0; i < sizeof(phase2_kts)/sizeof(phase2_kts[0]); i++) { const unc_key_type_t phase2_kt(phase2_kts[i]); - if (upll_kt_momgrs_.count(phase2_kt) > 0) { + std::map::iterator momgr_it = + upll_kt_momgrs_.find(phase2_kt); + if (momgr_it != upll_kt_momgrs_.end()) { UPLL_LOG_DEBUG("KT: %u; kt_name: %s", phase2_kt, kt_name_map_[phase2_kt].c_str()); - MoManager *momgr = upll_kt_momgrs_[phase2_kt]; + MoManager *momgr = momgr_it->second; if (momgr == NULL) continue; - urc = momgr->TxUpdateController(phase2_kt, session_id, config_id, - kUpllUcpDelete2, &affected_ctrlr_set_, dbinst, + urc = momgr->TxUpdateController(phase2_kt, + session_id, + config_id, + kUpllUcpDelete2, + &affected_ctrlr_set_, + dbinst, err_ckv); + if (urc == UPLL_RC_SUCCESS) { + urc = ContinueActiveProcess(); + } if (urc != UPLL_RC_SUCCESS) { UPLL_LOG_WARN("Error = %d, KT: %s", urc, kt_name_map_[phase2_kt].c_str()); @@ -179,7 +204,8 @@ upll_rc_t UpllConfigMgr::OnTxStart(uint32_t session_id, uint32_t config_id, } } - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } @@ -189,7 +215,8 @@ upll_rc_t UpllConfigMgr::OnTxStart(uint32_t session_id, uint32_t config_id, upll_rc_t UpllConfigMgr::OnAuditTxStart(const char *ctrlr_id, uint32_t session_id, - uint32_t config_id) { + uint32_t config_id, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; upll_rc_t urc = UPLL_RC_ERR_GENERIC; @@ -201,70 +228,84 @@ upll_rc_t UpllConfigMgr::OnAuditTxStart(const char *ctrlr_id, UPLL_DT_AUDIT, ConfigLock::CFG_READ_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); affected_ctrlr_set_.clear(); - bool ctrlr_affected = false; + KTxCtrlrAffectedState ctrlr_affected = kCtrlrAffectedNoDiff; + audit_ctrlr_affected_state_ = ctrlr_affected; CALL_MOMGRS_REVERSE_ORDER(AuditUpdateController, ctrlr_id, session_id, - config_id, kUpllUcpDelete, &ctrlr_affected, - dbinst); + config_id, kUpllUcpDelete, dbinst, + err_ckv, &ctrlr_affected); if (urc != UPLL_RC_SUCCESS) { - DalClose(dbinst, false, __FUNCTION__); + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); return urc; } CALL_MOMGRS_PREORDER(AuditUpdateController, ctrlr_id, session_id, config_id, - kUpllUcpCreate, &ctrlr_affected, dbinst); + kUpllUcpCreate, dbinst, err_ckv, + &ctrlr_affected); if (urc != UPLL_RC_SUCCESS) { - DalClose(dbinst, false, __FUNCTION__); + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); return urc; } CALL_MOMGRS_PREORDER(AuditUpdateController, ctrlr_id, session_id, config_id, - kUpllUcpUpdate, &ctrlr_affected, dbinst); + kUpllUcpUpdate, dbinst, err_ckv, &ctrlr_affected); if (urc != UPLL_RC_SUCCESS) { - DalClose(dbinst, false, __FUNCTION__); + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); return urc; } unc_key_type_t phase2_kts[] = { UNC_KT_POLICING_PROFILE_ENTRY, - UNC_KT_POLICING_PROFILE, - UNC_KT_FLOWLIST_ENTRY, - UNC_KT_FLOWLIST - }; + UNC_KT_POLICING_PROFILE, + UNC_KT_FLOWLIST_ENTRY, + UNC_KT_FLOWLIST + }; for (unsigned int i = 0; i < sizeof(phase2_kts)/sizeof(phase2_kts[0]); i++) { - const unc_key_type_t phase2_kt(phase2_kts[i]); - if (upll_kt_momgrs_.count(phase2_kt) > 0) { - UPLL_LOG_DEBUG("KT: %u; kt_name: %s", phase2_kt, - kt_name_map_[phase2_kt].c_str()); - MoManager *momgr = upll_kt_momgrs_[phase2_kt]; - if (momgr == NULL) - continue; - urc = momgr->AuditUpdateController(phase2_kt, ctrlr_id, session_id, - config_id, kUpllUcpDelete2, - &ctrlr_affected, dbinst); - if (urc != UPLL_RC_SUCCESS) { - UPLL_LOG_WARN("Error = %d, KT: %s", urc, - kt_name_map_[phase2_kt].c_str()); - break; - } + const unc_key_type_t phase2_kt(phase2_kts[i]); + std::map::iterator momgr_it = + upll_kt_momgrs_.find(phase2_kt); + if (momgr_it != upll_kt_momgrs_.end()) { + UPLL_LOG_DEBUG("KT: %u; kt_name: %s", phase2_kt, + kt_name_map_[phase2_kt].c_str()); + MoManager *momgr = momgr_it->second; + if (momgr == NULL) + continue; + urc = momgr->AuditUpdateController(phase2_kt, ctrlr_id, session_id, + config_id, kUpllUcpDelete2, + dbinst, err_ckv, &ctrlr_affected); + if (urc == UPLL_RC_SUCCESS) { + urc = ContinueActiveProcess(); } + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_WARN("Error = %d, KT: %s", urc, + kt_name_map_[phase2_kt].c_str()); + break; + } + } } - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } if (urc == UPLL_RC_SUCCESS) { - if (ctrlr_affected) { + audit_ctrlr_affected_state_ = ctrlr_affected; + if (ctrlr_affected == kCtrlrAffectedConfigDiff) { audit_mutex_lock_.lock(); affected_ctrlr_set_.insert(audit_ctrlr_id_); audit_mutex_lock_.unlock(); + } else if (ctrlr_affected == kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Audit - only cs diff"); } else { - UPLL_LOG_DEBUG("No change found"); + UPLL_LOG_INFO("No audit diff"); } } @@ -284,11 +325,12 @@ upll_rc_t UpllConfigMgr::OnTxVote( UPLL_DT_CANDIDATE, ConfigLock::CFG_READ_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); CALL_MOMGRS_PREORDER(TxVote, dbinst, err_ckv); - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } @@ -324,11 +366,12 @@ upll_rc_t UpllConfigMgr::OnTxVoteCtrlrStatus( UPLL_DT_CANDIDATE, ConfigLock::CFG_READ_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); CALL_MOMGRS_PREORDER(TxVoteCtrlrStatus, ctrlr_vote_status, dbinst); - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } @@ -350,20 +393,21 @@ upll_rc_t UpllConfigMgr::OnAuditTxVoteCtrlrStatus( UPLL_DT_AUDIT, ConfigLock::CFG_READ_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_WRITE_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); CALL_MOMGRS_PREORDER(AuditVoteCtrlrStatus, ctrlr_vote_status, dbinst); upll_rc_t db_urc; - if (UPLL_RC_SUCCESS != (db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), - __FUNCTION__))) { + if (UPLL_RC_SUCCESS != (db_urc = dbcm_->DalTxClose( + dbinst, (urc == UPLL_RC_SUCCESS)))) { + dbcm_->ReleaseRwConn(dbinst); return ((urc != UPLL_RC_SUCCESS) ? urc : db_urc); } + dbcm_->ReleaseRwConn(dbinst); // Send an alarm if (ctrlr_vote_status->upll_ctrlr_result != UPLL_RC_SUCCESS && - ctrlr_vote_status->upll_ctrlr_result != - UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + ctrlr_vote_status->upll_ctrlr_result != UPLL_RC_ERR_CTR_DISCONNECTED) { upll_rc_t ctrmgr_urc; bool config_invalid = false; if ((ctrmgr_urc = (CtrlrMgr::GetInstance()->IsConfigInvalid( @@ -391,7 +435,7 @@ upll_rc_t UpllConfigMgr::OnTxGlobalCommit( UPLL_FUNC_TRACE; upll_rc_t urc; if (UPLL_RC_SUCCESS != (urc = ValidateCommit(__FUNCTION__))) { - pfc_log_fatal("TxGlobalCommit failed. Urc=%d", urc); + UPLL_LOG_FATAL("TxGlobalCommit failed. Urc=%d", urc); return urc; } @@ -404,7 +448,7 @@ upll_rc_t UpllConfigMgr::OnAuditTxGlobalCommit( UPLL_FUNC_TRACE; upll_rc_t urc; if (UPLL_RC_SUCCESS != (urc = ValidateAudit(__FUNCTION__, ctrlr_id))) { - pfc_log_fatal("AuditTxGlobalCommit failed. Urc=%d", urc); + UPLL_LOG_FATAL("AuditTxGlobalCommit failed. Urc=%d", urc); return urc; } @@ -435,15 +479,14 @@ upll_rc_t UpllConfigMgr::OnTxCommitCtrlrStatus( UPLL_DT_RUNNING, ConfigLock::CFG_WRITE_LOCK); // TODO(a): Why do we need write lock on CANDIDATE? - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); CALL_MOMGRS_PREORDER(TxCopyCandidateToRunning, ctrlr_commit_status, dbinst); if (urc == UPLL_RC_SUCCESS) { unc_key_type_t state_kts[] = { UNC_KT_VLINK, UNC_KT_VBR_IF, - UNC_KT_VRT_IF, - UNC_KT_VBRIDGE, UNC_KT_VROUTER, - UNC_KT_VTN }; + UNC_KT_VRT_IF, UNC_KT_VBRIDGE, + UNC_KT_VROUTER, UNC_KT_VTN }; for (unsigned int i = 0; i < sizeof(state_kts)/sizeof(state_kts[0]); i++) { MoManager *momgr = GetMoManager(state_kts[i]); if (momgr == NULL) @@ -454,10 +497,15 @@ upll_rc_t UpllConfigMgr::OnTxCommitCtrlrStatus( UPLL_LOG_DEBUG("Failed to update status for KT %d", state_kts[i]); break; } + if ((urc = ContinueActiveProcess()) != UPLL_RC_SUCCESS) { + UPLL_LOG_WARN("Error = %d, TxUpdateDtState KT: %d", urc, state_kts[i]); + break; + } } } - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } @@ -465,15 +513,17 @@ upll_rc_t UpllConfigMgr::OnTxCommitCtrlrStatus( if (urc == UPLL_RC_SUCCESS) { candidate_dirty_qc_lock_.lock(); candidate_dirty_qc_ = false; + // Clearing the dirty flags(used for skipping DB Diff operation) if stored + dbinst->ClearDirty(); candidate_dirty_qc_lock_.unlock(); - // Send Config Notifications - ConfigNotifier::SendBufferedNotificationsToUpllUser(); + // Send Config Notifications + ConfigNotifier::SendBufferedNotificationsToUpllUser(); } else { - ConfigNotifier::CancelBufferedNotificationsToUpllUser(); + ConfigNotifier::CancelBufferedNotificationsToUpllUser(); } if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("Committing candidate to running failed. Urc=%d", urc); + UPLL_LOG_FATAL("Committing candidate to running failed. Urc=%d", urc); } return urc; } @@ -492,15 +542,17 @@ upll_rc_t UpllConfigMgr::OnAuditTxCommitCtrlrStatus( UPLL_DT_AUDIT, ConfigLock::CFG_READ_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_WRITE_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); CALL_MOMGRS_PREORDER(AuditCommitCtrlrStatus, ctrlr_commit_status, dbinst); upll_rc_t db_urc; - if (UPLL_RC_SUCCESS != (db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), - __FUNCTION__))) { + if (UPLL_RC_SUCCESS != (db_urc = dbcm_->DalTxClose( + dbinst, (urc == UPLL_RC_SUCCESS)))) { + dbcm_->ReleaseRwConn(dbinst); return ((urc != UPLL_RC_SUCCESS) ? urc : db_urc); } + dbcm_->ReleaseRwConn(dbinst); bool assert_alarm = (ctrlr_commit_status->upll_ctrlr_result == UPLL_RC_SUCCESS) ? false : true; @@ -509,9 +561,8 @@ upll_rc_t UpllConfigMgr::OnAuditTxCommitCtrlrStatus( if ((ctrmgr_urc = (CtrlrMgr::GetInstance()->IsConfigInvalid( ctrlr_commit_status->ctrlr_id.c_str(), &alarm_exists))) != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in IsConfigInvalid(%s). Urc=%d", - ctrlr_commit_status->ctrlr_id.c_str(), - ctrmgr_urc); + UPLL_LOG_INFO("Error in IsConfigInvalid(%s). Urc=%d", + ctrlr_commit_status->ctrlr_id.c_str(), ctrmgr_urc); } else { if (assert_alarm) { UPLL_LOG_ERROR("Audit failed for %s", @@ -533,7 +584,7 @@ upll_rc_t UpllConfigMgr::OnAuditTxCommitCtrlrStatus( } if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("AuditCommitCtrlrStatus failed. Urc=%d", urc); + UPLL_LOG_FATAL("AuditCommitCtrlrStatus failed. Urc=%d", urc); } return urc; @@ -551,14 +602,18 @@ upll_rc_t UpllConfigMgr::OnTxEnd() { UPLL_DT_CANDIDATE, ConfigLock::CFG_WRITE_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_WRITE_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); CALL_MOMGRS_PREORDER(TxEnd, dbinst); - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_FATAL("TxEnd failed. Urc=%d", urc); + } commit_mutex_lock_.lock(); commit_in_progress_ = false; @@ -566,10 +621,6 @@ upll_rc_t UpllConfigMgr::OnTxEnd() { affected_ctrlr_set_.clear(); - if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("TxEnd failed. Urc=%d", urc); - } - return urc; } @@ -592,7 +643,7 @@ upll_rc_t UpllConfigMgr::OnAuditStart(const char *ctrlr_id) { unc_keytype_ctrtype_t ctrlr_type; if (false == CtrlrMgr::GetInstance()->GetCtrlrType( - ctrlr_id, UPLL_DT_RUNNING, &ctrlr_type)) { + ctrlr_id, UPLL_DT_RUNNING, &ctrlr_type)) { UPLL_LOG_INFO("Unknown controller. Cannot do audit for %s ", ctrlr_id); return UPLL_RC_ERR_NO_SUCH_INSTANCE; @@ -609,7 +660,6 @@ upll_rc_t UpllConfigMgr::OnAuditStart(const char *ctrlr_id) { audit_mutex_lock_.unlock(); if (UPLL_RC_SUCCESS != (urc = ValidateAudit(__FUNCTION__, ctrlr_id))) { - UPLL_LOG_INFO("Validate Audit Failed (err=%u)", urc); return urc; } @@ -622,33 +672,65 @@ upll_rc_t UpllConfigMgr::OnAuditStart(const char *ctrlr_id) { return urc; } +// UpllConfigMgr::OnAuditEnd() is called in two scenarios: +// 1. In normal audit operation at the end of Audit process either successful +// audit or failed audit. If updating to contorller failed, OnAuditEnd() is +// locall called. +// 2. During transition from Standby to Active. upll_rc_t UpllConfigMgr::OnAuditEnd(const char *ctrlr_id, bool sby2act_trans) { UPLL_FUNC_TRACE; upll_rc_t urc = UPLL_RC_ERR_GENERIC; if (!sby2act_trans) { if (UPLL_RC_SUCCESS != (urc = ValidateAudit(__FUNCTION__, ctrlr_id))) { - UPLL_LOG_INFO("Validate Audit failed. (urc = %u)", urc); return urc; } + // If only cs status is diffrent in the configuration then the + // Call TxCommitCtrlrStatus to Update the config Status + // During IMPORT->MERGE->COMMIT->AUDIT case, TC jumpt from + // AuditTxStart to AuditEnd sice there is no diff in the + // configurations except cs-status in this case. + // In such case the configuration is not being sent to the controller + // during AUDIT operation + if (audit_ctrlr_affected_state_ == kCtrlrAffectedOnlyCSDiff) { + // Reset the audit controller affected state. Without reset, + // stale value is present during failover + audit_ctrlr_affected_state_ = kCtrlrAffectedNoDiff; + CtrlrCommitStatus ccs(ctrlr_id, UPLL_RC_SUCCESS, UPLL_RC_SUCCESS); + urc = OnAuditTxCommitCtrlrStatus(&ccs); + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_FATAL("Failed to update config status in AuditEnd, Urc=%u", + urc); + return urc; + } + } } + // Reset the audit controller affected state. Without reset, + // stale value is present during failover + audit_ctrlr_affected_state_ = kCtrlrAffectedNoDiff; ScopedConfigLock scfg_lock(cfg_lock_, UPLL_DT_AUDIT, ConfigLock::CFG_WRITE_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); - CALL_MOMGRS_PREORDER(AuditEnd, ctrlr_id, dbinst); + CALL_MOMGRS_REVERSE_ORDER(AuditEnd, ctrlr_id, dbinst); if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("AuditEnd failed. Error:%d", urc); + UPLL_LOG_FATAL("AuditEnd failed. Error:%d", urc); } - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_FATAL("AuditEnd failed. Urc=%d", urc); + return urc; + } + audit_mutex_lock_.lock(); audit_in_progress_ = false; audit_ctrlr_id_ = ""; @@ -656,10 +738,6 @@ upll_rc_t UpllConfigMgr::OnAuditEnd(const char *ctrlr_id, bool sby2act_trans) { affected_ctrlr_set_.clear(); - if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("AuditEnd failed. Urc=%d", urc); - } - return urc; } @@ -684,22 +762,44 @@ upll_rc_t UpllConfigMgr::OnLoadStartup() { UPLL_DT_IMPORT, ConfigLock::CFG_WRITE_LOCK, UPLL_DT_AUDIT, ConfigLock::CFG_WRITE_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); + + CALL_MOMGRS_REVERSE_ORDER(ClearConfiguration, dbinst, UPLL_DT_CANDIDATE); + if (urc != UPLL_RC_SUCCESS) { + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); + UPLL_LOG_FATAL("Loading startup configuration failed. Urc=%d", urc); + return urc; + } + + CALL_MOMGRS_REVERSE_ORDER(ClearConfiguration, dbinst, UPLL_DT_RUNNING); + if (urc != UPLL_RC_SUCCESS) { + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); + UPLL_LOG_FATAL("Loading startup configuration failed. Urc=%d", urc); + return urc; + } CALL_MOMGRS_PREORDER(LoadStartup, dbinst); // Audit and Import tables have been already cleared as part of transitioning // to ACTIVE - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("Loading startup configuration failed. Urc=%d", urc); + UPLL_LOG_FATAL("Loading startup configuration failed. Urc=%d", urc); } + if (urc == UPLL_RC_SUCCESS) { + // SBY->ACT transition, the dirty flags would be lost, So making all the + // tables dirty to perform ful DB Diff on commit/abort operation + dbinst->MakeAllDirty(); + } return urc; } @@ -720,17 +820,28 @@ upll_rc_t UpllConfigMgr::OnSaveRunningConfig(uint32_t session_id) { UPLL_DT_STARTUP, ConfigLock::CFG_WRITE_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); + // Clearing StartUp configuration + CALL_MOMGRS_REVERSE_ORDER(ClearConfiguration, dbinst, UPLL_DT_STARTUP); + if (urc != UPLL_RC_SUCCESS) { + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); + UPLL_LOG_FATAL("SaveRunningConfig failed. Urc=%d", urc); + return urc; + } + + // Copying Running configuration to Startup CALL_MOMGRS_PREORDER(CopyRunningToStartup, dbinst); - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("SaveRunningConfig failed. Urc=%d", urc); + UPLL_LOG_FATAL("SaveRunningConfig failed. Urc=%d", urc); } return urc; @@ -754,25 +865,50 @@ upll_rc_t UpllConfigMgr::OnAbortCandidateConfig(uint32_t session_id) { UPLL_DT_CANDIDATE, ConfigLock::CFG_WRITE_LOCK, UPLL_DT_RUNNING, ConfigLock::CFG_READ_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); + // For TcLibInterface::HandleAuditConfig, session_id and config_id is 0 + // For such transactions, make all the tables dirty to perform full abort + if (session_id == 0) { + dbinst->MakeAllDirty(); + } - CALL_MOMGRS_PREORDER(CopyRunningToCandidate, dbinst); + CALL_MOMGRS_REVERSE_ORDER(CopyRunningToCandidate, dbinst, UNC_OP_DELETE); + if (urc != UPLL_RC_SUCCESS) { + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); + UPLL_LOG_FATAL("Abort candidate failed. Urc=%d", urc); + return urc; + } - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + CALL_MOMGRS_PREORDER(CopyRunningToCandidate, dbinst, UNC_OP_CREATE); + if (urc != UPLL_RC_SUCCESS) { + dbcm_->DalTxClose(dbinst, false); + dbcm_->ReleaseRwConn(dbinst); + UPLL_LOG_FATAL("Abort candidate failed. Urc=%d", urc); + return urc; + } + + CALL_MOMGRS_PREORDER(CopyRunningToCandidate, dbinst, UNC_OP_UPDATE); + + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + // Release DB Connection after ClearDirty if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_FATAL("Abort candidate failed. Urc=%d", urc); + } + if (urc == UPLL_RC_SUCCESS) { candidate_dirty_qc_lock_.lock(); candidate_dirty_qc_ = false; + // Clearing the dirty flags(used for skipping DB Diff operation) if stored + dbinst->ClearDirty(); candidate_dirty_qc_lock_.unlock(); } - if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("Abort candidate failed. Urc=%d", urc); - } - + dbcm_->ReleaseRwConn(dbinst); return urc; } @@ -792,17 +928,18 @@ upll_rc_t UpllConfigMgr::OnClearStartupConfig(uint32_t session_id) { ScopedConfigLock scfg_lock(cfg_lock_, UPLL_DT_STARTUP, ConfigLock::CFG_WRITE_LOCK); - DalOdbcMgr *dbinst = &config_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); - CALL_MOMGRS_PREORDER(ClearStartup, dbinst); + CALL_MOMGRS_REVERSE_ORDER(ClearStartup, dbinst); - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } if (urc != UPLL_RC_SUCCESS) { - pfc_log_fatal("ClearStartupConfig failed. Urc=%d", urc); + UPLL_LOG_FATAL("ClearStartupConfig failed. Urc=%d", urc); } return urc; @@ -832,15 +969,21 @@ upll_rc_t UpllConfigMgr::ClearImport(uint32_t session_id, uint32_t config_id, ScopedConfigLock scfg_lock(cfg_lock_, UPLL_DT_IMPORT, ConfigLock::CFG_WRITE_LOCK); - DalOdbcMgr *dbinst = &import_rw_dom_; + DalOdbcMgr *dbinst = dbcm_->GetConfigRwConn(); - CALL_MOMGRS_PREORDER(ImportClear, import_ctrlr_id_.c_str(), dbinst); + CALL_MOMGRS_REVERSE_ORDER(ImportClear, import_ctrlr_id_.c_str(), dbinst); - upll_rc_t db_urc = DalClose(dbinst, (urc == UPLL_RC_SUCCESS), __FUNCTION__); + upll_rc_t db_urc = dbcm_->DalTxClose(dbinst, (urc == UPLL_RC_SUCCESS)); + dbcm_->ReleaseRwConn(dbinst); if (urc == UPLL_RC_SUCCESS) { urc = db_urc; } + if (urc != UPLL_RC_SUCCESS) { + UPLL_LOG_FATAL("ClearImportConfig failed. Urc=%d", urc); + return urc; + } + import_in_progress_ = false; import_ctrlr_id_ = ""; diff --git a/coordinator/modules/upll/upll.cfdef b/coordinator/modules/upll/upll.cfdef index c9179063..99618ff1 100644 --- a/coordinator/modules/upll/upll.cfdef +++ b/coordinator/modules/upll/upll.cfdef @@ -1,5 +1,5 @@ % -% Copyright (c) 2012-2013 NEC Corporation +% Copyright (c) 2012-2014 NEC Corporation % All rights reserved. % % This program and the accompanying materials are made available under the @@ -8,10 +8,19 @@ % %% -%% Configuration file format for lgcsrv.conf. +%% Configuration file format for upll.conf. %% % definitions. defblock no_definitions { no_definition = UINT32; } + +defblock vtn_dataflow { + upll_max_dataflowtraversal = UINT32; +} + +% DB Read Connections Related Value +defblock db_conn { + db_conn_ro_limit = UINT32; +} diff --git a/coordinator/modules/upll/upll.conf b/coordinator/modules/upll/upll.conf index 00b19e0c..467c8a37 100644 --- a/coordinator/modules/upll/upll.conf +++ b/coordinator/modules/upll/upll.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -8,6 +8,15 @@ # ## -## Configuration file for lgcsrv module. +## Configuration file for upll module. ## +vtn_dataflow { + + upll_max_dataflowtraversal = 1000; +} + +db_conn { +# Max number of DB read-only connections + db_conn_ro_limit = 64; +} diff --git a/coordinator/modules/upll/upll.dep b/coordinator/modules/upll/upll.dep index 12d029a6..7699db3d 100644 --- a/coordinator/modules/upll/upll.dep +++ b/coordinator/modules/upll/upll.dep @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -12,3 +12,4 @@ dal tclib capa alarm +dataflow diff --git a/coordinator/modules/upll/upll_util.hh b/coordinator/modules/upll/upll_util.hh index c00110af..3e167773 100644 --- a/coordinator/modules/upll/upll_util.hh +++ b/coordinator/modules/upll/upll_util.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -11,6 +11,23 @@ #define UPLL_UPLL_UTIL_HH_ #include +#include "cxx/pfcxx/synch.hh" +#include "uncxx/upll_log.hh" + +extern bool fatal_done; +extern pfc::core::Mutex fatal_mutex_lock; + +#define UPLL_LOG_FATAL(fmt, ...) do { \ + fatal_mutex_lock.lock(); \ + if (!fatal_done) { \ + UPLL_LOG(fatal, fmt , ##__VA_ARGS__); \ + fatal_done = true; \ + } else { \ + UPLL_LOG(info, fmt , ##__VA_ARGS__); \ + } \ + fatal_mutex_lock.unlock(); \ +} while (0); + namespace unc { namespace upll { diff --git a/coordinator/modules/upll/upll_validation.hh b/coordinator/modules/upll/upll_validation.hh index df15251b..cff91566 100644 --- a/coordinator/modules/upll/upll_validation.hh +++ b/coordinator/modules/upll/upll_validation.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -33,140 +33,140 @@ namespace kt_momgr { (dt_type == UPLL_DT_STATE) -// Min and Max values for validation + // Min and Max values for validation -const uint8_t kMinLenCtrlrId = 1; -const uint8_t kMaxLenCtrlrId = 31; + const uint8_t kMinLenCtrlrId = 1; + const uint8_t kMaxLenCtrlrId = 31; -const uint8_t kMinLenDomainId = 1; -const uint8_t kMaxLenDomainId = 31; -static const char* kDefaultDomainId = "(DEFAULT)"; + const uint8_t kMinLenDomainId = 1; + const uint8_t kMaxLenDomainId = 31; + static const char* kDefaultDomainId = "(DEFAULT)"; -const uint8_t kMinLenVtnName = 1; -const uint8_t kMaxLenVtnName = 31; + const uint8_t kMinLenVtnName = 1; + const uint8_t kMaxLenVtnName = 31; -const uint8_t kMinLenVlinkName = 1; -const uint8_t kMaxLenVlinkName = 31; + const uint8_t kMinLenVlinkName = 1; + const uint8_t kMaxLenVlinkName = 31; -const uint8_t kMinLenVnodeName = 1; -const uint8_t kMaxLenVnodeName = 31; + const uint8_t kMinLenVnodeName = 1; + const uint8_t kMaxLenVnodeName = 31; -const uint8_t kMinLenInterfaceName = 1; -const uint8_t kMaxLenInterfaceName = 31; + const uint8_t kMinLenInterfaceName = 1; + const uint8_t kMaxLenInterfaceName = 31; -const uint8_t kMinLenDescription = 1; -const uint8_t kMaxLenDescription = 127; + const uint8_t kMinLenDescription = 1; + const uint8_t kMaxLenDescription = 127; -const uint8_t kMinLenSwitchId = 1; -const uint8_t kMaxLenSwitchId = 255; + const uint8_t kMinLenSwitchId = 1; + const uint8_t kMaxLenSwitchId = 255; -const uint16_t kMinLenLogicalPortId = 1; -const uint16_t kMaxLenLogicalPortId = 319; + const uint16_t kMinLenLogicalPortId = 1; + const uint16_t kMaxLenLogicalPortId = 319; -const uint16_t kMinVlanId = 1; -const uint16_t kMaxVlanId = 4095; + const uint16_t kMinVlanId = 1; + const uint16_t kMaxVlanId = 4095; -const uint8_t kMinIpRoutePrefix = 0; -const uint8_t kMaxIpRoutePrefix = 32; + const uint8_t kMinIpRoutePrefix = 0; + const uint8_t kMaxIpRoutePrefix = 32; -const uint8_t kMinVnodeIpv4Prefix = 1; -const uint8_t kMaxVnodeIpv4Prefix = 30; + const uint8_t kMinVnodeIpv4Prefix = 1; + const uint8_t kMaxVnodeIpv4Prefix = 30; -const uint8_t kMinIpv4Prefix = 1; -const uint8_t kMaxIpv4Prefix = 32; + const uint8_t kMinIpv4Prefix = 1; + const uint8_t kMaxIpv4Prefix = 32; -const uint8_t kMinIpv6Prefix = 1; -const uint8_t kMaxIpv6Prefix = 128; + const uint8_t kMinIpv6Prefix = 1; + const uint8_t kMaxIpv6Prefix = 128; -const uint16_t kMinPingPacketLen = 1; -const uint16_t kMaxPingPacketLen = 65467; + const uint16_t kMinPingPacketLen = 1; + const uint16_t kMaxPingPacketLen = 65467; -const uint32_t kMinPingCount = 1; -const uint32_t kMaxPingCount = 655350; + const uint32_t kMinPingCount = 1; + const uint32_t kMaxPingCount = 655350; -const uint8_t kMinPingInterval = 1; -const uint8_t kMaxPingInterval = 60; + const uint8_t kMinPingInterval = 1; + const uint8_t kMaxPingInterval = 60; -const uint8_t kMinPingTimeout = 1; -const uint8_t kMaxPingTimeout = 60; + const uint8_t kMinPingTimeout = 1; + const uint8_t kMaxPingTimeout = 60; -const uint8_t kMinLenPortName = 1; -const uint8_t kMaxLenPortName = 32; + const uint8_t kMinLenPortName = 1; + const uint8_t kMaxLenPortName = 32; -const uint64_t kMinStationId = 1; -const uint64_t kMaxStationId = 524287; + const uint64_t kMinStationId = 1; + const uint64_t kMaxStationId = 524287; -const uint32_t kMinIpAddressCount = 1; -const uint32_t kMaxIpAddressCount = 0xFFFFFFFF; + const uint32_t kMinIpAddressCount = 1; + const uint32_t kMaxIpAddressCount = 0xFFFFFFFF; -const uint16_t kMinLenGroupMetric = 1; -const uint16_t kMaxLenGroupMetric = 65535; + const uint16_t kMinLenGroupMetric = 1; + const uint16_t kMaxLenGroupMetric = 65535; -const uint8_t kMinLenBoundaryName = 1; -const uint8_t kMaxLenBoundaryName = 31; + const uint8_t kMinLenBoundaryName = 1; + const uint8_t kMaxLenBoundaryName = 31; -const uint8_t kMinLenNwmName = 1; -const uint8_t kMaxLenNwmName = 31; + const uint8_t kMinLenNwmName = 1; + const uint8_t kMaxLenNwmName = 31; -const uint16_t kMinNWMHHealthInterval = 5; -const uint16_t kMaxNWMHHealthInterval = 600; + const uint16_t kMinNWMHHealthInterval = 5; + const uint16_t kMaxNWMHHealthInterval = 600; -const uint16_t kMinNWMHRecoveryInterval = 5; -const uint16_t kMaxNWMHRecoveryInterval = 600; + const uint16_t kMinNWMHRecoveryInterval = 5; + const uint16_t kMaxNWMHRecoveryInterval = 600; -const uint8_t kMinNWMHFailureCount = 1; -const uint8_t kMaxNWMHFailureCount = 10; + const uint8_t kMinNWMHFailureCount = 1; + const uint8_t kMaxNWMHFailureCount = 10; -const uint8_t kMinNWMHRecoveryCount = 1; -const uint8_t kMaxNWMHRecoveryCount = 10; + const uint8_t kMinNWMHRecoveryCount = 1; + const uint8_t kMaxNWMHRecoveryCount = 10; -const uint8_t kMinNWMHWaitTime = 1; -const uint8_t kMaxNWMHWaitTime = 60; + const uint8_t kMinNWMHWaitTime = 1; + const uint8_t kMaxNWMHWaitTime = 60; -/*KT_FLOWLIST, KT_FLOWLIST_ENTRY*/ -const uint8_t kMinLenFlowListName = 1; -const uint8_t kMaxLenFlowListName = 32; + /*KT_FLOWLIST, KT_FLOWLIST_ENTRY*/ + const uint8_t kMinLenFlowListName = 1; + const uint8_t kMaxLenFlowListName = 32; -const uint16_t kMinEthType = 0x0000; -const uint16_t kMaxEthType = 0xffff; + const uint16_t kMinEthType = 0x0000; + const uint16_t kMaxEthType = 0xffff; -const uint8_t kMinIPDscp = 0; -const uint8_t kMaxIPDscp = 63; + const uint8_t kMinIPDscp = 0; + const uint8_t kMaxIPDscp = 63; -const uint8_t kMinVlanPriority = 0; -const uint8_t kMaxVlanPriority = 7; + const uint8_t kMinVlanPriority = 0; + const uint8_t kMaxVlanPriority = 7; -const uint8_t kMinIPProto = 1; -const uint8_t kMaxIPProto = 255; + const uint8_t kMinIPProto = 1; + const uint8_t kMaxIPProto = 255; -const uint16_t kMinL4Port = 0; -const uint16_t kMaxL4Port = 65535; + const uint16_t kMinL4Port = 0; + const uint16_t kMaxL4Port = 65535; -const uint8_t kMinIcmpValue = 0; -const uint8_t kMaxIcmpValue = 255; + const uint8_t kMinIcmpValue = 0; + const uint8_t kMaxIcmpValue = 255; -/*KT_POLICING_PROFILE, KT_POLICING_PROFILE_ENTRY */ -const uint8_t kMinLenPolicingProfileName = 1; -const uint8_t kMaxLenPolicingProfileName = 32; + /*KT_POLICING_PROFILE, KT_POLICING_PROFILE_ENTRY */ + const uint8_t kMinLenPolicingProfileName = 1; + const uint8_t kMaxLenPolicingProfileName = 32; -const uint8_t kMinPolicingProfileSeqNum = 1; -const uint8_t kMaxPolicingProfileSeqNum = 255; + const uint8_t kMinPolicingProfileSeqNum = 1; + const uint8_t kMaxPolicingProfileSeqNum = 255; -const uint32_t kMinRateType = 0; -const uint32_t kMaxRateType = 4294967295u; + const uint32_t kMinRateType = 0; + const uint32_t kMaxRateType = 4294967295u; -const uint32_t kMinBurstSize = 0; -const uint32_t kMaxBurstSize = 4294967295u; + const uint32_t kMinBurstSize = 0; + const uint32_t kMaxBurstSize = 4294967295u; -const uint8_t kMinPrecedence = 1; -const uint8_t kMaxPrecedence = 3; + const uint8_t kMinPrecedence = 1; + const uint8_t kMaxPrecedence = 3; -const uint16_t kMinFlowFilterSeqNum = 1; -const uint16_t kMaxFlowFilterSeqNum = 65535; + const uint16_t kMinFlowFilterSeqNum = 1; + const uint16_t kMaxFlowFilterSeqNum = 65535; -// template function to validate the boundary conditions for the input value + // template function to validate the boundary conditions for the input value -template + template bool ValidateNumericRange(const ValType &num_val, const ValType &min_value, const ValType &max_value, const bool &include_min, const bool &include_max) { @@ -246,11 +246,11 @@ inline bool ValidateDefaultStr(uint8_t *str, return false; } else if (!ValidateStringRange(reinterpret_cast(str), min, max)) { UPLL_LOG_DEBUG(" Invalid string length %d", - (unsigned int) strlen(reinterpret_cast(str))); + (unsigned int) strlen(reinterpret_cast(str))); return false; } else if ((str[0] == '(') && - (0 == strncmp(reinterpret_cast(str), - kDefaultDomainId, strlen(kDefaultDomainId)))) { + (0 == strncmp(reinterpret_cast(str), + kDefaultDomainId, strlen(kDefaultDomainId)))) { return true; } else if (!ValidateStrId(reinterpret_cast(str))) { UPLL_LOG_DEBUG("Invalid string format %s", str); @@ -305,7 +305,7 @@ inline bool ValidateDesc(uint8_t *str, unsigned int min, unsigned int max) { if (!(ret_val = ValidateStringRange(reinterpret_cast(str), min, max))) { UPLL_LOG_DEBUG("Invalid string length %d", - (unsigned int) strlen(reinterpret_cast(str))); + (unsigned int) strlen(reinterpret_cast(str))); } else { if (!(ret_val = ValidateStrPrint(reinterpret_cast(str)))) { UPLL_LOG_DEBUG("Invalid string format %s", str); @@ -320,7 +320,7 @@ inline bool ValidateDesc(uint8_t *str, unsigned int min, unsigned int max) { // wrapper function for validating logical port id inline bool ValidateLogicalPortId(char *str, unsigned int min, - unsigned int max) { + unsigned int max) { UPLL_LOG_DEBUG("Inside ValidateLogicalPortId"); if (NULL == str) { @@ -335,15 +335,15 @@ inline bool ValidateLogicalPortId(char *str, unsigned int min, return false; } -/* - while(*str) { - if (!(isalnum(*str) || ('-' == *str) || ('.' == *str) || (':' == *str))) { - UPLL_LOG_DEBUG("UPLL_RC_ERR_CFG_SYNTAX %c ",*str); - return UPLL_RC_ERR_CFG_SYNTAX; - } - str++; - } -*/ + /* + while(*str) { + if (!(isalnum(*str) || ('-' == *str) || ('.' == *str) || (':' == *str))) { + UPLL_LOG_DEBUG("UPLL_RC_ERR_CFG_SYNTAX %c ",*str); + return UPLL_RC_ERR_CFG_SYNTAX; + } + str++; + } + */ return true; } @@ -354,16 +354,16 @@ inline bool ValidateMacAddr(uint8_t *mac_addr) { if ((memcmp(mac_addr, temp_mac1, 6) == 0) || (memcmp(mac_addr, temp_mac2, 6) == 0)) { UPLL_LOG_DEBUG("Invalid Mac address: %x %x %x %x %x %x", mac_addr[0], - mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], - mac_addr[5]); + mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], + mac_addr[5]); return false; } /* Multicast MAC address check*/ if (mac_addr[0] == 0x01 && mac_addr[1] == 0x00 && mac_addr[2] == 0x5e) { if ((mac_addr[3] & 0x80) == 0) { UPLL_LOG_DEBUG("Invalid Mac address:%x %x %x %x %x %x", mac_addr[0], - mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], - mac_addr[5]); + mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], + mac_addr[5]); return false; } } @@ -400,8 +400,8 @@ inline bool chk_ip_mask_allow(uint32_t mask) { h_mask = ntohl(mask); if (h_mask == 0x00000000 - || h_mask == 0xfffffffe - || h_mask == 0xffffffff) { + || h_mask == 0xfffffffe + || h_mask == 0xffffffff) { return false; } return true; diff --git a/coordinator/modules/upll/vbr_flowfilter_entry_momgr.cc b/coordinator/modules/upll/vbr_flowfilter_entry_momgr.cc index 374fca5a..539ec4f8 100644 --- a/coordinator/modules/upll/vbr_flowfilter_entry_momgr.cc +++ b/coordinator/modules/upll/vbr_flowfilter_entry_momgr.cc @@ -1,7 +1,7 @@ /* * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -138,34 +138,36 @@ BindInfo VbrFlowFilterEntryMoMgr::vbr_flowfilterentry_bind_info[] = { BindInfo VbrFlowFilterEntryMoMgr::vbr_flowfilter_entry_maintbl_bind_info[] = { { uudst::vbr_flowfilter_entry::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vbr_flowfilter_entry_t, flowfilter_key.vbr_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, + key_vbr_flowfilter_entry_t, flowfilter_key.vbr_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, { uudst::vbr_flowfilter_entry::kDbiVbrName, CFG_MATCH_KEY, offsetof( - key_vbr_flowfilter_entry_t, flowfilter_key.vbr_key.vbridge_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, + key_vbr_flowfilter_entry_t, flowfilter_key.vbr_key.vbridge_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, { uudst::vbr_flowfilter_entry::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, { uudst::vbr_flowfilter_entry::kDbiVbrName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, { uudst::vbr_flowfilter_entry::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } + key_user_data_t, flags), + uud::kDalUint8, 1 } }; VbrFlowFilterEntryMoMgr::VbrFlowFilterEntryMoMgr() : MoMgrImpl() { UPLL_FUNC_TRACE; // Rename and ctrlr tables not required for this KT // setting max tables toto 1 - cur_instance_count = 0; ntable = (MAX_MOMGR_TBLS); table = new Table *[ntable]; // For Main Table - table[MAINTBL] = new Table(uudst::kDbiVbrFlowFilterEntryTbl, - UNC_KT_VBR_FLOWFILTER_ENTRY, vbr_flowfilterentry_bind_info, - IpctSt::kIpcStKeyVbrFlowfilterEntry, IpctSt::kIpcStValFlowfilterEntry, + table[MAINTBL] = new Table( + uudst::kDbiVbrFlowFilterEntryTbl, + UNC_KT_VBR_FLOWFILTER_ENTRY, + vbr_flowfilterentry_bind_info, + IpctSt::kIpcStKeyVbrFlowfilterEntry, + IpctSt::kIpcStValFlowfilterEntry, uudst::vbr_flowfilter_entry::kDbiVbrFlowFilterEntryNumCols); table[RENAMETBL] = NULL; @@ -177,14 +179,14 @@ VbrFlowFilterEntryMoMgr::VbrFlowFilterEntryMoMgr() : MoMgrImpl() { } bool VbrFlowFilterEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl ) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl ) { UPLL_FUNC_TRACE; /* Main Table only update */ nattr = sizeof(vbr_flowfilter_entry_maintbl_bind_info)/ - sizeof(vbr_flowfilter_entry_maintbl_bind_info[0]); + sizeof(vbr_flowfilter_entry_maintbl_bind_info[0]); binfo = vbr_flowfilter_entry_maintbl_bind_info; UPLL_LOG_DEBUG("Successful Completeion"); @@ -237,9 +239,9 @@ bool VbrFlowFilterEntryMoMgr::IsValidKey(void *key, uint64_t index) { ff_key->flowfilter_key.direction = 0; return false; } else if (!ValidateNumericRange(ff_key->flowfilter_key.direction, - (uint8_t) UPLL_FLOWFILTER_DIR_IN, - (uint8_t) UPLL_FLOWFILTER_DIR_OUT, - true, true)) { + (uint8_t) UPLL_FLOWFILTER_DIR_IN, + (uint8_t) UPLL_FLOWFILTER_DIR_OUT, + true, true)) { UPLL_LOG_DEBUG("direction syntax validation failed :"); return UPLL_RC_ERR_CFG_SYNTAX; } @@ -272,31 +274,32 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if ((req->option1 == UNC_OPT1_DETAIL) && + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -327,7 +330,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, } upll_rc_t VbrFlowFilterEntryMoMgr::ValidateValFlowfilterEntry( - IpcReqRespHeader *req, ConfigKeyVal *key, DalDmlIntf *dmi) { + IpcReqRespHeader *req, ConfigKeyVal *key) { UPLL_FUNC_TRACE; if (!key->get_cfg_val()) { @@ -356,79 +359,11 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateValFlowfilterEntry( UPLL_LOG_DEBUG("val_flowfilter_entry structure is null"); return UPLL_RC_ERR_BAD_REQUEST; } - - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - bool db_action_valid = false; - bool db_action_redirect = false; - - if ((val_flowfilter_entry->valid[UPLL_IDX_ACTION_FFE] - == UNC_VF_INVALID) && (req->operation == UNC_OP_UPDATE)) { - /** Read key struct from ConfigKeyVal argument*/ - key_vbr_flowfilter_entry_t *key_vbr_flowfilter_entry = - static_cast(key->get_key()); - - /** Check whether Action configured or not from DB */ - ConfigKeyVal *okey = NULL; - - result_code = GetChildConfigKey(okey, NULL); - - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("okey memory allocation failed- %d", result_code); - return result_code; - } - - key_vbr_flowfilter_entry_t *vbr_ffe_key = - reinterpret_cast(okey->get_key()); - - /* copy key structure into okey key struct */ - uuu::upll_strncpy( - vbr_ffe_key->flowfilter_key.vbr_key.vtn_key.vtn_name, - key_vbr_flowfilter_entry->flowfilter_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); - - uuu::upll_strncpy( - vbr_ffe_key->flowfilter_key.vbr_key.vbridge_name, - key_vbr_flowfilter_entry->flowfilter_key.vbr_key.vbridge_name, - (kMaxLenVnodeName+1)); - - vbr_ffe_key->flowfilter_key.direction = - key_vbr_flowfilter_entry->flowfilter_key.direction; - vbr_ffe_key->sequence_num = key_vbr_flowfilter_entry->sequence_num; - - /* Check the action field configured in VBR_FLOWFILTER_ENTRY table*/ - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); - - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB is failed for VBR_FLOWFILTER_ENTRY"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - - /* check the action value from the DB data */ - val_flowfilter_entry_t *val_ffe = - reinterpret_cast( - okey->get_cfg_val()->get_val()); - - if (val_ffe->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { - db_action_valid = true; - if (val_ffe->action == UPLL_FLOWFILTER_ACT_REDIRECT) { - db_action_redirect = true; - } - } - - delete okey; - okey = NULL; - } - return ValidateFlowfilterEntryValue(val_flowfilter_entry, req->operation, - db_action_valid, db_action_redirect); + return ValidateFlowfilterEntryValue(val_flowfilter_entry, req->operation); } upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( - val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation, - bool action_valid, bool action_redirect) { + val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; @@ -437,18 +372,18 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( if (val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { rt_code = ValidateKey(reinterpret_cast - (val_flowfilter_entry->flowlist_name), - kMinLenFlowListName, - kMaxLenFlowListName); + (val_flowfilter_entry->flowlist_name), + kMinLenFlowListName, + kMaxLenFlowListName); if (rt_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("FlowList name syntax check failed." - "Received Flowlist name - %s", - val_flowfilter_entry->flowlist_name); + "Received Flowlist name - %s", + val_flowfilter_entry->flowlist_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE) - && (val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset flowlist name"); memset(val_flowfilter_entry->flowlist_name, 0, sizeof(val_flowfilter_entry->flowlist_name)); @@ -457,8 +392,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( /** validates action and checks whether REDIRECT & modify mac configured only * when action == REDIRECT */ if ((rt_code = ValidateFlowfilterEntryAction(val_flowfilter_entry, - operation, action_valid, - action_redirect)) + operation)) != UPLL_RC_SUCCESS) { return rt_code; } @@ -490,18 +424,18 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( /** validate nwm_name */ if (val_flowfilter_entry->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID) { rt_code = ValidateKey(reinterpret_cast - (val_flowfilter_entry->nwm_name), - kMinLenNwmName, - kMaxLenNwmName); + (val_flowfilter_entry->nwm_name), + kMinLenNwmName, + kMaxLenNwmName); if (rt_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Nwm name syntax check failed." - "Received Nwm name - %s", - val_flowfilter_entry->nwm_name); + "Received Nwm name - %s", + val_flowfilter_entry->nwm_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE) - && (val_flowfilter_entry->valid[UPLL_IDX_NWM_NAME_FFE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_flowfilter_entry->valid[UPLL_IDX_NWM_NAME_FFE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset Network monitor name"); memset(val_flowfilter_entry->nwm_name, 0, sizeof(val_flowfilter_entry->nwm_name)); @@ -512,13 +446,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( action is not exists in DB also then send error */ if (val_flowfilter_entry->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID) { if (!ValidateNumericRange(val_flowfilter_entry->dscp, kMinIPDscp, - kMaxIPDscp, true, true)) { + kMaxIPDscp, true, true)) { UPLL_LOG_DEBUG("DSCP syntax validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE) - && (val_flowfilter_entry->valid[UPLL_IDX_DSCP_FFE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_flowfilter_entry->valid[UPLL_IDX_DSCP_FFE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset DSCP"); val_flowfilter_entry->dscp = 0; } @@ -529,12 +463,12 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( kMinVlanPriority, kMaxVlanPriority, true, true)) { UPLL_LOG_DEBUG("Priority syntax validation failed :Err Code - %d", - rt_code); + rt_code); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE) - && (val_flowfilter_entry->valid[UPLL_IDX_PRIORITY_FFE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_flowfilter_entry->valid[UPLL_IDX_PRIORITY_FFE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset Priority"); val_flowfilter_entry->priority = 0; } @@ -550,7 +484,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateVbrFlowfilterEntryKey( /** validate key_vbr_flowfilter */ /** validate vbr_key */ VbrMoMgr *mgrvbr = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VBRIDGE))); + const_cast(GetMoManager(UNC_KT_VBRIDGE))); if (NULL == mgrvbr) { UPLL_LOG_DEBUG("unable to get VbrMoMgr object to validate key_vbridge"); @@ -561,8 +495,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateVbrFlowfilterEntryKey( &(key_vbr_flowfilter_entry->flowfilter_key.vbr_key)); if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" Vbr name syntax validation failed :" - "Err Code - %d", - rt_code); + "Err Code - %d", + rt_code); return rt_code; } @@ -576,13 +510,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateVbrFlowfilterEntryKey( if ((operation != UNC_OP_READ_SIBLING_COUNT) && (operation != UNC_OP_READ_SIBLING_BEGIN)) { - /** Validate Seq_num */ - if (!ValidateNumericRange(key_vbr_flowfilter_entry->sequence_num, - kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, true, - true)) { - UPLL_LOG_DEBUG("sequence number syntax validation failed"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + /** Validate Seq_num */ + if (!ValidateNumericRange(key_vbr_flowfilter_entry->sequence_num, + kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, true, + true)) { + UPLL_LOG_DEBUG("sequence number syntax validation failed"); + return UPLL_RC_ERR_CFG_SYNTAX; + } } else { key_vbr_flowfilter_entry->sequence_num = 0; } @@ -594,17 +528,17 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateRedirectField( upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; if ((val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] - == UNC_VF_VALID) && - (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] - != UNC_VF_VALID)) { - UPLL_LOG_DEBUG("redirect_node: interface is invalid"); - return UPLL_RC_ERR_CFG_SYNTAX; + == UNC_VF_VALID) && + (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] + != UNC_VF_VALID)) { + UPLL_LOG_DEBUG("redirect_node: interface is invalid"); + return UPLL_RC_ERR_CFG_SYNTAX; } else if ((val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] - != UNC_VF_VALID) && - (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] - == UNC_VF_VALID)) { - UPLL_LOG_DEBUG("redirect_node: node is invalid"); - return UPLL_RC_ERR_CFG_SYNTAX; + != UNC_VF_VALID) && + (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] + == UNC_VF_VALID)) { + UPLL_LOG_DEBUG("redirect_node: node is invalid"); + return UPLL_RC_ERR_CFG_SYNTAX; } /** validate redirect_node */ if (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { @@ -614,12 +548,12 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateRedirectField( if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG("redirect_node syntax validation failed :Err Code - %d", - rt_code); + rt_code); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE) - && (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset redirect_node"); memset(val_flowfilter_entry->redirect_node, 0, @@ -634,12 +568,12 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateRedirectField( if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG("redirect_port syntax validation failed :Err Code - %d", - rt_code); + rt_code); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((operation == UNC_OP_UPDATE) - && (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset redirect_port"); memset(val_flowfilter_entry->redirect_port, 0, @@ -649,11 +583,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateRedirectField( } upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryAction( - val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation, - bool db_up_action_valid, bool action_redirect) { + val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation) { UPLL_FUNC_TRACE; -#if 0 // action_is_redirect is set, but not used +#if 0 // action_is_redirect is set, but not used bool action_is_redirect = false; #endif /** validate action */ @@ -667,25 +600,25 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryAction( } } else if ((operation == UNC_OP_UPDATE) - && (val_flowfilter_entry->valid[UPLL_IDX_ACTION_FFE] - == UNC_VF_VALID_NO_VALUE)) { + && (val_flowfilter_entry->valid[UPLL_IDX_ACTION_FFE] + == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("Reset Action "); val_flowfilter_entry->action = 0; } -#if 0 // action_is_redirect is set, but not used +#if 0 // action_is_redirect is set, but not used /** At the time of UPDATE if action is not set, then check DB, * db_up_action_valid flag is true when operation is update and valid flag for * action is INVALID, action_redirect is true when action is configured as * REDIRECT in DB */ if (val_flowfilter_entry->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { - if (val_flowfilter_entry->action == UPLL_FLOWFILTER_ACT_REDIRECT) { - action_is_redirect = true; - } + if (val_flowfilter_entry->action == UPLL_FLOWFILTER_ACT_REDIRECT) { + action_is_redirect = true; + } } else if (db_up_action_valid) { - if (action_redirect) { - action_is_redirect = true; - } + if (action_redirect) { + action_is_redirect = true; + } } #endif return UPLL_RC_SUCCESS; @@ -704,15 +637,15 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ctrlr_name) ctrlr_name = static_cast(ikey->get_user_data()); - + if (NULL == ctrlr_name) { UPLL_LOG_DEBUG("ctrlr_name is NULL"); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("ctrlr_name : (%s)" - "operation : (%d)", - ctrlr_name, req->operation); + "operation : (%d)", + ctrlr_name, req->operation); bool ret_code = false; uint32_t instance_count = 0; @@ -721,33 +654,29 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { - UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", req->operation); - + UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", + req->operation); + ret_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &instance_count, &max_attrs, &attrs); - if (ret_code && cur_instance_count >= instance_count && - cur_instance_count !=0 && instance_count != 0) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &instance_count, &max_attrs, &attrs); break; } case UNC_OP_UPDATE: { ret_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } default: { if (req->datatype == UPLL_DT_STATE) { - UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", + req->operation); ret_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), &max_attrs, &attrs); } else { - UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", + req->operation); ret_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } break; } @@ -755,34 +684,35 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ret_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s)", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_flowfilter_entry_t *val_flowfilter_entry = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); if (val_flowfilter_entry) { if (max_attrs > 0) { return ValFlowFilterEntryAttributeSupportCheck(val_flowfilter_entry, - attrs); + attrs); } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR ; + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - } + } return UPLL_RC_SUCCESS; } upll_rc_t VbrFlowFilterEntryMoMgr::ValFlowFilterEntryAttributeSupportCheck( - val_flowfilter_entry_t *val_flowfilter_entry, const uint8_t* attrs) { + val_flowfilter_entry_t *val_flowfilter_entry, const uint8_t* attrs) { UPLL_FUNC_TRACE; if (val_flowfilter_entry != NULL) { if ((val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == - UNC_VF_VALID) + UNC_VF_VALID) ||(val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_flowfilter_entry::kCapFlowlistName] == 0) { val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_NOT_SUPPORTED; @@ -830,20 +760,20 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValFlowFilterEntryAttributeSupportCheck( } if ((val_flowfilter_entry->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_flowfilter_entry->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_flowfilter_entry::kCapModifyDstMac] == 0) { val_flowfilter_entry->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] = UNC_VF_NOT_SUPPORTED; - UPLL_LOG_DEBUG("modify_dst attr is not supported by ctrlr"); + UPLL_LOG_DEBUG("modify_dst attr is not supported by ctrlr"); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } if ((val_flowfilter_entry->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_flowfilter_entry->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_flowfilter_entry::kCapModifySrcMac] == 0) { @@ -890,27 +820,28 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValFlowFilterEntryAttributeSupportCheck( } } } else { - UPLL_LOG_DEBUG("value struct is NULL in " - "ValFlowFilterEntryAttributeSupportCheck"); + UPLL_LOG_DEBUG("value struct is NULL in " + "ValFlowFilterEntryAttributeSupportCheck"); } return UPLL_RC_SUCCESS; } upll_rc_t VbrFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. * else - create using the controller name. */ result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } @@ -925,10 +856,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } val_flowfilter_entry_t *val_flowfilter_entry = - static_cast( - ikey->get_cfg_val()->get_val()); - - + static_cast( + ikey->get_cfg_val()->get_val()); + + ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); @@ -936,17 +867,18 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ctrlr_dom.ctrlr, ctrlr_dom.domain); FlowListMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); if (mgr == NULL) { UPLL_LOG_DEBUG("Invalid FlowListMoMgr Instance"); return UPLL_RC_ERR_GENERIC; } if (val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - result_code = mgr->AddFlowListToController(reinterpret_cast - (val_flowfilter_entry->flowlist_name), dmi, - reinterpret_cast (const_cast(ctrlr_id)) , - UPLL_DT_AUDIT, UNC_OP_CREATE); + result_code = mgr->AddFlowListToController( + reinterpret_cast + (val_flowfilter_entry->flowlist_name), dmi, + reinterpret_cast (const_cast(ctrlr_id)) , + UPLL_DT_AUDIT, UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Reference Count Updation Fails %d", result_code); return result_code; @@ -957,7 +889,11 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return result_code; } // Create a record in AUDIT DB - result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); + result_code = UpdateConfigDB(ikey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); return result_code; @@ -981,15 +917,15 @@ upll_rc_t VbrFlowFilterEntryMoMgr::VerifyRedirectDestination( controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(controller_domain)); key_vbr_flowfilter_entry_t *key_vbr_ffe = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); /* read val_vtn_flowfilter_entry from ikey*/ val_flowfilter_entry_t *val_flowfilter_entry = - static_cast( - ikey->get_cfg_val()->get_val()); + static_cast( + ikey->get_cfg_val()->get_val()); // Symentic Validation for redirect destination if ((val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] == - UNC_VF_VALID) && + UNC_VF_VALID) && (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID)) { DbSubOp dbop_up = { kOpReadExist, kOpMatchCtrlr|kOpMatchDomain, @@ -997,18 +933,18 @@ upll_rc_t VbrFlowFilterEntryMoMgr::VerifyRedirectDestination( result_code = GetControllerDomainID(ikey, &ctrlr_dom, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", - result_code); + result_code); } ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); // Verify whether the vtnnode and interface are exists in DB // 1. Check for the vbridge Node mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_IF))); + (const_cast(GetMoManager(UNC_KT_VBR_IF))); if (NULL == mgr) { UPLL_LOG_DEBUG("Unable to get VBRIDGE Interface object"); return UPLL_RC_ERR_GENERIC; @@ -1016,34 +952,34 @@ upll_rc_t VbrFlowFilterEntryMoMgr::VerifyRedirectDestination( result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory allocation failed for VBRIDGE key struct - %d", - result_code); + result_code); return result_code; } key_vbr_if_t *vbrif_key = static_cast( okey->get_key()); uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, - key_vbr_ffe->flowfilter_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + key_vbr_ffe->flowfilter_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, - reinterpret_cast - (val_flowfilter_entry->redirect_node), - (kMaxLenVnodeName + 1)); + reinterpret_cast + (val_flowfilter_entry->redirect_node), + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(vbrif_key->if_name, - reinterpret_cast - (val_flowfilter_entry->redirect_port), - kMaxLenInterfaceName + 1); + reinterpret_cast + (val_flowfilter_entry->redirect_port), + kMaxLenInterfaceName + 1); /* Check vtnnode and interface exists in table*/ SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); result_code = mgr->UpdateConfigDB(okey, dt_type, - UNC_OP_READ, dmi, &dbop_up, MAINTBL); + UNC_OP_READ, dmi, &dbop_up, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { UPLL_LOG_DEBUG("vtn node/interface in val_flowfilter_entry exists" - "in DB"); + "in DB"); DELETE_IF_NOT_NULL(okey); } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { // 2. Check for Vrouter Node @@ -1051,7 +987,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::VerifyRedirectDestination( // Verify whether the vtnnode and interface are exists in DB DELETE_IF_NOT_NULL(okey); mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VRT_IF))); + (const_cast(GetMoManager(UNC_KT_VRT_IF))); if (NULL == mgr) { UPLL_LOG_DEBUG("Unable to get VROUTER Interface object"); return UPLL_RC_ERR_GENERIC; @@ -1059,49 +995,49 @@ upll_rc_t VbrFlowFilterEntryMoMgr::VerifyRedirectDestination( result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory allocation failed for VROUTER key struct - %d", - result_code); + result_code); return result_code; } key_vrt_if_t *vrtif_key = static_cast( okey->get_key()); uuu::upll_strncpy(vrtif_key->vrt_key.vtn_key.vtn_name, - key_vbr_ffe->flowfilter_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + key_vbr_ffe->flowfilter_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vrtif_key->vrt_key.vrouter_name, - reinterpret_cast - (val_flowfilter_entry->redirect_node), - (kMaxLenVnodeName + 1)); + reinterpret_cast + (val_flowfilter_entry->redirect_node), + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(vrtif_key->if_name, - reinterpret_cast - (val_flowfilter_entry->redirect_port), - kMaxLenInterfaceName + 1); + reinterpret_cast + (val_flowfilter_entry->redirect_port), + kMaxLenInterfaceName + 1); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); /* Check vtnnode and interface exists in table*/ result_code = mgr->UpdateConfigDB(okey, dt_type, - UNC_OP_READ, dmi, &dbop_up, MAINTBL); + UNC_OP_READ, dmi, &dbop_up, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("vtn node/interface in val struct does not exists" - "in DB"); + "in DB"); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_CFG_SEMANTIC; } DELETE_IF_NOT_NULL(okey); } result_code = - (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : - result_code; + (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : + result_code; DELETE_IF_NOT_NULL(okey); } // end of Symentic Validation return result_code; } /*Return result of validation*/ upll_rc_t VbrFlowFilterEntryMoMgr::TxVote(unc_key_type_t keytype, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; ConfigKeyVal *req = NULL, *nreq = NULL; DalResultCode db_result; @@ -1111,37 +1047,46 @@ upll_rc_t VbrFlowFilterEntryMoMgr::TxVote(unc_key_type_t keytype, DalCursor *cfg1_cursor = NULL; for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, nreq, &cfg1_cursor, dmi, MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("diff skipped for op %d", op[i]); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + continue; + } while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("No diff found for op %d", op[i]); + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); break; } val_flowfilter_entry_t* val = reinterpret_cast - (GetVal(req)); + (GetVal(req)); if ((val->valid[UPLL_IDX_REDIRECT_NODE_FFE] == - UNC_VF_VALID) && + UNC_VF_VALID) && (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == - UNC_VF_VALID)) { - result_code = VerifyRedirectDestination(req, dmi, - UPLL_DT_CANDIDATE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Invalid redirect-destination node/interface"); - *err_ckv = req; - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } + UNC_VF_VALID)) { + result_code = VerifyRedirectDestination(req, dmi, + UPLL_DT_CANDIDATE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Invalid redirect-destination node/interface"); + DEL_USER_DATA(req); // Delete the controller and domain from req + *err_ckv = req; + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; } - } - dmi->CloseCursor(cfg1_cursor, true); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - req = nreq = NULL; + } + } + dmi->CloseCursor(cfg1_cursor, true); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + req = nreq = NULL; } return result_code; } @@ -1157,103 +1102,66 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("input key is null"); return UPLL_RC_ERR_GENERIC; } - + MoMgrImpl *mgr = NULL; key_vbr_flowfilter_entry_t *key_vbr_ffe = reinterpret_cast(ikey->get_key()); - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_FLOWFILTER))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey returned error - %d", result_code); - return result_code; - } - - key_vbr_flowfilter_t *vbr_ff_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vbr_ff_key->vbr_key.vtn_key.vtn_name, - key_vbr_ffe->flowfilter_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbr_ff_key->vbr_key.vbridge_name, - key_vbr_ffe->flowfilter_key.vbr_key.vbridge_name, - kMaxLenVnodeName + 1); - - vbr_ff_key->direction = key_vbr_ffe->flowfilter_key.direction; - - /* Checks the given vbr_flowfilter exists in DB or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VBR_FLOWFILTER key does not exists"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; /* read val_flowfilter_entry from ikey*/ val_flowfilter_entry_t *val_flowfilter_entry = - static_cast( - ikey->get_cfg_val()->get_val()); + static_cast( + ikey->get_cfg_val()->get_val()); if (val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] - == UNC_VF_VALID) { - /* validate flowlist_name in val_flowfilter_entry exists in FLOWLIST table*/ - mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_FLOWLIST))); + == UNC_VF_VALID) { + /* validate flowlist_name in val_flowfilter_entry exists in FLOWLIST table*/ + mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_FLOWLIST))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("Unable to get FLOWLIST object"); - return UPLL_RC_ERR_GENERIC; - } + if (NULL == mgr) { + UPLL_LOG_DEBUG("Unable to get FLOWLIST object"); + return UPLL_RC_ERR_GENERIC; + } - /** allocate memory for FLOWLIST key_struct */ - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for FLOWLIST key struct - %d", - result_code); - return result_code; - } + /** allocate memory for FLOWLIST key_struct */ + result_code = mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Memory allocation failed for FLOWLIST key struct - %d", + result_code); + return result_code; + } - /** fill key_flowlist_t from val_flowfilter_entry*/ - key_flowlist_t *key_flowlist = static_cast( - okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - val_flowfilter_entry->flowlist_name, - kMaxLenFlowListName+1); + /** fill key_flowlist_t from val_flowfilter_entry*/ + key_flowlist_t *key_flowlist = static_cast( + okey->get_key()); + uuu::upll_strncpy(key_flowlist->flowlist_name, + val_flowfilter_entry->flowlist_name, + kMaxLenFlowListName+1); - UPLL_LOG_TRACE("Flowlist name in val_flowfilter_entry %s", - key_flowlist->flowlist_name); + UPLL_LOG_TRACE("Flowlist name in val_flowfilter_entry %s", + key_flowlist->flowlist_name); - /* Check flowlist_name exists in table*/ - result_code = mgr->UpdateConfigDB(okey, req->datatype, - UNC_OP_READ, dmi, MAINTBL); + /* Check flowlist_name exists in table*/ + result_code = mgr->UpdateConfigDB(okey, req->datatype, + UNC_OP_READ, dmi, MAINTBL); + + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_DEBUG("Flowlist name in val_flowfilter_entry does not exists" + "in FLOWLIST table"); + delete okey; + okey = NULL; + return UPLL_RC_ERR_CFG_SEMANTIC; + } else { + result_code = UPLL_RC_SUCCESS; + } - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("Flowlist name in val_flowfilter_entry does not exists" - "in FLOWLIST table"); delete okey; okey = NULL; - return UPLL_RC_ERR_CFG_SEMANTIC; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; } if (val_flowfilter_entry->valid[UPLL_IDX_NWM_NAME_FFE] - == UNC_VF_VALID) { + == UNC_VF_VALID) { // validate nwm_name in KT_VBR_NWMONITOR table mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); + (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); if (NULL == mgr) { UPLL_LOG_DEBUG("Unable to get KT_VBR_NWMONITOR object"); @@ -1264,33 +1172,29 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory allocation failed for key_nwm struct - %d", - result_code); + result_code); return result_code; } /** fill key_nwm from key/val VBR_FLOWFILTER_ENTRY structs*/ key_nwm_t *key_nwm = static_cast( - okey->get_key()); + okey->get_key()); uuu::upll_strncpy(key_nwm->nwmonitor_name, - val_flowfilter_entry->nwm_name, - kMaxLenVnodeName+1); + val_flowfilter_entry->nwm_name, + kMaxLenVnodeName+1); uuu::upll_strncpy(key_nwm->vbr_key.vtn_key.vtn_name, - key_vbr_ffe->flowfilter_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName+1); - - uuu::upll_strncpy(key_nwm->vbr_key.vbridge_name, - key_vbr_ffe->flowfilter_key.vbr_key.vbridge_name, - kMaxLenVnodeName+1); + key_vbr_ffe->flowfilter_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName+1); /* Check nwm_name exists in table*/ result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); + dmi, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("NWM name in val_flowfilter_entry does not exists" - "in KT_VBR_NWMONITOR table"); + "in KT_VBR_NWMONITOR table"); delete okey; okey = NULL; return UPLL_RC_ERR_CFG_SEMANTIC; @@ -1301,17 +1205,16 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, delete okey; okey = NULL; } // nwm_name is valid - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } UPLL_LOG_DEBUG("ValidateAttribute Successfull."); return result_code; } -upll_rc_t VbrFlowFilterEntryMoMgr::GetValid(void *val, uint64_t indx, - uint8_t *&valid, upll_keytype_datatype_t dt_type, MoMgrTables tbl) { +upll_rc_t VbrFlowFilterEntryMoMgr::GetValid( + void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (val == NULL) { UPLL_LOG_DEBUG("Memory is not Allocated"); @@ -1320,44 +1223,44 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetValid(void *val, uint64_t indx, if (tbl == MAINTBL) { switch (indx) { - case uudst::vbr_flowfilter_entry::kDbiFlowlistName: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_FLOWLIST_NAME_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiAction: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_ACTION_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiRedirectNode: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_REDIRECT_NODE_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiRedirectPort: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_REDIRECT_PORT_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiModifyDstMac: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_MODIFY_DST_MAC_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiModifySrcMac: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiNwmName: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_NWM_NAME_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiDscp: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_DSCP_FFE]; - break; - case uudst::vbr_flowfilter_entry::kDbiPriority: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_PRIORITY_FFE]; - break; - default: - return UPLL_RC_ERR_GENERIC; + case uudst::vbr_flowfilter_entry::kDbiFlowlistName: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_FLOWLIST_NAME_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiAction: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_ACTION_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiRedirectNode: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_REDIRECT_NODE_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiRedirectPort: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_REDIRECT_PORT_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiModifyDstMac: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_MODIFY_DST_MAC_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiModifySrcMac: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiNwmName: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_NWM_NAME_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiDscp: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_DSCP_FFE]; + break; + case uudst::vbr_flowfilter_entry::kDbiPriority: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_PRIORITY_FFE]; + break; + default: + return UPLL_RC_ERR_GENERIC; } } @@ -1365,8 +1268,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetValid(void *val, uint64_t indx, return UPLL_RC_SUCCESS; } -upll_rc_t VbrFlowFilterEntryMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { +upll_rc_t VbrFlowFilterEntryMoMgr::AllocVal( + ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; @@ -1390,8 +1295,9 @@ upll_rc_t VbrFlowFilterEntryMoMgr::AllocVal(ConfigVal *&ck_val, return UPLL_RC_SUCCESS; } -upll_rc_t VbrFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { +upll_rc_t VbrFlowFilterEntryMoMgr::GetChildConfigKey( + ConfigKeyVal *&okey, + ConfigKeyVal *parent_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vbr_flowfilter_entry_t *vbr_ffe_key; @@ -1454,8 +1360,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, (pkey)->vbr_key.vbridge_name, (kMaxLenVnodeName + 1)); vbr_ffe_key->flowfilter_key.direction = - reinterpret_cast - (pkey)->direction; + reinterpret_cast + (pkey)->direction; break; case UNC_KT_VBR_FLOWFILTER_ENTRY: uuu::upll_strncpy(vbr_ffe_key->flowfilter_key.vbr_key.vtn_key.vtn_name, @@ -1467,11 +1373,11 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, (pkey)->flowfilter_key.vbr_key.vbridge_name, (kMaxLenVnodeName + 1)); vbr_ffe_key->flowfilter_key.direction = - reinterpret_cast - (pkey)->flowfilter_key.direction; + reinterpret_cast + (pkey)->flowfilter_key.direction; vbr_ffe_key->sequence_num = - reinterpret_cast - (pkey)->sequence_num; + reinterpret_cast + (pkey)->sequence_num; break; case UNC_KT_VBR_NWMONITOR: uuu::upll_strncpy(vbr_ffe_key->flowfilter_key.vbr_key.vtn_key.vtn_name, @@ -1500,8 +1406,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VbrFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { +upll_rc_t VbrFlowFilterEntryMoMgr::DupConfigKeyVal( + ConfigKeyVal *&okey, + ConfigKeyVal *&req, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) { UPLL_LOG_DEBUG("Request is null"); @@ -1528,15 +1436,15 @@ upll_rc_t VbrFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tmp) { if (tbl == MAINTBL) { val_flowfilter_entry_t *ival = NULL; - ival = reinterpret_cast (GetVal(req)); + ival = reinterpret_cast (GetVal(req)); if (NULL != ival) { val_flowfilter_entry_t *vbr_flowfilter_entry_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); memcpy(vbr_flowfilter_entry_val, ival, sizeof(val_flowfilter_entry_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, - vbr_flowfilter_entry_val); + vbr_flowfilter_entry_val); } if (NULL == tmp1) { UPLL_LOG_DEBUG("Memory Not Allocated"); @@ -1551,19 +1459,20 @@ upll_rc_t VbrFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ikey = reinterpret_cast (tkey); key_vbr_flowfilter_entry_t *vbr_flowfilter_entry = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_flowfilter_entry_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_flowfilter_entry_t))); memcpy(vbr_flowfilter_entry, ikey, sizeof(key_vbr_flowfilter_entry_t)); okey = new ConfigKeyVal(UNC_KT_VBR_FLOWFILTER_ENTRY, - IpctSt::kIpcStKeyVbrFlowfilterEntry, vbr_flowfilter_entry, - tmp1); + IpctSt::kIpcStKeyVbrFlowfilterEntry, + vbr_flowfilter_entry, + tmp1); if (okey) { SET_USER_DATA(okey, req) } else { UPLL_LOG_DEBUG("okey is Null"); - DELETE_IF_NOT_NULL(tmp1); + DELETE_IF_NOT_NULL(tmp1); return UPLL_RC_ERR_GENERIC; } @@ -1573,11 +1482,14 @@ upll_rc_t VbrFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, return UPLL_RC_SUCCESS; } -upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id) { +upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { UPLL_FUNC_TRACE; UPLL_LOG_TRACE("%s GetRenamedUncKey vbrff_entry start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); ConfigKeyVal *unc_key = NULL; if ((NULL == ikey) || (ctrlr_id == NULL) || (NULL == dmi)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); @@ -1587,7 +1499,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); + (const_cast (GetMoManager(UNC_KT_VBRIDGE))); if (!mgrvbr) { UPLL_LOG_TRACE("mgrvbr failed"); return UPLL_RC_ERR_GENERIC; @@ -1607,8 +1519,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_val->ctrlr_vtn_name, - ctrlr_key->flowfilter_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + ctrlr_key->flowfilter_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); rename_val->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; uuu::upll_strncpy(rename_val->ctrlr_vnode_name, @@ -1632,7 +1544,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); result_code = mgrvbr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); + dbop, dmi, RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -1646,12 +1558,14 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, reinterpret_cast (unc_key->get_key()); uuu::upll_strncpy(ctrlr_key->flowfilter_key.vbr_key.vtn_key.vtn_name, - vbr_flowfilter_entry_key->flowfilter_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + vbr_flowfilter_entry_key-> + flowfilter_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(ctrlr_key->flowfilter_key.vbr_key.vbridge_name, - vbr_flowfilter_entry_key->flowfilter_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + vbr_flowfilter_entry_key-> + flowfilter_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); } mgrvbr = NULL; DELETE_IF_NOT_NULL(unc_key); @@ -1664,40 +1578,40 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, } if (UNC_VF_VALID == val_flowfilter_entry - ->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { + ->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { val_rename_flowlist_t *rename_flowlist = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); if (!rename_flowlist) { UPLL_LOG_DEBUG("rename_flowlist NULL %d", result_code); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_flowlist->flowlist_newname, - val_flowfilter_entry->flowlist_name, - (kMaxLenFlowListName + 1)); - rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; + val_flowfilter_entry->flowlist_name, + (kMaxLenFlowListName + 1)); + rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; - MoMgrImpl* mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - if (!mgr) { - UPLL_LOG_DEBUG("mgr failed"); - if (rename_flowlist) free(rename_flowlist); - return UPLL_RC_ERR_GENERIC; - } - result_code = mgr->GetChildConfigKey(unc_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Returned an error"); - free(rename_flowlist); - mgr = NULL; - return result_code; - } - SET_USER_DATA_CTRLR(unc_key, ctrlr_id); - unc_key->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, rename_flowlist); - result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if ((UPLL_RC_SUCCESS != result_code) && - (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + MoMgrImpl* mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + if (!mgr) { + UPLL_LOG_DEBUG("mgr failed"); + if (rename_flowlist) free(rename_flowlist); + return UPLL_RC_ERR_GENERIC; + } + result_code = mgr->GetChildConfigKey(unc_key, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Returned an error"); + free(rename_flowlist); + mgr = NULL; + return result_code; + } + SET_USER_DATA_CTRLR(unc_key, ctrlr_id); + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, rename_flowlist); + result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; @@ -1709,21 +1623,21 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, key_flowlist = reinterpret_cast (unc_key->get_key()); uuu::upll_strncpy(val_flowfilter_entry->flowlist_name, - key_flowlist->flowlist_name, - (kMaxLenFlowListName + 1)); + key_flowlist->flowlist_name, + (kMaxLenFlowListName + 1)); } DELETE_IF_NOT_NULL(unc_key); mgr = NULL; } if ((UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && (UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VROUTER }; bool isRedirectVnodeVbridge = false; for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { + i < sizeof(child_key)/sizeof(child_key[0]); i++) { const unc_key_type_t ktype = child_key[i]; MoMgrImpl *mgrvbr = reinterpret_cast( const_cast(GetMoManager(ktype))); @@ -1732,15 +1646,15 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } val_rename_vnode *rename_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); if (!rename_val) { UPLL_LOG_TRACE("rename_val NULL"); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_val->ctrlr_vnode_name, - val_flowfilter_entry->redirect_node, - (kMaxLenVnodeName + 1)); + val_flowfilter_entry->redirect_node, + (kMaxLenVnodeName + 1)); rename_val->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; result_code = mgrvbr->GetChildConfigKey(unc_key, NULL); @@ -1752,10 +1666,14 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, } SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); - result_code = mgrvbr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + result_code = mgrvbr->ReadConfigDB( + unc_key, dt_type, + UNC_OP_READ, + dbop, + dmi, + RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && - (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(unc_key); mgrvbr = NULL; @@ -1767,13 +1685,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, isRedirectVnodeVbridge = true; key_vbr *vbr_key = reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy(val_flowfilter_entry->redirect_node, - vbr_key->vbridge_name, - (kMaxLenVnodeName + 1)); + vbr_key->vbridge_name, + (kMaxLenVnodeName + 1)); } else if (unc_key->get_key_type() == UNC_KT_VROUTER) { key_vrt *vrt_key = reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy(val_flowfilter_entry->redirect_node, - vrt_key->vrouter_name, - (kMaxLenVnodeName + 1)); + vrt_key->vrouter_name, + (kMaxLenVnodeName + 1)); } } DELETE_IF_NOT_NULL(unc_key); @@ -1785,7 +1703,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, } } UPLL_LOG_TRACE("%s GetRenamedUncKey vbrff_entry end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); return UPLL_RC_SUCCESS; } @@ -1799,362 +1717,154 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedControllerKey( UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; - uint8_t rename = 0; - + if (NULL == ctrlr_dom) { + UPLL_LOG_DEBUG("ctrlr null"); + return UPLL_RC_ERR_GENERIC; + } /* Get the controller's redirect node(vbridge/vrt) name -start*/ val_flowfilter_entry_t *val_flowfilter_entry = reinterpret_cast (GetVal(ikey)); if (val_flowfilter_entry) { if ((UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && - (UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && + (UNC_VF_VALID == + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VROUTER }; bool isRedirectVnodeVbridge = false; for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { + i < sizeof(child_key)/sizeof(child_key[0]); i++) { const unc_key_type_t ktype = child_key[i]; MoMgrImpl *mgrvbr = reinterpret_cast( - const_cast(GetMoManager(ktype))); - if (!mgrvbr) { - UPLL_LOG_DEBUG("mgrvbr failed"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - // SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (okey->get_key_type() == UNC_KT_VBRIDGE) { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node, (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("redirect node vbr name (%s) (%s)", - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node); - } else if (okey->get_key_type() == UNC_KT_VROUTER) { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vrouter_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node, (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("redirect node vrt name (%s) (%s)", - reinterpret_cast(okey->get_key())->vrouter_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node); - } + const_cast(GetMoManager(ktype))); + if (!mgrvbr) { + UPLL_LOG_DEBUG("mgrvbr failed"); + return UPLL_RC_ERR_GENERIC; + } - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); + result_code = mgrvbr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); return result_code; } - } + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); + if (okey->get_key_type() == UNC_KT_VBRIDGE) { + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node, + (kMaxLenVnodeName + 1)); + + UPLL_LOG_DEBUG("redirect node vbr name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node); + } else if (okey->get_key_type() == UNC_KT_VROUTER) { + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vrouter_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node, + (kMaxLenVnodeName + 1)); + + UPLL_LOG_DEBUG("redirect node vrt name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vrouter_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node); + } - if (result_code == UPLL_RC_SUCCESS) { - val_rename_vnode *rename_val = NULL; - isRedirectVnodeVbridge = true; - rename_val = reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("rename_val NULL."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return result_code; + } } - uuu::upll_strncpy(reinterpret_cast - (ikey->get_cfg_val()->get_val())->redirect_node, - rename_val->ctrlr_vnode_name, (kMaxLenVtnName + 1)); - } - DELETE_IF_NOT_NULL(okey); - if (isRedirectVnodeVbridge) - break; + if (result_code == UPLL_RC_SUCCESS) { + val_rename_vnode *rename_val = NULL; + isRedirectVnodeVbridge = true; + rename_val = reinterpret_cast (GetVal(okey)); + if (!rename_val) { + UPLL_LOG_DEBUG("rename_val NULL."); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + + uuu::upll_strncpy(reinterpret_cast + (ikey->get_cfg_val()->get_val())->redirect_node, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); + } + DELETE_IF_NOT_NULL(okey); + if (isRedirectVnodeVbridge) + break; } } } /* -end*/ - - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) { - UPLL_LOG_DEBUG("no renamed"); - return UPLL_RC_SUCCESS; - } UPLL_LOG_TRACE("Start Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); - - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + (const_cast (GetMoManager(UNC_KT_VBRIDGE))); - uuu::upll_strncpy(reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name); - - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast - (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - val_rename_vnode *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("Vbr Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); - } - - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vbr name renamed"); - uuu::upll_strncpy(reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name), - reinterpret_cast (rename_val->ctrlr_vnode_name), - kMaxLenVnodeName + 1); - } - - DELETE_IF_NOT_NULL(okey); - - // Flowlist is Renamed - if (rename & FLOWLIST_RENAME_FLAG) { - UPLL_LOG_DEBUG("flowlist name renamed"); - if (!GetVal(ikey)) { - UPLL_LOG_DEBUG("value structure is null"); - return UPLL_RC_SUCCESS; - } - MoMgrImpl *mgrflist = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - result_code = mgrflist->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy( - reinterpret_cast - (okey->get_key())->flowlist_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->flowlist_name, - (kMaxLenFlowListName + 1)); - UPLL_LOG_DEBUG("flowlist name (%s) (%s)", - reinterpret_cast - (okey->get_key())->flowlist_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->flowlist_name); -// UPLL_LOG_DEBUG("flowlist name (%s) (%s)", (okey->get_key())->flowlist_name, -// (ikey->get_cfg_val()->get_val())->flowlist_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrflist->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - - val_rename_flowlist_t *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); - - if (!rename_val) { - UPLL_LOG_DEBUG("flowlist is not valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - uuu::upll_strncpy(reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); - DELETE_IF_NOT_NULL(okey); - } - UPLL_LOG_TRACE("%s GetRenamedCtrl vbr_ff_entry end", - ikey->ToStrAll().c_str()); - UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); - return UPLL_RC_SUCCESS; -#if 0 - /* Vtn renamed */ - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - MoMgrImpl *mgrvtn = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VTN))); - result_code = mgrvtn->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (ctrlr_dom != NULL) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy(reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); -// UPLL_LOG_DEBUG("vtn name (%s) (%s)", (okey->get_key())->vtn_name, -// (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrvtn->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - val_rename_vtn *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); - - if (!rename_val) { - UPLL_LOG_DEBUG("Vtn Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name, - rename_val->new_name, - (kMaxLenVtnName + 1)); - DELETE_IF_NOT_NULL(okey); + result_code = mgrvbr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; } - // Vbr Renamed - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vbr name renamed"); - MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVnodeName + 1)); + UPLL_LOG_DEBUG("vtn name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name); + + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vtn_key.vtn_name); - - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); -// UPLL_LOG_DEBUG("vbr name (%s) (%s)", (okey->get_key())->vbridge_name, -// (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast - (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } + UPLL_LOG_DEBUG("vtn name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name); + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { val_rename_vnode *rename_val = NULL; rename_val = reinterpret_cast (GetVal(okey)); if (!rename_val) { @@ -2162,49 +1872,67 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedControllerKey( DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } + + uuu::upll_strncpy(reinterpret_cast + (ikey->get_key())-> + flowfilter_key.vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name), - reinterpret_cast (rename_val->ctrlr_vnode_name), - kMaxLenVnodeName + 1); - DELETE_IF_NOT_NULL(okey); + (reinterpret_cast + (ikey->get_key())->flowfilter_key.vbr_key.vbridge_name), + reinterpret_cast + (rename_val->ctrlr_vnode_name), + kMaxLenVnodeName + 1); } + DELETE_IF_NOT_NULL(okey); // Flowlist is Renamed - if (rename & FLOWLIST_RENAME_FLAG) { - UPLL_LOG_DEBUG("flowlist name renamed"); - MoMgrImpl *mgrflist = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - result_code = mgrflist->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + val_flowfilter_entry_t *val_ffe = reinterpret_cast + (GetVal(ikey)); + if (NULL == val_ffe) { + UPLL_LOG_DEBUG("value structure is null"); + return UPLL_RC_SUCCESS; + } + if (strlen(reinterpret_cast + (val_ffe->flowlist_name)) == 0) { + return UPLL_RC_SUCCESS; + } + MoMgrImpl *mgrflist = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + result_code = mgrflist->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); uuu::upll_strncpy( reinterpret_cast - (okey->get_key())->flowlist_name, - reinterpret_cast (ikey->get_cfg_val()-> - get_val())->flowlist_name, - (kMaxLenFlowListName + 1)); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrflist->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - + (okey->get_key())->flowlist_name, + reinterpret_cast(ikey->get_cfg_val()-> + get_val())->flowlist_name, + (kMaxLenFlowListName + 1)); + UPLL_LOG_DEBUG("flowlist name (%s) (%s)", + reinterpret_cast + (okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->flowlist_name); + // UPLL_LOG_DEBUG("flowlist name (%s) (%s)", + // (okey->get_key())->flowlist_name, + // (ikey->get_cfg_val()->get_val())->flowlist_name); + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; + result_code = mgrflist->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop1, dmi, RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { val_rename_flowlist_t *rename_val = NULL; rename_val = reinterpret_cast (GetVal(okey)); @@ -2215,55 +1943,55 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetRenamedControllerKey( } uuu::upll_strncpy(reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); - SET_USER_DATA_FLAGS(ikey, rename); - DELETE_IF_NOT_NULL(okey); + (ikey->get_cfg_val()->get_val())->flowlist_name, + rename_val->flowlist_newname, + (kMaxLenFlowListName + 1)); } + DELETE_IF_NOT_NULL(okey); UPLL_LOG_TRACE("%s GetRenamedCtrl vbr_ff_entry end", ikey->ToStrAll().c_str()); UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); return UPLL_RC_SUCCESS; -#endif } -upll_rc_t VbrFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, - controller_domain *ctrlr_dom, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + +upll_rc_t VbrFlowFilterEntryMoMgr::GetControllerDomainID( + ConfigKeyVal *ikey, + controller_domain *ctrlr_dom, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckv = NULL; VbrMoMgr *mgrvbr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); result_code = mgrvbr->GetChildConfigKey(ckv, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to get the ParentConfigKey, resultcode=%d", - result_code); + result_code); return result_code; } key_vbr_flowfilter_entry_t *ff_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vbr_t *vbr_key = reinterpret_cast(ckv->get_key()); uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - ff_key->flowfilter_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + ff_key->flowfilter_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vbr_key->vbridge_name, - ff_key->flowfilter_key.vbr_key.vbridge_name, - kMaxLenVnodeName + 1); + ff_key->flowfilter_key.vbr_key.vbridge_name, + kMaxLenVnodeName + 1); // Read Controller ID and Domain ID from the VBridge and set it to the // Input ConfigKeyVal DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; result_code = mgrvbr->ReadConfigDB(ckv, dt_type, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to Read the details from DB for the parent err %d", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } @@ -2283,11 +2011,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, upll_rc_t VbrFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; uint8_t *ctrlr_id = NULL; - ConfigKeyVal* okey = NULL; - ConfigKeyVal *temp_key = NULL; controller_domain ctrlr_dom; if (ikey == NULL && req == NULL) { UPLL_LOG_DEBUG( @@ -2296,11 +2023,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t result_code = UPLL_RC_SUCCESS; - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed %d", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed %d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); @@ -2308,21 +2037,18 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("ValidateAttribute failed %d", result_code); return result_code; } - // Check if Object already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("UpdateConfigDB failed Candidate DB"); - return result_code; - } // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - FlowListMoMgr *mgr = NULL; val_flowfilter_entry_t *flowfilter_val = reinterpret_cast (GetVal(ikey)); result_code = GetControllerDomainID(ikey, &ctrlr_dom, req->datatype, dmi); if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", result_code); + return result_code; } ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; @@ -2332,112 +2058,71 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ctrlr_dom.ctrlr, ctrlr_dom.domain); ctrlr_id = ctrlr_dom.ctrlr; - result_code = GetChildConfigKey(temp_key, NULL); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed in ValidateCapability"); - return result_code; - } - result_code = GetInstanceCount(temp_key, - reinterpret_cast(ctrlr_id), - req->datatype, - &cur_instance_count, - dmi, - MAINTBL); - delete temp_key; - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount Failed in ValidateCapability"); - return result_code; - } - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); return result_code; } - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restore Operation Failed, err %d", result_code); + + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); return result_code; } - return result_code; - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("UpdateConfigDb failed to read running"); - return result_code; - } else { - UPLL_LOG_DEBUG("No instance found in running db"); } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - mgr = reinterpret_cast + FlowListMoMgr *mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - // Check Flowlist object exist or not - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } - key_flowlist_t *key_flowlist = reinterpret_cast - (okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - flowfilter_val->flowlist_name, - (kMaxLenFlowListName +1)); - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Given FlowList does not exists %d", result_code); - delete okey; - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Instance Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - delete okey; - UPLL_LOG_DEBUG("Error Accesing CANDIDATE DB (%d)", result_code); - return result_code; - } - } - if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { result_code = mgr->AddFlowListToController( reinterpret_cast(flowfilter_val->flowlist_name), dmi, reinterpret_cast(ctrlr_id) , req->datatype, UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to Update the FlowList at ctrlr Table"); - delete okey; return result_code; } } - // N/w monitor -#if 0 - NwMonitorMoMgr *nmgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBR_NWMONITOR))); - // result_code = nmgr->GetChildConfigKey(okey, NULL); // TODO - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } - key_nwm_t *key_nwm = reinterpret_cast(okey->get_key()); - strncpy(reinterpret_cast(key_nwm->nwmonitor_name), - reinterpret_cast(flowfilter_val->nwm_name), - kMaxLenNwmName +1); - // result_code = nmgr->IsReferenced(okey, req->datatype, dmi); // TODO - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } -#endif - // create a record in CANDIDATE DB DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutDomain | kOpInOutCtrlr | kOpInOutFlag }; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi, &dbop, MAINTBL); - DELETE_IF_NOT_NULL(okey); return result_code; } @@ -2458,9 +2143,9 @@ upll_rc_t VbrFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL || - ikey->get_key_type() != UNC_KT_VBR_FLOWFILTER_ENTRY) { + ikey->get_key_type() != UNC_KT_VBR_FLOWFILTER_ENTRY) { UPLL_LOG_DEBUG("Ignoring ktype/Table kt=%d, tbl=%d", - ikey->get_key_type(), tbl); + ikey->get_key_type(), tbl); return result_code; } val_flowfilter_entry_t *flowfilter_val = @@ -2485,15 +2170,15 @@ upll_rc_t VbrFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), - dmi, - reinterpret_cast(ctrlr_id), - dt_type, - UNC_OP_CREATE); + reinterpret_cast(flowfilter_val->flowlist_name), + dmi, + reinterpret_cast(ctrlr_id), + dt_type, + UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to Update the FlowList at ctrlr Table, err %d", + UPLL_LOG_DEBUG("Unable to Update the FlowList at ctrlr Table, err %d", result_code); - return result_code; + return result_code; } } return result_code; @@ -2517,11 +2202,11 @@ upll_rc_t VbrFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } /* - result_code = ValidateCapability(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); - return result_code; - } */ + result_code = ValidateCapability(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); + return result_code; + } */ result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_READ, dmi); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { @@ -2568,9 +2253,9 @@ upll_rc_t VbrFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, } upll_rc_t VbrFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2586,7 +2271,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -2598,25 +2283,25 @@ upll_rc_t VbrFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, ConfigKeyVal *tmp_ckval = ckval; while (NULL != ckval) { val_flowfilter_entry_t* val = reinterpret_cast - (GetVal(ckval)); + (GetVal(ckval)); if (val->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { - if (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == - UNC_VF_VALID) { - result_code = VerifyRedirectDestination(ckval, dmi, UPLL_DT_IMPORT); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ckval); - UPLL_LOG_DEBUG("redirect-destination node/interface doesn't exists"); - return UPLL_RC_ERR_MERGE_CONFLICT; - } + if (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == + UNC_VF_VALID) { + result_code = VerifyRedirectDestination(ckval, dmi, UPLL_DT_IMPORT); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ckval); + UPLL_LOG_DEBUG("redirect-destination node/interface doesn't exists"); + return UPLL_RC_ERR_MERGE_CONFLICT; } + } } ckval = ckval->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(tmp_ckval); MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr param"); return UPLL_RC_ERR_GENERIC; @@ -2630,25 +2315,27 @@ upll_rc_t VbrFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, upll_rc_t VbrFlowFilterEntryMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *val; val = (ckv_running != NULL)?reinterpret_cast - (GetVal(ckv_running)):NULL; + (GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } UPLL_LOG_DEBUG("AuditUpdate Config Status Information %d", result_code); @@ -2656,7 +2343,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateAuditConfigStatus( } upll_rc_t VbrFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal* okey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2673,7 +2361,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } - result_code = ValidateValFlowfilterEntry(req, ikey, dmi); + result_code = ValidateValFlowfilterEntry(req, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ValidateValFlowfilterEntry Failed %d", result_code); return result_code; @@ -2683,84 +2371,42 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS != result_code) { return result_code; } -#if 0 - result_code = ValidateCapability(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); - return result_code; - } -#endif - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - return result_code; - } FlowListMoMgr *flowlist_mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(ikey)); - if (UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { - // Check Flowlist object exist or not - result_code = flowlist_mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } - key_flowlist_t *key_flowlist = reinterpret_cast - (okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - flowfilter_val->flowlist_name, - (kMaxLenFlowListName +1)); - result_code = flowlist_mgr->UpdateConfigDB(okey, req->datatype, - UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Given FlowList does not exists %d", result_code); - delete okey; - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Instance Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - delete okey; - UPLL_LOG_DEBUG("Error Accesing CANDIDATE DB (%d)", result_code); - return result_code; - } - delete okey; - okey = NULL; - } - + reinterpret_cast (GetVal(ikey)); // Get ctrlr_id to do Capa check result_code = GetChildConfigKey(okey, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); - return result_code; - } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain }; - result_code = ReadConfigDB(okey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, - MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - delete okey; - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - return result_code; - } - GET_USER_DATA_CTRLR(okey, ctrlr_id); - - UPLL_LOG_DEBUG("Calling validate Capability For UpdateMo"); - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_id)); - if (result_code != UPLL_RC_SUCCESS) { - delete okey; - UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); - return result_code; - } + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + return result_code; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain }; + result_code = ReadConfigDB(okey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + delete okey; + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + return result_code; + } + GET_USER_DATA_CTRLR(okey, ctrlr_id); + + UPLL_LOG_DEBUG("Calling validate Capability For UpdateMo"); + result_code = ValidateCapability(req, ikey, + reinterpret_cast(ctrlr_id)); + if (result_code != UPLL_RC_SUCCESS) { + delete okey; + UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); + return result_code; + } if (UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] || UNC_VF_VALID_NO_VALUE == flowfilter_val-> valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { - val_flowfilter_entry_t *temp_ffe_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); UPLL_LOG_DEBUG("flowlist name %s", flowfilter_val->flowlist_name); if (UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && UNC_VF_VALID == temp_ffe_val-> @@ -2783,10 +2429,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } } else if (UNC_VF_VALID == flowfilter_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && - (UNC_VF_INVALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || UNC_VF_VALID_NO_VALUE == - temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && + (UNC_VF_INVALID == temp_ffe_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || UNC_VF_VALID_NO_VALUE == + temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { UPLL_LOG_DEBUG("Update option 2"); result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(flowfilter_val->flowlist_name), dmi, @@ -2797,9 +2443,9 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } } else if (UNC_VF_VALID_NO_VALUE == flowfilter_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && - UNC_VF_VALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && + UNC_VF_VALID == temp_ffe_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { UPLL_LOG_DEBUG("Update option 3"); result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ffe_val->flowlist_name), dmi, @@ -2812,24 +2458,6 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, } } // N/w monitor -#if 0 - NwMonitorMoMgr *nmgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBR_NWMONITOR))); - // result_code = nmgr->GetChildConfigKey(okey, NULL); // TODO - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } - key_nwm_t *key_nwm = reinterpret_cast(okey->get_key()); - strncpy(reinterpret_cast(key_nwm->nwmonitor_name), - reinterpret_cast(flowfilter_val->nwm_name), - kMaxLenNwmName +1); - // result_code = nmgr->IsReferenced(okey, req->datatype, dmi); // TODO - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } -#endif DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); @@ -2841,9 +2469,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } -upll_rc_t VbrFlowFilterEntryMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VbrFlowFilterEntryMoMgr::IsReferenced( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ikey) return UPLL_RC_ERR_GENERIC; @@ -2860,7 +2489,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *dup_key = NULL, *l_key = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) { @@ -2905,9 +2534,11 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - //Adding Capacheck - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + // Adding Capacheck + result_code = ValidateCapability( + req, + ikey, + reinterpret_cast(ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { delete dup_key; delete l_key; @@ -2933,10 +2564,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, ipc_req.header.datatype = req->datatype; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, - true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, + true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -2947,8 +2578,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(l_key); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); return ipc_resp.header.result_code; @@ -3052,9 +2683,11 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - //Added CApaCheck - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + // Added CApaCheck + result_code = ValidateCapability( + req, + ikey, + reinterpret_cast(ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { delete dup_key; delete l_key; @@ -3093,10 +2726,10 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, - true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, + true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -3105,8 +2738,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); return ipc_resp.header.result_code; } @@ -3135,16 +2768,22 @@ upll_rc_t VbrFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } upll_rc_t VbrFlowFilterEntryMoMgr::RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi, const char *ctrlr_id) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("Implementation Not supported for this KT."); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } #if 0 -upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *key, - unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *upd_key, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { +upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus( + ConfigKeyVal *key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { // UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *vbrflowfilter_entry_val = NULL; @@ -3152,14 +2791,14 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *key, unc_keytype_configstatus_t cs_status = (driver_result == 0) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; vbrflowfilter_entry_val = reinterpret_cast - (GetVal(key)); + (GetVal(key)); if (vbrflowfilter_entry_val == NULL) return UPLL_RC_ERR_GENERIC; if (op == UNC_OP_CREATE) { if (vbrflowfilter_entry_val->cs_row_status != UNC_CS_NOT_SUPPORTED) vbrflowfilter_entry_val->cs_row_status = cs_status; for (unsigned int loop = 0; - loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { + loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { if ((UNC_VF_VALID == vbrflowfilter_entry_val->valid[loop]) || (UNC_VF_VALID_NO_VALUE == vbrflowfilter_entry_val->valid[loop])) if (vbrflowfilter_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) @@ -3171,7 +2810,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *key, void *fle_val2 = GetVal(upd_key); CompareValidValue(fle_val1, fle_val2, false); for (unsigned int loop = 0; - loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { + loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { if (vbrflowfilter_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) if ((UNC_VF_VALID == vbrflowfilter_entry_val->valid[loop]) || (UNC_VF_VALID_NO_VALUE == vbrflowfilter_entry_val->valid[loop])) @@ -3192,14 +2831,14 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *key, #endif upll_rc_t VbrFlowFilterEntryMoMgr::GetControllerId(ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *temp = NULL; ConfigVal *tmpval = NULL; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + UNC_KT_VBRIDGE))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr is NULL"); return UPLL_RC_ERR_GENERIC; @@ -3210,13 +2849,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetControllerId(ConfigKeyVal *ikey, return result_code; } val_vbr *vbr_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vbr))); + (ConfigKeyVal::Malloc(sizeof(val_vbr))); tmpval = new ConfigVal(IpctSt::kIpcStValVbr, vbr_val); temp->SetCfgVal(tmpval); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr}; result_code = mgr->ReadConfigDB(temp, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(temp); @@ -3234,7 +2873,7 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetControllerId(ConfigKeyVal *ikey, } upll_rc_t VbrFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -3245,13 +2884,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_rename_vnode_info *key_rename = NULL; key_rename = reinterpret_cast (ikey->get_key()); key_vbr_flowfilter_entry_t * key_vbr_ff_entry = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_flowfilter_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vbr_flowfilter_entry_t))); if (!strlen(reinterpret_cast (key_rename->old_unc_vtn_name))) { UPLL_LOG_DEBUG("old_unc_vtn_name NULL"); if (key_vbr_ff_entry) free(key_vbr_ff_entry); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vbr_ff_entry->flowfilter_key.vbr_key.vtn_key.vtn_name, key_rename->old_unc_vtn_name, @@ -3265,8 +2904,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, } uuu::upll_strncpy(key_vbr_ff_entry->flowfilter_key.vbr_key.vbridge_name, - key_rename->old_unc_vnode_name, - (kMaxLenVnodeName + 1)); + key_rename->old_unc_vnode_name, + (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); @@ -3288,14 +2927,15 @@ upll_rc_t VbrFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VbrFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t VbrFlowFilterEntryMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; - //ConfigKeyVal *ckval = NULL; + // ConfigKeyVal *ckval = NULL; controller_domain ctrlr_dom; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; @@ -3309,63 +2949,73 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, key_rename_vnode_info_t *key_rename = reinterpret_cast(ikey->get_key()); - //copy the olf flowlist name to val_flowfilter_entry - val_flowfilter_entry_t *val_ff_entry = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + // copy the olf flowlist name to val_flowfilter_entry + val_flowfilter_entry_t *val_ff_entry = reinterpret_cast + + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); if (ikey->get_key_type() == UNC_KT_FLOWLIST) { - if (!strlen(reinterpret_cast(key_rename->old_flowlist_name))) { + if (!strlen(reinterpret_cast + (key_rename->old_flowlist_name))) { if (val_ff_entry) free(val_ff_entry); return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(val_ff_entry->flowlist_name, - key_rename->old_flowlist_name, - (kMaxLenFlowListName + 1)); + uuu::upll_strncpy(val_ff_entry->flowlist_name, + key_rename->old_flowlist_name, + (kMaxLenFlowListName + 1)); val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("valid and flowlist name (%d) (%s)", - val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry->flowlist_name); + val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry->flowlist_name); } else if (ikey->get_key_type() == UNC_KT_VBRIDGE) { - if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { + if (!strlen(reinterpret_cast + (key_rename->old_unc_vnode_name))) { UPLL_LOG_DEBUG("key_rename->old_unc_vnode_name NULL"); if (val_ff_entry) free(val_ff_entry); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(val_ff_entry->redirect_node, - key_rename->old_unc_vnode_name, - sizeof(val_ff_entry->redirect_node)); + key_rename->old_unc_vnode_name, + sizeof(val_ff_entry->redirect_node)); val_ff_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("valid and vbridge name (%d) (%s)", val_ff_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE], val_ff_entry->redirect_node); } - + result_code = GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - FREE_IF_NOT_NULL(val_ff_entry); - return result_code; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + FREE_IF_NOT_NULL(val_ff_entry); + return result_code; } if (!okey) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - free(val_ff_entry); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + free(val_ff_entry); + return UPLL_RC_ERR_GENERIC; } - okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry)); + okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + val_ff_entry)); - //ConfigVal *cval = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry); - //okey = new ConfigKeyVal(UNC_KT_VBR_FLOWFILTER_ENTRY, IpctSt::kIpcStKeyVbrFlowfilterEntry, NULL, cval); - //if (!okey) { + // ConfigVal *cval = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + // val_ff_entry); + // okey = new ConfigKeyVal(UNC_KT_VBR_FLOWFILTER_ENTRY, + // IpctSt::kIpcStKeyVbrFlowfilterEntry, + // NULL, + // cval); + // if (!okey) { // UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); // if (val_ff_entry) free(val_ff_entry); // return UPLL_RC_ERR_GENERIC; - // } + // } - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; - // Read the record of key structure and old flowlist name in maintbl + // Read the record of key structure and old flowlist name in maintbl result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -3383,48 +3033,48 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return result_code; } if (!kval) return UPLL_RC_ERR_GENERIC; - // Copy the new flowlist name in val_flowfilter_entry - val_flowfilter_entry_t *val_ff_entry_new = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); - if (!val_ff_entry_new) return UPLL_RC_ERR_GENERIC; - if (ikey->get_key_type() == UNC_KT_FLOWLIST) { - // New Name NuLL CHECK - if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { - if (val_ff_entry_new) free(val_ff_entry_new); - UPLL_LOG_DEBUG("new_flowlist_name NULL"); - DELETE_IF_NOT_NULL(first_ckv); - DELETE_IF_NOT_NULL(kval); - return UPLL_RC_ERR_GENERIC; - } - // Copy the new flowlist_name into val_flowfilter_entry - uuu::upll_strncpy(val_ff_entry_new->flowlist_name, - key_rename->new_flowlist_name, - (kMaxLenFlowListName + 1)); - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; - UPLL_LOG_DEBUG("flowlist name and valid (%d) (%s)", - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry_new->flowlist_name); + // Copy the new flowlist name in val_flowfilter_entry + val_flowfilter_entry_t *val_ff_entry_new = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + if (!val_ff_entry_new) return UPLL_RC_ERR_GENERIC; + if (ikey->get_key_type() == UNC_KT_FLOWLIST) { + // New Name NuLL CHECK + if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { + if (val_ff_entry_new) free(val_ff_entry_new); + UPLL_LOG_DEBUG("new_flowlist_name NULL"); + DELETE_IF_NOT_NULL(first_ckv); + DELETE_IF_NOT_NULL(kval); + return UPLL_RC_ERR_GENERIC; + } + // Copy the new flowlist_name into val_flowfilter_entry + uuu::upll_strncpy(val_ff_entry_new->flowlist_name, + key_rename->new_flowlist_name, + (kMaxLenFlowListName + 1)); + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; + UPLL_LOG_DEBUG("flowlist name and valid (%d) (%s)", + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry_new->flowlist_name); } else if (ikey->get_key_type() == UNC_KT_VBRIDGE) { - // New Name NuLL CHECK - if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { - UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); - if (val_ff_entry_new) free(val_ff_entry_new); - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(first_ckv); - return UPLL_RC_ERR_GENERIC; - } - // Copy the new vbridge name into val_flowfilter_entry - uuu::upll_strncpy(val_ff_entry_new->redirect_node, - key_rename->new_unc_vnode_name, - sizeof(val_ff_entry_new->redirect_node)); - val_ff_entry_new->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; - UPLL_LOG_DEBUG("vbridge name and valid (%d) (%s)", - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry_new->redirect_node); - + // New Name NuLL CHECK + if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { + UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); + if (val_ff_entry_new) free(val_ff_entry_new); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(first_ckv); + return UPLL_RC_ERR_GENERIC; + } + // Copy the new vbridge name into val_flowfilter_entry + uuu::upll_strncpy(val_ff_entry_new->redirect_node, + key_rename->new_unc_vnode_name, + sizeof(val_ff_entry_new->redirect_node)); + val_ff_entry_new->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; + UPLL_LOG_DEBUG("vbridge name and valid (%d) (%s)", + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry_new->redirect_node); } ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, - val_ff_entry_new); + val_ff_entry_new); kval->SetCfgVal(cval1); @@ -3439,9 +3089,9 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, ctrlr_dom.domain = NULL; GET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); if (ikey->get_key_type() == UNC_KT_FLOWLIST) { - if (!no_rename) + if (!no_rename) rename = rename | FLOW_RENAME; - else + else rename = rename & NO_FLOWLIST_RENAME; } else if (ikey->get_key_type() == UNC_KT_VBRIDGE) { if (!no_rename) @@ -3455,10 +3105,11 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, // Update the new flowlist name in MAINTBL result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Update The Existing record Err in vbrflowfilterentrytbl CANDIDATE DB(%d)", - result_code); + UPLL_LOG_DEBUG("Update The Existing record Err in" + "vbrflowfilterentrytbl CANDIDATE DB(%d)", + result_code); DELETE_IF_NOT_NULL(first_ckv); DELETE_IF_NOT_NULL(kval); return result_code; @@ -3482,72 +3133,73 @@ bool VbrFlowFilterEntryMoMgr::CompareValidValue(void *&val1, void *val2, val_flowfilter_entry_t *val_ff_entry2 = reinterpret_cast(val2); - for ( unsigned int loop = 0; loop < (sizeof(val_ff_entry1->valid)/ - sizeof(val_ff_entry1->valid[0])) ; ++loop ) { + for ( unsigned int loop = 0; loop < ( + sizeof(val_ff_entry1->valid)/ + sizeof(val_ff_entry1->valid[0])) ; ++loop ) { if ( UNC_VF_INVALID == val_ff_entry1->valid[loop] && - UNC_VF_VALID == val_ff_entry2->valid[loop]) - val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID == val_ff_entry2->valid[loop]) + val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID - && val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { + && val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->flowlist_name), - reinterpret_cast(val_ff_entry2->flowlist_name))) + reinterpret_cast(val_ff_entry2->flowlist_name))) val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { if (val_ff_entry1->action == val_ff_entry2->action) val_ff_entry1->valid[UPLL_IDX_ACTION_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID - && val_ff_entry2->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { + && val_ff_entry2->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->redirect_node), - reinterpret_cast(val_ff_entry2->redirect_node))) + reinterpret_cast(val_ff_entry2->redirect_node))) val_ff_entry1->valid[UPLL_IDX_REDIRECT_NODE_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->redirect_port), - reinterpret_cast(val_ff_entry2->redirect_port))) - val_ff_entry1->valid[UPLL_IDX_REDIRECT_PORT_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + reinterpret_cast(val_ff_entry2->redirect_port))) + val_ff_entry1->valid[UPLL_IDX_REDIRECT_PORT_FFE] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID) { if (!memcmp(reinterpret_cast(val_ff_entry1->modify_dstmac), - reinterpret_cast(val_ff_entry2->modify_dstmac), - sizeof(val_ff_entry2->modify_dstmac))) + reinterpret_cast(val_ff_entry2->modify_dstmac), + sizeof(val_ff_entry2->modify_dstmac))) val_ff_entry1->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID) { if (!memcmp(reinterpret_cast(val_ff_entry1->modify_srcmac), - reinterpret_cast(val_ff_entry2->modify_srcmac), - sizeof(val_ff_entry2->modify_srcmac))) + reinterpret_cast(val_ff_entry2->modify_srcmac), + sizeof(val_ff_entry2->modify_srcmac))) val_ff_entry1->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->nwm_name), - reinterpret_cast(val_ff_entry2->nwm_name))) + reinterpret_cast(val_ff_entry2->nwm_name))) val_ff_entry1->valid[UPLL_IDX_NWM_NAME_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID) { if (val_ff_entry1->dscp == val_ff_entry2->dscp) val_ff_entry1->valid[UPLL_IDX_DSCP_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID) { if (val_ff_entry1->priority == val_ff_entry2->priority) val_ff_entry1->valid[UPLL_IDX_PRIORITY_FFE] = UNC_VF_INVALID; } for (unsigned int loop = 0; - loop < sizeof(val_ff_entry1->valid)/ sizeof(uint8_t); ++loop) { + loop < sizeof(val_ff_entry1->valid)/ sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_ff_entry1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_ff_entry1->valid[loop])) attr = false; @@ -3620,8 +3272,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, } upll_rc_t VbrFlowFilterEntryMoMgr::DeleteChildrenPOM( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; uint8_t *ctrlr_id = NULL; @@ -3700,8 +3352,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val->valid) / sizeof(val->valid[0]); - ++loop) { + loop < sizeof(val->valid) / sizeof(val->valid[0]); + ++loop) { if (val->valid[loop] == UNC_VF_VALID) { val->cs_attr[loop] = UNC_CS_APPLIED; } else if (val->valid[loop] == UNC_VF_INVALID) { @@ -3713,12 +3365,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } -upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { +upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus( + ConfigKeyVal *vbr_key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; ConfigKeyVal * vbr_ffe_run_key = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -3735,22 +3388,22 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, result_code = GetChildConfigKey(vbr_ffe_run_key, vbr_key); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); return result_code; } DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag |kOpInOutCs }; + kOpInOutFlag |kOpInOutCs }; result_code = ReadConfigDB(vbr_ffe_run_key, UPLL_DT_RUNNING , - UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); + UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from RunningDb"); DELETE_IF_NOT_NULL(vbr_ffe_run_key); - return result_code; + return result_code; } val_main = reinterpret_cast - (GetVal(vbr_ffe_run_key)); + (GetVal(vbr_ffe_run_key)); for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { + sizeof(val_main->valid[0]); ++loop) { vbr_ffe_val->cs_attr[loop] = val_main->cs_attr[loop]; } void *vbrffeval = reinterpret_cast(vbr_ffe_val); @@ -3758,21 +3411,21 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, } else { return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_TRACE("%s",(vbr_key->ToStrAll()).c_str()); - val_flowfilter_entry_t *vbr_ffe_val2 = - reinterpret_cast(GetVal(upd_key)); + UPLL_LOG_TRACE("%s", (vbr_key->ToStrAll()).c_str()); + val_flowfilter_entry_t *vbr_ffe_val2 = + reinterpret_cast(GetVal(upd_key)); if (UNC_OP_UPDATE == op) { - UPLL_LOG_TRACE("%s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); vbr_ffe_val->cs_row_status = vbr_ffe_val2->cs_row_status; } for (unsigned int loop = 0; - loop < sizeof(vbr_ffe_val->valid) / + loop < sizeof(vbr_ffe_val->valid) / sizeof(vbr_ffe_val->valid[0]); ++loop) { /* Setting CS to the not supported attributes*/ if (UNC_VF_NOT_SUPPORTED == vbr_ffe_val->valid[loop]) { vbr_ffe_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; } else if ((UNC_VF_VALID == vbr_ffe_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vbr_ffe_val->valid[loop])) { + || (UNC_VF_VALID_NO_VALUE == vbr_ffe_val->valid[loop])) { vbr_ffe_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vbr_ffe_val->valid[loop]) && (UNC_OP_CREATE == op)) { @@ -3785,13 +3438,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, } } } else if ((UNC_VF_VALID == vbr_ffe_val->valid[loop]) && - (UNC_OP_UPDATE == op)) { + (UNC_OP_UPDATE == op)) { if (cs_status == UNC_CS_APPLIED) { vbr_ffe_val->cs_attr[loop] = UNC_CS_APPLIED; - } - } - if ((vbr_ffe_val->valid[loop] == UNC_VF_VALID_NO_VALUE) - &&(UNC_OP_UPDATE == op)) { + } + } + if ((vbr_ffe_val->valid[loop] == UNC_VF_VALID_NO_VALUE) + &&(UNC_OP_UPDATE == op)) { vbr_ffe_val->cs_attr[loop] = UNC_CS_UNKNOWN; } } @@ -3800,9 +3453,9 @@ upll_rc_t VbrFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, } bool VbrFlowFilterEntryMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); @@ -3810,12 +3463,12 @@ bool VbrFlowFilterEntryMoMgr::FilterAttributes(void *&val1, } upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *val_ffe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_ffe) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -3828,8 +3481,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -3849,14 +3502,14 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -3870,7 +3523,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (fl_rename & 0x01) { - rename |= FLOW_RENAME; // TODO Check for correct flag value + rename |= FLOW_RENAME; // TODO(upll): + // Check for correct flag value } DELETE_IF_NOT_NULL(fl_ckv); } @@ -3885,14 +3539,14 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, if (UNC_VF_VALID == val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -3906,7 +3560,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (fl_rename & 0x01) { - rename |= FLOW_RENAME; // TODO Check for correct flag value + rename |= FLOW_RENAME; // TODO(upll): Check + // for correct flag value } else { rename &= NO_FLOWLIST_RENAME; /* reset flag*/ @@ -3914,7 +3569,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(fl_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_ffe->valid [UPLL_IDX_FLOWLIST_NAME_FFE]) { - rename &= NO_FLOWLIST_RENAME; // TODO Check for correct flag value. No rename flowlist value should be set + rename &= NO_FLOWLIST_RENAME; // TODO(upll): Check for correct flag value + // No rename flowlist value should be set } SET_USER_DATA_FLAGS(ikey, rename); } @@ -3922,13 +3578,13 @@ upll_rc_t VbrFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VbrFlowFilterEntryMoMgr::GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + UNC_KT_FLOWLIST))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -3937,8 +3593,8 @@ upll_rc_t VbrFlowFilterEntryMoMgr::GetFlowlistConfigKey( key_flowlist_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->flowlist_name, - flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_name, + (kMaxLenFlowListName+1)); return UPLL_RC_SUCCESS; } } // namespace kt_momgr diff --git a/coordinator/modules/upll/vbr_flowfilter_entry_momgr.hh b/coordinator/modules/upll/vbr_flowfilter_entry_momgr.hh index 3adc7f20..75d88427 100644 --- a/coordinator/modules/upll/vbr_flowfilter_entry_momgr.hh +++ b/coordinator/modules/upll/vbr_flowfilter_entry_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,12 +20,12 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_VBR_FLOWFILER_ENTRY */ -/** - * @brief VbrFlowFilterEntryMoMgr class handles all the request - * received from service. - */ -class VbrFlowFilterEntryMoMgr : public MoMgrImpl { - private: + /** + * @brief VbrFlowFilterEntryMoMgr class handles all the request + * received from service. + */ + class VbrFlowFilterEntryMoMgr : public MoMgrImpl { + private: /** * @brief Member Variable for VbrFlowfilterEntryBindInfo. */ @@ -40,9 +40,8 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @brief Member Variable for FlowListRenameBindInfo. */ static BindInfo vbr_flowlist_rename_bind_info[]; - uint32_t cur_instance_count; - public: + public: /** * @brief Validates the Attribute of a Particular Class. * @@ -62,8 +61,8 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { upll_keytype_datatype_t dt_type); upll_rc_t TxVote(unc_key_type_t keytype, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); /** * @Brief Validates the syntax of the specified key and value structure * for KT_VBR_FLOWFILTER_ENTRY keytype @@ -91,8 +90,8 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVbrFlowfilterEntryKey( - key_vbr_flowfilter_entry_t *key_vbr_flowfilter_entry, - unc_keytype_operation_t operation); + key_vbr_flowfilter_entry_t *key_vbr_flowfilter_entry, + unc_keytype_operation_t operation); upll_rc_t GetControllerDomainID(ConfigKeyVal *ikey, controller_domain *ctrlr_dom, @@ -112,8 +111,7 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ static upll_rc_t ValidateFlowfilterEntryValue( - val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation, - bool action_valid = false, bool action_redirect = false); + val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation); /** * @Brief Validates the syntax for redirect_port, redirect_node fields of @@ -126,8 +124,8 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ static upll_rc_t ValidateRedirectField( - val_flowfilter_entry_t *val_flowfilter_entry, - uint32_t operation); + val_flowfilter_entry_t *val_flowfilter_entry, + uint32_t operation); /** * @Brief Validates the syntax for action field and checks whether @@ -141,8 +139,7 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ static upll_rc_t ValidateFlowfilterEntryAction( - val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation, - bool db_up_action_valid, bool action_redirect); + val_flowfilter_entry_t *val_flowfilter_entry, uint32_t operation); /** * @Brief Checks if the specified key type and @@ -157,7 +154,7 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Generic failure. */ static upll_rc_t ValFlowFilterEntryAttributeSupportCheck( - val_flowfilter_entry_t *val_flowfilter_entry, const uint8_t* attrs); + val_flowfilter_entry_t *val_flowfilter_entry, const uint8_t* attrs); /** * @brief VbrFlowFilterEntryMoMgr Class Constructor. @@ -188,8 +185,8 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_SUCCESS validation succeeded. * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ - upll_rc_t ValidateValFlowfilterEntry(IpcReqRespHeader *req, - ConfigKeyVal *key, DalDmlIntf *dmi = NULL); + upll_rc_t ValidateValFlowfilterEntry(IpcReqRespHeader *req, + ConfigKeyVal *key); /** * @Brief Checks if the specified key type(KT_VBR_FLOWFILTER_ENTRY) and @@ -205,8 +202,8 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char* ctrlr_name = NULL); /** * @brief Methods Used for getting Value Attribute. @@ -263,14 +260,15 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @param[in] cs_status Describes CsStatus Infomation. * Information. * @param[in] phase Describes the Phase of the Operation. - * @param[in] ckv_audit Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** * @brief Method used to fill the CongigKeyVal with the Parent @@ -393,7 +391,7 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi, bool restore_flag = false); /** * @brief Method used for Read Operation. @@ -463,15 +461,15 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { */ upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); - /** - * @brief Method Used for Getting the Controller Id. - * - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmiIntf Class - * - * @retval UPLL_RC_SUCCESS Successfull Operation. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ + /** + * @brief Method Used for Getting the Controller Id. + * + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmiIntf Class + * + * @retval UPLL_RC_SUCCESS Successfull Operation. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ upll_rc_t GetControllerId(ConfigKeyVal *ikey, DalDmlIntf *dmi); @@ -524,7 +522,7 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ @@ -572,13 +570,13 @@ class VbrFlowFilterEntryMoMgr : public MoMgrImpl { unc_keytype_operation_t op); upll_rc_t GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi); upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); -}; + DalDmlIntf *dmi, + IpcReqRespHeader *req); + }; } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vbr_flowfilter_momgr.cc b/coordinator/modules/upll/vbr_flowfilter_momgr.cc index d42f0c2c..911c68f1 100644 --- a/coordinator/modules/upll/vbr_flowfilter_momgr.cc +++ b/coordinator/modules/upll/vbr_flowfilter_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -57,8 +57,8 @@ BindInfo VbrFlowFilterMoMgr::vbr_flowfilter_maintbl_bind_info[] = { offsetof(key_rename_vnode_info_t, new_unc_vtn_name), uud::kDalChar, (kMaxLenVtnName + 1) }, { uudst::vbr_flowfilter::kDbiVbrName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, (kMaxLenVnodeName + 1) }, + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, (kMaxLenVnodeName + 1) }, { uudst::vbr_flowfilter::kDbiFlags, CK_VAL, // changed offsetof(key_user_data_t, flags), uud::kDalUint8, 1} @@ -75,9 +75,10 @@ VbrFlowFilterMoMgr::VbrFlowFilterMoMgr() : MoMgrImpl() { // For Main Table table[MAINTBL] = new Table(uudst::kDbiVbrFlowFilterTbl, - UNC_KT_VBR_FLOWFILTER, vbr_flowfilter_bind_info, - IpctSt::kIpcStKeyVbrFlowfilter, IpctSt::kIpcStValFlowfilter, - uudst::vbr_flowfilter::kDbiVbrFlowFilterNumCols); + UNC_KT_VBR_FLOWFILTER, vbr_flowfilter_bind_info, + IpctSt::kIpcStKeyVbrFlowfilter, + IpctSt::kIpcStValFlowfilter, + uudst::vbr_flowfilter::kDbiVbrFlowFilterNumCols); table[RENAMETBL] = NULL; @@ -85,7 +86,6 @@ VbrFlowFilterMoMgr::VbrFlowFilterMoMgr() : MoMgrImpl() { nchild = sizeof(vbr_flowfilter_child) / sizeof(vbr_flowfilter_child[0]); child = vbr_flowfilter_child; - cur_instance_count = 0; } bool VbrFlowFilterMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, @@ -94,7 +94,7 @@ bool VbrFlowFilterMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, MoMgrTables tbl) { UPLL_FUNC_TRACE; nattr = sizeof(vbr_flowfilter_maintbl_bind_info)/ - sizeof(vbr_flowfilter_maintbl_bind_info[0]); + sizeof(vbr_flowfilter_maintbl_bind_info[0]); binfo = vbr_flowfilter_maintbl_bind_info; UPLL_LOG_DEBUG("Successful Completion"); @@ -109,7 +109,12 @@ upll_rc_t VbrFlowFilterMoMgr::IsReferenced(ConfigKeyVal *ikey, if (NULL == ikey) return UPLL_RC_ERR_GENERIC; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; // Check the object existence - result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_READ, dmi, &dbop, MAINTBL); + result_code = UpdateConfigDB(ikey, + dt_type, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("No such instance to delete"); return result_code; @@ -118,81 +123,112 @@ upll_rc_t VbrFlowFilterMoMgr::IsReferenced(ConfigKeyVal *ikey, } upll_rc_t VbrFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; controller_domain ctrlr_dom; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; -// std::cout << "MoMgrImpl::CreateCandidateMo\n"; + // std::cout << "MoMgrImpl::CreateCandidateMo\n"; if (ikey == NULL || req == NULL) { - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } upll_rc_t result_code = UPLL_RC_SUCCESS; - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateAttribute failed, Error - %d", result_code); return result_code; } - // Check if Object already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { -// std::cout << "Record already exists in Candidate DB\n"; - return result_code; - } - // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, - UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - return UPLL_RC_ERR_GENERIC; + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } - } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { // create a record in CANDIDATE DB VbrMoMgr *mgrvbr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); ConfigKeyVal *ckv = NULL; result_code = mgrvbr->GetChildConfigKey(ckv, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to get the ParentConfigKey, resultcode=%d", - result_code); + result_code); return result_code; } key_vbr_flowfilter_t *ff_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vbr_t *vbr_key = reinterpret_cast(ckv->get_key()); uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - ff_key->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + ff_key->vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vbr_key->vbridge_name, - ff_key->vbr_key.vbridge_name, - kMaxLenVnodeName + 1); + ff_key->vbr_key.vbridge_name, + kMaxLenVnodeName + 1); // Read Controller ID and Domain ID from the VBridge and set it to the // Input ConfigKeyVal DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; result_code = mgrvbr->ReadConfigDB(ckv, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to Read the details from DB for the parent err %d", - result_code); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } + UPLL_LOG_DEBUG("Unable to Read the details from DB" + "for the parent err %d", + result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } @@ -201,32 +237,11 @@ upll_rc_t VbrFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); - - ConfigKeyVal *tmp_key = NULL; - result_code = GetChildConfigKey(tmp_key, NULL); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed in ValidateCapability"); - DELETE_IF_NOT_NULL(ckv); - return result_code; - } - result_code = GetInstanceCount(tmp_key, - reinterpret_cast(ctrlr_dom.ctrlr), - req->datatype, - &cur_instance_count, - dmi, - MAINTBL); - - delete tmp_key; tmp_key = NULL; - - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount Failed in ValidateCapability"); - DELETE_IF_NOT_NULL(ckv); - return result_code; - } + ctrlr_dom.ctrlr, ctrlr_dom.domain); result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); @@ -243,13 +258,14 @@ upll_rc_t VbrFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } -upll_rc_t VbrFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VbrFlowFilterMoMgr::GetControllerDomainID( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; VbrMoMgr *mgrvbr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); if (NULL == mgrvbr) { UPLL_LOG_DEBUG("mgrvbr is NULL"); return UPLL_RC_ERR_GENERIC; @@ -258,30 +274,30 @@ upll_rc_t VbrFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, result_code = mgrvbr->GetChildConfigKey(ckv, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to get the ParentConfigKey,resultcode=%d", - result_code); + result_code); return result_code; } key_vbr_flowfilter_t *ff_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vbr_t *vbr_key = reinterpret_cast(ckv->get_key()); - + uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - ff_key->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + ff_key->vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vbr_key->vbridge_name, - ff_key->vbr_key.vbridge_name, - kMaxLenVnodeName + 1); - //Read Controller ID and Domain ID from the VBridge and set it to the - //Input ConfigKeyVal + ff_key->vbr_key.vbridge_name, + kMaxLenVnodeName + 1); + // Read Controller ID and Domain ID from the VBridge and set it to the + // Input ConfigKeyVal DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; result_code = mgrvbr->ReadConfigDB(ckv, dt_type, UNC_OP_READ, - dbop, dmi, MAINTBL); - + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to Read the details from DB for the parent err %d", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } @@ -291,26 +307,27 @@ upll_rc_t VbrFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, result_code = mgrvbr->GetControllerDomainId(ckv, &ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); DELETE_IF_NOT_NULL(ckv); return UPLL_RC_SUCCESS; } upll_rc_t VbrFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. * else - create using the controller name. */ result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } @@ -331,79 +348,25 @@ upll_rc_t VbrFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ctrlr_dom.ctrlr, ctrlr_dom.domain); // Create a record in AUDIT DB - result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); + result_code = UpdateConfigDB(ikey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); return result_code; } - + return UPLL_RC_SUCCESS; } upll_rc_t VbrFlowFilterMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - ConfigKeyVal *okey = NULL; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_DEBUG("input key is null"); - return UPLL_RC_ERR_GENERIC; - } - - key_vbr_flowfilter_t *key_vbr_ff = - reinterpret_cast(ikey->get_key()); - - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBRIDGE))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for KT_VBRIDGE key struct - %d", - result_code); - return result_code; - } - - key_vbr_t *vbr_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - key_vbr_ff->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbr_key->vbridge_name, - key_vbr_ff->vbr_key.vbridge_name, - kMaxLenVnodeName + 1); - - /* Checks the given key_vbr exists in DB or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent KT_VBRIDGE key does not exists"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; - - if (UNC_OP_CREATE == req->operation) { - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - } - - - UPLL_LOG_DEBUG("ValidateAttribute Successfull."); - return result_code; + // No operation + return UPLL_RC_SUCCESS; } upll_rc_t VbrFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, @@ -418,8 +381,8 @@ upll_rc_t VbrFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -439,8 +402,8 @@ upll_rc_t VbrFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VbrFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; if ((NULL == req) || (NULL == ikey)) { @@ -458,8 +421,8 @@ upll_rc_t VbrFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name : (%s)" - "operation : (%d)", - ctrlr_name, req->operation); + "operation : (%d)", + ctrlr_name, req->operation); bool result_code = false; uint32_t instance_count; @@ -468,28 +431,23 @@ upll_rc_t VbrFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { - UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", + req->operation); result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &instance_count, &max_attrs, &attrs); - if (result_code && cur_instance_count >= instance_count && - cur_instance_count !=0 && instance_count != 0) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } - break; } default: { if (req->datatype == UPLL_DT_STATE) { - UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", + req->operation); result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } else { - UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", + req->operation); result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } } } @@ -497,7 +455,8 @@ upll_rc_t VbrFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!result_code) { UPLL_LOG_DEBUG(" keytype(%d) is not supported by controller(%s) " "for opeartion(%d) And Result_code (%d)", - ikey->get_key_type(), ctrlr_name, req->operation, result_code); + ikey->get_key_type(), ctrlr_name, req->operation, + result_code); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } return UPLL_RC_SUCCESS; @@ -519,39 +478,40 @@ upll_rc_t VbrFlowFilterMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (key->get_st_num() != IpctSt::kIpcStKeyVbrFlowfilter) { - UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", - key->get_st_num()); + UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); - return UPLL_RC_ERR_INVALID_OPTION1; - } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); + return UPLL_RC_ERR_INVALID_OPTION1; + } if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } - /** Read key & value structure */ + /** Read key & value structure */ key_vbr_flowfilter_t *key_vbr_flowfilter = reinterpret_cast(key->get_key()); @@ -561,15 +521,15 @@ upll_rc_t VbrFlowFilterMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } - rt_code = ValidateVbrFlowfilterKey(key_vbr_flowfilter, - req->operation); + rt_code = ValidateVbrFlowfilterKey(key_vbr_flowfilter, + req->operation); - if (UPLL_RC_SUCCESS != rt_code) { - UPLL_LOG_DEBUG(" key_vbr_flowfilter syntax validation failed :" - "Err Code - %d", - rt_code); - return rt_code; - } + if (UPLL_RC_SUCCESS != rt_code) { + UPLL_LOG_DEBUG(" key_vbr_flowfilter syntax validation failed :" + "Err Code - %d", + rt_code); + return rt_code; + } return UPLL_RC_SUCCESS; } @@ -828,19 +788,19 @@ upll_rc_t VbrFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, void *tkey = req->get_key(); if (tkey != NULL) { key_vbr_flowfilter_t *ikey = - reinterpret_cast (tkey); + reinterpret_cast (tkey); key_vbr_flowfilter_t *vbr_flowfilter = - reinterpret_cast + reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbr_if_flowfilter_t))); memcpy(vbr_flowfilter, ikey, sizeof(key_vbr_flowfilter_t)); okey = new ConfigKeyVal(UNC_KT_VBR_FLOWFILTER, - IpctSt::kIpcStKeyVbrFlowfilter, - vbr_flowfilter, tmp1); + IpctSt::kIpcStKeyVbrFlowfilter, + vbr_flowfilter, tmp1); } - if (okey) + if (okey) { SET_USER_DATA(okey, req) - else { + } else { DELETE_IF_NOT_NULL(tmp1); return UPLL_RC_ERR_GENERIC; } @@ -864,9 +824,9 @@ upll_rc_t VbrFlowFilterMoMgr::RenameMo(IpcReqRespHeader *req, } upll_rc_t VbrFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckval = NULL; @@ -885,7 +845,7 @@ upll_rc_t VbrFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -928,14 +888,14 @@ upll_rc_t VbrFlowFilterMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE("%s GetRenamedUncKey vbrff start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if ((NULL == ikey) || (ctrlr_id == NULL) || (NULL == dmi)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); return UPLL_RC_ERR_GENERIC; } MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); + (const_cast (GetMoManager(UNC_KT_VBRIDGE))); if (!mgrvbr) { UPLL_LOG_DEBUG("mgrvbr failed"); return UPLL_RC_ERR_GENERIC; @@ -980,7 +940,7 @@ upll_rc_t VbrFlowFilterMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); result_code = mgrvbr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); + dbop, dmi, RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -1002,9 +962,9 @@ upll_rc_t VbrFlowFilterMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, } UPLL_LOG_TRACE("%s GetRenamedUncKey vbrff end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); - mgrvbr = NULL; + mgrvbr = NULL; return UPLL_RC_SUCCESS; } @@ -1014,57 +974,61 @@ upll_rc_t VbrFlowFilterMoMgr::GetRenamedControllerKey( UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; - uint8_t rename = 0; - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) { - UPLL_LOG_DEBUG("no renamed"); - return UPLL_RC_SUCCESS; - } UPLL_LOG_TRACE("Start Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); + (const_cast (GetMoManager(UNC_KT_VBRIDGE))); result_code = mgrvbr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; } - if (ctrlr_dom) + if (ctrlr_dom) { SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + } else { + UPLL_LOG_DEBUG("Controller and domain Id are null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); - uuu::upll_strncpy(reinterpret_cast (okey->get_key())->vtn_key.vtn_name, + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vtn_key.vtn_name, reinterpret_cast (ikey->get_key())->vbr_key.vtn_key.vtn_name, - (kMaxLenVnodeName + 1)); + (kMaxLenVtnName + 1)); UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name); - uuu::upll_strncpy(reinterpret_cast (okey->get_key())->vbridge_name, + reinterpret_cast + (okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->vbr_key.vtn_key.vtn_name); + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vbridge_name, reinterpret_cast (ikey->get_key())->vbr_key.vbridge_name, (kMaxLenVnodeName + 1)); UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name); + reinterpret_cast (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->vbr_key.vbridge_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); + dbop, dmi, RENAMETBL); if ( result_code != UPLL_RC_SUCCESS ) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); + UPLL_LOG_DEBUG("ReadConfigDB no instance"); DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_SUCCESS; + } + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } val_rename_vnode *rename_val = NULL; @@ -1074,168 +1038,43 @@ upll_rc_t VbrFlowFilterMoMgr::GetRenamedControllerKey( DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); - UPLL_LOG_DEBUG("vtn re name(%s) (%s)", - reinterpret_cast + UPLL_LOG_DEBUG("vtn name renamed"); + uuu::upll_strncpy(reinterpret_cast (ikey->get_key())->vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name); - } + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); + UPLL_LOG_DEBUG("vtn re name(%s) (%s)", + reinterpret_cast + (ikey->get_key())->vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name); - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vbr name renamed"); - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast + UPLL_LOG_DEBUG("vbr name renamed"); + uuu::upll_strncpy(reinterpret_cast (ikey->get_key())->vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name); - } + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); + UPLL_LOG_DEBUG("vbr name (%s) (%s)", + reinterpret_cast + (ikey->get_key())->vbr_key.vbridge_name, + rename_val->ctrlr_vnode_name); + DELETE_IF_NOT_NULL(okey); - SET_USER_DATA_FLAGS(ikey, rename); UPLL_LOG_TRACE("End Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); return UPLL_RC_SUCCESS; -#if 0 - /* Vtn renamed */ - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - MoMgrImpl *mgrvtn =reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VTN))); - result_code = mgrvtn->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } else { - UPLL_LOG_DEBUG("ctrlr_dom null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy( - reinterpret_cast (okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); -// UPLL_LOG_DEBUG("vtn name (%s) (%s)" (okey->get_key())->vtn_name, -// (ikey->get_key())->vbr_key.vtn_key.vtn_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrvtn->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB null"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - val_rename_vtn *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); - - if (!rename_val) { - UPLL_LOG_DEBUG("Vtn Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name, - rename_val->new_name, - (kMaxLenVtnName + 1)); - UPLL_LOG_DEBUG("vtn re name(%s) (%s)", - reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name, - rename_val->new_name); - DELETE_IF_NOT_NULL(okey); - SET_USER_DATA_FLAGS(ikey, rename); - } - // Vbr Renamed - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vbr name renamed"); - MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (ctrlr_dom) - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy(reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name); - uuu::upll_strncpy(reinterpret_cast (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - val_rename_vnode *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("Vbr Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name); - DELETE_IF_NOT_NULL(okey); - } - UPLL_LOG_TRACE("%s GetRenamedCtrl end", ikey->ToStrAll().c_str()); - UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); - return UPLL_RC_SUCCESS; -#endif } - upll_rc_t VbrFlowFilterMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_t *val = NULL; val = (ckv_running != NULL)? - reinterpret_cast (GetVal(ckv_running)):NULL; + reinterpret_cast (GetVal(ckv_running)):NULL; if (NULL == val) { UPLL_LOG_DEBUG("Memory Not Allocated"); @@ -1244,8 +1083,8 @@ upll_rc_t VbrFlowFilterMoMgr::UpdateAuditConfigStatus( if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; UPLL_LOG_DEBUG("AuditUpdate Config Status Information %d", result_code); @@ -1305,9 +1144,10 @@ upll_rc_t VbrFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, } GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - //Added CApaCheck + // Added CApaCheck result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); DELETE_IF_NOT_NULL(dup_key); @@ -1335,10 +1175,10 @@ upll_rc_t VbrFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, ipc_req.header.datatype = req->datatype; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, - true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, + true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -1350,8 +1190,8 @@ upll_rc_t VbrFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(l_key); DELETE_IF_NOT_NULL(dup_key); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); @@ -1399,9 +1239,9 @@ upll_rc_t VbrFlowFilterMoMgr::UpdateConfigStatus(ConfigKeyVal *key, if (vbrflowfilter_val->cs_row_status != UNC_CS_NOT_SUPPORTED) vbrflowfilter_val->cs_row_status = cs_status; } else { - UPLL_LOG_DEBUG("Operation Not Supported."); - return UPLL_RC_ERR_GENERIC; - } + UPLL_LOG_DEBUG("Operation Not Supported."); + return UPLL_RC_ERR_GENERIC; + } UPLL_LOG_DEBUG("Update Config Status Successfull."); return UPLL_RC_SUCCESS; @@ -1421,12 +1261,12 @@ upll_rc_t VbrFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_rename_vnode_info *key_rename = NULL; key_rename = reinterpret_cast (ikey->get_key()); key_vbr_flowfilter_t * key_vbr = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_flowfilter_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_flowfilter_t))); if (!strlen(reinterpret_cast (key_rename->old_unc_vtn_name))) { free(key_vbr); UPLL_LOG_DEBUG("String Length not Valid to Perform the Operation"); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vbr->vbr_key.vtn_key.vtn_name, @@ -1438,9 +1278,9 @@ upll_rc_t VbrFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, free(key_vbr); return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(key_vbr->vbr_key.vbridge_name, - key_rename->old_unc_vnode_name, - (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(key_vbr->vbr_key.vbridge_name, + key_rename->old_unc_vnode_name, + (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); @@ -1497,7 +1337,7 @@ upll_rc_t VbrFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } else if (req->datatype == UPLL_DT_STATE && (req->option1 == UNC_OPT1_DETAIL || req->option2 != UNC_OPT2_NONE)) { - result_code = DupConfigKeyVal(tctrl_key, ikey, MAINTBL); + result_code = DupConfigKeyVal(tctrl_key, ikey, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG(" DupConfigKeyVal failed for l_key%d ", result_code); return result_code; @@ -1534,9 +1374,10 @@ upll_rc_t VbrFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - //Added CApaCheck + // Added CApaCheck result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); DELETE_IF_NOT_NULL(dup_key); @@ -1549,7 +1390,6 @@ upll_rc_t VbrFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(l_key); DELETE_IF_NOT_NULL(dup_key); DELETE_IF_NOT_NULL(tctrl_key); @@ -1589,9 +1429,10 @@ upll_rc_t VbrFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + UPLL_LOG_DEBUG("Driver response for Key %d controller" + "%s result %d", + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(dup_key); DELETE_IF_NOT_NULL(l_key); @@ -1627,8 +1468,11 @@ upll_rc_t VbrFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, return result_code; } -upll_rc_t VbrFlowFilterMoMgr::GetValid(void *val, uint64_t indx, - uint8_t *&valid, upll_keytype_datatype_t dt_type, MoMgrTables tbl) { +upll_rc_t VbrFlowFilterMoMgr::GetValid(void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (val == NULL) { UPLL_LOG_DEBUG("Memory is not Allocated"); @@ -1668,7 +1512,7 @@ upll_rc_t VbrFlowFilterMoMgr::ConstructReadDetailResponse( } memcpy(val_ff, tmp_val_ff, sizeof(val_flowfilter_t)); tmp_okey->AppendCfgVal(IpctSt::kIpcStValFlowfilter, val_ff); - tmp_okey->AppendCfgVal(drv_resp_ckv->GetCfgValAndUnlink()); + tmp_okey->AppendCfgVal(drv_resp_ckv->GetCfgValAndUnlink()); if (*okey == NULL) { *okey = tmp_okey; @@ -1686,7 +1530,7 @@ upll_rc_t VbrFlowFilterMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VBR_FLOWFILTER) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -1717,14 +1561,14 @@ upll_rc_t VbrFlowFilterMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, } upll_rc_t VbrFlowFilterMoMgr::DeleteChildrenPOM( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == dmi) { - UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); - return result_code; + UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); + return result_code; } // Read the DB get the flowlist value and send the delete request to // flowlist momgr if flowlist is configured. @@ -1735,7 +1579,7 @@ upll_rc_t VbrFlowFilterMoMgr::DeleteChildrenPOM( return result_code; } result_code = UpdateConfigDB(tempckv, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tempckv); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { @@ -1743,7 +1587,7 @@ upll_rc_t VbrFlowFilterMoMgr::DeleteChildrenPOM( return UPLL_RC_SUCCESS; } UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); return result_code; } delete tempckv; @@ -1754,7 +1598,7 @@ upll_rc_t VbrFlowFilterMoMgr::DeleteChildrenPOM( upll_rc_t VbrFlowFilterMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { UPLL_FUNC_TRACE; val_flowfilter_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); val->cs_row_status = UNC_CS_APPLIED; ikey->AppendCfgVal(IpctSt::kIpcStValFlowfilter, val); return UPLL_RC_SUCCESS; diff --git a/coordinator/modules/upll/vbr_flowfilter_momgr.hh b/coordinator/modules/upll/vbr_flowfilter_momgr.hh index e6525401..1920eba1 100644 --- a/coordinator/modules/upll/vbr_flowfilter_momgr.hh +++ b/coordinator/modules/upll/vbr_flowfilter_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -17,12 +17,12 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_VBR_FLOWFILER */ -/** - * @brief VbrFlowFilterMoMgr class handles all the request - * received from service. - */ -class VbrFlowFilterMoMgr : public MoMgrImpl { - private: + /** + * @brief VbrFlowFilterMoMgr class handles all the request + * received from service. + */ + class VbrFlowFilterMoMgr : public MoMgrImpl { + private: static unc_key_type_t vbr_flowfilter_child[]; /** * @brief Member Variable for VbrFlowfilterBindInfo. @@ -34,7 +34,6 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { */ static BindInfo vbr_flowfilter_maintbl_bind_info[]; - uint32_t cur_instance_count; /** * @brief Validates the Attribute of a Particular Class. * @@ -60,7 +59,7 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance does Not exist * */ upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi, bool restore_flag = false); /** * @Brief This API is used to check the object availability @@ -104,25 +103,25 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { key_vbr_flowfilter_t* key_vbr_flowfilter, unc_keytype_operation_t op); - /** - * @Brief Checks if the specified key type(KT_VBR_FLOWFILTER) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request - * structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller name. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + /** + * @Brief Checks if the specified key type(KT_VBR_FLOWFILTER) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request + * structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller name. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); + const char* ctrlr_name = NULL); - public: + public: /** * @brief VbrFlowFilterMoMgr Class Constructor. */ @@ -162,14 +161,15 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { * @param[in] ctrlr_rslt Describes Commit Control result * Information. * @param[in] phase Describes the Phase of the Operation. - * @param[in] ckv_audit Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** * @brief Method used to fill the CongigKeyVal with the Parent @@ -219,11 +219,11 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { * * @retval UPLL_RC_SUCCESS Successful Completion **/ - upll_rc_t GetValid(void*val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl); + upll_rc_t GetValid(void*val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl); /** * @brief Method used to Duplicate the ConfigkeyVal. @@ -359,19 +359,19 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /** - * @brief Method To Compare the Valid Check of Attributes - * - * @param[out] val1 Pointer to ConfigKeyVal Class which contains only Valid Attributes - * @param[in] val2 Pointer to ConfigKeyVal Class. - * @param[in] audit If true,Audit Process. - * - * @return Void Function. - */ + /** + * @brief Method To Compare the Valid Check of Attributes + * + * @param[out] val1 Pointer to ConfigKeyVal Class which contains only Valid Attributes + * @param[in] val2 Pointer to ConfigKeyVal Class. + * @param[in] audit If true,Audit Process. + * + * @return Void Function. + */ bool CompareValidValue(void *&val1, void *val2, bool audit) { return false; } - /** + /** * @brief Method used for ReadSibling Operation. * * @param[in] req Describes RequestResponderHeaderClass. @@ -387,7 +387,7 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { bool begin, DalDmlIntf *dmi); - /** + /** * @brief Method used for GetParentConfigKey Operation. * * @param[out] okey Pointer to ConfigKeyVal Class. @@ -400,7 +400,7 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /** + /** * @brief Method to check validity of Key * * @param[in] ConfigKeyVal input COnfigKeyVal @@ -437,10 +437,9 @@ class VbrFlowFilterMoMgr : public MoMgrImpl { unc_keytype_operation_t op); upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); - -}; + DalDmlIntf *dmi, + IpcReqRespHeader *req); + }; } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.cc b/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.cc index 08437340..15f1662e 100644 --- a/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.cc +++ b/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.cc @@ -1,7 +1,7 @@ /* * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -29,7 +29,7 @@ using unc::upll::ipc_util::IpcUtil; #define SET_FLAG_VLINK 0x40 #define SET_FLAG_PORTMAP 0x20 #define SET_FLAG_VLINK_PORTMAP (SET_FLAG_VLINK | SET_FLAG_PORTMAP) -#define SET_FLAG_NO_VLINK_PORTMAP ~SET_FLAG_VLINK_PORTMAP +#define SET_FLAG_NO_VLINK_PORTMAP 0x9F #define FLOW_RENAME 0x04 #define NO_FLOWLIST_RENAME ~FLOW_RENAME @@ -148,7 +148,7 @@ BindInfo VbrIfFlowFilterEntryMoMgr::vbr_if_flowfilter_entry_bind_info[] = { }; BindInfo VbrIfFlowFilterEntryMoMgr:: - vbr_if_flowfilter_entry_main_tbl_bind_info[] = { +vbr_if_flowfilter_entry_main_tbl_bind_info[] = { { uudst::vbr_if_flowfilter_entry::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vbr_if_flowfilter_entry_t, flowfilter_key.if_key.vbr_key.vtn_key.vtn_name), @@ -175,10 +175,12 @@ VbrIfFlowFilterEntryMoMgr::VbrIfFlowFilterEntryMoMgr() : MoMgrImpl() { // setting rename table and controller index to null ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; - cur_instance_count = 0; - table[MAINTBL] = new Table(uudst::kDbiVbrIfFlowFilterEntryTbl, - UNC_KT_VBRIF_FLOWFILTER_ENTRY, vbr_if_flowfilter_entry_bind_info, - IpctSt::kIpcStKeyVbrIfFlowfilterEntry, IpctSt::kIpcStValFlowfilterEntry, + table[MAINTBL] = new Table( + uudst::kDbiVbrIfFlowFilterEntryTbl, + UNC_KT_VBRIF_FLOWFILTER_ENTRY, + vbr_if_flowfilter_entry_bind_info, + IpctSt::kIpcStKeyVbrIfFlowfilterEntry, + IpctSt::kIpcStValFlowfilterEntry, uudst::vbr_if_flowfilter_entry::kDbiVbrIfFlowFilterEntryNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; @@ -187,14 +189,14 @@ VbrIfFlowFilterEntryMoMgr::VbrIfFlowFilterEntryMoMgr() : MoMgrImpl() { } bool VbrIfFlowFilterEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl ) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl ) { UPLL_FUNC_TRACE; /* Main Table only update */ if (MAINTBL == tbl) { nattr = sizeof(vbr_if_flowfilter_entry_main_tbl_bind_info)/ - sizeof(vbr_if_flowfilter_entry_main_tbl_bind_info[0]); + sizeof(vbr_if_flowfilter_entry_main_tbl_bind_info[0]); binfo = vbr_if_flowfilter_entry_main_tbl_bind_info; } else { return PFC_FALSE; @@ -225,31 +227,32 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); return UPLL_RC_ERR_INVALID_OPTION1; } if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -310,90 +313,16 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateVbrIfValStruct( IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; val_flowfilter_entry_t *val_flowfilter_entry = reinterpret_cast( ikey->get_cfg_val()->get_val()); - - bool db_action_valid = false; - bool db_action_redirect = false; - - if ((val_flowfilter_entry->valid[UPLL_IDX_ACTION_FFE] - == UNC_VF_INVALID) && (req->operation == UNC_OP_UPDATE)) { - /** Read key struct from ConfigKeyVal argument*/ - key_vbr_if_flowfilter_entry_t *key_vbr_if_ffe = - static_cast(ikey->get_key()); - - /** Check whether Action configured or not from DB */ - ConfigKeyVal *okey = NULL; - - result_code = GetChildConfigKey(okey, NULL); - - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("okey memory allocation failed- %d", result_code); - return result_code; - } - - key_vbr_if_flowfilter_entry_t *vbrif_ffe_key = - reinterpret_cast(okey->get_key()); - - /* copy key structure into okey key struct */ - uuu::upll_strncpy( - vbrif_ffe_key->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - key_vbr_if_ffe->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); - - uuu::upll_strncpy( - vbrif_ffe_key->flowfilter_key.if_key.vbr_key.vbridge_name, - key_vbr_if_ffe->flowfilter_key.if_key.vbr_key.vbridge_name, - (kMaxLenVnodeName+1)); - - uuu::upll_strncpy( - vbrif_ffe_key->flowfilter_key.if_key.if_name, - key_vbr_if_ffe->flowfilter_key.if_key.if_name, - (kMaxLenInterfaceName+1)); - - vbrif_ffe_key->flowfilter_key.direction = - key_vbr_if_ffe->flowfilter_key.direction; - vbrif_ffe_key->sequence_num = key_vbr_if_ffe->sequence_num; - - /* Check the action field configured in VBR_IF_FLOWFILTER_ENTRY table*/ - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); - - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB is failed for VBRIF_FLOWFILTER_ENTRY"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - - /* check the action value from the DB data */ - val_flowfilter_entry_t *val_ffe = - reinterpret_cast( - okey->get_cfg_val()->get_val()); - - if (val_ffe->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { - db_action_valid = true; - if (val_ffe->action == UPLL_FLOWFILTER_ACT_REDIRECT) { - db_action_redirect = true; - } - } - - delete okey; - okey = NULL; - } - /** Validate value structure */ return VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( - val_flowfilter_entry, req->operation, - db_action_valid, db_action_redirect); + val_flowfilter_entry, req->operation); } upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateVbrIfFlowfilterEntryKey( @@ -442,9 +371,10 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateVbrIfFlowfilterEntryKey( return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name) { +upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateCapability( + IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char* ctrlr_name) { UPLL_FUNC_TRACE; if ((NULL == req) || (NULL == ikey)) { @@ -461,8 +391,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name : (%s)" - "operation : (%d)", - ctrlr_name, req->operation); + "operation : (%d)", + ctrlr_name, req->operation); bool ret_code = false; uint32_t instance_count = 0; @@ -471,32 +401,28 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { - UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", + req->operation); ret_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &instance_count, &max_attrs, &attrs); - if (ret_code && cur_instance_count >= instance_count && - cur_instance_count !=0 && instance_count != 0) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &instance_count, &max_attrs, &attrs); break; } case UNC_OP_UPDATE: { ret_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } default: { if (req->datatype == UPLL_DT_STATE) { - UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", + req->operation); ret_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), &max_attrs, &attrs); } else { - UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", + req->operation); ret_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } break; } @@ -504,7 +430,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ret_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s)", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } @@ -512,7 +438,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, reinterpret_cast(GetVal(ikey)); if (max_attrs > 0) { return VbrFlowFilterEntryMoMgr::ValFlowFilterEntryAttributeSupportCheck( - val_flowfilter_entry, attrs); + val_flowfilter_entry, attrs); } else { UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; @@ -536,9 +462,9 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL || - ikey->get_key_type() != UNC_KT_VBRIF_FLOWFILTER_ENTRY) { + ikey->get_key_type() != UNC_KT_VBRIF_FLOWFILTER_ENTRY) { UPLL_LOG_DEBUG("Ignoring ktype/Table kt=%d, tbl=%d", - ikey->get_key_type(), tbl); + ikey->get_key_type(), tbl); return result_code; } @@ -558,30 +484,29 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); ctrlr_id = ctrlr_dom.ctrlr; mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), - dmi, - reinterpret_cast(ctrlr_id) , - dt_type, - UNC_OP_CREATE); + reinterpret_cast(flowfilter_val->flowlist_name), + dmi, + reinterpret_cast(ctrlr_id) , + dt_type, + UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to Update the FlowList at ctrlr Table"); - return result_code; + UPLL_LOG_DEBUG("Unable to Update the FlowList at ctrlr Table"); + return result_code; } } return result_code; } upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; - ConfigKeyVal* okey = NULL; - ConfigKeyVal* tmp_key = NULL; uint8_t *ctrlr_id = NULL; controller_domain ctrlr_dom; if (ikey == NULL || req == NULL) { @@ -594,130 +519,103 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, val_flowfilter_entry_t *val_ff_import = NULL; pfcdrv_val_flowfilter_entry_t *pfc_val_import = NULL; - + UPLL_LOG_DEBUG("datatype (%d)", req->datatype); if (req->datatype == UPLL_DT_IMPORT) { UPLL_LOG_DEBUG("Inside: %d", req->datatype); if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { - UPLL_LOG_DEBUG("val struct num (%d)",ikey->get_cfg_val()->get_st_num()); + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { + UPLL_LOG_DEBUG("val struct num (%d)", ikey->get_cfg_val()->get_st_num()); pfc_val_import = reinterpret_cast - (ikey->get_cfg_val()->get_val()); - val_ff_import = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); - memcpy(val_ff_import, &pfc_val_import->val_ff_entry, sizeof(val_flowfilter_entry_t)); - UPLL_LOG_DEBUG("FLOWLIST name (%s)", val_ff_import->flowlist_name); - ikey->SetCfgVal(NULL); - ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_import)); + (ikey->get_cfg_val()->get_val()); + val_ff_import = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + memcpy(val_ff_import, &pfc_val_import->val_ff_entry, + sizeof(val_flowfilter_entry_t)); + UPLL_LOG_DEBUG("FLOWLIST name (%s)", val_ff_import->flowlist_name); + ikey->SetCfgVal(NULL); + ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + val_ff_import)); } } - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" ValidateMessage failed "); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" ValidateMessage failed "); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" ValidateAttribute failed "); - return result_code; - } - // Check if Object already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Record already exists in Candidate DB"); + UPLL_LOG_DEBUG(" ValidateAttribute failed "); return result_code; } val_flowfilter_entry_t *flowfilter_val = reinterpret_cast (GetVal(ikey)); - FlowListMoMgr *mgr = NULL; memset(&ctrlr_dom, 0, sizeof(controller_domain)); result_code = GetControllerDomainID(ikey, req->datatype, dmi); if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", result_code); + return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); ctrlr_id = ctrlr_dom.ctrlr; - result_code = GetChildConfigKey(tmp_key, NULL); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed in ValidateCapability"); - return result_code; - } - result_code = GetInstanceCount(tmp_key, - reinterpret_cast(ctrlr_id), - req->datatype, - &cur_instance_count, - dmi, - MAINTBL); - delete tmp_key; - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount Failed in ValidateCapability"); - return result_code; - } result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_id)); + reinterpret_cast(ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); return result_code; } - // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restore Operation Failed, err %d", result_code); - return result_code; + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; + } } - return result_code; - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG(" error reading DB. err code(%d)", result_code); - return result_code; } else { - UPLL_LOG_DEBUG("Record doesn't exist in reading Running DB "); - } - } - if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - - // Check Flowlist object exist or not - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } - key_flowlist_t *key_flowlist = reinterpret_cast - (okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - flowfilter_val->flowlist_name, - (kMaxLenFlowListName +1)); - - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Given FlowList does not exists %d", result_code); - delete okey; - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Instance Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - delete okey; - UPLL_LOG_DEBUG("Error Accesing CANDIDATE DB (%d)", result_code); - return result_code; - } - delete okey; - okey = NULL; + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } // create a record in CANDIDATE DB VbrIfMoMgr *mgrvbrif = @@ -771,7 +669,9 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, SET_USER_DATA_FLAGS(ikey, flag_port_map); if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { if ((flag_port_map & SET_FLAG_VLINK) || - (flag_port_map & SET_FLAG_PORTMAP)) { + (flag_port_map & SET_FLAG_PORTMAP)) { + FlowListMoMgr *mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); result_code = mgr->AddFlowListToController( reinterpret_cast(flowfilter_val->flowlist_name), dmi, reinterpret_cast (ctrlr_id), req->datatype, UNC_OP_CREATE); @@ -797,26 +697,28 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; uint8_t flags = 0; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. * else - create using the controller name. */ result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } - pfcdrv_val_flowfilter_entry_t *pfc_val = reinterpret_cast (GetVal(ikey)); + pfcdrv_val_flowfilter_entry_t *pfc_val = reinterpret_cast + (GetVal(ikey)); if (pfc_val == NULL) { return UPLL_RC_ERR_GENERIC; } @@ -824,11 +726,10 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, if (pfc_val->val_vbrif_vextif.interface_type == PFCDRV_IF_TYPE_VBRIF) { UPLL_LOG_DEBUG("Vlink configired in vbrifff"); flags = SET_FLAG_VLINK; - } - else if (pfc_val->val_vbrif_vextif.interface_type == PFCDRV_IF_TYPE_VEXTIF) { + } else if (pfc_val->val_vbrif_vextif.interface_type == + PFCDRV_IF_TYPE_VEXTIF) { flags = SET_FLAG_PORTMAP; - } - else { + } else { UPLL_LOG_DEBUG("Vlink not configired in vbrifff"); flags = 0; } @@ -842,17 +743,17 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, val_flowfilter_entry_t * val_ff_entry = NULL; val_ff_entry = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); memcpy(val_ff_entry, &pfc_val->val_ff_entry, sizeof(val_flowfilter_entry_t)); - okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry); + okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry); SET_USER_DATA_FLAGS(okey, flags); - + controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(ctrlr_dom)); result_code = GetControllerDomainID(okey, UPLL_DT_AUDIT, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to Get the Controller Domain details,err:%d", + UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", result_code); delete okey; return result_code; @@ -863,18 +764,20 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ctrlr_dom.ctrlr, ctrlr_dom.domain); FlowListMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); if (mgr == NULL) { UPLL_LOG_DEBUG("Invalid FlowListMoMgr Instance"); delete okey; return UPLL_RC_ERR_GENERIC; } - if (pfc_val->val_ff_entry.valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - result_code = mgr->AddFlowListToController(reinterpret_cast - (pfc_val->val_ff_entry.flowlist_name), dmi, - reinterpret_cast (const_cast(ctrlr_id)), - UPLL_DT_AUDIT, UNC_OP_CREATE); + if (pfc_val->val_ff_entry.valid[UPLL_IDX_FLOWLIST_NAME_FFE] == + UNC_VF_VALID) { + result_code = mgr->AddFlowListToController( + reinterpret_cast + (pfc_val->val_ff_entry.flowlist_name), dmi, + reinterpret_cast (const_cast(ctrlr_id)), + UPLL_DT_AUDIT, UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Reference Count Updation Fails %d", result_code); delete okey; @@ -890,7 +793,11 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return result_code; } // Create a record in AUDIT DB - result_code = UpdateConfigDB(okey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); + result_code = UpdateConfigDB(okey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); delete okey; @@ -900,13 +807,16 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytype, +upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController( + unc_key_type_t keytype, const char *ctrlr_id, uint32_t session_id, uint32_t config_id, uuc::UpdateCtrlrPhase phase1, - bool *ctrlr_affected, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result = uud::kDalRcSuccess; @@ -923,10 +833,11 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp uint8_t auditdb_flag = 0; uint8_t *ctrlr = reinterpret_cast(const_cast(ctrlr_id)); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; + // Skipping the create phase if it comes as an input. // vbr if flowfilter should get applied on controller(pfc) if portma/vlink is // configured. - // The portmap/vlink request should come in the update phase so + // The portmap/vlink request should come in the update phase so // the vbrif policingmap creation should also be applied during update phase. if (phase1 == uuc::kUpllUcpCreate) { return result_code; @@ -941,62 +852,82 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp op[0] = UNC_OP_DELETE; nop = 1; } + for (int i = 0; i < nop; i++) { UPLL_LOG_DEBUG("Operation is %d", op[i]); - unc_keytype_operation_t op1 = op[i]; + cursor = NULL; + unc_keytype_operation_t op1 = op[i]; uuc::UpdateCtrlrPhase phase = (op[i] == UNC_OP_UPDATE)?uuc::kUpllUcpUpdate: - ((op[i] == UNC_OP_CREATE)?uuc::kUpllUcpCreate: - ((op[i] == UNC_OP_DELETE)?uuc::kUpllUcpDelete:uuc::kUpllUcpInvalid)); + ((op[i] == UNC_OP_CREATE)?uuc::kUpllUcpCreate: + ((op[i] == UNC_OP_DELETE)?uuc::kUpllUcpDelete:uuc::kUpllUcpInvalid)); result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op[i], - ckv_running_db, ckv_audit_db, - &cursor, dmi, ctrlr, MAINTBL); + ckv_running_db, ckv_audit_db, + &cursor, dmi, ctrlr, MAINTBL); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + continue; + } if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); dmi->CloseCursor(cursor, true); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return result_code; } if (cursor == NULL) { UPLL_LOG_DEBUG("cursor is null"); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return UPLL_RC_ERR_GENERIC; } while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { op1 = op[i]; if (phase != uuc::kUpllUcpDelete) { uint8_t *db_ctrlr = NULL; - GET_USER_DATA_CTRLR(ckv_running_db,db_ctrlr); + GET_USER_DATA_CTRLR(ckv_running_db, db_ctrlr); UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", - db_ctrlr, ctrlr_id); + db_ctrlr, ctrlr_id); // Skipping the controller ID if the controller id in DB and // controller id available for Audit are not the same - if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), - reinterpret_cast(ctrlr_id), - strlen(reinterpret_cast(ctrlr_id)) + 1)) { + if (db_ctrlr && strncmp( + reinterpret_cast(db_ctrlr), + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast(ctrlr_id)) + 1)) { continue; } } switch (phase) { case uuc::kUpllUcpDelete: UPLL_LOG_TRACE("Deleted record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); result_code = GetChildConfigKey(ckv_driver_req, ckv_running_db); UPLL_LOG_TRACE("ckv_driver_req in delete is %s", - ckv_driver_req->ToStrAll().c_str()); + ckv_driver_req->ToStrAll().c_str()); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } if (ckv_driver_req->get_cfg_val()) { UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } result_code = ReadConfigDB(ckv_driver_req, UPLL_DT_AUDIT, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("Returning error %d", result_code); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } @@ -1004,11 +935,15 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp break; case uuc::kUpllUcpCreate: UPLL_LOG_TRACE("Created record is %s ", - ckv_running_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + ckv_running_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, + ckv_running_db, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } @@ -1017,20 +952,28 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp ckv_audit_dup_db = NULL; ckv_driver_req = NULL; UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_audit_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + ckv_audit_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, + ckv_running_db, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record." + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } - result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); + result_code = DupConfigKeyVal(ckv_audit_dup_db, + ckv_audit_db, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. " + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); DELETE_IF_NOT_NULL(ckv_driver_req); dmi->CloseCursor(cursor, true); return result_code; @@ -1045,13 +988,15 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp GET_USER_DATA_CTRLR_DOMAIN(ckv_driver_req, ctrlr_dom); if ((NULL == ctrlr_dom.ctrlr) || (NULL == ctrlr_dom.domain)) { UPLL_LOG_INFO("controller id or domain is NULL"); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); db_flag = 0; GET_USER_DATA_FLAGS(ckv_driver_req, db_flag); UPLL_LOG_DEBUG("dbflag 1 - %d", db_flag); @@ -1061,8 +1006,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp // hence sending the delete request to the controller driver if ((SET_FLAG_PORTMAP & db_flag) || (SET_FLAG_VLINK & db_flag)) { // Continue with further operations - } - else { + } else { if (UNC_OP_UPDATE == op1) { op1 = UNC_OP_DELETE; db_flag = auditdb_flag; @@ -1074,62 +1018,82 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp continue; } } - if (UNC_OP_UPDATE == op1) { + if (UNC_OP_UPDATE == op1) { void *running_val = NULL; bool invalid_attr = false; running_val = GetVal(ckv_driver_req); invalid_attr = FilterAttributes(running_val, - GetVal(ckv_audit_dup_db), false, UNC_OP_UPDATE); + GetVal(ckv_audit_dup_db), + false, + UNC_OP_UPDATE); if (invalid_attr) { DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); + // Assuming that the diff found only in ConfigStatus + // Setting the value as OnlyCSDiff in the + // out parameter ctrlr_affected + // The value Configdiff should be given more priority than the value + // onlycs . + // So If the out parameter ctrlr_affected has already + // value as configdiff + // then dont change the value + if (*ctrlr_affected != uuc::kCtrlrAffectedConfigDiff) { + UPLL_LOG_INFO("Setting the ctrlr_affected to OnlyCSDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedOnlyCSDiff; + } continue; } } + DELETE_IF_NOT_NULL(ckv_audit_dup_db); pfcdrv_val_flowfilter_entry_t *pfc_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); if (op1 == UNC_OP_DELETE) { vext_datatype = UPLL_DT_AUDIT; } else { vext_datatype = UPLL_DT_RUNNING; } result_code = GetVexternalInformation(ckv_driver_req, vext_datatype, - pfc_val, db_flag, dmi); + pfc_val, db_flag, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetVexternalInformation failed %d", result_code); DELETE_IF_NOT_NULL(ckv_driver_req); free(pfc_val); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } val_flowfilter_entry_t* val = reinterpret_cast - (GetVal(ckv_driver_req)); + (GetVal(ckv_driver_req)); pfc_val->valid[PFCDRV_IDX_FLOWFILTER_ENTRY_FFE] = UNC_VF_VALID; memcpy(&pfc_val->val_ff_entry, val, sizeof(val_flowfilter_entry_t)); upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? - UPLL_DT_AUDIT:UPLL_DT_RUNNING; + UPLL_DT_AUDIT:UPLL_DT_RUNNING; result_code = GetRenamedControllerKey(ckv_driver_req, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); + dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv_driver_req); free(pfc_val); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } - ckv_driver_req->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValFlowfilterEntry, - pfc_val)); + ckv_driver_req->SetCfgVal(new ConfigVal( + IpctSt::kIpcStPfcdrvValFlowfilterEntry, + pfc_val)); UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); IpcResponse ipc_response; memset(&ipc_response, 0, sizeof(IpcResponse)); @@ -1140,71 +1104,105 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp ipc_req.header.operation = op1; ipc_req.header.datatype = UPLL_DT_CANDIDATE; ipc_req.ckv_data = ckv_driver_req; - if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, reinterpret_cast - (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { + if (!IpcUtil::SendReqToDriver( + (const char *)ctrlr_dom.ctrlr, reinterpret_cast + (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv_driver_req->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); + ckv_driver_req->get_key_type(), + reinterpret_cast(ctrlr_dom.ctrlr)); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } - if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("driver return failure err_code is %d", ipc_response.header.result_code); - ConfigKeyVal *resp = NULL; - result_code = GetChildConfigKey(resp, ipc_response.ckv_data); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; - } - - pfcdrv_val_flowfilter_entry_t *pfc_val_ff = reinterpret_cast - (GetVal(ipc_response.ckv_data)); - if (NULL == pfc_val_ff) { - UPLL_LOG_DEBUG("pfcdrv_val_flowfilter_entry_t is NULL"); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - val_flowfilter_entry_t* val_ff = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); - memcpy(val_ff, &pfc_val_ff->val_ff_entry, sizeof(val_flowfilter_entry_t)); - resp->AppendCfgVal(IpctSt::kIpcStValFlowfilterEntry, val_ff); - + if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("driver return failure err_code is %d", + ipc_response.header.result_code); + *err_ckv = ckv_running_db; + if (phase != uuc::kUpllUcpDelete) { + ConfigKeyVal *resp = NULL; + result_code = GetChildConfigKey(resp, ipc_response.ckv_data); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return result_code; + } - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, phase, resp); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Update Audit config status failed %d", - result_code); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; - } + pfcdrv_val_flowfilter_entry_t *pfc_val_ff = + reinterpret_cast + (GetVal(ipc_response.ckv_data)); + if (NULL == pfc_val_ff) { + UPLL_LOG_DEBUG("pfcdrv_val_flowfilter_entry_t is NULL"); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + val_flowfilter_entry_t* val_ff = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + memcpy(val_ff, &pfc_val_ff->val_ff_entry, + sizeof(val_flowfilter_entry_t)); + resp->AppendCfgVal(IpctSt::kIpcStValFlowfilterEntry, val_ff); + + + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + phase, + resp, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Update Audit config status failed %d", + result_code); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return result_code; + } - DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutCs }; - result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response ckv err_code %d", - result_code); - DELETE_IF_NOT_NULL(ckv_driver_req); + DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutCs }; + result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, + dmi, &dbop, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc" + "response ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return result_code; + } DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; } - DELETE_IF_NOT_NULL(resp); + return ipc_response.header.result_code; } DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); - *ctrlr_affected = true; + // *ctrlr_affected = true; + if (*ctrlr_affected == uuc::kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Reset ctrlr state from OnlyCSDiff to ConfigDiff"); + } + UPLL_LOG_DEBUG("Setting the ctrlr_affected to ConfigDiff"); + + *ctrlr_affected = uuc::kCtrlrAffectedConfigDiff; } dmi->CloseCursor(cursor, true); DELETE_IF_NOT_NULL(ckv_running_db); @@ -1215,7 +1213,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp result_code = DalToUpllResCode(db_result); } result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; + ? UPLL_RC_SUCCESS : result_code; return result_code; } @@ -1226,12 +1224,12 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, UPLL_FUNC_TRACE; uint8_t *ctrlr_id = NULL; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; -// uint8_t rename = 0; + // uint8_t rename = 0; if (NULL == ikey && NULL == req) return result_code; result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) { - return result_code; + return result_code; } result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_READ, dmi); @@ -1245,7 +1243,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS != result_code) { return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr }; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutCtrlr|kOpInOutFlag }; result_code = ReadConfigDB(okey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -1255,27 +1254,32 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR(okey, ctrlr_id); val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(okey)); + reinterpret_cast (GetVal(okey)); if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - FlowListMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id), req->datatype, UNC_OP_DELETE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; + uint8_t flag_port_map = 0; + GET_USER_DATA_FLAGS(okey, flag_port_map); + if ((flag_port_map & SET_FLAG_VLINK) || + (flag_port_map & SET_FLAG_PORTMAP)) { + FlowListMoMgr *mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + result_code = mgr->AddFlowListToController( + reinterpret_cast(flowfilter_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), req->datatype, UNC_OP_DELETE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", + result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } } } result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); return result_code; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); return UPLL_RC_SUCCESS; } @@ -1384,9 +1388,9 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetChildConfigKey( (pkey)->flowfilter_key.if_key.vbr_key.vbridge_name, kMaxLenVnodeName + 1); uuu::upll_strncpy(vbr_if_ffe_key->flowfilter_key.if_key.if_name, - reinterpret_cast - (pkey)->flowfilter_key.if_key.if_name, - kMaxLenInterfaceName + 1); + reinterpret_cast + (pkey)->flowfilter_key.if_key.if_name, + kMaxLenInterfaceName + 1); vbr_if_ffe_key->flowfilter_key.direction = reinterpret_cast (pkey)->flowfilter_key.direction; @@ -1445,7 +1449,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, (GetVal(req)); if (NULL != ival) { - val_flowfilter_entry_t *vbr_if_flowfilter_val = NULL; + val_flowfilter_entry_t *vbr_if_flowfilter_val = NULL; vbr_if_flowfilter_val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); @@ -1488,21 +1492,21 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *unc_key = NULL; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifff_entry start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if ((NULL == ikey) || (ctrlr_id == NULL) || (NULL == dmi)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); return UPLL_RC_ERR_GENERIC; } MoMgrImpl *VbrIfMoMgr = static_cast - ((const_cast(GetMoManager(UNC_KT_VBRIDGE)))); + ((const_cast(GetMoManager(UNC_KT_VBRIDGE)))); if (NULL == VbrIfMoMgr) { UPLL_LOG_DEBUG("VbrIfMoMgr NULL"); return UPLL_RC_ERR_GENERIC; @@ -1515,16 +1519,16 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( return UPLL_RC_ERR_GENERIC; } key_vbr_if_flowfilter_entry_t *ctrlr_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); if (!ctrlr_key) { UPLL_LOG_DEBUG("rename_val NULL"); free(rename_val); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy( - rename_val->ctrlr_vtn_name, - ctrlr_key->flowfilter_key.if_key.vbr_key. - vtn_key.vtn_name, kMaxLenVtnName + 1); + rename_val->ctrlr_vtn_name, + ctrlr_key->flowfilter_key.if_key.vbr_key. + vtn_key.vtn_name, kMaxLenVtnName + 1); rename_val->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; uuu::upll_strncpy(rename_val->ctrlr_vnode_name, @@ -1548,7 +1552,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); result_code = VbrIfMoMgr->ReadConfigDB(unc_key, dt_type , - UNC_OP_READ, dbop, dmi, RENAMETBL); + UNC_OP_READ, dbop, dmi, RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -1559,17 +1563,18 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( if (result_code == UPLL_RC_SUCCESS) { key_vbr_if_flowfilter_entry_t *vbr_flowfilter_entry_key = reinterpret_cast - (unc_key->get_key()); + (unc_key->get_key()); uuu::upll_strncpy( - ctrlr_key->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - vbr_flowfilter_entry_key->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + ctrlr_key->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + vbr_flowfilter_entry_key-> + flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy( - ctrlr_key->flowfilter_key.if_key.vbr_key.vbridge_name, - vbr_flowfilter_entry_key->flowfilter_key.if_key.vbr_key.vbridge_name, - kMaxLenVnodeName + 1); + ctrlr_key->flowfilter_key.if_key.vbr_key.vbridge_name, + vbr_flowfilter_entry_key->flowfilter_key.if_key.vbr_key.vbridge_name, + kMaxLenVnodeName + 1); } VbrIfMoMgr = NULL; DELETE_IF_NOT_NULL(unc_key); @@ -1577,18 +1582,18 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( val_flowfilter_entry_t *val_flowfilter_entry = NULL; pfcdrv_val_flowfilter_entry_t *pfc_val_import = NULL; if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { UPLL_LOG_DEBUG("val struct num (%d)", ikey->get_cfg_val()->get_st_num()); pfc_val_import = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + (ikey->get_cfg_val()->get_val()); val_flowfilter_entry = &pfc_val_import->val_ff_entry; UPLL_LOG_DEBUG("FLOWLIST name (%s)", val_flowfilter_entry->flowlist_name); } else if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValFlowfilterEntry)) { - val_flowfilter_entry = reinterpret_cast - (GetVal(ikey)); + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStValFlowfilterEntry)) { + val_flowfilter_entry = reinterpret_cast + (GetVal(ikey)); } if (!val_flowfilter_entry) { @@ -1597,70 +1602,70 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( } if (UNC_VF_VALID == val_flowfilter_entry - ->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { - val_rename_flowlist_t *rename_flowlist = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); - if (!rename_flowlist) { - UPLL_LOG_DEBUG("rename_flowlist NULL"); - free(rename_flowlist); - return UPLL_RC_ERR_GENERIC; - } + ->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { + val_rename_flowlist_t *rename_flowlist = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + if (!rename_flowlist) { + UPLL_LOG_DEBUG("rename_flowlist NULL"); + free(rename_flowlist); + return UPLL_RC_ERR_GENERIC; + } - uuu::upll_strncpy(rename_flowlist->flowlist_newname, - val_flowfilter_entry->flowlist_name, - (kMaxLenFlowListName + 1)); - rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; - // FlowList Renamed - MoMgrImpl* mgr = static_cast - ((const_cast(GetMoManager(UNC_KT_FLOWLIST)))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("mgr NULL"); - FREE_IF_NOT_NULL(rename_flowlist); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_TRACE("flowlist name (%s) (%s) ctrlr_name (%s)", - rename_flowlist->flowlist_newname, - val_flowfilter_entry->flowlist_name, - ctrlr_id); - result_code = mgr->GetChildConfigKey(unc_key, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to Get config key structure"); - if (rename_flowlist) free(rename_flowlist); - mgr = NULL; - return UPLL_RC_ERR_GENERIC; - } + uuu::upll_strncpy(rename_flowlist->flowlist_newname, + val_flowfilter_entry->flowlist_name, + (kMaxLenFlowListName + 1)); + rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; + // FlowList Renamed + MoMgrImpl* mgr = static_cast + ((const_cast(GetMoManager(UNC_KT_FLOWLIST)))); + if (NULL == mgr) { + UPLL_LOG_DEBUG("mgr NULL"); + FREE_IF_NOT_NULL(rename_flowlist); + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_TRACE("flowlist name (%s) (%s) ctrlr_name (%s)", + rename_flowlist->flowlist_newname, + val_flowfilter_entry->flowlist_name, + ctrlr_id); + result_code = mgr->GetChildConfigKey(unc_key, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to Get config key structure"); + if (rename_flowlist) free(rename_flowlist); + mgr = NULL; + return UPLL_RC_ERR_GENERIC; + } - SET_USER_DATA_CTRLR(unc_key, ctrlr_id); - unc_key->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, rename_flowlist); - result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if ((UPLL_RC_SUCCESS != result_code) && - (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + SET_USER_DATA_CTRLR(unc_key, ctrlr_id); + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, rename_flowlist); + result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(unc_key); + mgr = NULL; + return result_code; + } + if (result_code == UPLL_RC_SUCCESS) { + key_flowlist_t *key_flowlist = reinterpret_cast + (unc_key->get_key()); + uuu::upll_strncpy(val_flowfilter_entry->flowlist_name, + key_flowlist->flowlist_name, + (kMaxLenFlowListName + 1)); + } DELETE_IF_NOT_NULL(unc_key); mgr = NULL; - return result_code; - } - if (result_code == UPLL_RC_SUCCESS) { - key_flowlist_t *key_flowlist = reinterpret_cast - (unc_key->get_key()); - uuu::upll_strncpy(val_flowfilter_entry->flowlist_name, - key_flowlist->flowlist_name, - (kMaxLenFlowListName + 1)); - } - DELETE_IF_NOT_NULL(unc_key); - mgr = NULL; } if ((UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && (UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VROUTER }; bool isRedirectVnodeVbridge = false; for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { + i < sizeof(child_key)/sizeof(child_key[0]); i++) { const unc_key_type_t ktype = child_key[i]; MoMgrImpl *mgrvbr = reinterpret_cast( const_cast(GetMoManager(ktype))); @@ -1669,15 +1674,15 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( return UPLL_RC_ERR_GENERIC; } val_rename_vnode *rename_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); if (!rename_val) { UPLL_LOG_TRACE("rename_val NULL"); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_val->ctrlr_vnode_name, - val_flowfilter_entry->redirect_node, - (kMaxLenVnodeName + 1)); + val_flowfilter_entry->redirect_node, + (kMaxLenVnodeName + 1)); rename_val->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; result_code = mgrvbr->GetChildConfigKey(unc_key, NULL); @@ -1689,10 +1694,14 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( } SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); - result_code = mgrvbr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + result_code = mgrvbr->ReadConfigDB(unc_key, + dt_type, + UNC_OP_READ, + dbop, + dmi, + RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && - (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(unc_key); mgrvbr = NULL; @@ -1704,13 +1713,13 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( isRedirectVnodeVbridge = true; key_vbr *vbr_key = reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy(val_flowfilter_entry->redirect_node, - vbr_key->vbridge_name, - (kMaxLenVnodeName + 1)); + vbr_key->vbridge_name, + (kMaxLenVnodeName + 1)); } else if (unc_key->get_key_type() == UNC_KT_VROUTER) { key_vrt *vrt_key = reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy(val_flowfilter_entry->redirect_node, - vrt_key->vrouter_name, - (kMaxLenVnodeName + 1)); + vrt_key->vrouter_name, + (kMaxLenVnodeName + 1)); } } DELETE_IF_NOT_NULL(unc_key); @@ -1722,200 +1731,192 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedUncKey( } } UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifff_entry end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); return UPLL_RC_SUCCESS; } upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedControllerKey( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; - uint8_t rename = 0; /* Get the controller's redirect node(vbridge/vrt) name -start*/ val_flowfilter_entry_t *val_flowfilter_entry = reinterpret_cast (GetVal(ikey)); - + if (NULL == ctrlr_dom) { + UPLL_LOG_DEBUG("ctrlr null"); + return UPLL_RC_ERR_GENERIC; + } if (val_flowfilter_entry) { if ((UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && - (UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && + (UNC_VF_VALID == + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VROUTER }; bool isRedirectVnodeVbridge = false; for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { + i < sizeof(child_key)/sizeof(child_key[0]); i++) { const unc_key_type_t ktype = child_key[i]; MoMgrImpl *mgrvbr = reinterpret_cast( - const_cast(GetMoManager(ktype))); - if (!mgrvbr) { - UPLL_LOG_DEBUG("mgrvbr failed"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - // SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (okey->get_key_type() == UNC_KT_VBRIDGE) { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node, (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("redirect node vbr name (%s) (%s)", - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node); - } else if (okey->get_key_type() == UNC_KT_VROUTER) { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vrouter_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node, (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("redirect node vrt name (%s) (%s)", - reinterpret_cast(okey->get_key())->vrouter_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->flowlist_name); - } + const_cast(GetMoManager(ktype))); + if (!mgrvbr) { + UPLL_LOG_DEBUG("mgrvbr failed"); + return UPLL_RC_ERR_GENERIC; + } - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); + result_code = mgrvbr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); return result_code; } - } + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); + if (okey->get_key_type() == UNC_KT_VBRIDGE) { + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node, (kMaxLenVnodeName + 1)); + + UPLL_LOG_DEBUG("redirect node vbr name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node); + } else if (okey->get_key_type() == UNC_KT_VROUTER) { + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vrouter_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node, + (kMaxLenVnodeName + 1)); + + UPLL_LOG_DEBUG("redirect node vrt name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vrouter_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->flowlist_name); + } - if (result_code == UPLL_RC_SUCCESS) { - val_rename_vnode *rename_val = NULL; - isRedirectVnodeVbridge = true; - rename_val = reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("rename_val NULL."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return result_code; + } } - uuu::upll_strncpy(reinterpret_cast - (ikey->get_cfg_val()->get_val())->redirect_node, - rename_val->ctrlr_vnode_name, (kMaxLenVtnName + 1)); - } - DELETE_IF_NOT_NULL(okey); - if (isRedirectVnodeVbridge) - break; + if (result_code == UPLL_RC_SUCCESS) { + val_rename_vnode *rename_val = NULL; + isRedirectVnodeVbridge = true; + rename_val = reinterpret_cast (GetVal(okey)); + if (!rename_val) { + UPLL_LOG_DEBUG("rename_val NULL."); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + + uuu::upll_strncpy(reinterpret_cast + (ikey->get_cfg_val()->get_val())->redirect_node, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); + } + DELETE_IF_NOT_NULL(okey); + if (isRedirectVnodeVbridge) + break; } } } /* -end*/ - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) { - UPLL_LOG_DEBUG("no renamed"); - return UPLL_RC_SUCCESS; - } UPLL_LOG_TRACE("Start... Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); - MoMgrImpl *VbrIfMoMgr = static_cast - ((const_cast(GetMoManager(UNC_KT_VBRIDGE)))); - if (NULL == VbrIfMoMgr) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = VbrIfMoMgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVnodeName + 1)); + MoMgrImpl *VbrIfMoMgr = static_cast + ((const_cast(GetMoManager(UNC_KT_VBRIDGE)))); + if (NULL == VbrIfMoMgr) { + UPLL_LOG_DEBUG("obj null"); + return UPLL_RC_ERR_GENERIC; + } - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name); + result_code = VbrIfMoMgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + + UPLL_LOG_DEBUG("vtn name (%s) (%s)", + reinterpret_cast(okey->get_key())-> + vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vbr_key.vtn_key.vtn_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - result_code= VbrIfMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + + UPLL_LOG_DEBUG("vbr name (%s) (%s)", + reinterpret_cast(okey->get_key())-> + vbridge_name, + reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vbr_key.vbridge_name); + + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + result_code= VbrIfMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if (( result_code != UPLL_RC_SUCCESS ) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + if (UPLL_RC_SUCCESS == result_code) { val_rename_vnode *rename_val =reinterpret_cast (GetVal(okey)); if (!rename_val) { - UPLL_LOG_DEBUG("Vbr Name is not Valid"); - DELETE_IF_NOT_NULL(okey); + UPLL_LOG_DEBUG("Vbr Name is not Valid"); + DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; - } + } - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - kMaxLenVtnName + 1); + reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + kMaxLenVtnName + 1); UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name); - } + reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name); - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); uuu::upll_strncpy( reinterpret_cast (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, @@ -1923,259 +1924,64 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedControllerKey( kMaxLenVnodeName + 1); UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name); + reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vbr_key.vbridge_name, + rename_val->ctrlr_vnode_name); } DELETE_IF_NOT_NULL(okey); // flowlist_name - if (rename & FLOWLIST_RENAME_FLAG) { - UPLL_LOG_DEBUG("flowlist name renamed"); - MoMgrImpl *mgrflist = static_cast - ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); - if (mgrflist == NULL) { + val_flowfilter_entry_t *val_ffe = reinterpret_cast + (GetVal(ikey)); + if (NULL == val_ffe) { + UPLL_LOG_DEBUG("value structure is null"); + return UPLL_RC_SUCCESS; + } + if (strlen(reinterpret_cast + (val_ffe->flowlist_name)) == 0) { + return UPLL_RC_SUCCESS; + } + MoMgrImpl *mgrflist = static_cast + ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); + if (mgrflist == NULL) { UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrflist->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (!GetVal(ikey)) - return UPLL_RC_SUCCESS; - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->flowlist_name, - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - kMaxLenVnodeName + 1); - UPLL_LOG_DEBUG("flowlist name (%s) (%s)", - reinterpret_cast(okey->get_key())->flowlist_name, - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = mgrflist->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // NULL Checks Missing - val_rename_flowlist_t *rename_val =reinterpret_cast - (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("flowlist is not valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); - DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_TRACE("End... Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); - UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); - return UPLL_RC_SUCCESS; - -#if 0 - /* Vtn renamed */ - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - MoMgrImpl *mgrvtn = static_cast - ((const_cast(GetMoManager(UNC_KT_VTN)))); - if (mgrvtn == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrvtn->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrvtn->ReadConfigDB(okey, dt_type, - UNC_OP_READ, dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - val_rename_vtn *rename_val = reinterpret_cast - (GetVal(okey)); - if (!rename_val - || (rename_val->valid[UPLL_IDX_NEW_NAME_RVTN] != UNC_VF_VALID)) { - UPLL_LOG_DEBUG("Vtn Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - rename_val->new_name, - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - rename_val->new_name); - SET_USER_DATA_FLAGS(ikey, rename); - DELETE_IF_NOT_NULL(okey); - } - // Vbr Renamed - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - MoMgrImpl *VbrIfMoMgr = static_cast - ((const_cast(GetMoManager(UNC_KT_VBRIDGE)))); - if (NULL == VbrIfMoMgr) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = VbrIfMoMgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code= VbrIfMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - val_rename_vbr *rename_val =reinterpret_cast - (GetVal(okey)); - - if (!rename_val - || (rename_val->valid[UPLL_IDX_NEW_NAME_RVBR] != UNC_VF_VALID)) { - UPLL_LOG_DEBUG("Vbr Name is not Valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, - rename_val->new_name, - kMaxLenVnodeName + 1); + result_code = mgrflist->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - SET_USER_DATA_FLAGS(ikey, rename); + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist_name, + kMaxLenFlowListName + 1); + UPLL_LOG_DEBUG("flowlist name (%s) (%s)", + reinterpret_cast + (okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist_name); + + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; + /* ctrlr_name */ + result_code = mgrflist->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop1, dmi, RENAMETBL); + if (( result_code != UPLL_RC_SUCCESS ) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } - // flowlist_name - if (rename & FLOWLIST_RENAME_FLAG) { - UPLL_LOG_DEBUG("flowlist name renamed"); - MoMgrImpl *mgrflist = static_cast - ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); - if (mgrflist == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrflist->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->flowlist_name, - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - kMaxLenVnodeName + 1); - UPLL_LOG_DEBUG("flowlist name (%s) (%s)", - reinterpret_cast(okey->get_key())->flowlist_name, - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = mgrflist->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // NULL Checks Missing - val_rename_flowlist_t *rename_val =reinterpret_cast + if (UPLL_RC_SUCCESS == result_code) { + val_rename_flowlist_t *rename_val = + reinterpret_cast (GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("flowlist is not valid"); @@ -2187,26 +1993,26 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetRenamedControllerKey( (ikey->get_cfg_val()->get_val())->flowlist_name, rename_val->flowlist_newname, (kMaxLenFlowListName + 1)); - SET_USER_DATA_FLAGS(ikey, rename); - DELETE_IF_NOT_NULL(okey); } + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_TRACE("End... Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); return UPLL_RC_SUCCESS; -#endif } upll_rc_t VbrIfFlowFilterEntryMoMgr::RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi, - const char *ctrlr_id) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("Implementation Not supported for this KT."); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } upll_rc_t VbrIfFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2222,7 +2028,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -2234,24 +2040,24 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, ConfigKeyVal *first_ckv = ckval; while (NULL != ckval) { val_flowfilter_entry_t* val = reinterpret_cast - (GetVal(ckval)); + (GetVal(ckval)); if ((val->valid[UPLL_IDX_REDIRECT_NODE_FFE] == - UNC_VF_VALID) && - (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == - UNC_VF_VALID)) { - result_code = VerifyRedirectDestination(ckval, dmi, UPLL_DT_IMPORT); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(first_ckv); - UPLL_LOG_DEBUG("redirect-destination node/interface doesn't exists"); - return UPLL_RC_ERR_MERGE_CONFLICT; - } + UNC_VF_VALID) && + (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == + UNC_VF_VALID)) { + result_code = VerifyRedirectDestination(ckval, dmi, UPLL_DT_IMPORT); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(first_ckv); + UPLL_LOG_DEBUG("redirect-destination node/interface doesn't exists"); + return UPLL_RC_ERR_MERGE_CONFLICT; + } } ckval = ckval->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(first_ckv); MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIF_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIF_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr param"); return UPLL_RC_ERR_GENERIC; @@ -2263,27 +2069,29 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, } upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *val; val = (ckv_running != NULL)?reinterpret_cast - (GetVal(ckv_running)):NULL; + (GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } UPLL_LOG_DEBUG("UpdateAuditConfigStatus::Success"); return result_code; @@ -2311,8 +2119,9 @@ bool VbrIfFlowFilterEntryMoMgr::IsValidKey(void *key, break; case uudst::vbr_if_flowfilter_entry::kDbiVbrName: ret_val = ValidateKey(reinterpret_cast - (ff_key->flowfilter_key.if_key.vbr_key.vbridge_name), - kMinLenVnodeName, kMaxLenVnodeName); + (ff_key-> + flowfilter_key.if_key.vbr_key.vbridge_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("VBR Name is not valid(%d)", ret_val); return false; @@ -2353,7 +2162,7 @@ bool VbrIfFlowFilterEntryMoMgr::IsValidKey(void *key, return false; } break; - default: + default: UPLL_LOG_DEBUG("Invalid Key Index"); return false; } @@ -2370,62 +2179,24 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, if (NULL == ikey && NULL == req) return UPLL_RC_ERR_GENERIC; result_code = ValidateMessage(req, ikey); if (UPLL_RC_SUCCESS != result_code) - return result_code; + return result_code; - result_code = ValidateVbrIfValStruct(req, ikey, dmi); + result_code = ValidateVbrIfValStruct(req, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("val structure validation failed-Err code(%d)", - result_code); + result_code); return result_code; } - /* - result_code= ValidateCapability(req, ikey); - if (UPLL_RC_SUCCESS != result_code) - return result_code; - */ - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi, MAINTBL); - - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) - return result_code; result_code = ValidateAttribute(ikey, dmi, req); if (UPLL_RC_SUCCESS != result_code) - return result_code; + return result_code; // Check and update the flowlist reference count if the flowlist object // is referred FlowListMoMgr *flowlist_mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(ikey)); - if (UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { - // Check Flowlist object exist or not - result_code = flowlist_mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } - key_flowlist_t *key_flowlist = reinterpret_cast - (okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - flowfilter_val->flowlist_name, - (kMaxLenFlowListName +1)); - result_code = flowlist_mgr->UpdateConfigDB(okey, req->datatype, - UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Given FlowList does not exists %d", result_code); - delete okey; - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Instance Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - delete okey; - UPLL_LOG_DEBUG("Error Accesing CANDIDATE DB (%d)", result_code); - return result_code; - } - delete okey; - okey = NULL; - } - + reinterpret_cast (GetVal(ikey)); // Get controller id to do capa check result_code = GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) { @@ -2433,9 +2204,9 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; result_code = ReadConfigDB(okey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { delete okey; @@ -2445,11 +2216,11 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, GET_USER_DATA_CTRLR(okey, ctrlr_id); result_code= ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_id)); + reinterpret_cast(ctrlr_id)); if (UPLL_RC_SUCCESS != result_code) { - delete okey; - UPLL_LOG_DEBUG("ValidateCapability failed %d", result_code); - return result_code; + delete okey; + UPLL_LOG_DEBUG("ValidateCapability failed %d", result_code); + return result_code; } uint8_t dbflag = 0; @@ -2457,65 +2228,66 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, if (UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] || UNC_VF_VALID_NO_VALUE == flowfilter_val-> valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { - if ((dbflag & SET_FLAG_VLINK) || (dbflag & SET_FLAG_PORTMAP)) { - val_flowfilter_entry_t *temp_ffe_val = reinterpret_cast - (GetVal(okey)); - UPLL_LOG_DEBUG("flowlist name %s", flowfilter_val->flowlist_name); - if ((UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) - && (UNC_VF_VALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { - UPLL_LOG_DEBUG("Update option 1"); - result_code = flowlist_mgr->AddFlowListToController( + if ((dbflag & SET_FLAG_VLINK) || (dbflag & SET_FLAG_PORTMAP)) { + val_flowfilter_entry_t *temp_ffe_val = reinterpret_cast + (GetVal(okey)); + UPLL_LOG_DEBUG("flowlist name %s", flowfilter_val->flowlist_name); + if ((UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) + && (UNC_VF_VALID == temp_ffe_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { + UPLL_LOG_DEBUG("Update option 1"); + result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ffe_val->flowlist_name), dmi, reinterpret_cast(ctrlr_id), req->datatype, UNC_OP_DELETE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("AddFlowListToController failed %d", result_code); - delete okey; - return result_code; - } - result_code = flowlist_mgr->AddFlowListToController( + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AddFlowListToController failed %d", result_code); + delete okey; + return result_code; + } + result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(flowfilter_val->flowlist_name), dmi, reinterpret_cast (ctrlr_id), req->datatype, UNC_OP_CREATE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("AddFlowListToController failed %d", result_code); - delete okey; - return result_code; - } - } else if (UNC_VF_VALID == flowfilter_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && - (UNC_VF_INVALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || UNC_VF_VALID_NO_VALUE == - temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { - UPLL_LOG_DEBUG("Update option 2"); - result_code = flowlist_mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id), - req->datatype, UNC_OP_CREATE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("AddFlowListToController failed %d", result_code); - delete okey; - return result_code; - } - } else if (UNC_VF_VALID_NO_VALUE == flowfilter_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && - UNC_VF_VALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { - UPLL_LOG_DEBUG("Update option 3"); - result_code = flowlist_mgr->AddFlowListToController( - reinterpret_cast(temp_ffe_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id) , - req->datatype, UNC_OP_DELETE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("AddFlowListToController failed %d", - result_code); - delete okey; - return result_code; - } - } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AddFlowListToController failed %d", result_code); + delete okey; + return result_code; + } + } else if (UNC_VF_VALID == flowfilter_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && + (UNC_VF_INVALID == temp_ffe_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || + UNC_VF_VALID_NO_VALUE == + temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { + UPLL_LOG_DEBUG("Update option 2"); + result_code = flowlist_mgr->AddFlowListToController( + reinterpret_cast(flowfilter_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), + req->datatype, UNC_OP_CREATE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AddFlowListToController failed %d", result_code); + delete okey; + return result_code; + } + } else if (UNC_VF_VALID_NO_VALUE == flowfilter_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && + UNC_VF_VALID == temp_ffe_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { + UPLL_LOG_DEBUG("Update option 3"); + result_code = flowlist_mgr->AddFlowListToController( + reinterpret_cast(temp_ffe_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id) , + req->datatype, UNC_OP_DELETE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AddFlowListToController failed %d", + result_code); + delete okey; + return result_code; } + } + } } - DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; + DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutNone}; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); @@ -2529,17 +2301,17 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, #if 0 upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateConfigStatus( - ConfigKeyVal *key, unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { + ConfigKeyVal *key, unc_keytype_operation_t op, uint32_t driver_result, + ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *vbrflowfilter_entry_val = NULL; // val_vbr_st *val_vbrst; unc_keytype_configstatus_t cs_status = - (driver_result == 0) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + (driver_result == 0) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; vbrflowfilter_entry_val =reinterpret_cast - (GetVal(key)); + (GetVal(key)); if (vbrflowfilter_entry_val == NULL) { UPLL_LOG_DEBUG("vrtif_flowfilter_entry_val is Null"); return UPLL_RC_ERR_GENERIC; @@ -2549,23 +2321,23 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateConfigStatus( if (op == UNC_OP_CREATE) { for (unsigned int loop = 0; - loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { - if ((UNC_VF_VALID == vbrflowfilter_entry_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vbrflowfilter_entry_val->valid[loop])) - if (vbrflowfilter_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) - vbrflowfilter_entry_val->cs_attr[loop] = - vbrflowfilter_entry_val->cs_row_status; - } + loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { + if ((UNC_VF_VALID == vbrflowfilter_entry_val->valid[loop]) + || (UNC_VF_VALID_NO_VALUE == vbrflowfilter_entry_val->valid[loop])) + if (vbrflowfilter_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) + vbrflowfilter_entry_val->cs_attr[loop] = + vbrflowfilter_entry_val->cs_row_status; + } } else if (op == UNC_OP_UPDATE) { void *val = reinterpret_cast(vbrflowfilter_entry_val); CompareValidValue(val, GetVal(upd_key), true); for (unsigned int loop = 0; - loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { - if (vbrflowfilter_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) - if ((UNC_VF_VALID == vbrflowfilter_entry_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vbrflowfilter_entry_val->valid[loop])) - vbrflowfilter_entry_val->cs_attr[loop] = - vbrflowfilter_entry_val->cs_row_status; + loop < sizeof(vbrflowfilter_entry_val->valid); ++loop) { + if (vbrflowfilter_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) + if ((UNC_VF_VALID == vbrflowfilter_entry_val->valid[loop]) + || (UNC_VF_VALID_NO_VALUE == vbrflowfilter_entry_val->valid[loop])) + vbrflowfilter_entry_val->cs_attr[loop] = + vbrflowfilter_entry_val->cs_row_status; } } else { UPLL_LOG_DEBUG("Operation Not Supported."); @@ -2587,22 +2359,22 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::AllocVal(ConfigVal *&ck_val, return UPLL_RC_ERR_GENERIC; } switch (tbl) { - case MAINTBL: - val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); - ck_val = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val); - break; - default: - val = NULL; - return UPLL_RC_ERR_GENERIC; + case MAINTBL: + val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + ck_val = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val); + break; + default: + val = NULL; + return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("AllocVal Success"); return UPLL_RC_SUCCESS; } /*Return result of validation*/ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxVote(unc_key_type_t keytype, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; ConfigKeyVal *req = NULL, *nreq = NULL; DalResultCode db_result; @@ -2613,32 +2385,41 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxVote(unc_key_type_t keytype, // uint8_t *ctrlr_id = NULL; for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, nreq, &cfg1_cursor, dmi, MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + continue; + } while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("No diff found for op %d", op[i]); + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); break; } val_flowfilter_entry_t* val = reinterpret_cast - (GetVal(req)); + (GetVal(req)); if ((val->valid[UPLL_IDX_REDIRECT_NODE_FFE] == - UNC_VF_VALID) && + UNC_VF_VALID) && (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == - UNC_VF_VALID)) { - result_code = VerifyRedirectDestination(req, dmi, - UPLL_DT_CANDIDATE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Invalid redirect-destination node/interface"); - *err_ckv = req; - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } + UNC_VF_VALID)) { + result_code = VerifyRedirectDestination(req, dmi, + UPLL_DT_CANDIDATE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Invalid redirect-destination node/interface"); + DEL_USER_DATA(req); // Delete the controller and domain from req + *err_ckv = req; + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; } + } } dmi->CloseCursor(cfg1_cursor, true); if (req) delete req; @@ -2663,15 +2444,15 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::VerifyRedirectDestination( controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(controller_domain)); key_vbr_if_flowfilter_entry_t *key_vbrif_ffe = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); /* read val_vtn_flowfilter_entry from ikey*/ val_flowfilter_entry_t *val_flowfilter_entry = - static_cast( - ikey->get_cfg_val()->get_val()); + static_cast( + ikey->get_cfg_val()->get_val()); // Symentic Validation for redirect destination if ((val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] == - UNC_VF_VALID) && + UNC_VF_VALID) && (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID)) { DbSubOp dbop_up = { kOpReadExist, kOpMatchCtrlr|kOpMatchDomain, @@ -2679,17 +2460,17 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::VerifyRedirectDestination( result_code = GetControllerDomainID(ikey, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", - result_code); + result_code); } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); // Verify whether the vtnnode and interface are exists in DB // 1. Check for the vbridge Node mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_IF))); + (const_cast(GetMoManager(UNC_KT_VBR_IF))); if (NULL == mgr) { UPLL_LOG_DEBUG("Unable to get VBRIDGE Interface object"); return UPLL_RC_ERR_GENERIC; @@ -2697,41 +2478,42 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::VerifyRedirectDestination( result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory allocation failed for VBRIDGE key struct - %d", - result_code); + result_code); return result_code; } key_vbr_if_t *vbrif_key = static_cast( okey->get_key()); uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, - key_vbrif_ffe->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + key_vbrif_ffe-> + flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, - reinterpret_cast - (val_flowfilter_entry->redirect_node), - (kMaxLenVnodeName + 1)); + reinterpret_cast + (val_flowfilter_entry->redirect_node), + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(vbrif_key->if_name, - reinterpret_cast - (val_flowfilter_entry->redirect_port), - kMaxLenInterfaceName + 1); + reinterpret_cast + (val_flowfilter_entry->redirect_port), + kMaxLenInterfaceName + 1); /* Check vtnnode and interface exists in table*/ SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); result_code = mgr->UpdateConfigDB(okey, dt_type, - UNC_OP_READ, dmi, &dbop_up, MAINTBL); + UNC_OP_READ, dmi, &dbop_up, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { UPLL_LOG_DEBUG("vtn node/interface in val_flowfilter_entry exists" - "in DB"); + "in DB"); } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { DELETE_IF_NOT_NULL(okey); // 2. Check for Vrouter Node // Verify whether the vtnnode and interface are exists in DB mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VRT_IF))); + (const_cast(GetMoManager(UNC_KT_VRT_IF))); if (NULL == mgr) { UPLL_LOG_DEBUG("Unable to get VROUTER Interface object"); return UPLL_RC_ERR_GENERIC; @@ -2739,40 +2521,41 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::VerifyRedirectDestination( result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory allocation failed for VROUTER key struct - %d", - result_code); + result_code); return result_code; } key_vrt_if_t *vrtif_key = static_cast( okey->get_key()); uuu::upll_strncpy(vrtif_key->vrt_key.vtn_key.vtn_name, - key_vbrif_ffe->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + key_vbrif_ffe-> + flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vrtif_key->vrt_key.vrouter_name, - reinterpret_cast - (val_flowfilter_entry->redirect_node), - (kMaxLenVnodeName + 1)); + reinterpret_cast + (val_flowfilter_entry->redirect_node), + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(vrtif_key->if_name, - reinterpret_cast - (val_flowfilter_entry->redirect_port), - kMaxLenInterfaceName + 1); + reinterpret_cast + (val_flowfilter_entry->redirect_port), + kMaxLenInterfaceName + 1); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); /* Check vtnnode and interface exists in table*/ result_code = mgr->UpdateConfigDB(okey, dt_type, - UNC_OP_READ, dmi, &dbop_up, MAINTBL); + UNC_OP_READ, dmi, &dbop_up, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("vtn node/interface in val struct does not exists" - "in DB"); + "in DB"); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_CFG_SEMANTIC; } } result_code = - (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : - result_code; + (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : + result_code; DELETE_IF_NOT_NULL(okey); } // end of Symentic Validation return result_code; @@ -2788,104 +2571,66 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("input key is null"); return UPLL_RC_ERR_GENERIC; } + MoMgrImpl *mgr = NULL; key_vbr_if_flowfilter_entry_t *key_vbrif_ffe = reinterpret_cast(ikey->get_key()); - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBRIF_FLOWFILTER))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigkey failed - %d", result_code); - return result_code; - } - - key_vbr_if_flowfilter_t *vbrif_ff_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vbrif_ff_key->if_key.vbr_key.vtn_key.vtn_name, - key_vbrif_ffe->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbrif_ff_key->if_key.vbr_key.vbridge_name, - key_vbrif_ffe->flowfilter_key.if_key.vbr_key.vbridge_name, - kMaxLenVnodeName + 1); - - uuu::upll_strncpy(vbrif_ff_key->if_key.if_name, - key_vbrif_ffe->flowfilter_key.if_key.if_name, - kMaxLenInterfaceName + 1); - - vbrif_ff_key->direction = key_vbrif_ffe->flowfilter_key.direction; - - /* Checks the given vbr_if_flowfilter exists or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VBR_IF_FLOWFILTER key does not exists"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; /* read val_vtn_flowfilter_entry from ikey*/ val_flowfilter_entry_t *val_flowfilter_entry = - static_cast( - ikey->get_cfg_val()->get_val()); + static_cast( + ikey->get_cfg_val()->get_val()); if (val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] - == UNC_VF_VALID) { - /* validate flowlist_name in val_flowfilter_entry exists in FLOWLIST table*/ - mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_FLOWLIST))); + == UNC_VF_VALID) { + /* validate flowlist_name in val_flowfilter_entry exists + * in FLOWLIST table*/ + mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_FLOWLIST))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("Unable to get FLOWLIST object"); - return UPLL_RC_ERR_GENERIC; - } + if (NULL == mgr) { + UPLL_LOG_DEBUG("Unable to get FLOWLIST object"); + return UPLL_RC_ERR_GENERIC; + } - /** allocate memory for FLOWLIST key_struct */ - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for FLOWLIST key struct - %d", - result_code); - return result_code; - } + /** allocate memory for FLOWLIST key_struct */ + result_code = mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Memory allocation failed for FLOWLIST key struct - %d", + result_code); + return result_code; + } - /** fill key_flowlist_t from val_flowfilter_entry*/ - key_flowlist_t *key_flowlist = static_cast( - okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - val_flowfilter_entry->flowlist_name, - kMaxLenFlowListName+1); + /** fill key_flowlist_t from val_flowfilter_entry*/ + key_flowlist_t *key_flowlist = static_cast( + okey->get_key()); + uuu::upll_strncpy(key_flowlist->flowlist_name, + val_flowfilter_entry->flowlist_name, + kMaxLenFlowListName+1); - UPLL_LOG_TRACE("Flowlist name in val_flowfilter_entry %s data type (%d)", - key_flowlist->flowlist_name, req->datatype); + UPLL_LOG_TRACE("Flowlist name in val_flowfilter_entry %s data type (%d)", + key_flowlist->flowlist_name, req->datatype); - /* Check flowlist_name exists in table*/ - result_code = mgr->UpdateConfigDB(okey, req->datatype, - UNC_OP_READ, dmi, MAINTBL); + /* Check flowlist_name exists in table*/ + result_code = mgr->UpdateConfigDB(okey, req->datatype, + UNC_OP_READ, dmi, MAINTBL); + + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_DEBUG("Flowlist name in val_flowfilter_entry does not exists" + "in FLOWLIST table result code (%d)", result_code); + delete okey; + okey = NULL; + return UPLL_RC_ERR_CFG_SEMANTIC; + } else { + result_code = UPLL_RC_SUCCESS; + } - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("Flowlist name in val_flowfilter_entry does not exists" - "in FLOWLIST table result code (%d)", result_code); delete okey; okey = NULL; - return UPLL_RC_ERR_CFG_SEMANTIC; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; } if (val_flowfilter_entry->valid[UPLL_IDX_NWM_NAME_FFE] - == UNC_VF_VALID) { + == UNC_VF_VALID) { // validate nwm_name in KT_VBR_NWMONITOR table*/ mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); + (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); if (NULL == mgr) { UPLL_LOG_DEBUG("Unable to get KT_VBR_NWMONITOR object"); @@ -2896,25 +2641,22 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory allocation failed for key_nwm struct - %d", - result_code); + result_code); return result_code; } /** fill key_nwm from key/val VBRIF_FLOWFILTER_ENTRY structs*/ key_nwm_t *key_nwm = static_cast( - okey->get_key()); + okey->get_key()); uuu::upll_strncpy(key_nwm->nwmonitor_name, - val_flowfilter_entry->nwm_name, - kMaxLenVnodeName+1); + val_flowfilter_entry->nwm_name, + kMaxLenVnodeName+1); uuu::upll_strncpy(key_nwm->vbr_key.vtn_key.vtn_name, - key_vbrif_ffe->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName+1); - - uuu::upll_strncpy(key_nwm->vbr_key.vbridge_name, - key_vbrif_ffe->flowfilter_key.if_key.vbr_key.vbridge_name, - kMaxLenVnodeName+1); + key_vbrif_ffe-> + flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName+1); /* Check nwm_name exists in table*/ result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, @@ -2922,7 +2664,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("NWM name in val_flowfilter_entry does not exists" - "in KT_VBR_NWMONITOR table"); + "in KT_VBR_NWMONITOR table"); delete okey; okey = NULL; return UPLL_RC_ERR_CFG_SEMANTIC; @@ -2933,18 +2675,14 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, delete okey; okey = NULL; } // nwm_name is valid - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } UPLL_LOG_DEBUG("ValidateAttribute Successfull."); return result_code; } -upll_rc_t VbrIfFlowFilterEntryMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VbrIfFlowFilterEntryMoMgr::IsReferenced( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ikey) return UPLL_RC_ERR_GENERIC; @@ -2955,13 +2693,13 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::IsReferenced(ConfigKeyVal *ikey, } upll_rc_t VbrIfFlowFilterEntryMoMgr::GetValid(void *val, uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (val == NULL) { UPLL_LOG_DEBUG("Memory is not Allocated"); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL) { @@ -2969,38 +2707,38 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetValid(void *val, uint64_t indx, } val_flowfilter_entry_t *val_ffe = reinterpret_cast - (val); + (val); switch (indx) { case uudst::vbr_if_flowfilter_entry::kDbiFlowlistName: - valid = &val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_FFE]; - break; + valid = &val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_FFE]; + break; case uudst::vbr_if_flowfilter_entry::kDbiAction: valid = &val_ffe->valid[UPLL_IDX_ACTION_FFE]; - break; + break; case uudst::vbr_if_flowfilter_entry::kDbiRedirectNode: - valid = &val_ffe->valid[UPLL_IDX_REDIRECT_NODE_FFE]; - break; + valid = &val_ffe->valid[UPLL_IDX_REDIRECT_NODE_FFE]; + break; case uudst::vbr_if_flowfilter_entry::kDbiRedirectPort: - valid = &val_ffe->valid[UPLL_IDX_REDIRECT_PORT_FFE]; - break; + valid = &val_ffe->valid[UPLL_IDX_REDIRECT_PORT_FFE]; + break; case uudst::vbr_if_flowfilter_entry::kDbiModifyDstMac: - valid = &val_ffe->valid[UPLL_IDX_MODIFY_DST_MAC_FFE]; - break; + valid = &val_ffe->valid[UPLL_IDX_MODIFY_DST_MAC_FFE]; + break; case uudst::vbr_if_flowfilter_entry::kDbiModifySrcMac: - valid = &val_ffe->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE]; - break; + valid = &val_ffe->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE]; + break; case uudst::vbr_if_flowfilter_entry::kDbiNwmName: - valid = &val_ffe->valid[UPLL_IDX_NWM_NAME_FFE]; - break; + valid = &val_ffe->valid[UPLL_IDX_NWM_NAME_FFE]; + break; case uudst::vbr_if_flowfilter_entry::kDbiDscp: - valid = &val_ffe->valid[UPLL_IDX_DSCP_FFE]; + valid = &val_ffe->valid[UPLL_IDX_DSCP_FFE]; break; case uudst::vbr_if_flowfilter_entry::kDbiPriority: - valid = &val_ffe->valid[UPLL_IDX_PRIORITY_FFE]; - break; + valid = &val_ffe->valid[UPLL_IDX_PRIORITY_FFE]; + break; default: - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("GetValidAttributte is Succesfull"); return UPLL_RC_SUCCESS; @@ -3062,8 +2800,10 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability( + req, + ikey, + reinterpret_cast(ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { delete dup_key; delete l_key; @@ -3104,7 +2844,9 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, reinterpret_cast (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); - result_code = GetVexternalInformation(dup_key, UPLL_DT_CANDIDATE, + // For DT_STATE additional information will be returned which is not + // required. So, passing UPLL_DT_RUNNING + result_code = GetVexternalInformation(dup_key, UPLL_DT_RUNNING, pfc_val, db_flag, dmi); if (UPLL_RC_SUCCESS != result_code) { @@ -3129,10 +2871,10 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, ipc_req.header.datatype = req->datatype; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, - &ipc_req, true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, + &ipc_req, true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -3253,8 +2995,10 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability( + req, + ikey, + reinterpret_cast(ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { delete dup_key; delete l_key; @@ -3288,7 +3032,9 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, reinterpret_cast (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); - result_code = GetVexternalInformation(tctrl_key, UPLL_DT_CANDIDATE, + // For DT_STATE additional information will be returned which is not + // required. So, passing UPLL_DT_RUNNING + result_code = GetVexternalInformation(tctrl_key, UPLL_DT_RUNNING, pfc_val, db_flag, dmi); if (UPLL_RC_SUCCESS != result_code) { @@ -3309,7 +3055,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, ipc_req.header.operation = UNC_OP_READ; ipc_req.header.option1 = req->option1; ipc_req.header.datatype = req->datatype; - + tmp_key = tctrl_key; while (tmp_key != NULL) { reinterpret_cast @@ -3367,7 +3113,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } upll_rc_t VbrIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -3379,19 +3125,19 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_rename_vnode_info *key_rename = NULL; key_rename = reinterpret_cast (ikey->get_key()); key_vbr_if_flowfilter_entry_t * key_vbr_if_ff_entry = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_flowfilter_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_flowfilter_entry_t))); if (!strlen(reinterpret_cast (key_rename->old_unc_vtn_name))) { UPLL_LOG_DEBUG("old_unc_vtn_name NULL"); - if(key_vbr_if_ff_entry) free(key_vbr_if_ff_entry); - return UPLL_RC_ERR_GENERIC; + if (key_vbr_if_ff_entry) free(key_vbr_if_ff_entry); + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy( - key_vbr_if_ff_entry->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, - (kMaxLenVtnName + 1)); + key_vbr_if_ff_entry->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + key_rename->old_unc_vtn_name, + (kMaxLenVtnName + 1)); if (UNC_KT_VBRIDGE == ikey->get_key_type()) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { @@ -3399,7 +3145,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, free(key_vbr_if_ff_entry); return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(key_vbr_if_ff_entry->flowfilter_key.if_key.vbr_key.vbridge_name, + uuu::upll_strncpy(key_vbr_if_ff_entry-> + flowfilter_key.if_key.vbr_key.vbridge_name, key_rename->old_unc_vnode_name, (kMaxLenVnodeName + 1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { @@ -3407,7 +3154,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, free(key_vbr_if_ff_entry); return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(key_vbr_if_ff_entry->flowfilter_key.if_key.vbr_key.vbridge_name, + uuu::upll_strncpy(key_vbr_if_ff_entry-> + flowfilter_key.if_key.vbr_key.vbridge_name, key_rename->new_unc_vnode_name, (kMaxLenVnodeName + 1)); } key_vbr_if_ff_entry->flowfilter_key.direction = 0xFE; @@ -3423,14 +3171,15 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; - //ConfigKeyVal *ckval = NULL; + // ConfigKeyVal *ckval = NULL; controller_domain ctrlr_dom; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; @@ -3442,11 +3191,12 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return result_code; } key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); - - //copy the old flowlist name to val_flowfilter_entry - val_flowfilter_entry_t *val_ff_entry = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + reinterpret_cast(ikey->get_key()); + + // copy the old flowlist name to val_flowfilter_entry + val_flowfilter_entry_t *val_ff_entry = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); if (ikey->get_key_type() == UNC_KT_FLOWLIST) { if (!strlen(reinterpret_cast(key_rename->old_flowlist_name))) { @@ -3455,8 +3205,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(val_ff_entry->flowlist_name, - key_rename->old_flowlist_name, - (kMaxLenFlowListName + 1)); + key_rename->old_flowlist_name, + (kMaxLenFlowListName + 1)); val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("valid and flowlist name (%d) (%s)", val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE], @@ -3468,8 +3218,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(val_ff_entry->redirect_node, - key_rename->old_unc_vnode_name, - sizeof(val_ff_entry->redirect_node)); + key_rename->old_unc_vnode_name, + sizeof(val_ff_entry->redirect_node)); val_ff_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("valid and vbridge name (%d) (%s)", val_ff_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE], @@ -3478,21 +3228,24 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, result_code = GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - FREE_IF_NOT_NULL(val_ff_entry); - return result_code; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + FREE_IF_NOT_NULL(val_ff_entry); + return result_code; } - + if (!okey) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - free(val_ff_entry); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + free(val_ff_entry); + return UPLL_RC_ERR_GENERIC; } - okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry)); + okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + val_ff_entry)); - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; // Read the record of key structure and old flowlist name in maintbl result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, @@ -3512,47 +3265,48 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } if (!kval) return UPLL_RC_ERR_GENERIC; // Copy the new flowlist name in val_flowfilter_entry - val_flowfilter_entry_t *val_ff_entry_new = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + val_flowfilter_entry_t *val_ff_entry_new = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); if (!val_ff_entry_new) return UPLL_RC_ERR_GENERIC; if (ikey->get_key_type() == UNC_KT_FLOWLIST) { - // New Name NuLL CHECK - if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { - UPLL_LOG_DEBUG("new_flowlist_name NULL"); - if (val_ff_entry_new) free(val_ff_entry_new); - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(first_ckv); - return UPLL_RC_ERR_GENERIC; - } - // Copy the new flowlist_name into val_flowfilter_entry - uuu::upll_strncpy(val_ff_entry_new->flowlist_name, - key_rename->new_flowlist_name, - (kMaxLenFlowListName + 1)); - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; - UPLL_LOG_DEBUG("flowlist name and valid (%d) (%s)", - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry_new->flowlist_name); + // New Name NuLL CHECK + if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { + UPLL_LOG_DEBUG("new_flowlist_name NULL"); + if (val_ff_entry_new) free(val_ff_entry_new); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(first_ckv); + return UPLL_RC_ERR_GENERIC; + } + // Copy the new flowlist_name into val_flowfilter_entry + uuu::upll_strncpy(val_ff_entry_new->flowlist_name, + key_rename->new_flowlist_name, + (kMaxLenFlowListName + 1)); + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; + UPLL_LOG_DEBUG("flowlist name and valid (%d) (%s)", + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry_new->flowlist_name); } else if (ikey->get_key_type() == UNC_KT_VBRIDGE) { - // New Name NuLL CHECK - if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { - UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); - if (val_ff_entry_new) free(val_ff_entry_new); - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(first_ckv); - return UPLL_RC_ERR_GENERIC; - } - // Copy the new vbridge name into val_flowfilter_entry - uuu::upll_strncpy(val_ff_entry_new->redirect_node, - key_rename->new_unc_vnode_name, - sizeof(val_ff_entry_new->redirect_node)); - val_ff_entry_new->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; - UPLL_LOG_DEBUG("vbridge name and valid (%d) (%s)", - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry_new->redirect_node); - + // New Name NuLL CHECK + if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { + UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); + if (val_ff_entry_new) free(val_ff_entry_new); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(first_ckv); + return UPLL_RC_ERR_GENERIC; + } + // Copy the new vbridge name into val_flowfilter_entry + uuu::upll_strncpy(val_ff_entry_new->redirect_node, + key_rename->new_unc_vnode_name, + sizeof(val_ff_entry_new->redirect_node)); + val_ff_entry_new->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; + UPLL_LOG_DEBUG("vbridge name and valid (%d) (%s)", + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry_new->redirect_node); } - ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry_new); + ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + val_ff_entry_new); kval->SetCfgVal(cval1); memset(&ctrlr_dom, 0, sizeof(controller_domain)); @@ -3574,7 +3328,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, if (!no_rename) rename = rename | VBR_RENAME_FLAG; else - rename = rename & NO_VBR_RENAME_FLAG; + rename = rename & NO_VBR_RENAME_FLAG; } SET_USER_DATA_FLAGS(kval, rename); @@ -3582,10 +3336,11 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, // Update the new flowlist name in MAINTBL result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Create record Err in vbrflowfilterentrytbl CANDIDATE DB(%d)", - result_code); + UPLL_LOG_DEBUG("Create record Err in vbrflowfilterentrytbl" + "CANDIDATE DB(%d)", + result_code); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(first_ckv); @@ -3600,7 +3355,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } bool VbrIfFlowFilterEntryMoMgr::CompareValidValue(void *&val1, - void *val2, bool copy_to_running) { + void *val2, + bool copy_to_running) { UPLL_FUNC_TRACE; bool attr = true; val_flowfilter_entry_t *val_ff_entry1 = @@ -3609,71 +3365,71 @@ bool VbrIfFlowFilterEntryMoMgr::CompareValidValue(void *&val1, reinterpret_cast(val2); for ( unsigned int loop = 0; loop < sizeof(val_ff_entry1->valid); ++loop ) { - if ( UNC_VF_INVALID == val_ff_entry1->valid[loop] && - UNC_VF_VALID == val_ff_entry2->valid[loop]) - val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; + if ( UNC_VF_INVALID == val_ff_entry1->valid[loop] && + UNC_VF_VALID == val_ff_entry2->valid[loop]) + val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->flowlist_name), - reinterpret_cast(val_ff_entry2->flowlist_name))) + reinterpret_cast(val_ff_entry2->flowlist_name))) val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { if (val_ff_entry1->action == val_ff_entry2->action) val_ff_entry1->valid[UPLL_IDX_ACTION_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->redirect_node), - reinterpret_cast(val_ff_entry2->redirect_node))) + reinterpret_cast(val_ff_entry2->redirect_node))) val_ff_entry1->valid[UPLL_IDX_REDIRECT_NODE_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->redirect_port), - reinterpret_cast(val_ff_entry2->redirect_port))) + reinterpret_cast(val_ff_entry2->redirect_port))) val_ff_entry1->valid[UPLL_IDX_REDIRECT_PORT_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID) { if (!memcmp(reinterpret_cast(val_ff_entry1->modify_dstmac), - reinterpret_cast(val_ff_entry2->modify_dstmac), - sizeof(val_ff_entry2->modify_dstmac))) + reinterpret_cast(val_ff_entry2->modify_dstmac), + sizeof(val_ff_entry2->modify_dstmac))) val_ff_entry1->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID) { if (!memcmp(reinterpret_cast(val_ff_entry1->modify_srcmac), - reinterpret_cast(val_ff_entry2->modify_srcmac), - sizeof(val_ff_entry2->modify_srcmac))) + reinterpret_cast(val_ff_entry2->modify_srcmac), + sizeof(val_ff_entry2->modify_srcmac))) val_ff_entry1->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->nwm_name), - reinterpret_cast(val_ff_entry2->nwm_name))) + reinterpret_cast(val_ff_entry2->nwm_name))) val_ff_entry1->valid[UPLL_IDX_NWM_NAME_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID) { if (val_ff_entry1->dscp == val_ff_entry2->dscp) val_ff_entry1->valid[UPLL_IDX_DSCP_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID) { if (val_ff_entry1->priority == val_ff_entry2->priority) val_ff_entry1->valid[UPLL_IDX_PRIORITY_FFE] = UNC_VF_INVALID; } UPLL_LOG_DEBUG("CompareValidValue : Success"); for (unsigned int loop = 0; - loop < sizeof(val_ff_entry1->valid)/ sizeof(uint8_t); ++loop) { + loop < sizeof(val_ff_entry1->valid)/ sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_ff_entry1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_ff_entry1->valid[loop])) attr = false; @@ -3682,13 +3438,14 @@ bool VbrIfFlowFilterEntryMoMgr::CompareValidValue(void *&val1, } -upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { +upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController( + unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; @@ -3703,14 +3460,14 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, uint8_t db_flag_running = 0; IpcResponse ipc_resp; if (affected_ctrlr_set == NULL) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); + op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); unc_keytype_operation_t op1 = op; while (result_code == UPLL_RC_SUCCESS) { @@ -3727,7 +3484,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, switch (op) { case UNC_OP_CREATE: case UNC_OP_UPDATE: - /* fall through intended */ + /* fall through intended */ op1 = op; result_code = DupConfigKeyVal(ck_main, req, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -3737,22 +3494,22 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, break; case UNC_OP_DELETE: { - op1 = op; - result_code = GetChildConfigKey(ck_main, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("GetChildConfigKey failed %d", result_code); - return result_code; - } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr}; - result_code = ReadConfigDB(ck_main, UPLL_DT_RUNNING, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - DELETE_IF_NOT_NULL(ck_main); - return UPLL_RC_ERR_GENERIC; - } + op1 = op; + result_code = GetChildConfigKey(ck_main, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("GetChildConfigKey failed %d", result_code); + return result_code; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr}; + result_code = ReadConfigDB(ck_main, UPLL_DT_RUNNING, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + DELETE_IF_NOT_NULL(ck_main); + return UPLL_RC_ERR_GENERIC; + } } - break; + break; default: UPLL_LOG_DEBUG("TxUpdateController Invalid operation"); return UPLL_RC_ERR_GENERIC; @@ -3763,7 +3520,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); GET_USER_DATA_FLAGS(ck_main, db_flag); ConfigKeyVal *tmp_cfgkeyval = NULL; @@ -3773,68 +3530,68 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, continue; } else { result_code = GetChildConfigKey(tmp_cfgkeyval, ck_main); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed err %d", result_code); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed err %d", result_code); + DELETE_IF_NOT_NULL(ck_main); + return result_code; + } + SET_USER_DATA_CTRLR_DOMAIN(tmp_cfgkeyval, ctrlr_dom); + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, + kOpInOutFlag }; + result_code = ReadConfigDB(tmp_cfgkeyval, UPLL_DT_RUNNING, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Unable to read from DB, err: %d", result_code); DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(tmp_cfgkeyval); return result_code; } - SET_USER_DATA_CTRLR_DOMAIN(tmp_cfgkeyval, ctrlr_dom); - DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, - kOpInOutFlag }; - result_code = ReadConfigDB(tmp_cfgkeyval, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Unable to read from DB, err: %d", result_code); - DELETE_IF_NOT_NULL(ck_main); - DELETE_IF_NOT_NULL(tmp_cfgkeyval); - return result_code; - } - } - GET_USER_DATA_FLAGS(tmp_cfgkeyval, db_flag_running); - if (!(SET_FLAG_PORTMAP & db_flag_running) && - !(SET_FLAG_VLINK & db_flag_running)) { - UPLL_LOG_DEBUG("Portmap flag is not set for vbrifFFEntry"); - DELETE_IF_NOT_NULL(ck_main); - DELETE_IF_NOT_NULL(tmp_cfgkeyval); - continue; - } - op1 = UNC_OP_DELETE; - vext_datatype = UPLL_DT_RUNNING; - db_flag = db_flag_running; + } + GET_USER_DATA_FLAGS(tmp_cfgkeyval, db_flag_running); + if (!(SET_FLAG_PORTMAP & db_flag_running) && + !(SET_FLAG_VLINK & db_flag_running)) { + UPLL_LOG_DEBUG("Portmap flag is not set for vbrifFFEntry"); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(tmp_cfgkeyval); + continue; + } + op1 = UNC_OP_DELETE; + vext_datatype = UPLL_DT_RUNNING; + db_flag = db_flag_running; } DELETE_IF_NOT_NULL(tmp_cfgkeyval); } else if (op == UNC_OP_UPDATE) { - result_code = GetChildConfigKey(tmp_cfgkeyval, ck_main); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed, err %d", result_code); - DELETE_IF_NOT_NULL(ck_main); - return result_code; - } - SET_USER_DATA_CTRLR_DOMAIN(tmp_cfgkeyval, ctrlr_dom); - DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, - kOpInOutFlag}; - result_code = ReadConfigDB(tmp_cfgkeyval, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Unable to read from DB, err: %d", result_code); - DELETE_IF_NOT_NULL(ck_main); - DELETE_IF_NOT_NULL(tmp_cfgkeyval); - return result_code; - } - } - GET_USER_DATA_FLAGS(tmp_cfgkeyval, db_flag_running); - if (!(SET_FLAG_PORTMAP & db_flag_running) && - !(SET_FLAG_VLINK & db_flag_running)) { - UPLL_LOG_DEBUG("Portmap flag is not set at running"); - op1 = UNC_OP_CREATE; - vext_datatype = UPLL_DT_CANDIDATE; - } else { - void *main = GetVal(ck_main); - void *val_nrec = (nreq) ? GetVal(nreq) : NULL; - FilterAttributes(main, val_nrec, false, op); - } + result_code = GetChildConfigKey(tmp_cfgkeyval, ck_main); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed, err %d", result_code); + DELETE_IF_NOT_NULL(ck_main); + return result_code; + } + SET_USER_DATA_CTRLR_DOMAIN(tmp_cfgkeyval, ctrlr_dom); + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, + kOpInOutFlag}; + result_code = ReadConfigDB(tmp_cfgkeyval, UPLL_DT_RUNNING, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Unable to read from DB, err: %d", result_code); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(tmp_cfgkeyval); + return result_code; + } + } + GET_USER_DATA_FLAGS(tmp_cfgkeyval, db_flag_running); + if (!(SET_FLAG_PORTMAP & db_flag_running) && + !(SET_FLAG_VLINK & db_flag_running)) { + UPLL_LOG_DEBUG("Portmap flag is not set at running"); + op1 = UNC_OP_CREATE; + vext_datatype = UPLL_DT_CANDIDATE; + } else { + void *main = GetVal(ck_main); + void *val_nrec = (nreq) ? GetVal(nreq) : NULL; + FilterAttributes(main, val_nrec, false, op); + } DELETE_IF_NOT_NULL(tmp_cfgkeyval); } @@ -3864,17 +3621,17 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, return result_code; } upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? - UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; + UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; result_code = GetRenamedControllerKey(ck_main, dt_type, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", - result_code); - DELETE_IF_NOT_NULL(ck_main); - FREE_IF_NOT_NULL(pfc_val); - break; - } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", + result_code); + DELETE_IF_NOT_NULL(ck_main); + FREE_IF_NOT_NULL(pfc_val); + break; + } if (UNC_OP_DELETE == op1) { pfc_val->valid[PFCDRV_IDX_FLOWFILTER_ENTRY_FFE] = UNC_VF_INVALID; } else { @@ -3892,11 +3649,11 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, // Inserting the controller to Set affected_ctrlr_set->insert - (string(reinterpret_cast(ctrlr_dom.ctrlr))); + (string(reinterpret_cast(ctrlr_dom.ctrlr))); result_code = SendIpcReq(session_id, config_id, op1, UPLL_DT_CANDIDATE, - ck_main, &ctrlr_dom, &ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + ck_main, &ctrlr_dom, &ipc_resp); + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG(" driver result code - %d", ipc_resp.header.result_code); result_code = UPLL_RC_SUCCESS; } @@ -3920,10 +3677,10 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::TxUpdateController(unc_key_type_t keytype, } upll_rc_t VbrIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( - ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, InterfacePortMapInfo flags, - unc_keytype_operation_t oper) { + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, InterfacePortMapInfo flags, + unc_keytype_operation_t oper) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == ikey->get_key()) { @@ -3933,28 +3690,11 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( uint8_t *ctrlr_id = NULL; controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(ctrlr_dom)); - result_code = GetChildConfigKey(ckv, NULL); + result_code = GetChildConfigKey(ckv, ikey); if (UPLL_RC_SUCCESS != result_code) { return result_code; } - key_vbr_if_flowfilter_entry_t *ff_key = - reinterpret_cast(ckv->get_key()); - key_vbr_if_t *vbrif_key = reinterpret_cast(ikey->get_key()); - - uuu::upll_strncpy(ff_key->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - vbrif_key->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(ff_key->flowfilter_key.if_key.vbr_key.vbridge_name, - vbrif_key->vbr_key.vbridge_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(ff_key->flowfilter_key.if_key.if_name, - vbrif_key->if_name, - kMaxLenInterfaceName + 1); DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - - ff_key->flowfilter_key.direction = 0xFE; result_code = ReadConfigDB(ckv, dt_type , UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { @@ -3972,7 +3712,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( while (ckv) { flag_port_map = 0; val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(ckv)); + reinterpret_cast (GetVal(ckv)); GET_USER_DATA_FLAGS(ckv, flag_port_map); if (flags & kVlinkConfigured) { UPLL_LOG_DEBUG("Vlink for flowfilterentry"); @@ -3987,7 +3727,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( flag_port_map &= SET_FLAG_NO_VLINK_PORTMAP; } SET_USER_DATA_FLAGS(ckv, flag_port_map); - + UPLL_LOG_DEBUG("SET_USER_DATA_FLAGS flag_port_map %d", flag_port_map); DbSubOp dbop_up = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; result_code = UpdateConfigDB(ckv, dt_type, UNC_OP_UPDATE, @@ -4002,30 +3742,30 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( FlowListMoMgr *mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); if ((flag_port_map & SET_FLAG_VLINK) || - (flag_port_map & SET_FLAG_PORTMAP)) { - op = UNC_OP_CREATE; + (flag_port_map & SET_FLAG_PORTMAP)) { + op = UNC_OP_CREATE; } else { - op = UNC_OP_DELETE; + op = UNC_OP_DELETE; } result_code = GetControllerDomainID(ikey, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); ctrlr_id = ctrlr_dom.ctrlr; result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id), dt_type, op); + reinterpret_cast(flowfilter_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), dt_type, op); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", - result_code); - DELETE_IF_NOT_NULL(ckv); - return result_code; + UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", + result_code); + DELETE_IF_NOT_NULL(ckv); + return result_code; } } ckv = ckv->get_next_cfg_key_val(); @@ -4035,10 +3775,10 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( } upll_rc_t VbrIfFlowFilterEntryMoMgr::GetVexternalInformation( - ConfigKeyVal* ck_main, - upll_keytype_datatype_t dt_type, - pfcdrv_val_flowfilter_entry_t*& pfc_val, - uint8_t db_flag, DalDmlIntf *dmi) { + ConfigKeyVal* ck_main, + upll_keytype_datatype_t dt_type, + pfcdrv_val_flowfilter_entry_t*& pfc_val, + uint8_t db_flag, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; InterfacePortMapInfo flags = kVlinkPortMapNotConfigured; @@ -4046,34 +3786,34 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetVexternalInformation( if (db_flag & SET_FLAG_PORTMAP) { UPLL_LOG_DEBUG("portmap is configured!!"); VbrIfMoMgr *mgrvbrif = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_IF))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_IF))); if (mgrvbrif == NULL) { UPLL_LOG_DEBUG("Unable to get the instance of vbrif"); return result_code; } result_code = mgrvbrif->GetChildConfigKey(ckv, NULL); key_vbr_if_t *vbr_if_key = reinterpret_cast - (ckv->get_key()); + (ckv->get_key()); key_vbr_if_flowfilter_entry_t * temp_key = reinterpret_cast(ck_main->get_key()); uuu::upll_strncpy(vbr_if_key->vbr_key.vtn_key.vtn_name, - temp_key->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + temp_key->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vbr_if_key->vbr_key.vbridge_name, - temp_key->flowfilter_key.if_key.vbr_key.vbridge_name, - kMaxLenVtnName + 1); + temp_key->flowfilter_key.if_key.vbr_key.vbridge_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vbr_if_key->if_name, - temp_key->flowfilter_key.if_key.if_name, - kMaxLenInterfaceName + 1); + temp_key->flowfilter_key.if_key.if_name, + kMaxLenInterfaceName + 1); - uint8_t* vexternal = reinterpret_cast - (ConfigKeyVal::Malloc(kMaxLenVnodeName + 1)); - uint8_t* vex_if = reinterpret_cast - (ConfigKeyVal::Malloc(kMaxLenInterfaceName + 1)); + uint8_t* vexternal = reinterpret_cast + (ConfigKeyVal::Malloc(kMaxLenVnodeName + 1)); + uint8_t* vex_if = reinterpret_cast + (ConfigKeyVal::Malloc(kMaxLenInterfaceName + 1)); result_code = mgrvbrif->GetVexternal(ckv, dt_type, dmi, vexternal, vex_if, flags); if (UPLL_RC_SUCCESS != result_code) { @@ -4088,17 +3828,17 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetVexternalInformation( pfc_val->val_vbrif_vextif.valid[PFCDRV_IDX_VEXTERNAL_NAME_VBRIF] = UNC_VF_VALID; uuu::upll_strncpy(pfc_val->val_vbrif_vextif.vexternal_name, - vexternal, - kMaxLenVnodeName + 1); + vexternal, + kMaxLenVnodeName + 1); pfc_val->val_vbrif_vextif.valid[PFCDRV_IDX_VEXT_IF_NAME_VBRIF] = UNC_VF_VALID; uuu::upll_strncpy(pfc_val->val_vbrif_vextif.vext_if_name, - vex_if, - kMaxLenInterfaceName + 1); + vex_if, + kMaxLenInterfaceName + 1); pfc_val->val_vbrif_vextif.valid[PFCDRV_IDX_INTERFACE_TYPE] = UNC_VF_VALID; pfc_val->val_vbrif_vextif.interface_type = PFCDRV_IF_TYPE_VEXTIF; - free(vexternal); - free(vex_if); + free(vexternal); + free(vex_if); } else if (db_flag & SET_FLAG_VLINK) { UPLL_LOG_DEBUG("Vlink is configured"); pfc_val->valid[PFCDRV_IDX_VAL_VBRIF_VEXTIF_FFE] = UNC_VF_VALID; @@ -4106,18 +3846,19 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetVexternalInformation( pfc_val->val_vbrif_vextif.valid[PFCDRV_IDX_INTERFACE_TYPE] = UNC_VF_VALID; pfc_val->val_vbrif_vextif.interface_type = PFCDRV_IF_TYPE_VBRIF; } else { - UPLL_LOG_DEBUG("Portmap/Vlink is not configured"); - DELETE_IF_NOT_NULL(ckv); - return UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; + UPLL_LOG_DEBUG("Portmap/Vlink is not configured"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; } DELETE_IF_NOT_NULL(ckv); return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VbrIfFlowFilterEntryMoMgr::GetControllerDomainID( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -4131,7 +3872,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, result_code = mgrvbrif->GetChildConfigKey(ckv, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to get the ParentConfigKey, resultcode=%d", - result_code); + result_code); return result_code; } @@ -4167,7 +3908,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, UPLL_LOG_INFO("GetControllerDomainId error err code(%d)", result_code); DELETE_IF_NOT_NULL(ckv); // Resource Leak Fix DELETE_IF_NOT_NULL(vbr_key); // Resource Leak Fix - return UPLL_RC_ERR_GENERIC; + return result_code; } UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", @@ -4187,7 +3928,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VBRIF_FLOWFILTER_ENTRY) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -4248,12 +3989,12 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::ConstructReadDetailResponse( } upll_rc_t VbrIfFlowFilterEntryMoMgr::DeleteChildrenPOM( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; uint8_t *ctrlr_id = NULL; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; -// uint8_t rename = 0; + // uint8_t rename = 0; if (NULL == ikey && NULL == dmi) return result_code; ConfigKeyVal *temp_okey = NULL; @@ -4263,7 +4004,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::DeleteChildrenPOM( return result_code; } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; result_code = ReadConfigDB(temp_okey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -4280,22 +4021,28 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::DeleteChildrenPOM( while (NULL != okey) { GET_USER_DATA_CTRLR(okey, ctrlr_id); val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(okey)); + reinterpret_cast (GetVal(okey)); if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - FlowListMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id), dt_type, UNC_OP_DELETE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", - result_code); - DELETE_IF_NOT_NULL(temp_okey); - return result_code; + uint8_t flag_port_map = 0; + GET_USER_DATA_FLAGS(okey, flag_port_map); + if ((flag_port_map & SET_FLAG_VLINK) || + (flag_port_map & SET_FLAG_PORTMAP)) { + FlowListMoMgr *mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + result_code = mgr->AddFlowListToController( + reinterpret_cast(flowfilter_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), dt_type, UNC_OP_DELETE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" Send delete request to flowlist failed." + "err code(%d)", + result_code); + DELETE_IF_NOT_NULL(temp_okey); + return result_code; + } } } result_code = UpdateConfigDB(okey, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(temp_okey); return result_code; @@ -4315,8 +4062,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val->valid) / sizeof(val->valid[0]); - ++loop) { + loop < sizeof(val->valid) / sizeof(val->valid[0]); + ++loop) { if (val->valid[loop] == UNC_VF_VALID) { val->cs_attr[loop] = UNC_CS_APPLIED; } else if (val->valid[loop] == UNC_VF_INVALID) { @@ -4328,21 +4075,22 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } bool VbrIfFlowFilterEntryMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); return false; } -upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { +upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateConfigStatus( + ConfigKeyVal *ikey, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; ConfigKeyVal * vbr_ffe_run_key = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -4358,47 +4106,47 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, result_code = GetChildConfigKey(vbr_ffe_run_key, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); return result_code; } - DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag |kOpInOutCs }; + DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag |kOpInOutCs }; result_code = ReadConfigDB(vbr_ffe_run_key, UPLL_DT_RUNNING , - UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); + UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to read configuration from RunningDb"); - DELETE_IF_NOT_NULL(vbr_ffe_run_key); + UPLL_LOG_DEBUG("Unable to read configuration from RunningDb"); + DELETE_IF_NOT_NULL(vbr_ffe_run_key); return result_code; } val_main = reinterpret_cast - (GetVal(vbr_ffe_run_key)); + (GetVal(vbr_ffe_run_key)); for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { - ffe_val->cs_attr[loop] = val_main->cs_attr[loop]; + sizeof(val_main->valid[0]); ++loop) { + ffe_val->cs_attr[loop] = val_main->cs_attr[loop]; } void *ffeval = reinterpret_cast(ffe_val); CompareValidValue(ffeval, GetVal(upd_key), true); } else { return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_TRACE("%s",(ikey->ToStrAll()).c_str()); - val_flowfilter_entry_t *ffe_val2 = - reinterpret_cast(GetVal(upd_key)); + UPLL_LOG_TRACE("%s", (ikey->ToStrAll()).c_str()); + val_flowfilter_entry_t *ffe_val2 = + reinterpret_cast(GetVal(upd_key)); if (UNC_OP_UPDATE == op) { UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); ffe_val->cs_row_status = ffe_val2->cs_row_status; } for (unsigned int loop = 0; - loop < sizeof(ffe_val->valid) / sizeof(ffe_val->valid[0]); ++loop) { + loop < sizeof(ffe_val->valid) / sizeof(ffe_val->valid[0]); ++loop) { /* Setting CS to the not supported attributes*/ if (UNC_VF_NOT_SUPPORTED == ffe_val->valid[loop]) { - ffe_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + ffe_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; } else if ((UNC_VF_VALID == ffe_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == ffe_val->valid[loop])) { - ffe_val->cs_attr[loop] = cs_status; + || (UNC_VF_VALID_NO_VALUE == ffe_val->valid[loop])) { + ffe_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == ffe_val->valid[loop]) && (UNC_OP_CREATE == op)) { - ffe_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; + ffe_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; } else if ((UNC_VF_INVALID == ffe_val->valid[loop]) && (UNC_OP_UPDATE == op)) { if (val_main->valid[loop] == UNC_VF_VALID) { @@ -4407,28 +4155,28 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, } } } else if ((UNC_VF_VALID == ffe_val->valid[loop]) && - (UNC_OP_UPDATE == op)) { + (UNC_OP_UPDATE == op)) { if (cs_status == UNC_CS_APPLIED) { ffe_val->cs_attr[loop] = UNC_CS_APPLIED; - } - } + } + } if ((ffe_val->valid[loop] == UNC_VF_VALID_NO_VALUE) - &&(UNC_OP_UPDATE == op)) { + &&(UNC_OP_UPDATE == op)) { ffe_val->cs_attr[loop] = UNC_CS_UNKNOWN; } UPLL_LOG_TRACE("Value : %d Cs : %d", loop, ffe_val->cs_attr[loop]); } - DELETE_IF_NOT_NULL(vbr_ffe_run_key); + DELETE_IF_NOT_NULL(vbr_ffe_run_key); return result_code; } upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *val_ffe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_ffe) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -4441,8 +4189,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIF_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIF_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -4463,14 +4211,14 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (!fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -4499,7 +4247,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } DbSubOp dbop1 = {kOpReadSingle, kOpMatchNone, kOpInOutFlag}; result_code = ReadConfigDB(dup_ckv, req->datatype, UNC_OP_READ, - dbop1, dmi, MAINTBL); + dbop1, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(dup_ckv); @@ -4510,19 +4258,19 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, if (UNC_VF_VALID == val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (!fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); return UPLL_RC_ERR_GENERIC; - } + } uint8_t fl_rename = 0; result_code = fl_mgr->IsRenamed(fl_ckv, req->datatype, dmi, fl_rename); if (UPLL_RC_SUCCESS != result_code) { @@ -4532,7 +4280,7 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } UPLL_LOG_DEBUG("IsRenamed rename value : %d", rename); if (fl_rename & 0x01) { - rename |= FLOW_RENAME; // TODO Check for correct flag value + rename |= FLOW_RENAME; // TODO(upll): Check for correct flag value UPLL_LOG_DEBUG("rename value after flowlist : %d", rename); } else { rename &= NO_FLOWLIST_RENAME; @@ -4541,7 +4289,9 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(fl_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_ffe->valid [UPLL_IDX_FLOWLIST_NAME_FFE]) { - rename &= NO_FLOWLIST_RENAME; // TODO Check for correct flag value. No rename flowlist value should be set + rename &= NO_FLOWLIST_RENAME; // TODO(upll): Check for correct + // flag value. + // No rename flowlist value should be set } SET_USER_DATA_FLAGS(ikey, rename); } @@ -4549,13 +4299,13 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VbrIfFlowFilterEntryMoMgr::GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + UNC_KT_FLOWLIST))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -4564,8 +4314,8 @@ upll_rc_t VbrIfFlowFilterEntryMoMgr::GetFlowlistConfigKey( key_flowlist_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->flowlist_name, - flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_name, + (kMaxLenFlowListName+1)); return UPLL_RC_SUCCESS; } } // namespace kt_momgr diff --git a/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.hh b/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.hh index 1419f906..07fa6ed8 100644 --- a/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.hh +++ b/coordinator/modules/upll/vbr_if_flowfilter_entry_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,13 +21,13 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_VRT_IF_FLOWFILTER */ -/** - * @brief VbrIfFlowFilterEntryMoMgr class handles all the request - * received from service. - */ + /** + * @brief VbrIfFlowFilterEntryMoMgr class handles all the request + * received from service. + */ -class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { - private: + class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { + private: static BindInfo vbr_if_flowfilter_entry_bind_info[]; /** @@ -39,15 +39,14 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { * @brief Member Variable for FlowlistRenameBindInfo. */ static BindInfo vbr_if_flowlist_rename_bind_info[]; - uint32_t cur_instance_count; - public: + public: /** * @brief Method used for GetObjectConfigKeyVal Operation. * @param[out] okey This Contains the pointerto the - ConfigKeyVal Class forwhich - fields have to be updated. + ConfigKeyVal Class forwhich + fields have to be updated. * @param[in] ikey Pointer to ConfigKeyVal Class. * @param[in] ObjType Specifies Flowlist Or N/w Monitor Type . @@ -92,201 +91,203 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { DalDmlIntf *dmi); /** - * @brief Method used for CreateCandidateMo Operation. + * @brief Method used for CreateCandidateMo Operation. - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance does Not exist - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance does Not exist + */ upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi, bool restore_flag = false); /** - * @brief Method used for DeleteMo Operation. + * @brief Method used for DeleteMo Operation. - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Reurn Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Reurn Failure + */ upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); /** - * @brief Method used to fill the CongigKeyVal with the - Parent Class Information. - - * @param[out] okey This Contains the pointerto the - ConfigKeyVal Class forwhich - fields have to be updated - with values from the parent Class. - * @param[in] parent_key This Contains the pointer to the - ConfigKeyVal Class which is the - Parent Class used to fill the details. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @brief Method used to fill the CongigKeyVal with the + Parent Class Information. + + * @param[out] okey This Contains the pointerto the + ConfigKeyVal Class forwhich + fields have to be updated + with values from the parent Class. + * @param[in] parent_key This Contains the pointer to the + ConfigKeyVal Class which is the + Parent Class used to fill the details. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /** - * @brief Method used for RenamedControllerkey(PfcName). + /** + * @brief Method used for RenamedControllerkey(PfcName). - * @param[out] ikey Contains the Pointer to ConfigkeyVal - Class and contains the Pfc Name. - * @param[in] dt_type Describes Configiration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_name Describes the Controller Name. + * @param[out] ikey Contains the Pointer to ConfigkeyVal + Class and contains the Pfc Name. + * @param[in] dt_type Describes Configiration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_name Describes the Controller Name. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Return Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Return Failure + */ upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, controller_domain *ctrlr_dom); /** - * @brief Method used to get the RenamedUncKey. - * @param[out] ikey This Contains the pointer to - the Class for which fields have - to be updated with values from - the parent Class. - * @param[in] dt_type Describes Configiration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @brief Method used to get the RenamedUncKey. + * @param[out] ikey This Contains the pointer to + the Class for which fields have + to be updated with values from + the parent Class. + * @param[in] dt_type Describes Configiration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id); /** - * @brief Method used to Duplicate the ConfigkeyVal. + * @brief Method used to Duplicate the ConfigkeyVal. - * @param[out] okey This Contains the pointer to - the Class for which fields - have to be updated with values - from the Request. - * @param[in] req This Contains the pointer to the - Class which is used for the Duplication . + * @param[out] okey This Contains the pointer to + the Class for which fields + have to be updated with values + from the Request. + * @param[in] req This Contains the pointer to the + Class which is used for the Duplication . - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Generic failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Generic failure + */ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, MoMgrTables tbl); /** - * @brief Method used for Update Operation. + * @brief Method used for Update Operation. - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); /** - * @brief Method Updates the ConfigStatus for AuditConfigiration. - * - * @param[out] ckv_running This Contains the pointer to the Class - * for which Audit ConfigStatus is Updated. - * @param[in] cs_status Describes CsStatus Information. - * Information. - * @param[in] phase Describes the Phase of the Operation. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_GENERIC Returned Generic Error. - */ + * @brief Method Updates the ConfigStatus for AuditConfigiration. + * + * @param[out] ckv_running This Contains the pointer to the Class + * for which Audit ConfigStatus is Updated. + * @param[in] cs_status Describes CsStatus Information. + * Information. + * @param[in] phase Describes the Phase of the Operation. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_GENERIC Returned Generic Error. + */ upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** - * @brief Method used for Trasaction Vote Operation. + * @brief Method used for Trasaction Vote Operation. - * @param[in] key Pointer to ConfigKeyVal Class. - * @param[in] op Describes the Type of Opeartion. - * @param[in] driver_result Describes the result of Driver Operation. - * @param[in] upd_key Pointer to ConfigKeyVal Class. - * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. + * @param[in] key Pointer to ConfigKeyVal Class. + * @param[in] op Describes the Type of Opeartion. + * @param[in] driver_result Describes the result of Driver Operation. + * @param[in] upd_key Pointer to ConfigKeyVal Class. + * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t UpdateConfigStatus(ConfigKeyVal *key, unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key); /** - * @brief Method used for Validation before Merge. + * @brief Method used for Validation before Merge. - * @param[in] ikey This Contains the pointer to the - Class for which fields have to - be Validated before the Merge. - * @param[in] keytype Describes the keyType Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. + * @param[in] ikey This Contains the pointer to the + Class for which fields have to + be Validated before the Merge. + * @param[in] keytype Describes the keyType Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_MERGE_CONFLICT metge Conflict Error - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_MERGE_CONFLICT metge Conflict Error + */ upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, ConfigKeyVal *ikey, DalDmlIntf *dmi); /** - * @brief Allocates Memory for the Incoming Pointer to the Class. + * @brief Allocates Memory for the Incoming Pointer to the Class. - * @param[out] ck_val This Contains the pointer to the Class for - which memory has to be allocated. - * @param[in] dt_type Describes Configiration Information. - * @param[in] tbl Describes the Destination table Information. + * @param[out] ck_val This Contains the pointer to the Class for + which memory has to be allocated. + * @param[in] dt_type Describes Configiration Information. + * @param[in] tbl Describes the Destination table Information. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Return Generic Error - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Return Generic Error + */ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, MoMgrTables tbl); /** - * @brief Allocates Memory for the Incoming Pointer to the Class. + * @brief Allocates Memory for the Incoming Pointer to the Class. - *@param[out] val This Contains the pointer to the Class for - which memory has to be allocated. - *@param[in] indx Describes The Index Value - *@param[in] valid Describes The Validity Of VrtIfFlowFilterEntryMoMgr - *@param[in] dt_type Describes Configiration Information. - *@param[in] tbl Describes the Destination table Information. + *@param[out] val This Contains the pointer to the Class for + which memory has to be allocated. + *@param[in] indx Describes The Index Value + *@param[in] valid Describes The Validity Of VrtIfFlowFilterEntryMoMgr + *@param[in] dt_type Describes Configiration Information. + *@param[in] tbl Describes the Destination table Information. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, upll_keytype_datatype_t dt_type, MoMgrTables tbl); /** - * @brief Method Updates the ConfigStatus for AuditConfigiration. + * @brief Method Updates the ConfigStatus for AuditConfigiration. - * @param[out] ckv_db This Contains the pointer to - the Class for which ConfigStatus - is Updated. - * @param[in] ctrlr_commit_status Describes Commit Control Status Information. - * @param[in] response_code Describes the Response Code. - * @param[in] dmi Pinter to DalDmlIntf Class. + * @param[out] ckv_db This Contains the pointer to + the Class for which ConfigStatus + is Updated. + * @param[in] ctrlr_commit_status Describes Commit Control Status Information. + * @param[in] response_code Describes the Response Code. + * @param[in] dmi Pinter to DalDmlIntf Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Return No Such Instance Exist - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Return No Such Instance Exist + */ upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); @@ -319,8 +320,7 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Generic failure. */ upll_rc_t ValidateVbrIfValStruct(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey); /** @@ -332,8 +332,8 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVbrIfFlowfilterEntryKey( - key_vbr_if_flowfilter_entry_t* key_vbr_if_flowfilter_entry, - unc_keytype_operation_t operation); + key_vbr_if_flowfilter_entry_t* key_vbr_if_flowfilter_entry, + unc_keytype_operation_t operation); /** * @Brief Checks if the specified key type(KT_VBRIF_FLOWFILTER_ENTRY) and @@ -401,7 +401,7 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { bool IsValidKey(void *key, uint64_t index); - /** + /** * @brief Method used for GetParentConfigKey Operation. * * @param[out] okey Pointer to ConfigKeyVal Class. @@ -434,41 +434,41 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl, - DalDmlIntf* dmi); + upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl, + DalDmlIntf* dmi); - upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - bool begin, DalDmlIntf *dmi); + upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + bool begin, DalDmlIntf *dmi); - upll_rc_t RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *key, - DalDmlIntf *dmi, - const char *ctrlr_id); + upll_rc_t RenameMo(IpcReqRespHeader *req, + ConfigKeyVal *key, + DalDmlIntf *dmi, + const char *ctrlr_id); upll_rc_t TxVote(unc_key_type_t keytype, DalDmlIntf *dmi, ConfigKeyVal **err_ckv); upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); upll_rc_t ConstructReadDetailResponse(ConfigKeyVal *ikey, ConfigKeyVal *drv_resp_ckv, ConfigKeyVal **okey); upll_rc_t GetVexternalInformation(ConfigKeyVal* ck_main, - upll_keytype_datatype_t dt_type, - pfcdrv_val_flowfilter_entry_t*& pfc_val, - uint8_t db_flag, DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + pfcdrv_val_flowfilter_entry_t*& pfc_val, + uint8_t db_flag, DalDmlIntf *dmi); upll_rc_t SetVlinkPortmapConfiguration(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, @@ -485,12 +485,13 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { const char *ctrlr_id); upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected); upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, @@ -509,14 +510,14 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { unc_keytype_operation_t op); upll_rc_t GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi); upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); + DalDmlIntf *dmi, + IpcReqRespHeader *req); - public: + public: VbrIfFlowFilterEntryMoMgr(); ~VbrIfFlowFilterEntryMoMgr() { for (int i = 0; i < ntable; i++) { @@ -526,7 +527,7 @@ class VbrIfFlowFilterEntryMoMgr : public MoMgrImpl { } delete[] table; } -}; + }; } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vbr_if_flowfilter_momgr.cc b/coordinator/modules/upll/vbr_if_flowfilter_momgr.cc index a69a0595..5042a05e 100644 --- a/coordinator/modules/upll/vbr_if_flowfilter_momgr.cc +++ b/coordinator/modules/upll/vbr_if_flowfilter_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -80,11 +80,13 @@ VbrIfFlowFilterMoMgr::VbrIfFlowFilterMoMgr() : MoMgrImpl() { // setting table indexed for ctrl and rename table to NULL; ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; - cur_instance_count = 0; // For Main Table - table[MAINTBL] = new Table(uudst::kDbiVbrIfFlowFilterTbl, - UNC_KT_VBRIF_FLOWFILTER, vbr_if_flowfilter_bind_info, - IpctSt::kIpcStKeyVbrIfFlowfilter, IpctSt::kIpcStValFlowfilter, + table[MAINTBL] = new Table( + uudst::kDbiVbrIfFlowFilterTbl, + UNC_KT_VBRIF_FLOWFILTER, + vbr_if_flowfilter_bind_info, + IpctSt::kIpcStKeyVbrIfFlowfilter, + IpctSt::kIpcStValFlowfilter, uudst::vbr_if_flowfilter::kDbiVbrIfFlowFilterNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; @@ -93,11 +95,11 @@ VbrIfFlowFilterMoMgr::VbrIfFlowFilterMoMgr() : MoMgrImpl() { } upll_rc_t VbrIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; - ConfigKeyVal *temp_key = NULL; - + if (ikey == NULL || req == NULL) { return UPLL_RC_ERR_GENERIC; } @@ -106,46 +108,70 @@ upll_rc_t VbrIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, if (req->datatype == UPLL_DT_IMPORT) { UPLL_LOG_DEBUG("Inside:-%d", req->datatype); - if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStPfcdrvValVbrifVextif)) { - UPLL_LOG_DEBUG("val struct num (%d)",ikey->get_cfg_val()->get_st_num()); - ikey->SetCfgVal(NULL); - } + if (ikey->get_cfg_val() && + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValVbrifVextif)) { + UPLL_LOG_DEBUG("val struct num (%d)", ikey->get_cfg_val()->get_st_num()); + ikey->SetCfgVal(NULL); + } } - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateAttribute failed, Error - %d", result_code); return result_code; } - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG(" An instance of the object exists. err code(%d)", - result_code); - return result_code; - } - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, - UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("restoring the object failed. err code(%d)", - result_code); - return UPLL_RC_ERR_GENERIC; - } - return result_code; + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; + } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { // create a record in CANDIDATE DB VbrIfMoMgr *mgrvbrif = @@ -178,12 +204,68 @@ upll_rc_t VbrIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, (ConfigKeyVal::Malloc(kMaxLenInterfaceName + 1)); result_code = mgrvbrif->GetVexternal(ckv, req->datatype, dmi, vexternal, vex_if, flags); + FREE_IF_NOT_NULL(vexternal); + FREE_IF_NOT_NULL(vex_if); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetVexternal failed %d", result_code); + DELETE_IF_NOT_NULL(ckv); + return result_code; + } + + /* VlanmapOnBoundary: vbr_if_flowfilter is not allowed on + * vbr interface of boundary vlink which is SW or SD mapped */ + VlinkMoMgr *vlink_mgr = + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VLINK))); + if (!vlink_mgr) { + UPLL_LOG_DEBUG("vlink_mgr is Null"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ck_vlink = NULL; + vn_if_type iftype; + + /* Verifies whether the requested vbridge interface is boundary + * vlinked with logical port id is SW or SD. If it is part of SW or SD + * boundary linked, cannot configure flo-filter in that vbridge interface*/ + result_code = vlink_mgr->CheckIfMemberOfVlink(ckv, + req->datatype, + ck_vlink, + dmi, + iftype); + + if (result_code == UPLL_RC_SUCCESS) { + unc_key_type_t ktype1; + if (iftype == kVlinkBoundaryNode1) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode1"); + ktype1 = vlink_mgr->GetVlinkVnodeIfKeyType(ck_vlink, 0); + if (ktype1 == UNC_KT_VBR_VLANMAP) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode1 And " + "ktype is UNC_KT_VBR_VLANMAP"); + DELETE_IF_NOT_NULL(ckv); + DELETE_IF_NOT_NULL(ck_vlink); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else if (iftype == kVlinkBoundaryNode2) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode2"); + ktype1 = vlink_mgr->GetVlinkVnodeIfKeyType(ck_vlink, 1); + if (ktype1 == UNC_KT_VBR_VLANMAP) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode2 And " + "ktype is UNC_KT_VBR_VLANMAP"); + DELETE_IF_NOT_NULL(ckv); + DELETE_IF_NOT_NULL(ck_vlink); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } + } else if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { DELETE_IF_NOT_NULL(ckv); - free(vexternal); - free(vex_if); + UPLL_LOG_DEBUG("CheckIfMemberOfVlink is Fail"); return result_code; } + DELETE_IF_NOT_NULL(ck_vlink); + /* If its not member of vlink continue below steps */ + DELETE_IF_NOT_NULL(ckv); uint8_t flag_port_map = 0; GET_USER_DATA_FLAGS(ikey, flag_port_map); @@ -195,47 +277,33 @@ upll_rc_t VbrIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, flag_port_map = flag_port_map|SET_FLAG_VLINK_PORTMAP; } - free(vexternal); - free(vex_if); SET_USER_DATA_FLAGS(ikey, flag_port_map); controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(controller_domain)); result_code = GetControllerDomainID(ikey, req->datatype, dmi); if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", result_code); + return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - result_code = GetChildConfigKey(temp_key, NULL); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed in ValidateCapability"); - return result_code; - } - result_code = GetInstanceCount(temp_key, - reinterpret_cast (ctrlr_dom.ctrlr), - req->datatype, - &cur_instance_count, - dmi, - MAINTBL); - delete temp_key; - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount Failed in ValidateCapability"); - return result_code; - } - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); return result_code; } DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain | - kOpInOutFlag}; + kOpInOutFlag}; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi, &dbop1, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -249,40 +317,39 @@ upll_rc_t VbrIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t VbrIfFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; uint8_t flags = 0; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. * else - create using the controller name. */ result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } pfcdrv_val_vbrif_vextif_t *pfc_val = - reinterpret_cast ((GetVal(ikey))); + reinterpret_cast ((GetVal(ikey))); if (pfc_val == NULL) { return UPLL_RC_ERR_GENERIC; } - + if (pfc_val->interface_type == PFCDRV_IF_TYPE_VBRIF) { flags = SET_FLAG_VLINK; - } - else if (pfc_val->interface_type == PFCDRV_IF_TYPE_VEXTIF) { + } else if (pfc_val->interface_type == PFCDRV_IF_TYPE_VEXTIF) { flags = SET_FLAG_PORTMAP; - } - else { - flags = 0; + } else { + flags = 0; } @@ -309,7 +376,11 @@ upll_rc_t VbrIfFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ctrlr_dom.ctrlr, ctrlr_dom.domain); // Create a record in AUDIT DB - result_code = UpdateConfigDB(okey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); + result_code = UpdateConfigDB(okey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); } @@ -318,13 +389,15 @@ upll_rc_t VbrIfFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return result_code; } -upll_rc_t VbrIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase1, - bool *ctrlr_affected, - DalDmlIntf *dmi) { +upll_rc_t VbrIfFlowFilterMoMgr::AuditUpdateController( + unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase1, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result = uud::kDalRcSuccess; @@ -340,6 +413,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, uint8_t db_flag = 0; uint8_t auditdb_flag = 0; uint8_t *ctrlr = reinterpret_cast(const_cast(ctrlr_id)); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; if (phase1 == uuc::kUpllUcpCreate) { return result_code; @@ -355,278 +429,356 @@ upll_rc_t VbrIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, nop = 1; } for (int i = 0; i < nop; i++) { - /* retreives the delta of running and audit configuration */ - unc_keytype_operation_t op1 = op[i]; + /* retreives the delta of running and audit configuration */ + cursor = NULL; + unc_keytype_operation_t op1 = op[i]; uuc::UpdateCtrlrPhase phase = (op[i] == UNC_OP_UPDATE)?uuc::kUpllUcpUpdate: - ((op[i] == UNC_OP_CREATE)?uuc::kUpllUcpCreate: - ((op[i] == UNC_OP_DELETE)?uuc::kUpllUcpDelete:uuc::kUpllUcpInvalid)); - UPLL_LOG_DEBUG("Operation is %d", op[i]); - result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op[i], - ckv_running_db, ckv_audit_db, - &cursor, dmi, ctrlr, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); - return result_code; - } - if (cursor == NULL) { + ((op[i] == UNC_OP_CREATE)?uuc::kUpllUcpCreate: + ((op[i] == UNC_OP_DELETE)?uuc::kUpllUcpDelete:uuc::kUpllUcpInvalid)); + UPLL_LOG_DEBUG("Operation is %d", op[i]); + result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op[i], + ckv_running_db, ckv_audit_db, + &cursor, dmi, ctrlr, MAINTBL); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + continue; + } + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + return result_code; + } + if (cursor == NULL) { UPLL_LOG_DEBUG("cursor is null"); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return UPLL_RC_ERR_GENERIC; - } - while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { - op1 = op[i]; - if (phase != uuc::kUpllUcpDelete) { - uint8_t *db_ctrlr = NULL; - GET_USER_DATA_CTRLR(ckv_running_db,db_ctrlr); - UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", - db_ctrlr, ctrlr_id); - // Skipping the controller ID if the controller id in DB and - // controller id available for Audit are not the same - if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), - reinterpret_cast(ctrlr_id), - strlen(reinterpret_cast(ctrlr_id)) + 1)) { - continue; - } } + while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { + op1 = op[i]; + if (phase != uuc::kUpllUcpDelete) { + uint8_t *db_ctrlr = NULL; + GET_USER_DATA_CTRLR(ckv_running_db, db_ctrlr); + UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", + db_ctrlr, ctrlr_id); + // Skipping the controller ID if the controller id in DB and + // controller id available for Audit are not the same + if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast + (ctrlr_id)) + 1)) { + continue; + } + } - switch (phase) { - case uuc::kUpllUcpDelete: - UPLL_LOG_TRACE("Deleted record is %s ", - ckv_running_db->ToStrAll().c_str()); - result_code = GetChildConfigKey(ckv_driver_req, ckv_running_db); - UPLL_LOG_TRACE("ckv_driver_req in delete is %s", - ckv_driver_req->ToStrAll().c_str()); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", + switch (phase) { + case uuc::kUpllUcpDelete: + UPLL_LOG_TRACE("Deleted record is %s ", + ckv_running_db->ToStrAll().c_str()); + result_code = GetChildConfigKey(ckv_driver_req, ckv_running_db); + UPLL_LOG_TRACE("ckv_driver_req in delete is %s", + ckv_driver_req->ToStrAll().c_str()); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", result_code, phase); - dmi->CloseCursor(cursor, true); - return result_code; - } - result_code = ReadConfigDB(ckv_driver_req, UPLL_DT_AUDIT, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); - DELETE_IF_NOT_NULL(ckv_driver_req); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - GET_USER_DATA_FLAGS(ckv_driver_req, auditdb_flag); - break; - case uuc::kUpllUcpCreate: + dmi->CloseCursor(cursor, true); + return result_code; + } + result_code = ReadConfigDB(ckv_driver_req, UPLL_DT_AUDIT, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + DELETE_IF_NOT_NULL(ckv_driver_req); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_FLAGS(ckv_driver_req, auditdb_flag); + break; + case uuc::kUpllUcpCreate: UPLL_LOG_TRACE("Created record is %s ", - ckv_running_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + ckv_running_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, + ckv_running_db, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } - break; - case uuc::kUpllUcpUpdate: + break; + case uuc::kUpllUcpUpdate: ckv_audit_dup_db = NULL; ckv_driver_req = NULL; UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_audit_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + ckv_audit_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, + ckv_running_db, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record." + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } - result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); + result_code = DupConfigKeyVal(ckv_audit_dup_db, + ckv_audit_db, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record." + "err_code & phase %d %d", result_code, phase); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } GET_USER_DATA_FLAGS(ckv_audit_dup_db, auditdb_flag); - break; - default: - UPLL_LOG_DEBUG("Invalid operation %d", phase); - return UPLL_RC_ERR_NO_SUCH_OPERATION; - break; - } - GET_USER_DATA_CTRLR_DOMAIN(ckv_driver_req, ctrlr_dom); - if ((NULL == ctrlr_dom.ctrlr) || (NULL == ctrlr_dom.domain)) { - UPLL_LOG_INFO("controller id or domain is NULL"); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(ckv_audit_dup_db); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - db_flag = 0; - GET_USER_DATA_FLAGS(ckv_driver_req, db_flag); - // If portmap/vlink flag is not set at running and the operation is - // update then portmap/vlink is deleted in the update phase from UNC - // hence flowfilter seq no also should get deleted from controller - // hence sending the delete request to the controller driver - if ((SET_FLAG_PORTMAP & db_flag) || (SET_FLAG_VLINK & db_flag)) { - // Continue the operations - } else { - if (UNC_OP_UPDATE == op1) { - op1 = UNC_OP_DELETE; - } else { - // NO PortMap/Vlink Configured, - // Configuration is not sento to driver. + break; + default: + UPLL_LOG_DEBUG("Invalid operation %d", phase); + return UPLL_RC_ERR_NO_SUCH_OPERATION; + break; + } + GET_USER_DATA_CTRLR_DOMAIN(ckv_driver_req, ctrlr_dom); + if ((NULL == ctrlr_dom.ctrlr) || (NULL == ctrlr_dom.domain)) { + UPLL_LOG_INFO("controller id or domain is NULL"); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); - continue; + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + db_flag = 0; + GET_USER_DATA_FLAGS(ckv_driver_req, db_flag); + // If portmap/vlink flag is not set at running and the operation is + // update then portmap/vlink is deleted in the update phase from UNC + // hence flowfilter seq no also should get deleted from controller + // hence sending the delete request to the controller driver + if ((SET_FLAG_PORTMAP & db_flag) || (SET_FLAG_VLINK & db_flag)) { + // Continue the operations + } else { + if (UNC_OP_UPDATE == op1) { + op1 = UNC_OP_DELETE; + } else { + // NO PortMap/Vlink Configured, + // Configuration is not sento to driver. + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_audit_dup_db); + continue; + } } - } - if (UNC_OP_UPDATE == op1) { - void *running_val = NULL; - bool invalid_attr = false; - running_val = GetVal(ckv_driver_req); - invalid_attr = FilterAttributes(running_val, - GetVal(ckv_audit_dup_db), false, UNC_OP_UPDATE); - if (invalid_attr) { - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(ckv_audit_dup_db); - continue; + if (UNC_OP_UPDATE == op1) { + void *running_val = NULL; + bool invalid_attr = false; + running_val = GetVal(ckv_driver_req); + invalid_attr = FilterAttributes(running_val, + GetVal(ckv_audit_dup_db), + false, + UNC_OP_UPDATE); + if (invalid_attr) { + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_audit_dup_db); + // Assuming that the diff found only in ConfigStatus + // Setting the value as OnlyCSDiff in the out parameter + // ctrlr_affected + // The value Configdiff should be given more priority than the value + // onlycs . + // So If the out parameter ctrlr_affected has already + // value as configdiff + // then dont change the value + if (*ctrlr_affected != uuc::kCtrlrAffectedConfigDiff) { + UPLL_LOG_INFO("Setting the ctrlr_affected to OnlyCSDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedOnlyCSDiff; + } + continue; + } } - } - DELETE_IF_NOT_NULL(ckv_audit_dup_db); - /*pfcdrv_val_flowfilter_entry_t *pfc_val = + DELETE_IF_NOT_NULL(ckv_audit_dup_db); + /*pfcdrv_val_flowfilter_entry_t *pfc_val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); - */ - pfcdrv_val_vbrif_vextif *pfc_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif))); - if (op1 == UNC_OP_DELETE) { - vext_datatype = UPLL_DT_AUDIT; - db_flag = auditdb_flag; - } else { - vext_datatype = UPLL_DT_RUNNING; - } - result_code = GetVexternalInformation(ckv_driver_req, vext_datatype, - pfc_val, db_flag, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetVexternalInformation failed %d", result_code); - DELETE_IF_NOT_NULL(ckv_driver_req); - dmi->CloseCursor(cursor, true); - return result_code; - } - upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? - UPLL_DT_AUDIT:UPLL_DT_RUNNING; - result_code = GetRenamedControllerKey(ckv_driver_req, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ckv_driver_req); - UPLL_LOG_DEBUG("GetRenamedControllerKey failed %d", result_code); - dmi->CloseCursor(cursor, true); - return result_code; - } +*/ + pfcdrv_val_vbrif_vextif *pfc_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif))); + if (op1 == UNC_OP_DELETE) { + vext_datatype = UPLL_DT_AUDIT; + db_flag = auditdb_flag; + } else { + vext_datatype = UPLL_DT_RUNNING; + } + result_code = GetVexternalInformation(ckv_driver_req, vext_datatype, + pfc_val, db_flag, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetVexternalInformation failed %d", result_code); + DELETE_IF_NOT_NULL(ckv_driver_req); + dmi->CloseCursor(cursor, true); + return result_code; + } + upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? + UPLL_DT_AUDIT:UPLL_DT_RUNNING; + result_code = GetRenamedControllerKey(ckv_driver_req, UPLL_DT_RUNNING, + dmi, &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ckv_driver_req); + UPLL_LOG_DEBUG("GetRenamedControllerKey failed %d", result_code); + dmi->CloseCursor(cursor, true); + return result_code; + } - ckv_driver_req->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValVbrifVextif, - pfc_val)); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - - - IpcResponse ipc_response; - memset(&ipc_response, 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(IpcRequest)); - ipc_req.header.clnt_sess_id = session_id; - ipc_req.header.config_id = config_id; - ipc_req.header.operation = op1; - ipc_req.header.datatype = UPLL_DT_CANDIDATE; - ipc_req.ckv_data = ckv_driver_req; - if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, reinterpret_cast - (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { - UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv_driver_req->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); - DELETE_IF_NOT_NULL(ckv_driver_req); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("driver return failure err_code is %d", ipc_response.header.result_code); - ConfigKeyVal *resp = NULL; - result_code = GetChildConfigKey(resp, ipc_response.ckv_data); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for ipc response ckv err_code %d", + ckv_driver_req->SetCfgVal(new ConfigVal( + IpctSt::kIpcStPfcdrvValVbrifVextif, + pfc_val)); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + + + IpcResponse ipc_response; + memset(&ipc_response, 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(IpcRequest)); + ipc_req.header.clnt_sess_id = session_id; + ipc_req.header.config_id = config_id; + ipc_req.header.operation = op1; + ipc_req.header.datatype = UPLL_DT_CANDIDATE; + ipc_req.ckv_data = ckv_driver_req; + if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, + reinterpret_cast + (ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_response)) { + UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", + ckv_driver_req->get_key_type(), reinterpret_cast + (ctrlr_dom.ctrlr)); + DELETE_IF_NOT_NULL(ckv_driver_req); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("driver return failure err_code is %d", + ipc_response.header.result_code); + *err_ckv = ckv_running_db; + if (phase != uuc::kUpllUcpDelete) { + ConfigKeyVal *resp = NULL; + result_code = GetChildConfigKey(resp, ipc_response.ckv_data); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for" + "ipc response ckv err_code %d", result_code); - delete ipc_response.ckv_data; - DELETE_IF_NOT_NULL(ckv_driver_req); - dmi->CloseCursor(cursor, true); - return result_code; - } - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCs }; - result_code = ReadConfigDB(resp, dt_type, UNC_OP_READ, dbop,dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB Failed"); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; - } - - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, phase, resp); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Update Audit config status failed %d", - result_code); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; - } - DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutCs }; - result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, + delete ipc_response.ckv_data; + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return result_code; + } + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCs }; + result_code = ReadConfigDB(resp, + dt_type, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB Failed"); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return result_code; + } + + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + phase, + resp, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Update Audit config status failed %d", + result_code); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return result_code; + } + DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutCs }; + result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response ckv err_code %d", - result_code); - DELETE_IF_NOT_NULL(ckv_driver_req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response" + "ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + return result_code; + } DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; - } - DELETE_IF_NOT_NULL(resp); + } + return ipc_response.header.result_code; + } + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + // *ctrlr_affected = true; + if (*ctrlr_affected == uuc::kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Reset ctrlr state from OnlyCSDiff to ConfigDiff"); + } + UPLL_LOG_DEBUG("Setting the ctrlr_affected to ConfigDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedConfigDiff; } - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - *ctrlr_affected = true; - } dmi->CloseCursor(cursor, true); DELETE_IF_NOT_NULL(ckv_running_db); DELETE_IF_NOT_NULL(ckv_audit_db); } if (uud::kDalRcSuccess != db_result) { - UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); - result_code = DalToUpllResCode(db_result); + UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); + result_code = DalToUpllResCode(db_result); } result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; + ? UPLL_RC_SUCCESS : result_code; return result_code; } bool VbrIfFlowFilterMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { UPLL_FUNC_TRACE; /* Main Table only update */ if (MAINTBL == tbl) { nattr = sizeof(vbr_if_flowfiltermaintbl_bind_info)/ - sizeof(vbr_if_flowfiltermaintbl_bind_info[0]); + sizeof(vbr_if_flowfiltermaintbl_bind_info[0]); binfo = vbr_if_flowfiltermaintbl_bind_info; } else { return PFC_FALSE; @@ -637,8 +789,8 @@ bool VbrIfFlowFilterMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, } upll_rc_t VbrIfFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; if ((NULL == req) || (NULL == ikey)) { @@ -656,8 +808,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name : (%s)" - "operation : (%d)", - ctrlr_name, req->operation); + "operation : (%d)", + ctrlr_name, req->operation); bool result_code = false; uint32_t max_instance_count; @@ -666,28 +818,27 @@ upll_rc_t VbrIfFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { - UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", req->operation); - - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && cur_instance_count >= max_instance_count && - cur_instance_count !=0 && max_instance_count != 0) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", + req->operation); + + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); break; } default: { if (req->datatype == UPLL_DT_STATE) { - UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", + req->operation); result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } else { - UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", + req->operation); result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } } } @@ -716,35 +867,36 @@ upll_rc_t VbrIfFlowFilterMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } if (key->get_st_num() != IpctSt::kIpcStKeyVbrIfFlowfilter) { - UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", - key->get_st_num()); + UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); - return UPLL_RC_ERR_INVALID_OPTION1; - } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); + return UPLL_RC_ERR_INVALID_OPTION1; + } if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -758,15 +910,15 @@ upll_rc_t VbrIfFlowFilterMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } - rt_code = ValidateVbrIfFlowfilterKey(key_vbr_if_flowfilter, - req->operation); + rt_code = ValidateVbrIfFlowfilterKey(key_vbr_if_flowfilter, + req->operation); - if (UPLL_RC_SUCCESS != rt_code) { - UPLL_LOG_DEBUG(" key_vbrif_flowfilter syntax validation failed :" - "Err Code - %d", - rt_code); - return rt_code; - } + if (UPLL_RC_SUCCESS != rt_code) { + UPLL_LOG_DEBUG(" key_vbrif_flowfilter syntax validation failed :" + "Err Code - %d", + rt_code); + return rt_code; + } return UPLL_RC_SUCCESS; } @@ -820,66 +972,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::ValidateVbrIfFlowfilterKey( upll_rc_t VbrIfFlowFilterMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - ConfigKeyVal *okey = NULL; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_DEBUG("input key is null"); - return UPLL_RC_ERR_GENERIC; - } - key_vbr_if_flowfilter_t *key_vbrif_ff = - reinterpret_cast(ikey->get_key()); - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_IF))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed for KT_VBR_IF key struct - %d", - result_code); - return result_code; - } - - key_vbr_if_t *vbrif_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, - key_vbrif_ff->if_key.vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, - key_vbrif_ff->if_key.vbr_key.vbridge_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbrif_key->if_name, - key_vbrif_ff->if_key.if_name, - kMaxLenInterfaceName + 1); - - /* Checks the given vbr_if exists or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VBRIF key does not exists"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; - - if (UNC_OP_CREATE == req->operation) { - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - } - - UPLL_LOG_DEBUG("ValidateAttribute Successfull."); - return result_code; + // No operation + return UPLL_RC_SUCCESS; } upll_rc_t VbrIfFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, @@ -894,8 +988,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_IF))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_IF))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -916,8 +1010,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, upll_rc_t VbrIfFlowFilterMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ikey) return UPLL_RC_ERR_GENERIC; @@ -940,9 +1034,9 @@ upll_rc_t VbrIfFlowFilterMoMgr::AllocVal(ConfigVal *&ck_val, return UPLL_RC_ERR_GENERIC; switch (tbl) { case MAINTBL: - val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); - ck_val = new ConfigVal(IpctSt::kIpcStValFlowfilter, val); + val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); + ck_val = new ConfigVal(IpctSt::kIpcStValFlowfilter, val); break; default: @@ -960,6 +1054,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_vbr_if_flowfilter_t *vbr_if_ff_key; void *pkey = NULL; + bool cfgval_ctrlr = false; if (parent_key == NULL) { vbr_if_ff_key = reinterpret_cast @@ -1044,6 +1139,46 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, reinterpret_cast (pkey)->direction; break; + /* VlanmapOnBoundary: Added vlink case */ + case UNC_KT_VLINK: + { + uint8_t *vnode_name; + uint8_t *vnode_if_name; + uint8_t flags = 0; + val_vlink *vlink_val = reinterpret_cast + (GetVal(parent_key)); + if (!vlink_val) { + UPLL_LOG_TRACE("ERROR"); + if (!okey || !(okey->get_key())) + FREE_IF_NOT_NULL(vbr_if_ff_key); + return UPLL_RC_ERR_GENERIC; + } + + GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + UPLL_LOG_DEBUG("Vlink flag node position %d", flags); + + if (flags == kVlinkVnode2) { + cfgval_ctrlr = true; + vnode_name = vlink_val->vnode2_name; + vnode_if_name = vlink_val->vnode2_ifname; + } else { + vnode_name = vlink_val->vnode1_name; + vnode_if_name = vlink_val->vnode1_ifname; + } + uuu::upll_strncpy(vbr_if_ff_key->if_key.vbr_key.vtn_key.vtn_name, + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + if (vnode_name) + uuu::upll_strncpy(vbr_if_ff_key->if_key.vbr_key.vbridge_name, + vnode_name, + (kMaxLenVnodeName + 1)); + if (vnode_if_name) + uuu::upll_strncpy(vbr_if_ff_key->if_key.if_name, vnode_if_name, + (kMaxLenInterfaceName + 1)); + + break; + } default: if (vbr_if_ff_key) free(vbr_if_ff_key); return UPLL_RC_ERR_GENERIC; @@ -1060,7 +1195,15 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, IpctSt::kIpcStKeyVbrIfFlowfilter, vbr_if_ff_key, NULL); } - SET_USER_DATA(okey, parent_key); + + /* In case of node2 of vlink, set the user_data + * from vlink's cfg_val */ + if (cfgval_ctrlr) { + SET_USER_DATA(okey, parent_key->get_cfg_val()); + } else { + SET_USER_DATA(okey, parent_key); + } + UPLL_LOG_DEBUG("okey filled Succesfully %d", result_code); return result_code; } @@ -1091,13 +1234,13 @@ upll_rc_t VbrIfFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, val_flowfilter_t *ival = NULL; ival = reinterpret_cast (GetVal(req)); if (NULL != ival) { - val_flowfilter_t *vbr_if_flowfilter_val = NULL; + val_flowfilter_t *vbr_if_flowfilter_val = NULL; vbr_if_flowfilter_val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); memcpy(vbr_if_flowfilter_val, ival, sizeof(val_flowfilter_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValFlowfilter, vbr_if_flowfilter_val); - tmp1->set_user_data(tmp->get_user_data()); + tmp1->set_user_data(tmp->get_user_data()); } } } @@ -1108,12 +1251,12 @@ upll_rc_t VbrIfFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ikey = reinterpret_cast (tkey); key_vbr_if_flowfilter_t *vbr_if_flowfilter = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_flowfilter_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_flowfilter_t))); memcpy(vbr_if_flowfilter, ikey, sizeof(key_vbr_if_flowfilter_t)); okey = new ConfigKeyVal(UNC_KT_VBRIF_FLOWFILTER, - IpctSt::kIpcStKeyVbrIfFlowfilter, vbr_if_flowfilter, - tmp1); + IpctSt::kIpcStKeyVbrIfFlowfilter, vbr_if_flowfilter, + tmp1); SET_USER_DATA(okey, req); UPLL_LOG_DEBUG("DupConfigkeyVal Succesfull."); @@ -1141,9 +1284,9 @@ upll_rc_t VbrIfFlowFilterMoMgr::RenameMo(IpcReqRespHeader *req, } upll_rc_t VbrIfFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckval = NULL; @@ -1162,7 +1305,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -1204,20 +1347,20 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetRenamedUncKey( upll_rc_t result_code = UPLL_RC_SUCCESS; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifff start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if ((NULL == ikey) || (ctrlr_id == NULL) || (NULL == dmi)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); return UPLL_RC_ERR_GENERIC; } MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); + (const_cast (GetMoManager(UNC_KT_VBRIDGE))); if (mgrvbr == NULL) { UPLL_LOG_DEBUG("mgrvbr NULL"); return UPLL_RC_ERR_GENERIC; } val_rename_vnode *rename_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); if (!rename_val) { UPLL_LOG_DEBUG("rename_val NULL"); return UPLL_RC_ERR_GENERIC; @@ -1269,9 +1412,9 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetRenamedUncKey( key_vbr_if_flowfilter_t *vbr_if_flowfilter_key = reinterpret_cast (unc_key->get_key()); uuu::upll_strncpy( - ctrlr_key->if_key.vbr_key.vtn_key.vtn_name, - vbr_if_flowfilter_key->if_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + ctrlr_key->if_key.vbr_key.vtn_key.vtn_name, + vbr_if_flowfilter_key->if_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(ctrlr_key->if_key.vbr_key.vbridge_name, vbr_if_flowfilter_key->if_key.vbr_key.vbridge_name, @@ -1279,7 +1422,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetRenamedUncKey( } UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifff end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); mgrvbr = NULL; return UPLL_RC_SUCCESS; @@ -1291,239 +1434,99 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetRenamedControllerKey( UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *okey = NULL; - uint8_t rename = 0; - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) { - UPLL_LOG_DEBUG("no renamed"); - return UPLL_RC_SUCCESS; - } UPLL_LOG_TRACE("Start Input ConfigKeyval = %s", ikey->ToStrAll().c_str()); - MoMgrImpl *mgrvbr = reinterpret_cast + MoMgrImpl *mgrvbr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_VBRIDGE))); - if (mgrvbr == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy( - reinterpret_cast (okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->if_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVnodeName + 1)); - - uuu::upll_strncpy( - reinterpret_cast (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->if_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("Unable to Read from DB"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - - val_rename_vnode *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); - - if (!rename_val) { - UPLL_LOG_DEBUG("Vbr Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); - UPLL_LOG_DEBUG("vtn rename (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name); + if (mgrvbr == NULL) { + UPLL_LOG_DEBUG("obj null"); + return UPLL_RC_ERR_GENERIC; } - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vbr name renamed"); - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vtn rename (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name); + result_code = mgrvbr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; } - SET_USER_DATA_FLAGS(ikey, rename); - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_TRACE("End Input ConfigKeyVal= %s", ikey->ToStrAll().c_str()); - UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); - return UPLL_RC_SUCCESS; -#if 0 - // Vtn renamed - if (rename & VTN_RENAME_FLAG) { - MoMgrImpl *mgrvtn = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VTN))); - - if (mgrvtn == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } + if (ctrlr_dom) { + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + } else { + UPLL_LOG_DEBUG("ctrlr null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - result_code = mgrvtn->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + uuu::upll_strncpy( + reinterpret_cast (okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->if_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - uuu::upll_strncpy(reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->if_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); -// UPLL_LOG_DEBUG("vtn name (%s) (%s)", (okey->get_key())->vtn_name, -// (ikey->get_key())->if_key.vbr_key.vtn_key.vtn_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code =mgrvtn->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, - dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - val_rename_vtn *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); + uuu::upll_strncpy( + reinterpret_cast (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->if_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); - if (!rename_val - || (rename_val->valid[UPLL_IDX_NEW_NAME_RVTN] != UNC_VF_VALID)) { - UPLL_LOG_DEBUG("Vtn Name is not Valid."); + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("ReadConfigDB no instance"); DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_SUCCESS; } - - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, - rename_val->new_name, - (kMaxLenVtnName + 1)); - SET_USER_DATA_FLAGS(ikey, rename); + UPLL_LOG_DEBUG("Unable to Read from DB"); + DELETE_IF_NOT_NULL(okey); + return result_code; } - // Vbr Renamed - if (rename & VBR_RENAME_FLAG) { - UPLL_LOG_DEBUG("vbr name renamed"); - MoMgrImpl *mgrvbr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VBRIDGE))); - - if (mgrvbr == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + val_rename_vnode *rename_val = NULL; + rename_val = reinterpret_cast (GetVal(okey)); - uuu::upll_strncpy( - reinterpret_cast (okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->if_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); -// UPLL_LOG_DEBUG("vbr name (%s) (%s)", (okey->get_key())->vbridge_name, -// (ikey->get_key())->if_key.vbr_key.vbridge_name); - - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to Read from DB"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } + if (!rename_val) { + UPLL_LOG_DEBUG("Vbr Name is not Valid."); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - val_rename_vbr *rename_val = NULL; - rename_val = reinterpret_cast (GetVal(okey)); + uuu::upll_strncpy( + reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); - if (!rename_val) { - UPLL_LOG_DEBUG("Vbr Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + uuu::upll_strncpy( + reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vbr_key.vbridge_name, - rename_val->new_name, - (kMaxLenVnodeName + 1)); - DELETE_IF_NOT_NULL(okey); - } - UPLL_LOG_TRACE("GetRenamedCtrl vbr_if_ff end %s", ikey->ToStrAll().c_str()); + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_TRACE("End Input ConfigKeyVal= %s", ikey->ToStrAll().c_str()); UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); return UPLL_RC_SUCCESS; -#endif } upll_rc_t VbrIfFlowFilterMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_t *val = NULL; val = (ckv_running != NULL)? - reinterpret_cast (GetVal(ckv_running)):NULL; + reinterpret_cast (GetVal(ckv_running)):NULL; if (NULL == val) { UPLL_LOG_DEBUG("val strct is empty"); @@ -1532,8 +1535,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::UpdateAuditConfigStatus( if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; UPLL_LOG_DEBUG("AuditUpdate Config Status Information %d", result_code); @@ -1593,9 +1596,10 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - //Added ValidateCapa + // Added ValidateCapa result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); return result_code; @@ -1636,7 +1640,9 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, reinterpret_cast (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif))); - result_code = GetVexternalInformation(dup_key, UPLL_DT_CANDIDATE, + // For DT_STATE additional information will be returned which is not + // required. So, passing UPLL_DT_RUNNING + result_code = GetVexternalInformation(dup_key, UPLL_DT_RUNNING, pfc_val, db_flag, dmi); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(dup_key); @@ -1674,8 +1680,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, } if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(dup_key); DELETE_IF_NOT_NULL(l_key); DELETE_IF_NOT_NULL(flag_key); @@ -1797,7 +1803,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::UpdateConfigStatus(ConfigKeyVal *key, } upll_rc_t VbrIfFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -1841,8 +1847,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, } key_vbr_if->direction = 0xFE; okey = new ConfigKeyVal(UNC_KT_VBRIF_FLOWFILTER, - IpctSt::kIpcStKeyVbrIfFlowfilter, - key_vbr_if, NULL); + IpctSt::kIpcStKeyVbrIfFlowfilter, + key_vbr_if, NULL); if (!okey) { free(key_vbr_if); return UPLL_RC_ERR_GENERIC; @@ -1957,7 +1963,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); return result_code; @@ -2002,7 +2009,9 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, reinterpret_cast (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif))); - result_code = GetVexternalInformation(tctrl_key, UPLL_DT_CANDIDATE, + // For DT_STATE additional information will be returned which is not + // required. So, passing UPLL_DT_RUNNING + result_code = GetVexternalInformation(tctrl_key, UPLL_DT_RUNNING, pfc_val, db_flag, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetVexternalInformation failed err(%d)", result_code); @@ -2034,10 +2043,10 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, (tmp_key->get_key())->direction; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, - &ipc_req, true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, + &ipc_req, true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -2051,8 +2060,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(l_key); DELETE_IF_NOT_NULL(flag_key); DELETE_IF_NOT_NULL(tctrl_key); @@ -2094,13 +2103,14 @@ upll_rc_t VbrIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, return result_code; } -upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { +upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController( + unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result; @@ -2113,10 +2123,10 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, uint8_t db_flag_running = 0; upll_keytype_datatype_t vext_datatype = UPLL_DT_CANDIDATE; if (affected_ctrlr_set == NULL) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); unc_keytype_operation_t op1 = op; if (UNC_OP_UPDATE == op) { @@ -2126,7 +2136,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, } result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); + op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); while (result_code == UPLL_RC_SUCCESS) { ck_main = NULL; @@ -2161,8 +2171,8 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); if (ctrlr_dom.ctrlr == NULL) { - DELETE_IF_NOT_NULL(ck_main); - return UPLL_RC_ERR_GENERIC; + DELETE_IF_NOT_NULL(ck_main); + return UPLL_RC_ERR_GENERIC; } db_flag = 0; GET_USER_DATA_FLAGS(ck_main, db_flag); @@ -2205,41 +2215,41 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, } DELETE_IF_NOT_NULL(tmp_cfgkeyval); } else if (op1 == UNC_OP_UPDATE) { - result_code = GetChildConfigKey(tmp_cfgkeyval, ck_main); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed, err %d", result_code); - DELETE_IF_NOT_NULL(ck_main); - return result_code; - } - SET_USER_DATA_CTRLR_DOMAIN(tmp_cfgkeyval, ctrlr_dom); - DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, - kOpInOutFlag}; - result_code = ReadConfigDB(tmp_cfgkeyval, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Unable to read from DB, err: %d", result_code); - DELETE_IF_NOT_NULL(ck_main); - DELETE_IF_NOT_NULL(tmp_cfgkeyval); - return result_code; - } - } - GET_USER_DATA_FLAGS(tmp_cfgkeyval, db_flag_running); - if (!(SET_FLAG_PORTMAP & db_flag_running) && - !(SET_FLAG_VLINK & db_flag_running)) { - UPLL_LOG_DEBUG("Portmap flag is not set at running"); - op1 = UNC_OP_CREATE; - vext_datatype = UPLL_DT_CANDIDATE; - } + result_code = GetChildConfigKey(tmp_cfgkeyval, ck_main); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed, err %d", result_code); + DELETE_IF_NOT_NULL(ck_main); + return result_code; + } + SET_USER_DATA_CTRLR_DOMAIN(tmp_cfgkeyval, ctrlr_dom); + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, + kOpInOutFlag}; + result_code = ReadConfigDB(tmp_cfgkeyval, UPLL_DT_RUNNING, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Unable to read from DB, err: %d", result_code); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(tmp_cfgkeyval); + return result_code; + } + } + GET_USER_DATA_FLAGS(tmp_cfgkeyval, db_flag_running); + if (!(SET_FLAG_PORTMAP & db_flag_running) && + !(SET_FLAG_VLINK & db_flag_running)) { + UPLL_LOG_DEBUG("Portmap flag is not set at running"); + op1 = UNC_OP_CREATE; + vext_datatype = UPLL_DT_CANDIDATE; + } DELETE_IF_NOT_NULL(tmp_cfgkeyval); } /*pfcdrv_val_flowfilter_entry_t *pfc_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); - */ +*/ pfcdrv_val_vbrif_vextif *pfc_val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif))); @@ -2256,7 +2266,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, return result_code; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); ConfigKeyVal *temp_ck_main = NULL; result_code = DupConfigKeyVal(temp_ck_main, req, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -2266,7 +2276,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, return result_code; } upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? - UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; + UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; result_code = GetRenamedControllerKey(ck_main, dt_type, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -2279,17 +2289,17 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, ck_main->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValVbrifVextif, pfc_val)); UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); // Inserting the controller to Set affected_ctrlr_set->insert - (string(reinterpret_cast(ctrlr_dom.ctrlr))); + (string(reinterpret_cast(ctrlr_dom.ctrlr))); IpcResponse ipc_resp; result_code = SendIpcReq(session_id, config_id, op1, UPLL_DT_CANDIDATE, - ck_main, &ctrlr_dom, &ipc_resp); + ck_main, &ctrlr_dom, &ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG(" driver result code - %d", result_code); result_code = UPLL_RC_SUCCESS; } @@ -2308,7 +2318,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? - UPLL_RC_SUCCESS : result_code; + UPLL_RC_SUCCESS : result_code; return result_code; } @@ -2349,6 +2359,16 @@ upll_rc_t VbrIfFlowFilterMoMgr::SetVlinkPortmapConfiguration( // The below statement allows to read the partial key with // direction as output only ff_key->direction = 0xFE; + result_code = UpdateConfigDB(ckv, dt_type, UNC_OP_READ, + dmi, MAINTBL); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("No flowfilter object"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } else if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + } + ff_key->direction = 0xFE; result_code = ReadConfigDB(ckv, dt_type , UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { @@ -2367,15 +2387,35 @@ upll_rc_t VbrIfFlowFilterMoMgr::SetVlinkPortmapConfiguration( flag_port_map = 0; GET_USER_DATA_FLAGS(temp_ckv, flag_port_map); if (flags & kVlinkConfigured) { + if (flag_port_map & SET_FLAG_VLINK) { + UPLL_LOG_DEBUG("vlink flag is already set in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } UPLL_LOG_DEBUG("only vlink"); flag_port_map |= SET_FLAG_VLINK; } else if (flags & kPortMapConfigured) { + if (flag_port_map & SET_FLAG_PORTMAP) { + UPLL_LOG_DEBUG("Port-Map flag is already set in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } UPLL_LOG_DEBUG("only portmap"); flag_port_map |= SET_FLAG_PORTMAP; } else if (flags & kVlinkPortMapConfigured) { + if (flag_port_map & SET_FLAG_VLINK_PORTMAP) { + UPLL_LOG_DEBUG("Port-Map/vlink flag is already set in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } UPLL_LOG_DEBUG("portmap with vlink"); flag_port_map |= SET_FLAG_VLINK_PORTMAP; } else { + if (flag_port_map & SET_FLAG_NO_VLINK_PORTMAP) { + UPLL_LOG_DEBUG("Port-Map/vlink flag is already cleared in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } flag_port_map &= SET_FLAG_NO_VLINK_PORTMAP; } SET_USER_DATA_FLAGS(temp_ckv, flag_port_map); @@ -2396,7 +2436,10 @@ upll_rc_t VbrIfFlowFilterMoMgr::SetVlinkPortmapConfiguration( DELETE_IF_NOT_NULL(ckv); return UPLL_RC_ERR_GENERIC; } - result_code = mgr->SetVlinkPortmapConfiguration(ikey, dt_type, dmi, flags, + result_code = mgr->SetVlinkPortmapConfiguration(temp_ckv, + dt_type, + dmi, + flags, oper); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("update portmap flag for flowfilterentry failed, err %d", @@ -2410,10 +2453,11 @@ upll_rc_t VbrIfFlowFilterMoMgr::SetVlinkPortmapConfiguration( return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfFlowFilterMoMgr::GetVexternalInformation(ConfigKeyVal* ck_main, - upll_keytype_datatype_t dt_type, - pfcdrv_val_vbrif_vextif *& pfc_val, - uint8_t db_flag, DalDmlIntf *dmi) { +upll_rc_t VbrIfFlowFilterMoMgr::GetVexternalInformation( + ConfigKeyVal* ck_main, + upll_keytype_datatype_t dt_type, + pfcdrv_val_vbrif_vextif *& pfc_val, + uint8_t db_flag, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *ckv = NULL; @@ -2486,16 +2530,17 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetVexternalInformation(ConfigKeyVal* ck_main, pfc_val->interface_type = PFCDRV_IF_TYPE_VBRIF; } else { - UPLL_LOG_DEBUG("Portmap/Vlink is not configured"); - return UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; + UPLL_LOG_DEBUG("Portmap/Vlink is not configured"); + return UPLL_RC_ERR_NOT_ALLOWED_AT_THIS_TIME; } UPLL_LOG_DEBUG("GetVExternalInformation returned successfully"); return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VbrIfFlowFilterMoMgr::GetControllerDomainID( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2509,7 +2554,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, result_code = mgrvbrif->GetChildConfigKey(ckv, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to get the ParentConfigKey, resultcode=%d", - result_code); + result_code); return result_code; } @@ -2545,11 +2590,11 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(ckv); DELETE_IF_NOT_NULL(vbr_key); UPLL_LOG_DEBUG("GetControllerDomainId error err code(%d)", result_code); - return UPLL_RC_ERR_GENERIC; + return result_code; } UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); DELETE_IF_NOT_NULL(ckv); @@ -2602,14 +2647,14 @@ upll_rc_t VbrIfFlowFilterMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, } upll_rc_t VbrIfFlowFilterMoMgr::DeleteChildrenPOM( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == dmi) { - UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); - return result_code; + UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); + return result_code; } // Read the DB get the flowlist value and send the delete request to // flowlist momgr if flowlist is configured. @@ -2620,7 +2665,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::DeleteChildrenPOM( return result_code; } result_code = UpdateConfigDB(tempckv, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tempckv); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { @@ -2628,7 +2673,7 @@ upll_rc_t VbrIfFlowFilterMoMgr::DeleteChildrenPOM( return UPLL_RC_SUCCESS; } UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); return result_code; } delete tempckv; @@ -2639,16 +2684,16 @@ upll_rc_t VbrIfFlowFilterMoMgr::DeleteChildrenPOM( upll_rc_t VbrIfFlowFilterMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { UPLL_FUNC_TRACE; val_flowfilter_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); val->cs_row_status = UNC_CS_APPLIED; ikey->AppendCfgVal(IpctSt::kIpcStValFlowfilter, val); return UPLL_RC_SUCCESS; } bool VbrIfFlowFilterMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return true; diff --git a/coordinator/modules/upll/vbr_if_flowfilter_momgr.hh b/coordinator/modules/upll/vbr_if_flowfilter_momgr.hh index fb0689ee..c83b8e76 100644 --- a/coordinator/modules/upll/vbr_if_flowfilter_momgr.hh +++ b/coordinator/modules/upll/vbr_if_flowfilter_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -18,12 +18,12 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_VBRIF_FLOWFILER */ -/** - * @brief VbrIfFlowFilterMoMgr class handles all the request - * received from service. - */ -class VbrIfFlowFilterMoMgr : public MoMgrImpl { - private: + /** + * @brief VbrIfFlowFilterMoMgr class handles all the request + * received from service. + */ + class VbrIfFlowFilterMoMgr : public MoMgrImpl { + private: static unc_key_type_t vbr_if_flowfilter_child[]; /** * @brief Member Variable for VbrIfFlowfilterBindInfo. @@ -34,8 +34,8 @@ class VbrIfFlowFilterMoMgr : public MoMgrImpl { * @brief Member Variable for VbrIfFlowfilterMainTblBindInfo. */ static BindInfo vbr_if_flowfiltermaintbl_bind_info[]; - uint32_t cur_instance_count; - public: + + public: /** * @brief VbrIfFlowFilterMoMgr Class Constructor. */ @@ -105,26 +105,26 @@ class VbrIfFlowFilterMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVbrIfFlowfilterKey( - key_vbr_if_flowfilter_t* key_vbr_if_flowfilter, - unc_keytype_operation_t op); - - /** - * @Brief Checks if the specified key type(KT_VBRIF_FLOWFILTER) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request - * structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller name. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + key_vbr_if_flowfilter_t* key_vbr_if_flowfilter, + unc_keytype_operation_t op); + + /** + * @Brief Checks if the specified key type(KT_VBRIF_FLOWFILTER) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request + * structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller name. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); + const char* ctrlr_name = NULL); /** * @brief Allocates Memory for the Incoming Pointer to the Class. * @@ -147,14 +147,15 @@ class VbrIfFlowFilterMoMgr : public MoMgrImpl { * @param[in] cs_status Describes CsStatus Infomation. * Information. * @param[in] phase Describes the Phase of the Operation. - * @param[in] ckv_audit Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** * @brief Method used to fill the CongigKeyVal with the Parent * Class Information. @@ -317,15 +318,15 @@ class VbrIfFlowFilterMoMgr : public MoMgrImpl { upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /** - * @brief Method To Compare the Valid Check of Attributes - * - * @param[out] val1 Pointer to ConfigKeyVal Class which contains only Valid Attributes - * @param[in] val2 Pointer to ConfigKeyVal Class. - * @param[in] audit If true,Audit Process. - * - * @return Void Function. - */ + /** + * @brief Method To Compare the Valid Check of Attributes + * + * @param[out] val1 Pointer to ConfigKeyVal Class which contains only Valid Attributes + * @param[in] val2 Pointer to ConfigKeyVal Class. + * @param[in] audit If true,Audit Process. + * + * @return Void Function. + */ bool CompareValidValue(void *&val1, void *val2, bool audit) { return false; } @@ -358,13 +359,13 @@ class VbrIfFlowFilterMoMgr : public MoMgrImpl { * * @retval UPLL_RC_SUCCESS Successful Completion **/ - upll_rc_t GetValid(void*val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - return UPLL_RC_SUCCESS; - } + upll_rc_t GetValid(void*val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + return UPLL_RC_SUCCESS; + } /** * @brief Method used for GetParentConfigKey Operation. @@ -376,8 +377,8 @@ class VbrIfFlowFilterMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); /** * @brief Method to check validity of Key @@ -402,59 +403,64 @@ class VbrIfFlowFilterMoMgr : public MoMgrImpl { uint8_t* ctrlr_id); upll_rc_t GetVexternalInformation(ConfigKeyVal* ck_main, - upll_keytype_datatype_t dt_type, - pfcdrv_val_vbrif_vextif *& pfc_val, - uint8_t db_flag, DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + pfcdrv_val_vbrif_vextif *& pfc_val, + uint8_t db_flag, DalDmlIntf *dmi); upll_rc_t SetVlinkPortmapConfiguration(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, InterfacePortMapInfo flag, - unc_keytype_operation_t oper); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + InterfacePortMapInfo flag, + unc_keytype_operation_t oper); upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag = false); upll_rc_t ConstructReadDetailResponse(ConfigKeyVal *ikey, - ConfigKeyVal *drv_resp_ckv, - ConfigKeyVal** okey); + ConfigKeyVal *drv_resp_ckv, + ConfigKeyVal** okey); upll_rc_t GetControllerDomainID(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - upll_rc_t CreateAuditMoImpl(unc::upll::ipc_util::ConfigKeyVal*, unc::upll::dal::DalDmlIntf*, const char*); - upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); - - upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - - upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); - - bool FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op); - - upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); -}; + upll_rc_t CreateAuditMoImpl(unc::upll::ipc_util::ConfigKeyVal*, + unc::upll::dal::DalDmlIntf*, + const char*); + upll_rc_t AuditUpdateController(unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected); + + upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + + upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); + + bool FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, + unc_keytype_operation_t op); + + upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req); + }; } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vbr_if_momgr.cc b/coordinator/modules/upll/vbr_if_momgr.cc index 59f36d69..01850768 100644 --- a/coordinator/modules/upll/vbr_if_momgr.cc +++ b/coordinator/modules/upll/vbr_if_momgr.cc @@ -1,18 +1,18 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ +#include +#include #include "vbr_if_momgr.hh" #include "vbr_momgr.hh" #include "vtn_momgr.hh" #include "vlink_momgr.hh" -#include -#include #if 0 namespace upll_dal_vbrif unc::upll::dal::schema::table::vbridge_interface; #endif @@ -32,135 +32,138 @@ namespace kt_momgr { #define UPLL_VLAN_TAGGED 1 BindInfo VbrIfMoMgr::vbr_if_bind_info[] = { - { uudst::vbridge_interface::kDbiVtnName, CFG_KEY, offsetof( - key_vbr_if, vbr_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiVbrName, CFG_KEY, offsetof( - key_vbr_if, vbr_key.vbridge_name), - uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiIfName, CFG_KEY, offsetof(key_vbr_if, - if_name), - uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiAdminStatus, CFG_VAL, offsetof( - val_vbr_if, admin_status), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiDesc, CFG_VAL, offsetof(val_vbr_if, - description), - uud::kDalChar, 128 }, - { uudst::vbridge_interface::kDbiLogicalPortId, CFG_VAL, offsetof( - val_vbr_if, portmap.logical_port_id), - uud::kDalChar, 320 }, - { uudst::vbridge_interface::kDbiVlanId, CFG_VAL, offsetof(val_vbr_if, - portmap.vlan_id), - uud::kDalUint16, 1 }, - { uudst::vbridge_interface::kDbiTagged, CFG_VAL, offsetof(val_vbr_if, - portmap.tagged), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiVexName, CFG_VAL, offsetof(val_drv_vbr_if, - vex_name), - uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiVexIfName, CFG_VAL, offsetof(val_drv_vbr_if, - vex_if_name), - uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiVexLinkName, CFG_VAL, offsetof( - val_drv_vbr_if, vex_link_name), - uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiOperStatus, ST_VAL, offsetof( - val_db_vbr_if_st, vbr_if_val_st.oper_status), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiDownCount, ST_VAL, offsetof( - val_db_vbr_if_st, down_count), - uud::kDalUint32, 1 }, - { uudst::vbridge_interface::kDbiCtrlrName, CK_VAL, offsetof( - key_user_data_t, ctrlr_id), uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiDomainId, CK_VAL, offsetof( - key_user_data_t, domain_id), uud::kDalChar, 32 }, - { uudst::vbridge_interface::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( - val_vbr_if, valid[UPLL_IDX_ADMIN_STATUS_VBRI]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidDesc, CFG_META_VAL, offsetof( - val_vbr_if, valid[UPLL_IDX_DESC_VBRI]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidPortMap, CFG_META_VAL, offsetof( - val_vbr_if, valid[UPLL_IDX_PM_VBRI]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidLogicalPortId, CFG_META_VAL, offsetof( - val_vbr_if, portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidVlanid, CFG_META_VAL, offsetof( - val_vbr_if, portmap.valid[UPLL_IDX_VLAN_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidTagged, CFG_META_VAL, offsetof( - val_vbr_if, portmap.valid[UPLL_IDX_TAGGED_PM]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidVexName, CFG_META_VAL, offsetof( - val_drv_vbr_if, valid[PFCDRV_IDX_VEXT_NAME_VBRIF]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidVexIfName, CFG_META_VAL, offsetof( - val_drv_vbr_if, valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidVexLinkName, CFG_META_VAL, offsetof( - val_drv_vbr_if, valid[PFCDRV_IDX_VLINK_NAME_VBRIF]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiValidOperStatus, ST_META_VAL, offsetof( - val_db_vbr_if_st, vbr_if_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiCsAdminStatus, CS_VAL, offsetof( - val_vbr_if, cs_attr[UPLL_IDX_ADMIN_STATUS_VBRI]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiCsDesc, CS_VAL, offsetof( - val_vbr_if, cs_attr[UPLL_IDX_DESC_VBRI]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiCsPortMap, CS_VAL, offsetof( - val_vbr_if, cs_attr[UPLL_IDX_PM_VBRI]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiCsLogicalPortId, CS_VAL, offsetof( - val_vbr_if, portmap.cs_attr[UPLL_IDX_LOGICAL_PORT_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiCsVlanid, CS_VAL, offsetof( - val_vbr_if, portmap.cs_attr[UPLL_IDX_VLAN_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiCsTagged, CS_VAL, offsetof( - val_vbr_if, portmap.cs_attr[UPLL_IDX_TAGGED_PM]), - uud::kDalUint8, 1 }, - { uudst::vbridge_interface::kDbiCsRowstatus, CS_VAL, offsetof( - val_vbr_if, cs_row_status), - uud::kDalUint8, 1 } }; + { uudst::vbridge_interface::kDbiVtnName, CFG_KEY, offsetof( + key_vbr_if, vbr_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiVbrName, CFG_KEY, offsetof( + key_vbr_if, vbr_key.vbridge_name), + uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiIfName, CFG_KEY, offsetof(key_vbr_if, + if_name), + uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiAdminStatus, CFG_VAL, offsetof( + val_vbr_if, admin_status), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiDesc, CFG_VAL, offsetof(val_vbr_if, + description), + uud::kDalChar, 128 }, + { uudst::vbridge_interface::kDbiLogicalPortId, CFG_VAL, offsetof( + val_vbr_if, portmap.logical_port_id), + uud::kDalChar, 320 }, + { uudst::vbridge_interface::kDbiVlanId, CFG_VAL, offsetof(val_vbr_if, + portmap.vlan_id), + uud::kDalUint16, 1 }, + { uudst::vbridge_interface::kDbiTagged, CFG_VAL, offsetof(val_vbr_if, + portmap.tagged), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiVexName, CFG_VAL, offsetof(val_drv_vbr_if, + vex_name), + uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiVexIfName, CFG_VAL, offsetof(val_drv_vbr_if, + vex_if_name), + uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiVexLinkName, CFG_VAL, offsetof( + val_drv_vbr_if, vex_link_name), + uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiOperStatus, ST_VAL, offsetof( + val_db_vbr_if_st, vbr_if_val_st.oper_status), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiDownCount, ST_VAL, offsetof( + val_db_vbr_if_st, down_count), + uud::kDalUint32, 1 }, + { uudst::vbridge_interface::kDbiCtrlrName, CK_VAL, offsetof( + key_user_data_t, ctrlr_id), uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiDomainId, CK_VAL, offsetof( + key_user_data_t, domain_id), uud::kDalChar, 32 }, + { uudst::vbridge_interface::kDbiFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( + val_vbr_if, valid[UPLL_IDX_ADMIN_STATUS_VBRI]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidDesc, CFG_META_VAL, offsetof( + val_vbr_if, valid[UPLL_IDX_DESC_VBRI]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidPortMap, CFG_META_VAL, offsetof( + val_vbr_if, valid[UPLL_IDX_PM_VBRI]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidLogicalPortId, CFG_META_VAL, offsetof( + val_vbr_if, portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidVlanid, CFG_META_VAL, offsetof( + val_vbr_if, portmap.valid[UPLL_IDX_VLAN_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidTagged, CFG_META_VAL, offsetof( + val_vbr_if, portmap.valid[UPLL_IDX_TAGGED_PM]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidVexName, CFG_META_VAL, offsetof( + val_drv_vbr_if, valid[PFCDRV_IDX_VEXT_NAME_VBRIF]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidVexIfName, CFG_META_VAL, offsetof( + val_drv_vbr_if, valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidVexLinkName, CFG_META_VAL, offsetof( + val_drv_vbr_if, valid[PFCDRV_IDX_VLINK_NAME_VBRIF]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiValidOperStatus, ST_META_VAL, offsetof( + val_db_vbr_if_st, vbr_if_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiCsAdminStatus, CS_VAL, offsetof( + val_vbr_if, cs_attr[UPLL_IDX_ADMIN_STATUS_VBRI]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiCsDesc, CS_VAL, offsetof( + val_vbr_if, cs_attr[UPLL_IDX_DESC_VBRI]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiCsPortMap, CS_VAL, offsetof( + val_vbr_if, cs_attr[UPLL_IDX_PM_VBRI]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiCsLogicalPortId, CS_VAL, offsetof( + val_vbr_if, portmap.cs_attr[UPLL_IDX_LOGICAL_PORT_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiCsVlanid, CS_VAL, offsetof( + val_vbr_if, portmap.cs_attr[UPLL_IDX_VLAN_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiCsTagged, CS_VAL, offsetof( + val_vbr_if, portmap.cs_attr[UPLL_IDX_TAGGED_PM]), + uud::kDalUint8, 1 }, + { uudst::vbridge_interface::kDbiCsRowstatus, CS_VAL, offsetof( + val_vbr_if, cs_row_status), + uud::kDalUint8, 1 } }; BindInfo VbrIfMoMgr::key_vbr_if_maintbl_bind_info[] = { - { uudst::vbridge_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vbr_if_t, vbr_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge_interface::kDbiVbrName, CFG_MATCH_KEY, offsetof( - key_vbr_if_t, vbr_key.vbridge_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( - key_vbr_if_t, if_name), - uud::kDalChar, kMaxLenInterfaceName + 1 }, - { uudst::vbridge_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge_interface::kDbiVbrName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge_interface::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } }; + { uudst::vbridge_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_vbr_if_t, vbr_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge_interface::kDbiVbrName, CFG_MATCH_KEY, offsetof( + key_vbr_if_t, vbr_key.vbridge_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( + key_vbr_if_t, if_name), + uud::kDalChar, kMaxLenInterfaceName + 1 }, + { uudst::vbridge_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge_interface::kDbiVbrName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge_interface::kDbiFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 } }; unc_key_type_t VbrIfMoMgr::vbr_if_child[] = { UNC_KT_VBRIF_FLOWFILTER, - UNC_KT_VBRIF_POLICINGMAP }; + UNC_KT_VBRIF_POLICINGMAP }; VbrIfMoMgr::VbrIfMoMgr() { UPLL_FUNC_TRACE; ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; - table[MAINTBL] = new Table(uudst::kDbiVbrIfTbl, UNC_KT_VBR_IF, vbr_if_bind_info, - IpctSt::kIpcStKeyVbrIf, IpctSt::kIpcStValVbrIf, - uudst::vbridge_interface::kDbiVbrIfNumCols); + table[MAINTBL] = new Table(uudst::kDbiVbrIfTbl, + UNC_KT_VBR_IF, + vbr_if_bind_info, + IpctSt::kIpcStKeyVbrIf, + IpctSt::kIpcStValVbrIf, + uudst::vbridge_interface::kDbiVbrIfNumCols); table[CTRLRTBL] = NULL; table[RENAMETBL] = NULL; nchild = sizeof(vbr_if_child) / sizeof(*vbr_if_child); @@ -170,7 +173,8 @@ VbrIfMoMgr::VbrIfMoMgr() { * Based on the key type the bind info will pass **/ -bool VbrIfMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, +bool VbrIfMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, int &nattr, MoMgrTables tbl) { /* Main Table or rename table only update */ if (MAINTBL == tbl) { @@ -185,20 +189,20 @@ bool VbrIfMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, upll_rc_t VbrIfMoMgr::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; if (NULL == ikey || NULL == req || !(ikey->get_key())) { - UPLL_LOG_ERROR("Given Input is Empty"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_ERROR("Given Input is Empty"); + return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_ERROR("UpdateMo for %d", ikey->get_key_type()); + UPLL_LOG_TRACE("UpdateMo for %d", ikey->get_key_type()); result_code = ValidateMessage(req, ikey); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Validation Message is Failed "); - return result_code; + UPLL_LOG_ERROR("Validation Message is Failed "); + return result_code; } #if 0 controller_domain ctrlr_dom; @@ -227,9 +231,9 @@ upll_rc_t VbrIfMoMgr::UpdateMo(IpcReqRespHeader *req, delete temp_ck; return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; result_code = ReadConfigDB(temp_ck, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); delete temp_ck; @@ -239,18 +243,18 @@ upll_rc_t VbrIfMoMgr::UpdateMo(IpcReqRespHeader *req, SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); #endif result_code = ValidateCapability( - req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Validate Capability is Failed. Error_code : %d", - result_code); + result_code); delete temp_ck; return result_code; } #if 0 result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_ERROR("Record does Not Exists"); - return result_code; + UPLL_LOG_ERROR("Record does Not Exists"); + return result_code; } #endif delete temp_ck; @@ -268,19 +272,20 @@ upll_rc_t VbrIfMoMgr::UpdateMo(IpcReqRespHeader *req, result_code = ValidateAttribute(okey, dmi, req); if (UPLL_RC_SUCCESS != result_code) { - delete okey; - UPLL_LOG_ERROR("Validate Attribute is Failed"); - return result_code; + delete okey; + UPLL_LOG_ERROR("Validate Attribute is Failed"); + return result_code; } result_code = UpdateConfigVal(okey, req->datatype, dmi); if (UPLL_RC_SUCCESS != result_code) { - delete okey; - UPLL_LOG_DEBUG("UpdateConfigVal is Failed"); - return result_code; + delete okey; + UPLL_LOG_DEBUG("UpdateConfigVal is Failed"); + return result_code; } DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; - UPLL_LOG_DEBUG("The okey Structue before update %s", (okey->ToStrAll()).c_str()); + UPLL_LOG_DEBUG("The okey Structue before update %s", + (okey->ToStrAll()).c_str()); result_code = UpdateConfigDB(okey, req->datatype, UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -306,13 +311,13 @@ upll_rc_t VbrIfMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, DalDmlIntf *dmi, vn_if_type iftype; VlinkMoMgr *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VLINK))); + UNC_KT_VLINK))); if (!mgr) { UPLL_LOG_DEBUG("Invalid Mgr"); return UPLL_RC_ERR_GENERIC; } result_code = mgr->CheckIfMemberOfVlink(ck_ifkey, UPLL_DT_RUNNING, - ck_vlink, dmi, iftype); + ck_vlink, dmi, iftype); if ((result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) || ((iftype == kVlinkInternalNode1) || (iftype == kVlinkInternalNode2))) { delete ck_ifkey; @@ -320,53 +325,59 @@ upll_rc_t VbrIfMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, DalDmlIntf *dmi, UPLL_LOG_DEBUG("Internal link interface"); result_code = VnodeChildMoMgr::CreateAuditMoImpl(ikey, dmi, ctrlr_id); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Create Audit Vbrif failed %s", (ikey->ToStrAll()).c_str()); + UPLL_LOG_INFO("Create Audit Vbrif failed %s", + (ikey->ToStrAll()).c_str()); } return result_code; } else if (result_code != UPLL_RC_SUCCESS) { - delete ck_ifkey; - if (ck_vlink) delete ck_vlink; - UPLL_LOG_INFO("Error in reading vlink key %d", result_code); - return UPLL_RC_ERR_GENERIC; + delete ck_ifkey; + if (ck_vlink) delete ck_vlink; + UPLL_LOG_INFO("Error in reading vlink key %d", result_code); + return UPLL_RC_ERR_GENERIC; } val_vlink *vlink_val = reinterpret_cast(GetVal(ck_vlink)); if (vlink_val == NULL) return UPLL_RC_ERR_GENERIC; uint8_t valid_boundary = vlink_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; - //store VALID_NO_VAL in running only in case of boundary link + // store VALID_NO_VAL in running only in case of boundary link if ((valid_boundary == UNC_VF_VALID_NO_VALUE) || (valid_boundary == UNC_VF_VALID)) { DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutFlag}; result_code = ReadConfigDB(ck_ifkey, UPLL_DT_RUNNING, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { delete ck_ifkey; UPLL_LOG_INFO("Retrieving a Record for VbrIf in RUNNING DB failed"); return result_code; } - void *db_val, *drv_val = GetVal(ikey) ; + void *db_val, *drv_val = GetVal(ikey); db_val = GetVal(ck_ifkey); if (!db_val || !drv_val) { delete ck_ifkey; return UPLL_RC_ERR_GENERIC; } - //validate params of running against those received from driver - val_port_map vbr_db_portmap = (reinterpret_cast(db_val))->vbr_if_val.portmap; - val_port_map *vbr_drv_portmap = &((reinterpret_cast(drv_val))->vbr_if_val.portmap); + // validate params of running against those received from driver + val_port_map vbr_db_portmap = (reinterpret_cast + (db_val))->vbr_if_val.portmap; + val_port_map *vbr_drv_portmap = &((reinterpret_cast + (drv_val))->vbr_if_val.portmap); bool portid_equal = (vbr_db_portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == vbr_drv_portmap->valid[UPLL_IDX_LOGICAL_PORT_ID_PM]); - // to be uncommented when driver stops translating from no-vlan-id to 65535 as it - // cannot distingish between boundary vlinked / regular mapped vbrifs - if (vbr_drv_portmap->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_INVALID) { - vbr_drv_portmap->vlan_id = 0xFFFF; - vbr_drv_portmap->valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; - } + // to be uncommented when driver stops translating from no-vlan-id + // to 65535 as it + // cannot distingish between boundary vlinked / regular mapped vbrifs + if (vbr_drv_portmap->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_INVALID) { + vbr_drv_portmap->vlan_id = 0xFFFF; + vbr_drv_portmap->valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; + } if (portid_equal && (vbr_db_portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID)) { - portid_equal = (strcmp(reinterpret_cast(vbr_db_portmap.logical_port_id), - reinterpret_cast(vbr_drv_portmap->logical_port_id)) == 0); + portid_equal = (strcmp(reinterpret_cast + (vbr_db_portmap.logical_port_id), + reinterpret_cast + (vbr_drv_portmap->logical_port_id)) == 0); } bool vlanid_equal = (vbr_db_portmap.valid[UPLL_IDX_VLAN_ID_PM] == vbr_drv_portmap->valid[UPLL_IDX_VLAN_ID_PM]); @@ -378,13 +389,13 @@ upll_rc_t VbrIfMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, DalDmlIntf *dmi, vbr_drv_portmap->valid[UPLL_IDX_TAGGED_PM]); if (tagged_equal && (vbr_db_portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID)) { - tagged_equal = (vbr_db_portmap.tagged == vbr_drv_portmap->tagged); + tagged_equal = (vbr_db_portmap.tagged == vbr_drv_portmap->tagged); } // create boundary vlink if (portid_equal && vlanid_equal && tagged_equal) { result_code = mgr->UpdateConfigDB(ck_vlink, UPLL_DT_AUDIT, - UNC_OP_CREATE, dmi, MAINTBL); + UNC_OP_CREATE, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { delete ck_ifkey; delete ck_vlink; @@ -421,9 +432,9 @@ upll_rc_t VbrIfMoMgr::GetVbrIfValfromDB(ConfigKeyVal *ikey, return result_code; } -upll_rc_t VbrIfMoMgr::updateVbrIf (IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { +upll_rc_t VbrIfMoMgr::updateVbrIf(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ck_drv_vbr_if = NULL; @@ -434,9 +445,9 @@ upll_rc_t VbrIfMoMgr::updateVbrIf (IpcReqRespHeader *req, key_vbr_if *temp_vbr_if_key = reinterpret_cast(ikey->get_key()); key_vbr_if *vbr_if_key = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(key_vbr_if))); + sizeof(key_vbr_if))); uuu::upll_strncpy(vbr_if_key->if_name, temp_vbr_if_key->if_name, - (kMaxLenInterfaceName + 1)); + (kMaxLenInterfaceName + 1)); uuu::upll_strncpy(vbr_if_key->vbr_key.vbridge_name, temp_vbr_if_key->vbr_key.vbridge_name, (kMaxLenVnodeName + 1)); @@ -445,7 +456,7 @@ upll_rc_t VbrIfMoMgr::updateVbrIf (IpcReqRespHeader *req, (kMaxLenVtnName + 1)); val_drv_vbr_if *vbr_drv_if_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); ConfigVal *cv_drv_vbr_if = new ConfigVal(IpctSt::kIpcStValVbrIf, vbr_drv_if_val); ck_drv_vbr_if = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, @@ -459,7 +470,10 @@ upll_rc_t VbrIfMoMgr::updateVbrIf (IpcReqRespHeader *req, UPLL_LOG_INFO("Retrieving a record for VbrIf in RUNNING DB failed"); return result_code; } - result_code = UpdateConfigDB(ck_drv_vbr_if, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, + result_code = UpdateConfigDB(ck_drv_vbr_if, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { delete ck_drv_vbr_if; @@ -471,42 +485,87 @@ upll_rc_t VbrIfMoMgr::updateVbrIf (IpcReqRespHeader *req, return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfMoMgr::ConverttoDriverPortMap(ConfigKeyVal *ck_port_map) { +upll_rc_t VbrIfMoMgr::ConverttoDriverPortMap(ConfigKeyVal *ck_port_map, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; - std::string if_name = reinterpret_cast( - reinterpret_cast(ck_port_map->get_key())->if_name); - if (strlen(if_name.c_str()) >= 10) { - if_name.erase(10); - } - - struct timeval _timeval; - struct timezone _timezone; - gettimeofday(&_timeval, &_timezone); - - std::stringstream ss; - ss << if_name << _timeval.tv_sec << _timeval.tv_usec; - std::string unique_id = ss.str(); - std::string vex_name("vx_"); - vex_name += unique_id; - std::string vex_if_name("vi_"); - vex_if_name += unique_id; - std::string vex_link_name("vl_"); - vex_link_name += unique_id; - + ConfigKeyVal *ckv_rvbrif = NULL;; + upll_rc_t result_code = GetChildConfigKey(ckv_rvbrif, ck_port_map); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("GetChilConfigKey Failed"); + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag}; + result_code = ReadConfigDB(ckv_rvbrif, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + bool port_map_in_run = false; val_drv_vbr_if *drv_vbr_if_val = reinterpret_cast - (GetVal(ck_port_map)); - drv_vbr_if_val->valid[PFCDRV_IDX_VAL_VBRIF] = UNC_VF_VALID; - drv_vbr_if_val->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(drv_vbr_if_val->vex_name, vex_name.c_str(), - (kMaxLenVnodeName+1)); - - drv_vbr_if_val->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(drv_vbr_if_val->vex_if_name, vex_if_name.c_str(), - (kMaxLenVnodeName + 1)); - - drv_vbr_if_val->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(drv_vbr_if_val->vex_link_name, vex_link_name.c_str(), - (kMaxLenVnodeName + 1)); + (GetVal(ck_port_map)); + if (result_code == UPLL_RC_SUCCESS) { + val_drv_vbr_if *drv_rifval = reinterpret_cast + (GetVal(ckv_rvbrif)); + if (drv_rifval == NULL) { + UPLL_LOG_ERROR("val vbr is NULL"); + DELETE_IF_NOT_NULL(ckv_rvbrif); + return UPLL_RC_ERR_GENERIC; + } + if (drv_rifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { + port_map_in_run = true; + drv_vbr_if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; + drv_vbr_if_val->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(drv_vbr_if_val->vex_name, drv_rifval->vex_name, + kMaxLenVnodeName+1); + drv_vbr_if_val->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(reinterpret_cast(drv_vbr_if_val->vex_if_name), + drv_rifval->vex_if_name, kMaxLenInterfaceName+1); + drv_vbr_if_val->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(reinterpret_cast + (drv_vbr_if_val->vex_link_name), + drv_rifval->vex_link_name, kMaxLenVlinkName+1); + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_ERROR("ReadConfigDB failure %d", result_code); + DELETE_IF_NOT_NULL(ckv_rvbrif); + return result_code; + } + DELETE_IF_NOT_NULL(ckv_rvbrif); + if (!port_map_in_run || UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + std::string if_name = reinterpret_cast( + reinterpret_cast(ck_port_map->get_key())->if_name); + if (strlen(if_name.c_str()) >= 10) { + if_name.erase(10); + } + + struct timeval _timeval; + struct timezone _timezone; + gettimeofday(&_timeval, &_timezone); + + std::stringstream ss; + ss << if_name << _timeval.tv_sec << _timeval.tv_usec; + std::string unique_id = ss.str(); + std::string vex_name("vx_"); + vex_name += unique_id; + std::string vex_if_name("vi_"); + vex_if_name += unique_id; + std::string vex_link_name("vl_"); + vex_link_name += unique_id; + + drv_vbr_if_val->valid[PFCDRV_IDX_VAL_VBRIF] = UNC_VF_VALID; + drv_vbr_if_val->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(drv_vbr_if_val->vex_name, vex_name.c_str(), + (kMaxLenVnodeName+1)); + + drv_vbr_if_val->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(drv_vbr_if_val->vex_if_name, vex_if_name.c_str(), + (kMaxLenVnodeName + 1)); + + drv_vbr_if_val->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(drv_vbr_if_val->vex_link_name, vex_link_name.c_str(), + (kMaxLenVnodeName + 1)); + } return UPLL_RC_SUCCESS; } @@ -520,7 +579,7 @@ bool VbrIfMoMgr::IsValidKey(void *key, uint64_t index) { reinterpret_cast(if_key->vbr_key.vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("VTN Name is not valid(%d)", ret_val); + UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; } break; @@ -529,7 +588,7 @@ bool VbrIfMoMgr::IsValidKey(void *key, uint64_t index) { reinterpret_cast(if_key->vbr_key.vbridge_name), kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("VBR Name is not valid(%d)", ret_val); + UPLL_LOG_TRACE("VBR Name is not valid(%d)", ret_val); return false; } break; @@ -537,7 +596,7 @@ bool VbrIfMoMgr::IsValidKey(void *key, uint64_t index) { ret_val = ValidateKey(reinterpret_cast(if_key->if_name), kMinLenInterfaceName, kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("VBR IF Name is not valid(%d)", ret_val); + UPLL_LOG_TRACE("VBR IF Name is not valid(%d)", ret_val); return false; } break; @@ -607,7 +666,7 @@ upll_rc_t VbrIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, uint8_t flags = 0; val_vlink *vlink_val = reinterpret_cast(GetVal(parent_key)); if (!vlink_val) { - if (!okey || !(okey->get_key())) + if (!okey || !(okey->get_key())) free(vbr_key_if); return UPLL_RC_ERR_GENERIC; } @@ -632,7 +691,7 @@ upll_rc_t VbrIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, uuu::upll_strncpy(vbr_key_if->if_name, if_name, (kMaxLenInterfaceName + 1)); } - break; + break; default: break; } @@ -668,13 +727,14 @@ upll_rc_t VbrIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, (ikey->get_key()); if (!pkey) return UPLL_RC_ERR_GENERIC; key_vbr *vbr_key = reinterpret_cast(ConfigKeyVal::Malloc - (sizeof(key_vbr))); + (sizeof(key_vbr))); uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vbr_key->vbridge_name, - reinterpret_cast(pkey)->vbr_key.vbridge_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)->vbr_key.vbridge_name, + (kMaxLenVnodeName+1)); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, vbr_key, NULL); if (okey == NULL) { @@ -696,11 +756,11 @@ upll_rc_t VbrIfMoMgr::AllocVal(ConfigVal *&ck_val, switch (tbl) { case MAINTBL: val = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_drv_vbr_if))); + sizeof(val_drv_vbr_if))); ck_val = new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, val); if (dt_type == UPLL_DT_STATE) { val = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_db_vbr_if_st))); + sizeof(val_db_vbr_if_st))); ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVbrIfSt, val); ck_val->AppendCfgVal(ck_nxtval); } @@ -717,7 +777,7 @@ upll_rc_t VbrIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, if (req == NULL) return UPLL_RC_ERR_GENERIC; if (okey != NULL) return UPLL_RC_ERR_GENERIC; if (req->get_key_type() != UNC_KT_VBR_IF) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); if (tmp) { @@ -746,29 +806,29 @@ upll_rc_t VbrIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, if (tbl == MAINTBL) { void *ovalst; val_db_vbr_if_st *ival = - reinterpret_cast(tmp->get_val()); + reinterpret_cast(tmp->get_val()); if (ival == NULL) { DELETE_IF_NOT_NULL(tmp1); return UPLL_RC_ERR_GENERIC; } val_db_vbr_if_st *val_vbr_if = - reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_db_vbr_if_st))); + reinterpret_cast(ConfigKeyVal::Malloc( + sizeof(val_db_vbr_if_st))); memcpy(val_vbr_if, ival, sizeof(val_db_vbr_if_st)); ovalst = reinterpret_cast(val_vbr_if); ConfigVal *tmp2 = new ConfigVal( - req->get_cfg_val()->get_next_cfg_val()->get_st_num(), ovalst); + req->get_cfg_val()->get_next_cfg_val()->get_st_num(), ovalst); tmp1->AppendCfgVal(tmp2); } } void *tkey = (req)->get_key(); key_vbr_if *ikey = reinterpret_cast(tkey); key_vbr_if *vbr_if_key = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(key_vbr_if))); + sizeof(key_vbr_if))); if (!vbr_if_key) { - UPLL_LOG_DEBUG(" Memory allocation failed"); - DELETE_IF_NOT_NULL(tmp1); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG(" Memory allocation failed"); + DELETE_IF_NOT_NULL(tmp1); + return UPLL_RC_ERR_GENERIC; } memcpy(vbr_if_key, ikey, sizeof(key_vbr_if)); okey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, vbr_if_key, @@ -789,7 +849,8 @@ upll_rc_t VbrIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; - val_drv_vbr_if_t *vbrif_val = reinterpret_cast(GetVal(ikey)); + val_drv_vbr_if_t *vbrif_val = reinterpret_cast + (GetVal(ikey)); unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; @@ -797,77 +858,84 @@ upll_rc_t VbrIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, val_vbr_if_t *vbr_if_val = &vbrif_val->vbr_if_val; bool port_map_change = false; switch (op) { - case UNC_OP_UPDATE: - { - void *val = reinterpret_cast(vbrif_val); - val_drv_vbr_if_t *vbrif_val2 = reinterpret_cast - (GetVal(upd_key)); + case UNC_OP_UPDATE: + { + void *val = reinterpret_cast(vbrif_val); + val_drv_vbr_if_t *vbrif_val2 = reinterpret_cast + (GetVal(upd_key)); #if 0 - if (vbr_if_val->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID - && vbrif_val2->vbr_if_val.valid[UPLL_IDX_PM_VBRI] != UNC_VF_VALID) - port_map_change = true; + if (vbr_if_val->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID + && vbrif_val2->vbr_if_val.valid[UPLL_IDX_PM_VBRI] != UNC_VF_VALID) + port_map_change = true; #else - if (vbr_if_val->valid[UPLL_IDX_PM_VBRI] != - vbrif_val2->vbr_if_val.valid[UPLL_IDX_PM_VBRI]) - port_map_change = true; + if (vbr_if_val->valid[UPLL_IDX_PM_VBRI] != + vbrif_val2->vbr_if_val.valid[UPLL_IDX_PM_VBRI]) + port_map_change = true; #endif - CompareValidValue(val, GetVal(upd_key), true); - if (vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] != UNC_VF_INVALID) - port_map_change = true; - uint8_t cand_flag = 0, run_flag = 0; - GET_USER_DATA_FLAGS(ikey, cand_flag); - GET_USER_DATA_FLAGS(upd_key, run_flag); - if ((cand_flag & VIF_TYPE) != (run_flag & VIF_TYPE)) - port_map_change = true; - UPLL_LOG_DEBUG("ikey flags %d upd_key flags %d %d", cand_flag, run_flag, - port_map_change); - } - /* fall through intended */ - case UNC_OP_CREATE: - if (op == UNC_OP_CREATE) { - vbr_if_val->cs_row_status = cs_status; - port_map_change = true; - } - if (port_map_change) { - val_db_vbr_if_st *vbr_if_valst = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vbr_if_st))); - ikey->AppendCfgVal(IpctSt::kIpcStValVbrIfSt, vbr_if_valst); - UPLL_LOG_DEBUG("valid %d admin %d op %d", - vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI], - vbr_if_val->admin_status, op); -#if 0 - if (vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] != UNC_VF_INVALID) { - val_vbr_if_st *vnif_st = &(reinterpret_cast - (GetStateVal(ikey))->vbr_if_val_st); - vnif_st->oper_status = UPLL_OPER_STATUS_UNINIT; + CompareValidValue(val, GetVal(upd_key), true); + if (vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] != UNC_VF_INVALID) + port_map_change = true; + else if (vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] + != UNC_VF_INVALID) + port_map_change = true; + uint8_t cand_flag = 0, run_flag = 0; + GET_USER_DATA_FLAGS(ikey, cand_flag); + GET_USER_DATA_FLAGS(upd_key, run_flag); + if ((cand_flag & VIF_TYPE) != (run_flag & VIF_TYPE)) + port_map_change = true; + UPLL_LOG_DEBUG("ikey flags %d upd_key flags %d %d", cand_flag, run_flag, + port_map_change); } - upll_rc_t result_code = InitOperStatus - (ikey, vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI], - vbr_if_val->admin_status, - vbr_if_val->valid[UPLL_IDX_PM_VBRI], - &vbr_if_val->portmap); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error settiing oper status"); - return UPLL_RC_ERR_GENERIC; + /* fall through intended */ + case UNC_OP_CREATE: + if (op == UNC_OP_CREATE) { + vbr_if_val->cs_row_status = cs_status; + port_map_change = true; } + if (port_map_change) { + val_db_vbr_if_st *vbr_if_valst = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_db_vbr_if_st))); + ikey->AppendCfgVal(IpctSt::kIpcStValVbrIfSt, vbr_if_valst); + UPLL_LOG_DEBUG("valid %d admin %d op %d", + vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI], + vbr_if_val->admin_status, op); +#if 0 + if (vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] != UNC_VF_INVALID) { + val_vbr_if_st *vnif_st = &(reinterpret_cast + (GetStateVal(ikey))->vbr_if_val_st); + vnif_st->oper_status = UPLL_OPER_STATUS_UNINIT; + } + upll_rc_t result_code = InitOperStatus + (ikey, vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI], + vbr_if_val->admin_status, + vbr_if_val->valid[UPLL_IDX_PM_VBRI], + &vbr_if_val->portmap); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error settiing oper status"); + return UPLL_RC_ERR_GENERIC; + } #else - val_vbr_if_st *vnif_st = &(reinterpret_cast - (GetStateVal(ikey))->vbr_if_val_st); - vnif_st->oper_status = UPLL_OPER_STATUS_UNINIT; - vnif_st->valid[UPLL_IDX_OPER_STATUS_VRTS] = UNC_VF_VALID; + val_vbr_if_st *vnif_st = &(reinterpret_cast + (GetStateVal(ikey))->vbr_if_val_st); + vnif_st->oper_status = UPLL_OPER_STATUS_UNINIT; +#if 0 + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_UNINIT; +#endif + vnif_st->valid[UPLL_IDX_OPER_STATUS_VRTS] = UNC_VF_VALID; #endif - if (op == UNC_OP_CREATE) - vbr_if_valst->down_count = 0; - else { - val_db_vbr_if_st *run_vbrifst = reinterpret_cast - (GetStateVal(upd_key)); - vbr_if_valst->down_count = (run_vbrifst ? run_vbrifst->down_count:0); + if (op == UNC_OP_CREATE) { + vbr_if_valst->down_count = 0; + } else { + val_db_vbr_if_st *run_vbrifst = reinterpret_cast + (GetStateVal(upd_key)); + vbr_if_valst->down_count = (run_vbrifst ? run_vbrifst->down_count:0); + } } - } - break; - default: - UPLL_LOG_DEBUG("Invalid op %d", op); - return UPLL_RC_ERR_GENERIC; + break; + default: + UPLL_LOG_DEBUG("Invalid op %d", op); + return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("%s", (ikey->ToStrAll()).c_str()); val_vbr_if *vbr_if_val2 = reinterpret_cast(GetVal(upd_key)); @@ -894,7 +962,7 @@ upll_rc_t VbrIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, } val_port_map *pm = &vbr_if_val->portmap; for (unsigned int loop = 0; loop < sizeof(pm->valid) / sizeof(pm->valid[0]); - ++loop) { + ++loop) { if ((UNC_VF_VALID == (uint8_t) pm->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) pm->valid[loop])) { pm->cs_attr[loop] = cs_status; @@ -910,35 +978,36 @@ upll_rc_t VbrIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, } upll_rc_t VbrIfMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vbr_if_t *val; val = (ckv_running != NULL) ? reinterpret_cast(GetVal( - ckv_running)) : - NULL; + ckv_running)) : + NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase) - val->cs_row_status = cs_status; + val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } for (unsigned int loop = 0; loop < sizeof(val->portmap.valid) / sizeof(uint8_t); ++loop) { if ((cs_status == UNC_CS_INVALID && - UNC_VF_VALID == val->portmap.valid[loop]) + UNC_VF_VALID == val->portmap.valid[loop]) || cs_status == UNC_CS_APPLIED) val->portmap.cs_attr[loop] = cs_status; } @@ -960,7 +1029,7 @@ upll_rc_t VbrIfMoMgr::ValidateMessage(IpcReqRespHeader *req, upll_rc_t ret_val = UPLL_RC_SUCCESS; if (ikey->get_st_num() != IpctSt::kIpcStKeyVbrIf) { UPLL_LOG_DEBUG("Invalid key structure received. received struct - %d", - ikey->get_st_num()); + ikey->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_vbr_if *vbr_if_key = reinterpret_cast(ikey->get_key()); @@ -979,30 +1048,36 @@ upll_rc_t VbrIfMoMgr::ValidateMessage(IpcReqRespHeader *req, val_vtn_neighbor *vtn_neighbor = NULL; if ((ikey->get_cfg_val()) - && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVbrIf)) { - vbr_if_val = reinterpret_cast(ikey->get_cfg_val()->get_val()); + && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVbrIf)) { + vbr_if_val = reinterpret_cast + (ikey->get_cfg_val()->get_val()); } else if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtnNeighbor)) { + ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStValVtnNeighbor)) { vtn_neighbor = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + (ikey->get_cfg_val()->get_val()); } else if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStPfcdrvValVbrIf)) { + ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStPfcdrvValVbrIf)) { vbr_if_val = &(reinterpret_cast( - ikey->get_cfg_val()->get_val())->vbr_if_val); + ikey->get_cfg_val()->get_val())->vbr_if_val); } else if ((ikey->get_cfg_val()) && - (((ikey->get_cfg_val())->get_st_num() != IpctSt::kIpcStValVbrIf) || - ((ikey->get_cfg_val())->get_st_num() != IpctSt::kIpcStValVtnNeighbor) || - ((ikey->get_cfg_val())->get_st_num() != IpctSt::kIpcStPfcdrvValVbrIf))) { + (((ikey->get_cfg_val())->get_st_num() != + IpctSt::kIpcStValVbrIf) || + ((ikey->get_cfg_val())->get_st_num() != + IpctSt::kIpcStValVtnNeighbor) || + ((ikey->get_cfg_val())->get_st_num() != + IpctSt::kIpcStPfcdrvValVbrIf))) { UPLL_LOG_DEBUG("Invalid val structure received.received struct - %d", - ikey->get_cfg_val()->get_st_num()); + ikey->get_cfg_val()->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } if ((operation == UNC_OP_CREATE) && ((dt_type == UPLL_DT_CANDIDATE) - || (UPLL_DT_IMPORT == dt_type))) { + || (UPLL_DT_IMPORT == dt_type))) { if (vbr_if_val == NULL) { UPLL_LOG_DEBUG("Val struct Validation is an optional" - "for CREATE operation"); + "for CREATE operation"); return UPLL_RC_SUCCESS; } ret_val = ValidateVbrIfValue(vbr_if_val, operation); @@ -1013,7 +1088,8 @@ upll_rc_t VbrIfMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_UPDATE) && (dt_type == UPLL_DT_CANDIDATE)) { if (vbr_if_val == NULL) { - UPLL_LOG_DEBUG("Val struct Validation is Mandatory for UPDATE operation"); + UPLL_LOG_DEBUG("Val struct Validation is Mandatory" + "for UPDATE operation"); return UPLL_RC_ERR_BAD_REQUEST; } ret_val = ValidateVbrIfValue(vbr_if_val, operation); @@ -1026,55 +1102,57 @@ upll_rc_t VbrIfMoMgr::ValidateMessage(IpcReqRespHeader *req, operation == UNC_OP_READ_SIBLING_BEGIN) && (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP)) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option1 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - if (vbr_if_val == NULL) { - UPLL_LOG_DEBUG("Val struct Validation is an optional for READ operation"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVbrIfValue(vbr_if_val, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failure for READ operation"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option1 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (vbr_if_val == NULL) { + UPLL_LOG_DEBUG("Val struct Validation is an optional" + "for READ operation"); return UPLL_RC_SUCCESS; + } + ret_val = ValidateVbrIfValue(vbr_if_val, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failure for READ operation"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ_SIBLING || operation == UNC_OP_READ_SIBLING_BEGIN) && (dt_type == UPLL_DT_STATE)) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option1 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - if (vbr_if_val == NULL) { - UPLL_LOG_DEBUG("Val struct Validation is an optional for" - "READ_SIBLING operation"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVbrIfValue(vbr_if_val, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failure for" - "READ_SIBLING operation"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option1 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (vbr_if_val == NULL) { + UPLL_LOG_DEBUG("Val struct Validation is an optional for" + "READ_SIBLING operation"); return UPLL_RC_SUCCESS; + } + ret_val = ValidateVbrIfValue(vbr_if_val, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failure for" + "READ_SIBLING operation"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ) && (dt_type == UPLL_DT_STATE)) { if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; } if (option2 == UNC_OPT2_NONE) { if (vbr_if_val == NULL) { - UPLL_LOG_DEBUG("Val struct Validation is an optional for READ operation"); + UPLL_LOG_DEBUG("Val struct Validation is an optional" + "for READ operation"); return UPLL_RC_SUCCESS; } ret_val = ValidateVbrIfValue(vbr_if_val, operation); @@ -1087,7 +1165,7 @@ upll_rc_t VbrIfMoMgr::ValidateMessage(IpcReqRespHeader *req, if (vtn_neighbor == NULL) { UPLL_LOG_DEBUG( "Val vtn_neighbor struct Validation is an optional" - "for READ operation"); + "for READ operation"); return UPLL_RC_SUCCESS; } ret_val = ValidateVtnNeighborValue(vtn_neighbor, operation); @@ -1103,15 +1181,14 @@ upll_rc_t VbrIfMoMgr::ValidateMessage(IpcReqRespHeader *req, } } else if ((operation == UNC_OP_READ_SIBLING_COUNT) && (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || - dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE)) { + dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE)) { if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; } if (option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG("Error option1 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; - } if (vbr_if_val == NULL) { UPLL_LOG_DEBUG("Val struct Validation is an optional for" @@ -1126,20 +1203,20 @@ upll_rc_t VbrIfMoMgr::ValidateMessage(IpcReqRespHeader *req, } return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_DELETE || operation == UNC_OP_READ_NEXT - || operation == UNC_OP_READ_BULK) && - (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING - || dt_type == UPLL_DT_STARTUP)) { - UPLL_LOG_DEBUG("value struct is none for this operation - %d", operation); - return UPLL_RC_SUCCESS; + || operation == UNC_OP_READ_BULK) && + (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING + || dt_type == UPLL_DT_STARTUP)) { + UPLL_LOG_DEBUG("value struct is none for this operation - %d", operation); + return UPLL_RC_SUCCESS; } UPLL_LOG_DEBUG("Error Unsupported datatype (%d) or operation - (%d)", - dt_type, operation); + dt_type, operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } upll_rc_t VbrIfMoMgr::ValidateVbrifKey(key_vbr_if *vbr_if_key, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey( @@ -1163,12 +1240,12 @@ upll_rc_t VbrIfMoMgr::ValidateVbrifKey(key_vbr_if *vbr_if_key, if (operation != UNC_OP_READ_SIBLING_COUNT && operation != UNC_OP_READ_SIBLING_BEGIN) { ret_val = ValidateKey( - reinterpret_cast(vbr_if_key->if_name), kMinLenInterfaceName, - kMaxLenInterfaceName); + reinterpret_cast(vbr_if_key->if_name), kMinLenInterfaceName, + kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Interface Name syntax check failed." - "Received if_name - %s", - vbr_if_key->if_name); + "Received if_name - %s", + vbr_if_key->if_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -1184,14 +1261,14 @@ upll_rc_t VbrIfMoMgr::ValidateVbrIfValue(val_vbr_if *vbr_if_val, if (vbr_if_val->valid[UPLL_IDX_DESC_VBRI] == UNC_VF_VALID) { if (!ValidateDesc(vbr_if_val->description, - kMinLenDescription, kMaxLenDescription)) { - UPLL_LOG_DEBUG("Description syntax check failed." - "Received description - %s", - vbr_if_val->description); + kMinLenDescription, kMaxLenDescription)) { + UPLL_LOG_DEBUG("Description syntax check failed." + "Received description - %s", + vbr_if_val->description); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vbr_if_val->valid[UPLL_IDX_DESC_VBRI] == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { + && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { uuu::upll_strncpy(vbr_if_val->description, " ", kMaxLenDescription+1); } if (vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_VALID) { @@ -1199,16 +1276,16 @@ upll_rc_t VbrIfMoMgr::ValidateVbrIfValue(val_vbr_if *vbr_if_val, (uint8_t) UPLL_ADMIN_ENABLE, (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { UPLL_LOG_DEBUG("Admin status range check failed." - "Received Admin status - %d", - vbr_if_val->admin_status); + "Received Admin status - %d", + vbr_if_val->admin_status); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] - == UNC_VF_VALID_NO_VALUE) - && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { + == UNC_VF_VALID_NO_VALUE) + && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { vbr_if_val->admin_status = UPLL_ADMIN_ENABLE; } else if ((vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_INVALID) - && (operation == UNC_OP_CREATE)) { + && (operation == UNC_OP_CREATE)) { vbr_if_val->admin_status = UPLL_ADMIN_ENABLE; vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID_NO_VALUE; } @@ -1216,24 +1293,24 @@ upll_rc_t VbrIfMoMgr::ValidateVbrIfValue(val_vbr_if *vbr_if_val, if (vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID) { if (!ValidateLogicalPortId( - reinterpret_cast(vbr_if_val->portmap.logical_port_id), - kMinLenLogicalPortId, kMaxLenLogicalPortId)) { + reinterpret_cast(vbr_if_val->portmap.logical_port_id), + kMinLenLogicalPortId, kMaxLenLogicalPortId)) { UPLL_LOG_DEBUG("Logical Port id syntax check failed." - "Received Logical Port Id - %s", - vbr_if_val->portmap.logical_port_id); + "Received Logical Port Id - %s", + vbr_if_val->portmap.logical_port_id); return UPLL_RC_ERR_CFG_SYNTAX; - } - if (toupper(vbr_if_val->portmap.logical_port_id[0]) == 'S' + } + if (toupper(vbr_if_val->portmap.logical_port_id[0]) == 'S' && toupper(vbr_if_val->portmap.logical_port_id[1]) == 'W') { UPLL_LOG_DEBUG("Invalid logical_port_id - %s", vbr_if_val->portmap.logical_port_id); return UPLL_RC_ERR_CFG_SYNTAX; - } + } } else if (vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == - UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { uuu::upll_strncpy(vbr_if_val->portmap.logical_port_id, " ", - kMaxLenLogicalPortId+1); + kMaxLenLogicalPortId+1); } if (vbr_if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { if ((vbr_if_val->portmap.vlan_id != 0xFFFF) && @@ -1241,13 +1318,13 @@ upll_rc_t VbrIfMoMgr::ValidateVbrIfValue(val_vbr_if *vbr_if_val, (uint16_t) kMinVlanId, (uint16_t) kMaxVlanId, true, true)) { UPLL_LOG_DEBUG("Vlan Id Number check failed." - "Received vlan_id - %d", - vbr_if_val->portmap.vlan_id); + "Received vlan_id - %d", + vbr_if_val->portmap.vlan_id); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vbr_if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { vbr_if_val->portmap.vlan_id = 0; } if (vbr_if_val->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) { @@ -1256,15 +1333,15 @@ upll_rc_t VbrIfMoMgr::ValidateVbrIfValue(val_vbr_if *vbr_if_val, (uint8_t) UPLL_VLAN_UNTAGGED, (uint8_t) UPLL_VLAN_TAGGED, true, true)) { UPLL_LOG_DEBUG("Tagged Numeric range check failed." - "Received Tag - %d", - vbr_if_val->portmap.tagged); + "Received Tag - %d", + vbr_if_val->portmap.tagged); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (((vbr_if_val->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID_NO_VALUE) || (vbr_if_val->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_INVALID)) - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { if (vbr_if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { vbr_if_val->portmap.tagged = UPLL_VLAN_TAGGED; } else { @@ -1273,15 +1350,16 @@ upll_rc_t VbrIfMoMgr::ValidateVbrIfValue(val_vbr_if *vbr_if_val, vbr_if_val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; } } else if ((vbr_if_val->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID_NO_VALUE) - && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { + && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { memset(&(vbr_if_val->portmap), 0, sizeof(vbr_if_val->portmap)); } return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, - unc_keytype_operation_t operation) { +upll_rc_t VbrIfMoMgr::ValidateVtnNeighborValue( + val_vtn_neighbor *vtn_neighbor, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; @@ -1291,13 +1369,13 @@ upll_rc_t VbrIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("connected_vnode_name syntax check failed." - "Received connected_vnode_name - %s", - vtn_neighbor->connected_vnode_name); + "Received connected_vnode_name - %s", + vtn_neighbor->connected_vnode_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { uuu::upll_strncpy(vtn_neighbor->connected_vnode_name, " ", kMaxLenVnodeName+1); } @@ -1307,13 +1385,13 @@ upll_rc_t VbrIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, kMinLenInterfaceName, kMinLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("connected_if_name syntax check failed." - "Received connected_if_name - %s", - vtn_neighbor->connected_if_name); + "Received connected_if_name - %s", + vtn_neighbor->connected_if_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_IF_NAME_VN] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { uuu::upll_strncpy(vtn_neighbor->connected_if_name, " ", kMaxLenInterfaceName+1); } @@ -1323,17 +1401,17 @@ upll_rc_t VbrIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, kMinLenVlinkName, kMaxLenVlinkName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("connected_vlink_name syntax check failed." - "Received connected_vlink_name - %s", - vtn_neighbor->connected_vlink_name); + "Received connected_vlink_name - %s", + vtn_neighbor->connected_vlink_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { - uuu::upll_strncpy(vtn_neighbor->connected_vlink_name, " ", - kMaxLenVlinkName+1); -} -return UPLL_RC_SUCCESS; + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + uuu::upll_strncpy(vtn_neighbor->connected_vlink_name, " ", + kMaxLenVlinkName+1); + } + return UPLL_RC_SUCCESS; } upll_rc_t VbrIfMoMgr::ValidateCapability(IpcReqRespHeader *req, @@ -1342,14 +1420,14 @@ upll_rc_t VbrIfMoMgr::ValidateCapability(IpcReqRespHeader *req, UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; - if (!ikey || !req ) { + if (!ikey || !req) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); return UPLL_RC_ERR_GENERIC; } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -1363,16 +1441,10 @@ upll_rc_t VbrIfMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_INFO("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } - + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, &attrs); break; case UNC_OP_UPDATE: @@ -1432,9 +1504,9 @@ upll_rc_t VbrIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, } upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( - const uint8_t *attrs, ConfigKeyVal *ikey, - unc_keytype_operation_t operation, - upll_keytype_datatype_t dt_type) { + const uint8_t *attrs, ConfigKeyVal *ikey, + unc_keytype_operation_t operation, + upll_keytype_datatype_t dt_type) { UPLL_FUNC_TRACE; val_vbr_if_t *vbr_if_val = NULL; @@ -1444,20 +1516,20 @@ upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( return UPLL_RC_SUCCESS; vbr_if_val = &(reinterpret_cast( - cfg_val->get_val())->vbr_if_val); + cfg_val->get_val())->vbr_if_val); if (vbr_if_val) { } } else { ConfigVal *cfg_val = ikey->get_cfg_val(); - if (!cfg_val) - return UPLL_RC_SUCCESS; + if (!cfg_val) + return UPLL_RC_SUCCESS; vbr_if_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } if (vbr_if_val != NULL) { if ((vbr_if_val->valid[UPLL_IDX_DESC_VBRI] == UNC_VF_VALID) || - (vbr_if_val->valid[UPLL_IDX_DESC_VBRI] == UNC_VF_VALID_NO_VALUE)) { + (vbr_if_val->valid[UPLL_IDX_DESC_VBRI] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapDesc] == 0) { vbr_if_val->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -1480,9 +1552,9 @@ upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( if ((vbr_if_val->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) || (vbr_if_val->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID_NO_VALUE)) { if ((vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] - == UNC_VF_VALID) || - (vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID) || + (vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapLogicalPortId] == 0) { vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_INVALID; @@ -1495,7 +1567,7 @@ upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( } if ((vbr_if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) || (vbr_if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapVlanId] == 0) { vbr_if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -1506,7 +1578,7 @@ upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( } if ((vbr_if_val->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) || (vbr_if_val->portmap.valid[UPLL_IDX_TAGGED_PM] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapTagged] == 0) { vbr_if_val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -1524,30 +1596,36 @@ upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( } #if 0 - } else if (UPLL_DT_IMPORT == dt_type) { - val_drv_vbr_if *vbr_if_val = +else if (UPLL_DT_IMPORT == dt_type) { + val_drv_vbr_if *vbr_if_val = reinterpret_cast(ikey->get_cfg_val()->get_val()); if (vbr_if_val != NULL) { if ((vbr_if_val->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] == UNC_VF_VALID) - || (vbr_if_val->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] == UNC_VF_VALID_NO_VALUE)) { + || (vbr_if_val->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] == + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapDesc] == 0) { - vbr_if_val->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] = UNC_VF_NOT_SUPPORTED; + vbr_if_val->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] = + UNC_VF_NOT_SUPPORTED; UPLL_LOG_INFO("Description attr is not supported by ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } - if ((vbr_if_val->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_VALID) + if ((vbr_if_val->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] == + UNC_VF_VALID) ||(vbr_if_val->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapAdminStatus] == 0) { - vbr_if_val->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] = UNC_VF_NOT_SUPPORTED; + vbr_if_val->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] = + UNC_VF_NOT_SUPPORTED; UPLL_LOG_INFO("Admin status attr is not supported by ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } if ((vbr_if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) - || (vbr_if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID_NO_VALUE)) { - if ((vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID) + || (vbr_if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == + UNC_VF_VALID_NO_VALUE)) { + if ((vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == + UNC_VF_VALID) || (vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapLogicalPortId] == 0) { @@ -1557,20 +1635,24 @@ upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } - if ((vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) + if ((vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] == + UNC_VF_VALID) || (vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapVlanId] == 0) { - vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_NOT_SUPPORTED; + vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] = + UNC_VF_NOT_SUPPORTED; UPLL_LOG_INFO("portmap.vlanid attr is not supported by ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } - if ((vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) + if ((vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] == + UNC_VF_VALID) || (vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vbr_if::kCapTagged] == 0) { - vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_NOT_SUPPORTED; + vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] = + UNC_VF_NOT_SUPPORTED; UPLL_LOG_INFO("portmap.Tagged attr is not supported by ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } @@ -1578,17 +1660,16 @@ upll_rc_t VbrIfMoMgr::ValVbrIfAttributeSupportCheck( } return UPLL_RC_SUCCESS; } - } +} #endif upll_rc_t VbrIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; if (!ikey || !(ikey->get_key())) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; key_rename_vnode_info *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) return UPLL_RC_ERR_GENERIC; @@ -1624,14 +1705,16 @@ upll_rc_t VbrIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return UPLL_RC_SUCCESS; } -bool VbrIfMoMgr::FilterAttributes(void *&val1, void *val2, bool copy_to_running, +bool VbrIfMoMgr::FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, unc_keytype_operation_t op) { UPLL_FUNC_TRACE; val_drv_vbr_if_t *val_vbr_if1 = reinterpret_cast(val1); /* No need to configure description in controller. */ val_vbr_if1->vbr_if_val.valid[UPLL_IDX_DESC_VBRI] = UNC_VF_INVALID; if (op != UNC_OP_CREATE) - return CompareValidValue(val1, val2, copy_to_running); + return CompareValidValue(val1, val2, copy_to_running); return false; } @@ -1649,14 +1732,14 @@ bool VbrIfMoMgr::CompareValidValue(void *&val1, void *val2, val_drv_vbr_if_t *if2 = reinterpret_cast(val2); val_vbr_if_t *val_vbr_if2 = &if2->vbr_if_val; UPLL_LOG_DEBUG("cand valid_admin %d run valid_admin %d", - val_vbr_if1->valid[UPLL_IDX_ADMIN_STATUS_VBRI], - val_vbr_if2->valid[UPLL_IDX_ADMIN_STATUS_VBRI]); + val_vbr_if1->valid[UPLL_IDX_ADMIN_STATUS_VBRI], + val_vbr_if2->valid[UPLL_IDX_ADMIN_STATUS_VBRI]); #endif for (unsigned int loop = 0; loop < sizeof(val_vbr_if1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == val_vbr_if1->valid[loop] && ((UNC_VF_VALID == val_vbr_if2->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == val_vbr_if2->valid[loop]))) + (UNC_VF_VALID_NO_VALUE == val_vbr_if2->valid[loop]))) val_vbr_if1->valid[loop] = UNC_VF_VALID_NO_VALUE; } for (unsigned int loop = 1; @@ -1668,93 +1751,95 @@ bool VbrIfMoMgr::CompareValidValue(void *&val1, void *val2, if ((if1->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] == UNC_VF_VALID_NO_VALUE) && (if1->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] == UNC_VF_VALID_NO_VALUE) && (if1->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] == UNC_VF_VALID_NO_VALUE)) { - uuu::upll_strncpy(if1->vex_name, if2->vex_name, (kMaxLenVnodeName+1)); - uuu::upll_strncpy(if1->vex_if_name, if2->vex_if_name, (kMaxLenVnodeName+1)); - uuu::upll_strncpy(if1->vex_link_name, if2->vex_link_name, - (kMaxLenVnodeName+1)); if1->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = - (copy_to_running)?UNC_VF_VALID_NO_VALUE:UNC_VF_VALID; + (copy_to_running)?UNC_VF_VALID_NO_VALUE:UNC_VF_VALID; if1->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = - (copy_to_running)?UNC_VF_VALID_NO_VALUE:UNC_VF_VALID; + (copy_to_running)?UNC_VF_VALID_NO_VALUE:UNC_VF_VALID; if1->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = - (copy_to_running)?UNC_VF_VALID_NO_VALUE:UNC_VF_VALID; + (copy_to_running)?UNC_VF_VALID_NO_VALUE:UNC_VF_VALID; } else { if ((UNC_VF_VALID == if1->valid[PFCDRV_IDX_VEXT_NAME_VBRIF]) && (UNC_VF_VALID == if2->valid[PFCDRV_IDX_VEXT_NAME_VBRIF])) if (!strcmp (reinterpret_cast(if1->vex_name), - reinterpret_cast(if2->vex_name))) + reinterpret_cast(if2->vex_name))) if1->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if ((UNC_VF_VALID == if1->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF]) && (UNC_VF_VALID == if2->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF])) if (!strcmp (reinterpret_cast(if1->vex_if_name), - reinterpret_cast(if2->vex_if_name))) + reinterpret_cast(if2->vex_if_name))) if1->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; if ((UNC_VF_VALID == if1->valid[PFCDRV_IDX_VLINK_NAME_VBRIF]) && (UNC_VF_VALID == if2->valid[PFCDRV_IDX_VLINK_NAME_VBRIF])) if (!strcmp (reinterpret_cast(if1->vex_link_name), - reinterpret_cast(if2->vex_link_name))) + reinterpret_cast(if2->vex_link_name))) if1->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } for (unsigned int loop = 0; loop < sizeof(val_vbr_if1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == val_vbr_if1->portmap.valid[loop] - && UNC_VF_VALID == val_vbr_if2->portmap.valid[loop]) - val_vbr_if1->portmap.valid[loop] = UNC_VF_VALID_NO_VALUE; + && UNC_VF_VALID == val_vbr_if2->portmap.valid[loop]) + val_vbr_if1->portmap.valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_INVALID != val_vbr_if1->valid[UPLL_IDX_DESC_VBRI]) { if (!copy_to_running || ((UNC_VF_VALID == val_vbr_if1->valid[UPLL_IDX_DESC_VBRI]) && - (!strcmp (reinterpret_cast(val_vbr_if1->description), - reinterpret_cast(val_vbr_if2->description))))) + (!strcmp(reinterpret_cast(val_vbr_if1->description), + reinterpret_cast(val_vbr_if2->description))))) val_vbr_if1->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_INVALID; } #if 1 // admin state val is needed to determine oper status if (val_vbr_if1->admin_status == val_vbr_if2->admin_status) val_vbr_if1->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; /* Driver cannot shutdown an unmapped vbrif */ - if (!copy_to_running && val_vbr_if1->valid[UPLL_IDX_PM_VBRI] == UNC_VF_INVALID) - val_vbr_if1->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_INVALID; + if (!copy_to_running && val_vbr_if1->valid[UPLL_IDX_PM_VBRI] == + UNC_VF_INVALID) + val_vbr_if1->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_INVALID; #endif if (val_vbr_if1->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID && val_vbr_if2->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { if (memcmp(&(val_vbr_if1->portmap), &(val_vbr_if2->portmap), - sizeof(val_port_map_t))) { - if (val_vbr_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID + sizeof(val_port_map_t))) { + if (val_vbr_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == + UNC_VF_VALID && val_vbr_if2->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID) { - if (!strcmp(reinterpret_cast(val_vbr_if1->portmap.logical_port_id), - reinterpret_cast(val_vbr_if2->portmap.logical_port_id))) - val_vbr_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + if (!strcmp(reinterpret_cast + (val_vbr_if1->portmap.logical_port_id), + reinterpret_cast + (val_vbr_if2->portmap.logical_port_id))) + val_vbr_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_vbr_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] != UNC_VF_INVALID - && val_vbr_if2->portmap.valid[UPLL_IDX_VLAN_ID_PM] != UNC_VF_INVALID) { + && val_vbr_if2->portmap.valid[UPLL_IDX_VLAN_ID_PM] != + UNC_VF_INVALID) { if (val_vbr_if1->portmap.vlan_id == val_vbr_if2->portmap.vlan_id) val_vbr_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } #if 1 if (val_vbr_if1->portmap.valid[UPLL_IDX_TAGGED_PM] != UNC_VF_INVALID - && val_vbr_if2->portmap.valid[UPLL_IDX_TAGGED_PM] != UNC_VF_INVALID) { + && val_vbr_if2->portmap.valid[UPLL_IDX_TAGGED_PM] != + UNC_VF_INVALID) { if (val_vbr_if1->portmap.tagged == val_vbr_if2->portmap.tagged) val_vbr_if1->portmap.valid[UPLL_IDX_TAGGED_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } #endif } else { val_vbr_if1->valid[UPLL_IDX_PM_VBRI] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; val_vbr_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; val_vbr_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; val_vbr_if1->portmap.valid[UPLL_IDX_TAGGED_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } } if (!copy_to_running) @@ -1763,12 +1848,13 @@ bool VbrIfMoMgr::CompareValidValue(void *&val1, void *val2, loop < sizeof(val_vbr_if1->valid) / sizeof(val_vbr_if1->valid[0]); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vbr_if1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vbr_if1->valid[loop])) { + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vbr_if1->valid[loop])) { if (loop == UPLL_IDX_PM_VBRI) { for (unsigned int i = 0; - i < sizeof(val_vbr_if1->portmap.valid) / sizeof(uint8_t); ++i) { + i < sizeof(val_vbr_if1->portmap.valid) / sizeof(uint8_t); ++i) { if ((UNC_VF_VALID == (uint8_t) val_vbr_if1->portmap.valid[i]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vbr_if1->portmap.valid[i])) { + (UNC_VF_VALID_NO_VALUE == (uint8_t) + val_vbr_if1->portmap.valid[i])) { invalid_attr = false; break; } @@ -1797,20 +1883,20 @@ upll_rc_t VbrIfMoMgr::IsReferenced(ConfigKeyVal *ikey, UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; if (NULL == ikey) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; upll_rc_t result_code = UPLL_RC_SUCCESS; result_code = GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKeyFailed %d", result_code); return result_code; } - + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; delete okey; return result_code; } @@ -1827,13 +1913,13 @@ upll_rc_t VbrIfMoMgr::IsReferenced(ConfigKeyVal *ikey, delete okey; #if 0 MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VLINK))); + (GetMoManager(UNC_KT_VLINK))); if (!mgr) { UPLL_LOG_DEBUG("Instance is NULL"); return UPLL_RC_ERR_GENERIC; } while (okey) { - // check with karthik + // check with karthik result_code = mgr->CheckVnodeInfo(okey, dt_type, dmi); if (UPLL_RC_SUCCESS == result_code) return UPLL_RC_ERR_CFG_SEMANTIC; @@ -1866,7 +1952,8 @@ upll_rc_t VbrIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(okey); return result_code; } - val_drv_vbr_if *val_drv_vbr = reinterpret_cast(GetVal(ikey)); + val_drv_vbr_if *val_drv_vbr = reinterpret_cast + (GetVal(ikey)); if (!val_drv_vbr) { UPLL_LOG_DEBUG("Val Vbr is Null"); DELETE_IF_NOT_NULL(okey); @@ -1875,11 +1962,12 @@ upll_rc_t VbrIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, uint8_t flag = 0; GET_USER_DATA_FLAGS(okey, flag); if ((val_drv_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) || - (val_drv_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID_NO_VALUE)) { + (val_drv_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == + UNC_VF_VALID_NO_VALUE)) { if (flag & VIF_TYPE) { DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("Interface is linked/bounded with Vlink. \ - Could not update Portmap"); + UPLL_LOG_DEBUG("Interface is linked/bounded with Vlink." + "Could not update Portmap"); return UPLL_RC_ERR_CFG_SEMANTIC; } result_code = UpdatePortMap(okey, datatype, dmi, ikey); @@ -1888,46 +1976,54 @@ upll_rc_t VbrIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, return result_code; } -upll_rc_t VbrIfMoMgr::UpdatePortMap( ConfigKeyVal *okey, - upll_keytype_datatype_t datatype, - DalDmlIntf *dmi, - ConfigKeyVal *ikey) { +upll_rc_t VbrIfMoMgr::UpdatePortMap(ConfigKeyVal *okey, + upll_keytype_datatype_t datatype, + DalDmlIntf *dmi, + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; MoMgrImpl *mgr = reinterpret_cast(const_cast( - GetMoManager(UNC_KT_VBRIF_FLOWFILTER))); + GetMoManager(UNC_KT_VBRIF_FLOWFILTER))); if (!mgr) { - UPLL_LOG_DEBUG("Invalid Instance"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid Instance"); + return UPLL_RC_ERR_GENERIC; } MoMgrImpl *pm_mgr = reinterpret_cast(const_cast( - GetMoManager(UNC_KT_VBRIF_POLICINGMAP))); + GetMoManager(UNC_KT_VBRIF_POLICINGMAP))); if (!pm_mgr) { - UPLL_LOG_DEBUG("Invalid Instance"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid Instance"); + return UPLL_RC_ERR_GENERIC; } - val_drv_vbr_if *val_drv_vbr = reinterpret_cast(GetVal(ikey)); - bool port_map_status = (val_drv_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID)? - true:false; + + NotifyPOMForPortMapInfo PortMapNotificationVal = kPortMapNoChange; + val_drv_vbr_if *val_drv_vbr = reinterpret_cast + (GetVal(ikey)); + bool port_map_status = (val_drv_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == + UNC_VF_VALID)? + true:false; if (port_map_status) { - val_drv_vbr_if *vbr_val_db = reinterpret_cast(GetVal(okey)); + val_drv_vbr_if *vbr_val_db = reinterpret_cast + (GetVal(okey)); if (!vbr_val_db) { UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; } if (vbr_val_db->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_INVALID) { /* portmap getting created for the first time */ - result_code = ConverttoDriverPortMap(ikey); + result_code = ConverttoDriverPortMap(ikey, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ConvertToDriverPortMap Failure %d", result_code); return result_code; } + // Set the PortMapNotificationVal Enum status to Portmap Created + // Which will be used to Notify the POM + PortMapNotificationVal = kPortMapCreated; } else { /* portmap already exists - only change in vlan/tagged */ val_drv_vbr->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_INVALID; val_drv_vbr->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_INVALID; val_drv_vbr->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_INVALID; - port_map_status = false; + PortMapNotificationVal = kPortMapUpdated; } } else { #if 0 @@ -1935,7 +2031,7 @@ upll_rc_t VbrIfMoMgr::UpdatePortMap( ConfigKeyVal *okey, port_map_valid_status = true; GET_USER_DATA_FLAGS(okey, rename); if ((rename & VLINK_VNODE1) || (rename & VLINK_VNODE2)) { - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } #endif val_drv_vbr->valid[PFCDRV_IDX_VAL_VBRIF] = UNC_VF_VALID_NO_VALUE; @@ -1943,54 +2039,72 @@ upll_rc_t VbrIfMoMgr::UpdatePortMap( ConfigKeyVal *okey, val_drv_vbr->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID_NO_VALUE; val_drv_vbr->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID_NO_VALUE; val_drv_vbr->vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID_NO_VALUE; uuu::upll_strncpy(val_drv_vbr->vbr_if_val.portmap.logical_port_id, - "\0", 1); + "\0", 1); val_drv_vbr->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] = - UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID_NO_VALUE; val_drv_vbr->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] = - UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID_NO_VALUE; val_drv_vbr->vbr_if_val.portmap.tagged = UPLL_VLAN_UNTAGGED; val_drv_vbr->vbr_if_val.portmap.vlan_id = 0; uuu::upll_strncpy(val_drv_vbr->vex_name, " ", (kMaxLenVnodeName+1)); uuu::upll_strncpy(val_drv_vbr->vex_if_name, " ", (kMaxLenVnodeName+1)); uuu::upll_strncpy(val_drv_vbr->vex_link_name, " ", (kMaxLenVnodeName+1)); - // TODO(karthi): any think inform to POM.. will call it from here - /* Info to POM */ + + // Set the PortMapNotificationVal Enum status to Portmap Deleted + // Which will be used to Notify the POM + PortMapNotificationVal = kPortMapDeleted; + // TODO(karthi): any think inform to POM.. will call it from here + /* Info to POM */ } - if (port_map_status == true ) { + // Notify POM only when PortMap is created or Deleted + if (PortMapNotificationVal == kPortMapCreated) { UPLL_LOG_DEBUG("Portmapstatus-true"); - result_code = mgr->SetVlinkPortmapConfiguration(okey, datatype, dmi, kPortMapConfigured, + result_code = mgr->SetVlinkPortmapConfiguration(okey, + datatype, + dmi, + kPortMapConfigured, UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", result_code); - return result_code; + UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", result_code); + return result_code; } - result_code = pm_mgr->SetVlinkPortmapConfiguration(okey, datatype, dmi, kPortMapConfigured, - UNC_OP_CREATE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", result_code); - delete okey; - return result_code; - } - } else { - UPLL_LOG_DEBUG("Portmapstatus-flase"); - result_code = mgr->SetVlinkPortmapConfiguration(okey, datatype, dmi, kVlinkPortMapNotConfigured, + result_code = pm_mgr->SetVlinkPortmapConfiguration(okey, + datatype, + dmi, + kPortMapConfigured, + UNC_OP_CREATE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", result_code); + return result_code; + } + } else if (PortMapNotificationVal == kPortMapDeleted) { + UPLL_LOG_DEBUG("Portmapstatus-false"); + result_code = mgr->SetVlinkPortmapConfiguration(okey, + datatype, + dmi, + kVlinkPortMapNotConfigured, UNC_OP_DELETE); if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", result_code); return result_code; - } - result_code = pm_mgr->SetVlinkPortmapConfiguration(okey, datatype, dmi, kVlinkPortMapNotConfigured, - UNC_OP_DELETE); - if (UPLL_RC_SUCCESS != result_code - && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", result_code); - return result_code; - } + } + result_code = pm_mgr->SetVlinkPortmapConfiguration( + okey, + datatype, + dmi, + kVlinkPortMapNotConfigured, + UNC_OP_DELETE); + if (UPLL_RC_SUCCESS != result_code + && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", result_code); + return result_code; + } } - result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)?UPLL_RC_SUCCESS:result_code; + result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == + result_code)?UPLL_RC_SUCCESS:result_code; return result_code; } @@ -2006,30 +2120,32 @@ upll_rc_t VbrIfMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { UPLL_LOG_DEBUG("Config Val is Null"); return UPLL_RC_ERR_GENERIC; } - while (cval ) { + while (cval) { if (IpctSt::kIpcStPfcdrvValVbrIf == cval->get_st_num()) { - val_vbr_if_t *vbr_if_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vbr_if_t))); - val_drv_vbr_if *vbr_drv_if_val = reinterpret_cast - (cval->get_val()); - memcpy(vbr_if_val, &(vbr_drv_if_val->vbr_if_val), + val_vbr_if_t *vbr_if_val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vbr_if_t))); + val_drv_vbr_if *vbr_drv_if_val = reinterpret_cast + (cval->get_val()); + memcpy(vbr_if_val, &(vbr_drv_if_val->vbr_if_val), sizeof(val_vbr_if_t)); - cval->SetVal(IpctSt::kIpcStValVbrIf, vbr_if_val); - /* do not display portmap info if not configured (for boundary)*/ - uint8_t vlink_flag = 0; - GET_USER_DATA_FLAGS(ikey, vlink_flag); - UPLL_LOG_DEBUG("Interface type %d", vlink_flag); - // set admin status to valid no value - if (vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_INVALID) - vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID_NO_VALUE; - if (vlink_flag & VIF_TYPE) - vbr_if_val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_INVALID; + cval->SetVal(IpctSt::kIpcStValVbrIf, vbr_if_val); + /* do not display portmap info if not configured (for boundary)*/ + uint8_t vlink_flag = 0; + GET_USER_DATA_FLAGS(ikey, vlink_flag); + UPLL_LOG_DEBUG("Interface type %d", vlink_flag); + // set admin status to valid no value + if (vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_INVALID) + vbr_if_val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = + UNC_VF_VALID_NO_VALUE; + if (vlink_flag & VIF_TYPE) + vbr_if_val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_INVALID; } if (IpctSt::kIpcStValVbrIfSt == cval->get_st_num()) { val_vbr_if_st *vbr_if_val_st = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vbr_if_st))); - val_db_vbr_if_st *db_vbr_if_val_st = reinterpret_cast - (cval->get_val()); + (ConfigKeyVal::Malloc(sizeof(val_vbr_if_st))); + val_db_vbr_if_st *db_vbr_if_val_st = reinterpret_cast + + (cval->get_val()); memcpy(vbr_if_val_st, &(db_vbr_if_val_st->vbr_if_val_st), sizeof(val_vbr_if_st)); cval->SetVal(IpctSt::kIpcStValVbrIfSt, vbr_if_val_st); @@ -2055,32 +2171,33 @@ upll_rc_t VbrIfMoMgr::GetVexternal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } val_drv_vbr_if *vbr_if_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); - //vbr_if_val->valid[UPLL_IDX_VBR_IF_DRV_PM] = UNC_VF_VALID; - //vbr_if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; - //vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); + // vbr_if_val->valid[UPLL_IDX_VBR_IF_DRV_PM] = UNC_VF_VALID; + // vbr_if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; + // vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; ikey->AppendCfgVal(IpctSt::kIpcStPfcdrvValVbrIf, vbr_if_val); /* Get the vbridgeIf instance from db */ DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; - switch (dt_type) { + switch (dt_type) { case UPLL_DT_CANDIDATE: case UPLL_DT_IMPORT: case UPLL_DT_RUNNING: - result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, - dmi, MAINTBL); - break; + case UPLL_DT_STATE: + result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, + dmi, MAINTBL); + break; case UPLL_DT_AUDIT: - result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, - dmi, MAINTBL); - break; + result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, + dmi, MAINTBL); + break; default: - UPLL_LOG_DEBUG("Invalid Datatype %d", dt_type); - return UPLL_RC_ERR_GENERIC; - break; + UPLL_LOG_DEBUG("Invalid Datatype %d", dt_type); + return UPLL_RC_ERR_GENERIC; + break; } - if (result_code != UPLL_RC_SUCCESS + if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("ReadConfiDB Failed: %d", result_code); return result_code; @@ -2092,22 +2209,23 @@ upll_rc_t VbrIfMoMgr::GetVexternal(ConfigKeyVal *ikey, if (vbrif_flag & VIF_TYPE_BOUNDARY) { iftype = kVlinkPortMapConfigured; // boundary } else if (vbrif_flag & VIF_TYPE_LINKED) { - iftype = kVlinkConfigured; //linked + iftype = kVlinkConfigured; // linked } - + vbr_if_val = reinterpret_cast + (GetVal(ikey)); if (vbr_if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { iftype = kPortMapConfigured; - if (vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]) { - if (!strlen(reinterpret_cast(vbr_if_val->vex_name))) - return UPLL_RC_ERR_GENERIC; - uuu::upll_strncpy(vexternal, vbr_if_val->vex_name, - (kMaxLenInterfaceName + 1)); - if (!strlen(reinterpret_cast(vbr_if_val->vex_if_name))) - return UPLL_RC_ERR_GENERIC; - uuu::upll_strncpy(vex_if, vbr_if_val->vex_if_name, - (kMaxLenInterfaceName + 1)); + if (vbr_if_val->vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]) { + if (!strlen(reinterpret_cast(vbr_if_val->vex_name))) + return UPLL_RC_ERR_GENERIC; + uuu::upll_strncpy(vexternal, vbr_if_val->vex_name, + (kMaxLenInterfaceName + 1)); + if (!strlen(reinterpret_cast(vbr_if_val->vex_if_name))) + return UPLL_RC_ERR_GENERIC; + uuu::upll_strncpy(vex_if, vbr_if_val->vex_if_name, + (kMaxLenInterfaceName + 1)); + } } - } } else { iftype = kVlinkPortMapNotConfigured; vexternal[0] = '\0'; @@ -2117,13 +2235,15 @@ upll_rc_t VbrIfMoMgr::GetVexternal(ConfigKeyVal *ikey, } -upll_rc_t VbrIfMoMgr::AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi) { +upll_rc_t VbrIfMoMgr::AuditUpdateController( + unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result = uud::kDalRcSuccess; @@ -2137,34 +2257,42 @@ upll_rc_t VbrIfMoMgr::AuditUpdateController(unc_key_type_t keytype, DalCursor *cursor = NULL; val_drv_vbr_if *drv_vbr_if = NULL; uint8_t *ctrlr = reinterpret_cast(const_cast(ctrlr_id)); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone}; unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); /* retreives the delta of running and audit configuration */ UPLL_LOG_DEBUG("Operation is %d", op); result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op, - ckv_running_db, ckv_audit_db, - &cursor, dmi, ctrlr, MAINTBL, true); + ckv_running_db, ckv_audit_db, + &cursor, dmi, ctrlr, MAINTBL, true); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("Skipping diff for opertaion %d", op); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + return UPLL_RC_SUCCESS;; + } if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return result_code; } - if (cursor == NULL) { - UPLL_LOG_DEBUG("cursor is null"); - return UPLL_RC_ERR_GENERIC; - } while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { UPLL_LOG_DEBUG("Diff Running Record: Operation: is %d\n %s\n", op, - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); /* ignore records of another controller for create and update operation */ if (phase != uuc::kUpllUcpDelete) { uint8_t *db_ctrlr = NULL; GET_USER_DATA_CTRLR(ckv_running_db, db_ctrlr); - UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", db_ctrlr, ctrlr_id); + UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", + db_ctrlr, + ctrlr_id); if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), - reinterpret_cast(ctrlr_id), - strlen(reinterpret_cast(ctrlr_id)) + 1)) + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast + (ctrlr_id)) + 1)) continue; } switch (phase) { @@ -2172,7 +2300,7 @@ upll_rc_t VbrIfMoMgr::AuditUpdateController(unc_key_type_t keytype, result_code = GetChildConfigKey(ckv_driver_req, ckv_running_db); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); return result_code; } if (ckv_driver_req->get_cfg_val()) { @@ -2180,13 +2308,13 @@ upll_rc_t VbrIfMoMgr::AuditUpdateController(unc_key_type_t keytype, return UPLL_RC_ERR_GENERIC; } result_code = ReadConfigDB(ckv_driver_req, UPLL_DT_AUDIT, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning error %d", result_code); return UPLL_RC_ERR_GENERIC; } drv_vbr_if = reinterpret_cast - (GetVal(ckv_driver_req)); + (GetVal(ckv_driver_req)); if (!drv_vbr_if) { UPLL_LOG_DEBUG("drv_vbr_if is NULL"); return UPLL_RC_ERR_GENERIC; @@ -2194,48 +2322,61 @@ upll_rc_t VbrIfMoMgr::AuditUpdateController(unc_key_type_t keytype, if (drv_vbr_if->vbr_if_val.valid[UPLL_IDX_PM_VBRI] != UNC_VF_VALID) { ckv_driver_req->DeleteCfgVal(); } else { - drv_vbr_if->valid[0] = UNC_VF_INVALID; - for (int i=0; i < 3 ; i++) { - if (drv_vbr_if->vbr_if_val.valid[i] != UNC_VF_INVALID) { - drv_vbr_if->valid[0] = UNC_VF_VALID; - break; + drv_vbr_if->valid[0] = UNC_VF_INVALID; + for (int i = 0; i < 3 ; i++) { + if (drv_vbr_if->vbr_if_val.valid[i] != UNC_VF_INVALID) { + drv_vbr_if->valid[0] = UNC_VF_VALID; + break; } } } break; case uuc::kUpllUcpCreate: - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", - result_code, phase); - return result_code; - } - break; + result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", + result_code, phase); + return result_code; + } + break; case uuc::kUpllUcpUpdate: - UPLL_LOG_DEBUG("Diff audit record is %s ", ckv_audit_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); - return result_code; - } - result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); - return result_code; - } - if (GetVal(ckv_driver_req) != NULL && + UPLL_LOG_DEBUG("Diff audit record is %s ", + ckv_audit_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record." + "err_code & phase %d %d", result_code, phase); + return result_code; + } + result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record." + "err_code & phase %d %d", result_code, phase); + return result_code; + } + if (GetVal(ckv_driver_req) != NULL && GetVal(ckv_audit_dup_db) != NULL) { - void *val1 = GetVal(ckv_driver_req); - if (FilterAttributes(val1, GetVal(ckv_audit_dup_db), false, - UNC_OP_UPDATE)) { - delete ckv_driver_req; - ckv_driver_req = NULL; - delete ckv_audit_dup_db; - ckv_audit_dup_db = NULL; - continue; + void *val1 = GetVal(ckv_driver_req); + if (FilterAttributes(val1, GetVal(ckv_audit_dup_db), false, + UNC_OP_UPDATE)) { + delete ckv_driver_req; + ckv_driver_req = NULL; + delete ckv_audit_dup_db; + ckv_audit_dup_db = NULL; + // Assuming that the diff found only in ConfigStatus + // Setting the value as OnlyCSDiff in the out + // parameter ctrlr_affected + // The value Configdiff should be given more priority + // than the value + // onlycs . + // So If the out parameter ctrlr_affected has already value as + // configdiff then dont change the value + if (*ctrlr_affected != uuc::kCtrlrAffectedConfigDiff) { + UPLL_LOG_INFO("Setting the ctrlr_affected to OnlyCSDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedOnlyCSDiff; } + continue; + } } break; default: @@ -2243,25 +2384,30 @@ upll_rc_t VbrIfMoMgr::AuditUpdateController(unc_key_type_t keytype, return UPLL_RC_ERR_NO_SUCH_OPERATION; break; } - if (phase == uuc::kUpllUcpUpdate || phase == uuc::kUpllUcpCreate) { - drv_vbr_if = reinterpret_cast - (GetVal(ckv_driver_req)); - drv_vbr_if->valid[0] = UNC_VF_INVALID; - for (int i=0; i < 3 ; i++) { + if (phase == uuc::kUpllUcpUpdate || phase == uuc::kUpllUcpCreate) { + drv_vbr_if = reinterpret_cast + (GetVal(ckv_driver_req)); + drv_vbr_if->valid[0] = UNC_VF_INVALID; + for (int i = 0; i < 3 ; i++) { if (drv_vbr_if->vbr_if_val.valid[i] != UNC_VF_INVALID) { - drv_vbr_if->valid[0] = UNC_VF_VALID; - break; + drv_vbr_if->valid[0] = UNC_VF_VALID; + break; } - } - } + } + } GET_USER_DATA_CTRLR_DOMAIN(ckv_driver_req, ctrlr_dom); if ((NULL == ctrlr_dom.ctrlr) || (NULL == ctrlr_dom.domain)) { UPLL_LOG_INFO("controller id or domain is NULL"); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; + ctrlr_dom.domain); + upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? + UPLL_DT_AUDIT : UPLL_DT_RUNNING; result_code = GetRenamedControllerKey(ckv_driver_req, dt_type, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -2283,82 +2429,134 @@ upll_rc_t VbrIfMoMgr::AuditUpdateController(unc_key_type_t keytype, ipc_req.header.operation = op; ipc_req.header.datatype = UPLL_DT_CANDIDATE; ipc_req.ckv_data = ckv_driver_req; - if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, reinterpret_cast - (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { + if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, + reinterpret_cast + (ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_response)) { UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv_driver_req->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); + ckv_driver_req->get_key_type(), reinterpret_cast + (ctrlr_dom.ctrlr)); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } - if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("driver return failure err_code is %d", ipc_response.header.result_code); + if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("driver return failure err_code is %d", + ipc_response.header.result_code); + result_code = AdaptValToVtnService(ckv_running_db); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_GENERIC) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", + result_code); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + dmi->CloseCursor(cursor, true); + delete ipc_response.ckv_data; + return result_code; + } + *err_ckv = ckv_running_db; + if (phase != uuc::kUpllUcpDelete) { ConfigKeyVal *resp = NULL; result_code = DupConfigKeyVal(resp, ipc_response.ckv_data); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for ipc response ckv err_code %d", - result_code); - delete ipc_response.ckv_data; - return result_code; + UPLL_LOG_DEBUG("DupConfigKeyVal failed for ipc" + "response ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + *err_ckv = NULL; + dmi->CloseCursor(cursor, true); + delete ipc_response.ckv_data; + return result_code; } - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, phase, resp); + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + phase, + resp, + dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Update Audit config status failed %d", - result_code); + result_code); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + *err_ckv = NULL; return result_code; } result_code = UpdateConfigDB(resp, UPLL_DT_RUNNING, UNC_OP_UPDATE, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response ckv err_code %d", - result_code); + UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response" + "ckv err_code %d", + result_code); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + *err_ckv = NULL; return result_code; } if (keytype == UNC_KT_VTN) { result_code = SetConsolidatedStatus(resp, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("SetConsolidatedStatus failed for ipc response ckv err_code %d", - result_code); + UPLL_LOG_DEBUG("SetConsolidatedStatus failed for ipc" + "response ckv err_code %d", + result_code); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(resp); + *err_ckv = NULL; return result_code; } } - if (resp) - delete resp; + DELETE_IF_NOT_NULL(resp); + } + return ipc_response.header.result_code; } DELETE_IF_NOT_NULL(ipc_response.ckv_data); - if (ckv_driver_req) - delete ckv_driver_req; - ckv_driver_req = NULL; - if (ckv_audit_dup_db) - delete ckv_audit_dup_db; - ckv_audit_dup_db = NULL; + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_audit_dup_db); - *ctrlr_affected = true; + // *ctrlr_affected = true; + if (*ctrlr_affected == uuc::kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Reset ctrlr state from OnlyCSDiff to ConfigDiff"); + } + UPLL_LOG_DEBUG("Setting the ctrlr_affected to ConfigDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedConfigDiff; } dmi->CloseCursor(cursor, true); if (uud::kDalRcSuccess != db_result) { - UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); - result_code = DalToUpllResCode(db_result); + UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); + result_code = DalToUpllResCode(db_result); } - if (ckv_running_db) - delete ckv_running_db; - if (ckv_audit_db) - delete ckv_audit_db; + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; + ? UPLL_RC_SUCCESS : result_code; return result_code; } upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS, driver_result = UPLL_RC_SUCCESS; DalResultCode db_result; @@ -2369,15 +2567,21 @@ upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, DalCursor *dal_cursor_handle = NULL; IpcResponse ipc_resp; unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - UNC_OP_DELETE); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + UNC_OP_DELETE); if (affected_ctrlr_set == NULL) - return UPLL_RC_ERR_GENERIC; - driver_result = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); + return UPLL_RC_ERR_GENERIC; + driver_result = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op, + req, + nreq, + &dal_cursor_handle, + dmi, + MAINTBL); while (driver_result == UPLL_RC_SUCCESS) { - // Get Next Record + // Get Next Record db_result = dmi->GetNextRecord(dal_cursor_handle); driver_result = DalToUpllResCode(db_result); if (driver_result != UPLL_RC_SUCCESS) @@ -2385,7 +2589,7 @@ upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, switch (op) { case UNC_OP_CREATE: case UNC_OP_UPDATE: - /* fall through intended */ + /* fall through intended */ result_code = DupConfigKeyVal(ck_main, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("DupConfigKeyVal failed %d", result_code); @@ -2395,16 +2599,16 @@ upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, return result_code; } break; - case UNC_OP_DELETE: - result_code = GetChildConfigKey(ck_main, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("GetChildConfigKey failed %d", result_code); - dmi->CloseCursor(dal_cursor_handle, true); - delete req; - return result_code; - } - default: - break; + case UNC_OP_DELETE: + result_code = GetChildConfigKey(ck_main, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("GetChildConfigKey failed %d", result_code); + dmi->CloseCursor(dal_cursor_handle, true); + delete req; + return result_code; + } + default: + break; } GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); if (ctrlr_dom.ctrlr == NULL) { @@ -2416,26 +2620,26 @@ upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, uint8_t bound_vlink = 0; GET_USER_DATA_FLAGS(ck_main, bound_vlink); if (op == UNC_OP_DELETE) { - if (ck_main->get_cfg_val()) { - UPLL_LOG_DEBUG("Invalid param"); - delete ck_main; - delete req; - return UPLL_RC_ERR_GENERIC; - } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(ck_main, UPLL_DT_RUNNING, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - delete ck_main; - delete req; - return UPLL_RC_ERR_GENERIC; - } - val_drv_vbr_if_t *val_vbr = reinterpret_cast + if (ck_main->get_cfg_val()) { + UPLL_LOG_DEBUG("Invalid param"); + delete ck_main; + delete req; + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone}; + result_code = ReadConfigDB(ck_main, UPLL_DT_RUNNING, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + delete ck_main; + delete req; + return UPLL_RC_ERR_GENERIC; + } + val_drv_vbr_if_t *val_vbr = reinterpret_cast (GetVal(ck_main)); - if (val_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] != UNC_VF_VALID) { - ck_main->DeleteCfgVal(); - } + if (val_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] != UNC_VF_VALID) { + ck_main->DeleteCfgVal(); + } } if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { void *main = GetVal(ck_main); @@ -2448,122 +2652,143 @@ upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, UPLL_LOG_TRACE("%s", ck_main->ToStrAll().c_str()); } val_drv_vbr_if *vbr_ifval = reinterpret_cast - (GetVal(ck_main)); + (GetVal(ck_main)); if (vbr_ifval) { vbr_ifval->valid[0] = UNC_VF_INVALID; - for (int i=0; i < 3 ; i++) { + for (int i = 0; i < 3 ; i++) { if (vbr_ifval->vbr_if_val.valid[i] != UNC_VF_INVALID) { vbr_ifval->valid[0] = UNC_VF_VALID; break; } } - //for (int i=1; i < 4 ; i++) + // for (int i=1; i < 4 ; i++) // vbr_ifval->valid[i] = vbr_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI]; switch (vbr_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI]) { - case UNC_VF_VALID_NO_VALUE : - { - UPLL_LOG_TRACE("entering valid-no-value"); - val_drv_vbr_if *oval_vbrif = reinterpret_cast - (GetVal(nreq)); - if (!oval_vbrif) { - UPLL_LOG_DEBUG("Invalid param"); - delete req; - DELETE_IF_NOT_NULL(nreq); - DELETE_IF_NOT_NULL(ck_main); - return UPLL_RC_ERR_GENERIC; - } - vbr_ifval->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; - vbr_ifval->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; - vbr_ifval->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(vbr_ifval->vex_name, oval_vbrif->vex_name, - kMaxLenVnodeName+1); - uuu::upll_strncpy(vbr_ifval->vex_if_name, oval_vbrif->vex_if_name, - kMaxLenVnodeName+1); - uuu::upll_strncpy(vbr_ifval->vex_link_name, oval_vbrif->vex_link_name, - kMaxLenVnodeName+1); - break; - } - case UNC_VF_VALID: - { - // if it is update operation where only the logicalport/vlanid/tag is getting updated - // set vex/vexif/vexlink to invalid - val_drv_vbr_if *db_ifval = NULL; - db_ifval = (op != UNC_OP_UPDATE) ? - reinterpret_cast(GetVal(ck_main)): - reinterpret_cast(GetVal(nreq)); - if (!db_ifval) { - UPLL_LOG_TRACE("Invalid param"); - delete req; - DELETE_IF_NOT_NULL(nreq); - DELETE_IF_NOT_NULL(ck_main); - return UPLL_RC_ERR_GENERIC; - } - if (op == UNC_OP_DELETE) { - if ((db_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) && - (db_ifval->vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] - == UNC_VF_VALID)) { - /* portmap is updated - fill in vex, vexlink - - vexif set to invalid for portmap update - */ + case UNC_VF_VALID_NO_VALUE : + { + UPLL_LOG_TRACE("entering valid-no-value"); + val_drv_vbr_if *oval_vbrif = reinterpret_cast + (GetVal(nreq)); + if (!oval_vbrif) { + UPLL_LOG_DEBUG("Invalid param"); + delete req; + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(ck_main); + return UPLL_RC_ERR_GENERIC; + } vbr_ifval->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(vbr_ifval->vex_name, db_ifval->vex_name, - kMaxLenVnodeName+1); - vbr_ifval->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_INVALID; + vbr_ifval->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; vbr_ifval->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(vbr_ifval->vex_link_name, db_ifval->vex_link_name, - kMaxLenVnodeName+1); - if (vbr_ifval->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) { - if (vbr_ifval->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_INVALID) { - vbr_ifval->vbr_if_val.portmap.vlan_id = db_ifval->vbr_if_val.portmap.vlan_id; - vbr_ifval->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; + uuu::upll_strncpy(vbr_ifval->vex_name, oval_vbrif->vex_name, + kMaxLenVnodeName+1); + uuu::upll_strncpy(vbr_ifval->vex_if_name, oval_vbrif->vex_if_name, + kMaxLenVnodeName+1); + uuu::upll_strncpy(vbr_ifval->vex_link_name, + oval_vbrif->vex_link_name, + kMaxLenVnodeName+1); + break; + } + case UNC_VF_VALID: + { + // if it is update operation where only + // the logicalport/vlanid/tag is getting updated + // set vex/vexif/vexlink to invalid + val_drv_vbr_if *db_ifval = NULL; + db_ifval = (op != UNC_OP_UPDATE) ? + reinterpret_cast(GetVal(ck_main)): + reinterpret_cast(GetVal(nreq)); + if (!db_ifval) { + UPLL_LOG_TRACE("Invalid param"); + delete req; + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(ck_main); + return UPLL_RC_ERR_GENERIC; + } + if (op == UNC_OP_DELETE) { + if ((db_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == + UNC_VF_VALID) && + (db_ifval-> + vbr_if_val.portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] + == UNC_VF_VALID)) { + /* portmap is updated - fill in vex, vexlink - + vexif set to invalid for portmap update + */ + vbr_ifval->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(vbr_ifval->vex_name, db_ifval->vex_name, + kMaxLenVnodeName+1); + vbr_ifval->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = + UNC_VF_INVALID; + vbr_ifval->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(vbr_ifval->vex_link_name, + db_ifval->vex_link_name, + kMaxLenVnodeName+1); + if (vbr_ifval->vbr_if_val.portmap.valid[UPLL_IDX_TAGGED_PM] == + UNC_VF_VALID) { + if (vbr_ifval-> + vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] == + UNC_VF_INVALID) { + vbr_ifval->vbr_if_val.portmap.vlan_id = + db_ifval->vbr_if_val.portmap.vlan_id; + vbr_ifval->vbr_if_val.portmap.valid[UPLL_IDX_VLAN_ID_PM] = + UNC_VF_VALID; + } + } } } - } - } - if (op == UNC_OP_UPDATE) { - if (vbr_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_INVALID) { - /* set port admin status to disable */ - if ((db_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] == UNC_VF_VALID) && - (db_ifval->vbr_if_val.admin_status == UPLL_ADMIN_DISABLE)) { - vbr_ifval->vbr_if_val.admin_status = UPLL_ADMIN_DISABLE; - vbr_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID; - } - } - } - break; - } - default: - break; + if (op == UNC_OP_UPDATE) { + if (vbr_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] == + UNC_VF_INVALID) { + /* set port admin status to disable */ + if ((db_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] == + UNC_VF_VALID) && + (db_ifval->vbr_if_val.admin_status == + UPLL_ADMIN_DISABLE)) { + vbr_ifval->vbr_if_val.admin_status = UPLL_ADMIN_DISABLE; + vbr_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = + UNC_VF_VALID; + } + } + } + break; + } + default: + break; } } UPLL_LOG_TRACE("%s", ck_main->ToStrAll().c_str()); + upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? + UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; if (!OVERLAY_KT(keytype)) { - upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? - UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; result_code = GetRenamedControllerKey(ck_main, dt_type, - dmi, &ctrlr_dom); + dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) break; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); // Inserting the controller to Set affected_ctrlr_set->insert - (string(reinterpret_cast(ctrlr_dom.ctrlr))); - driver_result = SendIpcReq(session_id, config_id, op, - UPLL_DT_CANDIDATE, ck_main, &ctrlr_dom, &ipc_resp); - if (driver_result == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + (string(reinterpret_cast(ctrlr_dom.ctrlr))); + driver_result = SendIpcReq(session_id, + config_id, + op, + UPLL_DT_CANDIDATE, + ck_main, + &ctrlr_dom, + &ipc_resp); + if (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED) { driver_result = UPLL_RC_SUCCESS; UPLL_LOG_DEBUG("Controller disconnected"); } if (driver_result != UPLL_RC_SUCCESS) { ConfigKeyVal *ck_vlink = NULL; /* Validating if VbridgeIf is a node for Vlink */ - if ((bound_vlink & VIF_TYPE_BOUNDARY) == 0x0) + if ((bound_vlink & VIF_TYPE_BOUNDARY) == 0x0) { + SET_USER_DATA_CTRLR(ipc_resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = ipc_resp.ckv_data; - else { + } else { VlinkMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VLINK))); + (const_cast(GetMoManager(UNC_KT_VLINK))); vn_if_type iftype; if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); @@ -2572,25 +2797,42 @@ upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, return UPLL_RC_ERR_GENERIC; } ConfigKeyVal *ck_vif = NULL; - result_code = GetChildConfigKey(ck_vif,req); + result_code = GetChildConfigKey(ck_vif, req); result_code = mgr->CheckIfMemberOfVlink(ck_vif, - UPLL_DT_CANDIDATE, ck_vlink, dmi, iftype); + UPLL_DT_CANDIDATE, + ck_vlink, + dmi, + iftype); DELETE_IF_NOT_NULL(ck_vif); if (result_code == UPLL_RC_SUCCESS) { delete ipc_resp.ckv_data; + SET_USER_DATA_CTRLR(ck_vlink, ctrlr_dom.ctrlr); *err_ckv = ck_vlink; break; } else { + SET_USER_DATA_CTRLR(ipc_resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = ipc_resp.ckv_data; if (ck_vlink) delete ck_vlink; UPLL_LOG_DEBUG("Failed to map boundary if to vlink"); } } if (*err_ckv) { + result_code = GetRenamedUncKey(*err_ckv, dt_type, dmi, + ctrlr_dom.ctrlr); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", result_code); + delete req; + DELETE_IF_NOT_NULL(nreq); + return result_code; + } + result_code = AdaptValToVtnService(*err_ckv); - if (result_code != UPLL_RC_SUCCESS) { + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_GENERIC) { + // If no val structure, ignore error UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", - result_code); + result_code); delete req; DELETE_IF_NOT_NULL(nreq); return result_code; @@ -2608,26 +2850,30 @@ upll_rc_t VbrIfMoMgr::TxUpdateController(unc_key_type_t keytype, delete req; if (nreq) delete nreq; - driver_result = (driver_result == UPLL_RC_ERR_NO_SUCH_INSTANCE)?UPLL_RC_SUCCESS:driver_result; + driver_result = (driver_result == + UPLL_RC_ERR_NO_SUCH_INSTANCE)?UPLL_RC_SUCCESS:driver_result; return driver_result; } upll_rc_t VbrIfMoMgr::PortStatusHandler(const char *ctrlr_name, - const char *domain_name, const char *portid, - bool oper_status, DalDmlIntf *dmi ) { + const char *domain_name, + const char *portid, + bool oper_status, + DalDmlIntf *dmi ) { UPLL_FUNC_TRACE; - UPLL_LOG_TRACE("controller_name is : (%s) portid :(%s) domain_id :(%s) oper_status :(%d)", - ctrlr_name, portid, domain_name, oper_status); + UPLL_LOG_TRACE("controller_name is : (%s) portid :(%s) domain_id" + ":(%s) oper_status :(%d)", + ctrlr_name, portid, domain_name, oper_status); upll_rc_t result_code = UPLL_RC_SUCCESS; /* Allocate Memory for UNC_KT_VBR_IF key and value structure */ val_drv_vbr_if *vbrif_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); val_port_map *pm = &vbrif_val->vbr_if_val.portmap; (vbrif_val->vbr_if_val).valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; /* Copy port_id from input to port_id variable in portmap structure */ uuu::upll_strncpy(pm->logical_port_id, portid, - (kMaxLenPortName + 1)); + (kMaxLenLogicalPortId + 1)); /* set valid flag as VALID */ pm->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; @@ -2643,17 +2889,25 @@ upll_rc_t VbrIfMoMgr::PortStatusHandler(const char *ctrlr_name, SET_USER_DATA_CTRLR(vbrifkey, ctrlr_name); SET_USER_DATA_DOMAIN(vbrifkey, domain_name); state_notification notification = - (oper_status == UPLL_OPER_STATUS_UP) ? kPortFaultReset : kPortFault; + (oper_status == UPLL_OPER_STATUS_UP) ? kPortFaultReset : kPortFault; // vlinked interfaces should not be handled - result_code = UpdateOperStatus(vbrifkey, dmi, notification, false, false, false); + result_code = UpdateOperStatus(vbrifkey, + dmi, + notification, + false, + false, + false); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Invalid oper status update %d", result_code); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) + result_code = UPLL_RC_SUCCESS; + else + UPLL_LOG_DEBUG("Invalid oper status update %d", result_code); DELETE_IF_NOT_NULL(vbrifkey); return result_code; } if (notification == kPortFaultReset) { VnodeMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBRIDGE))); + (const_cast(GetMoManager(UNC_KT_VBRIDGE))); if (!mgr) { UPLL_LOG_DEBUG("Returning error\n"); DELETE_IF_NOT_NULL(vbrifkey); @@ -2665,9 +2919,9 @@ upll_rc_t VbrIfMoMgr::PortStatusHandler(const char *ctrlr_name, DELETE_IF_NOT_NULL(vbrifkey); return result_code; } - + VtnMoMgr *vtn_mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); + (const_cast(GetMoManager(UNC_KT_VTN))); if (!vtn_mgr) { UPLL_LOG_DEBUG("Returning error\n"); DELETE_IF_NOT_NULL(vbrifkey); @@ -2695,26 +2949,27 @@ upll_rc_t VbrIfMoMgr::GetVbrIfFromVExternal(uint8_t *vtn_name, return UPLL_RC_ERR_GENERIC; } key_vbr_if_t *key_vbrif = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); uuu::upll_strncpy(key_vbrif->vbr_key.vtn_key.vtn_name, - vtn_name, (kMaxLenVtnName + 1)); + vtn_name, (kMaxLenVtnName + 1)); val_drv_vbr_if_t *drv_val_vbrif = static_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if_t))); + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if_t))); drv_val_vbrif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; uuu::upll_strncpy(drv_val_vbrif->vex_name, - vext_name, (kMaxLenVnodeName + 1)); + vext_name, (kMaxLenVnodeName + 1)); tmpckv = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key_vbrif, - new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, drv_val_vbrif)); + new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, + drv_val_vbrif)); if (tmpckv == NULL) { free(key_vbrif); free(drv_val_vbrif); return UPLL_RC_ERR_GENERIC; } result_code = ReadConfigDB(tmpckv, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("vbrif ReadConfigDB Failed result_code - %d", - result_code); + result_code); } UPLL_LOG_DEBUG("tmpckv is %s", tmpckv->ToStrAll().c_str()); return result_code; @@ -2750,12 +3005,13 @@ upll_rc_t VbrIfMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ikey, } if (vbrif_val->valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { val_drv_vbr_if *drv_if_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); val_vbr_if_t *if_val = &drv_if_val->vbr_if_val; - if (vbrif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID) { + if (vbrif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == + UNC_VF_VALID) { uuu::upll_strncpy(if_val->portmap.logical_port_id, - vbrif_val->portmap.logical_port_id, - kMaxLenLogicalPortId+1); + vbrif_val->portmap.logical_port_id, + kMaxLenLogicalPortId+1); if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; if_val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; } @@ -2763,34 +3019,34 @@ upll_rc_t VbrIfMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ikey, if (vbrif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { if_val->portmap.vlan_id = vbrif_val->portmap.vlan_id; if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = - vbrif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM]; + vbrif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM]; } if ((vbrif_val->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) || (vbrif_val->portmap.valid[UPLL_IDX_TAGGED_PM] == - UNC_VF_VALID_NO_VALUE)) { + UNC_VF_VALID_NO_VALUE)) { if_val->portmap.tagged = vbrif_val->portmap.tagged; if_val->portmap.valid[UPLL_IDX_TAGGED_PM] = - vbrif_val->portmap.valid[UPLL_IDX_TAGGED_PM]; + vbrif_val->portmap.valid[UPLL_IDX_TAGGED_PM]; } #endif ckv_vbrif->AppendCfgVal(IpctSt::kIpcStPfcdrvValVbrIf, drv_if_val); SET_USER_DATA(ckv_vbrif, ikey); DbSubOp dbop = { kOpReadMultiple, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag}; + kOpInOutFlag}; result_code = ReadConfigDB(ckv_vbrif, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { ConfigKeyVal *tmp = ckv_vbrif; while (tmp) { if (!memcmp(ikey->get_key(), tmp->get_key(), - sizeof(key_vbr_if_t))) { + sizeof(key_vbr_if_t))) { UPLL_LOG_TRACE("Looking on the Same key"); } else { bool match = false; val_vbr_if_t *if_val = &reinterpret_cast - (GetVal(tmp))->vbr_if_val; + (GetVal(tmp))->vbr_if_val; if (vbrif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] - == UNC_VF_VALID) { + == UNC_VF_VALID) { if (if_val->portmap.vlan_id == vbrif_val->portmap.vlan_id) { if (if_val->portmap.tagged == vbrif_val->portmap.tagged) match = true; @@ -2799,8 +3055,9 @@ upll_rc_t VbrIfMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ikey, if (if_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { if (if_val->portmap.tagged == vbrif_val->portmap.tagged) match = true; - } else - match = true; + } else { + match = true; + } } if (match) { UPLL_LOG_DEBUG("More than one vbridge interface is configured " @@ -2821,28 +3078,28 @@ upll_rc_t VbrIfMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ikey, } upll_rc_t VbrIfMoMgr::PathFaultHandler(const char *ctrlr_name, - const char *domain_id, - std::vector &ingress_ports, - std::vector &egress_ports, - bool alarm_asserted, - DalDmlIntf *dmi) { + const char *domain_id, + std::vector &ingress_ports, + std::vector &egress_ports, + bool alarm_asserted, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("Alarm_asserted is %d", alarm_asserted); upll_rc_t result_code = UPLL_RC_SUCCESS; set sw1_vbridge_set, - sw2_vbridge_set; + sw2_vbridge_set; set::iterator vbridge1set_itr, - vbridge2set_itr; + vbridge2set_itr; set vnode_set; set::iterator vnodeset_itr; set vlink_set; set boundary_if_set; state_notification notification = (alarm_asserted == UPLL_OPER_STATUS_UP) ? - kPathFault : kPathFaultReset; + kPathFault : kPathFaultReset; std::vector::size_type ingress_size = ingress_ports.size(); - for (uint8_t port_count = 0; port_count < ingress_size; port_count++) { + for (uint32_t port_count = 0; port_count < ingress_size; port_count++) { UPLL_LOG_DEBUG("ingress port : %s", ingress_ports[port_count].c_str()); /* Get all the vbridges connected to sw1*/ @@ -2856,7 +3113,7 @@ upll_rc_t VbrIfMoMgr::PathFaultHandler(const char *ctrlr_name, } std::vector::size_type egress_size = egress_ports.size(); - for (uint8_t port_count = 0; port_count < egress_size; port_count++) { + for (uint32_t port_count = 0; port_count < egress_size; port_count++) { UPLL_LOG_DEBUG("egress port : %s", egress_ports[port_count].c_str()); /* Get all the vbridges connected to sw2*/ @@ -2871,11 +3128,10 @@ upll_rc_t VbrIfMoMgr::PathFaultHandler(const char *ctrlr_name, /* Iterating through all the vbridges in the vbridge1 set*/ for (vbridge1set_itr = sw1_vbridge_set.begin(); - vbridge1set_itr != sw1_vbridge_set.end(); ) { - + vbridge1set_itr != sw1_vbridge_set.end(); ) { /* Get the connected topology of each vbridge in sw1_vbridge set */ VlinkMoMgr *vlink_mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VLINK))); + (const_cast(GetMoManager(UNC_KT_VLINK))); key_vnode_type temp_vnode_key = *vbridge1set_itr++; key_vnode_type src_vnode_key; @@ -2886,34 +3142,34 @@ upll_rc_t VbrIfMoMgr::PathFaultHandler(const char *ctrlr_name, /* Iterating through all the vbridges in the vbridge2 set*/ for (vbridge2set_itr = sw2_vbridge_set.begin(); - vbridge2set_itr != sw2_vbridge_set.end(); ) { + vbridge2set_itr != sw2_vbridge_set.end(); ) { /* check if any vbridge in sw2_vbridge set belongs to connected topology - of a vbridge in sw1_vbridge set */ + of a vbridge in sw1_vbridge set */ key_vnode_type_t vn = *vbridge2set_itr++; vnodeset_itr = vnode_set.find(vn); /* If the vbridge in sw2_vbridge set belongs to the connected toplogy - of the vbridge in sw1_vbridge set update the path fault status of - the corresponding vnodes in the connected topology of the src vbridge - in sw1_vbridge set */ + of the vbridge in sw1_vbridge set update the path fault status of + the corresponding vnodes in the connected topology of the src vbridge + in sw1_vbridge set */ if (vnodeset_itr == vnode_set.end()) continue; result_code = vlink_mgr->UpdateVlinkOperStatusUsingVlinkSet( - &vlink_set, dmi, notification); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Operstatus updation failed"); + &vlink_set, dmi, notification); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Operstatus updation failed"); return result_code; } set::iterator vnode_set_iter; set::iterator vnode_set_end = - vnode_set.end(); + vnode_set.end(); for (vnode_set_iter = vnode_set.begin(); vnode_set_iter != vnode_set_end; ++vnode_set_iter) { - VnodeChildMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager((*vnode_set_iter).key_type))); + VnodeChildMoMgr *mgr = reinterpret_cast + (const_cast(GetMoManager((*vnode_set_iter).key_type))); result_code = mgr->SetLinkedIfOperStatusforPathFault(*vnode_set_iter, notification, dmi); @@ -2924,19 +3180,19 @@ upll_rc_t VbrIfMoMgr::PathFaultHandler(const char *ctrlr_name, } result_code = SetBoundaryIfOperStatusforPathFault( - boundary_if_set, notification, dmi); + boundary_if_set, notification, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Errorin updating Operstatus for Pathfault"); return result_code; } /*remove the vnodes whose oper status is updated from sw2_vbridge_set and - from sw1_vbridge_set*/ + from sw1_vbridge_set*/ for (vnodeset_itr = vnode_set.begin(); vnodeset_itr != vnode_set_end;) { key_vnode_type_t vn = *vnodeset_itr++; key_vnode_type_t vn1 = *vbridge2set_itr; - if (memcmp(&vn, &vn1 ,sizeof(key_vnode_type_t)) == 0) + if (memcmp(&vn, &vn1 , sizeof(key_vnode_type_t)) == 0) vbridge2set_itr++; sw2_vbridge_set.erase(vn); vn1 = *vbridge1set_itr; @@ -2955,10 +3211,10 @@ upll_rc_t VbrIfMoMgr::PathFaultHandler(const char *ctrlr_name, /*This function gives the bridges connected to a particular switch log port*/ upll_rc_t VbrIfMoMgr::GetMappedVbridges( - const char *ctrlr_name, - const char *domain_id, - std::string logportid, DalDmlIntf *dmi, - set *sw_vbridge_set) { + const char *ctrlr_name, + const char *domain_id, + std::string logportid, DalDmlIntf *dmi, + set *sw_vbridge_set) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ck_vbr_if = NULL; @@ -2989,13 +3245,17 @@ upll_rc_t VbrIfMoMgr::GetMappedVbridges( vbr_if_val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; vbr_if_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; uuu::upll_strncpy(vbr_if_val->portmap.logical_port_id, logportid.c_str(), - (kMaxLenPortName + 1)); + (kMaxLenLogicalPortId + 1)); /* Get all the vbridges under the VTN */ DbSubOp dbop = { kOpReadMultiple, - kOpMatchCtrlr | kOpMatchDomain, - kOpInOutNone }; - result_code = ReadConfigDB(ck_vbr_if, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutNone }; + result_code = ReadConfigDB(ck_vbr_if, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, MAINTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { DELETE_IF_NOT_NULL(ck_vbr_if); @@ -3007,9 +3267,9 @@ upll_rc_t VbrIfMoMgr::GetMappedVbridges( } /* populate sw_vbridge set with vbridges mapped to the specified switch*/ key_vbr_if_t *tkey = reinterpret_cast - (ck_vbr_if->get_key()); + (ck_vbr_if->get_key()); key_vbr_t *vbr_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_t))); uuu::upll_strncpy(vbr_key->vbridge_name, tkey->vbr_key.vbridge_name, (kMaxLenVnodeName + 1)); uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, @@ -3025,13 +3285,13 @@ upll_rc_t VbrIfMoMgr::GetMappedVbridges( } upll_rc_t VbrIfMoMgr::GetBoundaryInterfaces(key_vnode_if_t boundary_if, - DalDmlIntf *dmi, - ConfigKeyVal *&iokey) { + DalDmlIntf *dmi, + ConfigKeyVal *&iokey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; GetChildConfigKey(iokey, NULL); key_vnode_if *vnode_if_key = reinterpret_cast - (iokey->get_key()); + (iokey->get_key()); memcpy(vnode_if_key, &boundary_if, sizeof(key_vnode_if)); /* Get all the vbridges under the VTN */ @@ -3042,12 +3302,12 @@ upll_rc_t VbrIfMoMgr::GetBoundaryInterfaces(key_vnode_if_t boundary_if, } upll_rc_t VbrIfMoMgr::SetBoundaryIfOperStatusforPathFault( - const set &boundary_if_set, - state_notification notification, - DalDmlIntf *dmi) { + const set &boundary_if_set, + state_notification notification, + DalDmlIntf *dmi) { set::iterator boundary_if_set_iter; set::iterator boundary_if_set_end = - boundary_if_set.end(); + boundary_if_set.end(); ConfigKeyVal *ck_boundary_if = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -3063,7 +3323,7 @@ upll_rc_t VbrIfMoMgr::SetBoundaryIfOperStatusforPathFault( return result_code; } while (ck_boundary_if != NULL) { - ConfigKeyVal *ckv_tmp = ck_boundary_if; + ConfigKeyVal *ckv_tmp = ck_boundary_if; ck_boundary_if = ck_boundary_if->get_next_cfg_key_val(); result_code = UpdateOperStatus(ckv_tmp, dmi, notification, true, false, false); @@ -3089,16 +3349,16 @@ upll_rc_t VbrIfMoMgr::RestoreUnInitOPerStatus(DalDmlIntf *dmi) { count++) { if (key_type[count] == UNC_KT_VTN) { vtn_mgr = reinterpret_cast - (const_cast(GetMoManager(key_type[count]))); + (const_cast(GetMoManager(key_type[count]))); result_code = vtn_mgr->TxUpdateDtState(key_type[count], 0, 0, dmi); } else { vnode_mgr = reinterpret_cast - (const_cast(GetMoManager(key_type[count]))); - result_code = vnode_mgr->TxUpdateDtState(key_type[count], 0, 0, dmi); + (const_cast(GetMoManager(key_type[count]))); + result_code = vnode_mgr->TxUpdateDtState(key_type[count], 0, 0, dmi); } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("failed to update vnode oper status %d\n", result_code); - // DELETE_IF_NOT_NULL(ck_vnode_if); + // DELETE_IF_NOT_NULL(ck_vnode_if); return result_code; } } diff --git a/coordinator/modules/upll/vbr_if_momgr.hh b/coordinator/modules/upll/vbr_if_momgr.hh index f3fc7938..a9b03600 100644 --- a/coordinator/modules/upll/vbr_if_momgr.hh +++ b/coordinator/modules/upll/vbr_if_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -13,6 +13,7 @@ #include #include #include +#include #include "momgr_impl.hh" #include "vnode_child_momgr.hh" #include "vlink_momgr.hh" @@ -21,10 +22,10 @@ namespace upll { namespace kt_momgr { #if 0 -enum vbr_if_numbers { - VBR_IF_1 = 0x80, - VBR_IF_2 = 0x40 -}; + enum vbr_if_numbers { + VBR_IF_1 = 0x80, + VBR_IF_2 = 0x40 + }; #endif @@ -33,397 +34,398 @@ enum vbr_if_numbers { #define INTERFACE_TYPE_BOUNDARY 0xC0 #define INTERFACE_TYPE_LINKED 0x30 -enum if_type { - kUnboundInterface = 0x0, - kMappedInterface, - kBoundaryInterface, - kLinkedInterface -}; + enum if_type { + kUnboundInterface = 0x0, + kMappedInterface, + kBoundaryInterface, + kLinkedInterface + }; #endif -/*TODO remove when including driver header file */ -typedef struct val_drv_vbr_if { - val_vbr_if_t vbr_if_val; - uint8_t vex_name[32]; - uint8_t vex_if_name[32]; - uint8_t vex_link_name[32]; - uint8_t valid[4]; -} val_drv_vbr_if_t; - - -class VbrIfMoMgr : public VnodeChildMoMgr { - private: - static unc_key_type_t vbr_if_child[]; - static BindInfo vbr_if_bind_info[]; - static BindInfo key_vbr_if_maintbl_bind_info[]; - - /* @brief Returns admin and portmap information if portmap is - * valid. Else returns NULL for portmap - * - * @param[in] ikey Pointer to ConfigKeyVal - * @param[out] valid_pm portmap is valid - * @param[out] pm pointer to portmap informtation if valid_pm - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, - val_port_map_t *&pm, uint8_t &valid_admin, - uint8_t &admin_status) { - UPLL_FUNC_TRACE; - if (ikey == NULL) return UPLL_RC_ERR_GENERIC; - val_drv_vbr_if *drv_vbrif = reinterpret_cast - (GetVal(ikey)); - if (!drv_vbrif) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - val_vbr_if *ifval = &drv_vbrif->vbr_if_val; - valid_pm = ifval->valid[UPLL_IDX_PM_VBRI]; - if (valid_pm == UNC_VF_VALID) - pm = &ifval->portmap; - else - pm = NULL; - valid_admin = ifval->valid[UPLL_IDX_ADMIN_STATUS_VBRI]; - admin_status = ifval->admin_status; - return UPLL_RC_SUCCESS; - } - - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vbridge_interface::kDbiOperStatus: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_OPER_STATUS_VBRIS]; - break; - case uudst::vbridge_interface::kDbiDownCount: - valid = NULL; - break; - case uudst::vbridge_interface::kDbiAdminStatus: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_ADMIN_STATUS_VBRI]; - break; - case uudst::vbridge_interface::kDbiDesc: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DESC_VBRI]; - break; - case uudst::vbridge_interface::kDbiValidPortMap: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_PM_VBRI]; - break; - case uudst::vbridge_interface::kDbiLogicalPortId: - valid = &(reinterpret_cast(val))->portmap. - valid[UPLL_IDX_LOGICAL_PORT_ID_PM]; - break; - case uudst::vbridge_interface::kDbiVlanId: - valid = &(reinterpret_cast(val))->portmap. - valid[UPLL_IDX_VLAN_ID_PM]; - break; - case uudst::vbridge_interface::kDbiTagged: - valid = &(reinterpret_cast(val))->portmap. - valid[UPLL_IDX_TAGGED_PM]; - break; - case uudst::vbridge_interface::kDbiVexName: + /*TODO remove when including driver header file */ + typedef struct val_drv_vbr_if { + val_vbr_if_t vbr_if_val; + uint8_t vex_name[32]; + uint8_t vex_if_name[32]; + uint8_t vex_link_name[32]; + uint8_t valid[4]; + } val_drv_vbr_if_t; + + + class VbrIfMoMgr : public VnodeChildMoMgr { + private: + static unc_key_type_t vbr_if_child[]; + static BindInfo vbr_if_bind_info[]; + static BindInfo key_vbr_if_maintbl_bind_info[]; + + /* @brief Returns admin and portmap information if portmap is + * valid. Else returns NULL for portmap + * + * @param[in] ikey Pointer to ConfigKeyVal + * @param[out] valid_pm portmap is valid + * @param[out] pm pointer to portmap informtation if valid_pm + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, + val_port_map_t *&pm, uint8_t &valid_admin, + uint8_t &admin_status) { + UPLL_FUNC_TRACE; + if (ikey == NULL) return UPLL_RC_ERR_GENERIC; + val_drv_vbr_if *drv_vbrif = reinterpret_cast + (GetVal(ikey)); + if (!drv_vbrif) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + val_vbr_if *ifval = &drv_vbrif->vbr_if_val; + valid_pm = ifval->valid[UPLL_IDX_PM_VBRI]; + if (valid_pm == UNC_VF_VALID) + pm = &ifval->portmap; + else + pm = NULL; + valid_admin = ifval->valid[UPLL_IDX_ADMIN_STATUS_VBRI]; + admin_status = ifval->admin_status; + return UPLL_RC_SUCCESS; + } + + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vbridge_interface::kDbiOperStatus: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_OPER_STATUS_VBRIS]; + break; + case uudst::vbridge_interface::kDbiDownCount: + valid = NULL; + break; + case uudst::vbridge_interface::kDbiAdminStatus: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_ADMIN_STATUS_VBRI]; + break; + case uudst::vbridge_interface::kDbiDesc: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_DESC_VBRI]; + break; + case uudst::vbridge_interface::kDbiValidPortMap: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_PM_VBRI]; + break; + case uudst::vbridge_interface::kDbiLogicalPortId: + valid = &(reinterpret_cast(val))->portmap. + valid[UPLL_IDX_LOGICAL_PORT_ID_PM]; + break; + case uudst::vbridge_interface::kDbiVlanId: + valid = &(reinterpret_cast(val))->portmap. + valid[UPLL_IDX_VLAN_ID_PM]; + break; + case uudst::vbridge_interface::kDbiTagged: + valid = &(reinterpret_cast(val))->portmap. + valid[UPLL_IDX_TAGGED_PM]; + break; + case uudst::vbridge_interface::kDbiVexName: valid = &(reinterpret_cast(val))-> - valid[PFCDRV_IDX_VEXT_NAME_VBRIF]; - break; - case uudst::vbridge_interface::kDbiVexIfName: + valid[PFCDRV_IDX_VEXT_NAME_VBRIF]; + break; + case uudst::vbridge_interface::kDbiVexIfName: valid = &(reinterpret_cast(val))-> - valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF]; - break; - case uudst::vbridge_interface::kDbiVexLinkName: + valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF]; + break; + case uudst::vbridge_interface::kDbiVexLinkName: valid = &(reinterpret_cast(val))-> - valid[PFCDRV_IDX_VLINK_NAME_VBRIF]; - break; - default: - return UPLL_RC_ERR_GENERIC; + valid[PFCDRV_IDX_VLINK_NAME_VBRIF]; + break; + default: + return UPLL_RC_ERR_GENERIC; + } } + return UPLL_RC_SUCCESS; } - return UPLL_RC_SUCCESS; - } - - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, void *val2, bool audit_status, - unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for - * corresponding attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool audit); - - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key = NULL); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VBR_IF keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vbr_if is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - - /** + + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, void *val2, bool audit_status, + unc_keytype_operation_t op); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for + * corresponding attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool audit); + + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key = NULL); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VBR_IF keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vbr_if is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + + /** * @brief Update config status for commit result and vote result. * * @param[in/out] ckv_running ConfigKeyVal instance. * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + + /** + * @Brief Checks if the specified key type(KT_VBR_IF) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] ctrlr_name Controller id associated with ikey. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, const char *ctrlr_name); + + /** + * @Brief Validates the syntax for KT_VBR_IF keytype value structure. + * + * @param[in] val_vbr_if KT_VBR_IF value structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVbrIfValue(val_vbr_if *vbr_if_val, + unc_keytype_operation_t operation); + + /** + * @Brief Validates the syntax of the specified value structure + * for KT_VBR_IF keytype + * @param[in] val_vtn_neighbor vtn neighbor value structure + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * + */ + upll_rc_t ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, + unc_keytype_operation_t operation); + + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] attrs Pointer to controller attribute. + * @param[in] ikey Corresponding key and value structure. + * @param[in] operation Operation name. + * @param[in] dt_type Data type name * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count limit is exceeds. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute Not_Supported. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVbrIfAttributeSupportCheck(const uint8_t *attrs, + ConfigKeyVal *ikey, + unc_keytype_operation_t operation, + upll_keytype_datatype_t dt_type); + + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] crtlr_name Controller name. + * @param[in] ikey Corresponding key and value structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count limit is exceeds. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute Not_Supported. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVtnNeighborAttributeSupportCheck(const char *ctrlr_name, + ConfigKeyVal *ikey); + + /** + * @brief Perform Semantic Check to check Different vbridges + * contain same switch-id and vlan-id + * + * @param[in] ikey ConfigKeyVal + * @param[in] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - - /** - * @Brief Checks if the specified key type(KT_VBR_IF) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] ctrlr_name Controller id associated with ikey. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char *ctrlr_name); - - /** - * @Brief Validates the syntax for KT_VBR_IF keytype value structure. - * - * @param[in] val_vbr_if KT_VBR_IF value structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVbrIfValue(val_vbr_if *vbr_if_val, - unc_keytype_operation_t operation); - - /** - * @Brief Validates the syntax of the specified value structure - * for KT_VBR_IF keytype - * @param[in] val_vtn_neighbor vtn neighbor value structure - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * - */ - upll_rc_t ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, - unc_keytype_operation_t operation); - - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] attrs Pointer to controller attribute. - * @param[in] ikey Corresponding key and value structure. - * @param[in] operation Operation name. - * @param[in] dt_type Data type name - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count limit is exceeds. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute Not_Supported. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVbrIfAttributeSupportCheck(const uint8_t *attrs, - ConfigKeyVal *ikey, - unc_keytype_operation_t operation, - upll_keytype_datatype_t dt_type); - - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] crtlr_name Controller name. - * @param[in] ikey Corresponding key and value structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count limit is exceeds. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute Not_Supported. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVtnNeighborAttributeSupportCheck(const char *ctrlr_name, - ConfigKeyVal *ikey); - - /** - * @brief Perform Semantic Check to check Different vbridges - * contain same switch-id and vlan-id - * - * @param[in] ikey ConfigKeyVal - * @param[in] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - **/ - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, DalDmlIntf *dmi, IpcReqRespHeader *req = NULL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main * table / controller table or rename table. * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure case. **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /* Rename */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /* Rename */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + + /* @brief To convert the value structure read from DB to + * VTNService during READ operations + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); + + public: + VbrIfMoMgr(); + virtual ~VbrIfMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } - /* @brief To convert the value structure read from DB to - * VTNService during READ operations - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); - - public: - VbrIfMoMgr(); - virtual ~VbrIfMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - - /* @brief Updates vbrif structure with vexternal information - * based on valid[PORTMAP] flag. - * - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] datatype DB type. - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t UpdateConfigVal(ConfigKeyVal *ikey, - upll_keytype_datatype_t datatype, - DalDmlIntf *dmi); - - /* @brief Updates vbrif portmap structure - * based on valid[PORTMAP] flag. - * - * @param[in] db_key Pointer to the ConfigKeyVal structure in db - * @param[in] datatype DB type. - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * @param[in] ikey Pointer to input ConfigKeyVal - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t UpdatePortMap(ConfigKeyVal *db_key, + /* @brief Updates vbrif structure with vexternal information + * based on valid[PORTMAP] flag. + * + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] datatype DB type. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t UpdateConfigVal(ConfigKeyVal *ikey, + upll_keytype_datatype_t datatype, + DalDmlIntf *dmi); + + /* @brief Updates vbrif portmap structure + * based on valid[PORTMAP] flag. + * + * @param[in] db_key Pointer to the ConfigKeyVal structure in db + * @param[in] datatype DB type. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * @param[in] ikey Pointer to input ConfigKeyVal + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t UpdatePortMap(ConfigKeyVal *db_key, upll_keytype_datatype_t datatype, DalDmlIntf *dmi, ConfigKeyVal *ikey); - /** - * @brief Method used to Update the Values in the specified key type. - * - * @param[in] req contains first 8 fields of input request structure - * @param[in] ikey key and value structure - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, uint64_t index); - - upll_rc_t GetVexternal(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, uint8_t *vexternal, uint8_t *vex_if, - InterfacePortMapInfo &flag); + /** + * @brief Method used to Update the Values in the specified key type. + * + * @param[in] req contains first 8 fields of input request structure + * @param[in] ikey key and value structure + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t UpdateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, uint64_t index); + + upll_rc_t GetVexternal(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, uint8_t *vexternal, uint8_t *vex_if, + InterfacePortMapInfo &flag); #if 0 - /** - * @brief Returns success if member of Boundary vlink - * - * @param[in] ck_vbrif ConfigKeyVal of the vbrif - * @param[in] dt_type Configuration type - * @param[in/out] ck_vlink ConfigKeyVal of the vlink key formed - * @param[in] dmi DB Connection - * @param[out] upll_rc_t UPLL_RC_SUCCESS if member - * UPLL_RC_ERR_NO_SUCH_INSTANCE if not - * UPLL_RC_SUCCESS on success - * - */ - upll_rc_t CheckIfMemberOfBoundaryVlink(ConfigKeyVal *ck_vbrif, - upll_keytype_datatype_t dt_type, - ConfigKeyVal *&ck_vlink, - DalDmlIntf *dmi); + /** + * @brief Returns success if member of Boundary vlink + * + * @param[in] ck_vbrif ConfigKeyVal of the vbrif + * @param[in] dt_type Configuration type + * @param[in/out] ck_vlink ConfigKeyVal of the vlink key formed + * @param[in] dmi DB Connection + * @param[out] upll_rc_t UPLL_RC_SUCCESS if member + * UPLL_RC_ERR_NO_SUCH_INSTANCE if not + * UPLL_RC_SUCCESS on success + * + */ + upll_rc_t CheckIfMemberOfBoundaryVlink(ConfigKeyVal *ck_vbrif, + upll_keytype_datatype_t dt_type, + ConfigKeyVal *&ck_vlink, + DalDmlIntf *dmi); #endif - /** - * @brief Duplicates the input configkeyval including the key and val. + /** + * @brief Duplicates the input configkeyval including the key and val. * based on the tbl specified. * * @param[in] okey Output Configkeyval - allocated within the function @@ -433,172 +435,178 @@ class VbrIfMoMgr : public VnodeChildMoMgr { * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure case. **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); - upll_rc_t GetMappedVbridges(const char* ctrlr_id, const char *domain_id, - std::string logportid, DalDmlIntf *dmi, - set*sw_vbridge_set); - /* create mo has to handle vex creation */ - - /** - * @Brief Validates the syntax for KT_VBR_IF Keytype key structure. - * - * @param[in] key_vbr_if KT_VBR_IF key structure. - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVbrifKey(key_vbr_if *vbr_if_key, - unc_keytype_operation_t operation = UNC_OP_INVALID); - - - /* @brief This is semantic check for KEY_VBR_IF key type - * in the update operation. - * - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] datatype DB type. - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - - - upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - - upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, const char *ctrlr_id); - upll_rc_t updateVbrIf(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - upll_rc_t ConverttoDriverPortMap(ConfigKeyVal *ck_port_map); -/** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output - * configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); - - - upll_rc_t GetVbrIfValfromDB(ConfigKeyVal *ikey, - ConfigKeyVal *&ck_drv_vbr_if, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - /** - * @brief update controller candidate configuration with the difference in - * committed configuration between the UNC and the audited controller - * - * @param[in] keytype Specifies the keytype. - * @param[in] ctrlr_id Specifies the controller Name. - * @param[in] session_id Ipc client session id. - * @param[in] config_id Ipc request header config id. - * @param[in] phase Specifies the Controller name. - * @param[in] dmi Pointer to DalDmlIntf class. - * - * @retval UPLL_RC_SUCCESS Request successfully processed. - * @retval UPLL_RC_ERR_GENERIC Generic error. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource is diconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DBMS access failure. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Instance specified does not exist. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance specified already exist. - */ - upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); - - upll_rc_t GetVbrIfFromVExternal(uint8_t *vtn_name, - uint8_t *vext_name, - ConfigKeyVal *&tmpckv, - DalDmlIntf *dmi) ; - -/** - * @brief Update controller with the new created / updated / deleted configuration - * between the Candidate and the Running configuration - * - * @param[in] keytype Specifies the keytype - * @param[in] session_id Ipc client session id - * @param[in] config_id Ipc request header config id - * @param[in] phase Specifies the operation - * @param[in] dmi Pointer to DalDmlIntf class. - * @param[out] affected_ctrlr_set Returns the list of controller to - * which the command has been delivered. - * - * @retval UPLL_RC_SUCCESS Request successfully processed. - * @retval UPLL_RC_ERR_GENERIC Generic error. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource is diconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DBMS access failure. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Instance specified does not exist. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance specified already exist. - */ - upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); + upll_rc_t GetMappedVbridges(const char* ctrlr_id, + const char *domain_id, + std::string logportid, DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); + set*sw_vbridge_set); + /* create mo has to handle vex creation */ - upll_rc_t PortStatusHandler(const char *ctrlr_name, - const char *domain_name, - const char *portid, - bool oper_status, - DalDmlIntf *dmi); + /** + * @Brief Validates the syntax for KT_VBR_IF Keytype key structure. + * + * @param[in] key_vbr_if KT_VBR_IF key structure. + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVbrifKey(key_vbr_if *vbr_if_key, + unc_keytype_operation_t operation = + UNC_OP_INVALID); -/** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); - upll_rc_t IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, - DalDmlIntf *dmi, - IpcReqRespHeader *req); - upll_rc_t PathFaultHandler(const char *ctrlr_name, - const char *domain_id, - std::vector &ingress_ports, - std::vector &egress_ports, - bool alarm_asserted, - DalDmlIntf *dmi); - upll_rc_t GetBoundaryInterfaces(key_vnode_if_t boundary_if, - DalDmlIntf *dmi, - ConfigKeyVal *&ikey); + + /* @brief This is semantic check for KEY_VBR_IF key type + * in the update operation. + * + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] datatype DB type. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + + + upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + + upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, const char *ctrlr_id); + upll_rc_t updateVbrIf(IpcReqRespHeader *req, + ConfigKeyVal *ikey, DalDmlIntf *dmi); + upll_rc_t ConverttoDriverPortMap(ConfigKeyVal *ck_port_map, + DalDmlIntf *dmi); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output + * configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); + + + upll_rc_t GetVbrIfValfromDB(ConfigKeyVal *ikey, + ConfigKeyVal *&ck_drv_vbr_if, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + /** + * @brief update controller candidate configuration with the difference in + * committed configuration between the UNC and the audited controller + * + * @param[in] keytype Specifies the keytype. + * @param[in] ctrlr_id Specifies the controller Name. + * @param[in] session_id Ipc client session id. + * @param[in] config_id Ipc request header config id. + * @param[in] phase Specifies the Controller name. + * @param[in] dmi Pointer to DalDmlIntf class. + * + * @retval UPLL_RC_SUCCESS Request successfully processed. + * @retval UPLL_RC_ERR_GENERIC Generic error. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource is diconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DBMS access failure. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Instance specified does not exist. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance specified already exist. + */ + upll_rc_t AuditUpdateController(unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected); + + upll_rc_t GetVbrIfFromVExternal(uint8_t *vtn_name, + uint8_t *vext_name, + ConfigKeyVal *&tmpckv, + DalDmlIntf *dmi); + + /** + * @brief Update controller with the new created / updated / deleted configuration + * between the Candidate and the Running configuration + * + * @param[in] keytype Specifies the keytype + * @param[in] session_id Ipc client session id + * @param[in] config_id Ipc request header config id + * @param[in] phase Specifies the operation + * @param[in] dmi Pointer to DalDmlIntf class. + * @param[out] affected_ctrlr_set Returns the list of controller to + * which the command has been delivered. + * + * @retval UPLL_RC_SUCCESS Request successfully processed. + * @retval UPLL_RC_ERR_GENERIC Generic error. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource is diconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DBMS access failure. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Instance specified does not exist. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance specified already exist. + */ + upll_rc_t TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); + + upll_rc_t PortStatusHandler(const char *ctrlr_name, + const char *domain_name, + const char *portid, + bool oper_status, + DalDmlIntf *dmi); /** - * @brief Method to set the operstatus of boundary interfaces - * and corresponding parent elements - * - * @param[in] boundary_if_set set containing all the boundary interfaces - * @param[in] notification pathfault/pathfaultreset notification - * @param[in] dmi Pointer to DalDmlIntf class - * - * - * @retval UPLL_RC_SUCCESS Success. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t SetBoundaryIfOperStatusforPathFault( - const set &boundary_if_set, - state_notification notification, - DalDmlIntf *dmi); - upll_rc_t RestoreUnInitOPerStatus(DalDmlIntf *dmi); -}; + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); + upll_rc_t IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, + DalDmlIntf *dmi, + IpcReqRespHeader *req); + upll_rc_t PathFaultHandler(const char *ctrlr_name, + const char *domain_id, + std::vector &ingress_ports, + std::vector &egress_ports, + bool alarm_asserted, + DalDmlIntf *dmi); + upll_rc_t GetBoundaryInterfaces(key_vnode_if_t boundary_if, + DalDmlIntf *dmi, + ConfigKeyVal *&ikey); + + /** + * @brief Method to set the operstatus of boundary interfaces + * and corresponding parent elements + * + * @param[in] boundary_if_set set containing all the boundary interfaces + * @param[in] notification pathfault/pathfaultreset notification + * @param[in] dmi Pointer to DalDmlIntf class + * + * + * @retval UPLL_RC_SUCCESS Success. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t SetBoundaryIfOperStatusforPathFault( + const set &boundary_if_set, + state_notification notification, + DalDmlIntf *dmi); + upll_rc_t RestoreUnInitOPerStatus(DalDmlIntf *dmi); + }; } // namespace kt_momgr } // namespace upll diff --git a/coordinator/modules/upll/vbr_if_policingmap_momgr.cc b/coordinator/modules/upll/vbr_if_policingmap_momgr.cc index 892f8545..bb434b7d 100644 --- a/coordinator/modules/upll/vbr_if_policingmap_momgr.cc +++ b/coordinator/modules/upll/vbr_if_policingmap_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -32,7 +32,7 @@ namespace kt_momgr { #define SET_FLAG_PORTMAP 0x20 #define SET_FLAG_VLINK 0x40 #define SET_FLAG_VLINK_PORTMAP 0x80 -#define SET_FLAG_NO_VLINK_PORTMAP ~SET_FLAG_VLINK_PORTMAP +#define SET_FLAG_NO_VLINK_PORTMAP 0x9F BindInfo VbrIfPolicingMapMoMgr::vbrifpolicingmap_bind_info[] = { { uudst::vbr_if_policingmap::kDbiVtnName, CFG_KEY, @@ -96,9 +96,12 @@ VbrIfPolicingMapMoMgr::VbrIfPolicingMapMoMgr() : MoMgrImpl() { table = new Table *[ntable]; // For Main Table - table[MAINTBL] = new Table(uudst::kDbiVbrIfPolicingMapTbl, - UNC_KT_VBRIF_POLICINGMAP, vbrifpolicingmap_bind_info, - IpctSt::kIpcStKeyVbrIf, IpctSt::kIpcStValPolicingmap, + table[MAINTBL] = new Table( + uudst::kDbiVbrIfPolicingMapTbl, + UNC_KT_VBRIF_POLICINGMAP, + vbrifpolicingmap_bind_info, + IpctSt::kIpcStKeyVbrIf, + IpctSt::kIpcStValPolicingmap, uudst::vbr_if_policingmap::kDbiVbrIfPolicingMapNumCols); /* For Rename Table*/ @@ -109,7 +112,6 @@ VbrIfPolicingMapMoMgr::VbrIfPolicingMapMoMgr() : MoMgrImpl() { nchild = 0; child = NULL; - cur_instance_count = 0; } upll_rc_t VbrIfPolicingMapMoMgr::RestorePOMInCtrlTbl( @@ -125,25 +127,25 @@ upll_rc_t VbrIfPolicingMapMoMgr::RestorePOMInCtrlTbl( return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL || - (ikey->get_key_type() != UNC_KT_VBRIF_POLICINGMAP)) { + (ikey->get_key_type() != UNC_KT_VBRIF_POLICINGMAP)) { UPLL_LOG_DEBUG("Ignoring ktype/Table kt=%d, tbl=%d", - ikey->get_key_type(), tbl); + ikey->get_key_type(), tbl); return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (NULL == val_pm) { UPLL_LOG_DEBUG(" Value structure is NULL"); return UPLL_RC_ERR_GENERIC; } if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(ikey, dt_type, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Failed to update PolicingProfile in CtrlrTbl err %d", - result_code); + result_code); return result_code; } } @@ -153,7 +155,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::RestorePOMInCtrlTbl( upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == req || NULL == dmi) { UPLL_LOG_DEBUG("CreateCandidateMo Failed. Insufficient input parameters"); @@ -166,26 +169,33 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, pfcdrv_val_vbrif_policingmap *pfc_val_import = NULL; UPLL_LOG_DEBUG("datatype (%d)", req->datatype); if (req->datatype == UPLL_DT_IMPORT) { - if (ikey->get_cfg_val() && (ikey->get_cfg_val()->get_st_num() == IpctSt::kIpcStPfcdrvValVbrifPolicingmap)) { + if (ikey->get_cfg_val() && (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValVbrifPolicingmap)) { UPLL_LOG_TRACE("ikey = %s", ikey->ToStrAll().c_str()); - UPLL_LOG_TRACE("val struct num (%d)",ikey->get_cfg_val()->get_st_num()); - pfc_val_import = reinterpret_cast(ikey->get_cfg_val()->get_val()); - if (pfc_val_import->valid[PFCDRV_IDX_VAL_POLICINGMAP_PM] == UNC_VF_VALID) { + UPLL_LOG_TRACE("val struct num (%d)", ikey->get_cfg_val()->get_st_num()); + pfc_val_import = reinterpret_cast + (ikey->get_cfg_val()->get_val()); + if (pfc_val_import->valid[PFCDRV_IDX_VAL_POLICINGMAP_PM] == + UNC_VF_VALID) { val_import = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); - memcpy(val_import, &pfc_val_import->val_policing_map, sizeof(val_policingmap_t)); + memcpy(val_import, &pfc_val_import->val_policing_map, + sizeof(val_policingmap_t)); UPLL_LOG_DEBUG("policer name (%s)", val_import->policer_name); ikey->SetCfgVal(NULL); - ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValPolicingmap, val_import)); + ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValPolicingmap, + val_import)); } } } UPLL_LOG_TRACE("%s ikey PRINT", ikey->ToStrAll().c_str()); - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("ValidateMessage Err (%d)", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + pfc_log_error("ValidateMessage Err (%d)", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { @@ -194,41 +204,18 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } ConfigKeyVal *okey = NULL; - ConfigKeyVal *tmp_key = NULL; result_code = GetControllerId(ikey, okey, req->datatype, dmi); if (UPLL_RC_SUCCESS != result_code) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } UPLL_LOG_DEBUG("GetControllerId failed %d", result_code); return result_code; } GET_USER_DATA_CTRLR(okey, ctrlr_id); - UPLL_LOG_TRACE("ctrlrid %s", ctrlr_id); - - result_code = GetChildConfigKey(tmp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("GetChildConfigKey failed:%d", result_code); - return result_code; - } - - - // Check VBRIF object existence in VbrIfPolicingMap CANDIDATE DB - // if record exists, return the error code - result_code = IsReferenced(ikey, req->datatype, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("CreateCandidateMo Object exists in CANDIDATE DB (%d)", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("CreateCandidateMo Instance Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("CreateCandidateMo Error Accesing CANDIDATE DB (%d)", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } + UPLL_LOG_TRACE("ctrlrid %s", ctrlr_id); val_policingmap_t *val_pm = reinterpret_cast (GetVal(ikey)); @@ -252,64 +239,55 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } } - // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - if (req->datatype == UPLL_DT_CANDIDATE) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if ((result_code != UPLL_RC_ERR_INSTANCE_EXISTS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" Is Exist check operation failed: err code(%d)", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restore Operation Failed, err %d", result_code); - DELETE_IF_NOT_NULL(okey); + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); return result_code; } - DELETE_IF_NOT_NULL(okey); - return result_code; } - } - - result_code = GetInstanceCount(tmp_key, reinterpret_cast(ctrlr_id), - req->datatype, - &cur_instance_count, - dmi, MAINTBL); - DELETE_IF_NOT_NULL(tmp_key); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount Failed:Err code-%d", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } // Capability Check - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_id)); + result_code = ValidateCapability(req, ikey, reinterpret_cast + (ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Key not supported by controller"); DELETE_IF_NOT_NULL(okey); return result_code; } - if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { - // 1)Get vbrif associated ctrlr name and invoke the PP and PPE functions to - // check the refcount capability and update the refcount or create the - // record in policingprofilectrltbl and policingprofileentryctrltbl. - // 2)Create the record in policingprofileentryctrltbl - result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Err in CANDIDATE DB(%d)", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - } - // create a record in vbrifpolicingmap table CANDIDATE DB VbrIfMoMgr *mgrvbrif = reinterpret_cast(const_cast(GetMoManager( @@ -343,7 +321,6 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, result_code = mgrvbrif->GetVexternal(ckv, req->datatype, dmi, vexternal, vex_if, flags); - DELETE_IF_NOT_NULL(ckv); FREE_IF_NOT_NULL(vexternal); FREE_IF_NOT_NULL(vex_if); if (UPLL_RC_SUCCESS != result_code) { @@ -351,6 +328,53 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, DELETE_IF_NOT_NULL(okey); return result_code; } + + /* VlanmapOnBoundary: vbr_if_flowfilter is not allowed on + * vbr interface of boundary vlink which is SW or SD mapped */ + VlinkMoMgr *vlink_mgr = + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VLINK))); + if (!vlink_mgr) { + UPLL_LOG_DEBUG("vlink_mgr is Fail"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ck_vlink = NULL; + vn_if_type iftype; + /* Verifies whether the requested vbridge interface is boundary + * vlinked with logical port id is SW or SD. If it is part of SW or SD + * boundary linked, cannot configure policing map in that vbridge interface*/ + result_code = vlink_mgr->CheckIfMemberOfVlink(ckv, req->datatype, + ck_vlink, dmi, iftype); + if (result_code == UPLL_RC_SUCCESS) { + unc_key_type_t ktype1; + if (iftype == kVlinkBoundaryNode1) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode1"); + ktype1 = vlink_mgr->GetVlinkVnodeIfKeyType(ck_vlink, 0); + if (ktype1 == UNC_KT_VBR_VLANMAP) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode1 And " + "ktype is UNC_KT_VBR_VLANMAP"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else if (iftype == kVlinkBoundaryNode2) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode2"); + ktype1 = vlink_mgr->GetVlinkVnodeIfKeyType(ck_vlink, 1); + if (ktype1 == UNC_KT_VBR_VLANMAP) { + UPLL_LOG_DEBUG("iftype is kVlinkBoundaryNode2 And " + "ktype is UNC_KT_VBR_VLANMAP"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } + } else if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ckv); + UPLL_LOG_DEBUG("CheckIfMemberOfVlink is Fail"); + return result_code; + } + /* If its not member of vlink continue below steps */ + DELETE_IF_NOT_NULL(ckv); UPLL_LOG_DEBUG("GetVexternal flag %d", flags); uint8_t flag_port_map = 0; GET_USER_DATA_FLAGS(ikey, flag_port_map); @@ -367,6 +391,27 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("flag_port_map %d", flag_port_map); SET_USER_DATA_FLAGS(ikey, flag_port_map); + + if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { + // Update the controller reference count for policing profile if portmap is + // configured. + // 1)Get vbrif associated ctrlr name and invoke the PP and PPE functions to + // check the refcount capability and update the refcount or create the + // record in policingprofilectrltbl and policingprofileentryctrltbl. + // 2)Create the record in policingprofileentryctrltbl + + if (flag_port_map & SET_FLAG_PORTMAP) { + result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, + UNC_OP_CREATE); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Err while updating the policingprofile ctrlr" + "table(%d)", + result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + } + } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag|kOpInOutCtrlr|kOpInOutDomain }; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, @@ -384,7 +429,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t VbrIfPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; @@ -410,7 +456,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("DeleteMo Instance Available"); } else if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DeleteMo IsReferenced Error accessing DB (%d)", - result_code); + result_code); return result_code; } @@ -426,7 +472,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -435,14 +481,18 @@ upll_rc_t VbrIfPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { - result_code = UpdateRefCountInPPCtrlr(okey, req->datatype, dmi, - UNC_OP_DELETE); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Error DB (%d)", result_code); - return result_code; + uint8_t flag_port_map = 0; + GET_USER_DATA_FLAGS(okey, flag_port_map); + if (flag_port_map & SET_FLAG_PORTMAP) { + result_code = UpdateRefCountInPPCtrlr(okey, req->datatype, dmi, + UNC_OP_DELETE); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Error DB (%d)", result_code); + return result_code; + } } } @@ -451,17 +501,18 @@ upll_rc_t VbrIfPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo Failed. UpdateConfigdb failed to delete - %d", - result_code); - DELETE_IF_NOT_NULL(okey); + result_code); + DELETE_IF_NOT_NULL(okey); return result_code; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); UPLL_LOG_DEBUG("DeleteMo Success"); return UPLL_RC_SUCCESS; } upll_rc_t VbrIfPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == req || NULL == dmi) { UPLL_LOG_TRACE("UpdateMo ikey and req NULL"); @@ -476,40 +527,10 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" SetRenameFlag failed %d", result_code); - return result_code; - } - - ConfigKeyVal *okey = NULL; - result_code = GetControllerId(ikey, okey, req->datatype, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetControllerId failed %d", result_code); - return result_code; - } - delete okey; - okey = NULL; - - // Check VBRIF object existence in VbrIfPolicingMap CANDIDATE DB - // If record not exists, return error - result_code = IsReferenced(ikey, req->datatype, dmi); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_TRACE("UpdateMo IsReferenced record not available (%d)", - result_code); - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_TRACE("UpdateMo IsReferenced record available"); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("UpdateMo IsReferenced error accessing DB (%d)", - result_code); - return result_code; - } - // Check vbrif Policingmap object exists in PolicingProfileTbl CANDIDATE DB // If record not exists, return error code val_policingmap_t *val_ival = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = IsPolicyProfileReferenced(ikey, req->datatype, dmi, UNC_OP_READ); @@ -537,9 +558,9 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutCtrlr|kOpInOutDomain }; result_code = ReadConfigDB(tmpckv, req->datatype, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("ReadConfigDB failed"); @@ -550,7 +571,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, SET_USER_DATA_CTRLR(ikey, ctrlr_id); // Capability Check - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_id)); + result_code = ValidateCapability(req, ikey, reinterpret_cast + (ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("Key not supported by controller"); @@ -558,50 +580,50 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, } val_policingmap_t *val_tmp_val = reinterpret_cast - (GetVal(tmpckv)); + (GetVal(tmpckv)); if (UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM] && UNC_VF_VALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name valid in DB and ikey"); result_code = UpdateRefCountInPPCtrlr(tmpckv, req->datatype, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in delete (%d)", - result_code); + result_code); return result_code; } result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); return result_code; } } else if ((UNC_VF_VALID_NO_VALUE == val_tmp_val-> - valid[UPLL_IDX_POLICERNAME_PM] || - UNC_VF_INVALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM])&& - UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { + valid[UPLL_IDX_POLICERNAME_PM] || + UNC_VF_INVALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM])&& + UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name valid in ikey and validnovalue in DB"); result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(tmpckv); return result_code; } } else if (UNC_VF_VALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM] && - UNC_VF_VALID_NO_VALUE == val_ival-> - valid[UPLL_IDX_POLICERNAME_PM]) { + UNC_VF_VALID_NO_VALUE == val_ival-> + valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name validnovalue in ikey and valid in db"); result_code = UpdateRefCountInPPCtrlr(tmpckv, req->datatype, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); return result_code; } } @@ -610,12 +632,12 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, uint8_t temp_flag = 0; GET_USER_DATA_FLAGS(ikey, temp_flag); UPLL_LOG_DEBUG("Flag in ikey: %d", temp_flag); - DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; + DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutNone}; result_code = UpdateConfigDB(ikey, req->datatype, req->operation, dmi, &dbop1, MAINTBL); DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_TRACE("VtnPolicingMapMoMgr::UpdateMo update record status (%d)", - result_code); + result_code); return result_code; } @@ -629,7 +651,12 @@ upll_rc_t VbrIfPolicingMapMoMgr::IsReferenced(ConfigKeyVal *ikey, DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; // Check the VBRIF PM object existence in vbrifpolicingmap - result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_READ, dmi, &dbop, MAINTBL); + result_code = UpdateConfigDB(ikey, + dt_type, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); UPLL_LOG_TRACE("IsReferenced (%d)", result_code); return result_code; } @@ -637,60 +664,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::IsReferenced(ConfigKeyVal *ikey, upll_rc_t VbrIfPolicingMapMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - ConfigKeyVal *okey = NULL; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_DEBUG("input key is null"); - return UPLL_RC_ERR_GENERIC; - } - key_vbr_if_t *key_vbrif_pm = - reinterpret_cast(ikey->get_key()); - - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_IF))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed for KT_VBR_IF key struct - %d", - result_code); - return result_code; - } - - key_vbr_if_t *vbrif_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, - key_vbrif_pm->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, - key_vbrif_pm->vbr_key.vbridge_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbrif_key->if_name, - key_vbrif_pm->if_name, - kMaxLenInterfaceName + 1); - - /* Checks the given vbr_if exists or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VBRIF key does not exists"); - result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - delete okey; - - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - UPLL_LOG_DEBUG("ValidateAttribute Successfull."); - return result_code; + // No operation + return UPLL_RC_SUCCESS; } upll_rc_t VbrIfPolicingMapMoMgr::IsPolicyProfileReferenced( @@ -703,17 +678,17 @@ upll_rc_t VbrIfPolicingMapMoMgr::IsPolicyProfileReferenced( // Get the memory allocated policy profile key structure MoMgrImpl *mgr = static_cast((const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE)))); + UNC_KT_POLICING_PROFILE)))); if (!mgr) { UPLL_LOG_TRACE("IsPolicyProfileReferenced pp obj failure (%d)", - result_code); + result_code); return UPLL_RC_ERR_GENERIC; } result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_TRACE("IsPolicyProfileReferenced GetChildConfigKey (%d)", - result_code); + result_code); return result_code; } if (!okey) return UPLL_RC_ERR_GENERIC; @@ -732,18 +707,19 @@ upll_rc_t VbrIfPolicingMapMoMgr::IsPolicyProfileReferenced( // Check the policingprofile object in policingprofiletbl result_code = mgr->UpdateConfigDB(okey, dt_type, op, dmi, &dbop, MAINTBL); UPLL_LOG_TRACE("IsPolicyProfileReferenced UpdateConfigDB status (%d)", - result_code); + result_code); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { result_code = UPLL_RC_SUCCESS; } val_policingmap_t *val_pm = reinterpret_cast (GetVal(ikey)); PolicingProfileEntryMoMgr *ppe_mgr = - reinterpret_cast - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); - result_code = ppe_mgr->ValidateValidElements(reinterpret_cast - (val_pm->policer_name), dmi, dt_type); + reinterpret_cast + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); + result_code = ppe_mgr->ValidateValidElements( + reinterpret_cast + (val_pm->policer_name), dmi, dt_type); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ValidateValidElements failed %d", result_code); delete okey; @@ -758,7 +734,6 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateRefCountInPPCtrlr( unc_keytype_operation_t op) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; uint8_t *ctrlr_id = NULL; // Get the contorller name from VBR MAINTBL @@ -767,50 +742,47 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateRefCountInPPCtrlr( PolicingProfileMoMgr *pp_mgr = reinterpret_cast (const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + UNC_KT_POLICING_PROFILE))); if (!pp_mgr) { UPLL_LOG_TRACE("pp_mgr obj failure (%d)", result_code); - DELETE_IF_NOT_NULL(okey); return result_code; } - #if 0 +#if 0 PolicingProfileEntryMoMgr *ppe_mgr = reinterpret_cast (const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE_ENTRY))); + UNC_KT_POLICING_PROFILE_ENTRY))); if (!ppe_mgr) { UPLL_LOG_TRACE("ppe_mgr obj failure (%d)", result_code); DELETE_IF_NOT_NULL(okey); return result_code; } - #endif +#endif val_policingmap_t* val_vtn_policingmap = reinterpret_cast(GetVal(ikey)); if (NULL == ctrlr_id) { UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr ctrlr_id NULL (%d)", - result_code); - DELETE_IF_NOT_NULL(okey); + result_code); return UPLL_RC_ERR_GENERIC; } /* Check the ref count capability of vbrif associated controller name in - policingprofilectrltbl If refcount reached the - max capability, then return error. - If ref count is less than capability and the record exist in - policingprofilectrltbl, based on the operation refcount should be - incremented or decremented and update policingprofilectrltbl. - create the record with refcount if record not - exist in policingprofilectrl tbl for the vbr associated controller name - */ + policingprofilectrltbl If refcount reached the + max capability, then return error. + If ref count is less than capability and the record exist in + policingprofilectrltbl, based on the operation refcount should be + incremented or decremented and update policingprofilectrltbl. + create the record with refcount if record not + exist in policingprofilectrl tbl for the vbr associated controller name + */ result_code = pp_mgr->PolicingProfileCtrlrTblOper( reinterpret_cast(val_vtn_policingmap->policer_name), reinterpret_cast(ctrlr_id), dmi, op, dt_type); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("PolicingProfileCtrlrTblOper err (%d)", result_code); - DELETE_IF_NOT_NULL(okey); return result_code; } @@ -818,7 +790,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateRefCountInPPCtrlr( // based on oper UPLL_LOG_DEBUG("PPECtrl profile name(%s) ctrlr id(%s)", val_vtn_policingmap->policer_name, ctrlr_id); - #if 0 +#if 0 result_code = ppe_mgr->PolicingProfileEntryCtrlrTblOper( reinterpret_cast(val_vtn_policingmap->policer_name), reinterpret_cast(ctrlr_id), dmi, op, dt_type); @@ -827,21 +799,21 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateRefCountInPPCtrlr( DELETE_IF_NOT_NULL(okey); return result_code; } - #endif - DELETE_IF_NOT_NULL(okey); +#endif return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfPolicingMapMoMgr::GetControllerId(ConfigKeyVal *ikey, - ConfigKeyVal *&okey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VbrIfPolicingMapMoMgr::GetControllerId( + ConfigKeyVal *ikey, + ConfigKeyVal *&okey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; VbrMoMgr *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); if (!mgr) { UPLL_LOG_TRACE("mgr obj failure (%d)", result_code); return UPLL_RC_ERR_GENERIC; @@ -857,15 +829,15 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetControllerId(ConfigKeyVal *ikey, key_vbr_if_t *vbr_if_ikey = reinterpret_cast (ikey->get_key()); uuu::upll_strncpy( - vbr_key->vtn_key.vtn_name, - vbr_if_ikey->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + vbr_key->vtn_key.vtn_name, + vbr_if_ikey->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy( - vbr_key->vbridge_name, - vbr_if_ikey->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + vbr_key->vbridge_name, + vbr_if_ikey->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutCtrlr|kOpInOutDomain }; result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -913,9 +885,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG(" Read request failed result(%d)", result_code); } } else if ((UPLL_DT_STATE == req->datatype) && - (req->option1 == UNC_OPT1_DETAIL) && - (req->option2 == UNC_OPT2_NONE)) { - + (req->option1 == UNC_OPT1_DETAIL) && + (req->option2 == UNC_OPT2_NONE)) { result_code = ReadDetailRecord(req, ikey, dmi); UPLL_LOG_DEBUG("ReadDetailRecord result_code (%d)", result_code); } @@ -938,9 +909,9 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, return result_code; } } else if ((req->option1 == UNC_OPT1_DETAIL) && - (req->option2 == UNC_OPT2_NONE)) { + (req->option2 == UNC_OPT2_NONE)) { UPLL_LOG_DEBUG("ReadRecord ReadConfigDB error (%d) (%d)", - req->datatype, req->option1); + req->datatype, req->option1); result_code = ReadEntryDetailRecord(req, ikey, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadEntryDetailRecord failed %d", result_code); @@ -948,7 +919,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, } } else { // Till here UPLL_LOG_DEBUG("ReadRecord ReadConfigDB error (%d) (%d)", - req->datatype, req->option1); + req->datatype, req->option1); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } break; @@ -972,32 +943,34 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetReadVbrIfKey(ConfigKeyVal *&dup_key, result_code = GetChildConfigKey(dup_key, NULL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Error"); - return result_code; + UPLL_LOG_DEBUG("GetChildConfigKey Error"); + return result_code; } if (!dup_key) { - UPLL_LOG_DEBUG("dup_key NULL"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("dup_key NULL"); + return UPLL_RC_ERR_GENERIC; } key_vbr_if_t *key = reinterpret_cast(dup_key->get_key()); key_vbrif_policingmap_entry *key1 = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(reinterpret_cast(key->vbr_key.vtn_key.vtn_name), - reinterpret_cast(key1->vbrif_key.vbr_key.vtn_key.vtn_name), - (kMaxLenVtnName + 1)); + reinterpret_cast + (key1->vbrif_key.vbr_key.vtn_key.vtn_name), + (kMaxLenVtnName + 1)); uuu::upll_strncpy(reinterpret_cast(key->vbr_key.vbridge_name), - reinterpret_cast(key1->vbrif_key.vbr_key.vbridge_name), - (kMaxLenVnodeName + 1)); + reinterpret_cast + (key1->vbrif_key.vbr_key.vbridge_name), + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(reinterpret_cast(key->if_name), - reinterpret_cast(key1->vbrif_key.if_name), - (kMaxLenVnodeName + 1)); + reinterpret_cast(key1->vbrif_key.if_name), + (kMaxLenVnodeName + 1)); return UPLL_RC_SUCCESS; } upll_rc_t VbrIfPolicingMapMoMgr::GetChildEntryConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL != okey) { @@ -1009,7 +982,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetChildEntryConfigKey(ConfigKeyVal *&okey, reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbrif_policingmap_entry))); key_vbrif_policingmap_entry *key1 = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy( reinterpret_cast(key->vbrif_key.vbr_key.vtn_key.vtn_name), @@ -1020,11 +993,11 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetChildEntryConfigKey(ConfigKeyVal *&okey, reinterpret_cast(key1->vbrif_key.vbr_key.vbridge_name), (kMaxLenVnodeName + 1)); uuu::upll_strncpy(reinterpret_cast(key->vbrif_key.if_name), - reinterpret_cast(key1->vbrif_key.if_name), - (kMaxLenVnodeName + 1)); + reinterpret_cast(key1->vbrif_key.if_name), + (kMaxLenVnodeName + 1)); key->sequence_num = key1->sequence_num; okey = new ConfigKeyVal(UNC_KT_VBRIF_POLICINGMAP_ENTRY, - IpctSt::kIpcStKeyVbrifPolicingmapEntry, key, NULL); + IpctSt::kIpcStKeyVbrifPolicingmapEntry, key, NULL); return UPLL_RC_SUCCESS; } @@ -1042,7 +1015,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructVbrIfPolicingmapEntryCkv( reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbrif_policingmap_entry_t))); uuu::upll_strncpy( - reinterpret_cast(vbrif_pm_key->vbrif_key.vbr_key.vtn_key.vtn_name), + reinterpret_cast(vbrif_pm_key-> + vbrif_key.vbr_key.vtn_key.vtn_name), reinterpret_cast(vbr_if_key->vbr_key.vtn_key.vtn_name), (kMaxLenVtnName + 1)); uuu::upll_strncpy( @@ -1050,11 +1024,13 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructVbrIfPolicingmapEntryCkv( reinterpret_cast(vbr_if_key->vbr_key.vbridge_name), (kMaxLenVnodeName + 1)); uuu::upll_strncpy(reinterpret_cast(vbrif_pm_key->vbrif_key.if_name), - reinterpret_cast(vbr_if_key->if_name), - (kMaxLenVnodeName + 1)); + reinterpret_cast(vbr_if_key->if_name), + (kMaxLenVnodeName + 1)); vbrif_pm_key->sequence_num = sequence_num; okey = new ConfigKeyVal(UNC_KT_VBRIF_POLICINGMAP_ENTRY, - IpctSt::kIpcStKeyVbrifPolicingmapEntry, vbrif_pm_key, NULL); + IpctSt::kIpcStKeyVbrifPolicingmapEntry, + vbrif_pm_key, + NULL); if (NULL == okey) { return UPLL_RC_ERR_GENERIC; } @@ -1062,28 +1038,30 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructVbrIfPolicingmapEntryCkv( } upll_rc_t VbrIfPolicingMapMoMgr::ConstructPpeCkv(ConfigKeyVal *&okey, - const char *ppe_name, uint8_t sequence_num) { + const char *ppe_name, + uint8_t sequence_num) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; PolicingProfileEntryMoMgr *mgr = reinterpret_cast - - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); + + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed"); } key_policingprofile_entry_t *key_ppe = reinterpret_cast - (okey->get_key()); + (okey->get_key()); uuu::upll_strncpy(key_ppe->policingprofile_key.policingprofile_name, - ppe_name, kMaxLenPolicingProfileName + 1); + ppe_name, kMaxLenPolicingProfileName + 1); key_ppe->sequence_num = sequence_num; return UPLL_RC_SUCCESS; } upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, bool begin, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -1116,8 +1094,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("Read sibling request success (%d)", result_code); return result_code; } else if ((req->datatype == UPLL_DT_STATE) && - (req->option1 == UNC_OPT1_DETAIL)&& - (req->option2 == UNC_OPT2_NONE)) { + (req->option1 == UNC_OPT1_DETAIL)&& + (req->option2 == UNC_OPT2_NONE)) { result_code = ReadDetailRecord(req, ikey, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ReadDetailRecord result_code (%d)", result_code); @@ -1146,7 +1124,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, return result_code; } key_vbr_if_t *key_if = reinterpret_cast - (temp_vbr_if_key->get_key()); + (temp_vbr_if_key->get_key()); val_policingmap_t *val_pm = reinterpret_cast (GetVal(temp_vbr_if_key)); ConfigKeyVal *ppe_ckv = NULL; @@ -1187,9 +1165,10 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, key_vbrif_policingmap_entry_t *temp_vbrif_pm_key = reinterpret_cast (temp_vbrif_pm_ckv->get_key()); temp_vbrif_pm_key->sequence_num = temp_ppe_key->sequence_num; - uuu::upll_strncpy(reinterpret_cast(temp_vbrif_pm_key->vbrif_key.if_name), - reinterpret_cast(key_if->if_name), - (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(reinterpret_cast(temp_vbrif_pm_key-> + vbrif_key.if_name), + reinterpret_cast(key_if->if_name), + (kMaxLenVnodeName + 1)); result_code = ReadDTStateNormal(req, temp_vbrif_pm_ckv, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ReadDTStateNormal failed"); @@ -1207,12 +1186,12 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, ikey->ResetWith(okey); } } else if ((req->option1 == UNC_OPT1_DETAIL) && - (req->option2 == UNC_OPT2_NONE)) { + (req->option2 == UNC_OPT2_NONE)) { UPLL_LOG_DEBUG("ReadRecord ReadConfigDB error (%d) (%d)", - req->datatype, req->option1); + req->datatype, req->option1); ConfigKeyVal *temp_vbr_if_key = NULL; key_vbrif_policingmap_entry_t *vbrif_entry_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); result_code = GetReadVbrIfKey(temp_vbr_if_key, ikey); DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; result_code = ReadConfigDB(temp_vbr_if_key, req->datatype, @@ -1222,22 +1201,22 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(temp_vbr_if_key)); - key_vbr_if_t *key_if = reinterpret_cast - (temp_vbr_if_key->get_key()); + (GetVal(temp_vbr_if_key)); + key_vbr_if_t *key_if = reinterpret_cast + (temp_vbr_if_key->get_key()); ConfigKeyVal *ppe_ckv = NULL; result_code = ConstructPpeCkv(ppe_ckv, reinterpret_cast - (val_pm->policer_name), - vbrif_entry_key->sequence_num); + (val_pm->policer_name), + vbrif_entry_key->sequence_num); PolicingProfileEntryMoMgr *mgr = reinterpret_cast - - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); + + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); if (!mgr) { return UPLL_RC_ERR_GENERIC; } IpcReqRespHeader *temp_req = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); memcpy(temp_req, req, sizeof(IpcReqRespHeader)); temp_req->option1 = UNC_OPT1_NORMAL; // result_code = mgr->ReadInfoFromDB(req, ppe_ckv, dmi, &ctrlr_dom); @@ -1255,18 +1234,19 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, while (NULL != temp_ppe_ckv) { ConfigKeyVal *temp_vbrif_pm_ckv = NULL; key_policingprofile_entry_t *temp_ppe_key = reinterpret_cast - (temp_ppe_ckv->get_key()); + (temp_ppe_ckv->get_key()); result_code = GetChildEntryConfigKey(temp_vbrif_pm_ckv, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildEntryConfigKey failed"); return result_code; } key_vbrif_policingmap_entry_t *temp_vbrif_pm_key = reinterpret_cast - (temp_vbrif_pm_ckv->get_key()); + (temp_vbrif_pm_ckv->get_key()); temp_vbrif_pm_key->sequence_num = temp_ppe_key->sequence_num; - uuu::upll_strncpy(reinterpret_cast(temp_vbrif_pm_key->vbrif_key.if_name), - reinterpret_cast(key_if->if_name), - (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(reinterpret_cast(temp_vbrif_pm_key-> + vbrif_key.if_name), + reinterpret_cast(key_if->if_name), + (kMaxLenVnodeName + 1)); UPLL_LOG_DEBUG("vbrifpmentry sequence_num - %d", result_code); result_code = ReadEntryDetailRecord(req, temp_vbrif_pm_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { @@ -1298,8 +1278,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } upll_rc_t VbrIfPolicingMapMoMgr::ReadDetailRecord(IpcReqRespHeader *req, - ConfigKeyVal *&ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *&ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *l_key = NULL; ConfigKeyVal *dup_key = NULL; @@ -1333,7 +1313,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadDetailRecord(IpcReqRespHeader *req, SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); GET_USER_DATA_FLAGS(dup_key, db_flag); - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability(req, ikey, reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(dup_key); @@ -1439,14 +1420,14 @@ bool VbrIfPolicingMapMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("GetRenameKeyBindInfo (%d) (%d)", key_type, tbl); nattr = sizeof(key_vbrifpm_maintbl_rename_bind_info)/ - sizeof(key_vbrifpm_maintbl_rename_bind_info[0]); + sizeof(key_vbrifpm_maintbl_rename_bind_info[0]); binfo = key_vbrifpm_maintbl_rename_bind_info; return PFC_TRUE; } // Rename upll_rc_t VbrIfPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; if (!ikey || !(ikey->get_key())) { UPLL_LOG_DEBUG("CopyToConfigKey ikey NULL"); @@ -1456,9 +1437,9 @@ upll_rc_t VbrIfPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_vbr_if_t *key_vbr_if = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { UPLL_LOG_DEBUG("old_unc_vtn_name NULL"); FREE_IF_NOT_NULL(key_vbr_if); @@ -1488,7 +1469,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, } okey = new ConfigKeyVal(UNC_KT_VBRIF_POLICINGMAP, IpctSt::kIpcStKeyVbrIf, - key_vbr_if, NULL); + key_vbr_if, NULL); if (!okey) { UPLL_LOG_DEBUG("okey NULL"); FREE_IF_NOT_NULL(key_vbr_if); @@ -1497,10 +1478,11 @@ upll_rc_t VbrIfPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; @@ -1512,12 +1494,12 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); UPLL_LOG_DEBUG("CopyToConfigKey datatype (%d)", data_type); // Copy the old policer name in val_policingmap val_policingmap_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); if (!val) return UPLL_RC_ERR_GENERIC; memset(val, 0, sizeof(val_policingmap_t)); @@ -1528,17 +1510,17 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } uuu::upll_strncpy(val->policer_name, - key_rename->old_policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_rename->old_policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val->valid[UPLL_IDX_POLICERNAME_PM], val->policer_name); + val->valid[UPLL_IDX_POLICERNAME_PM], val->policer_name); result_code = GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - FREE_IF_NOT_NULL(val); - return result_code; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + FREE_IF_NOT_NULL(val); + return result_code; } if (!okey) { free(val); @@ -1546,11 +1528,13 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValPolicingmap, val)); - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; - // Read the record of key structure and old policer name in maintbl + // Read the record of key structure and old policer name in maintbl result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG(" ReadConfigDB failed "); DELETE_IF_NOT_NULL(okey); @@ -1558,7 +1542,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } ConfigKeyVal *first_ckv = okey; while (okey != NULL) { - UPLL_LOG_DEBUG("okey not NULL"); + UPLL_LOG_DEBUG("okey not NULL"); // Update the new policer name in MAINTBL result_code = GetChildConfigKey(kval, okey); if (UPLL_RC_SUCCESS != result_code) { @@ -1569,12 +1553,13 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, if (!kval) return UPLL_RC_ERR_GENERIC; // Copy the new policer name in val_policingmap val_policingmap_t *val1 = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); if (!val1) return UPLL_RC_ERR_GENERIC; memset(val1, 0, sizeof(val_policingmap_t)); // New name null check - if (!strlen(reinterpret_cast(key_rename->new_policingprofile_name))) { + if (!strlen(reinterpret_cast + (key_rename->new_policingprofile_name))) { FREE_IF_NOT_NULL(val1); UPLL_LOG_DEBUG("new_policingprofile_name NULL"); DELETE_IF_NOT_NULL(kval); @@ -1583,11 +1568,11 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } // Copy the new policer name into val_policingmap uuu::upll_strncpy(val1->policer_name, - key_rename->new_policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_rename->new_policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val1->valid[UPLL_IDX_POLICERNAME_PM], val1->policer_name); + val1->valid[UPLL_IDX_POLICERNAME_PM], val1->policer_name); ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValPolicingmap, val1); kval->SetCfgVal(cval1); @@ -1604,7 +1589,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, GET_USER_DATA_FLAGS(okey, rename); UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); UPLL_LOG_DEBUG("okey flag (%d)", rename); @@ -1619,10 +1604,10 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("kval flag (%d)", rename); // Update the new policer name in MAINTBL result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(first_ckv); return result_code; @@ -1631,15 +1616,15 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(kval); okey = okey->get_next_cfg_key_val(); - } + } DELETE_IF_NOT_NULL(first_ckv); return result_code; } upll_rc_t VbrIfPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckval = NULL; @@ -1658,7 +1643,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -1700,7 +1685,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( ConfigKeyVal *unc_key = NULL; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifpm start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if (NULL == ikey || NULL == dmi || NULL == ctrlr_id) { UPLL_LOG_DEBUG("GetRenamedUncKey failed. Insufficient input parameters."); return UPLL_RC_ERR_GENERIC; @@ -1731,7 +1716,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + UNC_KT_VBRIDGE))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr NULL"); free(rename_vnode); @@ -1771,8 +1756,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( reinterpret_cast(unc_key->get_key()); if (vbr_if_key) { if (strcmp(reinterpret_cast(ctrlr_key->vbr_key.vtn_key.vtn_name), - reinterpret_cast - (vbr_if_key->vbr_key.vtn_key.vtn_name))) { + reinterpret_cast + (vbr_if_key->vbr_key.vtn_key.vtn_name))) { uuu::upll_strncpy( reinterpret_cast(ctrlr_key->vbr_key.vtn_key.vtn_name), reinterpret_cast @@ -1782,8 +1767,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( if (strcmp(reinterpret_cast(ctrlr_key->vbr_key.vbridge_name), reinterpret_cast(vbr_if_key->vbr_key.vbridge_name))) { uuu::upll_strncpy(ctrlr_key->vbr_key.vbridge_name, - vbr_if_key->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + vbr_if_key->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); } } } @@ -1802,17 +1787,17 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( val_policingmap_t *val_policingmap = NULL; if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStPfcdrvValVbrifPolicingmap)) { + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValVbrifPolicingmap)) { UPLL_LOG_TRACE("val struct num (%d)", ikey->get_cfg_val()->get_st_num()); pfc_val_import = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + (ikey->get_cfg_val()->get_val()); val_policingmap = &pfc_val_import->val_policing_map; UPLL_LOG_DEBUG("policer name (%s)", val_policingmap->policer_name); } else if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt:: kIpcStValPolicingmap)) { - val_policingmap = + (ikey->get_cfg_val()->get_st_num() == + IpctSt:: kIpcStValPolicingmap)) { + val_policingmap = reinterpret_cast(GetVal(ikey)); } if (!val_policingmap) { @@ -1827,7 +1812,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + UNC_KT_POLICING_PROFILE))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr policing profile NULL"); free(rename_policingprofile); @@ -1857,7 +1842,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("GetRenamedUncKey failed. ReadConfigDB failed to read %d ", - result_code); + result_code); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; return result_code; @@ -1868,17 +1853,17 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedUncKey( reinterpret_cast(unc_key->get_key()); if (key_policingprofile) { if (strcmp(reinterpret_cast(val_policingmap->policer_name), - reinterpret_cast(key_policingprofile - ->policingprofile_name))) { - uuu::upll_strncpy( - val_policingmap->policer_name, - key_policingprofile->policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + reinterpret_cast(key_policingprofile + ->policingprofile_name))) { + uuu::upll_strncpy( + val_policingmap->policer_name, + key_policingprofile->policingprofile_name, + (kMaxLenPolicingProfileName + 1)); } } } UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifpm end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; return UPLL_RC_SUCCESS; @@ -1889,7 +1874,6 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedControllerKey( controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; upll_rc_t result_code; - uint8_t rename = 0; ConfigKeyVal *okey = NULL; if (NULL == ikey || NULL == dmi || NULL == ctrlr_dom) { @@ -1897,111 +1881,94 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedControllerKey( "GetRenamedControllerKey failed. Insufficient input resources"); return UPLL_RC_ERR_GENERIC; } -// DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutCtrlr }; - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutCtrlr }; + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, + kOpInOutCtrlr }; - result_code = IsRenamed(ikey, dt_type, dmi, rename); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetRenamedControllerKey failed. IsRenamed failed to " - "check rename - %d", - result_code); - return result_code; + MoMgrImpl *mgr = + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); + if (NULL == mgr) { + UPLL_LOG_DEBUG("mgr NULL"); + return UPLL_RC_ERR_GENERIC; } - if (0 == rename) { - UPLL_LOG_DEBUG( - "GetRenamedControllerKey No Rename"); - return UPLL_RC_SUCCESS; + result_code = mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" GetRenamedControllerKey failed. " + "GetChildConfigKey failed to create vbr ConfigKey - %d", + result_code); + return result_code; } - UPLL_LOG_TRACE("Start Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); - - if (rename & VTN_RENAME || rename & VBR_RENAME) { - MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("mgr NULL"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" GetRenamedControllerKey failed. " - "GetChildConfigKey failed to create vbr ConfigKey - %d", - result_code); - return result_code; - } - if (!okey) return UPLL_RC_ERR_GENERIC; - - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + if (NULL != ctrlr_dom) { + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) + } else { + UPLL_LOG_DEBUG("ctrlr null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (UNC_KT_VBRIF_POLICINGMAP == ikey->get_key_type()) { + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); + if (UNC_KT_VBRIF_POLICINGMAP == ikey->get_key_type()) { uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(okey->get_key())->vtn_key.vtn_name, + reinterpret_cast(ikey->get_key())-> + vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vbr_key.vtn_key.vtn_name); + reinterpret_cast(okey->get_key())-> + vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->vbr_key.vtn_key.vtn_name); uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_key())->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_key())->vbr_key.vbridge_name); - } else if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) { + reinterpret_cast(okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->vbr_key.vbridge_name); + } else if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) { uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vbrif_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->vbrif_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vbrif_key.vbr_key.vtn_key.vtn_name); + reinterpret_cast + (okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->vbrif_key.vbr_key.vtn_key.vtn_name); uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->vbrif_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->vbrif_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); UPLL_LOG_DEBUG("vbr name (%s) (%s)", - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast - (ikey->get_key())->vbrif_key.vbr_key.vbridge_name); - } + reinterpret_cast(okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->vbrif_key.vbr_key.vbridge_name); + } - /* TODO Commented the below code to fix the compilation issues */ - result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("GetRenamedControllerKey failed. ReadConfigDB failed " - "to read vbr renametbl - %d", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } + result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("GetRenamedControllerKey failed. ReadConfigDB failed " + "to read vbr renametbl - %d", + result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { val_rename_vnode_t *rename_val = reinterpret_cast(GetVal(okey)); if (!rename_val) { @@ -2009,44 +1976,33 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedControllerKey( DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } - if (rename & VTN_RENAME) { // vtn renamed - UPLL_LOG_DEBUG("vtn name renamed"); - if (UNC_KT_VBRIF_POLICINGMAP == ikey->get_key_type()) { - uuu::upll_strncpy(reinterpret_cast(ikey->get_key()) - ->vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); - } else if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) { - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vbrif_key.vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); - } - } - - if (rename & VBR_RENAME) { // vnode renamed - UPLL_LOG_DEBUG("vbr name renamed"); - if (UNC_KT_VBRIF_POLICINGMAP == ikey->get_key_type()) { + if (UNC_KT_VBRIF_POLICINGMAP == ikey->get_key_type()) { uuu::upll_strncpy(reinterpret_cast(ikey->get_key()) - ->vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); - } else if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) { - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vbrif_key.vbr_key.vbridge_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); - } + ->vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(reinterpret_cast(ikey->get_key()) + ->vbr_key.vbridge_name, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); + } else if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) { + uuu::upll_strncpy(reinterpret_cast + (ikey->get_key())->vbrif_key.vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(reinterpret_cast + (ikey->get_key())->vbrif_key.vbr_key.vbridge_name, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); } - DELETE_IF_NOT_NULL(okey); - mgr = NULL; } + DELETE_IF_NOT_NULL(okey); + mgr = NULL; if (UNC_KT_VBRIF_POLICINGMAP == ikey->get_key_type()) { - if (rename & POLICINGPROFILE_RENAME) { - UPLL_LOG_DEBUG("policing profile name renamed"); - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_POLICING_PROFILE))); + MoMgrImpl *mgr = reinterpret_cast + (const_cast + (GetMoManager(UNC_KT_POLICING_PROFILE))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr NULL"); return UPLL_RC_ERR_GENERIC; @@ -2054,71 +2010,61 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetRenamedControllerKey( result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed. GetChildConfigKey failed " - "to create policingprofile ConfigKey - %d", - result_code); + "to create policingprofile ConfigKey - %d", + result_code); return result_code; } if (!okey) return UPLL_RC_ERR_GENERIC; - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); - if (!val_policingmap) - return UPLL_RC_SUCCESS; + if (NULL == val_policingmap) { + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_SUCCESS; + } key_policingprofile_t *key_policingprofile = - reinterpret_cast(okey->get_key()); + reinterpret_cast(okey->get_key()); - if (NULL == val_policingmap || NULL == key_policingprofile) { + if (NULL == key_policingprofile) { UPLL_LOG_DEBUG("val or key struct is NULL"); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_policingprofile->policingprofile_name, - val_policingmap->policer_name, - (kMaxLenPolicingProfileName + 1)); + val_policingmap->policer_name, + (kMaxLenPolicingProfileName + 1)); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutCtrlr }; - result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutCtrlr }; + result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed. ReadConfigDB failed " - "to read policingprofile renametbl - %d", - result_code); + "to read policingprofile renametbl - %d", + result_code); DELETE_IF_NOT_NULL(okey); return result_code; } + if (UPLL_RC_SUCCESS == result_code) { + val_rename_policingprofile_t *rename_policingprofile = + reinterpret_cast(GetVal(okey)); + if (!rename_policingprofile) { + UPLL_LOG_DEBUG("rename_policingprofile NULL") + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - val_rename_policingprofile_t *rename_policingprofile = - reinterpret_cast(GetVal(okey)); - if (!rename_policingprofile) { - UPLL_LOG_DEBUG("rename_policingprofile NULL") - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + uuu::upll_strncpy(val_policingmap->policer_name, + rename_policingprofile->policingprofile_newname, + (kMaxLenPolicingProfileName + 1)); } - - uuu::upll_strncpy(val_policingmap->policer_name, - rename_policingprofile->policingprofile_newname, - (kMaxLenPolicingProfileName + 1)); DELETE_IF_NOT_NULL(okey); } - } return UPLL_RC_SUCCESS; } @@ -2130,23 +2076,27 @@ bool VbrIfPolicingMapMoMgr::CompareValidValue(void *&val1, void *val2, val_policingmap_t *val_pm2 = reinterpret_cast(val2); if (UNC_VF_INVALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) { - val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID_NO_VALUE; - } else if (UNC_VF_VALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && - UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) { - if (!strcmp(reinterpret_cast(val_pm1->policer_name), - reinterpret_cast(val_pm2->policer_name))) { - val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_INVALID; - } + val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID_NO_VALUE; + } else { + if (UNC_VF_VALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && + UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) { + if (!strcmp(reinterpret_cast(val_pm1->policer_name), + reinterpret_cast(val_pm2->policer_name))) { + val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_INVALID; + } + } } if ((UNC_VF_VALID == (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM])) { - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == (uint8_t) + val_pm1->valid[UPLL_IDX_POLICERNAME_PM])) { + invalid_attr = false; } return invalid_attr; } -bool VbrIfPolicingMapMoMgr::CompareKey(ConfigKeyVal *key1, ConfigKeyVal *key2) { +bool VbrIfPolicingMapMoMgr::CompareKey(ConfigKeyVal *key1, + ConfigKeyVal *key2) { UPLL_FUNC_TRACE; key_vbr_if_t *vbr_if_key1, *vbr_if_key2; bool match = false; @@ -2160,19 +2110,25 @@ bool VbrIfPolicingMapMoMgr::CompareKey(ConfigKeyVal *key1, ConfigKeyVal *key2) { return false; } if (strncmp( - reinterpret_cast(vbr_if_key1->vbr_key.vtn_key.vtn_name), - reinterpret_cast(vbr_if_key2->vbr_key.vtn_key.vtn_name), - kMaxLenVtnName + 1) == 0) { + reinterpret_cast + (vbr_if_key1->vbr_key.vtn_key.vtn_name), + reinterpret_cast + (vbr_if_key2->vbr_key.vtn_key.vtn_name), + kMaxLenVtnName + 1) == 0) { match = true; - UPLL_LOG_DEBUG("PolicingProfileEntryMoMgr::CompareKey, Both Keys are same"); + UPLL_LOG_DEBUG("PolicingProfileEntryMoMgr::CompareKey," + "Both Keys are same"); } return match; } #if 0 upll_rc_t VbrIfPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, - unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *nreq, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_policingmap_t *val = NULL; unc_keytype_configstatus_t cs_status = @@ -2197,16 +2153,17 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, #endif upll_rc_t VbrIfPolicingMapMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ckv_running) return UPLL_RC_ERR_GENERIC; val_policingmap_t *val; val = reinterpret_cast - (GetVal(ckv_running)); + (GetVal(ckv_running)); if (NULL == val) { UPLL_LOG_DEBUG("vbr_val NULL"); return UPLL_RC_ERR_GENERIC; @@ -2214,14 +2171,14 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateAuditConfigStatus( if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } @@ -2239,7 +2196,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetValid(void *val, uint64_t indx, switch (indx) { case uudst::vbr_if_policingmap::kDbiPolicername: valid = &(reinterpret_cast - (val)->valid[UPLL_IDX_POLICERNAME_PM]); + (val)->valid[UPLL_IDX_POLICERNAME_PM]); break; default: UPLL_LOG_DEBUG("Invalid Index"); @@ -2252,24 +2209,24 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetValid(void *val, uint64_t indx, } upll_rc_t VbrIfPolicingMapMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { -UPLL_FUNC_TRACE; -void *val; -if (ck_val != NULL) { - UPLL_LOG_DEBUG("ck_val is not NULL"); - return UPLL_RC_ERR_GENERIC; -} -switch (tbl) { - case MAINTBL: - val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); - ck_val = new ConfigVal(IpctSt::kIpcStValPolicingmap, val); - break; - default: - UPLL_LOG_DEBUG("AllocVal val_policingmap_t Allocation failure"); - val = NULL; - break; + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + void *val; + if (ck_val != NULL) { + UPLL_LOG_DEBUG("ck_val is not NULL"); + return UPLL_RC_ERR_GENERIC; + } + switch (tbl) { + case MAINTBL: + val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + ck_val = new ConfigVal(IpctSt::kIpcStValPolicingmap, val); + break; + default: + UPLL_LOG_DEBUG("AllocVal val_policingmap_t Allocation failure"); + val = NULL; + break; } if (NULL == ck_val) { UPLL_LOG_DEBUG("AllocVal ck_val Allocation failure"); @@ -2294,7 +2251,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tmp) { if (tbl == MAINTBL) { val_policingmap_t *ival = reinterpret_cast(GetVal( - req)); + req)); if (NULL == ival) { UPLL_LOG_DEBUG("DupConfigKeyVal val_policingmap_t alloc failure"); return UPLL_RC_ERR_GENERIC; @@ -2313,19 +2270,19 @@ upll_rc_t VbrIfPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } if (tmp1) { tmp1->set_user_data(tmp->get_user_data()); -// tmp = tmp->get_next_cfg_val(); + // tmp = tmp->get_next_cfg_val(); } } void *tkey = (req != NULL) ? (req)->get_key() : NULL; key_vbr_if_t *ikey = reinterpret_cast(tkey); key_vbr_if_t *vbr_if_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); memcpy(vbr_if_key, ikey, sizeof(key_vbr_if_t)); okey = new ConfigKeyVal(UNC_KT_VBRIF_POLICINGMAP, IpctSt::kIpcStKeyVbrIf, vbr_if_key, tmp1); if (!okey) { if (vbr_if_key) free(vbr_if_key); - DELETE_IF_NOT_NULL(tmp1); + DELETE_IF_NOT_NULL(tmp1); UPLL_LOG_DEBUG("okey failed"); return UPLL_RC_ERR_GENERIC; } @@ -2340,6 +2297,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_vbr_if_t *vbr_if_key = NULL; void *pkey = NULL; + bool cfgval_ctrlr = false; + if (parent_key == NULL) { vbr_if_key = reinterpret_cast @@ -2364,7 +2323,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, if ((okey) && (okey->get_key())) { vbr_if_key = reinterpret_cast(okey->get_key()); } else { - vbr_if_key = reinterpret_cast + vbr_if_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); } switch (parent_key->get_key_type()) { @@ -2395,6 +2354,42 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, reinterpret_cast(pkey)->if_name, (kMaxLenInterfaceName + 1)); break; + /* VlanmapOnBoundary: Added vlink case */ + case UNC_KT_VLINK: { + uint8_t *vnode_name; + uint8_t *vnode_ifname; + uint8_t flags = 0; + val_vlink *vlink_val = reinterpret_cast(GetVal(parent_key)); + if (!vlink_val) { + UPLL_LOG_TRACE("ERROR"); + if (!okey || !(okey->get_key())) + FREE_IF_NOT_NULL(vbr_if_key); + return UPLL_RC_ERR_GENERIC; + } + + GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + UPLL_LOG_DEBUG("Vlink flag node position %d", flags); + + if (flags == kVlinkVnode2) { + cfgval_ctrlr = true; + vnode_name = vlink_val->vnode2_name; + vnode_ifname = vlink_val->vnode2_ifname; + } else { + vnode_name = vlink_val->vnode1_name; + vnode_ifname = vlink_val->vnode1_ifname; + } + uuu::upll_strncpy(vbr_if_key->vbr_key.vtn_key.vtn_name, + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + if (vnode_name) + uuu::upll_strncpy(vbr_if_key->vbr_key.vbridge_name, vnode_name, + (kMaxLenVnodeName + 1)); + if (vnode_ifname) + uuu::upll_strncpy(vbr_if_key->if_name, vnode_ifname, + (kMaxLenInterfaceName + 1)); + break; + } default: if (vbr_if_key) free(vbr_if_key); return UPLL_RC_ERR_GENERIC; @@ -2407,10 +2402,18 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } if (!okey) { - okey = new ConfigKeyVal(UNC_KT_VBRIF_POLICINGMAP, - IpctSt::kIpcStKeyVbrIf, vbr_if_key, NULL); + okey = new ConfigKeyVal(UNC_KT_VBRIF_POLICINGMAP, + IpctSt::kIpcStKeyVbrIf, vbr_if_key, NULL); } - SET_USER_DATA(okey, parent_key); + + /* In case of node2 of vlink, set the user_data + * from vlink's cfg_val */ + if (cfgval_ctrlr) { + SET_USER_DATA(okey, parent_key->get_cfg_val()); + } else { + SET_USER_DATA(okey, parent_key); + } + return result_code; } @@ -2427,61 +2430,63 @@ upll_rc_t VbrIfPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, key_vbr_if_t *key_vbrif = NULL; key_vbrif_policingmap_entry_t *key_vbrif_policingmap_entry = NULL; - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); return UPLL_RC_ERR_INVALID_OPTION1; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); return UPLL_RC_ERR_INVALID_OPTION1; } if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (UNC_KT_VBRIF_POLICINGMAP == key->get_key_type()) { - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (key->get_st_num() != IpctSt::kIpcStKeyVbrIf) { UPLL_LOG_DEBUG("Invalid key structure received. struct num - %d", - key->get_st_num()); + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_vbrif = reinterpret_cast(key->get_key()); } else if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == key->get_key_type()) { - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (req->datatype != UPLL_DT_STATE) { - UPLL_LOG_DEBUG(" Unsupported Datatype (%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + UPLL_LOG_DEBUG(" Unsupported Datatype (%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (key->get_st_num() != IpctSt::kIpcStKeyVbrifPolicingmapEntry) { UPLL_LOG_DEBUG("Invalid key structure received. struct num - %d", - key->get_st_num()); + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_vbrif_policingmap_entry = @@ -2501,7 +2506,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, /** Use VbrIfMoMgr api to validate key struct */ VbrIfMoMgr *mgrvbrif = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_IF))); + UNC_KT_VBR_IF))); if (NULL == mgrvbrif) { UPLL_LOG_DEBUG("Unable to get VBR_IF object to validate key_vbrif"); @@ -2549,15 +2554,15 @@ upll_rc_t VbrIfPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" PolicierName syntax validation failed :" - "Err Code - %d", - rt_code); + "Err Code - %d", + rt_code); } return rt_code; } upll_rc_t VbrIfPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; @@ -2580,18 +2585,17 @@ upll_rc_t VbrIfPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, const uint8_t *attrs = NULL; uint32_t max_attrs = 0; - UPLL_LOG_TRACE("ctrlr_name (%s),operation : (%d)", ctrlr_name, req->operation); + UPLL_LOG_TRACE("ctrlr_name (%s),operation : (%d)", + ctrlr_name, + req->operation); switch (req->operation) { case UNC_OP_CREATE: - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), @@ -2600,42 +2604,41 @@ upll_rc_t VbrIfPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, default: if (req->datatype == UPLL_DT_STATE) result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); else result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s)" - " for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + " for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - - - val_policingmap_t *val_policingmap = reinterpret_cast(GetVal(ikey)); - if (val_policingmap) { - if (max_attrs > 0) { - - if ((val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] == UNC_VF_VALID) - || (val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] - == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtn_policingmap::kCapPolicername] == 0) { - val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] = - UNC_VF_NOT_SUPPORTED; - UPLL_LOG_DEBUG("Policername attr is not supported by ctrlr"); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + + val_policingmap_t *val_policingmap = reinterpret_cast + (GetVal(ikey)); + if (val_policingmap) { + if (max_attrs > 0) { + if ((val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] == UNC_VF_VALID) + || (val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] + == UNC_VF_VALID_NO_VALUE)) { + if (attrs[unc::capa::vtn_policingmap::kCapPolicername] == 0) { + val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] = + UNC_VF_NOT_SUPPORTED; + UPLL_LOG_DEBUG("Policername attr is not supported by ctrlr"); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } } + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - } else { - - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - } return UPLL_RC_SUCCESS; } upll_rc_t VbrIfPolicingMapMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, @@ -2652,7 +2655,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); key_vbr_if_t *pkey = reinterpret_cast(ikey->get_key()); if (!pkey) { UPLL_LOG_DEBUG(" Input vbr if policing map key is NULL "); @@ -2709,18 +2712,19 @@ bool VbrIfPolicingMapMoMgr::IsValidKey(void *key, uint64_t index) { } upll_rc_t VbrIfPolicingMapMoMgr::SwapKeyVal(ConfigKeyVal *ikey, - ConfigKeyVal *&okey, - DalDmlIntf *dmi, uint8_t *ctrlr) { + ConfigKeyVal *&okey, + DalDmlIntf *dmi, uint8_t *ctrlr) { return UPLL_RC_SUCCESS; } upll_rc_t VbrIfPolicingMapMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, - const ConfigKeyVal *ckv, - bool *in_use, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; + const ConfigKeyVal *ckv, + bool *in_use, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfPolicingMapMoMgr::TxUpdateController(unc_key_type_t keytype, +upll_rc_t VbrIfPolicingMapMoMgr::TxUpdateController( + unc_key_type_t keytype, uint32_t session_id, uint32_t config_id, uuc::UpdateCtrlrPhase phase, @@ -2747,11 +2751,11 @@ upll_rc_t VbrIfPolicingMapMoMgr::TxUpdateController(unc_key_type_t keytype, return UPLL_RC_ERR_GENERIC; } unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); + op, req, nreq, &dal_cursor_handle, dmi, MAINTBL); while (result_code == UPLL_RC_SUCCESS) { // Get Next Record ck_main = NULL; @@ -2879,41 +2883,42 @@ upll_rc_t VbrIfPolicingMapMoMgr::TxUpdateController(unc_key_type_t keytype, UPLL_LOG_DEBUG("GetVexternalInformation (%d)", vext_datatype); result_code = GetVexternalInformation(ck_main, vext_datatype, pfc_val, - pfc_val_ext, db_flag, dmi); + pfc_val_ext, db_flag, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetVexternalInformation fail"); DELETE_IF_NOT_NULL(ck_main); - free (pfc_val_ext); + free(pfc_val_ext); free(pfc_val); return result_code; } upll_keytype_datatype_t dt_type = (op == UNC_OP_DELETE)? - UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; + UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); ConfigKeyVal *temp_ck_main = NULL; result_code = DupConfigKeyVal(temp_ck_main, req, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DupConfigKeyVal failed %d", result_code); DELETE_IF_NOT_NULL(ck_main); - free (pfc_val_ext); + free(pfc_val_ext); free(pfc_val); return result_code; } result_code = GetRenamedControllerKey(ck_main, dt_type, - dmi, &ctrlr_dom); + dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetRenamedControllerKey fail"); DELETE_IF_NOT_NULL(ck_main); - free (pfc_val_ext); + free(pfc_val_ext); free(pfc_val); break; } if (UNC_OP_DELETE == op) { pfc_val->valid[PFCDRV_IDX_VAL_POLICINGMAP_PM] = UNC_VF_INVALID; } else { - val_policingmap_t* val = reinterpret_cast(GetVal(ck_main)); // req + val_policingmap_t* val = reinterpret_cast + (GetVal(ck_main)); // req UPLL_LOG_DEBUG("val_policingmap_t (%s)", val->policer_name); pfc_val->valid[PFCDRV_IDX_VAL_POLICINGMAP_PM] = UNC_VF_VALID; @@ -2928,14 +2933,14 @@ upll_rc_t VbrIfPolicingMapMoMgr::TxUpdateController(unc_key_type_t keytype, pfc_val)); affected_ctrlr_set->insert - (string(reinterpret_cast(ctrlr_dom.ctrlr))); + (string(reinterpret_cast(ctrlr_dom.ctrlr))); UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); memset(&ipc_resp, 0, sizeof(IpcResponse)); result_code = SendIpcReq(session_id, config_id, op, UPLL_DT_CANDIDATE, - ck_main, &ctrlr_dom, &ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + ck_main, &ctrlr_dom, &ipc_resp); + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG("driver result code - %d", result_code); result_code = UPLL_RC_SUCCESS; } @@ -2970,7 +2975,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetVlinkPortmapConfiguration( return result_code; } if (!flag) { -// return UPLL_RC_SUCCESS; + // return UPLL_RC_SUCCESS; } ConfigKeyVal *ckv = NULL; result_code = GetChildConfigKey(ckv, NULL); @@ -2981,26 +2986,26 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetVlinkPortmapConfiguration( key_vbr_if_t *vbrif_key = reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(pp_key->vbr_key.vtn_key.vtn_name, - vbrif_key->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + vbrif_key->vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); UPLL_LOG_DEBUG("vtn name (%s)", pp_key->vbr_key.vtn_key.vtn_name); uuu::upll_strncpy(pp_key->vbr_key.vbridge_name, - vbrif_key->vbr_key.vbridge_name, - kMaxLenVnodeName + 1); + vbrif_key->vbr_key.vbridge_name, + kMaxLenVnodeName + 1); UPLL_LOG_DEBUG("vbr name (%s)", pp_key->vbr_key.vbridge_name); uuu::upll_strncpy(pp_key->if_name, - vbrif_key->if_name, - kMaxLenInterfaceName + 1); + vbrif_key->if_name, + kMaxLenInterfaceName + 1); UPLL_LOG_DEBUG("vtn name (%s)", pp_key->if_name); UPLL_LOG_DEBUG("dt_type (%d)", dt_type); - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag|kOpInOutCtrlr}; result_code = ReadConfigDB(ckv, dt_type , - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("No Recrods in vbr_if_policingmap Table"); DELETE_IF_NOT_NULL(ckv); @@ -3013,37 +3018,88 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetVlinkPortmapConfiguration( } uint8_t flag_port_map = 0; GET_USER_DATA_FLAGS(ckv, flag_port_map); + val_policingmap_t *val_pm = reinterpret_cast + (GetVal(ckv)); if (flag & VLINK_CONFIGURED) { + if (flag_port_map & SET_FLAG_VLINK) { + UPLL_LOG_DEBUG("Vlink Flag is already set in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } UPLL_LOG_DEBUG("flag & VLINK_CONFIGURED"); flag_port_map |= SET_FLAG_VLINK; } else if (flag & PORTMAP_CONFIGURED) { + if (flag_port_map & SET_FLAG_PORTMAP) { + UPLL_LOG_DEBUG("Port-map Flag is already set in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } UPLL_LOG_DEBUG("flag & PORTMAP_CONFIGURED"); flag_port_map |= SET_FLAG_PORTMAP; } else if (flag & VLINK_PORTMAP_CONFIGURED) { + if (flag_port_map & SET_FLAG_VLINK_PORTMAP) { + UPLL_LOG_DEBUG("Port-map Flag is already set in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } UPLL_LOG_DEBUG("flag & PORTMAP_CONFIGURED"); flag_port_map |= SET_FLAG_VLINK_PORTMAP; } else { - UPLL_LOG_DEBUG("default flag_port_map"); - flag_port_map &= SET_FLAG_NO_VLINK_PORTMAP; + if (flag_port_map & SET_FLAG_NO_VLINK_PORTMAP) { + UPLL_LOG_DEBUG("Port-map Flag is already cleared in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } + UPLL_LOG_DEBUG("default flag_port_map") + flag_port_map &= SET_FLAG_NO_VLINK_PORTMAP; } SET_USER_DATA_FLAGS(ckv, flag_port_map); DbSubOp dbop_up = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; result_code = UpdateConfigDB(ckv, dt_type, UNC_OP_UPDATE, - dmi, &dbop_up, MAINTBL); + dmi, &dbop_up, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failure %d", result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } + + if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { + // Update the controller reference count for policing profile based on the + // value of portmap flag + // 1)Get vbrif associated ctrlr name and invoke the PP and PPE functions to + // check the refcount capability and update the refcount or create the + // record in policingprofilectrltbl and policingprofileentryctrltbl. + // 2)Create the record in policingprofileentryctrltbl + if (flag_port_map & SET_FLAG_PORTMAP) { + // If the portmap flag is configured then increment the reference count + // Set the operation as CREATE + oper = UNC_OP_CREATE; + } else { + // If the portmap flag is not configured/cleared then decrement + // the reference count + // set the operation as DELETE + oper = UNC_OP_DELETE; + } + + result_code = UpdateRefCountInPPCtrlr(ckv, dt_type, dmi, + oper); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Err while updating the policingprofile ctrlr table(%d)", + result_code); + DELETE_IF_NOT_NULL(ckv); + return result_code; + } + } DELETE_IF_NOT_NULL(ckv); return UPLL_RC_SUCCESS; } -upll_rc_t VbrIfPolicingMapMoMgr::GetVexternalInformation(ConfigKeyVal* ck_main, - upll_keytype_datatype_t dt_type, - pfcdrv_val_vbrif_policingmap_t *& pfc_val, - pfcdrv_val_vbrif_vextif_t *&pfc_val_ext, - uint8_t db_flag, DalDmlIntf *dmi) { +upll_rc_t VbrIfPolicingMapMoMgr::GetVexternalInformation( + ConfigKeyVal* ck_main, + upll_keytype_datatype_t dt_type, + pfcdrv_val_vbrif_policingmap_t *& pfc_val, + pfcdrv_val_vbrif_vextif_t *&pfc_val_ext, + uint8_t db_flag, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; uint8_t* vexternal = reinterpret_cast @@ -3055,36 +3111,36 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetVexternalInformation(ConfigKeyVal* ck_main, if ((db_flag & SET_FLAG_PORTMAP) || (db_flag & SET_FLAG_VLINK_PORTMAP)) { UPLL_LOG_DEBUG("SET_FLAG_PORTMAP SET_FLAG_VLINK_PORTMAP"); key_vbr_if_t * temp_key = - reinterpret_cast(ck_main->get_key()); + reinterpret_cast(ck_main->get_key()); VbrIfMoMgr *mgrvbrif = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_IF))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_IF))); result_code = mgrvbrif->GetChildConfigKey(ckv, NULL); key_vbr_if_t *vbr_if_key = reinterpret_cast - (ckv->get_key()); + (ckv->get_key()); uuu::upll_strncpy(vbr_if_key->vbr_key.vtn_key.vtn_name, - temp_key->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + temp_key->vbr_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); UPLL_LOG_DEBUG("vtn name from temp_key (%s)", vbr_if_key->vbr_key.vtn_key.vtn_name); uuu::upll_strncpy(vbr_if_key->vbr_key.vbridge_name, - temp_key->vbr_key.vbridge_name, - kMaxLenVnodeName + 1); + temp_key->vbr_key.vbridge_name, + kMaxLenVnodeName + 1); UPLL_LOG_DEBUG("vbr name from temp_key (%s)", vbr_if_key->vbr_key.vbridge_name); uuu::upll_strncpy(vbr_if_key->if_name, - temp_key->if_name, - kMaxLenInterfaceName + 1); + temp_key->if_name, + kMaxLenInterfaceName + 1); UPLL_LOG_DEBUG("vbrif name from temp_key (%s)", vbr_if_key->if_name); result_code = mgrvbrif->GetVexternal(ckv, dt_type, dmi, - vexternal, vex_if, flags); + vexternal, vex_if, flags); if (UPLL_RC_SUCCESS != result_code) { free(vex_if); free(vexternal); @@ -3093,14 +3149,14 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetVexternalInformation(ConfigKeyVal* ck_main, } uuu::upll_strncpy(pfc_val_ext->vexternal_name, - vexternal, - kMaxLenVnodeName + 1); + vexternal, + kMaxLenVnodeName + 1); pfc_val_ext->valid[PFCDRV_IDX_VEXTERNAL_NAME_VBRIF] = UNC_VF_VALID; UPLL_LOG_DEBUG("vexternal name (%s)", pfc_val_ext->vexternal_name); uuu::upll_strncpy(pfc_val_ext->vext_if_name, - vex_if, - kMaxLenInterfaceName + 1); + vex_if, + kMaxLenInterfaceName + 1); pfc_val_ext->valid[PFCDRV_IDX_VEXT_IF_NAME_VBRIF] = UNC_VF_VALID; UPLL_LOG_DEBUG("vex_if (%s)", pfc_val_ext->vext_if_name); @@ -3137,10 +3193,10 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadDetailResponse( return result_code; } val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); val_policingmap_t *out_val_policingmap = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); memcpy(out_val_policingmap, val_policingmap, sizeof(val_policingmap_t)); tmp_okey->AppendCfgVal(IpctSt::kIpcStValPolicingmap, out_val_policingmap); temp_cfg_val = drv_resp_ckv->get_cfg_val(); @@ -3205,8 +3261,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadDetailResponse( out_val_entry_st); tmp_okey->AppendCfgVal(IpctSt::kIpcStValPolicingprofileEntry, out_val_ppe); - delete tkey; - tkey = NULL; + delete tkey; + tkey = NULL; if ((temp_cfg_val = temp_cfg_val->get_next_cfg_val()) == NULL) { UPLL_LOG_DEBUG("No val_policingmap_switch_st in configkeyval"); continue; @@ -3225,13 +3281,13 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadDetailResponse( val_policingmap_switch_st_t *drv_val_switch_st = reinterpret_cast (temp_cfg_val->get_val()); - memcpy(val_switch_st, drv_val_switch_st, + memcpy(val_switch_st, drv_val_switch_st, sizeof(val_policingmap_switch_st_t)); - if(drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { + if (drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { key_vbr_if_t *vbrif_pm_key = reinterpret_cast(ikey->get_key()); ConfigKeyVal *vbrif_key_val = NULL; - unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = + unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_VBR_IF))); if (NULL == vbrifmgr) { @@ -3245,7 +3301,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadDetailResponse( vbrif_key_val, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", + UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", result_code); free(val_switch_st); delete tmp_okey; @@ -3282,9 +3338,9 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadDetailResponse( } upll_rc_t VbrIfPolicingMapMoMgr::ReadDTStateNormal( - IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *dup_key = NULL; DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr}; @@ -3295,7 +3351,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadDTStateNormal( return result_code; } result_code = ReadConfigDB(dup_key, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed"); DELETE_IF_NOT_NULL(dup_key); @@ -3308,23 +3364,28 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadDTStateNormal( return UPLL_RC_ERR_GENERIC; } val_policingmap_t *out_pm_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); memcpy(out_pm_val, val_pm, sizeof(val_policingmap_t)); ikey->AppendCfgVal(IpctSt::kIpcStValPolicingmap, out_pm_val); key_vbrif_policingmap_entry *key = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); PolicingProfileEntryMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); GET_USER_DATA_CTRLR(dup_key, ctrlr_id); ConfigKeyVal *ppe_ckv = NULL; - result_code = mgr->ReadPolicingProfileEntry(reinterpret_cast - (val_pm->policer_name), key->sequence_num, - reinterpret_cast(ctrlr_id), dmi, req->datatype, ppe_ckv); + result_code = mgr->ReadPolicingProfileEntry( + reinterpret_cast + (val_pm->policer_name), + key->sequence_num, + reinterpret_cast(ctrlr_id), + dmi, + req->datatype, + ppe_ckv); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadPolicingProfileEntry failed %d", result_code); return result_code; @@ -3336,21 +3397,21 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadDTStateNormal( reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); memcpy(out_temp_val_policingprofile, temp_val_policingprofile, - sizeof(val_policingprofile_entry_t)); + sizeof(val_policingprofile_entry_t)); ikey->AppendCfgVal(IpctSt::kIpcStValPolicingprofileEntry, - out_temp_val_policingprofile); + out_temp_val_policingprofile); return UPLL_RC_SUCCESS; } upll_rc_t VbrIfPolicingMapMoMgr:: ReadSiblingDTsateNormal( - ConfigKeyVal *ikey, - ConfigKeyVal* tctrl_key, - upll_keytype_datatype_t dt_type, - DbSubOp dbop, - DalDmlIntf *dmi, - ConfigKeyVal **resp_key, - int count) { + ConfigKeyVal *ikey, + ConfigKeyVal* tctrl_key, + upll_keytype_datatype_t dt_type, + DbSubOp dbop, + DalDmlIntf *dmi, + ConfigKeyVal **resp_key, + int count) { upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal* tkey = NULL; ConfigKeyVal* okey = NULL; @@ -3358,8 +3419,8 @@ upll_rc_t VbrIfPolicingMapMoMgr:: ReadSiblingDTsateNormal( result_code = DupConfigKeyVal(okey, ikey, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal Faill in dup_key"); - return result_code; + UPLL_LOG_DEBUG("DupConfigKeyVal Faill in dup_key"); + return result_code; } val_pm = reinterpret_cast(GetVal(tctrl_key)); @@ -3369,65 +3430,66 @@ upll_rc_t VbrIfPolicingMapMoMgr:: ReadSiblingDTsateNormal( return UPLL_RC_ERR_GENERIC; } val_policingmap_t *val_polmap = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); memcpy(val_polmap, val_pm, sizeof(val_policingmap_t)); okey->AppendCfgVal(IpctSt::kIpcStValPolicingmap, val_polmap); key_vbrif_policingmap_entry *key = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_policingprofile_entry_t *key_policingprofile_entry = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbrif_policingmap_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vbrif_policingmap_entry_t))); key_policingprofile_entry->sequence_num = key->sequence_num; uuu::upll_strncpy( - key_policingprofile_entry->policingprofile_key.policingprofile_name, - val_pm->policer_name, - (kMaxLenPolicingProfileName+1)); + key_policingprofile_entry->policingprofile_key.policingprofile_name, + val_pm->policer_name, + (kMaxLenPolicingProfileName+1)); tkey = new ConfigKeyVal(UNC_KT_POLICING_PROFILE_ENTRY, IpctSt::kIpcStKeyPolicingprofileEntry, key_policingprofile_entry, NULL); PolicingProfileEntryMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); UPLL_LOG_DEBUG("Policer name and seq num (%s) (%d)", - key_policingprofile_entry->policingprofile_key.policingprofile_name, - key_policingprofile_entry->sequence_num); + key_policingprofile_entry-> + policingprofile_key.policingprofile_name, + key_policingprofile_entry->sequence_num); result_code = mgr->ReadDetailEntry( - tkey, dt_type, dbop, dmi); + tkey, dt_type, dbop, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadDetailEntry failed"); - DELETE_IF_NOT_NULL(tkey); - delete okey; - return result_code; + UPLL_LOG_DEBUG("ReadDetailEntry failed"); + DELETE_IF_NOT_NULL(tkey); + delete okey; + return result_code; } if (GetVal(tkey)) { val_policingprofile_entry_t *temp_val_policingprofile = reinterpret_cast (tkey->get_cfg_val()->get_val()); - val_policingprofile_entry_t* val_pp_entry = + val_policingprofile_entry_t* val_pp_entry = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); - memcpy(val_pp_entry, temp_val_policingprofile, - sizeof(val_policingprofile_entry_t)); + memcpy(val_pp_entry, temp_val_policingprofile, + sizeof(val_policingprofile_entry_t)); okey->AppendCfgVal(IpctSt::kIpcStValPolicingprofileEntry, - val_pp_entry); + val_pp_entry); } if (!count) { UPLL_LOG_DEBUG("count is 0"); *resp_key = okey; } else { - UPLL_LOG_DEBUG("AppendCfgKeyVal in resp_key"); - (*resp_key)->AppendCfgKeyVal(okey); + UPLL_LOG_DEBUG("AppendCfgKeyVal in resp_key"); + (*resp_key)->AppendCfgKeyVal(okey); } return UPLL_RC_SUCCESS; } @@ -3450,7 +3512,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadEntryDetailResponse( return result_code; } val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); val_policingmap_t *out_val_policingmap = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); @@ -3520,7 +3582,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadEntryDetailResponse( out_val_ppe); delete tkey; tkey = NULL; - + if ((temp_cfg_val = temp_cfg_val->get_next_cfg_val()) == NULL) { UPLL_LOG_DEBUG("Next Value structure is null"); continue; @@ -3537,13 +3599,13 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadEntryDetailResponse( val_policingmap_switch_st_t *drv_val_switch_st = reinterpret_cast (temp_cfg_val->get_val()); - memcpy(val_switch_st, drv_val_switch_st, + memcpy(val_switch_st, drv_val_switch_st, sizeof(val_policingmap_switch_st_t)); - if(drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { + if (drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { key_vbrif_policingmap_entry *vbrif_pme_key = reinterpret_cast(ikey->get_key()); ConfigKeyVal *vbrif_key_val = NULL; - unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = + unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_VBR_IF))); if (NULL == vbrifmgr) { @@ -3558,7 +3620,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadEntryDetailResponse( dmi); if ((result_code != UPLL_RC_SUCCESS) && (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", + UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", result_code); if (val_switch_st) free(val_switch_st); DELETE_IF_NOT_NULL(tmp_okey); @@ -3568,16 +3630,16 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadEntryDetailResponse( if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { key_vbr_if_t *key_vbrif = reinterpret_cast - (vbrif_key_val->get_key()); + (vbrif_key_val->get_key()); val_switch_st->valid[UPLL_IDX_VBR_NAME_PMSS] = UNC_VF_VALID; uuu::upll_strncpy(val_switch_st->vbr_name, - key_vbrif->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + key_vbrif->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] = UNC_VF_VALID; uuu::upll_strncpy(val_switch_st->if_name, - key_vbrif->if_name, - (kMaxLenInterfaceName + 1)); + key_vbrif->if_name, + (kMaxLenInterfaceName + 1)); } DELETE_IF_NOT_NULL(vbrif_key_val); } @@ -3600,8 +3662,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ConstructReadEntryDetailResponse( upll_rc_t VbrIfPolicingMapMoMgr::ReadEntryDetailRecord(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *l_key = NULL; @@ -3677,7 +3739,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadEntryDetailRecord(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR_DOMAIN(temp_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability(req, ikey, reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(dup_key); @@ -3757,9 +3820,13 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadEntryDetailRecord(IpcReqRespHeader *req, return ipc_response.header.result_code; } ConfigKeyVal *okey = NULL; - result_code = ConstructReadEntryDetailResponse(dup_key, ipc_response.ckv_data, - req->datatype, req->operation, - dbop, dmi, &okey); + result_code = ConstructReadEntryDetailResponse(dup_key, + ipc_response.ckv_data, + req->datatype, + req->operation, + dbop, + dmi, + &okey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ReadSiblingDetail Error (%d)", result_code); DELETE_IF_NOT_NULL(dup_key); @@ -3774,67 +3841,66 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadEntryDetailRecord(IpcReqRespHeader *req, } upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, - ConfigKeyVal* ikey, - DalDmlIntf *dmi) { + ConfigKeyVal* ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; - } + controller_domain ctrlr_dom; + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; + } if (UNC_KT_VBRIF_POLICINGMAP_ENTRY != ikey->get_key_type()) { - if(req->datatype == UPLL_DT_STATE || - req->datatype == UPLL_DT_STARTUP || - req->datatype == UPLL_DT_RUNNING || - req->datatype == UPLL_DT_CANDIDATE ) { - result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); - return result_code; - } else { - UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", - req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - - } - if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) - if(req->datatype != UPLL_DT_STATE) { - UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", - req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + if (req->datatype == UPLL_DT_STATE || + req->datatype == UPLL_DT_STARTUP || + req->datatype == UPLL_DT_RUNNING || + req->datatype == UPLL_DT_CANDIDATE ) { + result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); + return result_code; + } else { + UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } } + if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) + if (req->datatype != UPLL_DT_STATE) { + UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } ConfigKeyVal *temp_vbr_if_key = NULL; key_vbrif_policingmap_entry_t *vbrif_entry_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); result_code = GetReadVbrIfKey(temp_vbr_if_key, ikey); DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; result_code = ReadConfigDB(temp_vbr_if_key, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); delete temp_vbr_if_key; return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(temp_vbr_if_key)); + (GetVal(temp_vbr_if_key)); ConfigKeyVal *ppe_ckv = NULL; result_code = ConstructPpeCkv(ppe_ckv, reinterpret_cast - (val_pm->policer_name), - vbrif_entry_key->sequence_num); + (val_pm->policer_name), + vbrif_entry_key->sequence_num); PolicingProfileEntryMoMgr *mgr = reinterpret_cast - - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); + + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); if (!mgr) { delete ppe_ckv; return UPLL_RC_ERR_GENERIC; } IpcReqRespHeader *temp_req = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); memcpy(temp_req, req, sizeof(IpcReqRespHeader)); temp_req->option1 = UNC_OPT1_NORMAL; temp_req->operation = UNC_OP_READ_SIBLING_BEGIN; @@ -3850,8 +3916,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, ConfigKeyVal *temp_ppe_ckv = ppe_ckv; uint8_t sibling_count = 0; while (temp_ppe_ckv !=NULL) { - sibling_count++; - temp_ppe_ckv = temp_ppe_ckv->get_next_cfg_key_val(); + sibling_count++; + temp_ppe_ckv = temp_ppe_ckv->get_next_cfg_key_val(); } uint32_t *sib_count = reinterpret_cast(ConfigKeyVal::Malloc(sizeof(uint32_t))); @@ -3862,8 +3928,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, } upll_rc_t VbrIfPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("Audit Create for VbrIfPolicingMapMoMgr called!!!"); if (NULL == ikey || NULL == dmi) { @@ -3873,7 +3939,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); if (result_code != UPLL_RC_SUCCESS && @@ -3896,11 +3962,11 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (ConfigKeyVal::Malloc - (sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc + (sizeof(val_policingmap_t))); pfcdrv_val_vbrif_policingmap *pfc_val = - reinterpret_cast - (GetVal(ikey)); + reinterpret_cast + (GetVal(ikey)); if (NULL == pfc_val) { return UPLL_RC_ERR_GENERIC; } @@ -3948,13 +4014,15 @@ upll_rc_t VbrIfPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return result_code; } -upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, +upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController( + unc_key_type_t keytype, const char *ctrlr_id, uint32_t session_id, uint32_t config_id, uuc::UpdateCtrlrPhase phase1, - bool *ctrlr_affected, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result = uud::kDalRcSuccess; @@ -3972,7 +4040,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, // Skipping the create phase if it comes as an input. // vbr if policingmap should get applied on controller(pfc) if portmap is // configured. - // The portmap request should come in the update phase so + // The portmap request should come in the update phase so // the vbrif policingmap creation should also be applied during update phase. if (phase1 == uuc::kUpllUcpCreate) { return result_code; @@ -3988,60 +4056,74 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, nop = 1; } for (int i = 0; i < nop; i++) { + cursor = NULL; unc_keytype_operation_t op1 = op[i]; uuc::UpdateCtrlrPhase phase = (op[i] == UNC_OP_UPDATE)?uuc::kUpllUcpUpdate: - ((op[i] == UNC_OP_CREATE)?uuc::kUpllUcpCreate: - ((op[i] == UNC_OP_DELETE)?uuc::kUpllUcpDelete:uuc::kUpllUcpInvalid)); + ((op[i] == UNC_OP_CREATE)?uuc::kUpllUcpCreate: + ((op[i] == UNC_OP_DELETE)?uuc::kUpllUcpDelete:uuc::kUpllUcpInvalid)); /* retreives the delta of running and audit configuration */ - UPLL_LOG_DEBUG("Operation is %d", op[i]); + UPLL_LOG_DEBUG("Operation is %d", op[i]); result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op[i], - ckv_running_db, ckv_audit_db, - &cursor, dmi, ctrlr, tbl); + ckv_running_db, ckv_audit_db, + &cursor, dmi, ctrlr, tbl); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("No Diff found for operation %d", op[i]); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + continue; + } if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return result_code; } if (cursor == NULL) { UPLL_LOG_DEBUG("cursor is null"); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return UPLL_RC_ERR_GENERIC; } while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { op1 = op[i]; if (phase != uuc::kUpllUcpDelete) { uint8_t *db_ctrlr = NULL; - GET_USER_DATA_CTRLR(ckv_running_db,db_ctrlr); + GET_USER_DATA_CTRLR(ckv_running_db, db_ctrlr); UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", - db_ctrlr, ctrlr_id); + db_ctrlr, ctrlr_id); // Skipping the controller ID if the controller id in DB and // controller id available for Audit are not the same - if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), - reinterpret_cast(ctrlr_id), - strlen(reinterpret_cast(ctrlr_id)))) { + if (db_ctrlr && strncmp( + reinterpret_cast(db_ctrlr), + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast(ctrlr_id)))) { continue; } } /* ignore records of another controller for create and update operation */ UPLL_LOG_DEBUG("Diff Record: Keytype: Operation: is %d\n %d\n %s\n", - keytype, op[i], ckv_running_db->ToStrAll().c_str()); + keytype, op[i], ckv_running_db->ToStrAll().c_str()); switch (phase) { case uuc::kUpllUcpDelete: UPLL_LOG_TRACE("Deleted record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); result_code = GetChildConfigKey(ckv_driver_req, ckv_running_db); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); dmi->CloseCursor(cursor, true); return result_code; } break; case uuc::kUpllUcpCreate: UPLL_LOG_TRACE("Created record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } @@ -4050,27 +4132,33 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, ckv_audit_dup_db = NULL; ckv_driver_req = NULL; UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_audit_db->ToStrAll().c_str()); + ckv_audit_db->ToStrAll().c_str()); result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record." + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. " + "err_code & phase %d %d", result_code, phase); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } break; default: UPLL_LOG_DEBUG("Invalid operation %d", phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return UPLL_RC_ERR_NO_SUCH_OPERATION; break; } @@ -4079,6 +4167,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, UPLL_LOG_INFO("controller id or domain is NULL"); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } @@ -4101,43 +4191,62 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, continue; } } - if (UNC_OP_UPDATE == op1) { + if (UNC_OP_UPDATE == op1) { void *running_val = NULL; bool invalid_attr = false; running_val = GetVal(ckv_driver_req); invalid_attr = FilterAttributes(running_val, - GetVal(ckv_audit_dup_db), false, UNC_OP_UPDATE); + GetVal(ckv_audit_dup_db), + false, + UNC_OP_UPDATE); if (invalid_attr) { DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); + // Assuming that the diff found only in ConfigStatus + // Setting the value as OnlyCSDiff in the out parameter + // ctrlr_affected. + // The value Configdiff should be given more priority than the value + // onlycs . + // So If the out parameter ctrlr_affected has already value as + // configdiff then dont change the value + if (*ctrlr_affected != uuc::kCtrlrAffectedConfigDiff) { + UPLL_LOG_INFO("Setting the ctrlr_affected to OnlyCSDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedOnlyCSDiff; + } continue; } } DELETE_IF_NOT_NULL(ckv_audit_dup_db); pfcdrv_val_vbrif_policingmap *pfc_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_policingmap_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_policingmap_t))); pfcdrv_val_vbrif_vextif *pfc_val_ext = - reinterpret_cast\ - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); + reinterpret_cast\ + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); if (UNC_OP_DELETE == op1) { vext_datatype = UPLL_DT_AUDIT; } else { vext_datatype = UPLL_DT_RUNNING; } UPLL_LOG_DEBUG("GetVexternalInformation (%d)", vext_datatype); - result_code = GetVexternalInformation(ckv_driver_req, vext_datatype, pfc_val, - pfc_val_ext, db_flag, dmi); + result_code = GetVexternalInformation(ckv_driver_req, + vext_datatype, + pfc_val, + pfc_val_ext, + db_flag, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetVexternalInformation fail"); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - val_policingmap_t* val = reinterpret_cast(GetVal(ckv_running_db)); + ctrlr_dom.domain); + val_policingmap_t* val = reinterpret_cast + (GetVal(ckv_running_db)); UPLL_LOG_DEBUG("val_policingmap_t (%s)", val->policer_name); pfc_val->valid[PFCDRV_IDX_VAL_POLICINGMAP_PM] = UNC_VF_VALID; @@ -4145,26 +4254,30 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, pfc_val->valid[PFCDRV_IDX_VAL_VBRIF_VEXTIF_PM] = UNC_VF_VALID; memcpy(&pfc_val->val_vbrif_vextif, pfc_val_ext, - sizeof(pfcdrv_val_vbrif_vextif_t)); + sizeof(pfcdrv_val_vbrif_vextif_t)); ConfigKeyVal::Free(pfc_val_ext); - ckv_driver_req->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValVbrifPolicingmap, - pfc_val)); + ckv_driver_req->SetCfgVal(new ConfigVal( + IpctSt::kIpcStPfcdrvValVbrifPolicingmap, + pfc_val)); upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? - UPLL_DT_AUDIT : UPLL_DT_RUNNING; + UPLL_DT_AUDIT : UPLL_DT_RUNNING; result_code = GetRenamedControllerKey(ckv_driver_req, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + dmi, &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return result_code; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); IpcResponse ipc_response; memset(&ipc_response, 0, sizeof(IpcResponse)); IpcRequest ipc_req; @@ -4174,70 +4287,105 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, ipc_req.header.operation = op1; ipc_req.header.datatype = UPLL_DT_CANDIDATE; ipc_req.ckv_data = ckv_driver_req; - if (!uui::IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, reinterpret_cast - (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { + if (!uui::IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, + reinterpret_cast + (ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_response)) { UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv_driver_req->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); + ckv_driver_req->get_key_type(), + reinterpret_cast(ctrlr_dom.ctrlr)); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } - if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("driver return failure err_code is %d", ipc_response.header.result_code); - ConfigKeyVal *resp = NULL; - result_code = GetChildConfigKey(resp,ipc_response.ckv_data); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed for ipc response ckv err_code %d", - result_code); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - DELETE_IF_NOT_NULL(ckv_driver_req); - dmi->CloseCursor(cursor, true); - return result_code; - } - pfcdrv_val_vbrif_policingmap *pfc_val_out = - reinterpret_cast - (GetVal(ipc_response.ckv_data)); - if (NULL == pfc_val_out) { - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; - } - val_policingmap_t *out_val_pm = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof - (val_policingmap_t))); - memcpy(out_val_pm, &pfc_val_out->val_policing_map, - sizeof(val_policingmap_t)); - resp->AppendCfgVal(IpctSt::kIpcStValPolicingmap, out_val_pm); - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, phase, resp); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Update Audit config status failed %d", - result_code); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; - } - result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, - dmi, tbl); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response ckv err_code %d", - result_code); + if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("driver return failure err_code is %d", + ipc_response.header.result_code); + *err_ckv = ckv_running_db; + if (phase != uuc::kUpllUcpDelete) { + ConfigKeyVal *resp = NULL; + result_code = GetChildConfigKey(resp, ipc_response.ckv_data); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed for" + "ipc response ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + dmi->CloseCursor(cursor, true); + return result_code; + } + pfcdrv_val_vbrif_policingmap *pfc_val_out = + reinterpret_cast + (GetVal(ipc_response.ckv_data)); + if (NULL == pfc_val_out) { + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + val_policingmap_t *out_val_pm = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof + (val_policingmap_t))); + memcpy(out_val_pm, &pfc_val_out->val_policing_map, + sizeof(val_policingmap_t)); + resp->AppendCfgVal(IpctSt::kIpcStValPolicingmap, out_val_pm); + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + phase, + resp, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Update Audit config status failed %d", + result_code); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + dmi->CloseCursor(cursor, true); + return result_code; + } + result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, + dmi, tbl); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc" + "response ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + dmi->CloseCursor(cursor, true); + return result_code; + } DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ckv_driver_req); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - dmi->CloseCursor(cursor, true); - return result_code; } - DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + dmi->CloseCursor(cursor, true); + return ipc_response.header.result_code; } DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); - *ctrlr_affected = true; + if (*ctrlr_affected == uuc::kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Reset ctrlr state from OnlyCSDiff to ConfigDiff"); + } + // *ctrlr_affected = true; + *ctrlr_affected = uuc::kCtrlrAffectedConfigDiff; } dmi->CloseCursor(cursor, true); DELETE_IF_NOT_NULL(ckv_running_db); @@ -4249,12 +4397,14 @@ upll_rc_t VbrIfPolicingMapMoMgr::AuditUpdateController(unc_key_type_t keytype, result_code = DalToUpllResCode(db_result); } result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; + ? UPLL_RC_SUCCESS : result_code; return result_code; } -upll_rc_t VbrIfPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type,DalDmlIntf *dmi) { +upll_rc_t VbrIfPolicingMapMoMgr::DeleteChildrenPOM( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; @@ -4274,8 +4424,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain }; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -4288,16 +4438,25 @@ upll_rc_t VbrIfPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(okey); return result_code; } - val_policingmap_t *val_pm = reinterpret_cast - (GetVal(okey)); - if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { - result_code = UpdateRefCountInPPCtrlr(okey, dt_type, dmi, - UNC_OP_DELETE); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Error DB (%d)", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; + + ConfigKeyVal *temp_okey = okey; + while (temp_okey != NULL) { + val_policingmap_t *val_pm = reinterpret_cast + (GetVal(temp_okey)); + if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { + uint8_t flag_port_map = 0; + GET_USER_DATA_FLAGS(okey, flag_port_map); + if (flag_port_map & SET_FLAG_PORTMAP) { + result_code = UpdateRefCountInPPCtrlr(temp_okey, dt_type, dmi, + UNC_OP_DELETE); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Error DB (%d)", result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + } } + temp_okey = temp_okey->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(okey); // Delete the record in vbrifpolicingmap table @@ -4311,7 +4470,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo Failed. UpdateConfigdb failed to delete - %d", - result_code); + result_code); DELETE_IF_NOT_NULL(temp_ikey); return result_code; } @@ -4366,9 +4525,9 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } bool VbrIfPolicingMapMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); @@ -4376,11 +4535,11 @@ bool VbrIfPolicingMapMoMgr::FilterAttributes(void *&val1, } upll_rc_t VbrIfPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *vbrif_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingmap_t *vbr_pm; @@ -4398,34 +4557,39 @@ upll_rc_t VbrIfPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *vbrif_key, return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("%s", (vbrif_key->ToStrAll()).c_str()); - val_policingmap_t *vbr_val2 = reinterpret_cast(GetVal(upd_key)); + val_policingmap_t *vbr_val2 = reinterpret_cast + (GetVal(upd_key)); if (UNC_OP_UPDATE == op) { UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); vbr_pm->cs_row_status = vbr_val2->cs_row_status; } if (UNC_VF_NOT_SUPPORTED == vbr_pm->valid[0]) { - vbr_pm->cs_attr[0] = UNC_CS_NOT_SUPPORTED; + vbr_pm->cs_attr[0] = UNC_CS_NOT_SUPPORTED; } else if ((UNC_VF_VALID == vbr_pm->valid[0]) - || (UNC_VF_VALID_NO_VALUE == vbr_pm->valid[0])) { - vbr_pm->cs_attr[0] = cs_status; + || (UNC_VF_VALID_NO_VALUE == vbr_pm->valid[0])) { + vbr_pm->cs_attr[0] = cs_status; } else if ((UNC_VF_INVALID == vbr_pm->valid[0]) && (UNC_OP_CREATE == op)) { - vbr_pm->cs_attr[0] = UNC_CS_NOT_APPLIED; + vbr_pm->cs_attr[0] = UNC_CS_NOT_APPLIED; } else if ((UNC_VF_INVALID == vbr_pm->valid[0]) && (UNC_OP_UPDATE == op)) { - vbr_pm->cs_attr[0] = vbr_val2->cs_attr[0]; + vbr_pm->cs_attr[0] = vbr_val2->cs_attr[0]; } return result_code; } upll_rc_t VbrIfPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t &rename) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t &rename) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("VbrIfPolicingMapMoMgr IsRenamed"); + if (NULL == ikey) { + UPLL_LOG_DEBUG("ikey NULL"); + return UPLL_RC_ERR_GENERIC; + } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; ConfigKeyVal *okey = NULL; upll_rc_t result_code; /* rename is set implies user wants the ikey @@ -4435,41 +4599,44 @@ upll_rc_t VbrIfPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("UNC_KT_VBRIF_POLICINGMAP"); result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Returning error %d",result_code); + UPLL_LOG_TRACE("Returning error %d", result_code); return result_code; } } else if (UNC_KT_VBRIF_POLICINGMAP_ENTRY == ikey->get_key_type()) { UPLL_LOG_DEBUG("UNC_KT_VBRIF_POLICINGMAP_CONTROLLER"); key_vbr_if_t *out_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); key_vbrif_policingmap_entry_t *in_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uuu::upll_strncpy(out_key->vbr_key.vtn_key.vtn_name, - in_key->vbrif_key.vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + in_key->vbrif_key.vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(out_key->vbr_key.vbridge_name, - in_key->vbrif_key.vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + in_key->vbrif_key.vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); uuu::upll_strncpy(out_key->if_name, - in_key->vbrif_key.if_name, - (kMaxLenVnodeName + 1)); + in_key->vbrif_key.if_name, + (kMaxLenVnodeName + 1)); okey = new ConfigKeyVal(UNC_KT_VBRIF_POLICINGMAP, - IpctSt::kIpcStKeyVbrIf, - out_key, NULL); + IpctSt::kIpcStKeyVbrIf, + out_key, NULL); + } else { + UPLL_LOG_DEBUG("Invalid KeyType"); + return UPLL_RC_ERR_GENERIC; } } else { okey = ikey; } result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Returning error code %d",result_code); + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("Returning error code %d", result_code); if (okey != ikey) DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; @@ -4479,14 +4646,14 @@ upll_rc_t VbrIfPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ikey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA_CTRLR_DOMAIN(okey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA(ikey,okey); + SET_USER_DATA(ikey, okey); rename &= RENAME; if (okey != ikey) DELETE_IF_NOT_NULL(okey); @@ -4494,12 +4661,12 @@ upll_rc_t VbrIfPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, } upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_pm) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -4512,8 +4679,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBR_IF))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBR_IF))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -4534,10 +4701,12 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *pp_ckv = NULL; result_code = GetPolicingProfileConfigKey(reinterpret_cast - (val_pm->policer_name), pp_ckv, dmi); + (val_pm->policer_name), + pp_ckv, + dmi); MoMgrImpl *pp_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (NULL == pp_mgr) { UPLL_LOG_DEBUG("pp_mgr is NULL"); DELETE_IF_NOT_NULL(pp_ckv); @@ -4551,7 +4720,8 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (pp_rename & 0x01) { - rename |= POLICINGPROFILE_RENAME; // TODO Check for correct flag value + rename |= POLICINGPROFILE_RENAME; // TODO(upll) : Check for + // correct flag value } DELETE_IF_NOT_NULL(pp_ckv); } @@ -4566,7 +4736,7 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } DbSubOp dbop1 = {kOpReadSingle, kOpMatchNone, kOpInOutFlag}; result_code = ReadConfigDB(dup_ckv, req->datatype, UNC_OP_READ, - dbop1, dmi, MAINTBL); + dbop1, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(dup_ckv); @@ -4576,11 +4746,14 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(dup_ckv); if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { ConfigKeyVal *pp_ckv = NULL; - result_code = GetPolicingProfileConfigKey(reinterpret_cast - (val_pm->policer_name), pp_ckv, dmi); + result_code = GetPolicingProfileConfigKey( + reinterpret_cast + (val_pm->policer_name), + pp_ckv, + dmi); MoMgrImpl *pp_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (NULL == pp_mgr) { UPLL_LOG_DEBUG("pp_mgr is NULL"); DELETE_IF_NOT_NULL(pp_ckv); @@ -4594,14 +4767,16 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (pp_rename & 0x01) { - rename |= POLICINGPROFILE_RENAME; // TODO Check for correct flag value + rename |= POLICINGPROFILE_RENAME; // TODO(upll): Check for + // correct flag value } else { rename &= NO_POLICINGPROFILE_RENAME; } DELETE_IF_NOT_NULL(pp_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_pm->valid [UPLL_IDX_POLICERNAME_PM]) { - rename &= NO_POLICINGPROFILE_RENAME; // TODO Check for correct flag value. No rename flowlist value should be set + rename &= NO_POLICINGPROFILE_RENAME; // TODO(upll): Check for correct + // flag value. No rename flowlist value should be set } SET_USER_DATA_FLAGS(ikey, rename); } @@ -4609,13 +4784,13 @@ upll_rc_t VbrIfPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VbrIfPolicingMapMoMgr::GetPolicingProfileConfigKey( - const char *pp_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *pp_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + UNC_KT_POLICING_PROFILE))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -4624,10 +4799,10 @@ upll_rc_t VbrIfPolicingMapMoMgr::GetPolicingProfileConfigKey( key_policingprofile_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->policingprofile_name, - pp_name, - (kMaxLenPolicingProfileName+1)); + pp_name, + (kMaxLenPolicingProfileName+1)); return UPLL_RC_SUCCESS; } -} // kt_momgr -} // upll -} // unc +} // namespace kt_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/vbr_if_policingmap_momgr.hh b/coordinator/modules/upll/vbr_if_policingmap_momgr.hh index 4cc3039a..134ff300 100644 --- a/coordinator/modules/upll/vbr_if_policingmap_momgr.hh +++ b/coordinator/modules/upll/vbr_if_policingmap_momgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -34,7 +34,6 @@ class VbrIfPolicingMapMoMgr : public MoMgrImpl { static BindInfo vbrifpolicingmap_bind_info[]; static BindInfo key_vbrifpm_maintbl_rename_bind_info[]; static BindInfo key_vbrifpm_policyname_maintbl_rename_bind_info[]; - uint32_t cur_instance_count; /** * @Brief Validates the syntax of the specified key and value structure * for KT_VBR_POLICINGMAP keytype @@ -103,7 +102,7 @@ class VbrIfPolicingMapMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Generic Errors. */ upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi, bool restore_flag = false); /** * @Brief This API is used to delete the record (VbrIf name with @@ -360,9 +359,10 @@ class VbrIfPolicingMapMoMgr : public MoMgrImpl { /** * @Brief This API updates the Configuration status for AuditConfigiration * - * @param[in] ctrlr_rslt Pointer to ConfigkeyVal class. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] phase Describes the phase of controller. * @param[in] ckv_running Pointer to ConfigkeyVal. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RC_SUCCESS Successful completion. * @retval UPLL_RC_ERR_GENERIC Generic Errors. @@ -370,7 +370,9 @@ class VbrIfPolicingMapMoMgr : public MoMgrImpl { upll_rc_t UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + /** * @Brief Method to compare to keys * @@ -465,24 +467,24 @@ class VbrIfPolicingMapMoMgr : public MoMgrImpl { upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /** - * @brief Method used for Restoring Profile in the Controller Table - * - * @param[in] ikey Pointer to ConfigKeyVal Class - * @param[in] dt_type Describes Configiration Information. - * @param[in] tbl Describe the destination table - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - - upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl, - DalDmlIntf* dmi); + /** + * @brief Method used for Restoring Profile in the Controller Table + * + * @param[in] ikey Pointer to ConfigKeyVal Class + * @param[in] dt_type Describes Configiration Information. + * @param[in] tbl Describe the destination table + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + + upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl, + DalDmlIntf* dmi); upll_rc_t ReadDetail(ConfigKeyVal *ikey, ConfigKeyVal *dup_key, @@ -586,8 +588,9 @@ class VbrIfPolicingMapMoMgr : public MoMgrImpl { uint32_t session_id, uint32_t config_id, uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected); upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, DalDmlIntf *dmi, @@ -617,15 +620,15 @@ class VbrIfPolicingMapMoMgr : public MoMgrImpl { uint8_t &rename); upll_rc_t GetPolicingProfileConfigKey( - const char *pp_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); + const char *pp_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi); upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req); }; -} // kt_momgr -} // upll -} // unc +} // namespace kt_momgr +} // namespace upll +} // namespace unc #endif // MODULES_UPLL_VBR_IF_POLICINGMAP_MOMGR_HH_ diff --git a/coordinator/modules/upll/vbr_momgr.cc b/coordinator/modules/upll/vbr_momgr.cc index aaf9aeb0..0f4e7df3 100644 --- a/coordinator/modules/upll/vbr_momgr.cc +++ b/coordinator/modules/upll/vbr_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -17,145 +17,145 @@ namespace upll { namespace kt_momgr { BindInfo VbrMoMgr::vbr_bind_info[] = { { uudst::vbridge::kDbiVtnName, CFG_KEY, - offsetof(key_vbr, vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vbridge::kDbiVbrName, CFG_KEY, - offsetof(key_vbr, vbridge_name), - uud::kDalChar, 32 }, - { uudst::vbridge::kDbiCtrlrName, CFG_VAL, - offsetof(val_vbr, controller_id), - uud::kDalChar, 32 }, - { uudst::vbridge::kDbiCtrlrName, CK_VAL, - offsetof(key_user_data, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vbridge::kDbiDomainId, CFG_VAL, - offsetof(val_vbr, domain_id), - uud::kDalChar, 32 }, - { uudst::vbridge::kDbiDomainId, CK_VAL, - offsetof(key_user_data, domain_id), - uud::kDalChar, 32 }, - { uudst::vbridge::kDbiVbrDesc, CFG_VAL, - offsetof(val_vbr, vbr_description), - uud::kDalChar, 128 }, - { uudst::vbridge::kDbiHostAddr, CFG_VAL, - offsetof(val_vbr, host_addr), - uud::kDalUint32, 1 }, - { uudst::vbridge::kDbiHostAddrMask, - CFG_VAL, offsetof(val_vbr, - host_addr_prefixlen), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiOperStatus, ST_VAL, - offsetof(val_db_vbr_st, - vbr_val_st.oper_status), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiDownCount, ST_VAL, - offsetof(val_db_vbr_st, down_count), - uud::kDalUint32, 1 }, - { uudst::vbridge::kDbiFaultCount, ST_VAL, - offsetof(val_db_vbr_st, fault_count), - uud::kDalUint32, 1 }, - { uudst::vbridge::kDbiValidCtrlrName, - CFG_META_VAL, offsetof(val_vbr, - valid[0]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiValidDomainId, - CFG_META_VAL, offsetof(val_vbr, - valid[1]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiValidVbrDesc, - CFG_META_VAL, offsetof(val_vbr, - valid[2]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiValidHostAddr, - CFG_META_VAL, offsetof(val_vbr, - valid[3]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiValidHostAddrMask, - CFG_META_VAL, offsetof(val_vbr, - valid[4]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiValidOperStatus, - ST_META_VAL, offsetof(val_vbr_st, - valid[0]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiCsRowStatus, - CS_VAL, offsetof(val_vbr, - cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiCsCtrlrName, - CS_VAL, offsetof(val_vbr, cs_attr[0]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiCsDomainId, CS_VAL, - offsetof(val_vbr, cs_attr[1]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiCsVbrDesc, CS_VAL, - offsetof(val_vbr, cs_attr[2]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiCsHostAddr, CS_VAL, - offsetof(val_vbr, cs_attr[3]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiCsHostAddrMask, - CS_VAL, offsetof(val_vbr, cs_attr[4]), - uud::kDalUint8, 1 }, - { uudst::vbridge::kDbiVbrFlags, CK_VAL, - offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } }; + offsetof(key_vbr, vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vbridge::kDbiVbrName, CFG_KEY, + offsetof(key_vbr, vbridge_name), + uud::kDalChar, 32 }, + { uudst::vbridge::kDbiCtrlrName, CFG_VAL, + offsetof(val_vbr, controller_id), + uud::kDalChar, 32 }, + { uudst::vbridge::kDbiCtrlrName, CK_VAL, + offsetof(key_user_data, ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vbridge::kDbiDomainId, CFG_VAL, + offsetof(val_vbr, domain_id), + uud::kDalChar, 32 }, + { uudst::vbridge::kDbiDomainId, CK_VAL, + offsetof(key_user_data, domain_id), + uud::kDalChar, 32 }, + { uudst::vbridge::kDbiVbrDesc, CFG_VAL, + offsetof(val_vbr, vbr_description), + uud::kDalChar, 128 }, + { uudst::vbridge::kDbiHostAddr, CFG_VAL, + offsetof(val_vbr, host_addr), + uud::kDalUint32, 1 }, + { uudst::vbridge::kDbiHostAddrMask, + CFG_VAL, offsetof(val_vbr, + host_addr_prefixlen), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiOperStatus, ST_VAL, + offsetof(val_db_vbr_st, + vbr_val_st.oper_status), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiDownCount, ST_VAL, + offsetof(val_db_vbr_st, down_count), + uud::kDalUint32, 1 }, + { uudst::vbridge::kDbiFaultCount, ST_VAL, + offsetof(val_db_vbr_st, fault_count), + uud::kDalUint32, 1 }, + { uudst::vbridge::kDbiValidCtrlrName, + CFG_META_VAL, offsetof(val_vbr, + valid[0]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiValidDomainId, + CFG_META_VAL, offsetof(val_vbr, + valid[1]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiValidVbrDesc, + CFG_META_VAL, offsetof(val_vbr, + valid[2]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiValidHostAddr, + CFG_META_VAL, offsetof(val_vbr, + valid[3]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiValidHostAddrMask, + CFG_META_VAL, offsetof(val_vbr, + valid[4]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiValidOperStatus, + ST_META_VAL, offsetof(val_vbr_st, + valid[0]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiCsRowStatus, + CS_VAL, offsetof(val_vbr, + cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiCsCtrlrName, + CS_VAL, offsetof(val_vbr, cs_attr[0]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiCsDomainId, CS_VAL, + offsetof(val_vbr, cs_attr[1]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiCsVbrDesc, CS_VAL, + offsetof(val_vbr, cs_attr[2]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiCsHostAddr, CS_VAL, + offsetof(val_vbr, cs_attr[3]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiCsHostAddrMask, + CS_VAL, offsetof(val_vbr, cs_attr[4]), + uud::kDalUint8, 1 }, + { uudst::vbridge::kDbiVbrFlags, CK_VAL, + offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 } }; BindInfo VbrMoMgr::vbr_rename_bind_info[] = { - { uudst::vnode_rename::kDbiUncVtnName, CFG_KEY, offsetof(key_vbr, - vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_KEY, offsetof(key_vbr, - vbridge_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrName, CK_VAL, offsetof(key_user_data_t, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiDomainId, CK_VAL, offsetof(key_user_data_t, - domain_id), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrVtnName, CFG_VAL, offsetof(val_rename_vnode, - ctrlr_vtn_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrVnodeName, CFG_VAL, offsetof( - val_rename_vnode, ctrlr_vnode_name), - uud::kDalChar, 32 } }; + { uudst::vnode_rename::kDbiUncVtnName, CFG_KEY, offsetof(key_vbr, + vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_KEY, offsetof(key_vbr, + vbridge_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrName, CK_VAL, offsetof(key_user_data_t, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiDomainId, CK_VAL, offsetof(key_user_data_t, + domain_id), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrVtnName, CFG_VAL, offsetof(val_rename_vnode, + ctrlr_vtn_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrVnodeName, CFG_VAL, offsetof( + val_rename_vnode, ctrlr_vnode_name), + uud::kDalChar, 32 } }; BindInfo VbrMoMgr::key_vbr_maintbl_bind_info[] = { - { uudst::vbridge::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vbr_t, - vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge::kDbiVbrName, CFG_MATCH_KEY, offsetof(key_vbr_t, - vbridge_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vbridge::kDbiVbrName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vbridge::kDbiVbrFlags, CK_VAL, offsetof(key_user_data_t, - flags), - uud::kDalUint8, 1 } }; + { uudst::vbridge::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vbr_t, + vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge::kDbiVbrName, CFG_MATCH_KEY, offsetof(key_vbr_t, + vbridge_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vbridge::kDbiVbrName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vbridge::kDbiVbrFlags, CK_VAL, offsetof(key_user_data_t, + flags), + uud::kDalUint8, 1 } }; BindInfo VbrMoMgr::key_vbr_renametbl_update_bind_info[] = { - { uudst::vnode_rename::kDbiUncVtnName, CFG_MATCH_KEY, offsetof( - key_vbr_t, vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_MATCH_KEY, offsetof( - key_vbr_t, vbridge_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vnode_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVtnName + 1 }, }; + { uudst::vnode_rename::kDbiUncVtnName, CFG_MATCH_KEY, offsetof( + key_vbr_t, vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_MATCH_KEY, offsetof( + key_vbr_t, vbridge_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vnode_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVtnName + 1 }, }; unc_key_type_t VbrMoMgr::vbr_child[] = { UNC_KT_VBR_VLANMAP, - UNC_KT_VBR_NWMONITOR, - UNC_KT_VBR_POLICINGMAP, - UNC_KT_VBR_FLOWFILTER, UNC_KT_VBR_IF }; + UNC_KT_VBR_NWMONITOR, + UNC_KT_VBR_POLICINGMAP, + UNC_KT_VBR_FLOWFILTER, UNC_KT_VBR_IF }; @@ -164,12 +164,12 @@ VbrMoMgr::VbrMoMgr() { ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiVbrTbl, UNC_KT_VBRIDGE, vbr_bind_info, - IpctSt::kIpcStKeyVbr, IpctSt::kIpcStValVbr, - (uudst::vbridge::kDbiVbrNumCols+2)); + IpctSt::kIpcStKeyVbr, IpctSt::kIpcStValVbr, + (uudst::vbridge::kDbiVbrNumCols+2)); table[RENAMETBL] = new Table(uudst::kDbiVNodeRenameTbl, UNC_KT_VBRIDGE, - vbr_rename_bind_info, IpctSt::kIpcInvalidStNum, - IpctSt::kIpcInvalidStNum, - uudst::vnode_rename::kDbiVnodeRenameNumCols); + vbr_rename_bind_info, IpctSt::kIpcInvalidStNum, + IpctSt::kIpcInvalidStNum, + uudst::vnode_rename::kDbiVnodeRenameNumCols); table[CTRLRTBL] = NULL; nchild = sizeof(vbr_child) / sizeof(*vbr_child); child = vbr_child; @@ -187,8 +187,8 @@ bool VbrMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, nattr = NUM_KEY_RENAME_TBL_; binfo = key_vbr_renametbl_update_bind_info; } else { - UPLL_LOG_TRACE("Invalid table"); - return false; + UPLL_LOG_TRACE("Invalid table"); + return false; } return true; } @@ -202,7 +202,7 @@ bool VbrMoMgr::IsValidKey(void *key, switch (index) { case uudst::vbridge::kDbiVtnName: case uudst::vnode_rename::kDbiUncVtnName: - ret_val = ValidateKey(reinterpret_cast(vbr_key->vtn_key.vtn_name), + ret_val = ValidateKey(reinterpret_cast(vbr_key->vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); @@ -234,18 +234,18 @@ upll_rc_t VbrMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, key_vbr *vbr_key = NULL; if (okey && (okey->get_key())) { vbr_key = reinterpret_cast - (okey->get_key()); + (okey->get_key()); } else { vbr_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr))); + (ConfigKeyVal::Malloc(sizeof(key_vbr))); } void *pkey; if (parent_key == NULL) { - if (!okey) + if (!okey) okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, vbr_key, - NULL); + NULL); else if (okey->get_key() != vbr_key) - okey->SetKey(IpctSt::kIpcStKeyVbr,vbr_key); + okey->SetKey(IpctSt::kIpcStKeyVbr, vbr_key); return UPLL_RC_SUCCESS; } else { pkey = parent_key->get_key(); @@ -260,9 +260,11 @@ upll_rc_t VbrMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (parent_key->get_key_type()) { case UNC_KT_VBRIDGE: uuu::upll_strncpy(vbr_key->vbridge_name, reinterpret_cast - (pkey)->vbridge_name, (kMaxLenVnodeName+1)); - uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, (kMaxLenVtnName+1)); + (pkey)->vbridge_name, (kMaxLenVnodeName+1)); + uuu::upll_strncpy( + vbr_key->vtn_key.vtn_name, + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VLINK: { uint8_t *vnode_name; @@ -274,28 +276,34 @@ upll_rc_t VbrMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); flags &= VLINK_FLAG_NODE_POS; - UPLL_LOG_DEBUG("Vlink flag node position %d",flags); + UPLL_LOG_DEBUG("Vlink flag node position %d", flags); if (flags == kVlinkVnode2) { vnode_name = vlink_val->vnode2_name; } else { vnode_name = vlink_val->vnode1_name; } uuu::upll_strncpy(vbr_key->vbridge_name, vnode_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, reinterpret_cast( - parent_key->get_key())->vtn_key.vtn_name , (kMaxLenVtnName+1)); - } - break; + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, + reinterpret_cast( + parent_key->get_key())->vtn_key.vtn_name , (kMaxLenVtnName+1)); + } + break; case UNC_KT_VTN: default: - uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, (kMaxLenVtnName+1)); + uuu::upll_strncpy( + vbr_key->vtn_key.vtn_name, + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); *(vbr_key->vbridge_name) = *""; } if (!okey) - okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, vbr_key, NULL); + okey = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, + vbr_key, + NULL); else if (okey->get_key() != vbr_key) - okey->SetKey(IpctSt::kIpcStKeyVbr,vbr_key); + okey->SetKey(IpctSt::kIpcStKeyVbr, vbr_key); if (okey == NULL) { free(vbr_key); result_code = UPLL_RC_ERR_GENERIC; @@ -323,7 +331,8 @@ upll_rc_t VbrMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, key_vtn *vtn_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn))); uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vtn_key.vtn_name, (kMaxLenVtnName+1)); okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); if (okey == NULL) { free(vtn_key); @@ -346,20 +355,20 @@ upll_rc_t VbrMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { UPLL_LOG_DEBUG("Config Val is Null"); return UPLL_RC_ERR_GENERIC; } - while (cval ) { + while (cval) { if (IpctSt::kIpcStValVbrSt == cval->get_st_num()) { val_vbr_st *vbr_val_st = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vbr_st))); + (ConfigKeyVal::Malloc(sizeof(val_vbr_st))); val_db_vbr_st *db_vbr_val_st = reinterpret_cast - (cval->get_val()); - memcpy(vbr_val_st,&(db_vbr_val_st->vbr_val_st), + (cval->get_val()); + memcpy(vbr_val_st, &(db_vbr_val_st->vbr_val_st), sizeof(val_vbr_st)); cval->SetVal(IpctSt::kIpcStValVbrSt, vbr_val_st); } cval = cval->get_next_cfg_val(); } ikey = ikey->get_next_cfg_key_val(); - } + } UPLL_LOG_DEBUG("Exiting VbrMoMgr::AdaptValToVtnService"); return UPLL_RC_SUCCESS; } @@ -426,7 +435,7 @@ upll_rc_t VbrMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigVal *ck_v = req->get_cfg_val(); if (ck_v != NULL && ck_v->get_st_num() == IpctSt::kIpcInvalidStNum) { val_rename_vnode *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); if (ival == NULL) { UPLL_LOG_DEBUG("Null Val structure"); return UPLL_RC_ERR_GENERIC; @@ -469,7 +478,7 @@ upll_rc_t VbrMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, DELETE_IF_NOT_NULL(tmp1); return UPLL_RC_ERR_GENERIC; } -// cout << "VbrMoMgr::DupConfigKeyVal"; + // cout << "VbrMoMgr::DupConfigKeyVal"; key_vbr *ikey = reinterpret_cast(tkey); key_vbr *vbr_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbr))); @@ -497,51 +506,56 @@ upll_rc_t VbrMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, rename_vnode->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; rename_vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_INVALID; key_vbr *ctrlr_key = reinterpret_cast(ikey->get_key()); - upll_rc_t ret_val = ValidateKey(reinterpret_cast(ctrlr_key->vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + upll_rc_t ret_val = ValidateKey(reinterpret_cast + (ctrlr_key->vtn_key.vtn_name), + kMinLenVtnName, + kMaxLenVtnName); if (ret_val == UPLL_RC_SUCCESS) { - uuu::upll_strncpy(rename_vnode->ctrlr_vtn_name, ctrlr_key->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + uuu::upll_strncpy(rename_vnode->ctrlr_vtn_name, + ctrlr_key->vtn_key.vtn_name, + (kMaxLenVtnName+1)); rename_vnode->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; } ret_val = ValidateKey(reinterpret_cast(ctrlr_key->vbridge_name), kMinLenVnodeName, kMaxLenVnodeName); if (ret_val == UPLL_RC_SUCCESS) { uuu::upll_strncpy(rename_vnode->ctrlr_vnode_name, ctrlr_key->vbridge_name, - (kMaxLenVnodeName+1)); + (kMaxLenVnodeName+1)); rename_vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; } result_code = GetChildConfigKey(unc_key, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey Failed with result_code %d", - result_code); + result_code); FREE_IF_NOT_NULL(rename_vnode); return result_code; } if (ctrlr_id) { SET_USER_DATA_CTRLR(unc_key, ctrlr_id); - }else + } else { dbop.matchop = kOpMatchNone; + } unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vnode); -// UPLL_LOG_TRACE("Before Read from Rename Table %s", (unc_key->ToStrAll()).c_str()); + // UPLL_LOG_TRACE("Before Read from Rename Table %s", + // (unc_key->ToStrAll()).c_str()); result_code = ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (result_code == UPLL_RC_SUCCESS) { -// uint8_t rename = 0; + // uint8_t rename = 0; key_vbr *vbr_key = reinterpret_cast(unc_key->get_key()); if (strcmp(reinterpret_cast(ctrlr_key->vtn_key.vtn_name), reinterpret_cast(vbr_key->vtn_key.vtn_name))) { UPLL_LOG_DEBUG("Not Same Vtn Name"); uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, vbr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); -// rename |= VTN_RENAME; + // rename |= VTN_RENAME; } if (strcmp(reinterpret_cast(ctrlr_key->vbridge_name), reinterpret_cast(vbr_key->vbridge_name))) { UPLL_LOG_DEBUG("Not same Vbridge Name"); uuu::upll_strncpy(ctrlr_key->vbridge_name, vbr_key->vbridge_name, (kMaxLenVnodeName+1)); -// rename |= VN_RENAME; + // rename |= VN_RENAME; } SET_USER_DATA(ikey, unc_key); } @@ -573,19 +587,19 @@ upll_rc_t VbrMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, } else { result_code = GetChildConfigKey(dup_key, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d",result_code); + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); return result_code; } #endif result_code = IsRenamed(ikey, dt_type, dmi, rename); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning %d",result_code); + UPLL_LOG_DEBUG("Returning %d", result_code); return result_code; } if (!ctrlr_dom->ctrlr || - !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || - !ctrlr_dom->domain || - !strlen(reinterpret_cast(ctrlr_dom->domain))) { + !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || + !ctrlr_dom->domain || + !strlen(reinterpret_cast(ctrlr_dom->domain))) { GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); } #if 0 @@ -598,7 +612,7 @@ upll_rc_t VbrMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, SET_USER_DATA(ikey, dup_key); GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); if (dup_key) - delete dup_key; + delete dup_key; } if (!ctrlr_dom->ctrlr || !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || @@ -610,27 +624,27 @@ upll_rc_t VbrMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || !ctrlr_dom->domain || !strlen(reinterpret_cast(ctrlr_dom->domain))) { - UPLL_LOG_DEBUG("Invalid Ctrlr/domain"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid Ctrlr/domain"); + return UPLL_RC_ERR_GENERIC; } #endif if (rename == 0) return UPLL_RC_SUCCESS; result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); - return result_code; + UPLL_LOG_DEBUG("Returning error %d", result_code); + return result_code; } SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag }; + kOpInOutFlag }; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, RENAMETBL); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(okey); return result_code; } val_rename_vnode *rename_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("Val is Empty"); DELETE_IF_NOT_NULL(okey); @@ -649,7 +663,7 @@ upll_rc_t VbrMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, } if (rename & VN_RENAME) { /* vnode renamed */ uuu::upll_strncpy(ctrlr_key->vbridge_name, rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName+1)); + (kMaxLenVnodeName+1)); } SET_USER_DATA_FLAGS(ikey, rename); DELETE_IF_NOT_NULL(okey); @@ -669,7 +683,7 @@ upll_rc_t VbrMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED - : UNC_CS_NOT_APPLIED; + : UNC_CS_NOT_APPLIED; vbr_val = reinterpret_cast(GetVal(vbr_key)); val_vbr *vbr_val2 = reinterpret_cast(GetVal(upd_key)); if (vbr_val == NULL) return UPLL_RC_ERR_GENERIC; @@ -680,7 +694,9 @@ upll_rc_t VbrMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, val_vbrst = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_db_vbr_st))); // val_vbrst->vbr_val_st.oper_status = UPLL_OPER_STATUS_UNINIT; - val_vbrst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; + val_vbrst->vbr_val_st.oper_status = + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_DOWN; val_vbrst->down_count = 0; val_vbrst->fault_count = 0; val_vbrst->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; @@ -694,9 +710,9 @@ upll_rc_t VbrMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(vbr_val->valid) / sizeof(vbr_val->valid[0]); ++loop) { + loop < sizeof(vbr_val->valid) / sizeof(vbr_val->valid[0]); ++loop) { if ((UNC_VF_VALID == vbr_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vbr_val->valid[loop])) { + || (UNC_VF_VALID_NO_VALUE == vbr_val->valid[loop])) { // Description is set to APPLIED if (loop == UPLL_IDX_DESC_VBR) vbr_val->cs_attr[loop] = UNC_CS_APPLIED; @@ -704,10 +720,10 @@ upll_rc_t VbrMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, vbr_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vbr_val->valid[loop]) && (UNC_OP_CREATE == op)) { - vbr_val->cs_attr[loop] = UNC_CS_APPLIED; + vbr_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((UNC_VF_INVALID == vbr_val->valid[loop]) && (UNC_OP_UPDATE == op)) { - vbr_val->cs_attr[loop] = vbr_val2->cs_attr[loop]; + vbr_val->cs_attr[loop] = vbr_val2->cs_attr[loop]; } } return result_code; @@ -733,14 +749,14 @@ upll_rc_t VbrMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, if (temp_vbr == NULL || temp_vbr->valid[UPLL_IDX_DOMAIN_ID_VBR] != UNC_VF_VALID || !strlen(reinterpret_cast( - temp_vbr->domain_id))) { + temp_vbr->domain_id))) { ctrlr_dom->domain = NULL; UPLL_LOG_DEBUG("Domain null"); } else { SET_USER_DATA_DOMAIN(ikey, temp_vbr->domain_id); GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); } - UPLL_LOG_DEBUG("ctrlr_dom %s %s",ctrlr_dom->ctrlr, ctrlr_dom->domain); + UPLL_LOG_DEBUG("ctrlr_dom %s %s", ctrlr_dom->ctrlr, ctrlr_dom->domain); return UPLL_RC_SUCCESS; } @@ -776,27 +792,32 @@ upll_rc_t VbrMoMgr::SwapKeyVal(ConfigKeyVal *ikey, /* The PFC Name and New Name should not be equal */ if (!strcmp(reinterpret_cast(tval->new_name), reinterpret_cast(reinterpret_cast - (ikey->get_key())->vbridge_name))) + (ikey->get_key())->vbridge_name))) return UPLL_RC_ERR_GENERIC; key_vbr_t *key_vbr = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbr_t))); if (tval->valid[UPLL_IDX_NEW_NAME_RVBR] == UNC_VF_VALID_NO_VALUE) { - uuu::upll_strncpy(key_vbr->vbridge_name, (static_cast - (ikey->get_key())->vbridge_name), (kMaxLenVnodeName+1)); + uuu::upll_strncpy(key_vbr->vbridge_name, + (static_cast + (ikey->get_key())->vbridge_name), + (kMaxLenVnodeName+1)); no_rename = true; } else { if (reinterpret_cast - (tval)->valid[UPLL_IDX_NEW_NAME_RVBR] == UNC_VF_VALID) { + (tval)->valid[UPLL_IDX_NEW_NAME_RVBR] == UNC_VF_VALID) { // checking the string is empty or not if (!strlen(reinterpret_cast(static_cast - (tval)->new_name))) { + (tval)->new_name))) { free(key_vbr); return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(key_vbr->vbridge_name, (static_cast - ((ikey->get_cfg_val())->get_val()))->new_name, (kMaxLenVnodeName+1)); + uuu::upll_strncpy( + key_vbr->vbridge_name, + (static_cast + ((ikey->get_cfg_val())->get_val()))->new_name, + (kMaxLenVnodeName+1)); } else { free(key_vbr); return UPLL_RC_ERR_GENERIC; @@ -811,7 +832,7 @@ upll_rc_t VbrMoMgr::SwapKeyVal(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager(UNC_KT_VTN))); result_code = mgr->GetRenamedUncKey(pkey, UPLL_DT_IMPORT, dmi, ctrlr); if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { @@ -821,9 +842,9 @@ upll_rc_t VbrMoMgr::SwapKeyVal(ConfigKeyVal *ikey, } // use the UNC VTN name if PFC VTN name is renamed; if (strlen(reinterpret_cast(reinterpret_cast - (pkey->get_key())->vtn_name))) + (pkey->get_key())->vtn_name))) uuu::upll_strncpy(key_vbr->vtn_key.vtn_name, reinterpret_cast - (pkey->get_key())->vtn_name, (kMaxLenVtnName+1)); + (pkey->get_key())->vtn_name, (kMaxLenVtnName+1)); delete pkey; pkey = NULL; okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, NULL); @@ -831,32 +852,34 @@ upll_rc_t VbrMoMgr::SwapKeyVal(ConfigKeyVal *ikey, free(key_vbr); return UPLL_RC_ERR_GENERIC; } -// cout << " SetConfigEnd "; + // cout << " SetConfigEnd "; return UPLL_RC_SUCCESS; } upll_rc_t VbrMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vbr_t *val; val = (ckv_running != NULL) ? reinterpret_cast - (GetVal(ckv_running)) : NULL; + (GetVal(ckv_running)) : NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } @@ -871,7 +894,7 @@ upll_rc_t VbrMoMgr::MergeValidate(unc_key_type_t keytype, ConfigKeyVal *tkey = NULL; if (!ikey || !ikey->get_key() || !(strlen(reinterpret_cast - (ctrlr_id)))) { + (ctrlr_id)))) { UPLL_LOG_DEBUG("Input is NULL"); return UPLL_RC_ERR_GENERIC; } @@ -889,7 +912,7 @@ upll_rc_t VbrMoMgr::MergeValidate(unc_key_type_t keytype, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { if (dup_key) delete dup_key; - return result_code; + return result_code; } ConfigKeyVal *travel = dup_key; while (travel) { @@ -905,7 +928,7 @@ upll_rc_t VbrMoMgr::MergeValidate(unc_key_type_t keytype, if (dup_key) delete dup_key; return result_code; } - /* Same Name should not present in the vnodes in running*/ + /* Same Name should not present in the vnodes in running*/ result_code = VnodeChecks(tkey, UPLL_DT_CANDIDATE, dmi); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code || UPLL_RC_ERR_CFG_SEMANTIC == result_code) { @@ -918,14 +941,14 @@ upll_rc_t VbrMoMgr::MergeValidate(unc_key_type_t keytype, /* Any other DB error */ if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("VnodeChecks Failed %d", result_code); - if (tkey) delete tkey; - if (dup_key) delete dup_key; + if (tkey) delete tkey; + if (dup_key) delete dup_key; return result_code; } val_vbr_t *tval = reinterpret_cast(GetVal(tkey)); if (!tval) { - UPLL_LOG_DEBUG(" Value Structure is not Available "); + UPLL_LOG_DEBUG(" Value Structure is not Available "); } if (tval && tval->valid[UPLL_IDX_HOST_ADDR_VBR] == UNC_VF_VALID) { @@ -936,15 +959,19 @@ upll_rc_t VbrMoMgr::MergeValidate(unc_key_type_t keytype, tval->valid[UPLL_IDX_CONTROLLER_ID_VBR] = UNC_VF_INVALID; tval->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; - /*Checsk the hostaddress should not be present same vtn */ - memset(reinterpret_cast - (tkey->get_key())->vbridge_name, 0, (kMaxLenVnodeName+1)); - result_code = ReadConfigDB(tkey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, - MAINTBL); + /*Checsk the hostaddress should not be present same vtn */ + memset(reinterpret_cast + (tkey->get_key())->vbridge_name, 0, (kMaxLenVnodeName+1)); + result_code = ReadConfigDB(tkey, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (UPLL_RC_SUCCESS == result_code) { ikey->ResetWith(tkey); if (tkey) delete tkey; - if(dup_key) delete dup_key; + if (dup_key) delete dup_key; UPLL_LOG_DEBUG("VBridge Host Address Conflict"); return UPLL_RC_ERR_MERGE_CONFLICT; } @@ -958,7 +985,7 @@ upll_rc_t VbrMoMgr::MergeValidate(unc_key_type_t keytype, } if (tkey) { delete tkey; - tkey = NULL; + tkey = NULL; } travel = travel->get_next_cfg_key_val(); } @@ -974,7 +1001,7 @@ upll_rc_t VbrMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vbr_t * key_vbr = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbr_t))); if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { @@ -988,7 +1015,7 @@ upll_rc_t VbrMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, free(key_vbr); return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(key_vbr->vbridge_name, key_rename->old_unc_vnode_name, + uuu::upll_strncpy(key_vbr->vbridge_name, key_rename->old_unc_vnode_name, (kMaxLenVnodeName+1)); } okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, NULL); @@ -1012,8 +1039,8 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, key_vbr_t * vbr_key = NULL; key_rename_vnode_info *vbr_rename_info = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info))); vbr_key = reinterpret_cast(ikey->get_key()); if (!vbr_key) { @@ -1021,26 +1048,28 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } if (renamed) { - if (! reinterpret_cast(GetVal(ikey)) || + if (!reinterpret_cast(GetVal(ikey)) || !(strlen(reinterpret_cast - (reinterpret_cast - (GetVal(ikey))->ctrlr_vnode_name)))) { + (reinterpret_cast + (GetVal(ikey))->ctrlr_vnode_name)))) { free(vbr_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vbr_rename_info->ctrlr_vnode_name, - reinterpret_cast(GetVal(ikey))->ctrlr_vnode_name, - (kMaxLenVnodeName+1)); - if (! reinterpret_cast(GetVal(ikey)) || + reinterpret_cast + (GetVal(ikey))->ctrlr_vnode_name, + (kMaxLenVnodeName+1)); + if (!reinterpret_cast(GetVal(ikey)) || !(strlen(reinterpret_cast - (reinterpret_cast - (GetVal(ikey))->ctrlr_vtn_name)))) { + (reinterpret_cast + (GetVal(ikey))->ctrlr_vtn_name)))) { free(vbr_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vbr_rename_info->ctrlr_vtn_name, - reinterpret_cast(GetVal(ikey))->ctrlr_vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (GetVal(ikey))->ctrlr_vtn_name, + (kMaxLenVtnName+1)); } else { if (strlen(reinterpret_cast(vbr_key->vbridge_name)) == 0) { free(vbr_rename_info); @@ -1053,7 +1082,7 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vbr_rename_info->ctrlr_vtn_name, - vbr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vbr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); } if (strlen(reinterpret_cast(vbr_key->vbridge_name)) == 0) { @@ -1067,9 +1096,9 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vbr_rename_info->new_unc_vtn_name, - vbr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vbr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); uuu::upll_strncpy(vbr_rename_info->old_unc_vtn_name, - vbr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vbr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); vbr_key = reinterpret_cast(okey->get_key()); if (!vbr_key) { @@ -1081,7 +1110,7 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vbr_rename_info->new_unc_vnode_name, - vbr_key->vbridge_name, (kMaxLenVnodeName+1)); + vbr_key->vbridge_name, (kMaxLenVnodeName+1)); rename_info = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcInvalidStNum, vbr_rename_info, NULL); @@ -1102,13 +1131,15 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, (ConfigKeyVal::Malloc(sizeof(val_rename_vnode_t))); ConfigKeyVal *tmp_key = NULL; result_code = GetChildConfigKey(tmp_key, ikey); - if (UPLL_RC_SUCCESS!=result_code || tmp_key == NULL) { + if (UPLL_RC_SUCCESS != result_code || tmp_key == NULL) { free(vnode); return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(tmp_key, UPLL_DT_IMPORT, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_INFO("ReadConfigDB Failed %d\n", result_code); free(vnode); @@ -1118,21 +1149,21 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, controller_domain ctrlr_dom; result_code = GetControllerDomainId(tmp_key, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_INFO("Returning error %d\n",result_code); - delete tmp_key; - return result_code; + UPLL_LOG_INFO("Returning error %d\n", result_code); + delete tmp_key; + return result_code; } SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); uuu::upll_strncpy(vnode->ctrlr_vtn_name, reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, (kMaxLenVtnName+1)); + (ikey->get_key())->vtn_key.vtn_name, (kMaxLenVtnName+1)); uuu::upll_strncpy(vnode->ctrlr_vnode_name, reinterpret_cast - (ikey->get_key())->vbridge_name, (kMaxLenVnodeName+1)); + (ikey->get_key())->vbridge_name, (kMaxLenVnodeName+1)); ConfigVal *rename_val_ = new ConfigVal(IpctSt::kIpcInvalidStNum, vnode); okey->SetCfgVal(rename_val_); vnode->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; UPLL_LOG_TRACE("Before Create entry in rename table %s", - (okey->ToStrAll()).c_str()); + (okey->ToStrAll()).c_str()); dbop.readop = kOpNotRead; result_code = UpdateConfigDB(okey, UPLL_DT_IMPORT, UNC_OP_CREATE, dmi, &dbop, RENAMETBL); @@ -1142,7 +1173,7 @@ upll_rc_t VbrMoMgr::GetRenameInfo(ConfigKeyVal *ikey, } upll_rc_t VbrMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) { + ConfigKeyVal *okey) { UPLL_FUNC_TRACE; val_vbr *vbr_val = reinterpret_cast(GetVal(ikey)); val_vbr *vbr_val1 = reinterpret_cast(GetVal(okey)); @@ -1152,13 +1183,13 @@ upll_rc_t VbrMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, kMaxLenCtrlrId+1)) { UPLL_LOG_DEBUG("controller id comparision failed"); return UPLL_RC_ERR_CFG_SYNTAX; - } - } + } + } if (vbr_val->valid[UPLL_IDX_DOMAIN_ID_VBR] == UNC_VF_VALID) { if (strncmp(reinterpret_cast(vbr_val->domain_id), reinterpret_cast(vbr_val1->domain_id), kMaxLenDomainId+1)) { - UPLL_LOG_DEBUG("domain id comparision failed"); + UPLL_LOG_DEBUG("domain id comparision failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -1166,7 +1197,7 @@ upll_rc_t VbrMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, } upll_rc_t VbrMoMgr::ValidateVbrKey(key_vbr *vbr_key, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey(reinterpret_cast(vbr_key->vtn_key.vtn_name), @@ -1174,19 +1205,19 @@ upll_rc_t VbrMoMgr::ValidateVbrKey(key_vbr *vbr_key, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("vtn name syntax check failed." - "Received vtn_name - %s", - vbr_key->vtn_key.vtn_name); + "Received vtn_name - %s", + vbr_key->vtn_key.vtn_name); return UPLL_RC_ERR_CFG_SYNTAX; } - if (operation != UNC_OP_READ_SIBLING_COUNT && + if (operation != UNC_OP_READ_SIBLING_COUNT && operation != UNC_OP_READ_SIBLING_BEGIN) { ret_val = ValidateKey(reinterpret_cast (vbr_key->vbridge_name), - kMinLenVnodeName, - kMaxLenVnodeName); + kMinLenVnodeName, + kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Vbridge name syntax check failed." - "Received vbridge_name - %s", - vbr_key->vbridge_name); + "Received vbridge_name - %s", + vbr_key->vbridge_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -1203,12 +1234,12 @@ upll_rc_t VbrMoMgr::ValidateVbrValue(val_vbr *vbr_val, // Attribute syntax validation for (unsigned int valid_index = 0; valid_index < sizeof(vbr_val->valid) / sizeof(vbr_val->valid[0]); - valid_index++) { + valid_index++) { if (vbr_val->valid[valid_index] == UNC_VF_VALID) { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VBR: ret_val = ValidateString(vbr_val->controller_id, - kMinLenCtrlrId, kMaxLenCtrlrId); + kMinLenCtrlrId, kMaxLenCtrlrId); break; case UPLL_IDX_DOMAIN_ID_VBR: ret_val = ValidateDefaultStr(vbr_val->domain_id, @@ -1217,10 +1248,10 @@ upll_rc_t VbrMoMgr::ValidateVbrValue(val_vbr *vbr_val, case UPLL_IDX_DESC_VBR: ret_val = ValidateDesc(vbr_val->vbr_description, kMinLenDescription, kMaxLenDescription); - break; + break; case UPLL_IDX_HOST_ADDR_VBR: ret_val = ValidateIpv4Addr(vbr_val->host_addr.s_addr, - vbr_val->host_addr_prefixlen); + vbr_val->host_addr_prefixlen); break; case UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR: ret_val = ValidateNumericRange( @@ -1229,7 +1260,7 @@ upll_rc_t VbrMoMgr::ValidateVbrValue(val_vbr *vbr_val, break; } if (!ret_val) { - return UPLL_RC_ERR_CFG_SYNTAX; + return UPLL_RC_ERR_CFG_SYNTAX; } } } @@ -1242,13 +1273,13 @@ upll_rc_t VbrMoMgr::ValidateVbrValue(val_vbr *vbr_val, switch (operation) { case UNC_OP_CREATE: { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VBR: case UPLL_IDX_DOMAIN_ID_VBR: if ((flag == UNC_VF_INVALID || flag == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("controller_id or domain_id flag is invalid" " or valid_no_value"); - return UPLL_RC_ERR_CFG_SYNTAX; + return UPLL_RC_ERR_CFG_SYNTAX; } break; case UPLL_IDX_DESC_VBR: @@ -1257,39 +1288,42 @@ upll_rc_t VbrMoMgr::ValidateVbrValue(val_vbr *vbr_val, if (vbr_val->valid[UPLL_IDX_HOST_ADDR_VBR] != vbr_val->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]) { UPLL_LOG_DEBUG("Host address and prefix length" - "both do not have same valid flags: %d, %d", - vbr_val->valid[UPLL_IDX_HOST_ADDR_VBR], - vbr_val->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]); - return UPLL_RC_ERR_CFG_SYNTAX; + "both do not have same valid flags: %d, %d", + vbr_val->valid[UPLL_IDX_HOST_ADDR_VBR], + vbr_val-> + valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]); + return UPLL_RC_ERR_CFG_SYNTAX; } break; case UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR: - if ((flag == UNC_VF_INVALID) || (flag == UNC_VF_VALID_NO_VALUE)) { + if ((flag == UNC_VF_INVALID) || (flag == + UNC_VF_VALID_NO_VALUE)) { vbr_val->host_addr_prefixlen = 0; } break; default: break; } - } + } break; case UNC_OP_UPDATE: { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VBR: case UPLL_IDX_DOMAIN_ID_VBR: if (flag == UNC_VF_VALID_NO_VALUE) { - UPLL_LOG_DEBUG("controller_id or domain_id flag is valid_no_value"); + UPLL_LOG_DEBUG("controller_id or domain_id flag" + "is valid_no_value"); return UPLL_RC_ERR_CFG_SYNTAX; } - break; + break; case UPLL_IDX_DESC_VBR: case UPLL_IDX_HOST_ADDR_VBR: case UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR: default: break; } - } + } break; } } @@ -1299,10 +1333,10 @@ upll_rc_t VbrMoMgr::ValidateVbrValue(val_vbr *vbr_val, valid_index < sizeof(vbr_val->valid) / sizeof(vbr_val->valid[0]); valid_index++) { uint8_t flag = vbr_val->valid[valid_index]; - if (flag != UNC_VF_INVALID && flag != UNC_VF_VALID_NO_VALUE) + if (flag != UNC_VF_INVALID && flag != UNC_VF_VALID_NO_VALUE) continue; - - switch(valid_index) { + + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VBR: StringReset(vbr_val->controller_id); break; @@ -1313,7 +1347,7 @@ upll_rc_t VbrMoMgr::ValidateVbrValue(val_vbr *vbr_val, StringReset(vbr_val->vbr_description); break; case UPLL_IDX_HOST_ADDR_VBR: - vbr_val->host_addr.s_addr = 0; + vbr_val->host_addr.s_addr = 0; break; case UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR: vbr_val->host_addr_prefixlen = 0; @@ -1333,8 +1367,8 @@ upll_rc_t VbrMoMgr::ValidateVbrPingValue(val_ping *ping_val) { if ((!bc_check(ping_val->target_addr)) || (!mc_check(ping_val->target_addr))) { UPLL_LOG_DEBUG("Invalid target address received." - "Received Target addr - %d", - ping_val->target_addr); + "Received Target addr - %d", + ping_val->target_addr); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -1344,8 +1378,8 @@ upll_rc_t VbrMoMgr::ValidateVbrPingValue(val_ping *ping_val) { if (ping_val->valid[UPLL_IDX_SRC_ADDR_PING] == UNC_VF_VALID) { if ((!bc_check(ping_val->src_addr)) || (!mc_check(ping_val->src_addr))) { UPLL_LOG_DEBUG("Invalid Source address received." - "Received Source addr - %d", - ping_val->src_addr); + "Received Source addr - %d", + ping_val->src_addr); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -1353,8 +1387,8 @@ upll_rc_t VbrMoMgr::ValidateVbrPingValue(val_ping *ping_val) { if (!ValidateNumericRange(ping_val->dfbit, (uint8_t) UPLL_DF_BIT_DISABLE, (uint8_t) UPLL_DF_BIT_ENABLE, true, true)) { UPLL_LOG_DEBUG("dfbit syntax check failed." - "received dfbit - %d", - ping_val->dfbit); + "received dfbit - %d", + ping_val->dfbit); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (ping_val->valid[UPLL_IDX_DF_BIT_PING] == UNC_VF_VALID_NO_VALUE) { @@ -1365,19 +1399,20 @@ upll_rc_t VbrMoMgr::ValidateVbrPingValue(val_ping *ping_val) { (uint16_t) kMinPingPacketLen, (uint16_t) kMaxPingPacketLen, true, true)) { UPLL_LOG_DEBUG("packet_size syntax check failed." - "received packet_size - %d", - ping_val->packet_size); + "received packet_size - %d", + ping_val->packet_size); return UPLL_RC_ERR_CFG_SYNTAX; } - } else if (ping_val->valid[UPLL_IDX_PACKET_SIZE_PING] == UNC_VF_VALID_NO_VALUE) { + } else if (ping_val->valid[UPLL_IDX_PACKET_SIZE_PING] == + UNC_VF_VALID_NO_VALUE) { ping_val->packet_size = 0; } if (ping_val->valid[UPLL_IDX_COUNT_PING] == UNC_VF_VALID) { if (!ValidateNumericRange(ping_val->count, (uint32_t) kMinPingCount, (uint32_t) kMaxPingCount, true, true)) { UPLL_LOG_DEBUG("count syntax check failed." - "received count - %d", - ping_val->count); + "received count - %d", + ping_val->count); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (ping_val->valid[UPLL_IDX_COUNT_PING] == UNC_VF_VALID_NO_VALUE) { @@ -1387,19 +1422,20 @@ upll_rc_t VbrMoMgr::ValidateVbrPingValue(val_ping *ping_val) { if (!ValidateNumericRange(ping_val->interval, (uint8_t) kMinPingInterval, (uint8_t) kMaxPingInterval, true, true)) { UPLL_LOG_DEBUG("Interval syntax check failed." - "received interval - %d", - ping_val->interval); + "received interval - %d", + ping_val->interval); return UPLL_RC_ERR_CFG_SYNTAX; } - } else if (ping_val->valid[UPLL_IDX_INTERVAL_PING] == UNC_VF_VALID_NO_VALUE) { + } else if (ping_val->valid[UPLL_IDX_INTERVAL_PING] == + UNC_VF_VALID_NO_VALUE) { ping_val->interval = 0; } if (ping_val->valid[UPLL_IDX_TIMEOUT_PING] == UNC_VF_VALID) { if (!ValidateNumericRange(ping_val->timeout, (uint8_t) kMinPingTimeout, (uint8_t) kMaxPingTimeout, true, true)) { UPLL_LOG_DEBUG("Timeout syntax check failed." - "received timeout - %d", - ping_val->timeout); + "received timeout - %d", + ping_val->timeout); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (ping_val->valid[UPLL_IDX_TIMEOUT_PING] == UNC_VF_VALID_NO_VALUE) { @@ -1418,8 +1454,8 @@ upll_rc_t VbrMoMgr::ValidateVbrRenameValue(val_rename_vbr *vbr_rename) { kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Rename syntax check failed." - "Received new_name - %s", - vbr_rename->new_name); + "Received new_name - %s", + vbr_rename->new_name); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -1436,7 +1472,7 @@ upll_rc_t VbrMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (ikey->get_st_num() != IpctSt::kIpcStKeyVbr) { UPLL_LOG_DEBUG("Invalid key structure received. received struct - %d", - (ikey->get_st_num())); + (ikey->get_st_num())); return UPLL_RC_ERR_BAD_REQUEST; } unc_key_type_t Ktype = ikey->get_key_type(); @@ -1456,63 +1492,64 @@ upll_rc_t VbrMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_CFG_SYNTAX; } - if ((operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) && + if ((operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) && (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_IMPORT)) { - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (cfg_val == NULL) { - UPLL_LOG_DEBUG("ConfigVal struct is empty"); - return UPLL_RC_ERR_BAD_REQUEST; - } - if (cfg_val->get_st_num() != IpctSt::kIpcStValVbr) { - UPLL_LOG_DEBUG( - "Invalid val structure received.received struct - %d", - cfg_val->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_vbr *vbr_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); - if (vbr_val == NULL) { - UPLL_LOG_DEBUG("val struct is mandatory for create and update op"); - return UPLL_RC_ERR_BAD_REQUEST; - } - ret_val = ValidateVbrValue(vbr_val, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failed for val_vbr structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (cfg_val == NULL) { + UPLL_LOG_DEBUG("ConfigVal struct is empty"); + return UPLL_RC_ERR_BAD_REQUEST; + } + if (cfg_val->get_st_num() != IpctSt::kIpcStValVbr) { + UPLL_LOG_DEBUG( + "Invalid val structure received.received struct - %d", + cfg_val->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_vbr *vbr_val = + reinterpret_cast(ikey->get_cfg_val()->get_val()); + if (vbr_val == NULL) { + UPLL_LOG_DEBUG("val struct is mandatory for create and update op"); + return UPLL_RC_ERR_BAD_REQUEST; + } + ret_val = ValidateVbrValue(vbr_val, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("syntax check failed for val_vbr structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_RENAME) && (dt_type == UPLL_DT_IMPORT)) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (!cfg_val) return UPLL_RC_ERR_CFG_SYNTAX; - if (cfg_val->get_st_num() != IpctSt::kIpcStValRenameVbr) { - UPLL_LOG_DEBUG( - "Invalid val_rename structure received.received struct - %d", - cfg_val->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_rename_vbr *vbr_rename = - reinterpret_cast(cfg_val->get_val()); - if (vbr_rename == NULL) { - UPLL_LOG_DEBUG( + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (!cfg_val) return UPLL_RC_ERR_CFG_SYNTAX; + if (cfg_val->get_st_num() != IpctSt::kIpcStValRenameVbr) { + UPLL_LOG_DEBUG( + "Invalid val_rename structure received.received struct - %d", + cfg_val->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_rename_vbr *vbr_rename = + reinterpret_cast(cfg_val->get_val()); + if (vbr_rename == NULL) { + UPLL_LOG_DEBUG( "syntax check for val_rename_vbr struct is Mandatory for Rename op"); - return UPLL_RC_ERR_BAD_REQUEST; - } - ret_val = ValidateVbrRenameValue(vbr_rename); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failed for val_rename_vbr structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; + return UPLL_RC_ERR_BAD_REQUEST; + } + ret_val = ValidateVbrRenameValue(vbr_rename); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("syntax check failed for val_rename_vbr structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING - || operation == UNC_OP_READ_SIBLING_BEGIN) && (dt_type == UPLL_DT_IMPORT)) { + || operation == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_IMPORT)) { if (option1 != UNC_OPT1_NORMAL) { UPLL_LOG_DEBUG("Error option1 is not NORMAL"); return UPLL_RC_ERR_INVALID_OPTION1; @@ -1530,7 +1567,7 @@ upll_rc_t VbrMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } val_rename_vbr *vbr_rename = - reinterpret_cast(cfg_val->get_val()); + reinterpret_cast(cfg_val->get_val()); if (vbr_rename == NULL) { UPLL_LOG_DEBUG("syntax check for val_rename_vbr struct is optional"); return UPLL_RC_SUCCESS; @@ -1542,91 +1579,90 @@ upll_rc_t VbrMoMgr::ValidateMessage(IpcReqRespHeader *req, } return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING - || operation == UNC_OP_READ_SIBLING_BEGIN) && - (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || - dt_type == UPLL_DT_STARTUP)) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (!cfg_val) return UPLL_RC_SUCCESS; - if (cfg_val->get_st_num() != IpctSt::kIpcStValVbr) { - UPLL_LOG_DEBUG("value structure matching is invalid. st.num - %d", - cfg_val->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_vbr *vbr_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); - if (vbr_val == NULL) { - UPLL_LOG_DEBUG("syntax check for val vbr struct is an optional"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVbrValue(vbr_val, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failure for val vbr structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + || operation == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || + dt_type == UPLL_DT_STARTUP)) { + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (!cfg_val) return UPLL_RC_SUCCESS; + if (cfg_val->get_st_num() != IpctSt::kIpcStValVbr) { + UPLL_LOG_DEBUG("value structure matching is invalid. st.num - %d", + cfg_val->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_vbr *vbr_val = + reinterpret_cast(ikey->get_cfg_val()->get_val()); + if (vbr_val == NULL) { + UPLL_LOG_DEBUG("syntax check for val vbr struct is an optional"); return UPLL_RC_SUCCESS; - } else if ((operation == UNC_OP_READ_SIBLING_COUNT) && - (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || - dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE)) { - - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (!cfg_val) return UPLL_RC_SUCCESS; - if (cfg_val->get_st_num() != IpctSt::kIpcStValVbr) { - UPLL_LOG_DEBUG("value structure matching is invalid. st.num - %d", - cfg_val->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_vbr *vbr_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); - if (vbr_val == NULL) { - UPLL_LOG_DEBUG("syntax check for val vbr struct is an optional"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVbrValue(vbr_val, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failure for val vbr structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + } + ret_val = ValidateVbrValue(vbr_val, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("syntax check failure for val vbr structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } else if ((operation == UNC_OP_READ_SIBLING_COUNT) && + (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || + dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE)) { + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (!cfg_val) return UPLL_RC_SUCCESS; + if (cfg_val->get_st_num() != IpctSt::kIpcStValVbr) { + UPLL_LOG_DEBUG("value structure matching is invalid. st.num - %d", + cfg_val->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_vbr *vbr_val = + reinterpret_cast(ikey->get_cfg_val()->get_val()); + if (vbr_val == NULL) { + UPLL_LOG_DEBUG("syntax check for val vbr struct is an optional"); return UPLL_RC_SUCCESS; + } + ret_val = ValidateVbrValue(vbr_val, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("syntax check failure for val vbr structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING - || operation == UNC_OP_READ_SIBLING_BEGIN) && - (dt_type == UPLL_DT_STATE)) { - if ((option1 != UNC_OPT1_NORMAL) && - (option1 != UNC_OPT1_COUNT)) { - UPLL_LOG_DEBUG("Error option1 is Invalid"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if ((option2 != UNC_OPT2_MAC_ENTRY) && - (option2 != UNC_OPT2_MAC_ENTRY_STATIC) && - (option2 != UNC_OPT2_MAC_ENTRY_DYNAMIC) && - (option2 != UNC_OPT2_L2DOMAIN) && - (option2 != UNC_OPT2_NONE)) { - UPLL_LOG_DEBUG("Error option2 is Invalid"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - UPLL_LOG_DEBUG("val struct validation is an optional"); - return UPLL_RC_SUCCESS; + || operation == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_STATE)) { + if ((option1 != UNC_OPT1_NORMAL) && + (option1 != UNC_OPT1_COUNT)) { + UPLL_LOG_DEBUG("Error option1 is Invalid"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((option2 != UNC_OPT2_MAC_ENTRY) && + (option2 != UNC_OPT2_MAC_ENTRY_STATIC) && + (option2 != UNC_OPT2_MAC_ENTRY_DYNAMIC) && + (option2 != UNC_OPT2_L2DOMAIN) && + (option2 != UNC_OPT2_NONE)) { + UPLL_LOG_DEBUG("Error option2 is Invalid"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + UPLL_LOG_DEBUG("val struct validation is an optional"); + return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_DELETE || operation == UNC_OP_READ_NEXT - || operation == UNC_OP_READ_BULK) && - (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING - || dt_type == UPLL_DT_IMPORT || dt_type == UPLL_DT_STARTUP)) { - UPLL_LOG_DEBUG("Value structure is none for operation type:%d", operation); - return UPLL_RC_SUCCESS; + || operation == UNC_OP_READ_BULK) && + (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING + || dt_type == UPLL_DT_IMPORT || dt_type == UPLL_DT_STARTUP)) { + UPLL_LOG_DEBUG("Value structure is none for operation type:%d", operation); + return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_CONTROL) && (dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STATE)) { if (option1 != UNC_OPT1_NORMAL) { @@ -1657,16 +1693,17 @@ upll_rc_t VbrMoMgr::ValidateMessage(IpcReqRespHeader *req, } return UPLL_RC_SUCCESS; #if 0 - // TODO(owner): this option is not enabled in key_type.h - // remove if 0 once its added - } else if (option2 == UNC_OPT2_CLEAR_ARPAGENT) { - UPLL_LOG_DEBUG("Value structure is none for operation type:%d", operation); - return UPLL_RC_SUCCESS; + // TODO(owner): this option is not enabled in key_type.h + // remove if 0 once its added + } else if (option2 == UNC_OPT2_CLEAR_ARPAGENT) { + UPLL_LOG_DEBUG("Value structure is none for operation type:%d", + operation); + return UPLL_RC_SUCCESS; #endif - } else { - UPLL_LOG_DEBUG("Error option2 is not matching"); - return UPLL_RC_ERR_INVALID_OPTION2; - } + } else { + UPLL_LOG_DEBUG("Error option2 is not matching"); + return UPLL_RC_ERR_INVALID_OPTION2; + } } UPLL_LOG_DEBUG("Error Unsupported Datatype-(%d) or Operation-(%d)", dt_type, operation); @@ -1674,9 +1711,9 @@ upll_rc_t VbrMoMgr::ValidateMessage(IpcReqRespHeader *req, } upll_rc_t VbrMoMgr::ValVbrAttributeSupportCheck( - val_vbr_t *vbr_val, - const uint8_t *attrs, - unc_keytype_operation_t operation) { + val_vbr_t *vbr_val, + const uint8_t *attrs, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if (vbr_val != NULL) { @@ -1707,7 +1744,7 @@ upll_rc_t VbrMoMgr::ValVbrAttributeSupportCheck( if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_DEBUG("host_addr attribute is not supported by ctrlr"); UPLL_LOG_DEBUG("vbr_val->valid[UPLL_IDX_HOST_ADDR_VBR] is %d", - vbr_val->valid[UPLL_IDX_HOST_ADDR_VBR]); + vbr_val->valid[UPLL_IDX_HOST_ADDR_VBR]); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } @@ -1721,7 +1758,7 @@ upll_rc_t VbrMoMgr::ValVbrAttributeSupportCheck( UPLL_LOG_DEBUG( "host_addr_prefixlen attribute is not supported by ctrlr"); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + } } } } else { @@ -1736,14 +1773,14 @@ upll_rc_t VbrMoMgr::ValidateCapability(IpcReqRespHeader *req, const char *ctrlr_name) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; - if (!ikey || !req ) { - UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); - return ret_val; + if (!ikey || !req) { + UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); + return ret_val; } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -1760,13 +1797,6 @@ upll_rc_t VbrMoMgr::ValidateCapability(IpcReqRespHeader *req, result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; case UNC_OP_UPDATE: @@ -1786,22 +1816,23 @@ upll_rc_t VbrMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("key_type - %d is not supported by controller - %s", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - + val_vbr *vbr_val = NULL; if (ikey->get_cfg_val() && (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValVbr)) { + IpctSt::kIpcStValVbr)) { vbr_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } if (vbr_val) { if (max_attrs > 0) { ret_val = ValVbrAttributeSupportCheck(vbr_val, attrs, req->operation); return ret_val; } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); return UPLL_RC_ERR_GENERIC; } } @@ -1819,14 +1850,15 @@ upll_rc_t VbrMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, key_vbr * temp_key_vbr = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vbr))); uuu::upll_strncpy(temp_key_vbr->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(temp_key_vbr->vbridge_name, - reinterpret_cast(ikey->get_key())->vbridge_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(ikey->get_key())->vbridge_name, + (kMaxLenVnodeName+1)); okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr - ,temp_key_vbr, NULL); + , temp_key_vbr, NULL); return UPLL_RC_SUCCESS; } @@ -1851,33 +1883,34 @@ bool VbrMoMgr::CompareValidValue(void *&val1, val_vbr_t *val_vbr1 = reinterpret_cast(val1); val_vbr_t *val_vbr2 = reinterpret_cast(val2); if (!val_vbr2) { - UPLL_LOG_TRACE("Invalid param"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_TRACE("Invalid param"); + return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val_vbr1->valid) / sizeof(uint8_t); ++loop) { - if (UNC_VF_INVALID == val_vbr1->valid[loop] - && UNC_VF_VALID == val_vbr2->valid[loop]) - val_vbr1->valid[loop] = UNC_VF_VALID_NO_VALUE; + loop < sizeof(val_vbr1->valid) / sizeof(uint8_t); ++loop) { + if (UNC_VF_INVALID == val_vbr1->valid[loop] + && UNC_VF_VALID == val_vbr2->valid[loop]) + val_vbr1->valid[loop] = UNC_VF_VALID_NO_VALUE; } /* Specify the configured ip address for * PFC to clear the configured IP address */ if (!copy_to_running) { if (UNC_VF_VALID_NO_VALUE == val_vbr1->valid[UPLL_IDX_HOST_ADDR_VBR]) { - memcpy(&val_vbr1->host_addr, &val_vbr2->host_addr, - sizeof(val_vbr2->host_addr)); + memcpy(&val_vbr1->host_addr, &val_vbr2->host_addr, + sizeof(val_vbr2->host_addr)); } - if (UNC_VF_VALID_NO_VALUE == val_vbr1->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]) { + if (UNC_VF_VALID_NO_VALUE == val_vbr1-> + valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]) { val_vbr1->host_addr_prefixlen = val_vbr2->host_addr_prefixlen; } } if (UNC_VF_INVALID != val_vbr1->valid[UPLL_IDX_DESC_VBR]) { - if (!copy_to_running || + if (!copy_to_running || ((UNC_VF_VALID == val_vbr1->valid[UPLL_IDX_DESC_VBR]) && - !strcmp(reinterpret_cast(val_vbr1->vbr_description), - reinterpret_cast(val_vbr2->vbr_description)))) - val_vbr1->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; + !strcmp(reinterpret_cast(val_vbr1->vbr_description), + reinterpret_cast(val_vbr2->vbr_description)))) + val_vbr1->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; } if (UNC_VF_VALID == val_vbr1->valid[UPLL_IDX_CONTROLLER_ID_VBR] && UNC_VF_VALID == val_vbr2->valid[UPLL_IDX_CONTROLLER_ID_VBR]) { @@ -1906,9 +1939,9 @@ bool VbrMoMgr::CompareValidValue(void *&val1, if (!copy_to_running) val_vbr1->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; for (unsigned int loop = 0; - loop < sizeof(val_vbr1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vbr1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vbr1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vbr1->valid[loop])) { + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vbr1->valid[loop])) { invalid_attr = false; break; } @@ -1922,19 +1955,21 @@ upll_rc_t VbrMoMgr::IsReferenced(ConfigKeyVal *ikey, UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VBR_IF))); + (GetMoManager + (UNC_KT_VBR_IF))); result_code = mgr->IsReferenced(ikey, dt_type, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code (%d)", - result_code); + result_code); return result_code; } UPLL_LOG_DEBUG("IsReferenced result code (%d)", result_code); return UPLL_RC_SUCCESS; } -upll_rc_t VbrMoMgr::IsHostAddrAndPrefixLenInUse(ConfigKeyVal *ckv, DalDmlIntf *dmi, - IpcReqRespHeader *req) { +upll_rc_t VbrMoMgr::IsHostAddrAndPrefixLenInUse(ConfigKeyVal *ckv, + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; ConfigKeyVal *ckv_vbr = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -1956,16 +1991,16 @@ upll_rc_t VbrMoMgr::IsHostAddrAndPrefixLenInUse(ConfigKeyVal *ckv, DalDmlIntf *d } uuu::upll_strncpy(reinterpret_cast - (ckv_vbr->get_key())->vtn_key.vtn_name, + (ckv_vbr->get_key())->vtn_key.vtn_name, vbrkey->vtn_key.vtn_name, kMaxLenVtnName+1); val_vbr_t *vbrval = reinterpret_cast(GetVal(ckv)); - if ((vbrval->valid[UPLL_IDX_HOST_ADDR_VBR] != UNC_VF_VALID) && - (vbrval->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] != UNC_VF_VALID)) { + if ((vbrval->valid[UPLL_IDX_HOST_ADDR_VBR] != UNC_VF_VALID) && + (vbrval->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] != UNC_VF_VALID)) { UPLL_LOG_DEBUG("Semantic check not required!"); free(vbr_val); - delete (ckv_vbr); + delete (ckv_vbr); return UPLL_RC_SUCCESS; } @@ -1974,23 +2009,26 @@ upll_rc_t VbrMoMgr::IsHostAddrAndPrefixLenInUse(ConfigKeyVal *ckv, DalDmlIntf *d vbr_val->valid[UPLL_IDX_HOST_ADDR_VBR] = UNC_VF_VALID; ckv_vbr->AppendCfgVal(IpctSt::kIpcStValVbr, vbr_val); - UPLL_LOG_TRACE(" existence check %s",(ckv_vbr->ToStrAll()).c_str()); - result_code = ReadConfigDB(ckv_vbr, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); + UPLL_LOG_TRACE(" existence check %s", (ckv_vbr->ToStrAll()).c_str()); + result_code = ReadConfigDB(ckv_vbr, + dt_type, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); delete ckv_vbr; - + if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); - return result_code; + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + return result_code; } if (UPLL_RC_SUCCESS == result_code) { - UPLL_LOG_DEBUG("More than one vbridge configured with the same " - "host address and prefix length!"); - return UPLL_RC_ERR_CFG_SEMANTIC; + UPLL_LOG_DEBUG("More than one vbridge configured with the same " + "host address and prefix length!"); + return UPLL_RC_ERR_CFG_SEMANTIC; } - result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? - UPLL_RC_SUCCESS:result_code; - return result_code; + return UPLL_RC_SUCCESS; } } // namespace kt_momgr diff --git a/coordinator/modules/upll/vbr_momgr.hh b/coordinator/modules/upll/vbr_momgr.hh index d98d1f99..236d8270 100644 --- a/coordinator/modules/upll/vbr_momgr.hh +++ b/coordinator/modules/upll/vbr_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,416 +21,418 @@ namespace kt_momgr { class VbrMoMgr : public VnodeMoMgr { - private: - static unc_key_type_t vbr_child[]; - static BindInfo vbr_bind_info[]; - static BindInfo vbr_rename_bind_info[]; - static BindInfo key_vbr_maintbl_bind_info[]; - static BindInfo key_vbr_renametbl_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vbridge::kDbiOperStatus: - valid = &(reinterpret_cast(val))-> - vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS]; - break; - case uudst::vbridge::kDbiDownCount: - case uudst::vbridge::kDbiFaultCount: - valid = NULL; - break; - case uudst::vbridge::kDbiCtrlrName: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_CONTROLLER_ID_VBR]; - break; - case uudst::vbridge::kDbiDomainId: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DOMAIN_ID_VBR]; - break; - case uudst::vbridge::kDbiVbrDesc: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DESC_VBR]; - break; - case uudst::vbridge::kDbiHostAddr: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_HOST_ADDR_VBR]; - break; - case uudst::vbridge::kDbiHostAddrMask: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } - } else if (tbl == RENAMETBL) { - switch(indx){ - case uudst::vnode_rename::kDbiCtrlrVtnName: - valid = &(reinterpret_cast + private: + static unc_key_type_t vbr_child[]; + static BindInfo vbr_bind_info[]; + static BindInfo vbr_rename_bind_info[]; + static BindInfo key_vbr_maintbl_bind_info[]; + static BindInfo key_vbr_renametbl_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vbridge::kDbiOperStatus: + valid = &(reinterpret_cast(val))-> + vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS]; + break; + case uudst::vbridge::kDbiDownCount: + case uudst::vbridge::kDbiFaultCount: + valid = NULL; + break; + case uudst::vbridge::kDbiCtrlrName: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_CONTROLLER_ID_VBR]; + break; + case uudst::vbridge::kDbiDomainId: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_DOMAIN_ID_VBR]; + break; + case uudst::vbridge::kDbiVbrDesc: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_DESC_VBR]; + break; + case uudst::vbridge::kDbiHostAddr: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_HOST_ADDR_VBR]; + break; + case uudst::vbridge::kDbiHostAddrMask: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]; + break; + default: + return UPLL_RC_ERR_GENERIC; + } + } else if (tbl == RENAMETBL) { + switch (indx) { + case uudst::vnode_rename::kDbiCtrlrVtnName: + valid = &(reinterpret_cast (val))->valid[UPLL_CTRLR_VTN_NAME_VALID]; - break; - case uudst::vnode_rename::kDbiCtrlrVnodeName: - valid = &(reinterpret_cast - (val))->valid[UPLL_CTRLR_VNODE_NAME_VALID]; - break; - default: - break; - } - return UPLL_RC_SUCCESS; + break; + case uudst::vnode_rename::kDbiCtrlrVnodeName: + valid = &(reinterpret_cast + (val))->valid[UPLL_CTRLR_VNODE_NAME_VALID]; + break; + default: + break; } return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; + } - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, - void *val2, - bool audit_status, - unc_keytype_operation_t op); + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, + void *val2, + bool audit_status, + unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for - * corresponding attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit - * process.. - * - **/ - bool CompareValidValue(void *&val1, - void *val2, - bool audit); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for + * corresponding attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit + * process.. + * + **/ + bool CompareValidValue(void *&val1, + void *val2, + bool audit); - upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, - ConfigKeyVal *&okey, - DalDmlIntf *dmi, - uint8_t *ctrlr, - bool &no_rename); - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, + ConfigKeyVal *&okey, + DalDmlIntf *dmi, + uint8_t *ctrlr, + bool &no_rename); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - /** - * @Brief Checks if the specified key type(KT_VBR) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] ctrlr_id Controller id associated with ikey. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - **/ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_id); + /** + * @Brief Checks if the specified key type(KT_VBR) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] ctrlr_id Controller id associated with ikey. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + **/ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char *ctrlr_id); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VBR keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vbr is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey); - /** - * @Brief compares controller id and domain id before - * updating the value to DB. - * - * @param[in] ikey ikey contains key and value structure. - * @param[in] okey okey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - */ - upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VBR keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vbr is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey); + /** + * @Brief compares controller id and domain id before + * updating the value to DB. + * + * @param[in] ikey ikey contains key and value structure. + * @param[in] okey okey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + */ + upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, + ConfigKeyVal *okey); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] vbr_val KT_VBRIDGE value structure. - * @param[in] attrs Pointer to controller attribute. - * @param[in] operation Operation name. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count limit is exceedes. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVbrAttributeSupportCheck(val_vbr_t *vbr_val, - const uint8_t *attrs, - unc_keytype_operation_t operation); - - /** - * @Brief Validates the syntax for KT_VBR keytype Rename structure. - * - * @param[in] val_rename_vbr KT_VBR Rename structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - */ - upll_rc_t ValidateVbrRenameValue(val_rename_vbr *vbr_rename); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] vbr_val KT_VBRIDGE value structure. + * @param[in] attrs Pointer to controller attribute. + * @param[in] operation Operation name. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count limit is exceedes. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVbrAttributeSupportCheck(val_vbr_t *vbr_val, + const uint8_t *attrs, + unc_keytype_operation_t operation); - /** - * @Brief Validates the syntax for KT_VBR keytype val_ping structure. - * - * @param[in] val_ping KT_VBR val_ping structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVbrPingValue(val_ping *ping_val); + /** + * @Brief Validates the syntax for KT_VBR keytype Rename structure. + * + * @param[in] val_rename_vbr KT_VBR Rename structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + */ + upll_rc_t ValidateVbrRenameValue(val_rename_vbr *vbr_rename); - /* - * @Brief Validates the syntax for KT_VBR keytype value structure. - * - * @param[in] val_vbr KT_VBR value structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVbrValue(val_vbr_t *vbr_val, - uint32_t operation); + /** + * @Brief Validates the syntax for KT_VBR keytype val_ping structure. + * + * @param[in] val_ping KT_VBR val_ping structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVbrPingValue(val_ping *ping_val); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main - * table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom); - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t *ctrlr_id); + /* + * @Brief Validates the syntax for KT_VBR keytype value structure. + * + * @param[in] val_vbr KT_VBR value structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVbrValue(val_vbr_t *vbr_val, + uint32_t operation); - /* Pure virtual from VnodeMoMgrImpl */ - upll_rc_t GetVnodeName(ConfigKeyVal *ikey, - uint8_t *&vtn_name, - uint8_t *&vnode_name); - /* Rename */ - upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, - ConfigKeyVal *okey, - ConfigKeyVal *&rename_info, - DalDmlIntf *dmi, - const char *ctrlr_id, - bool &renamed); - bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - - /* @brief To convert the value structure read from DB to + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main + * table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom); + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id); + + /* Pure virtual from VnodeMoMgrImpl */ + upll_rc_t GetVnodeName(ConfigKeyVal *ikey, + uint8_t *&vtn_name, + uint8_t *&vnode_name); + /* Rename */ + upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, + ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + const char *ctrlr_id, + bool &renamed); + bool GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + + /* @brief To convert the value structure read from DB to * VTNService during READ operations - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * * @retval UPLL_RC_SUCCESS Completed successfully. * @retval UPLL_RC_ERR_GENERIC Generic failure. * **/ upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); - public: - VbrMoMgr(); - virtual ~VbrMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *key, - uint64_t index); - /* @brief This method invoke when the VTN merge hapeening between - * Running and DT import. This will checks the vnode name - * unique or not and semantic checks like IP Address, Mac - * Address and network host address. - * - * @param[in] keytype UNC KEY TYPE - * @param[in/out] ctrlr_id Controller ID - * @param[in] conflict_ckv key and value structure - * @param[in] dal Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ + public: + VbrMoMgr(); + virtual ~VbrMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *key, + uint64_t index); + /* @brief This method invoke when the VTN merge hapeening between + * Running and DT import. This will checks the vnode name + * unique or not and semantic checks like IP Address, Mac + * Address and network host address. + * + * @param[in] keytype UNC KEY TYPE + * @param[in/out] ctrlr_id Controller ID + * @param[in] conflict_ckv key and value structure + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ - upll_rc_t MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *conflict_ckv, - DalDmlIntf *dmi); - /* - * @Brief Validates the syntax for KT_VBR Keytype key structure. - * - * @param[in] key_vbr KT_VBR key structure. - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - */ - upll_rc_t ValidateVbrKey(key_vbr_t *vbr_key, - unc_keytype_operation_t operation = UNC_OP_INVALID); - /** - * @brief Method used in Delete opertaion. Its semantic checks - * for the VBR key. - * - * @param[in] ikey key and value structure. - * @param[in] dt_type key type. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - * @retval UPLL_RC_ERR_CFG_SEMANTIC Failue dueto Semantic. - */ + upll_rc_t MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *conflict_ckv, + DalDmlIntf *dmi); + /* + * @Brief Validates the syntax for KT_VBR Keytype key structure. + * + * @param[in] key_vbr KT_VBR key structure. + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + */ + upll_rc_t ValidateVbrKey(key_vbr_t *vbr_key, + unc_keytype_operation_t operation = UNC_OP_INVALID); + /** + * @brief Method used in Delete opertaion. Its semantic checks + * for the VBR key. + * + * @param[in] ikey key and value structure. + * @param[in] dt_type key type. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + * @retval UPLL_RC_ERR_CFG_SEMANTIC Failue dueto Semantic. + */ - upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); - /** - * @brief create entry in Vnode Rename Table, - * with the renamed VTN details fetched from VTN rename Table - * - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dt_type specifies the database type - * @param[in] ctrlr_id pointer to the controller name - * @param[in] dmi DalDmlIntf pointer - * - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf - */ - upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from - * which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); + /** + * @brief create entry in Vnode Rename Table, + * with the renamed VTN details fetched from VTN rename Table + * + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dt_type specifies the database type + * @param[in] ctrlr_id pointer to the controller name + * @param[in] dmi DalDmlIntf pointer + * + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf + */ + upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, + ConfigKeyVal *&okey); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from + * which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); - upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, - controller_domain_t *ctrlr_dom); - upll_rc_t IsHostAddrAndPrefixLenInUse(ConfigKeyVal *ckv, DalDmlIntf *dmi, - IpcReqRespHeader *req); + upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, + controller_domain_t *ctrlr_dom); + upll_rc_t IsHostAddrAndPrefixLenInUse(ConfigKeyVal *ckv, DalDmlIntf *dmi, + IpcReqRespHeader *req); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vbr_policingmap_momgr.cc b/coordinator/modules/upll/vbr_policingmap_momgr.cc index 19418fcd..8fb91096 100644 --- a/coordinator/modules/upll/vbr_policingmap_momgr.cc +++ b/coordinator/modules/upll/vbr_policingmap_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -85,9 +85,9 @@ VbrPolicingMapMoMgr::VbrPolicingMapMoMgr() : MoMgrImpl() { table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiVbrPolicingMapTbl, - UNC_KT_VBR_POLICINGMAP, vbr_policingmap_bind_info, - IpctSt::kIpcStKeyVbr, IpctSt::kIpcStValPolicingmap, - uudst::vbr_policingmap::kDbiVbrPolicingMapNumCols); + UNC_KT_VBR_POLICINGMAP, vbr_policingmap_bind_info, + IpctSt::kIpcStKeyVbr, IpctSt::kIpcStValPolicingmap, + uudst::vbr_policingmap::kDbiVbrPolicingMapNumCols); /* For Rename Table*/ table[CTRLRTBL] = NULL; @@ -97,12 +97,12 @@ VbrPolicingMapMoMgr::VbrPolicingMapMoMgr() : MoMgrImpl() { nchild = 0; child = NULL; - cur_instance_count = 0; } upll_rc_t VbrPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == req || NULL == dmi) { UPLL_LOG_DEBUG(" CreateCandidateMo Failed. Insufficient input parameters"); @@ -111,13 +111,15 @@ upll_rc_t VbrPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, upll_rc_t result_code = UPLL_RC_SUCCESS; - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage Err (%d)", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage Err (%d)", result_code); + return result_code; + } } - + result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateAttribute failed, Error - %d", result_code); @@ -127,96 +129,81 @@ upll_rc_t VbrPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *okey = NULL; result_code = GetControllerId(ikey, okey, req->datatype, dmi); if (UPLL_RC_SUCCESS != result_code) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } UPLL_LOG_DEBUG("GetControllerId failed %d", result_code); DELETE_IF_NOT_NULL(okey); return result_code; } DELETE_IF_NOT_NULL(okey); - + uint8_t *ctrlr_id = NULL; GET_USER_DATA_CTRLR(ikey, ctrlr_id); - - // Check VBR object existence in VbrPolicingMap CANDIDATE DB - // if record exists, return the error code - result_code = IsReferenced(ikey, req->datatype, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("VBR Object exists in CANDIDATE DB (%d)", - result_code); - return result_code; - } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("VBR Instance not Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("CreateCandidateMo Error Accesing CANDIDATE DB (%d)", - result_code); - return result_code; - } -#if 0 - ConfigKeyVal *tmpckv = NULL; - result_code = DupConfigKeyVal(tmpckv, ikey, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); - return result_code; - } -#endif val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { // Check Policingmap object exists in PolicingProfileTbl CANDIDATE DB // If record not exists, return error code result_code = IsPolicyProfileReferenced(ikey, req->datatype, dmi, - UNC_OP_READ); + UNC_OP_READ); if (UPLL_RC_SUCCESS != result_code) { if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Profile Object (%d) not available in CANDIDATE DB", - result_code); + result_code); return UPLL_RC_ERR_CFG_SEMANTIC; } else { UPLL_LOG_DEBUG("CreateCandidateMo Error Accesing CANDIDATEDB(%d)", - result_code); + result_code); return result_code; } } } - - // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - if (req->datatype == UPLL_DT_CANDIDATE) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if ((result_code != UPLL_RC_ERR_INSTANCE_EXISTS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" Is Exist check operation failed: err code(%d)", - result_code); - return result_code; - } - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("RestoreChildren Failed, err %d", result_code); + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); return result_code; } - return result_code; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, reinterpret_cast(ctrlr_id), - req->datatype, &cur_instance_count, - dmi, MAINTBL); - DELETE_IF_NOT_NULL(temp_key); - - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_id)); + result_code = ValidateCapability(req, + ikey, + reinterpret_cast + (ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Key not supported by controller"); @@ -228,10 +215,10 @@ upll_rc_t VbrPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, // check the refcount capability and update the refcount or create the // record in policingprofilectrltbl and policingprofileentryctrltbl. result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Err in CANDIDATE DB(%d)", - result_code); + result_code); return result_code; } } @@ -258,21 +245,21 @@ upll_rc_t VbrPolicingMapMoMgr::RestorePOMInCtrlTbl( return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL || - (ikey->get_key_type() != UNC_KT_VBR_POLICINGMAP)) { + (ikey->get_key_type() != UNC_KT_VBR_POLICINGMAP)) { UPLL_LOG_DEBUG("Ignoring ktype/Table kt=%d, tbl=%d", - ikey->get_key_type(), tbl); + ikey->get_key_type(), tbl); return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (NULL == val_pm) { UPLL_LOG_DEBUG(" Value structure is NULL"); return UPLL_RC_ERR_GENERIC; } if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(ikey, dt_type, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Failed to update policingprofile in ctrlrTbl Err(%d)", @@ -327,7 +314,7 @@ upll_rc_t VbrPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutCtrlr | kOpInOutDomain }; result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -336,7 +323,7 @@ upll_rc_t VbrPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(okey, req->datatype, dmi, UNC_OP_DELETE); @@ -375,54 +362,26 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" SetRenameFlag failed %d", result_code); - return result_code; - } - - ConfigKeyVal *okey = NULL; - result_code = GetControllerId(ikey, okey, req->datatype, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetControllerId failed %d", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - delete okey; - - // Check VBR object existence in VbrPolicingMap CANDIDATE DB - // If record not exists, return error - result_code = IsReferenced(ikey, req->datatype, dmi); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("IsReferenced record not available (%d)", result_code); - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("IsReferenced record available"); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("IsReferenced error accessing DB (%d)", result_code); - return result_code; - } - // Check vbr Policingmap object exists in PolicingProfileTbl CANDIDATE DB // If record not exists, return error code val_policingmap_t *val_ival = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { - result_code = IsPolicyProfileReferenced(ikey, req->datatype, dmi, - UNC_OP_READ); - if (UPLL_RC_SUCCESS != result_code) { - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("IsPolicyProfileReferenced record not available (%d)", - result_code); - return UPLL_RC_ERR_CFG_SEMANTIC; - } else { - UPLL_LOG_DEBUG( - "IsPolicyProfileReferenced error accessing DB (%d)", - result_code); - return result_code; + result_code = IsPolicyProfileReferenced(ikey, req->datatype, dmi, + UNC_OP_READ); + if (UPLL_RC_SUCCESS != result_code) { + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("IsPolicyProfileReferenced record not available (%d)", + result_code); + return UPLL_RC_ERR_CFG_SEMANTIC; + } else { + UPLL_LOG_DEBUG( + "IsPolicyProfileReferenced error accessing DB (%d)", + result_code); + return result_code; + } } } - } // 1)Get vbr associated ctrlr name and invoke the PP and PPE functions to // check the refcount capability and update the refcount or create the // record in policingprofilectrltbl and policingprofileentryctrltbl. @@ -433,9 +392,9 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutCtrlr|kOpInOutDomain }; result_code = ReadConfigDB(tmpckv, req->datatype, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("ReadConfigDB failed"); @@ -445,7 +404,8 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, GET_USER_DATA_CTRLR(tmpckv, ctrlr_id); SET_USER_DATA_CTRLR(ikey, ctrlr_id); - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_id)); + result_code = ValidateCapability(req, ikey, reinterpret_cast + (ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(tmpckv); @@ -454,49 +414,49 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, } val_policingmap_t *val_tmp_val = reinterpret_cast - (GetVal(tmpckv)); + (GetVal(tmpckv)); if (UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM] && UNC_VF_VALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name valid in DB and ikey"); result_code = UpdateRefCountInPPCtrlr(tmpckv, req->datatype, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in delete (%d)", - result_code); + result_code); return result_code; } result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); return result_code; } } else if ((UNC_VF_VALID_NO_VALUE == val_tmp_val-> - valid[UPLL_IDX_POLICERNAME_PM] || - UNC_VF_INVALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM])&& - UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { + valid[UPLL_IDX_POLICERNAME_PM] || + UNC_VF_INVALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM])&& + UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name valid in ikey and validnovalue in DB"); result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); return result_code; } } else if (UNC_VF_VALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM] && - UNC_VF_VALID_NO_VALUE == val_ival-> - valid[UPLL_IDX_POLICERNAME_PM]) { + UNC_VF_VALID_NO_VALUE == val_ival-> + valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name validnovalue in ikey and valid in db"); result_code = UpdateRefCountInPPCtrlr(tmpckv, req->datatype, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); return result_code; } } @@ -521,7 +481,12 @@ upll_rc_t VbrPolicingMapMoMgr::IsReferenced(ConfigKeyVal *ikey, if (NULL == ikey) return UPLL_RC_ERR_GENERIC; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; // Check the VBR PM object existence - result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_READ, dmi, &dbop, MAINTBL); + result_code = UpdateConfigDB(ikey, + dt_type, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); UPLL_LOG_DEBUG("IsReferenced status (%d)", result_code); return result_code; } @@ -536,7 +501,7 @@ upll_rc_t VbrPolicingMapMoMgr::IsPolicyProfileReferenced( // Get the memory allocated policy profile key structure MoMgrImpl *mgr = static_cast((const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE)))); + UNC_KT_POLICING_PROFILE)))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("IsPolicyProfileReferenced GetChildConfigKey (%d)", @@ -564,11 +529,12 @@ upll_rc_t VbrPolicingMapMoMgr::IsPolicyProfileReferenced( val_policingmap_t *val_pm = reinterpret_cast (GetVal(ikey)); PolicingProfileEntryMoMgr *ppe_mgr = - reinterpret_cast - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); - result_code = ppe_mgr->ValidateValidElements(reinterpret_cast - (val_pm->policer_name), dmi, dt_type); + reinterpret_cast + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); + result_code = ppe_mgr->ValidateValidElements( + reinterpret_cast + (val_pm->policer_name), dmi, dt_type); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ValidateValidElements failed %d", result_code); delete okey; @@ -583,7 +549,6 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateRefCountInPPCtrlr( unc_keytype_operation_t op) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; uint8_t *ctrlr_id = NULL; GET_USER_DATA_CTRLR(ikey, ctrlr_id); @@ -591,13 +556,13 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateRefCountInPPCtrlr( PolicingProfileMoMgr *pp_mgr = reinterpret_cast (const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); - #if 0 + UNC_KT_POLICING_PROFILE))); +#if 0 PolicingProfileEntryMoMgr *ppe_mgr = reinterpret_cast (const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE_ENTRY))); - #endif + UNC_KT_POLICING_PROFILE_ENTRY))); +#endif val_policingmap_t* val_vtn_policingmap = reinterpret_cast(GetVal(ikey)); @@ -605,40 +570,37 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateRefCountInPPCtrlr( UPLL_LOG_DEBUG( "VbrPolicingMapMoMgr::UpdateRefCountInPPCtrlr ctrlr_id NULL (%d)", result_code); - DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } -/* Check the ref count capability of vbr associated controller name in - policingprofilectrltbl If refcount reached the - max capability, then return error. - If ref count is less than capability and the record exist in - policingprofilectrltbl, based on the operation refcount should be - incremented or decremented and update policingprofilectrltbl. - create the record with refcount if record not - exist in policingprofilectrl tbl for the vbr associated controller name -*/ + /* Check the ref count capability of vbr associated controller name in + policingprofilectrltbl If refcount reached the + max capability, then return error. + If ref count is less than capability and the record exist in + policingprofilectrltbl, based on the operation refcount should be + incremented or decremented and update policingprofilectrltbl. + create the record with refcount if record not + exist in policingprofilectrl tbl for the vbr associated controller name + */ result_code = pp_mgr->PolicingProfileCtrlrTblOper( reinterpret_cast(val_vtn_policingmap->policer_name), reinterpret_cast(ctrlr_id), dmi, op, dt_type); if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(okey); return result_code; } // Create/Delete/Update the record in policingprofileentryctrltbl // based on oper - #if 0 +#if 0 result_code = ppe_mgr->PolicingProfileEntryCtrlrTblOper( - reinterpret_cast - (val_vtn_policingmap->policer_name), - reinterpret_cast(ctrlr_id), dmi, op, dt_type); + reinterpret_cast + (val_vtn_policingmap->policer_name), + reinterpret_cast(ctrlr_id), dmi, op, dt_type); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(okey); return result_code; } - #endif - DELETE_IF_NOT_NULL(okey); +#endif return UPLL_RC_SUCCESS; } @@ -650,8 +612,8 @@ upll_rc_t VbrPolicingMapMoMgr::GetControllerId(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; VbrMoMgr *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); if (!mgr) { UPLL_LOG_DEBUG("GetControllerId GetMoManager failed (%d)", result_code); return UPLL_RC_ERR_GENERIC; @@ -659,7 +621,7 @@ upll_rc_t VbrPolicingMapMoMgr::GetControllerId(ConfigKeyVal *ikey, result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetControllerId GetChildConfigKey failed (%d)", - result_code); + result_code); return result_code; } key_vbr_t *vbr_okey = reinterpret_cast(okey->get_key()); @@ -667,10 +629,10 @@ upll_rc_t VbrPolicingMapMoMgr::GetControllerId(ConfigKeyVal *ikey, uuu::upll_strncpy(vbr_okey->vbridge_name, vbr_ikey->vbridge_name, (kMaxLenVnodeName+1)); uuu::upll_strncpy(vbr_okey->vtn_key.vtn_name, vbr_ikey->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + (kMaxLenVtnName+1)); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutCtrlr|kOpInOutDomain }; result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -808,17 +770,20 @@ upll_rc_t VbrPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, SET_USER_DATA_CTRLR_DOMAIN(dup_key1, ctrlr_dom); - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability(req, + ikey, + reinterpret_cast + (ctrlr_dom.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(dup_key); - DELETE_IF_NOT_NULL(dup_key1); - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; - } + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(dup_key); + DELETE_IF_NOT_NULL(dup_key1); + UPLL_LOG_DEBUG("Key not supported by controller"); + return result_code; + } // 1.Getting renamed name if renamed - // need to uncomment in IMPORT CASE + // need to uncomment in IMPORT CASE result_code = GetRenamedControllerKey(dup_key1, req->datatype, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -844,10 +809,10 @@ upll_rc_t VbrPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, memcpy(&(ipc_req.header), req, sizeof(IpcReqRespHeader)); if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, - true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, + true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -855,9 +820,10 @@ upll_rc_t VbrPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, } if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + UPLL_LOG_DEBUG("Driver response for Key %d controller" + "%s result %d", + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); return ipc_resp.header.result_code; } result_code = ConstructReadDetailEntryResponse(dup_key1, @@ -901,7 +867,7 @@ upll_rc_t VbrPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, } upll_rc_t VbrPolicingMapMoMgr::GetReadVbrEntryKey(ConfigKeyVal *&dup_key, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vbr_policingmap_entry* vbr_key = @@ -914,14 +880,14 @@ upll_rc_t VbrPolicingMapMoMgr::GetReadVbrEntryKey(ConfigKeyVal *&dup_key, key_vbr_policingmap_entry *key = reinterpret_cast(dup_key->get_key()); key_vbr_policingmap_entry *key1 = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(reinterpret_cast(key->vbr_key.vtn_key.vtn_name), - reinterpret_cast(key1->vbr_key.vtn_key.vtn_name), - (kMaxLenVtnName + 1)); + reinterpret_cast(key1->vbr_key.vtn_key.vtn_name), + (kMaxLenVtnName + 1)); uuu::upll_strncpy(reinterpret_cast(key->vbr_key.vbridge_name), - reinterpret_cast(key1->vbr_key.vbridge_name), - (kMaxLenVnodeName + 1)); + reinterpret_cast(key1->vbr_key.vbridge_name), + (kMaxLenVnodeName + 1)); vbr_key->sequence_num = key1->sequence_num; return result_code; } @@ -933,19 +899,19 @@ upll_rc_t VbrPolicingMapMoMgr::GetReadVbrKey(ConfigKeyVal *&dup_key, result_code = GetChildConfigKey(dup_key, NULL); if (result_code != UPLL_RC_SUCCESS) { - return result_code; + return result_code; } key_vbr_t *key = reinterpret_cast(dup_key->get_key()); key_vbr_policingmap_entry *key1 = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(reinterpret_cast(key->vtn_key.vtn_name), - reinterpret_cast(key1->vbr_key.vtn_key.vtn_name), - (kMaxLenVtnName + 1)); + reinterpret_cast(key1->vbr_key.vtn_key.vtn_name), + (kMaxLenVtnName + 1)); uuu::upll_strncpy(reinterpret_cast(key->vbridge_name), - reinterpret_cast(key1->vbr_key.vbridge_name), - (kMaxLenVnodeName + 1)); + reinterpret_cast(key1->vbr_key.vbridge_name), + (kMaxLenVnodeName + 1)); return UPLL_RC_SUCCESS; } @@ -968,7 +934,7 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, return result_code; } memset(&ctrlr_dom, 0, sizeof(controller_domain)); - + if ((UNC_KT_VBR_POLICINGMAP == ikey->get_key_type()) && UNC_OP_READ_SIBLING == req->operation ) { /* Since read sibling not applicable for policingmap*/ @@ -991,7 +957,6 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } else if ((UPLL_DT_STATE == req->datatype) && (req->option1 == UNC_OPT1_DETAIL)&& (req->option2 == UNC_OPT2_NONE)) { - result_code = ReadDetailRecord(req, ikey, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ReadDetailRecord result_code (%d)", result_code); @@ -1045,7 +1010,8 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, result_code = mgr->ReadSiblingMo(req, tctrl_key, dmi); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDb failed for tctrl_key%d ", result_code); + UPLL_LOG_DEBUG("ReadConfigDb failed for tctrl_key%d ", + result_code); return result_code; } @@ -1102,14 +1068,15 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(dup_key1, ctrlr_dom); - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability(req, ikey, reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Not Supported By Controller"); - return result_code; + return result_code; } // 1.Getting renamed name if renamed - // need to uncomment for IMPORT case + // need to uncomment for IMPORT case result_code = GetRenamedControllerKey(dup_key1, req->datatype, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -1133,7 +1100,8 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, val_policingmap_t* val_policingmap = reinterpret_cast(GetVal(dup_key)); - l_pp_key->sequence_num =reinterpret_cast < key_vbr_policingmap_entry*> + l_pp_key->sequence_num =reinterpret_cast + (ikey->get_key())->sequence_num; uuu::upll_strncpy(l_pp_key->policingprofile_key.policingprofile_name, val_policingmap->policer_name, @@ -1157,11 +1125,15 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, memcpy(temp_req, req, sizeof(IpcReqRespHeader)); temp_req->option1 = UNC_OPT1_NORMAL; // result_code = mgr->ReadInfoFromDB(req, ppe_ckv, dmi, &ctrlr_dom); - // result_code = mgr->ReadSiblingMo(temp_req, ppe_ckv, dmi); + // result_code = mgr->ReadSiblingMo( + // temp_req, + // ppe_ckv, + // dmi); result_code = mgr->ReadSiblingMo(temp_req, tctrl_key, dmi); req->rep_count = temp_req->rep_count; if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDb failed for tctrl_key%d ", result_code); + UPLL_LOG_DEBUG("ReadConfigDb failed for tctrl_key%d ", + result_code); ConfigKeyVal::Free(temp_req); return result_code; } @@ -1188,8 +1160,8 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d ctrlr %s result %d", - dup_key1->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + dup_key1->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(dup_key1); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); return ipc_resp.header.result_code; @@ -1241,8 +1213,8 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } upll_rc_t VbrPolicingMapMoMgr::ReadDetailRecord(IpcReqRespHeader *req, - ConfigKeyVal *&ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *&ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *l_key = NULL; ConfigKeyVal *dup_key = NULL; @@ -1273,7 +1245,9 @@ upll_rc_t VbrPolicingMapMoMgr::ReadDetailRecord(IpcReqRespHeader *req, GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - result_code = ValidateCapability(req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability(req, + ikey, + reinterpret_cast(ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(dup_key); @@ -1344,7 +1318,7 @@ upll_rc_t VbrPolicingMapMoMgr::ReadDetailRecord(IpcReqRespHeader *req, DELETE_IF_NOT_NULL(l_key); return result_code; } - + // Rename bool VbrPolicingMapMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, @@ -1353,7 +1327,7 @@ bool VbrPolicingMapMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, UPLL_LOG_DEBUG("GetRenameKeyBindInfo (%d) (%d)", key_type, tbl); nattr = sizeof(key_vbrpm_maintbl_rename_bind_info)/ - sizeof(key_vbrpm_maintbl_rename_bind_info[0]); + sizeof(key_vbrpm_maintbl_rename_bind_info[0]); binfo = key_vbrpm_maintbl_rename_bind_info; return PFC_TRUE; } @@ -1370,7 +1344,7 @@ upll_rc_t VbrPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_vbr_t *key_vbr = reinterpret_cast(ConfigKeyVal::Malloc(sizeof(key_vbr_t))); @@ -1384,7 +1358,7 @@ upll_rc_t VbrPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_rename->old_unc_vtn_name, (kMaxLenVtnName + 1)); - if (ikey->get_key_type() == table[MAINTBL]->get_key_type()) { + if (ikey->get_key_type() == UNC_KT_VBRIDGE) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { UPLL_LOG_DEBUG("old_unc_vnode_name NULL"); FREE_IF_NOT_NULL(key_vbr); @@ -1392,8 +1366,8 @@ upll_rc_t VbrPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, } uuu::upll_strncpy(key_vbr->vbridge_name, - key_rename->old_unc_vnode_name, - (kMaxLenVnodeName + 1)); + key_rename->old_unc_vnode_name, + (kMaxLenVnodeName + 1)); } okey = new ConfigKeyVal(UNC_KT_VBR_POLICINGMAP, IpctSt::kIpcStKeyVbr, @@ -1406,10 +1380,11 @@ upll_rc_t VbrPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; @@ -1421,12 +1396,12 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); UPLL_LOG_DEBUG("CopyToConfigKey datatype (%d)", data_type); // Copy the old policer name in val_policingmap val_policingmap_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); if (!val) return UPLL_RC_ERR_GENERIC; memset(val, 0, sizeof(val_policingmap_t)); @@ -1437,17 +1412,17 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } uuu::upll_strncpy(val->policer_name, - key_rename->old_policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_rename->old_policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val->valid[UPLL_IDX_POLICERNAME_PM], val->policer_name); + val->valid[UPLL_IDX_POLICERNAME_PM], val->policer_name); result_code = GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - FREE_IF_NOT_NULL(val); - return result_code; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + FREE_IF_NOT_NULL(val); + return result_code; } if (!okey) { FREE_IF_NOT_NULL(val); @@ -1456,11 +1431,13 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValPolicingmap, val)); - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; - // Read the record of key structure and old policer name in maintbl + // Read the record of key structure and old policer name in maintbl result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG(" ReadConfigDB failed "); DELETE_IF_NOT_NULL(okey); @@ -1478,12 +1455,13 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, if (!kval) return UPLL_RC_ERR_GENERIC; // Copy the new policer name in val_policingmap val_policingmap_t *val1 = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); if (!val1) return UPLL_RC_ERR_GENERIC; memset(val1, 0, sizeof(val_policingmap_t)); // New name null check - if (!strlen(reinterpret_cast(key_rename->new_policingprofile_name))) { + if (!strlen(reinterpret_cast + (key_rename->new_policingprofile_name))) { FREE_IF_NOT_NULL(val1); UPLL_LOG_DEBUG("new_policingprofile_name NULL"); DELETE_IF_NOT_NULL(kval); @@ -1492,11 +1470,11 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } // Copy the new policer name into val_policingmap uuu::upll_strncpy(val1->policer_name, - key_rename->new_policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_rename->new_policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val1->valid[UPLL_IDX_POLICERNAME_PM], val1->policer_name); + val1->valid[UPLL_IDX_POLICERNAME_PM], val1->policer_name); ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValPolicingmap, val1); kval->SetCfgVal(cval1); @@ -1517,10 +1495,10 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("kval flag (%d)", rename); // Update the new policer name in MAINTBL result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(first_ckv); return result_code; @@ -1529,7 +1507,7 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(kval); okey = okey->get_next_cfg_key_val(); - } + } DELETE_IF_NOT_NULL(first_ckv); return result_code; } @@ -1554,9 +1532,11 @@ upll_rc_t VbrPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, if (!ckval) return UPLL_RC_ERR_GENERIC; - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -1590,16 +1570,17 @@ upll_rc_t VbrPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, return UPLL_RC_SUCCESS; } -upll_rc_t VbrPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t *ctrlr_id) { +upll_rc_t VbrPolicingMapMoMgr::GetRenamedUncKey( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code; ConfigKeyVal *unc_key = NULL; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; UPLL_LOG_TRACE("%s GetRenamedUncKey vbrpm start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if (NULL == ikey || NULL == dmi || NULL == ctrlr_id) { UPLL_LOG_DEBUG(" GetRenamedUncKey failed. Insufficient input parameters."); return UPLL_RC_ERR_GENERIC; @@ -1629,7 +1610,7 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + UNC_KT_VBRIDGE))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr NULL"); free(rename_vnode); @@ -1670,17 +1651,17 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, key_vbr *vbr_key = reinterpret_cast(unc_key->get_key()); if (vbr_key) { if (strcmp(reinterpret_cast(ctrlr_key->vtn_key.vtn_name), - reinterpret_cast(vbr_key->vtn_key.vtn_name))) { - uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, - vbr_key->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(vbr_key->vtn_key.vtn_name))) { + uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, + vbr_key->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); } if (strcmp(reinterpret_cast(ctrlr_key->vbridge_name), - reinterpret_cast(vbr_key->vbridge_name))) { - uuu::upll_strncpy(ctrlr_key->vbridge_name, - vbr_key->vbridge_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast(vbr_key->vbridge_name))) { + uuu::upll_strncpy(ctrlr_key->vbridge_name, + vbr_key->vbridge_name, + (kMaxLenVnodeName + 1)); } } } @@ -1691,7 +1672,7 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, /* ********** Get the Renamed Policer name ******* */ val_rename_policingprofile *rename_policingprofile = reinterpret_cast(ConfigKeyVal::Malloc( - sizeof(val_rename_policingprofile))); + sizeof(val_rename_policingprofile))); if (!rename_policingprofile) { UPLL_LOG_DEBUG("rename_policingprofile NULL"); return UPLL_RC_ERR_GENERIC; @@ -1713,7 +1694,7 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + UNC_KT_POLICING_PROFILE))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr policing profile NULL"); free(rename_policingprofile); @@ -1757,17 +1738,17 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, reinterpret_cast(unc_key->get_key()); if (key_policingprofile) { if (strcmp(reinterpret_cast(val_policingmap->policer_name), - reinterpret_cast(key_policingprofile - ->policingprofile_name))) { - uuu::upll_strncpy( - val_policingmap->policer_name, - key_policingprofile->policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + reinterpret_cast(key_policingprofile + ->policingprofile_name))) { + uuu::upll_strncpy( + val_policingmap->policer_name, + key_policingprofile->policingprofile_name, + (kMaxLenPolicingProfileName + 1)); } } } UPLL_LOG_TRACE("%s GetRenamedUncKey vbrpm end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; return UPLL_RC_SUCCESS; @@ -1778,7 +1759,6 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedControllerKey( controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; upll_rc_t result_code; - uint8_t rename = 0; ConfigKeyVal *okey = NULL; if (NULL == ikey || NULL == dmi) { @@ -1787,152 +1767,137 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedControllerKey( return UPLL_RC_ERR_GENERIC; } - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutCtrlr }; - - // Check the rename - result_code = IsRenamed(ikey, dt_type, dmi, rename); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("IsRenamed failed (%d)", result_code); - return result_code; - } + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutCtrlr }; - if (rename == 0) { - UPLL_LOG_DEBUG("GetRenamedControllerKey No Rename"); - return UPLL_RC_SUCCESS; - } UPLL_LOG_TRACE("Start Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); - if ((rename & VTN_RENAME) || (rename & VBR_RENAME)) { - MoMgrImpl *mgr = + MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("mgr NULL"); - return UPLL_RC_ERR_GENERIC; - } - - // Get memory allocated vbr key structure - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed (%d)", result_code); - return result_code; - } - - if (!okey) return UPLL_RC_ERR_GENERIC; + UNC_KT_VBRIDGE))); + if (NULL == mgr) { + UPLL_LOG_DEBUG("mgr NULL"); + return UPLL_RC_ERR_GENERIC; + } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + // Get memory allocated vbr key structure + result_code = mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed (%d)", result_code); + return result_code; + } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (UNC_KT_VBR_POLICINGMAP == ikey->get_key_type()) { - UPLL_LOG_DEBUG("UNC_KT_VBR_POLICINGMAP (%d)", ikey->get_key_type()); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + if (NULL != ctrlr_dom) { + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom) + } else { + UPLL_LOG_DEBUG("ctrlr null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); + if (UNC_KT_VBR_POLICINGMAP == ikey->get_key_type()) { + UPLL_LOG_DEBUG("UNC_KT_VBR_POLICINGMAP (%d)", ikey->get_key_type()); + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->vtn_key.vtn_name, + reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_key())->vbridge_name, - (kMaxLenVnodeName + 1)); + UPLL_LOG_DEBUG("vtn name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name); - UPLL_LOG_DEBUG("vbr name (%s) (%s)", + uuu::upll_strncpy( reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_key())->vbridge_name); - } else if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) { - UPLL_LOG_DEBUG("UNC_KT_VBR_POLICINGMAP_ENTRY (%d)", ikey->get_key_type()); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(ikey->get_key())->vbridge_name, + (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vbr_pm_entry vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_key.vtn_name, + UPLL_LOG_DEBUG("vbr name (%s) (%s)", + reinterpret_cast(okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->vbridge_name); + } else if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) { + UPLL_LOG_DEBUG("UNC_KT_VBR_POLICINGMAP_ENTRY (%d)", ikey->get_key_type()); + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->vtn_key.vtn_name, reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name); + (ikey->get_key())->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_key())->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + UPLL_LOG_DEBUG("vbr_pm_entry vtn name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->vbr_key.vtn_key.vtn_name); - UPLL_LOG_DEBUG("vbr_pm_entry vbr name (%s) (%s)", + uuu::upll_strncpy( reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_key())->vbr_key.vbridge_name); - } + reinterpret_cast + (ikey->get_key())->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); - // Read the renamed vtn/vbr - result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB failed (%d)", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } + UPLL_LOG_DEBUG("vbr_pm_entry vbr name (%s) (%s)", + reinterpret_cast(okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_key())->vbr_key.vbridge_name); + } + + // Read the renamed vtn/vbr + result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB failed (%d)", result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { // Get the key from okey val_rename_vnode_t *rename_val = - reinterpret_cast(GetVal(okey)); + reinterpret_cast(GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("rename_val NULL"); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } - if (rename & VTN_RENAME) { /* vtn renamed */ - UPLL_LOG_DEBUG("vtn name renamed"); - - if (UNC_KT_VBR_POLICINGMAP == ikey->get_key_type()) { - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); - } else if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) { - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); - } - } - if (rename & VBR_RENAME) { /* vnode renamed */ - UPLL_LOG_DEBUG("vbr name renamed"); - if (UNC_KT_VBR_POLICINGMAP == ikey->get_key_type()) { - uuu::upll_strncpy(reinterpret_cast - (reinterpret_cast(ikey->get_key())->vbridge_name), - reinterpret_cast(rename_val->ctrlr_vnode_name), - kMaxLenVnodeName + 1); - } else if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) { - uuu::upll_strncpy(reinterpret_cast - (reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name), - reinterpret_cast(rename_val->ctrlr_vnode_name), - kMaxLenVnodeName + 1); - } + + if (UNC_KT_VBR_POLICINGMAP == ikey->get_key_type()) { + uuu::upll_strncpy(reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(reinterpret_cast + (reinterpret_cast + (ikey->get_key())->vbridge_name), + reinterpret_cast + (rename_val->ctrlr_vnode_name), + kMaxLenVnodeName + 1); + } else if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) { + uuu::upll_strncpy(reinterpret_cast + (ikey->get_key())->vbr_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(reinterpret_cast + (reinterpret_cast + (ikey->get_key())->vbr_key.vbridge_name), + reinterpret_cast + (rename_val->ctrlr_vnode_name), + kMaxLenVnodeName + 1); } - DELETE_IF_NOT_NULL(okey); } + DELETE_IF_NOT_NULL(okey); + mgr = NULL; if (UNC_KT_VBR_POLICINGMAP == ikey->get_key_type()) { - if (rename & POLICINGPROFILE_RENAME) { UPLL_LOG_DEBUG("policing profile name renamed"); - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_POLICING_PROFILE))); + MoMgrImpl *mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_POLICING_PROFILE))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr NULL"); return UPLL_RC_ERR_GENERIC; @@ -1943,62 +1908,50 @@ upll_rc_t VbrPolicingMapMoMgr::GetRenamedControllerKey( UPLL_LOG_DEBUG("GetChildConfigKey failed (%d)", result_code); return result_code; } - if (!okey) return UPLL_RC_ERR_GENERIC; - - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); - if (!val_policingmap) - return UPLL_RC_SUCCESS; + if (!val_policingmap) { + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_SUCCESS; + } key_policingprofile_t *key_policingprofile = - reinterpret_cast(okey->get_key()); + reinterpret_cast(okey->get_key()); uuu::upll_strncpy(key_policingprofile->policingprofile_name, - val_policingmap->policer_name, - (kMaxLenPolicingProfileName + 1)); + val_policingmap->policer_name, + (kMaxLenPolicingProfileName + 1)); DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutCtrlr }; result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } + RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed (%d)", result_code); DELETE_IF_NOT_NULL(okey); return result_code; } - val_rename_policingprofile_t *rename_policingprofile = - reinterpret_cast(GetVal(okey)); - if (!rename_policingprofile) { - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("profile is not valid"); - return UPLL_RC_ERR_GENERIC; - } - - uuu::upll_strncpy( - reinterpret_cast(val_policingmap->policer_name), - reinterpret_cast(rename_policingprofile - ->policingprofile_newname), - (kMaxLenPolicingProfileName + 1)); + if (UPLL_RC_SUCCESS == result_code) { + val_rename_policingprofile_t *rename_policingprofile = + reinterpret_cast(GetVal(okey)); + if (!rename_policingprofile) { + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_DEBUG("profile is not valid"); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy( + reinterpret_cast(val_policingmap->policer_name), + reinterpret_cast(rename_policingprofile + ->policingprofile_newname), + (kMaxLenPolicingProfileName + 1)); + } mgr = NULL; DELETE_IF_NOT_NULL(okey); } - } UPLL_LOG_TRACE("End Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); return UPLL_RC_SUCCESS; } @@ -2009,19 +1962,20 @@ bool VbrPolicingMapMoMgr::CompareValidValue(void *&val1, void *val2, bool invalid_attr = true; val_policingmap_t *val_pm1 = reinterpret_cast(val1); val_policingmap_t *val_pm2 = reinterpret_cast(val2); -// if (audit) { - if (UNC_VF_INVALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && + // if (audit) { + if (UNC_VF_INVALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) - val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID_NO_VALUE; -// } + val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID_NO_VALUE; + // } if (UNC_VF_VALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) { if (!strcmp(reinterpret_cast(val_pm1->policer_name), - reinterpret_cast(val_pm2->policer_name))) - val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_INVALID; + reinterpret_cast(val_pm2->policer_name))) + val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_INVALID; } - if ((UNC_VF_VALID == (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM])) + if ((UNC_VF_VALID == (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM]) || + (UNC_VF_VALID_NO_VALUE == (uint8_t)val_pm1-> + valid[UPLL_IDX_POLICERNAME_PM])) invalid_attr = false; return invalid_attr; @@ -2029,9 +1983,11 @@ bool VbrPolicingMapMoMgr::CompareValidValue(void *&val1, void *val2, #if 0 upll_rc_t VbrPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_policingmap_t *val = NULL; unc_keytype_configstatus_t cs_status = @@ -2044,9 +2000,9 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, val->cs_attr[0] = cs_status; } } else { - UPLL_LOG_DEBUG("Operation Not Supported."); - return UPLL_RC_ERR_GENERIC; - } + UPLL_LOG_DEBUG("Operation Not Supported."); + return UPLL_RC_ERR_GENERIC; + } UPLL_LOG_DEBUG("Update Config Status Successfull."); return UPLL_RC_SUCCESS; @@ -2054,9 +2010,10 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, #endif upll_rc_t VbrPolicingMapMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ckv_running) @@ -2070,14 +2027,14 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateAuditConfigStatus( if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } @@ -2085,58 +2042,8 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateAuditConfigStatus( upll_rc_t VbrPolicingMapMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - ConfigKeyVal *okey = NULL; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_DEBUG("input key is null"); - return UPLL_RC_ERR_GENERIC; - } - - key_vbr_t *vbr_key_pm = reinterpret_cast(ikey->get_key()); - - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBRIDGE))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for KT_VBRIDGE key struct - %d", - result_code); - return result_code; - } - - key_vbr_t *vbr_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - vbr_key_pm->vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbr_key->vbridge_name, - vbr_key_pm->vbridge_name, - kMaxLenVnodeName + 1); - - /* Checks the given key_vbr exists in DB or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent KT_VBRIDGE key does not exists"); - result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - UPLL_LOG_DEBUG("ValidateAttribute Successfull."); - return result_code; + // No operation + return UPLL_RC_SUCCESS; } bool VbrPolicingMapMoMgr::CompareKey(void *key1, void *key2) { @@ -2170,7 +2077,7 @@ upll_rc_t VbrPolicingMapMoMgr::GetValid(void *val, uint64_t indx, case uudst::vbr_policingmap::kDbiPolicername: valid = &(reinterpret_cast(val) - ->valid[UPLL_IDX_POLICERNAME_PM]); + ->valid[UPLL_IDX_POLICERNAME_PM]); break; default: valid = NULL; @@ -2184,24 +2091,24 @@ upll_rc_t VbrPolicingMapMoMgr::GetValid(void *val, uint64_t indx, upll_rc_t VbrPolicingMapMoMgr::AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, MoMgrTables tbl) { -UPLL_FUNC_TRACE; -void *val; -if (ck_val != NULL) { - UPLL_LOG_DEBUG("ck_val is not NULL"); - return UPLL_RC_ERR_GENERIC; -} -switch (tbl) { - case MAINTBL: - val = reinterpret_cast(ConfigKeyVal::Malloc - (sizeof(val_policingmap_t))); + UPLL_FUNC_TRACE; + void *val; + if (ck_val != NULL) { + UPLL_LOG_DEBUG("ck_val is not NULL"); + return UPLL_RC_ERR_GENERIC; + } + switch (tbl) { + case MAINTBL: + val = reinterpret_cast(ConfigKeyVal::Malloc + (sizeof(val_policingmap_t))); - ck_val = new ConfigVal(IpctSt::kIpcStValPolicingmap, val); - break; - default: - UPLL_LOG_DEBUG("AllocVal val_policingmap_t Allocation failure"); - val = NULL; - break; + ck_val = new ConfigVal(IpctSt::kIpcStValPolicingmap, val); + break; + default: + UPLL_LOG_DEBUG("AllocVal val_policingmap_t Allocation failure"); + val = NULL; + break; } if (NULL == ck_val) { UPLL_LOG_DEBUG("AllocVal ck_val Allocation failure"); @@ -2217,7 +2124,7 @@ upll_rc_t VbrPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL || okey != NULL || req->get_key_type() != - UNC_KT_VBR_POLICINGMAP || tbl != MAINTBL) { + UNC_KT_VBR_POLICINGMAP || tbl != MAINTBL) { UPLL_LOG_DEBUG(" DupConfigKeyVal failed. Input ConfigKeyVal is NULL"); return UPLL_RC_ERR_GENERIC; } @@ -2228,14 +2135,14 @@ upll_rc_t VbrPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tmp) { if (tbl == MAINTBL) { val_policingmap_t *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); if (NULL == ival) { UPLL_LOG_DEBUG("DupConfigKeyVal val_policingmap_t alloc failure"); return UPLL_RC_ERR_GENERIC; } policingmap_val = - reinterpret_cast(ConfigKeyVal::Malloc - (sizeof(val_policingmap_t))); + reinterpret_cast(ConfigKeyVal::Malloc + (sizeof(val_policingmap_t))); memset(policingmap_val, 0, sizeof(val_policingmap_t)); memcpy(policingmap_val, ival, sizeof(val_policingmap_t)); @@ -2250,7 +2157,7 @@ upll_rc_t VbrPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } if (tmp1) { tmp1->set_user_data(tmp->get_user_data()); -// tmp = tmp->get_next_cfg_val(); + // tmp = tmp->get_next_cfg_val(); } } void *tkey = (req != NULL) ? req->get_key() : NULL; @@ -2264,7 +2171,7 @@ upll_rc_t VbrPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, tmp1); if (!okey) { if (vbr_key) free(vbr_key); - DELETE_IF_NOT_NULL(tmp1); + DELETE_IF_NOT_NULL(tmp1); UPLL_LOG_DEBUG("okey failed"); return UPLL_RC_ERR_GENERIC; } @@ -2350,63 +2257,65 @@ upll_rc_t VbrPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, key_vbr_t *key_vbr = NULL; key_vbr_policingmap_entry_t *key_vbr_policingmap_entry = NULL; - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); - return UPLL_RC_ERR_INVALID_OPTION1; - } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); + return UPLL_RC_ERR_INVALID_OPTION1; + } /** check key type is UNC_KT_VBR_POLICINGMAP */ if (UNC_KT_VBR_POLICINGMAP == key->get_key_type()) { - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (key->get_st_num() != IpctSt::kIpcStKeyVbr) { UPLL_LOG_DEBUG(" Invalid key structure received. struct num:%d", - key->get_st_num()); + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } /** Read key structure */ key_vbr = reinterpret_cast(key->get_key()); } else if (UNC_KT_VBR_POLICINGMAP_ENTRY == key->get_key_type()) { - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (req->datatype != UPLL_DT_STATE) { - UPLL_LOG_DEBUG(" Unsupported Datatype (%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + UPLL_LOG_DEBUG(" Unsupported Datatype (%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (key->get_st_num() != IpctSt::kIpcStKeyVbrPolicingmapEntry) { UPLL_LOG_DEBUG(" Invalid key structure received. struct num:%d", - key->get_st_num()); + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_vbr_policingmap_entry = @@ -2427,7 +2336,7 @@ upll_rc_t VbrPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, /** validate key struct */ VbrMoMgr *mgrvbr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + UNC_KT_VBRIDGE))); if (NULL == mgrvbr) { UPLL_LOG_DEBUG("unable to get VbrMoMgr object to validate key_vbr"); @@ -2438,8 +2347,8 @@ upll_rc_t VbrPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" Vbr key syntax validation failed :" - "Err Code - %d", - rt_code); + "Err Code - %d", + rt_code); return rt_code; } @@ -2458,7 +2367,7 @@ upll_rc_t VbrPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, key_vbr_policingmap_entry->sequence_num = 0; } - UPLL_LOG_DEBUG( + UPLL_LOG_DEBUG( "key struct validation is success for UNC_KT_VBR_POLICINGMAP_ENTRY"); return UPLL_RC_SUCCESS; } @@ -2471,15 +2380,15 @@ upll_rc_t VbrPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" val_policingmap syntax validation failed :" - "Err Code - %d", - rt_code); + "Err Code - %d", + rt_code); } return rt_code; } upll_rc_t VbrPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; @@ -2502,19 +2411,14 @@ upll_rc_t VbrPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, const uint8_t *attrs = NULL; uint32_t max_attrs = 0; - UPLL_LOG_TRACE("Ctrl_name(%s),operation:(%d)", ctrlr_name, req->operation); + UPLL_LOG_TRACE("Ctrl_name(%s), operation:(%d)", ctrlr_name, req->operation); switch (req->operation) { case UNC_OP_CREATE: - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), @@ -2523,39 +2427,41 @@ upll_rc_t VbrPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, default: if (req->datatype == UPLL_DT_STATE) result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); else result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s)" - " for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + " for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - val_policingmap_t *val_policingmap = reinterpret_cast(GetVal(ikey)); + val_policingmap_t *val_policingmap = reinterpret_cast + (GetVal(ikey)); if (val_policingmap) { - if (max_attrs > 0) { - if ((val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] == UNC_VF_VALID) - || (val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] - == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtn_policingmap::kCapPolicername] == 0) { - val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] = - UNC_VF_NOT_SUPPORTED; - UPLL_LOG_DEBUG("Policername attr is not supported by ctrlr"); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + if (max_attrs > 0) { + if ((val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] == UNC_VF_VALID) + || (val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] + == UNC_VF_VALID_NO_VALUE)) { + if (attrs[unc::capa::vtn_policingmap::kCapPolicername] == 0) { + val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] = + UNC_VF_NOT_SUPPORTED; + UPLL_LOG_DEBUG("Policername attr is not supported by ctrlr"); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } } + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } -} return UPLL_RC_SUCCESS; } @@ -2565,7 +2471,8 @@ bool VbrPolicingMapMoMgr::IsValidKey(void *key, uint64_t index) { upll_rc_t ret_val = UPLL_RC_SUCCESS; switch (index) { case uudst::vbridge::kDbiVtnName: - ret_val = ValidateKey(reinterpret_cast(vbr_key->vtn_key.vtn_name), + ret_val = ValidateKey(reinterpret_cast + (vbr_key->vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); @@ -2573,7 +2480,8 @@ bool VbrPolicingMapMoMgr::IsValidKey(void *key, uint64_t index) { } break; case uudst::vbridge::kDbiVbrName: - ret_val = ValidateKey(reinterpret_cast(vbr_key->vbridge_name), + ret_val = ValidateKey(reinterpret_cast + (vbr_key->vbridge_name), kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { @@ -2589,20 +2497,20 @@ bool VbrPolicingMapMoMgr::IsValidKey(void *key, uint64_t index) { } upll_rc_t VbrPolicingMapMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, - const ConfigKeyVal *ckv, - bool *in_use, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; + const ConfigKeyVal *ckv, + bool *in_use, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; } upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailEntryResponse( - ConfigKeyVal *ikey, - ConfigKeyVal *dup_key, - ConfigKeyVal *drv_resp_ckv, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op, - DbSubOp dbop, - DalDmlIntf *dmi, - ConfigKeyVal **okey ) { + ConfigKeyVal *ikey, + ConfigKeyVal *dup_key, + ConfigKeyVal *drv_resp_ckv, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DbSubOp dbop, + DalDmlIntf *dmi, + ConfigKeyVal **okey ) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *tmp_okey = NULL; @@ -2707,13 +2615,13 @@ upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailEntryResponse( val_policingmap_switch_st_t *drv_val_switch_st = reinterpret_cast (drv_resp_val->get_val()); - memcpy(val_switch_st, drv_val_switch_st, + memcpy(val_switch_st, drv_val_switch_st, sizeof(val_policingmap_switch_st_t)); - if(drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { + if (drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { key_vbr_policingmap_entry *vbr_pme_key = reinterpret_cast(ikey->get_key()); ConfigKeyVal *vbrif_key_val = NULL; - unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = + unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_VBR_IF))); if (NULL == vbrifmgr) { @@ -2728,7 +2636,7 @@ upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailEntryResponse( dmi); if ((result_code != UPLL_RC_SUCCESS) && (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", + UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", result_code); if (val_switch_st) free(val_switch_st); DELETE_IF_NOT_NULL(tmp_okey); @@ -2738,23 +2646,23 @@ upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailEntryResponse( if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { key_vbr_if_t *key_vbrif = reinterpret_cast - (vbrif_key_val->get_key()); + (vbrif_key_val->get_key()); val_switch_st->valid[UPLL_IDX_VBR_NAME_PMSS] = UNC_VF_VALID; uuu::upll_strncpy(val_switch_st->vbr_name, - key_vbrif->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + key_vbrif->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] = UNC_VF_VALID; uuu::upll_strncpy(val_switch_st->if_name, - key_vbrif->if_name, - (kMaxLenInterfaceName + 1)); + key_vbrif->if_name, + (kMaxLenInterfaceName + 1)); } DELETE_IF_NOT_NULL(vbrif_key_val); } tmp_okey->AppendCfgVal(IpctSt::kIpcStValPolicingmapSwitchSt, val_switch_st); - + drv_resp_val = drv_resp_val->get_next_cfg_val(); if (!drv_resp_val) { break; @@ -2771,13 +2679,13 @@ upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailEntryResponse( } upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailResponse( - ConfigKeyVal *ikey, - ConfigKeyVal *drv_resp_ckv, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op, - DbSubOp dbop, - DalDmlIntf *dmi, - ConfigKeyVal **okey ) { + ConfigKeyVal *ikey, + ConfigKeyVal *drv_resp_ckv, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DbSubOp dbop, + DalDmlIntf *dmi, + ConfigKeyVal **okey ) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *tmp_okey = NULL; @@ -2876,17 +2784,17 @@ upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailResponse( val_policingmap_switch_st_t *drv_val_switch_st = reinterpret_cast (drv_resp_val->get_val()); - memcpy(val_switch_st, drv_val_switch_st, + memcpy(val_switch_st, drv_val_switch_st, sizeof(val_policingmap_switch_st_t)); - if(drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { + if (drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { key_vbr_t *vbr_pm_key = reinterpret_cast(ikey->get_key()); ConfigKeyVal *vbrif_key_val = NULL; - unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = + unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_VBR_IF))); if (NULL == vbrifmgr) { - free(val_switch_st); + free(val_switch_st); free(tmp_cont_st); delete tmp_okey; return UPLL_RC_ERR_GENERIC; @@ -2897,9 +2805,9 @@ upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailResponse( vbrif_key_val, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", + UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", result_code); - free(val_switch_st); + free(val_switch_st); free(tmp_cont_st); delete tmp_okey; return result_code; @@ -2919,7 +2827,7 @@ upll_rc_t VbrPolicingMapMoMgr::ConstructReadDetailResponse( DELETE_IF_NOT_NULL(vbrif_key_val); } tmp_okey->AppendCfgVal(IpctSt::kIpcStValPolicingmapSwitchSt, - val_switch_st); + val_switch_st); drv_resp_val = drv_resp_val->get_next_cfg_val(); if (!drv_resp_val) { break; @@ -3024,7 +2932,7 @@ upll_rc_t VbrPolicingMapMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VBR_POLICINGMAP) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -3046,8 +2954,8 @@ upll_rc_t VbrPolicingMapMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, return UPLL_RC_SUCCESS; } upll_rc_t VbrPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, - ConfigKeyVal* ikey, - DalDmlIntf *dmi) { + ConfigKeyVal* ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; controller_domain ctrlr_dom; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -3057,26 +2965,26 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, result_code); return result_code; } - if (UNC_KT_VBR_POLICINGMAP_ENTRY != ikey->get_key_type()) { - if(req->datatype == UPLL_DT_STATE || - req->datatype == UPLL_DT_STARTUP || - req->datatype == UPLL_DT_RUNNING || - req->datatype == UPLL_DT_CANDIDATE ) { - result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); - return result_code; - } else { - UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", - req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - } - if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) - if(req->datatype != UPLL_DT_STATE) { - UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", - req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + if (UNC_KT_VBR_POLICINGMAP_ENTRY != ikey->get_key_type()) { + if (req->datatype == UPLL_DT_STATE || + req->datatype == UPLL_DT_STARTUP || + req->datatype == UPLL_DT_RUNNING || + req->datatype == UPLL_DT_CANDIDATE ) { + result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); + return result_code; + } else { + UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } } - + if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) + if (req->datatype != UPLL_DT_STATE) { + UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + ConfigKeyVal *temp_vbr_key = NULL; ConfigKeyVal *tctrl_key = NULL; result_code = GetReadVbrKey(temp_vbr_key, ikey); @@ -3139,12 +3047,12 @@ upll_rc_t VbrPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, } upll_rc_t VbrPolicingMapMoMgr::OnPolicerFullAlarm( - string ctrlr_name , - string domain_id, - const key_vtn_t &key_vtn, - const pfcdrv_policier_alarm_data_t &alarm_data, - bool &alarm_raised, - DalDmlIntf *dmi ) { + string ctrlr_name , + string domain_id, + const key_vtn_t &key_vtn, + const pfcdrv_policier_alarm_data_t &alarm_data, + bool &alarm_raised, + DalDmlIntf *dmi ) { controller_domain ctrlr_dom; ConfigKeyVal *ikey = NULL; char *alarm_status = NULL; @@ -3228,7 +3136,7 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFullAlarm( if (is_vbr) { result_code = GetRenamedControllerKey(ikey, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); + dmi, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed %d", result_code); DELETE_IF_NOT_NULL(ikey); @@ -3239,7 +3147,7 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFullAlarm( vbr_name = reinterpret_cast(vbr_key->vbridge_name); } else { result_code = mgrvtnpom->GetRenamedControllerKey(ikey, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); + dmi, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed %d", result_code); DELETE_IF_NOT_NULL(ikey); @@ -3255,7 +3163,8 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFullAlarm( alarm_status = al_cleared; } - UPLL_LOG_INFO("Policer Full alarm : status - %s controller - %s, domain - %s," + UPLL_LOG_INFO("Policer Full alarm : status - %s controller - %s," + "domain - %s, " "vtn - %s, vnode - %s, port - %s, dpid - %"PFC_PFMT_u64, alarm_status, ctrlr_name.c_str(), domain_id.c_str(), vtn_name, vbr_name, reinterpret_cast @@ -3266,12 +3175,12 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFullAlarm( } upll_rc_t VbrPolicingMapMoMgr::OnPolicerFailAlarm( - string ctrlr_name , - string domain_id, - const key_vtn_t &key_vtn, - const pfcdrv_policier_alarm_data_t &alarm_data, - bool &alarm_raised, - DalDmlIntf *dmi ) { + string ctrlr_name , + string domain_id, + const key_vtn_t &key_vtn, + const pfcdrv_policier_alarm_data_t &alarm_data, + bool &alarm_raised, + DalDmlIntf *dmi ) { controller_domain ctrlr_dom; ConfigKeyVal *ikey = NULL; char *alarm_status = NULL; @@ -3356,7 +3265,7 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFailAlarm( if (is_vbr) { result_code = GetRenamedControllerKey(ikey, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); + dmi, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed %d", result_code); DELETE_IF_NOT_NULL(ikey); @@ -3367,7 +3276,7 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFailAlarm( vbr_name = reinterpret_cast(vbr_key->vbridge_name); } else { result_code = mgrvtnpom->GetRenamedControllerKey(ikey, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); + dmi, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed %d", result_code); DELETE_IF_NOT_NULL(ikey); @@ -3383,7 +3292,8 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFailAlarm( alarm_status = al_cleared; } - UPLL_LOG_INFO("Policer Fail alarm : status - %s controller - %s, domain - %s," + UPLL_LOG_INFO("Policer Fail alarm : status - %s controller - %s," + "domain - %s, " "vtn - %s, vnode - %s, port - %s, dpid - %"PFC_PFMT_u64, alarm_status, ctrlr_name.c_str(), domain_id.c_str(), vtn_name, vbr_name, reinterpret_cast @@ -3394,8 +3304,8 @@ upll_rc_t VbrPolicingMapMoMgr::OnPolicerFailAlarm( } upll_rc_t VbrPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == dmi || NULL == ctrlr_id) { @@ -3403,10 +3313,10 @@ upll_rc_t VbrPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("%s Vbr_Pm CreateAuditMoImpl ikey", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); upll_rc_t result_code = UPLL_RC_SUCCESS; uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); if (result_code != UPLL_RC_SUCCESS && @@ -3433,7 +3343,7 @@ upll_rc_t VbrPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(ikey, UPLL_DT_AUDIT, dmi, UNC_OP_CREATE); @@ -3445,17 +3355,19 @@ upll_rc_t VbrPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } // create a record in vbrpolicingmap table CANDIDATE DB -/* result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Create Record failed - %d", result_code); - return result_code; - }*/ + /* result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Create Record failed - %d", result_code); + return result_code; + }*/ UPLL_LOG_DEBUG("CreateCandidateMo Successful"); return result_code; } -upll_rc_t VbrPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { +upll_rc_t VbrPolicingMapMoMgr::DeleteChildrenPOM( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; @@ -3474,8 +3386,8 @@ upll_rc_t VbrPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain }; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain }; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -3488,16 +3400,21 @@ upll_rc_t VbrPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(okey); return result_code; } - val_policingmap_t *val_pm = reinterpret_cast - (GetVal(okey)); - if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { - result_code = UpdateRefCountInPPCtrlr(okey, dt_type, dmi, - UNC_OP_DELETE); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Error DB (%d)", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; + + ConfigKeyVal *temp_okey = okey; + while (temp_okey != NULL) { + val_policingmap_t *val_pm = reinterpret_cast + (GetVal(temp_okey)); + if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { + result_code = UpdateRefCountInPPCtrlr(temp_okey, dt_type, dmi, + UNC_OP_DELETE); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Error DB (%d)", result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } } + temp_okey = temp_okey->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(okey); // Delete the record in vbrpolicingmap table @@ -3565,9 +3482,9 @@ upll_rc_t VbrPolicingMapMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } bool VbrPolicingMapMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); @@ -3575,11 +3492,11 @@ bool VbrPolicingMapMoMgr::FilterAttributes(void *&val1, } upll_rc_t VbrPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingmap_t *vbr_pm; @@ -3598,38 +3515,43 @@ upll_rc_t VbrPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *vbr_key, return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("%s", (vbr_key->ToStrAll()).c_str()); - val_policingmap_t *vbr_val2 = reinterpret_cast(GetVal(upd_key)); + val_policingmap_t *vbr_val2 = reinterpret_cast + (GetVal(upd_key)); if (UNC_OP_UPDATE == op) { UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); vbr_pm->cs_row_status = vbr_val2->cs_row_status; } UPLL_LOG_DEBUG("valid after CVV %d", vbr_pm->valid[0]); if (UNC_VF_NOT_SUPPORTED == vbr_pm->valid[0]) { - vbr_pm->cs_attr[0] = UNC_CS_NOT_SUPPORTED; + vbr_pm->cs_attr[0] = UNC_CS_NOT_SUPPORTED; } else if ((UNC_VF_VALID == vbr_pm->valid[0]) - || (UNC_VF_VALID_NO_VALUE == vbr_pm->valid[0])) { - vbr_pm->cs_attr[0] = cs_status; - UPLL_LOG_DEBUG("cs_attr in V or NV: %d ",vbr_pm->cs_attr[0]); + || (UNC_VF_VALID_NO_VALUE == vbr_pm->valid[0])) { + vbr_pm->cs_attr[0] = cs_status; + UPLL_LOG_DEBUG("cs_attr in V or NV: %d ", vbr_pm->cs_attr[0]); } else if ((UNC_VF_INVALID == vbr_pm->valid[0]) && (UNC_OP_CREATE == op)) { - vbr_pm->cs_attr[0] = UNC_CS_NOT_APPLIED; - UPLL_LOG_DEBUG("cs_attr in IN in C: %d ",vbr_pm->cs_attr[0]); + vbr_pm->cs_attr[0] = UNC_CS_NOT_APPLIED; + UPLL_LOG_DEBUG("cs_attr in IN in C: %d ", vbr_pm->cs_attr[0]); } else if ((UNC_VF_INVALID == vbr_pm->valid[0]) && (UNC_OP_UPDATE == op)) { - UPLL_LOG_DEBUG("cs_attr in IN in U: %d ",vbr_pm->cs_attr[0]); - vbr_pm->cs_attr[0] = vbr_val2->cs_attr[0]; + UPLL_LOG_DEBUG("cs_attr in IN in U: %d ", vbr_pm->cs_attr[0]); + vbr_pm->cs_attr[0] = vbr_val2->cs_attr[0]; } return result_code; } upll_rc_t VbrPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t &rename) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t &rename) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("VbrPolicingMapMoMgr IsRenamed"); + if (NULL == ikey) { + UPLL_LOG_DEBUG("ikey NULL"); + return UPLL_RC_ERR_GENERIC; + } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; ConfigKeyVal *okey = NULL; upll_rc_t result_code; /* rename is set implies user wants the ikey @@ -3639,38 +3561,41 @@ upll_rc_t VbrPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("UNC_KT_VBR_POLICINGMAP"); result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Returning error %d",result_code); + UPLL_LOG_TRACE("Returning error %d", result_code); return result_code; } } else if (UNC_KT_VBR_POLICINGMAP_ENTRY == ikey->get_key_type()) { UPLL_LOG_DEBUG("UNC_KT_VBR_POLICINGMAP_CONTROLLER"); key_vbr_t *out_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_t))); + (ConfigKeyVal::Malloc(sizeof(key_vbr_t))); key_vbr_policingmap_entry_t *in_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uuu::upll_strncpy(out_key->vtn_key.vtn_name, - in_key->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + in_key->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(out_key->vbridge_name, - in_key->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + in_key->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); okey = new ConfigKeyVal(UNC_KT_VBR_POLICINGMAP, - IpctSt::kIpcStKeyVbr, - out_key, NULL); + IpctSt::kIpcStKeyVbr, + out_key, NULL); + } else { + UPLL_LOG_DEBUG("Invalid KeyType"); + return UPLL_RC_ERR_GENERIC; } } else { okey = ikey; } result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Returning error code %d",result_code); + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("Returning error code %d", result_code); if (okey != ikey) delete okey; return UPLL_RC_ERR_GENERIC; } @@ -3679,26 +3604,26 @@ upll_rc_t VbrPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ikey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA_CTRLR_DOMAIN(okey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA(ikey,okey); + SET_USER_DATA(ikey, okey); rename &= RENAME; if (okey != ikey) delete okey; return UPLL_RC_SUCCESS; } upll_rc_t VbrPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_pm) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -3711,8 +3636,8 @@ upll_rc_t VbrPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VBRIDGE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VBRIDGE))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -3733,14 +3658,16 @@ upll_rc_t VbrPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *pp_ckv = NULL; result_code = GetPolicingProfileConfigKey(reinterpret_cast - (val_pm->policer_name), pp_ckv, dmi); + (val_pm->policer_name), + pp_ckv, + dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetPolicingProfileConfigKey failed %d", result_code); return result_code; } MoMgrImpl *pp_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (NULL == pp_mgr) { UPLL_LOG_DEBUG("pp_mgr is NULL"); DELETE_IF_NOT_NULL(pp_ckv); @@ -3754,7 +3681,8 @@ upll_rc_t VbrPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (pp_rename & 0x01) { - rename |= POLICINGPROFILE_RENAME; // TODO Check for correct flag value + rename |= POLICINGPROFILE_RENAME; // TODO(upll): Check for correct + // flag value } DELETE_IF_NOT_NULL(pp_ckv); } @@ -3769,14 +3697,16 @@ upll_rc_t VbrPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { ConfigKeyVal *pp_ckv = NULL; result_code = GetPolicingProfileConfigKey(reinterpret_cast - (val_pm->policer_name), pp_ckv, dmi); + (val_pm->policer_name), + pp_ckv, + dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetPolicingProfileConfigKey failed %d", result_code); return result_code; } MoMgrImpl *pp_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (NULL == pp_mgr) { UPLL_LOG_DEBUG("pp_mgr is NULL"); DELETE_IF_NOT_NULL(pp_ckv); @@ -3789,14 +3719,16 @@ upll_rc_t VbrPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (pp_rename & 0x01) { - rename |= POLICINGPROFILE_RENAME; // TODO Check for correct flag value + rename |= POLICINGPROFILE_RENAME; // TODO(upll): Check for correct + // flag value } else { rename &= NO_POLICINGPROFILE_RENAME; } DELETE_IF_NOT_NULL(pp_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_pm->valid [UPLL_IDX_POLICERNAME_PM]) { - rename &= NO_POLICINGPROFILE_RENAME; // TODO Check for correct flag value. No rename flowlist value should be set + rename &= NO_POLICINGPROFILE_RENAME; // TODO(upll): Check for correct + // flag value. No rename flowlist value should be set } SET_USER_DATA_FLAGS(ikey, rename); } @@ -3804,13 +3736,13 @@ upll_rc_t VbrPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VbrPolicingMapMoMgr::GetPolicingProfileConfigKey( - const char *pp_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *pp_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + UNC_KT_POLICING_PROFILE))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -3819,11 +3751,11 @@ upll_rc_t VbrPolicingMapMoMgr::GetPolicingProfileConfigKey( key_policingprofile_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->policingprofile_name, - pp_name, - (kMaxLenPolicingProfileName+1)); + pp_name, + (kMaxLenPolicingProfileName+1)); return UPLL_RC_SUCCESS; } -} // kt_momgr -} // upll -} // unc +} // namespace kt_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/vbr_policingmap_momgr.hh b/coordinator/modules/upll/vbr_policingmap_momgr.hh index 68bb8848..c1788060 100644 --- a/coordinator/modules/upll/vbr_policingmap_momgr.hh +++ b/coordinator/modules/upll/vbr_policingmap_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -27,563 +27,566 @@ enum vbrpolicingmapMoMgrTables { * received from service. */ class VbrPolicingMapMoMgr : public MoMgrImpl { - private: - /** - * Member Variable for PolicingProfileBindInfo. - */ - static BindInfo vbr_policingmap_bind_info[]; - static BindInfo key_vbrpm_maintbl_rename_bind_info[]; - static BindInfo key_vbrpm_policyname_maintbl_rename_bind_info[]; - uint32_t cur_instance_count; - public: - /** - * @Brief PolicingProfileMoMgr Class Constructor. - */ - VbrPolicingMapMoMgr(); - /** - * @Brief PolicingProfileMoMgr Class Destructor. - */ - ~VbrPolicingMapMoMgr() { - for (int i = 0; i < ntable; i++) { - if (table[i]) { - delete table[i]; - } + private: + /** + * Member Variable for PolicingProfileBindInfo. + */ + static BindInfo vbr_policingmap_bind_info[]; + static BindInfo key_vbrpm_maintbl_rename_bind_info[]; + static BindInfo key_vbrpm_policyname_maintbl_rename_bind_info[]; + + public: + /** + * @Brief PolicingProfileMoMgr Class Constructor. + */ + VbrPolicingMapMoMgr(); + /** + * @Brief PolicingProfileMoMgr Class Destructor. + */ + ~VbrPolicingMapMoMgr() { + for (int i = 0; i < ntable; i++) { + if (table[i]) { + delete table[i]; } - delete[] table; } + delete[] table; + } + + /** + * @Brief This API is used to create the record (Vbr name with + * Policer name) in VbrPolicingMap table and Increment the refcount + * or insert the record based on the incoming policer name's availability + * in policingprofilectrl table + * + * @param[in] req Describes + * RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Policymap Record Already Exists. + * @retval UPLL_RC_ERR_CFG_SEMANTIC Policy Profile Record not + * available. + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi, bool restore_flag = false); + + /** + * @Brief This API is used to delete the record (Vbr name with + * Policer name) in VbrPolicingMap table and decrement the refcount + * based on the record availability in policingprofilectrl table + * + * @param[in] req Describes + * RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available. + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); - /** - * @Brief This API is used to create the record (Vbr name with - * Policer name) in VbrPolicingMap table and Increment the refcount - * or insert the record based on the incoming policer name's availability - * in policingprofilectrl table - * - * @param[in] req Describes - * RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Policymap Record Already Exists. - * @retval UPLL_RC_ERR_CFG_SEMANTIC Policy Profile Record not - * available. - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /** - * @Brief This API is used to delete the record (Vbr name with - * Policer name) in VbrPolicingMap table and decrement the refcount - * based on the record availability in policingprofilectrl table - * - * @param[in] req Describes - * RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available. - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /** - * @Brief This API is used to Update the record (Vbr name with - * Policer name) in VbrPolicingMap table and Increment the refcount - * or insert the record based on the incoming policer name's availability - * in policingprofilectrl table. Get the existing policer name in - * vtnpolicingmap table and decrement the refcount in policingprofilectrl - * table in respective vtn associated controller name - * - * @param[in] req Describes - * RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available. - * @retval UPLL_RC_ERR_CFG_SEMANTIC Policy Profile Record not - * available. - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + /** + * @Brief This API is used to Update the record (Vbr name with + * Policer name) in VbrPolicingMap table and Increment the refcount + * or insert the record based on the incoming policer name's availability + * in policingprofilectrl table. Get the existing policer name in + * vtnpolicingmap table and decrement the refcount in policingprofilectrl + * table in respective vtn associated controller name + * + * @param[in] req Describes + * RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available. + * @retval UPLL_RC_ERR_CFG_SEMANTIC Policy Profile Record not + * available. + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); - /** - * @Brief This API is used to check the policymap object availability - * in vbrpolicingmaptbl CANDIDATE DB - * - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dt_type Configuration information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Error code. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Record in DB. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record exists in DB. - */ - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - - /** - * @Brief This API is used to check the policer name availability - * in policingprofiletbl CANDIDATE DB - * - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dt_type Configuration information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] op Describes the Type of Opeartion. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Error code. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Record in DB. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record exists in DB. - */ - upll_rc_t IsPolicyProfileReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf* dmi, - unc_keytype_operation_t op); - - /** - * @Brief This API is used to get the vbr associated controller name - * and update (increment/decrement) the refcount in policingprofilectrlrtbl - * - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dt_type Configuration information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] op Describes the Type of Opeartion. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * @retval UPLL_RC_ERR_DB_ACCESS Error accessing DB. - */ - upll_rc_t UpdateRefCountInPPCtrlr(ConfigKeyVal *ikey, + /** + * @Brief This API is used to check the policymap object availability + * in vbrpolicingmaptbl CANDIDATE DB + * + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dt_type Configuration information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Error code. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Record in DB. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record exists in DB. + */ + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + + /** + * @Brief This API is used to check the policer name availability + * in policingprofiletbl CANDIDATE DB + * + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dt_type Configuration information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] op Describes the Type of Opeartion. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Error code. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Record in DB. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record exists in DB. + */ + upll_rc_t IsPolicyProfileReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, + DalDmlIntf* dmi, unc_keytype_operation_t op); - /** - * @Brief Method used to get ctrlrid . - * - * @param[out] okey Pointer to class ConfigKeyVal - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * */ - upll_rc_t GetControllerId(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - - /** - * @Brief This API is used to read the configuration and statistics - * - * @param[in] req Describes - * RequestResponderHeaderClass. - * @param[out] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available - * @retval UPLL_RC_ERR_CFG_SEMANTIC Policy Profile Record not - * available - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * @retval UPLL_RC_ERR_DB_ACCESS Error accessing DB. - */ - upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /** - * @Brief This API is used to read the siblings configuration - * and statistics - * - * @param[in] req Describes - * RequestResponderHeaderClass. - * @param[out] ikey Pointer to ConfigKeyVal Class. - * @param[in] begin Describes read from begin or not - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available - * @retval UPLL_RC_ERR_CFG_SEMANTIC PolicyProfile Record not found - * @retval UPLL_RC_ERR_DB_ACCESS Error accessing DB. - */ - upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - bool begin, DalDmlIntf *dmi); - - /** - * @Brief Method used to get the Bind Info Structure for Rename Purpose. - * - * @param[in] key_type Describes the KT Information. - * @param[in] binfo - * @param[in] nattr Describes the Tbl For which the Operation is - * Targeted. - * @param[in] tbl Describes the Table Information. - * - * @retval pfc_true Successful Completion. - * @retval pfc_fasle Failure. - */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - - /** - * @Brief Method to Copy The ConfigkeyVal with the Input Key. - * - * @param[out] okey Pointer to ConfigKeyVal Class for - * which attributes have to be copied. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * - * @retval UPLL_RC_SUCCESS Successfull Completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - - /** - * @Brief This API is used to read the policing map record in IMPORT's - * vbrpolicingmap table and check with CANDIDATES's policingprofile table - * If record exists return merge conflict - * - * @param[in] keytype Describes the keyType Information. - * @param[in] ctrlr_id Describes the Controller Name. - * @param[in] ikey This Contains the pointer to the - * Class for which fields have to be - * Validated before the Merge. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Record already avilable - */ - upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - - /** - * @Brief This API is used to get the unc key name - * @param[out] ikey This Contains the pointer to the Class - for which fields have to be updated - with values from the parent Class. - * - * @param[in] dt_type Configuration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Controller name. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id); - - /** - * @Brief This API is used to get the renamed Controller's key - * - * @param[out] ikey Contains the Pointer to ConfigkeyVal - * Class and contains the Pfc Name. - * @param[in] dt_type Configuratin information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_name Controller name. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom = NULL); - - /** - * @Brief Method To Compare the Valid Check of Attributes - * - * @param[In/out] val1 Pointer to ConfigKeyVal Class which - * contains only Valid Attributes. - * @param[in] val2 Pointer to ConfigKeyVal Class. - * @param[in] audit Audit purpose. - * - * @retval UPLL_RC_SUCCESS Successful completion. - */ - bool CompareValidValue(void *&val1, void *val2, bool audit); - - /** - ** @Brief This method used to update the configstatus in Db during - ** Trasaction Operation - ** - ** @param[in] ckv Pointer to ConfigkeyVal class. - ** @param[in] op Type of operation - ** @param[in] driver_result Result code from Driver. - ** @param[in] nreq Pointer to ConfigkeyVal. - ** @param[out] ctrlr_key Pointer to ConfigkeyVal for controller. - ** - ** @retval UPLL_RC_SUCCESS Successful completion. - ** @retval UPLL_RC_ERR_GENERIC Generic Errors. - **/ - upll_rc_t UpdateConfigStatus(ConfigKeyVal *ckv, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key); - - /** - * @Brief This API updates the Configuration status for AuditConfigiration todo - * - * @param[in] ctrlr_rslt Pointer to ConfigkeyVal class. - * @param[in] phase Describes the phase of controller. - * @param[in] ckv_running Pointer to ConfigkeyVal. - * @param[in] ckv_audit Pointer to ConfigkeyVal. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - - /** - * @Brief Method to compare to keys - * - * @param[in] key1 Pointer to key structure for comparision - * @param[in] key2 Pointer to key for comparision - * - * @return TRUE If keys match - * @return FALSE If keys dont match - */ - bool CompareKey(void *key1, void *key2); - - /** - * @Brief This API is used to know the value availability of - * val structure attributes - * - * @param[in] val pointer to the value structure. - * @param[out] valid reference to the enum containing - * the possible values of Valid flag. - * @param[in] indx Gives the index of attribute for - * validity. - * @param[in] dt_type configuration for validity check. - * @param[in] tbl Table name. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl); - - /** - * @Brief This API is used to allocate the memory for incoming in configval - * - * @param[out] ck_val This Contains the pointer to the Class - * for which memory has to be allocated. - * @param[in] dt_type Configuration information. - * @param[in] tbl Table name. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl); - - /** - * @Brief This API is used to get the duplicate configkeyval - * - * @param[out] okey This Contains the pointer to the Class - * for which fields have to be updated - * with values from the Request. - * @param[in] req This Contains the pointer to the Class - * which is used for the Duplication. - * @param[in] tbl Table name - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl); - - /** - * @Brief Method used to fill the CongigKeyVal with the Parent Class - * Information. - * - * @param[out] okey This Contains the pointer to the - * ConfigKeyVal Class for which fields have - * to be updated with values from the - * parent Class. - * @param[in] parent_key This Contains the pointer to the - * ConfigKeyVal Class which is the - * Parent class used to fill the details. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VBR_POLICINGMAP/KT_VBR_POLICINGMAP_ENTRY keytype - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request structure - * @param[in] ConfigKeyVal key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vbr is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); - - /** - * @Brief Checks if the specified key type(KT_VBR_POLICINGMAP) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller name - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char *ctrlr_name = NULL); - /** - * @Brief Method used to fill the CongigKeyVal with the Parent Class - * Information. - * - * @param[out] okey This Contains the pointer to the - * ConfigKeyVal Class for which fields have - * to be updated with values from the - * parent Class. - * @param[in] parent_key This Contains the pointer to the - * ConfigKeyVal Class which is the - * Parent class used to fill the details. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - */ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - - /** - * @brief Method used for Restoring PolicingProfile in the Controller Table - * - * @param[in] ikey Pointer to ConfigKeyVal Class - * @param[in] dt_type Describes Configiration Information. - * @param[in] tbl Describe the destination table - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - - upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl, - DalDmlIntf* dmi); - - upll_rc_t ConstructReadDetailResponse(ConfigKeyVal *ikey, - ConfigKeyVal *drv_resp_ckv, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op, - DbSubOp dbop, - DalDmlIntf *dmi, - ConfigKeyVal **okey); - - bool IsValidKey(void *key, uint64_t index); - - upll_rc_t ConstructReadDetailEntryResponse(ConfigKeyVal *ikey, - ConfigKeyVal *dup_key, - ConfigKeyVal *drv_resp_ckv, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op, - DbSubOp dbop, - DalDmlIntf *dmi, - ConfigKeyVal **okey); - - upll_rc_t GetReadVbrEntryKey(ConfigKeyVal *&dup_key, - ConfigKeyVal *ikey); - upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - DalDmlIntf *dmi, uint8_t *ctrlr) { - return UPLL_RC_SUCCESS; - } - upll_rc_t ReadDTsateNormal(ConfigKeyVal *ikey, - ConfigKeyVal* dup_key, - upll_keytype_datatype_t dt_type, - DbSubOp dbop, + /** + * @Brief This API is used to get the vbr associated controller name + * and update (increment/decrement) the refcount in policingprofilectrlrtbl + * + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dt_type Configuration information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] op Describes the Type of Opeartion. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * @retval UPLL_RC_ERR_DB_ACCESS Error accessing DB. + */ + upll_rc_t UpdateRefCountInPPCtrlr(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + unc_keytype_operation_t op); + + /** + * @Brief Method used to get ctrlrid . + * + * @param[out] okey Pointer to class ConfigKeyVal + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * */ + upll_rc_t GetControllerId(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + + /** + * @Brief This API is used to read the configuration and statistics + * + * @param[in] req Describes + * RequestResponderHeaderClass. + * @param[out] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available + * @retval UPLL_RC_ERR_CFG_SEMANTIC Policy Profile Record not + * available + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * @retval UPLL_RC_ERR_DB_ACCESS Error accessing DB. + */ + upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /** + * @Brief This API is used to read the siblings configuration + * and statistics + * + * @param[in] req Describes + * RequestResponderHeaderClass. + * @param[out] ikey Pointer to ConfigKeyVal Class. + * @param[in] begin Describes read from begin or not + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available + * @retval UPLL_RC_ERR_CFG_SEMANTIC PolicyProfile Record not found + * @retval UPLL_RC_ERR_DB_ACCESS Error accessing DB. + */ + upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + bool begin, DalDmlIntf *dmi); + + /** + * @Brief Method used to get the Bind Info Structure for Rename Purpose. + * + * @param[in] key_type Describes the KT Information. + * @param[in] binfo + * @param[in] nattr Describes the Tbl For which the Operation is + * Targeted. + * @param[in] tbl Describes the Table Information. + * + * @retval pfc_true Successful Completion. + * @retval pfc_fasle Failure. + */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + + /** + * @Brief Method to Copy The ConfigkeyVal with the Input Key. + * + * @param[out] okey Pointer to ConfigKeyVal Class for + * which attributes have to be copied. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * + * @retval UPLL_RC_SUCCESS Successfull Completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + + /** + * @Brief This API is used to read the policing map record in IMPORT's + * vbrpolicingmap table and check with CANDIDATES's policingprofile table + * If record exists return merge conflict + * + * @param[in] keytype Describes the keyType Information. + * @param[in] ctrlr_id Describes the Controller Name. + * @param[in] ikey This Contains the pointer to the + * Class for which fields have to be + * Validated before the Merge. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Record already avilable + */ + upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, + ConfigKeyVal *ikey, DalDmlIntf *dmi); + + /** + * @Brief This API is used to get the unc key name + * @param[out] ikey This Contains the pointer to the Class + for which fields have to be updated + with values from the parent Class. + * + * @param[in] dt_type Configuration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Controller name. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id); + + /** + * @Brief This API is used to get the renamed Controller's key + * + * @param[out] ikey Contains the Pointer to ConfigkeyVal + * Class and contains the Pfc Name. + * @param[in] dt_type Configuratin information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_name Controller name. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom = NULL); + + /** + * @Brief Method To Compare the Valid Check of Attributes + * + * @param[In/out] val1 Pointer to ConfigKeyVal Class which + * contains only Valid Attributes. + * @param[in] val2 Pointer to ConfigKeyVal Class. + * @param[in] audit Audit purpose. + * + * @retval UPLL_RC_SUCCESS Successful completion. + */ + bool CompareValidValue(void *&val1, void *val2, bool audit); + + /** + ** @Brief This method used to update the configstatus in Db during + ** Trasaction Operation + ** + ** @param[in] ckv Pointer to ConfigkeyVal class. + ** @param[in] op Type of operation + ** @param[in] driver_result Result code from Driver. + ** @param[in] nreq Pointer to ConfigkeyVal. + ** @param[out] ctrlr_key Pointer to ConfigkeyVal for controller. + ** + ** @retval UPLL_RC_SUCCESS Successful completion. + ** @retval UPLL_RC_ERR_GENERIC Generic Errors. + **/ + upll_rc_t UpdateConfigStatus(ConfigKeyVal *ckv, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, DalDmlIntf *dmi, - ConfigKeyVal**okey); + ConfigKeyVal *ctrlr_key); + + /** + * @Brief This API updates the Configuration status for AuditConfigiration todo + * + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase Describes the phase of controller. + * @param[in] ckv_running Pointer to ConfigkeyVal. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t UpdateAuditConfigStatus( + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + + /** + * @Brief Method to compare to keys + * + * @param[in] key1 Pointer to key structure for comparision + * @param[in] key2 Pointer to key for comparision + * + * @return TRUE If keys match + * @return FALSE If keys dont match + */ + bool CompareKey(void *key1, void *key2); + + /** + * @Brief This API is used to know the value availability of + * val structure attributes + * + * @param[in] val pointer to the value structure. + * @param[out] valid reference to the enum containing + * the possible values of Valid flag. + * @param[in] indx Gives the index of attribute for + * validity. + * @param[in] dt_type configuration for validity check. + * @param[in] tbl Table name. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl); + + /** + * @Brief This API is used to allocate the memory for incoming in configval + * + * @param[out] ck_val This Contains the pointer to the Class + * for which memory has to be allocated. + * @param[in] dt_type Configuration information. + * @param[in] tbl Table name. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl); + + /** + * @Brief This API is used to get the duplicate configkeyval + * + * @param[out] okey This Contains the pointer to the Class + * for which fields have to be updated + * with values from the Request. + * @param[in] req This Contains the pointer to the Class + * which is used for the Duplication. + * @param[in] tbl Table name + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl); + + /** + * @Brief Method used to fill the CongigKeyVal with the Parent Class + * Information. + * + * @param[out] okey This Contains the pointer to the + * ConfigKeyVal Class for which fields have + * to be updated with values from the + * parent Class. + * @param[in] parent_key This Contains the pointer to the + * ConfigKeyVal Class which is the + * Parent class used to fill the details. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VBR_POLICINGMAP/KT_VBR_POLICINGMAP_ENTRY keytype + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request structure + * @param[in] ConfigKeyVal key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vbr is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); + + /** + * @Brief Checks if the specified key type(KT_VBR_POLICINGMAP) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller name + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char *ctrlr_name = NULL); + /** + * @Brief Method used to fill the CongigKeyVal with the Parent Class + * Information. + * + * @param[out] okey This Contains the pointer to the + * ConfigKeyVal Class for which fields have + * to be updated with values from the + * parent Class. + * @param[in] parent_key This Contains the pointer to the + * ConfigKeyVal Class which is the + * Parent class used to fill the details. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + */ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + + /** + * @brief Method used for Restoring PolicingProfile in the Controller Table + * + * @param[in] ikey Pointer to ConfigKeyVal Class + * @param[in] dt_type Describes Configiration Information. + * @param[in] tbl Describe the destination table + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + + upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl, + DalDmlIntf* dmi); - upll_rc_t ReadDetailRecord(IpcReqRespHeader *req, + upll_rc_t ConstructReadDetailResponse(ConfigKeyVal *ikey, + ConfigKeyVal *drv_resp_ckv, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DbSubOp dbop, + DalDmlIntf *dmi, + ConfigKeyVal **okey); + + bool IsValidKey(void *key, uint64_t index); + + upll_rc_t ConstructReadDetailEntryResponse(ConfigKeyVal *ikey, + ConfigKeyVal *dup_key, + ConfigKeyVal *drv_resp_ckv, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DbSubOp dbop, + DalDmlIntf *dmi, + ConfigKeyVal **okey); + + upll_rc_t GetReadVbrEntryKey(ConfigKeyVal *&dup_key, + ConfigKeyVal *ikey); + upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + DalDmlIntf *dmi, uint8_t *ctrlr) { + return UPLL_RC_SUCCESS; + } + upll_rc_t ReadDTsateNormal(ConfigKeyVal *ikey, + ConfigKeyVal* dup_key, + upll_keytype_datatype_t dt_type, + DbSubOp dbop, + DalDmlIntf *dmi, + ConfigKeyVal**okey); + + upll_rc_t ReadDetailRecord(IpcReqRespHeader *req, ConfigKeyVal *&ikey, DalDmlIntf *dmi); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - upll_rc_t ReadSiblingCount(IpcReqRespHeader *req, - ConfigKeyVal* ikey, + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + upll_rc_t ReadSiblingCount(IpcReqRespHeader *req, + ConfigKeyVal* ikey, + DalDmlIntf *dmi); + upll_rc_t IsKeyInUse(upll_keytype_datatype_t dt_type, + const ConfigKeyVal *ckv, + bool *in_use, + DalDmlIntf *dmi); + upll_rc_t GetReadVbrKey(ConfigKeyVal *&dup_key, ConfigKeyVal *ikey); + + + upll_rc_t OnPolicerFullAlarm(string ctrlr_name , + string domain_id, + const key_vtn_t &key_vtn, + const pfcdrv_policier_alarm_data_t &alarm_data, + bool &alarm_raised, DalDmlIntf *dmi); - upll_rc_t IsKeyInUse(upll_keytype_datatype_t dt_type, - const ConfigKeyVal *ckv, - bool *in_use, - DalDmlIntf *dmi); - upll_rc_t GetReadVbrKey(ConfigKeyVal *&dup_key, ConfigKeyVal *ikey); - - - upll_rc_t OnPolicerFullAlarm(string ctrlr_name , - string domain_id, - const key_vtn_t &key_vtn, - const pfcdrv_policier_alarm_data_t &alarm_data, - bool &alarm_raised, - DalDmlIntf *dmi); - - upll_rc_t OnPolicerFailAlarm(string ctrlr_name , - string domain_id, - const key_vtn_t &key_vtn, - const pfcdrv_policier_alarm_data_t &alarm_data, - bool &alarm_raised, - DalDmlIntf *dmi); - - upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id); - - upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t IsPolicingProfileConfigured(const char* policingprofile_name, - DalDmlIntf *dmi); + upll_rc_t OnPolicerFailAlarm(string ctrlr_name , + string domain_id, + const key_vtn_t &key_vtn, + const pfcdrv_policier_alarm_data_t &alarm_data, + bool &alarm_raised, + DalDmlIntf *dmi); - upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); + upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id); - bool FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op); + upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); - upll_rc_t UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename); + upll_rc_t IsPolicingProfileConfigured(const char* policingprofile_name, + DalDmlIntf *dmi); + + upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); + + bool FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, + unc_keytype_operation_t op); + + upll_rc_t UpdateVnodeVal(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename); - upll_rc_t IsRenamed(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t &rename); + upll_rc_t IsRenamed(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t &rename); - upll_rc_t GetPolicingProfileConfigKey( - const char *pp_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); + upll_rc_t GetPolicingProfileConfigKey( + const char *pp_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi); - upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); + upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req); }; -} // kt_momgr -} // upll -} // unc +} // namespace kt_momgr +} // namespace upll +} // namespace unc #endif // MODULES_UPLL_VBR_POLICINGMAP_MOMGR_HH_ diff --git a/coordinator/modules/upll/vlanmap_momgr.cc b/coordinator/modules/upll/vlanmap_momgr.cc index ffb1f889..1992aae8 100644 --- a/coordinator/modules/upll/vlanmap_momgr.cc +++ b/coordinator/modules/upll/vlanmap_momgr.cc @@ -1,14 +1,18 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -#include "vlanmap_momgr.hh" #include +#include "vlanmap_momgr.hh" +#include "config_mgr.hh" +#include "vlink_momgr.hh" +#include "vbr_if_flowfilter_momgr.hh" +#include "vbr_if_policingmap_momgr.hh" #define NUM_KEY_MAIN_TBL_ 5 #define INVALID_LOG_PORT_ID_VALID 0xFF namespace unc { @@ -17,66 +21,77 @@ namespace kt_momgr { uint16_t VlanMapMoMgr::kVbrVlanMapNumChildKey = 2; BindInfo VlanMapMoMgr::vlan_map_bind_info[] = { - { uudst::vbridge_vlanmap::kDbiVtnName, CFG_KEY, offsetof( - key_vlan_map, vbr_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vbridge_vlanmap::kDbiVbrName, CFG_KEY, offsetof( - key_vlan_map, vbr_key.vbridge_name), - uud::kDalChar, 32 }, - { uudst::vbridge_vlanmap::kDbiLogicalPortId, CFG_KEY, offsetof( - key_vlan_map, logical_port_id), - uud::kDalChar, 320 }, - { uudst::vbridge_vlanmap::kDbiLogicalPortIdValid, CFG_KEY, offsetof( - key_vlan_map, logical_port_id_valid), - uud::kDalUint8, 1 }, - { uudst::vbridge_vlanmap::kDbiVlanid, CFG_VAL, offsetof(val_vlan_map, - vlan_id), - uud::kDalUint16, 1 }, - { uudst::vbridge_vlanmap::kDbiCtrlrName, CK_VAL, offsetof(key_user_data_t, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vbridge_vlanmap::kDbiDomainId, CK_VAL, offsetof(key_user_data_t, - domain_id), - uud::kDalChar, 32 }, - { uudst::vbridge_vlanmap::kDbiValidVlanid, CFG_META_VAL, offsetof( - val_vlan_map, valid[0]), - uud::kDalUint8, 1 }, - { uudst::vbridge_vlanmap::kDbiCsVlanid, CS_VAL, offsetof(val_vlan_map, - cs_attr[0]), - uud::kDalUint8, 1 }, - { uudst::vbridge_vlanmap::kDbiCsRowStatus, CS_VAL, offsetof(val_vlan_map, - cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vbridge_vlanmap::kDbiVbrVlanMapFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 }, }; + { uudst::vbridge_vlanmap::kDbiVtnName, CFG_KEY, offsetof( + key_vlan_map, vbr_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vbridge_vlanmap::kDbiVbrName, CFG_KEY, offsetof( + key_vlan_map, vbr_key.vbridge_name), + uud::kDalChar, 32 }, + { uudst::vbridge_vlanmap::kDbiLogicalPortId, CFG_KEY, offsetof( + key_vlan_map, logical_port_id), + uud::kDalChar, 320 }, + { uudst::vbridge_vlanmap::kDbiLogicalPortIdValid, CFG_KEY, offsetof( + key_vlan_map, logical_port_id_valid), + uud::kDalUint8, 1 }, + /* VlanmapOnBoundary: New value structure */ + { uudst::vbridge_vlanmap::kDbiVlanid, CFG_VAL, offsetof(pfcdrv_val_vlan_map, + vm.vlan_id), + uud::kDalUint16, 1 }, + { uudst::vbridge_vlanmap::kDbiBdryRefCount, CFG_VAL, offsetof( + pfcdrv_val_vlan_map, bdry_ref_count), + uud::kDalUint32, 1 }, + { uudst::vbridge_vlanmap::kDbiCtrlrName, CK_VAL, offsetof(key_user_data_t, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vbridge_vlanmap::kDbiDomainId, CK_VAL, offsetof(key_user_data_t, + domain_id), + uud::kDalChar, 32 }, + + { uudst::vbridge_vlanmap::kDbiVbrVlanMapFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 }, + /* VlanmapOnBoundary: New value structure */ + { uudst::vbridge_vlanmap::kDbiValidVlanid, CFG_META_VAL, offsetof( + pfcdrv_val_vlan_map, vm.valid[0]), + uud::kDalUint8, 1 }, + { uudst::vbridge_vlanmap::kDbiValidBdryRefCount, CFG_META_VAL, offsetof( + pfcdrv_val_vlan_map, valid[1]), + uud::kDalUint8, 1 }, + + { uudst::vbridge_vlanmap::kDbiCsRowStatus, CS_VAL, offsetof( + pfcdrv_val_vlan_map, + vm.cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vbridge_vlanmap::kDbiCsVlanid, CS_VAL, offsetof(pfcdrv_val_vlan_map, + vm.cs_attr[0]), + uud::kDalUint8, 1 }, }; BindInfo VlanMapMoMgr::vlan_map_maintbl_update_key_bind_info[] = { - { uudst::vbridge_vlanmap::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vlan_map, vbr_key.vtn_key.vtn_name), - uud::kDalChar, (kMaxLenVtnName+1) }, - { uudst::vbridge_vlanmap::kDbiVbrName, CFG_MATCH_KEY, offsetof( - key_vlan_map, vbr_key.vbridge_name), - uud::kDalChar, (kMaxLenVnodeName+1) }, - { uudst::vbridge_vlanmap::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, (kMaxLenVtnName+1) }, - { uudst::vbridge_vlanmap::kDbiVbrName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, (kMaxLenVnodeName+1) }, - { uudst::vbridge_vlanmap::kDbiVbrVlanMapFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 }, + { uudst::vbridge_vlanmap::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_vlan_map, vbr_key.vtn_key.vtn_name), + uud::kDalChar, (kMaxLenVtnName+1) }, + { uudst::vbridge_vlanmap::kDbiVbrName, CFG_MATCH_KEY, offsetof( + key_vlan_map, vbr_key.vbridge_name), + uud::kDalChar, (kMaxLenVnodeName+1) }, + { uudst::vbridge_vlanmap::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, (kMaxLenVtnName+1) }, + { uudst::vbridge_vlanmap::kDbiVbrName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, (kMaxLenVnodeName+1) }, + { uudst::vbridge_vlanmap::kDbiVbrVlanMapFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 }, }; VlanMapMoMgr::VlanMapMoMgr() { UPLL_FUNC_TRACE - ntable = MAX_MOMGR_TBLS; + ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiVbrVlanMapTbl, UNC_KT_VBR_VLANMAP, - vlan_map_bind_info, IpctSt::kIpcStKeyVlanMap, - IpctSt::kIpcStValVlanMap, - uudst::vbridge_vlanmap::kDbiVbrVlanMapNumCols); + vlan_map_bind_info, IpctSt::kIpcStKeyVlanMap, + IpctSt::kIpcStValVlanMap, + uudst::vbridge_vlanmap::kDbiVbrVlanMapNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; nchild = 0; @@ -109,8 +124,8 @@ bool VlanMapMoMgr::IsValidKey(void *key, switch (index) { case uudst::vbridge_vlanmap::kDbiVtnName: ret_val = ValidateKey(reinterpret_cast - (vlanmap_key->vbr_key.vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + (vlanmap_key->vbr_key.vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE( "syntax check failure for key_vlan_map->vbr_key.vtn_key.vtn_name"); @@ -119,8 +134,8 @@ bool VlanMapMoMgr::IsValidKey(void *key, break; case uudst::vbridge_vlanmap::kDbiVbrName: ret_val = ValidateKey(reinterpret_cast - (vlanmap_key->vbr_key.vbridge_name), - kMinLenVnodeName, kMaxLenVnodeName); + (vlanmap_key->vbr_key.vbridge_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VBR Name is not valid(%d)", ret_val); return false; @@ -128,15 +143,15 @@ bool VlanMapMoMgr::IsValidKey(void *key, break; case uudst::vbridge_vlanmap::kDbiLogicalPortId: if (!ValidateLogicalPortId(reinterpret_cast - (vlanmap_key->logical_port_id), - kMinLenLogicalPortId, kMaxLenLogicalPortId)) { + (vlanmap_key->logical_port_id), + kMinLenLogicalPortId, kMaxLenLogicalPortId)) { UPLL_LOG_TRACE("Switch ID is not valid"); return false; } break; case uudst::vbridge_vlanmap::kDbiLogicalPortIdValid: if (!ValidateNumericRange(vlanmap_key->logical_port_id_valid, PFC_FALSE, - PFC_TRUE, true, true)) { + PFC_TRUE, true, true)) { UPLL_LOG_TRACE("LogicalPortId validis not valid"); return false; } @@ -154,9 +169,10 @@ upll_rc_t VlanMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_vlan_map_t *vlanmap_key; void *pkey; + bool cfgval_ctrlr = false; if (parent_key == NULL) { vlanmap_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); + (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); vlanmap_key->logical_port_id_valid = INVALID_LOG_PORT_ID_VALID; if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, IpctSt::kIpcStKeyVlanMap, @@ -167,46 +183,90 @@ upll_rc_t VlanMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } if (!pkey) return UPLL_RC_ERR_GENERIC; if (okey) { - if (okey->get_key_type() != UNC_KT_VBR_VLANMAP) + if (okey->get_key_type() != UNC_KT_VBR_VLANMAP) return UPLL_RC_ERR_GENERIC; vlanmap_key = reinterpret_cast(okey->get_key()); } else { vlanmap_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); + (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); vlanmap_key->logical_port_id_valid = INVALID_LOG_PORT_ID_VALID; } unc_key_type_t keytype = parent_key->get_key_type(); switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(vlanmap_key->vbr_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VBRIDGE: uuu::upll_strncpy(vlanmap_key->vbr_key.vtn_key.vtn_name, - (reinterpret_cast(pkey))->vtn_key.vtn_name, - kMaxLenVtnName+1); + (reinterpret_cast(pkey))->vtn_key.vtn_name, + kMaxLenVtnName+1); uuu::upll_strncpy(vlanmap_key->vbr_key.vbridge_name, - (reinterpret_cast(pkey))->vbridge_name, - kMaxLenVnodeName+1); + (reinterpret_cast(pkey))->vbridge_name, + kMaxLenVnodeName+1); + break; + case UNC_KT_VBR_IF: + uuu::upll_strncpy(vlanmap_key->vbr_key.vtn_key.vtn_name, + (reinterpret_cast + (pkey))->vbr_key.vtn_key.vtn_name, + kMaxLenVtnName+1); + uuu::upll_strncpy(vlanmap_key->vbr_key.vbridge_name, + (reinterpret_cast + (pkey))->vbr_key.vbridge_name, + kMaxLenVnodeName+1); break; case UNC_KT_VBR_VLANMAP: uuu::upll_strncpy( - vlanmap_key->vbr_key.vtn_key.vtn_name, - (reinterpret_cast(pkey))->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName+1); + vlanmap_key->vbr_key.vtn_key.vtn_name, + (reinterpret_cast(pkey))->vbr_key.vtn_key.vtn_name, + kMaxLenVtnName+1); uuu::upll_strncpy(vlanmap_key->vbr_key.vbridge_name, - (reinterpret_cast(pkey))->vbr_key.vbridge_name, - kMaxLenVnodeName+1); + (reinterpret_cast + (pkey))->vbr_key.vbridge_name, + kMaxLenVnodeName+1); vlanmap_key->logical_port_id_valid = (uint8_t)(reinterpret_cast - (pkey))->logical_port_id_valid; + (pkey))->logical_port_id_valid; if (vlanmap_key->logical_port_id_valid) - uuu::upll_strncpy(vlanmap_key->logical_port_id, - (reinterpret_cast(pkey))->logical_port_id, - kMaxLenLogicalPortId); + uuu::upll_strncpy(vlanmap_key->logical_port_id, + (reinterpret_cast + (pkey))->logical_port_id, + kMaxLenLogicalPortId); else *vlanmap_key->logical_port_id = '\0'; + break; + /* VlanmapOnBoundary: To handle vlink kt */ + case UNC_KT_VLINK: { + uint8_t *vnode_name; + uint8_t flags = 0; + val_vlink *vlink_val = reinterpret_cast(GetVal(parent_key)); + if (!vlink_val) { + UPLL_LOG_TRACE("ERROR"); + if (!okey || !(okey->get_key())) + FREE_IF_NOT_NULL(vlanmap_key); + return UPLL_RC_ERR_GENERIC; + } + + GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + UPLL_LOG_DEBUG("Vlink flag node position %d", flags); + + if (flags == kVlinkVnode2) { + cfgval_ctrlr = true; + vnode_name = vlink_val->vnode2_name; + } else { + vnode_name = vlink_val->vnode1_name; + } + uuu::upll_strncpy(vlanmap_key->vbr_key.vtn_key.vtn_name, + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + if (vnode_name) + uuu::upll_strncpy(vlanmap_key->vbr_key.vbridge_name, vnode_name, + (kMaxLenVnodeName + 1)); + + break; + } default: break; } @@ -220,7 +280,11 @@ upll_rc_t VlanMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, free(vlanmap_key); result_code = UPLL_RC_ERR_GENERIC; } else { - SET_USER_DATA(okey, parent_key); + if (cfgval_ctrlr) { + SET_USER_DATA(okey, parent_key->get_cfg_val()); + } else { + SET_USER_DATA(okey, parent_key); + } } return result_code; } @@ -239,13 +303,15 @@ upll_rc_t VlanMapMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, key_vlan_map_t *pkey = reinterpret_cast(ikey->get_key()); if (!pkey) return UPLL_RC_ERR_GENERIC; key_vbr *vbr_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr))); + (ConfigKeyVal::Malloc(sizeof(key_vbr))); uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, - (reinterpret_cast(pkey))->vbr_key.vtn_key.vtn_name, - kMaxLenVtnName+1); + (reinterpret_cast + (pkey))->vbr_key.vtn_key.vtn_name, + kMaxLenVtnName+1); uuu::upll_strncpy(vbr_key->vbridge_name, - (reinterpret_cast(pkey))->vbr_key.vbridge_name, - kMaxLenVnodeName+1); + (reinterpret_cast + (pkey))->vbr_key.vbridge_name, + kMaxLenVnodeName+1); okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, vbr_key, NULL); if (okey == NULL) { free(vbr_key); @@ -265,9 +331,10 @@ upll_rc_t VlanMapMoMgr::AllocVal(ConfigVal *&ck_val, if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; switch (tbl) { case MAINTBL: + /* VlanmapOnBoundary: Val structre is modified */ val = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_vlan_map))); - ck_val = new ConfigVal(IpctSt::kIpcStValVlanMap, val); + ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map))); + ck_val = new ConfigVal(IpctSt::kIpcStPfcdrvValVlanMap, val); break; default: val = NULL; @@ -285,22 +352,37 @@ upll_rc_t VlanMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); if (tmp) { + /* VlanmapOnBoundary: Modified for new val struct */ + void *oval; if (tbl == MAINTBL) { - val_vlan_map *ival = reinterpret_cast(GetVal(req)); - if (!ival) { - UPLL_LOG_DEBUG("Invalid vlanmap"); - return UPLL_RC_ERR_GENERIC; + if ((req->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVlanMap) { + val_vlan_map *ival = reinterpret_cast(GetVal(req)); + if (!ival) return UPLL_RC_ERR_GENERIC; + + val_vlan_map *vlanmap_val = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_vlan_map))); + memcpy(vlanmap_val, ival, sizeof(val_vlan_map)); + oval = reinterpret_cast(vlanmap_val); + } else { + pfcdrv_val_vlan_map *ival = + reinterpret_cast(GetVal(req)); + if (!ival) { + UPLL_LOG_DEBUG("Invalid vlanmap"); + return UPLL_RC_ERR_GENERIC; + } + pfcdrv_val_vlan_map *vlanmap_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map))); + memcpy(vlanmap_val, ival, sizeof(pfcdrv_val_vlan_map)); + oval = reinterpret_cast(vlanmap_val); } - val_vlan_map *vlanmap_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vlan_map))); - memcpy(vlanmap_val, ival, sizeof(val_vlan_map)); - tmp1 = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + tmp1 = new ConfigVal(req->get_cfg_val()->get_st_num(), oval); } }; void *tkey = (req != NULL) ? (req)->get_key() : NULL; key_vlan_map_t *ikey = reinterpret_cast(tkey); key_vlan_map_t *vlanmap_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); + (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); memcpy(vlanmap_key, ikey, sizeof(key_vlan_map_t)); okey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp1); @@ -308,6 +390,7 @@ upll_rc_t VlanMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, SET_USER_DATA(okey, req); } else { delete tmp1; + free(vlanmap_key); } return UPLL_RC_SUCCESS; } @@ -319,19 +402,24 @@ upll_rc_t VlanMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; - val_vlan_map_t *vlanmap_val = reinterpret_cast(GetVal(ikey)); + pfcdrv_val_vlan_map_t *drv_vlanmap_val = + reinterpret_cast(GetVal(ikey)); + if (drv_vlanmap_val == NULL) return UPLL_RC_ERR_GENERIC; + val_vlan_map_t *vlanmap_val = &(drv_vlanmap_val->vm); unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; - val_vlan_map *vlanmap_val2 = reinterpret_cast(GetVal(upd_key)); - UPLL_LOG_TRACE("Key from Candidate %s",(ikey->ToStrAll()).c_str()); - if (vlanmap_val == NULL) return UPLL_RC_ERR_GENERIC; + pfcdrv_val_vlan_map *drv_vlanmap_val2 = + reinterpret_cast(GetVal(upd_key)); + val_vlan_map_t *vlanmap_val2 = &(drv_vlanmap_val2->vm); + UPLL_LOG_TRACE("Key from Candidate %s", (ikey->ToStrAll()).c_str()); + if (op == UNC_OP_CREATE) { vlanmap_val->cs_row_status = cs_status; } else if (op == UNC_OP_UPDATE) { - void *val = reinterpret_cast(vlanmap_val); + void *val = reinterpret_cast(drv_vlanmap_val); CompareValidValue(val, GetVal(upd_key), true); - UPLL_LOG_TRACE("Key from Running %s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("Key from Running %s", (upd_key->ToStrAll()).c_str()); vlanmap_val->cs_row_status = vlanmap_val2->cs_row_status; } else if (op != UNC_OP_CREATE) { return UPLL_RC_ERR_GENERIC; @@ -344,35 +432,44 @@ upll_rc_t VlanMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, vlanmap_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vlanmap_val->valid[loop]) && (UNC_OP_CREATE == op)) { - vlanmap_val->cs_attr[loop] = UNC_CS_APPLIED; + vlanmap_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((UNC_VF_INVALID == vlanmap_val->valid[loop]) && (UNC_OP_UPDATE == op)) { - vlanmap_val->cs_attr[loop] = vlanmap_val2->cs_attr[loop]; + vlanmap_val->cs_attr[loop] = vlanmap_val2->cs_attr[loop]; } } + upll_rc_t result_code = UpdateParentOperStatus(ikey, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Update parent vbridge failed\n"); + } return UPLL_RC_SUCCESS; } + upll_rc_t VlanMapMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - val_vlan_map_t *val; - val = (ckv_running != NULL) ? reinterpret_cast - (GetVal(ckv_running)) : NULL; - if (NULL == val) { + pfcdrv_val_vlan_map_t *drv_val = NULL; + val_vlan_map_t *val = NULL; + drv_val = (ckv_running != NULL) ? reinterpret_cast + (GetVal(ckv_running)) : NULL; + if (NULL == drv_val) { return UPLL_RC_ERR_GENERIC; } + val = &(drv_val->vm); if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && - UNC_VF_VALID == val->valid[loop]) || cs_status == UNC_CS_APPLIED) + UNC_VF_VALID == val->valid[loop]) || cs_status == UNC_CS_APPLIED) val->cs_attr[loop] = cs_status; } return result_code; @@ -385,7 +482,8 @@ uint8_t* VlanMapMoMgr::GetControllerId(ConfigKeyVal *ck_vbr, DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; if (ck_vbr->get_key_type() != UNC_KT_VBRIDGE) return NULL; MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VBRIDGE))); + (GetMoManager + (UNC_KT_VBRIDGE))); upll_rc_t result_code = mgr->ReadConfigDB(ck_vbr, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -402,24 +500,24 @@ upll_rc_t VlanMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, if (!ikey || !(ikey->get_key())) return UPLL_RC_ERR_GENERIC; key_rename_vnode_info *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_vlan_map_t* key_vlan_map = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); - key_vlan_map->logical_port_id_valid = INVALID_LOG_PORT_ID_VALID; + (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); + key_vlan_map->logical_port_id_valid = INVALID_LOG_PORT_ID_VALID; if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { free(key_vlan_map); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vlan_map->vbr_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, - kMaxLenVtnName+1); + key_rename->old_unc_vtn_name, + kMaxLenVtnName+1); if (ikey->get_key_type() == UNC_KT_VBRIDGE) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { free(key_vlan_map); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vlan_map->vbr_key.vbridge_name, - key_rename->old_unc_vnode_name, kMaxLenVnodeName+1); + key_rename->old_unc_vnode_name, kMaxLenVnodeName+1); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { free(key_vlan_map); @@ -455,11 +553,11 @@ upll_rc_t VlanMapMoMgr::ValidateMessage(IpcReqRespHeader *req, upll_rc_t ret_val = UPLL_RC_SUCCESS; if (ikey->get_st_num() != IpctSt::kIpcStKeyVlanMap) { UPLL_LOG_DEBUG("Invalid Key structure received. received struct - %d", - (ikey->get_st_num())); + (ikey->get_st_num())); return UPLL_RC_ERR_BAD_REQUEST; } key_vlan_map *vlan_map_key = - reinterpret_cast((ikey->get_key())); + reinterpret_cast((ikey->get_key())); unc_key_type_t ktype = ikey->get_key_type(); if (UNC_KT_VBR_VLANMAP != ktype) { @@ -472,6 +570,22 @@ upll_rc_t VlanMapMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_CFG_SYNTAX; } + val_vlan_map *vlanmap_val = NULL; + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (ikey->get_cfg_val()) { + if (cfg_val->get_st_num() == IpctSt::kIpcStValVlanMap) { + vlanmap_val = + reinterpret_cast(cfg_val->get_val()); + } else if (cfg_val->get_st_num() == IpctSt::kIpcStPfcdrvValVlanMap) { + vlanmap_val = + &(reinterpret_cast(cfg_val->get_val())->vm); + } else if ((cfg_val->get_st_num() != IpctSt::kIpcStValVlanMap) || + (cfg_val->get_st_num() != IpctSt::kIpcStPfcdrvValVlanMap)) { + UPLL_LOG_DEBUG("Invalid val structure received.received struct - %d", + ikey->get_cfg_val()->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + } if (op == UNC_OP_CREATE || op == UNC_OP_UPDATE) { if (dt_type == UPLL_DT_CANDIDATE || UPLL_DT_IMPORT == dt_type) { ConfigVal *cfg_val = ikey->get_cfg_val(); @@ -479,20 +593,15 @@ upll_rc_t VlanMapMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_DEBUG("Value structure mandatory"); return UPLL_RC_ERR_BAD_REQUEST; } - if (cfg_val->get_st_num() != IpctSt::kIpcStValVlanMap) { - UPLL_LOG_DEBUG("Invalid Value structure received. received struct - %d", - (cfg_val->get_st_num())); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_vlan_map *vlanmap_val = - reinterpret_cast(cfg_val->get_val()); if (!vlanmap_val) { - UPLL_LOG_DEBUG("val_vlan_map struct is mandatory for Create/update op"); + UPLL_LOG_DEBUG("val_vlan_map struct is mandatory for" + "Create/update op"); return UPLL_RC_ERR_BAD_REQUEST; } ret_val = ValidateVlanmapValue(vlanmap_val, op); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failure for val_vlan_map value structure"); + UPLL_LOG_DEBUG("syntax check failure for val_vlan_map" + "value structure"); return UPLL_RC_ERR_CFG_SYNTAX; } return UPLL_RC_SUCCESS; @@ -501,7 +610,8 @@ upll_rc_t VlanMapMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } else if (op == UNC_OP_READ || op == UNC_OP_READ_SIBLING - || op == UNC_OP_READ_SIBLING_BEGIN || op == UNC_OP_READ_SIBLING_COUNT) { + || op == UNC_OP_READ_SIBLING_BEGIN || + op == UNC_OP_READ_SIBLING_COUNT) { if (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE) { if (opt1 != UNC_OPT1_NORMAL) { @@ -512,22 +622,15 @@ upll_rc_t VlanMapMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_DEBUG("Error option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (!cfg_val) return UPLL_RC_SUCCESS; - if (cfg_val->get_st_num() != IpctSt::kIpcStValVlanMap) { - UPLL_LOG_DEBUG("Invalid Value structure received. received struct - %d", - (cfg_val->get_st_num())); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_vlan_map *vlanmap_val = - reinterpret_cast(cfg_val->get_val()); + if (vlanmap_val == NULL) { UPLL_LOG_DEBUG("syntax check for val_vlan_map struct is an optional"); return UPLL_RC_SUCCESS; } ret_val = ValidateVlanmapValue(vlanmap_val, op); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failure for val_vlan_map value structure"); + UPLL_LOG_DEBUG("syntax check failure for val_vlan_map value" + "structure"); return UPLL_RC_ERR_CFG_SYNTAX; } return UPLL_RC_SUCCESS; @@ -545,7 +648,7 @@ upll_rc_t VlanMapMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } else if (op == UNC_OP_DELETE) { - if(dt_type == UPLL_DT_CANDIDATE) { + if (dt_type == UPLL_DT_CANDIDATE) { UPLL_LOG_DEBUG("Value structure is none for operation type:%d", op); return UPLL_RC_SUCCESS; } else { @@ -565,32 +668,31 @@ upll_rc_t VlanMapMoMgr::ValidateVlanmapValue(val_vlan_map *vlanmap_val, return UPLL_RC_ERR_GENERIC; } if (vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID) { - if ((vlanmap_val->vlan_id != 0xFFFF) && !ValidateNumericRange(vlanmap_val->vlan_id, (uint16_t) kMinVlanId, (uint16_t) kMaxVlanId, true, true)) { UPLL_LOG_DEBUG("Numeric range check failed. vlan_id - %d", - vlanmap_val->vlan_id); + vlanmap_val->vlan_id); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID_NO_VALUE - && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { + && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { vlanmap_val->vlan_id = 0; } return UPLL_RC_SUCCESS; } upll_rc_t VlanMapMoMgr::ValidateVlanmapKey(key_vlan_map *vlan_map_key, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey(reinterpret_cast - (vlan_map_key->vbr_key.vtn_key.vtn_name), - kMinLenVnodeName, kMaxLenVnodeName); + (vlan_map_key->vbr_key.vtn_key.vtn_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. vtn_name - %s", - vlan_map_key->vbr_key.vtn_key.vtn_name); + vlan_map_key->vbr_key.vtn_key.vtn_name); return UPLL_RC_ERR_CFG_SYNTAX; } ret_val = ValidateKey(reinterpret_cast @@ -598,40 +700,40 @@ upll_rc_t VlanMapMoMgr::ValidateVlanmapKey(key_vlan_map *vlan_map_key, kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("syntax check failed. vbridge_name - %s", - vlan_map_key->vbr_key.vbridge_name); + vlan_map_key->vbr_key.vbridge_name); return UPLL_RC_ERR_CFG_SYNTAX; } if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { if (vlan_map_key->logical_port_id_valid == PFC_TRUE) { if (!ValidateLogicalPortId( - reinterpret_cast(vlan_map_key->logical_port_id), - kMinLenLogicalPortId, kMaxLenLogicalPortId)) { + reinterpret_cast(vlan_map_key->logical_port_id), + kMinLenLogicalPortId, kMaxLenLogicalPortId)) { ret_val = UPLL_RC_ERR_CFG_SYNTAX; } - } - else + } else { ret_val = UPLL_RC_SUCCESS; - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("syntax check failed. logical_port_id - %s", - vlan_map_key->logical_port_id); - return UPLL_RC_ERR_CFG_SYNTAX; - } - if (toupper(vlan_map_key->logical_port_id[0]) == 'P' - && toupper(vlan_map_key->logical_port_id[1]) == 'P') { - UPLL_LOG_DEBUG("Invalid starting characters. Logical_port_id - %s", - vlan_map_key->logical_port_id); - return UPLL_RC_ERR_CFG_SYNTAX; - } - if (!ValidateNumericRange(vlan_map_key->logical_port_id_valid, PFC_FALSE, - PFC_TRUE, true, true)) { - UPLL_LOG_DEBUG("syntax check failed. swid_valid - %d", - vlan_map_key->logical_port_id_valid); + } + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("syntax check failed. logical_port_id - %s", + vlan_map_key->logical_port_id); + return UPLL_RC_ERR_CFG_SYNTAX; + } + if (toupper(vlan_map_key->logical_port_id[0]) == 'P' + && toupper(vlan_map_key->logical_port_id[1]) == 'P') { + UPLL_LOG_DEBUG("Invalid starting characters. Logical_port_id - %s", + vlan_map_key->logical_port_id); return UPLL_RC_ERR_CFG_SYNTAX; - } + } + if (!ValidateNumericRange(vlan_map_key->logical_port_id_valid, PFC_FALSE, + PFC_TRUE, true, true)) { + UPLL_LOG_DEBUG("syntax check failed. swid_valid - %d", + vlan_map_key->logical_port_id_valid); + return UPLL_RC_ERR_CFG_SYNTAX; + } } else { - // Poisoning key from request to avoid binding for SIBLING_COUNT - // and SIBLING_BEGIN + // Poisoning key from request to avoid binding for SIBLING_COUNT + // and SIBLING_BEGIN UPLL_LOG_TRACE("Operation is %d", operation); StringReset(vlan_map_key->logical_port_id); vlan_map_key->logical_port_id_valid = 2; @@ -639,7 +741,7 @@ upll_rc_t VlanMapMoMgr::ValidateVlanmapKey(key_vlan_map *vlan_map_key, return UPLL_RC_SUCCESS; } -upll_rc_t VlanMapMoMgr::ValidateAttribute(ConfigKeyVal *ikey, +upll_rc_t VlanMapMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { UPLL_FUNC_TRACE; @@ -659,14 +761,14 @@ upll_rc_t VlanMapMoMgr::ValidateCapability(IpcReqRespHeader *req, const char *ctrlr_name) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; - if (!req || !ikey ) { + if (!req || !ikey) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); return UPLL_RC_ERR_GENERIC; } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -682,16 +784,6 @@ upll_rc_t VlanMapMoMgr::ValidateCapability(IpcReqRespHeader *req, result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - UPLL_LOG_TRACE("The Current Instance is %d", cur_instance_count); - UPLL_LOG_TRACE("The Max Instance is %d", max_instance_count); - - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; case UNC_OP_UPDATE: @@ -711,30 +803,48 @@ upll_rc_t VlanMapMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("key_type - %d is not supported by controller - %s", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_vlan_map *vlanmap_val = NULL; - if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValVlanMap)) { - vlanmap_val = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + + if (req->datatype == UPLL_DT_IMPORT) { + if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValVlanMap)) { + vlanmap_val = &(reinterpret_cast + (ikey->get_cfg_val()->get_val())->vm); + } + } else { + if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStValVlanMap)) { + vlanmap_val = reinterpret_cast + (ikey->get_cfg_val()->get_val()); + } + if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValVlanMap)) { + vlanmap_val = &(reinterpret_cast + (ikey->get_cfg_val()->get_val())->vm); + } } + if (vlanmap_val) { if (max_attrs > 0) { - ret_val = ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, req->operation); + ret_val = ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, + req->operation); return ret_val; } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); return UPLL_RC_ERR_GENERIC; } } return UPLL_RC_SUCCESS; } - -upll_rc_t VlanMapMoMgr::ValVlanmapAttributeSupportCheck(val_vlan_map *vlanmap_val, - const uint8_t *attrs, - unc_keytype_operation_t operation) { + +upll_rc_t VlanMapMoMgr::ValVlanmapAttributeSupportCheck( + val_vlan_map *vlanmap_val, + const uint8_t *attrs, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if (vlanmap_val != NULL) { if ((vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID) @@ -769,10 +879,16 @@ bool VlanMapMoMgr::CompareValidValue(void *&val1, bool copy_to_running) { UPLL_FUNC_TRACE; bool invalid_attr = true; - val_vlan_map_t *val_vlan_map1 = reinterpret_cast(val1); - val_vlan_map_t *val_vlan_map2 = reinterpret_cast(val2); + + pfcdrv_val_vlan_map_t *drv_val_vlan_map1 = + reinterpret_cast(val1); + pfcdrv_val_vlan_map_t *drv_val_vlan_map2 = + reinterpret_cast(val2); + val_vlan_map_t *val_vlan_map1 = &(drv_val_vlan_map1->vm); + val_vlan_map_t *val_vlan_map2 = &(drv_val_vlan_map2->vm); + for (uint8_t loop = 0; - loop < sizeof(val_vlan_map1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vlan_map1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == val_vlan_map1->valid[loop] && UNC_VF_VALID == val_vlan_map2->valid[loop]) val_vlan_map1->valid[loop] = UNC_VF_VALID_NO_VALUE; @@ -781,14 +897,14 @@ bool VlanMapMoMgr::CompareValidValue(void *&val1, && val_vlan_map2->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID) { if (val_vlan_map1->vlan_id == val_vlan_map2->vlan_id) val_vlan_map1->valid[UPLL_IDX_VLAN_ID_VM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } for (unsigned int loop = 0; loop < sizeof(val_vlan_map1->valid) / sizeof(val_vlan_map1->valid[0]); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vlan_map1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vlan_map1->valid[loop])) - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vlan_map1->valid[loop])) + invalid_attr = false; } return invalid_attr; } @@ -800,59 +916,76 @@ upll_rc_t VlanMapMoMgr::IsReferenced(ConfigKeyVal *ikey, } upll_rc_t VlanMapMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; if (!ckv || !(ckv->get_cfg_val()) || !(ckv->get_key())) return UPLL_RC_ERR_GENERIC; upll_rc_t result_code = UPLL_RC_SUCCESS; + val_vlan_map_t *vlanmapval = NULL; + + if (req->datatype != UPLL_DT_IMPORT) { + pfcdrv_val_vlan_map_t* drv_vlanmapval = + reinterpret_cast(GetVal(ckv)); + vlanmapval = &(drv_vlanmapval->vm); + } else { + vlanmapval = reinterpret_cast(GetVal(ckv)); + } + + if (!vlanmapval) { + UPLL_LOG_DEBUG("Returning error\n"); + return UPLL_RC_ERR_GENERIC; + } - val_vlan_map_t* vlanmapval = reinterpret_cast(GetVal(ckv)); key_vlan_map_t* vlanmapkey = - reinterpret_cast(ckv->get_key()); + reinterpret_cast(ckv->get_key()); if (vlanmapval->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID) { - key_vlan_map_t* key_vlan_map = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); - val_vlan_map_t* val_vlan_map = static_cast - (ConfigKeyVal::Malloc(sizeof(val_vlan_map_t))); + (ConfigKeyVal::Malloc(sizeof(key_vlan_map_t))); + pfcdrv_val_vlan_map_t* drv_val_vlan_map = + static_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map_t))); + val_vlan_map_t* val_vlan_map = &(drv_val_vlan_map->vm); + if (vlanmapkey->logical_port_id_valid) { uuu::upll_strncpy(key_vlan_map->logical_port_id, - vlanmapkey->logical_port_id, - kMaxLenLogicalPortId+1); + vlanmapkey->logical_port_id, + kMaxLenLogicalPortId+1); key_vlan_map->logical_port_id_valid = vlanmapkey->logical_port_id_valid; } - //Populating key and val of vlanmap + // Populating key and val of vlanmap val_vlan_map->vlan_id = vlanmapval->vlan_id; val_vlan_map->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; - ConfigKeyVal *ckv_vlanmap = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + ConfigKeyVal *ckv_vlanmap = new ConfigKeyVal( + UNC_KT_VBR_VLANMAP, IpctSt::kIpcStKeyVlanMap, key_vlan_map, NULL); - ckv_vlanmap->AppendCfgVal(IpctSt::kIpcStValVlanMap, val_vlan_map); - //Setting Ctrlr/Domain Id to vlanmap + ckv_vlanmap->AppendCfgVal(IpctSt::kIpcStPfcdrvValVlanMap, drv_val_vlan_map); + + // Setting Ctrlr/Domain Id to vlanmap SET_USER_DATA(ckv_vlanmap, ckv); DbSubOp dbop = { kOpReadMultiple, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag}; - //Read the Configuration from the MainTable + // Read the Configuration from the MainTable result_code = ReadConfigDB(ckv_vlanmap, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, dmi, MAINTBL); - //Check LogicalPortId and VlanId in use + dbop, dmi, MAINTBL); + // Check LogicalPortId and VlanId in use if (result_code == UPLL_RC_SUCCESS) { ConfigKeyVal *tmp = ckv_vlanmap; key_vlan_map_t* tmp_vlanmapkey = - reinterpret_cast(tmp->get_key()); + reinterpret_cast(tmp->get_key()); while (tmp) { if (!memcmp((const void*)&(vlanmapkey->vbr_key), - (const void*) &(tmp_vlanmapkey->vbr_key), - sizeof(key_vbr_t))) { + (const void*) &(tmp_vlanmapkey->vbr_key), + sizeof(key_vbr_t))) { UPLL_LOG_TRACE("Looking on the Same key"); } else { UPLL_LOG_DEBUG("More than one vlanmap is configured with the" - " same logical port id and vlanid!"); + " same logical port id and vlanid!"); DELETE_IF_NOT_NULL(ckv_vlanmap); tmp = NULL; return UPLL_RC_ERR_CFG_SEMANTIC; @@ -867,23 +1000,271 @@ upll_rc_t VlanMapMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, return result_code; } -// Overridden Read Sibling from momgr_impl. -// This keytype contains 2 child keys and needs special handling. +upll_rc_t VlanMapMoMgr::ReadSiblingBeginMo(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + + switch (header->datatype) { + case UPLL_DT_IMPORT: + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + case UPLL_DT_CANDIDATE: + case UPLL_DT_RUNNING: + case UPLL_DT_STARTUP: + case UPLL_DT_STATE: + // Change the dt_type to Running and finally back to State + header->datatype = (header->datatype == UPLL_DT_STATE) ? + UPLL_DT_RUNNING : header->datatype; + break; + default: + UPLL_LOG_DEBUG("Invalid Datatype"); + return UPLL_RC_ERR_GENERIC; + } + + result_code = ValidateMessage(header, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; + } + ConfigKeyVal *result_ckv = NULL; + ConfigKeyVal *queryckval = NULL; + result_code = DupConfigKeyVal(queryckval, ikey, MAINTBL); + if (result_code != UPLL_RC_SUCCESS || queryckval == NULL) { + DELETE_IF_NOT_NULL(queryckval); + UPLL_LOG_INFO("Error while DupConfigKeyVal"); + return UPLL_RC_ERR_GENERIC; + } + + /* when user specified vlanid in the val struct, set to true */ + bool filter_vlanid = false; + /* Covert user val struct to pfc_drv val struct */ + val_vlan_map *vl = reinterpret_cast(GetVal(ikey)); + if (vl != NULL) { + pfcdrv_val_vlan_map *val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map_t))); + + memcpy(&val->vm, vl, sizeof(val_vlan_map_t)); + val->valid[0] = UNC_VF_VALID; + val->valid[1] = UNC_VF_INVALID; + (queryckval->get_cfg_val())->SetVal(IpctSt::kIpcStPfcdrvValVlanMap, val); + filter_vlanid = true; + } + + uint32_t found_count = 0, skip_count = 0, tmp_count = 0, result_count =0; + upll_keytype_datatype_t dt_type = header->datatype; + + do { + ConfigKeyVal *new_ckv = NULL; + result_code = ReadInfoFromDB(header, queryckval, dmi, &ctrlr_dom); + if (result_code == UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadInfoFromDB returns SUCCESS: %s \n", + queryckval->ToStrAll().c_str()); + if (header->rep_count > 0) { + tmp_count = header->rep_count; + skip_count = 0; + new_ckv = NULL; + ConfigKeyVal *tmp = queryckval, *tmp_old = NULL; + while (tmp) { + uint8_t vlanmap_flag = 0; + GET_USER_DATA_FLAGS(tmp, vlanmap_flag); + uint8_t is_user_conf = false; + is_user_conf = (USER_VLANMAP_FLAG & vlanmap_flag); + if (!is_user_conf) { + ConfigKeyVal *ck_tmp =tmp; + skip_count++; + tmp = tmp->get_next_cfg_key_val(); + if (tmp == NULL) { + DELETE_IF_NOT_NULL(new_ckv); + if (filter_vlanid == true) { + result_code = DupConfigKeyVal(new_ckv, ck_tmp, MAINTBL); + } else { + result_code = GetChildConfigKey(new_ckv, ck_tmp); + } + if (result_code != UPLL_RC_SUCCESS || new_ckv == NULL) { + UPLL_LOG_ERROR("Error while GetChildConfigKey or " + "DupConfigKeyVal. filter_vlanid: %d", + filter_vlanid); + DELETE_IF_NOT_NULL(queryckval); + return UPLL_RC_ERR_GENERIC; + } + } + if (ck_tmp == queryckval) { + queryckval = ck_tmp->get_next_cfg_key_val(); + } else { + tmp_old->set_next_cfg_key_val(ck_tmp->get_next_cfg_key_val()); + } + ck_tmp->set_next_cfg_key_val(NULL); + DELETE_IF_NOT_NULL(ck_tmp); + continue; + + } else { + tmp_old =tmp; + tmp = tmp->get_next_cfg_key_val(); + if (tmp == NULL) { + DELETE_IF_NOT_NULL(new_ckv); + if (filter_vlanid == true) { + result_code = DupConfigKeyVal(new_ckv, tmp_old, MAINTBL); + } else { + result_code = GetChildConfigKey(new_ckv, tmp_old); + } + if (result_code != UPLL_RC_SUCCESS || new_ckv == NULL) { + UPLL_LOG_ERROR("Error while GetChildConfigKey or " + "DupConfigKeyVal. filter_vlanid: %d", + filter_vlanid); + DELETE_IF_NOT_NULL(queryckval); + return UPLL_RC_ERR_GENERIC; + } + } + } + } + found_count = (tmp_count-skip_count); + if (found_count > 0) { + // Collect the data into result_ckv. + if (result_ckv == NULL) { + result_ckv = queryckval; + } else { + result_ckv->AppendCfgKeyVal(queryckval); + } + result_count += (queryckval->size()); + } + if (found_count < tmp_count) { + queryckval = new_ckv; + if (ResetDataForSibling( + reinterpret_cast(queryckval->get_key()), + (uudst::vbridge_vlanmap::kVbrVlanMapIndex)3) + == false) {} + header->operation = UNC_OP_READ_SIBLING; + header->rep_count = tmp_count - result_count; + + // Preparing Child Key data for next Sibling Iteration + UPLL_LOG_TRACE("Next Query After Reset: %s", + (queryckval->ToStrAll()).c_str()); + continue; + } else { + DELETE_IF_NOT_NULL(new_ckv); + break; + } + // Used in ReadConfigDB in each Iteration + } + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(queryckval); + break; + } else { + UPLL_LOG_DEBUG("Error in Reading DB"); + DELETE_IF_NOT_NULL(queryckval); + return result_code; + } + } while (1); + if (result_ckv != NULL) { + ikey->ResetWith(result_ckv); + DELETE_IF_NOT_NULL(result_ckv); + header->rep_count = ikey->size(); + } + header->operation = UNC_OP_READ_SIBLING_BEGIN; + header->datatype = dt_type; + + /* Convert the valstruct to VTN service val*/ + upll_rc_t rc = AdaptValToVtnService(ikey); + if (rc != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", rc); + return UPLL_RC_ERR_GENERIC; + } + + if (header->rep_count > 0) { + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) + ? UPLL_RC_SUCCESS : result_code; + } else { + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + return result_code; +} + +upll_rc_t VlanMapMoMgr::ReadSiblingCount(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + + result_code = ValidateMessage(header, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; + } + ConfigKeyVal *queryckval = NULL; + result_code = DupConfigKeyVal(queryckval, ikey, MAINTBL); + if (result_code != UPLL_RC_SUCCESS || queryckval == NULL) { + UPLL_LOG_INFO("Error while DupConfigKeyVal"); + DELETE_IF_NOT_NULL(queryckval); + return UPLL_RC_ERR_GENERIC; + } + /* Convert user val strcut to pfc_drv val struct */ + val_vlan_map *vl = reinterpret_cast(GetVal(ikey)); + if (vl != NULL) { + pfcdrv_val_vlan_map *val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map_t))); + + memcpy(&val->vm, vl, sizeof(val_vlan_map_t)); + val->valid[0] = UNC_VF_VALID; + val->valid[1] = UNC_VF_INVALID; + (ikey->get_cfg_val())->SetVal(IpctSt::kIpcStPfcdrvValVlanMap, val); + } + header->operation = UNC_OP_READ_SIBLING_BEGIN; + + uint32_t found_count = 0; + result_code = ReadInfoFromDB(header, ikey, dmi, &ctrlr_dom); + if (result_code == UPLL_RC_SUCCESS) { + if (header->rep_count > 0) { + ConfigKeyVal *tmp = ikey; + while (tmp) { + uint8_t vlanmap_flag = 0; + GET_USER_DATA_FLAGS(tmp, vlanmap_flag); + uint8_t is_user_conf = false; + is_user_conf = (USER_VLANMAP_FLAG & vlanmap_flag); + if (is_user_conf) { + found_count++; + } + tmp = tmp->get_next_cfg_key_val(); + } + } + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + } + header->rep_count = found_count; + header->operation = UNC_OP_READ_SIBLING_COUNT; + ikey->ResetWith(queryckval); + + /* Read sib count should return val_struct with count value */ + uint32_t *sib_count = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(uint32_t))); + *sib_count = found_count; + ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStUint32, sib_count)); + + DELETE_IF_NOT_NULL(queryckval); + return result_code; +} +// Overridden Read Sibling from momgr_impl. +// This keytype contains 2 child keys and needs special handling. upll_rc_t VlanMapMoMgr::ReadSiblingMo(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - bool begin, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; uint32_t result_count = 0; if (begin == true) { - return (MoMgrImpl::ReadSiblingMo(header, ikey, begin, dmi)); - + /* VlanmapOnBoundary: Over-ride MoMgrImpl::ReadSiblingBeginMo in Vlanmap */ + return (ReadSiblingBeginMo(header, ikey, begin, dmi)); } - // Fix it: This function is for READ_SIBLING + // Fix it: This function is for READ_SIBLING if ((header->operation != UNC_OP_READ_SIBLING_BEGIN) && - (header->operation != UNC_OP_READ_SIBLING)) { + (header->operation != UNC_OP_READ_SIBLING)) { UPLL_LOG_DEBUG("Operation type is not Sibling begin/Sibling"); return UPLL_RC_ERR_GENERIC; } @@ -900,8 +1281,8 @@ upll_rc_t VlanMapMoMgr::ReadSiblingMo(IpcReqRespHeader *header, } MoMgrTables tbl = MAINTBL; - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; switch (header->datatype) { case UPLL_DT_IMPORT: @@ -910,108 +1291,239 @@ upll_rc_t VlanMapMoMgr::ReadSiblingMo(IpcReqRespHeader *header, case UPLL_DT_RUNNING: case UPLL_DT_STARTUP: case UPLL_DT_STATE: - { - // To read the record(s) from DB - upll_keytype_datatype_t dt_type = (header->datatype == UPLL_DT_STATE) ? - UPLL_DT_RUNNING : header->datatype; - - ConfigKeyVal *result_ckv = NULL; - // Used in ReadConfigDB in each Iteration - ConfigKeyVal *queryckval = NULL; - result_code = DupConfigKeyVal(queryckval, ikey, MAINTBL); - if (result_code != UPLL_RC_SUCCESS || queryckval == NULL) { - UPLL_LOG_INFO("Error while DupConfigKeyVal"); - return UPLL_RC_ERR_GENERIC; - } + { + // To read the record(s) from DB + upll_keytype_datatype_t dt_type = (header->datatype == UPLL_DT_STATE) ? + UPLL_DT_RUNNING : header->datatype; + /* ckv that contains final read entries, given to ikey */ + ConfigKeyVal *result_ckv = NULL; + // Used in ReadConfigDB in each Iteration + ConfigKeyVal *queryckval = NULL; + result_code = DupConfigKeyVal(queryckval, ikey, MAINTBL); + if (result_code != UPLL_RC_SUCCESS || queryckval == NULL) { + UPLL_LOG_INFO("Error while DupConfigKeyVal"); + DELETE_IF_NOT_NULL(queryckval); + return UPLL_RC_ERR_GENERIC; + } - for (uint16_t childKeyIndex = uuds::TableNumPkCols( - uudst::kDbiVbrVlanMapTbl) - 1; - childKeyIndex >= uuds::TableNumPkCols( - uudst::kDbiVbrVlanMapTbl) - kVbrVlanMapNumChildKey; - childKeyIndex--) { + /* Used from 2nd read operations if expected entries are not read */ + ConfigKeyVal *new_ckv = queryckval; + /* when user specified vlanid in the val struct, set to true */ + bool filter_vlanid = false; - // For skipping invalid inputs - do not delete - if (IsValidKey(queryckval->get_key(), childKeyIndex) == false) - continue; + /* Convert user val strcut to pfc_drv val struct */ + val_vlan_map *vl = reinterpret_cast(GetVal(ikey)); + if (vl != NULL) { + pfcdrv_val_vlan_map *val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map_t))); - uint32_t tmp_count = (header->rep_count - result_count); - result_code = ReadConfigDB(queryckval, dt_type, header->operation, - dbop, tmp_count, dmi, tbl); + memcpy(&val->vm, vl, sizeof(val_vlan_map_t)); + val->valid[0] = UNC_VF_VALID; + val->valid[1] = UNC_VF_INVALID; + (queryckval->get_cfg_val())->SetVal(IpctSt::kIpcStPfcdrvValVlanMap, + val); + filter_vlanid = true; + } + /* skip_count: No of entries skipped in an iter (not user configured) + * found_count: No of entries found in an iter (user configured) */ + uint8_t skip_count =0, found_count = 0; + + /* Expected entries to be read from db for every iteration */ + uint32_t expect_count = header->rep_count; + /* tmp_childKeyIndex is used in ResetDataForSibling */ + uint16_t tmp_childKeyIndex = uuds::TableNumPkCols( + uudst::kDbiVbrVlanMapTbl) - 1; + for (uint16_t childKeyIndex = uuds::TableNumPkCols( + uudst::kDbiVbrVlanMapTbl) - 1; + childKeyIndex >= uuds::TableNumPkCols( + uudst::kDbiVbrVlanMapTbl) - kVbrVlanMapNumChildKey; + ) { + do { + // For skipping invalid inputs - do not delete + // When log_portid_valid is invalid value, then + // break and continue sibling opern with log_portid + if (IsValidKey(queryckval->get_key(), childKeyIndex) == false) { + break; + } + + uint32_t db_read_count = (header->rep_count - result_count); + result_code = ReadConfigDB(queryckval, dt_type, header->operation, + dbop, db_read_count, dmi, tbl); + + if (result_code == UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB returns SUCCESS: %s \n", + queryckval->ToStrAll().c_str()); + skip_count = 0; + new_ckv = NULL; + ConfigKeyVal *tmp = queryckval, *tmp_old = NULL; + while (tmp) { + uint8_t vlanmap_flag = 0; + GET_USER_DATA_FLAGS(tmp, vlanmap_flag); + uint8_t is_user_conf = false; + is_user_conf = (USER_VLANMAP_FLAG & vlanmap_flag); + /* If entry is not user configure. i.e boundary configured */ + if (!is_user_conf) { + ConfigKeyVal *ck_tmp =tmp; + skip_count++; + /* Move to next ckv */ + tmp = tmp->get_next_cfg_key_val(); + /* If next ckv is not present & there are skipped entries + * do readconfigdb again with last received ckv */ + if (tmp == NULL) { + DELETE_IF_NOT_NULL(new_ckv); + if (filter_vlanid == true) { + result_code = DupConfigKeyVal(new_ckv, ck_tmp, MAINTBL); + } else { + result_code = GetChildConfigKey(new_ckv, ck_tmp); + } + if (result_code != UPLL_RC_SUCCESS || new_ckv == NULL) { + UPLL_LOG_DEBUG("Error while GetChildConfigKey or " + "DupConfigKeyVal. filter_vlanid: %d", + filter_vlanid); + DELETE_IF_NOT_NULL(queryckval); + return UPLL_RC_ERR_GENERIC; + } + } + // if skipped element is 1st element, queryckval should + // point to next ckv + if (ck_tmp == queryckval) { + queryckval = ck_tmp->get_next_cfg_key_val(); + ck_tmp->set_next_cfg_key_val(NULL); + } else { + // If any intermediate is skipped, removed the same + // in the list and update tmp_old's next ckv + tmp_old->set_next_cfg_key_val( + ck_tmp->get_next_cfg_key_val()); + ck_tmp->set_next_cfg_key_val(NULL); + } + DELETE_IF_NOT_NULL(ck_tmp); + continue; + + } else { + tmp_old =tmp; + tmp = tmp->get_next_cfg_key_val(); + if (tmp == NULL && (expect_count != + (db_read_count - skip_count))) { + DELETE_IF_NOT_NULL(new_ckv); + if (filter_vlanid == true) { + result_code = DupConfigKeyVal(new_ckv, tmp_old, MAINTBL); + } else { + result_code = GetChildConfigKey(new_ckv, tmp_old); + } + if (result_code != UPLL_RC_SUCCESS || new_ckv == NULL) { + UPLL_LOG_DEBUG("Error while GetChildConfigKey or " + "DupConfigKeyVal. filter_vlanid: %d", + filter_vlanid); + return UPLL_RC_ERR_GENERIC; + } + } + } + } + found_count = (db_read_count-skip_count); + if (found_count > 0) { + // Collect the data into result_ckv. + if (result_ckv == NULL) { + result_ckv = queryckval; + } else { + result_ckv->AppendCfgKeyVal(queryckval); + } + result_count += (queryckval->size()); + queryckval = NULL; + } + if (found_count < expect_count) { + queryckval = new_ckv; + // Preparing Child Key data for next Sibling Iteration + // log_portid_valid will be set to INVALID and further + // rd_sibling query will be done with > log_portid + if (queryckval && (ResetDataForSibling( + reinterpret_cast + (queryckval->get_key()), + (uudst::vbridge_vlanmap::kVbrVlanMapIndex) + tmp_childKeyIndex) + == false)) { + UPLL_LOG_DEBUG("Data Not Reset for the index(%d)", + childKeyIndex); + delete queryckval; + return UPLL_RC_ERR_GENERIC; + } + + UPLL_LOG_TRACE("Next Query After Reset: %s", + (queryckval->ToStrAll()).c_str()); + expect_count = expect_count - found_count; + continue; + } else { + DELETE_IF_NOT_NULL(new_ckv); + break; + } + // Used in ReadConfigDB in each Iteration + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + break; + // use queryckval in the next iteration; + } else { + UPLL_LOG_ERROR("Error while ReadConfigDB"); + DELETE_IF_NOT_NULL(queryckval); + /* Convert the val struct to VTN service */ + upll_rc_t rc = AdaptValToVtnService(ikey); + if (rc != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", + rc); + return UPLL_RC_ERR_GENERIC; + } + return result_code; + } + } while (1); // end of do while - if (result_code == UPLL_RC_SUCCESS) { - // Collect the data into result_ckv. - if (result_ckv == NULL) { - result_ckv = queryckval; - } else { - result_ckv->AppendCfgKeyVal(queryckval); // TODO perf - } - result_count += queryckval->size(); - queryckval = NULL; - if (result_count >= header->rep_count) { - break; // break the for loop + break; // break the for loop } - - // Used in ReadConfigDB in each Iteration - result_code = DupConfigKeyVal(queryckval, ikey, MAINTBL); - if (result_code != UPLL_RC_SUCCESS || queryckval == NULL) { - UPLL_LOG_INFO("Error while DupConfigKeyVal"); + // Preparing Child Key data for next Sibling Iteration + queryckval = new_ckv; // added for cnt>max + if (queryckval && (ResetDataForSibling( + reinterpret_cast(queryckval->get_key()), + (uudst::vbridge_vlanmap::kVbrVlanMapIndex)childKeyIndex) + == false)) { + UPLL_LOG_DEBUG("Data Not Reset for the index(%d)", childKeyIndex); + DELETE_IF_NOT_NULL(queryckval); return UPLL_RC_ERR_GENERIC; } - } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - // use queryckval in the next iteration; - } else { - UPLL_LOG_INFO("Error while ReadConfigDB"); - delete queryckval; - return result_code; - } - - // Preparing Child Key data for next Sibling Iteration - if (ResetDataForSibling( - reinterpret_cast(queryckval->get_key()), - (uudst::vbridge_vlanmap::kVbrVlanMapIndex)childKeyIndex) - == false) { - UPLL_LOG_DEBUG("Data Not Reset for the index(%d)", childKeyIndex); - delete queryckval; - return UPLL_RC_ERR_GENERIC; + tmp_childKeyIndex = childKeyIndex; + childKeyIndex--; + UPLL_LOG_TRACE("Next Query After Reset: %s", + (queryckval->ToStrAll()).c_str()); + } // for + DELETE_IF_NOT_NULL(queryckval); + header->rep_count = result_count; + if (result_ckv) { + ikey->ResetWith(result_ckv); + DELETE_IF_NOT_NULL(result_ckv); } - UPLL_LOG_TRACE("Next Query After Reset: %s", - (queryckval->ToStrAll()).c_str()); - } // for - DELETE_IF_NOT_NULL(queryckval); - header->rep_count = result_count; - if (result_ckv) { - ikey->ResetWith(result_ckv); - delete result_ckv; - } - break; - } // case + break; + } // case default: return UPLL_RC_ERR_GENERIC; } + upll_rc_t rc = AdaptValToVtnService(ikey); + if (rc != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", rc); + return UPLL_RC_ERR_GENERIC; + } + if (header->rep_count > 0) { result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; - if (result_code == UPLL_RC_SUCCESS) { - result_code = AdaptValToVtnService(ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", - result_code); - return UPLL_RC_ERR_GENERIC; - } - } + ? UPLL_RC_SUCCESS : result_code; } else { return UPLL_RC_ERR_NO_SUCH_INSTANCE; } return UPLL_RC_SUCCESS; -} // VlanMapMoMgr::ReadSiblingMo +} // VlanMapMoMgr::ReadSiblingMo -// To reset the data available in index to empty -// Currently implemented only for child index -bool VlanMapMoMgr::ResetDataForSibling(key_vlan_map *key_vmap, +// To reset the data available in index to empty +// Currently implemented only for child index +bool VlanMapMoMgr::ResetDataForSibling( + key_vlan_map *key_vmap, uudst::vbridge_vlanmap::kVbrVlanMapIndex index) { - switch(index) { + switch (index) { case uudst::vbridge_vlanmap::kDbiLogicalPortId: memset(key_vmap->logical_port_id, 0, sizeof(key_vmap->logical_port_id)); case uudst::vbridge_vlanmap::kDbiLogicalPortIdValid: @@ -1025,6 +1537,759 @@ bool VlanMapMoMgr::ResetDataForSibling(key_vlan_map *key_vmap, return true; } -} // namespace kt_momgr -} // namespace upll -} // namespace unc + +upll_rc_t VlanMapMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey) { + UPLL_LOG_ERROR("Returning error \n"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ck_vn = NULL; + result_code = GetParentConfigKey(ck_vn, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; + } + VnodeMoMgr *mgr = reinterpret_cast + (const_cast + (GetMoManager(ck_vn->get_key_type()))); + if (!mgr) { + UPLL_LOG_DEBUG("Returning error \n"); + delete ck_vn; + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; + result_code = mgr->ReadConfigDB(ck_vn, UPLL_DT_STATE, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + delete ck_vn; + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS:result_code; + return result_code; + } + val_db_vbr_st *valst = reinterpret_cast(GetStateVal(ck_vn)); + if (!valst) { + UPLL_LOG_DEBUG("Returning error\n"); + delete ck_vn; + return UPLL_RC_ERR_GENERIC; + } + if ((valst->down_count == 0) && (valst->fault_count == 0)) { + state_notification notification = kAdminStatusEnabled; + result_code = mgr->UpdateOperStatus(ck_vn, dmi, notification, true, true); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + } + } + delete ck_vn; + return result_code; +} + +upll_rc_t VlanMapMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + if (!ikey) { + UPLL_LOG_DEBUG("Invalid ikey"); + return UPLL_RC_ERR_GENERIC; + } + while (ikey) { + ConfigVal *cval = ikey->get_cfg_val(); + while (cval) { + if (IpctSt::kIpcStPfcdrvValVlanMap == cval->get_st_num()) { + val_vlan_map_t *vlanmap_val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vlan_map_t))); + pfcdrv_val_vlan_map_t *drv_val = + reinterpret_cast(cval->get_val()); + memcpy(vlanmap_val, &(drv_val->vm), sizeof(val_vlan_map_t)); + cval->SetVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + /* do not display portmap info if not configured (for boundary)*/ + uint8_t vlink_flag = 0; + GET_USER_DATA_FLAGS(ikey, vlink_flag); + UPLL_LOG_DEBUG("Interface type %d", vlink_flag); + } + cval = cval->get_next_cfg_val(); + } + ikey = ikey->get_next_cfg_key_val(); + } + + return UPLL_RC_SUCCESS; +} + +/* This function is over-ridden from momgr_impl.cc */ +upll_rc_t VlanMapMoMgr::UpdateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + + upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + if (NULL == ikey || NULL == req || !(ikey->get_key())) { + UPLL_LOG_ERROR("Given Input is Empty"); + return UPLL_RC_ERR_GENERIC; + } + + UPLL_LOG_INFO("UpdateMo for %d", ikey->get_key_type()); + /* Validates received request */ + result_code = ValidateMessage(req, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Validation Message is Failed "); + return result_code; + } + + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = ctrlr_dom.domain = NULL; + ConfigKeyVal *temp_ck = NULL; + + result_code = GetChildConfigKey(temp_ck, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Error in retrieving the Child ConfigKeyVal"); + if (temp_ck) + delete temp_ck; + return result_code; + } + + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr| kOpInOutDomain}; + /* Reads vlanmap info based on recieved ikey->key_ */ + result_code = ReadConfigDB(temp_ck, req->datatype, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + delete temp_ck; + return result_code; + } + GET_USER_DATA_CTRLR_DOMAIN(temp_ck, ctrlr_dom); + SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + uint8_t flags = 0; + GET_USER_DATA_FLAGS(temp_ck, flags); + + pfcdrv_val_vlan_map_t *tval = reinterpret_cast + (GetVal(temp_ck)); + val_vlan_map_t *ival = NULL; + if ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVlanMap) { + ival = reinterpret_cast + (GetVal(ikey)); + } else { + pfcdrv_val_vlan_map_t *drv_val = reinterpret_cast + (GetVal(ikey)); + ival = &(drv_val->vm); + } + + UPLL_LOG_TRACE("Vlanmap bdry_ref_count = %u", tval->bdry_ref_count); + /* Verifies whether the recived vlanmap is refered with boundary vlink */ + if ((tval->bdry_ref_count > 1) || + ((tval->bdry_ref_count > 0) && (flags & USER_VLANMAP_FLAG))) { // TO DO + if (tval->vm.vlan_id != ival->vlan_id) { + UPLL_LOG_DEBUG("Cannot update vlan-id more than one vlan map refered"); + delete temp_ck; + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } + + if (tval->vm.vlan_id == ival->vlan_id) { + UPLL_LOG_ERROR("Already same vlan-id is there in vlanmap entry." + "No need to update"); + delete temp_ck; + return UPLL_RC_SUCCESS; + } + + result_code = ValidateCapability( + req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Validate Capability is Failed. Error_code : %d", + result_code); + delete temp_ck; + return result_code; + } + + delete temp_ck; + + ConfigKeyVal *okey = NULL; + result_code = DupConfigKeyVal(okey, ikey, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG(" DupConfigKeyVal Failed %d", result_code); + return result_code; + } + + pfcdrv_val_vlan_map_t *val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map_t))); + + void *valvlanmap = GetVal(ikey); + if ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVlanMap) + memcpy(&(val->vm), valvlanmap, sizeof(val_vlan_map_t)); + else + memcpy(val, valvlanmap, sizeof(pfcdrv_val_vlan_map_t)); + (okey->get_cfg_val())->SetVal(IpctSt::kIpcStPfcdrvValVlanMap, val); + + // ValidateAttribute needs Controller Domain + result_code = ValidateAttribute(okey, dmi, req); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Validate Attribute is Failed"); + return result_code; + } + DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; + result_code = UpdateConfigDB(okey, req->datatype, UNC_OP_UPDATE, + dmi, &dbop1, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Updation Failure in DB : %d", result_code); + return result_code; + } + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_TRACE("Updated Done Successfully %d", result_code); + return result_code; +} + +upll_rc_t VlanMapMoMgr::DeleteMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey || !req || !(ikey->get_key())) { + UPLL_LOG_ERROR("Given Input is Empty") + return UPLL_RC_ERR_GENERIC; + } + + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Validate Message is Failed %d ", result_code); + return result_code; + } + + ConfigKeyVal *dup_ckv = NULL; + result_code = GetChildConfigKey(dup_ckv, ikey); + + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + result_code = ReadConfigDB(dup_ckv, req->datatype, UNC_OP_READ, dbop, + dmi, MAINTBL); + UPLL_LOG_TRACE("Read config DB result code = %u", result_code); + + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_ERROR("Record Doesn't Exists in DB "); + delete dup_ckv; + return result_code; + } + + pfcdrv_val_vlan_map_t *drv_val = reinterpret_cast + (GetVal(dup_ckv)); + uint8_t flags = 0; + GET_USER_DATA_FLAGS(dup_ckv, flags); + + UPLL_LOG_TRACE("Vlanmap flag = %u. bdry_ref_count = %u", flags, + drv_val->bdry_ref_count); + if ((drv_val->bdry_ref_count > 0) && (flags & USER_VLANMAP_FLAG)) { + flags &= ~USER_VLANMAP_FLAG; + SET_USER_DATA_FLAGS(dup_ckv, flags); + UPLL_LOG_TRACE("Flag to be update = %u", flags); + + DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; + result_code = UpdateConfigDB(dup_ckv, req->datatype, UNC_OP_UPDATE, + dmi, &dbop1, MAINTBL); + delete dup_ckv; + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Update vlanmap flag is failed"); + return result_code; + } + return UPLL_RC_SUCCESS; + } + + + void *valvlanmap = GetVal(ikey); + if (ikey->get_cfg_val()) { + pfcdrv_val_vlan_map_t *val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map_t))); + if ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStPfcdrvValVlanMap) { + memcpy(val, valvlanmap, sizeof(pfcdrv_val_vlan_map_t)); + } else { + memcpy(&(val->vm), valvlanmap, sizeof(val_vlan_map_t)); + } + (dup_ckv->get_cfg_val())->SetVal(IpctSt::kIpcStPfcdrvValVlanMap, val); + } else { + dup_ckv->DeleteCfgVal(); + } + + result_code = DeleteCandidateMo(req, dup_ckv, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Returning Error - %d", result_code); + } + DELETE_IF_NOT_NULL(dup_ckv); + return result_code; +} + +upll_rc_t VlanMapMoMgr::CheckIfFfPmConfigured(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckv = NULL; + + /* Verifies vbrif_flowfilter tbl */ + VbrIfFlowFilterMoMgr *vbrif_ff_mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VBRIF_FLOWFILTER))); + if (!vbrif_ff_mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + return UPLL_RC_ERR_GENERIC; + } + + result_code = vbrif_ff_mgr->GetChildConfigKey(ckv, ikey); + if (result_code != UPLL_RC_SUCCESS) return UPLL_RC_ERR_GENERIC; + + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; + /*Checks the vbrif_flowfilter table*/ + result_code = vbrif_ff_mgr->ReadConfigDB(ckv, req->datatype, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_ERROR("Failed to read vbrif flowfilter info from DB"); + delete ckv; + return result_code; + } + + if (result_code == UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("SD or SW Boundary vlink cannot be configured." + "Flowfilter is present"); + delete ckv; + return UPLL_RC_ERR_CFG_SEMANTIC; + } + delete ckv; + ckv = NULL; + + /* Validates vbrif_policingmap tbl */ + VbrIfPolicingMapMoMgr *vbrif_pm_mgr = + reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VBRIF_POLICINGMAP))); + if (!vbrif_pm_mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + return UPLL_RC_ERR_GENERIC; + } + + result_code = vbrif_pm_mgr->GetChildConfigKey(ckv, ikey); + if (result_code != UPLL_RC_SUCCESS) return UPLL_RC_ERR_GENERIC; + + /*Checks the vbrif_flowfilter table*/ + result_code = vbrif_pm_mgr->ReadConfigDB(ckv, req->datatype, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_ERROR("Failed to read vbrif policingmap info from DB"); + delete ckv; + return result_code; + } + + if (result_code == UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("SD or SW Boundary vlink cannot be configured." + "Policingmap is present"); + delete ckv; + return UPLL_RC_ERR_CFG_SEMANTIC; + } + delete ckv; + ckv = NULL; + return UPLL_RC_SUCCESS; +} + +upll_rc_t VlanMapMoMgr::BoundaryVlanmapReq(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + ConfigKeyVal *db_vlink, + ConfigKeyVal *vlanmap_ckv, + DalDmlIntf *dmi) { + uint8_t flags = 0; + upll_rc_t result_code = UPLL_RC_SUCCESS; + + if (!req || !ikey || !db_vlink || !vlanmap_ckv || !dmi) { + UPLL_LOG_INFO("Cannot perform this request" + "due to insufficient parameters"); + return UPLL_RC_ERR_GENERIC; + } + + val_vlink_t *ival = reinterpret_cast(GetVal(ikey)); + + val_vlink_t *tval = reinterpret_cast(GetVal(db_vlink)); + if (!ival || !tval) { + UPLL_LOG_DEBUG("vlink val structure not present"); + return UPLL_RC_ERR_GENERIC; + } + + /* Get the vnode position */ + GET_USER_DATA_FLAGS(db_vlink->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + UPLL_LOG_TRACE("Vnode position flag = %u", flags); + + VlinkMoMgr *vlink_mgr = reinterpret_cast( + const_cast(GetMoManager(UNC_KT_VLINK))); + /* ck_boundary ConfigKeyVal contains logical port id info */ + if (!vlink_mgr->ck_boundary && !GetVal(vlink_mgr->ck_boundary)) { + UPLL_LOG_DEBUG("Boundary details is not there"); + return UPLL_RC_ERR_GENERIC; + } + + val_boundary_t *boundary_val = reinterpret_cast( + GetVal(vlink_mgr->ck_boundary)); + key_vlan_map_t *vlanmap_key = reinterpret_cast( + vlanmap_ckv->get_key()); + + uint8_t *logical_port_id = NULL; + controller_domain vlanmap_ctrlr_dom; + vlanmap_ctrlr_dom.ctrlr = vlanmap_ctrlr_dom.domain = NULL; + + /* Verifies controller_name and domain name and gets + * vlanmap logical_port_id */ + GET_USER_DATA_CTRLR_DOMAIN(vlanmap_ckv, vlanmap_ctrlr_dom); + UPLL_LOG_TRACE("ctrlr_name = %s domain_name = %s", vlanmap_ctrlr_dom.ctrlr, + vlanmap_ctrlr_dom.domain); + + /* If controller or domain is NULL, return error */ + if (!vlanmap_ctrlr_dom.ctrlr || !vlanmap_ctrlr_dom.domain) { + UPLL_LOG_ERROR("Controller_name or domain_name is NULL"); + return UPLL_RC_ERR_GENERIC; + } + + if ((!strcmp(reinterpret_cast(vlanmap_ctrlr_dom.ctrlr), + reinterpret_cast(boundary_val->controller_name1))) && + (!strcmp(reinterpret_cast(vlanmap_ctrlr_dom.domain), + reinterpret_cast(boundary_val->domain_name1)))) { + logical_port_id = boundary_val->logical_port_id1; + } else if ((!strcmp(reinterpret_cast(vlanmap_ctrlr_dom.ctrlr), + reinterpret_cast + (boundary_val->controller_name2))) && + (!strcmp(reinterpret_cast(vlanmap_ctrlr_dom.domain), + reinterpret_cast(boundary_val->domain_name2)))) { + logical_port_id = boundary_val->logical_port_id2; + } else { + UPLL_LOG_ERROR(" Controller and domain match not found"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + + /* Populate the logcial port id before updating vlanmap tbl */ + if (logical_port_id) { + uuu::upll_strncpy(vlanmap_key->logical_port_id, logical_port_id, + (kMaxLenLogicalPortId + 1)); + vlanmap_key->logical_port_id_valid = PFC_TRUE; + } + + pfcdrv_val_vlan_map_t *val_vlanmap = NULL; + /*Checks the existance of vlanmap entry in vlanmap table */ + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + result_code = ReadConfigDB(vlanmap_ckv, req->datatype, UNC_OP_READ, dbop, + dmi, MAINTBL); + /* For update config DB changed to kOpNotRead */ + dbop.readop = kOpNotRead; + + UPLL_LOG_TRACE("Read config DB result code = %u", result_code); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Failed to read vlanmap info from DB"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + + /* Boundary vlanmap create */ + if ((tval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_INVALID) && + ival->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID) { + UPLL_LOG_TRACE("Boundary Vlanmap Create"); + req->operation = UNC_OP_CREATE; + + if ((ival->valid[UPLL_IDX_VLAN_ID_VLNK] != UNC_VF_VALID) || + (ival->vlan_id == 0xFFFF)) { + UPLL_LOG_ERROR("vlan-id is mandatory when boundary port is SW or SD"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + + val_vlanmap = reinterpret_cast + (GetVal(vlanmap_ckv)); + + if (!val_vlanmap) { + return UPLL_RC_ERR_GENERIC; + } + + /* Vlanmap entry is there in DB */ + if (result_code == UPLL_RC_SUCCESS) { + /* vlan-id in existing entry is different from vlan-id in the request */ + if (val_vlanmap->vm.vlan_id != ival->vlan_id) { + UPLL_LOG_ERROR("vlan-id cannot be modified if vlanmap is " + "referenced by user or boundary"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + /* Increment ref_count */ + UPLL_LOG_TRACE("Old vlanmap bdry_ref_count:%u", + val_vlanmap->bdry_ref_count); + + /* Already user configured vlan_map exists and its + * not referred to any boundary vlink */ + if (val_vlanmap->bdry_ref_count == 0) { + /* Verifies flow filter or policing map configured in the same + vbridge interface */ + result_code = CheckIfFfPmConfigured(req, db_vlink, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Flow-filter or policing-map configured on " + "vBridge interface of boundary vlanmap"); + return result_code; + } + } + val_vlanmap->bdry_ref_count++; + val_vlanmap->valid[PFCDRV_IDX_BDRY_REF_COUNT] = UNC_VF_VALID; + + /* Set boundary configured bit in vlan_map flag*/ + GET_USER_DATA_FLAGS(vlanmap_ckv, flags); + flags |= BOUNDARY_VLANMAP_FLAG; + SET_USER_DATA_FLAGS(vlanmap_ckv, flags); + + result_code = UpdateConfigDB(vlanmap_ckv, req->datatype, UNC_OP_UPDATE, + dmi, &dbop, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("bdry_ref_count update failed"); + return result_code; + } + return result_code; + } + val_vlanmap->vm.vlan_id = ival->vlan_id; + val_vlanmap->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + val_vlanmap->valid[PFCDRV_IDX_VAL_VLAN_MAP] = UNC_VF_VALID; + + val_vlanmap->bdry_ref_count = 1; + val_vlanmap->valid[PFCDRV_IDX_BDRY_REF_COUNT] = UNC_VF_VALID; + + /*Creates boundary vlanmap under vbridge with bdry_ref_count as 1*/ + SET_USER_DATA_FLAGS(vlanmap_ckv, BOUNDARY_VLANMAP_FLAG); + + UPLL_LOG_TRACE("%s", vlanmap_ckv->ToStrAll().c_str()); + UPLL_LOG_TRACE("%s", db_vlink->ToStrAll().c_str()); + /* Verifies flow filter or policing map configured in the same + vbridge interface */ + result_code = CheckIfFfPmConfigured(req, db_vlink, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Flow-filter or policing-map configured on " + "vBridge interface of boundary vlanmap"); + return result_code; + } + + /* Creates vlanmap entry in vlanmap table */ + result_code = VnodeChildMoMgr::CreateCandidateMo(req, vlanmap_ckv, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Boundary vlanmap creation failed"); + return result_code; + } + return result_code; + } + + /* Boundary vlink vlanmap update */ + if ((tval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID) && + (ival->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID)) { + val_vlanmap = reinterpret_cast + (GetVal(vlanmap_ckv)); + if (result_code == UPLL_RC_SUCCESS) { + GET_USER_DATA_FLAGS(vlanmap_ckv, flags); + + UPLL_LOG_TRACE("vlanmap flags = %u. vlanmap bdry_ref_count = %u", + flags, val_vlanmap->bdry_ref_count); + /* Update of boundary vlanmap vlan-id is not possible if same + vlan map is refered with another vlink or user configured vlanmap */ + if ((val_vlanmap->vm.vlan_id != ival->vlan_id) && + ((flags & USER_VLANMAP_FLAG) || val_vlanmap->bdry_ref_count > 1)) { + UPLL_LOG_ERROR("vlan-id cannot be modified if vlanmap is " + "referenced by user or boundary"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } + + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_ERROR("No vlanmap entry exists for boundary vlanmap update"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + + /* Updates boundary vlanmap vlan-id */ + val_vlanmap->vm.vlan_id = ival->vlan_id; + val_vlanmap->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + req->operation = UNC_OP_UPDATE; + + UPLL_LOG_TRACE("%s", vlanmap_ckv->ToStrAll().c_str()); + result_code = UpdateMo(req, vlanmap_ckv, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Boundary vlanmap update failed. error:%u", + result_code); + return result_code; + } + + return result_code; + } + + /* Boundary vlanmap delete */ + if ((ival->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID_NO_VALUE) && + (tval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID)) { + req->operation = UNC_OP_DELETE; + + val_vlanmap = + reinterpret_cast(GetVal(vlanmap_ckv)); + + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_ERROR("Cannot update boundary vlan-id. " + "No entry in vlanmap table"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + + if (result_code == UPLL_RC_SUCCESS) { + GET_USER_DATA_FLAGS(vlanmap_ckv, flags); + + /* If vlan-id in the delete request is different from + * the existing vlan-id */ + if (ival->valid[UPLL_IDX_VLAN_ID_VLNK] == UNC_VF_VALID) { + if (val_vlanmap->vm.vlan_id != ival->vlan_id) { + UPLL_LOG_ERROR("Vlan-id in the request does not match " + "with the existing vlan-id"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } + + /* Resets Boundary vlanmap flag in vlanmap entry */ + if (((flags & USER_VLANMAP_FLAG) && val_vlanmap->bdry_ref_count > 0)|| + (flags & USER_VLANMAP_FLAG) || val_vlanmap->bdry_ref_count > 1) { + UPLL_LOG_TRACE("Boundary ref_count = %u", val_vlanmap->bdry_ref_count); + uint8_t flag = 0; + if (val_vlanmap->bdry_ref_count == 1) { + GET_USER_DATA_FLAGS(vlanmap_ckv, flag); + flag &= ~BOUNDARY_VLANMAP_FLAG; + SET_USER_DATA_FLAGS(vlanmap_ckv, flag); + val_vlanmap->valid[PFCDRV_IDX_BDRY_REF_COUNT] = + UNC_VF_VALID_NO_VALUE; + } + val_vlanmap->bdry_ref_count--; + + /* Decrements */ + result_code = UpdateConfigDB(vlanmap_ckv, req->datatype, UNC_OP_UPDATE, + dmi, &dbop, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Ref count DB update failed"); + return result_code; + } + return result_code; + } + } + + /* Deletes vlanmap entry from db */ + result_code = DeleteMo(req, vlanmap_ckv, dmi); + UPLL_LOG_TRACE("%s", vlanmap_ckv->ToStrAll().c_str()); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Failed to boundary vlink"); + return result_code; + } + return result_code; + } + UPLL_LOG_DEBUG("Invalid request received"); + return UPLL_RC_ERR_GENERIC; +} + +upll_rc_t VlanMapMoMgr::TranslateError(ConfigKeyVal **err_ckv, + ConfigKeyVal *ckv_running, + DalDmlIntf *dmi, + upll_keytype_datatype_t datatype) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ck_vlanmap = NULL; + uint8_t bound_vlanmap_vlink = 0; + + /* Get duplicate Config key from ckv running*/ + result_code = GetChildConfigKey(ck_vlanmap, ckv_running); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Error in GetChildConfigKey"); + return result_code; + } + + GET_USER_DATA_FLAGS(ck_vlanmap, bound_vlanmap_vlink); + + ConfigKeyVal *err_ckv2 = NULL; + result_code = DupConfigKeyVal(err_ckv2, ckv_running); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_vlanmap); + UPLL_LOG_INFO("Error in DupConfigKeyVal"); + return result_code; + } + UPLL_LOG_INFO("Flag of failed VLANMAP is %d", bound_vlanmap_vlink); + + /* Checks if it is part of only user configured vlanmap */ + if ((bound_vlanmap_vlink & BOUNDARY_VLANMAP_FLAG) == 0x0) { + *err_ckv = err_ckv2; + } else { + /* Checks it is part of boundary vlink */ + if (bound_vlanmap_vlink & BOUNDARY_VLANMAP_FLAG) { + VlinkMoMgr *mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VLINK))); + if (!mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + DELETE_IF_NOT_NULL(ck_vlanmap); + DELETE_IF_NOT_NULL(err_ckv2); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ck_vlink = NULL; + + result_code = mgr->GetVlinkKeyValFromVlanMap(ck_vlanmap, ck_vlink, dmi, + datatype); + DELETE_IF_NOT_NULL(ck_vlanmap); + if (result_code == UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Vlinks associated to logical_port_id are retrieved"); + if (bound_vlanmap_vlink & USER_VLANMAP_FLAG) { + result_code = AdaptValToVtnService(err_ckv2); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", + result_code); + DELETE_IF_NOT_NULL(err_ckv2); + return result_code; + } + err_ckv2->AppendCfgKeyVal(ck_vlink); + *err_ckv = err_ckv2; + } else { + DELETE_IF_NOT_NULL(err_ckv2); + *err_ckv = ck_vlink; + } + UPLL_LOG_TRACE("%s", (*err_ckv)->ToStrAll().c_str()); + return result_code; + } else { + UPLL_LOG_INFO("Failed to map boundary if to vlink." + "result_code:%d", result_code); + /* For errors, no need to update err_ckv */ + DELETE_IF_NOT_NULL(err_ckv2); + if (ck_vlink) + delete ck_vlink; + return result_code; + } + } + } + DELETE_IF_NOT_NULL(ck_vlanmap); + + if (*err_ckv) { + result_code = AdaptValToVtnService(*err_ckv); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AdaptValToVtnService failed result_code %d", + result_code); + return result_code; + } + } + return result_code; +} + +upll_rc_t VlanMapMoMgr::CheckIfVnodeisVlanmapped(ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + ConfigKeyVal *ck_vlanmap = NULL; + upll_rc_t result_code = UPLL_RC_SUCCESS; + result_code = GetChildConfigKey(ck_vlanmap, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in GetChildConfigKey"); + return result_code; + } + key_vlan_map *vlanmap_key = reinterpret_cast + (ck_vlanmap->get_key()); + if (vlanmap_key == NULL) { + UPLL_LOG_DEBUG("Error in getting key"); + DELETE_IF_NOT_NULL(ck_vlanmap); + return UPLL_RC_ERR_GENERIC; + } + vlanmap_key->logical_port_id_valid = INVALID_LOG_PORT_ID_VALID; + + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; + result_code = UpdateConfigDB(ck_vlanmap, UPLL_DT_RUNNING, UNC_OP_READ, + dmi, &dbop, MAINTBL); + DELETE_IF_NOT_NULL(ck_vlanmap); + return result_code; +} +} // namespace kt_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/vlanmap_momgr.hh b/coordinator/modules/upll/vlanmap_momgr.hh index 0d0faf4f..93dc96e3 100644 --- a/coordinator/modules/upll/vlanmap_momgr.hh +++ b/coordinator/modules/upll/vlanmap_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -22,257 +22,264 @@ namespace uuds = unc::upll::dal::schema; namespace uudst = unc::upll::dal::schema::table; class VlanMapMoMgr : public VnodeChildMoMgr { - private: - static BindInfo vlan_map_bind_info[]; - static BindInfo vlan_map_maintbl_update_key_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vbridge_vlanmap::kDbiVlanid: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_VLAN_ID_VM]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } + private: + static BindInfo vlan_map_bind_info[]; + static BindInfo vlan_map_maintbl_update_key_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + /* VlanmapOnBoundary: New attributes added*/ + case uudst::vbridge_vlanmap::kDbiVlanid: + valid = &(reinterpret_cast + (val))->vm.valid[UPLL_IDX_VLAN_ID_VM]; + break; + case uudst::vbridge_vlanmap::kDbiBdryRefCount: + valid = &(reinterpret_cast + (val))->valid[PFCDRV_IDX_BDRY_REF_COUNT]; + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; + } - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update parent oper status on delete for Transaction commit + * + * @param[in] ikey ConfigKeyVal instance + * @param[in] dmi Database connection parameter - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VBR_VLANMAP keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlan_map is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey); + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t UpdateParentOperStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi); - /** - * @Brief Checks if the specified key type(KT_VBR_VLANMAP) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] ctrlr_id controller associated with the input ikey. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key = NULL); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_vlan_map KT_VBR_VLANMAP Value structure. - * @param[in] attrs Pointer to controller attribute. - * @param[in] operation Operation name. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - **/ - upll_rc_t ValVlanmapAttributeSupportCheck( - val_vlan_map *vlanmap_val, - const uint8_t *attrs, - unc_keytype_operation_t operation); + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VBR_VLANMAP keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlan_map is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_VBR_VLANMAP Keytype key structure. - * - * @param[in] key_vlan_map KT_VBR_VLANMAP key structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - */ - upll_rc_t ValidateVlanmapKey(key_vlan_map *vlan_map_key, - unc_keytype_operation_t operation); + /** + * @Brief Checks if the specified key type(KT_VBR_VLANMAP) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] ctrlr_id controller associated with the input ikey. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char *ctrlr_name); - /** - * @Brief Validates the syntax for KT_VBR_VLANMAP keytype value structure. - * - * @param[in] val_vlan_map KT_VBR_VLANMAP value structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE description field is not available - **/ - upll_rc_t ValidateVlanmapValue(val_vlan_map *vlanmap_val, - uint32_t op); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_vlan_map KT_VBR_VLANMAP Value structure. + * @param[in] attrs Pointer to controller attribute. + * @param[in] operation Operation name. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + **/ + upll_rc_t ValVlanmapAttributeSupportCheck( + val_vlan_map *vlanmap_val, + const uint8_t *attrs, + unc_keytype_operation_t operation); - /** - * @brief Perform Semantic Check to check Different vbridges - * contain same switch-id and vlan-id - * - * @param[in] ikey ConfigKeyVal - * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - **/ - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state - * @param[in] tbl specifies if the corresponding table is the main - * table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - uint8_t* GetControllerId(ConfigKeyVal *ck_vbr, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, - void *val2, - bool audit_status, - unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, - void *val2, - bool audit); + /** + * @Brief Validates the syntax for KT_VBR_VLANMAP Keytype key structure. + * + * @param[in] key_vlan_map KT_VBR_VLANMAP key structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + */ + upll_rc_t ValidateVlanmapKey(key_vlan_map *vlan_map_key, + unc_keytype_operation_t operation); + + /** + * @Brief Validates the syntax for KT_VBR_VLANMAP keytype value structure. + * + * @param[in] val_vlan_map KT_VBR_VLANMAP value structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE description field is not available + **/ + upll_rc_t ValidateVlanmapValue(val_vlan_map *vlanmap_val, + uint32_t op); - /* Rename */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, + /** + * @brief Perform Semantic Check to check Different vbridges + * contain same switch-id and vlan-id + * + * @param[in] ikey ConfigKeyVal + * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success + **/ + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in] ck_val Reference pointer to configval structure allocated. * @param[in] dt_type specifies the configuration candidate/running/state + * @param[in] tbl specifies if the corresponding table is the main + * table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + uint8_t* GetControllerId(ConfigKeyVal *ck_vbr, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - bool ResetDataForSibling(key_vlan_map *key_vmap, - uudst::vbridge_vlanmap::kVbrVlanMapIndex index); + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, + void *val2, + bool audit_status, + unc_keytype_operation_t op); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, + void *val2, + bool audit); - static uint16_t kVbrVlanMapNumChildKey; + /* Rename */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + bool ResetDataForSibling(key_vlan_map *key_vmap, + uudst::vbridge_vlanmap::kVbrVlanMapIndex index); + /** + * @brief VlanmapOnBoundary: + * Verifies whether the flow filter or policing map configured + * in the requested boundary vlink request of logical port id + * is SW or SD + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of + * input request structure). + * @param[out] ikey ConfigKeyVal instance of vlink. + * @param[in] dmi pointer to DalDmlIntf + **/ + upll_rc_t CheckIfFfPmConfigured(IpcReqRespHeader *req, + ConfigKeyVal *ikey, DalDmlIntf *dmi); - public: - VlanMapMoMgr(); - virtual ~VlanMapMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, - uint64_t index); - upll_rc_t IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, DalDmlIntf *dmi, - IpcReqRespHeader *req); + static uint16_t kVbrVlanMapNumChildKey; + + public: + VlanMapMoMgr(); + virtual ~VlanMapMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, + uint64_t index); + upll_rc_t IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, DalDmlIntf *dmi, + IpcReqRespHeader *req); /* @brief READ_SIBLING_BEGIN: Gets the first MO from the sibling group * under the parent @@ -298,6 +305,67 @@ class VlanMapMoMgr : public VnodeChildMoMgr { ConfigKeyVal *key, bool begin, DalDmlIntf *dal); + /** + * @brief VlanmapOnBoundary + * To handles boundary vlink logical port id - SW or SD request + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of + * input request structure). + * @param[out] ikey ConfigKeyVal instance of vlink. + * @param[out] db_vlink ConfigKeyVal instance of vlink read from DB. + * @param[out] vlanmap_ckv ConfigKeyVal instance of vlanmap. + * @param[in] dmi pointer to DalDmlIntf + **/ + upll_rc_t BoundaryVlanmapReq(IpcReqRespHeader *req, + ConfigKeyVal *ikey, ConfigKeyVal *db_vlink, + ConfigKeyVal *vlanmap_ckv, DalDmlIntf *dmi); + + upll_rc_t ReadSiblingBeginMo(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi); + upll_rc_t ReadSiblingCount(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); + upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); + upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + upll_rc_t TranslateError(ConfigKeyVal **err_ckv, + ConfigKeyVal *ckv_running, + DalDmlIntf *dmi, upll_keytype_datatype_t datatype); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main + * table/controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype + * from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the + * output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); + upll_rc_t CheckIfVnodeisVlanmapped(ConfigKeyVal *ikey, + DalDmlIntf *dmi); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vlink_momgr.cc b/coordinator/modules/upll/vlink_momgr.cc index 9fb35bb9..c90665d5 100644 --- a/coordinator/modules/upll/vlink_momgr.cc +++ b/coordinator/modules/upll/vlink_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -16,6 +16,10 @@ #include "vtunnel_if_momgr.hh" #include "vtep_if_momgr.hh" #include "unc/uppl_common.h" +#include "config_mgr.hh" +#include "vlanmap_momgr.hh" +#include "vbr_if_flowfilter_momgr.hh" +#include "vbr_if_policingmap_momgr.hh" #define NUM_KEY_RENAME_TBL_ 4 #define NUM_KEY_MAIN_TBL_ 5 @@ -29,150 +33,150 @@ namespace upll { namespace kt_momgr { BindInfo VlinkMoMgr::vlink_bind_info[] = { - { uudst::vlink::kDbiVtnName, CFG_KEY, offsetof(key_vlink, vtn_key), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiVlinkName, CFG_KEY, offsetof(key_vlink, vlink_name), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiAdminStatus, CFG_VAL, offsetof(val_vlink, admin_status), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiVnode1Name, CFG_VAL, offsetof(val_vlink, vnode1_name), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiVnode1Ifname, CFG_VAL, offsetof(val_vlink, - vnode1_ifname), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiVnode2Name, CFG_VAL, offsetof(val_vlink, vnode2_name), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiVnode2Ifname, CFG_VAL, offsetof(val_vlink, - vnode2_ifname), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiBoundaryName, CFG_VAL, offsetof(val_vlink, - boundary_name), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiVlanid, CFG_VAL, offsetof(val_vlink, vlan_id), - uud::kDalUint16, 1 }, - { uudst::vlink::kDbiDesc, CFG_VAL, offsetof(val_vlink, description), - uud::kDalChar, 128 }, - { uudst::vlink::kDbiOperStatus, ST_VAL, - offsetof(val_vlink_st, oper_status), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiDownCount, ST_VAL, - offsetof(val_db_vlink_st, down_count), - uud::kDalUint32, 1 }, - { uudst::vlink::kDbiCtrlr1Name, CK_VAL, offsetof(key_user_data, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiDomain1Id, CK_VAL, offsetof(key_user_data, domain_id), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiCtrlr2Name, CK_VAL2, offsetof(key_user_data, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiDomain2Id, CK_VAL2, offsetof(key_user_data, domain_id), - uud::kDalChar, 32 }, - { uudst::vlink::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( - val_vlink, valid[UPLL_IDX_ADMIN_STATUS_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidVnode1Name, CFG_META_VAL, offsetof( - val_vlink, valid[UPLL_IDX_VNODE1_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidVnode1Ifname, CFG_META_VAL, offsetof( - val_vlink, valid[UPLL_IDX_VNODE1_IF_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidVnode2Name, CFG_META_VAL, offsetof( - val_vlink, valid[UPLL_IDX_VNODE2_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidVnode2Ifname, CFG_META_VAL, offsetof( - val_vlink, valid[UPLL_IDX_VNODE2_IF_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidBoundaryName, CFG_META_VAL, offsetof( - val_vlink, valid[UPLL_IDX_BOUNDARY_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidVlanid, CFG_META_VAL, offsetof( - val_vlink, valid[UPLL_IDX_VLAN_ID_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidDesc, CFG_META_VAL, offsetof( - val_vlink, valid[UPLL_IDX_DESCRIPTION_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValidOperStatus, ST_META_VAL, offsetof( - val_vlink_st, valid[UPLL_IDX_OPER_STATUS_VLNKS]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsAdminStatus, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_ADMIN_STATUS_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsVnode1Name, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_VNODE1_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsVnode1Ifname, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_VNODE1_IF_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsVnode2Name, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_VNODE2_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsVnode2Ifname, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_VNODE2_IF_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsBoundaryName, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_BOUNDARY_NAME_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsVlanid, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_VLAN_ID_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsDesc, CS_VAL, offsetof( - val_vlink, cs_attr[UPLL_IDX_DESCRIPTION_VLNK]), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiCsRowstatus, CS_VAL, offsetof(val_vlink, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiKeyFlags, CK_VAL, offsetof(key_user_data, flags), - uud::kDalUint8, 1 }, - { uudst::vlink::kDbiValFlags, CK_VAL2, offsetof(key_user_data, flags), - uud::kDalUint8, 1 }}; + { uudst::vlink::kDbiVtnName, CFG_KEY, offsetof(key_vlink, vtn_key), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiVlinkName, CFG_KEY, offsetof(key_vlink, vlink_name), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiAdminStatus, CFG_VAL, offsetof(val_vlink, admin_status), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiVnode1Name, CFG_VAL, offsetof(val_vlink, vnode1_name), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiVnode1Ifname, CFG_VAL, offsetof(val_vlink, + vnode1_ifname), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiVnode2Name, CFG_VAL, offsetof(val_vlink, vnode2_name), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiVnode2Ifname, CFG_VAL, offsetof(val_vlink, + vnode2_ifname), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiBoundaryName, CFG_VAL, offsetof(val_vlink, + boundary_name), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiVlanid, CFG_VAL, offsetof(val_vlink, vlan_id), + uud::kDalUint16, 1 }, + { uudst::vlink::kDbiDesc, CFG_VAL, offsetof(val_vlink, description), + uud::kDalChar, 128 }, + { uudst::vlink::kDbiOperStatus, ST_VAL, + offsetof(val_vlink_st, oper_status), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiDownCount, ST_VAL, + offsetof(val_db_vlink_st, down_count), + uud::kDalUint32, 1 }, + { uudst::vlink::kDbiCtrlr1Name, CK_VAL, offsetof(key_user_data, ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiDomain1Id, CK_VAL, offsetof(key_user_data, domain_id), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiCtrlr2Name, CK_VAL2, offsetof(key_user_data, ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiDomain2Id, CK_VAL2, offsetof(key_user_data, domain_id), + uud::kDalChar, 32 }, + { uudst::vlink::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( + val_vlink, valid[UPLL_IDX_ADMIN_STATUS_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidVnode1Name, CFG_META_VAL, offsetof( + val_vlink, valid[UPLL_IDX_VNODE1_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidVnode1Ifname, CFG_META_VAL, offsetof( + val_vlink, valid[UPLL_IDX_VNODE1_IF_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidVnode2Name, CFG_META_VAL, offsetof( + val_vlink, valid[UPLL_IDX_VNODE2_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidVnode2Ifname, CFG_META_VAL, offsetof( + val_vlink, valid[UPLL_IDX_VNODE2_IF_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidBoundaryName, CFG_META_VAL, offsetof( + val_vlink, valid[UPLL_IDX_BOUNDARY_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidVlanid, CFG_META_VAL, offsetof( + val_vlink, valid[UPLL_IDX_VLAN_ID_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidDesc, CFG_META_VAL, offsetof( + val_vlink, valid[UPLL_IDX_DESCRIPTION_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValidOperStatus, ST_META_VAL, offsetof( + val_vlink_st, valid[UPLL_IDX_OPER_STATUS_VLNKS]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsAdminStatus, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_ADMIN_STATUS_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsVnode1Name, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_VNODE1_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsVnode1Ifname, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_VNODE1_IF_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsVnode2Name, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_VNODE2_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsVnode2Ifname, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_VNODE2_IF_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsBoundaryName, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_BOUNDARY_NAME_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsVlanid, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_VLAN_ID_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsDesc, CS_VAL, offsetof( + val_vlink, cs_attr[UPLL_IDX_DESCRIPTION_VLNK]), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiCsRowstatus, CS_VAL, offsetof(val_vlink, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiKeyFlags, CK_VAL, offsetof(key_user_data, flags), + uud::kDalUint8, 1 }, + { uudst::vlink::kDbiValFlags, CK_VAL2, offsetof(key_user_data, flags), + uud::kDalUint8, 1 }}; BindInfo VlinkMoMgr::vlink_rename_bind_info[] = { - { uudst::vnode_rename::kDbiUncVtnName, CFG_KEY, offsetof(key_vlink_t, - vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_KEY, offsetof(key_vlink_t, - vlink_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiDomainId, CK_VAL, offsetof(key_user_data, - domain_id), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrVtnName, CFG_VAL, offsetof( - val_rename_vnode, ctrlr_vtn_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrVnodeName, CFG_VAL, offsetof( - val_rename_vnode, ctrlr_vnode_name), - uud::kDalChar, 32 } }; + { uudst::vnode_rename::kDbiUncVtnName, CFG_KEY, offsetof(key_vlink_t, + vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_KEY, offsetof(key_vlink_t, + vlink_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiDomainId, CK_VAL, offsetof(key_user_data, + domain_id), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrVtnName, CFG_VAL, offsetof( + val_rename_vnode, ctrlr_vtn_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrVnodeName, CFG_VAL, offsetof( + val_rename_vnode, ctrlr_vnode_name), + uud::kDalChar, 32 } }; BindInfo VlinkMoMgr::key_vlink_maintbl_bind_info[] = { - { uudst::vlink::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vlink_t, - vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vlink::kDbiVlinkName, CFG_MATCH_KEY, offsetof(key_vlink, - vlink_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vlink::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vlink::kDbiVlinkName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vlink::kDbiKeyFlags, CK_VAL, offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } }; + { uudst::vlink::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vlink_t, + vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vlink::kDbiVlinkName, CFG_MATCH_KEY, offsetof(key_vlink, + vlink_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vlink::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vlink::kDbiVlinkName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vlink::kDbiKeyFlags, CK_VAL, offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 } }; BindInfo VlinkMoMgr::key_vlink_renametbl_update_bind_info[] = { - { uudst::vnode_rename::kDbiUncVtnName, CFG_MATCH_KEY, offsetof( - key_vlink_t, vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_MATCH_KEY, offsetof( - key_vlink_t, vlink_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vnode_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 } }; + { uudst::vnode_rename::kDbiUncVtnName, CFG_MATCH_KEY, offsetof( + key_vlink_t, vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_MATCH_KEY, offsetof( + key_vlink_t, vlink_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vnode_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 } }; VlinkMoMgr::VlinkMoMgr() { UPLL_FUNC_TRACE; @@ -183,19 +187,19 @@ VlinkMoMgr::VlinkMoMgr() { IpctSt::kIpcStValVlink, (uudst::vlink::kDbiVlinkNumCols)); table[RENAMETBL] = new Table(uudst::kDbiVlinkRenameTbl, UNC_KT_VLINK, - vlink_rename_bind_info, IpctSt::kIpcInvalidStNum, - IpctSt::kIpcInvalidStNum, - uudst::vlink_rename::kDbiVlinkRenameNumCols); + vlink_rename_bind_info, IpctSt::kIpcInvalidStNum, + IpctSt::kIpcInvalidStNum, + uudst::vlink_rename::kDbiVlinkRenameNumCols); table[CTRLRTBL] = NULL; nchild = 0; child = NULL; ck_boundary = NULL; -// SetMoManager(UNC_KT_VLINK, (MoMgr *)this); + // SetMoManager(UNC_KT_VLINK, (MoMgr *)this); } upll_rc_t VlinkMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (!ikey || !(ikey->get_key()) || !dmi) { @@ -203,7 +207,7 @@ upll_rc_t VlinkMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. @@ -219,32 +223,32 @@ upll_rc_t VlinkMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ConfigKeyVal *ckv_rename = NULL; DbSubOp op = {kOpReadSingle, kOpMatchCtrlr, kOpInOutCtrlr | kOpInOutDomain}; key_vtn_t *vtn_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn))); + (ConfigKeyVal::Malloc(sizeof(key_vtn))); memcpy(vtn_key, &(reinterpret_cast(ikey->get_key())->vtn_key), - sizeof(key_vtn_t)); + sizeof(key_vtn_t)); ckv_rename = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); SET_USER_DATA_CTRLR(ckv_rename, ctrlr_id); MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager(UNC_KT_VTN))); result_code = mgr->ReadConfigDB(ckv_rename, UPLL_DT_RUNNING, - UNC_OP_READ, op, dmi, RENAMETBL); + UNC_OP_READ, op, dmi, RENAMETBL); if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_INFO("ReadConfigDB from rename tbl failed err code %d", - result_code); + result_code); delete ckv_rename; return result_code; } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - ckv_rename->SetCfgVal(NULL); - result_code = mgr->ReadConfigDB(ckv_rename, UPLL_DT_AUDIT, - UNC_OP_READ, op, dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("ReadConfigDB from Ctrlr tbl also failed err code %d", - result_code); - delete ckv_rename; - return result_code; - } + ckv_rename->SetCfgVal(NULL); + result_code = mgr->ReadConfigDB(ckv_rename, UPLL_DT_AUDIT, + UNC_OP_READ, op, dmi, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("ReadConfigDB from Ctrlr tbl also failed err code %d", + result_code); + delete ckv_rename; + return result_code; + } } controller_domain ctrlr_dom; ctrlr_dom.ctrlr = NULL; @@ -253,7 +257,7 @@ upll_rc_t VlinkMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(ikey->get_cfg_val(), ctrlr_dom); DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag | kOpInOutDomain - | kOpInOutCtrlr }; + | kOpInOutCtrlr }; result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -264,58 +268,31 @@ upll_rc_t VlinkMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } upll_rc_t VlinkMoMgr::CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; if (ikey == NULL || req == NULL || dmi == NULL) { UPLL_LOG_INFO("Cannot perform create operation" - "due to insufficient parameters"); + "due to insufficient parameters"); return UPLL_RC_ERR_GENERIC; } upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom[2] = { { NULL, NULL }, { NULL, NULL } }; UPLL_LOG_TRACE("VLINK CREATE INPUT %s", (ikey->ToStrAll()).c_str()); - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("ValidateMessage Failed : %d", result_code); - return result_code; + if (!restore_flag) { + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("ValidateMessage Failed : %d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("ValidateAttribute returning %d", result_code); - return result_code; - } - // Vnode Existence check in CANDIDATE DB - result_code = VnodeChecks(ikey, req->datatype, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Vnode with the same name already exists %d", result_code); - return result_code; - } - UPLL_LOG_TRACE("VnodeCheck Over, The Result code is %d", result_code); - // Parent VTN check - result_code = GetParentConfigKey(parent_ck_vtn, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in retrieving the parent VTN ConfigKeyVal"); - return result_code; - } - MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); - result_code = mgr->UpdateConfigDB(parent_ck_vtn, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - DELETE_IF_NOT_NULL(parent_ck_vtn); - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE && - result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); - DELETE_IF_NOT_NULL(parent_ck_vtn); + UPLL_LOG_INFO("ValidateAttribute returning %d", result_code); return result_code; } - DELETE_IF_NOT_NULL(parent_ck_vtn); // vbrIf checks are done and respective Vnodes ContollerIds are filled - result_code = UpdateVlinkIf(req, ikey, dmi, ctrlr_dom); + result_code = UpdateVlinkIf(req, ikey, dmi, ctrlr_dom, restore_flag); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Error in checking for Vlink Interfaces. result code %d", result_code); @@ -339,17 +316,8 @@ upll_rc_t VlinkMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return UPLL_RC_ERR_CFG_SEMANTIC; } UPLL_LOG_TRACE(" The Node 1 interface controller name is %s", - ctrlr_dom[0].ctrlr); + ctrlr_dom[0].ctrlr); is_vunk_interface = false; - result_code = GetInstanceCount(temp_key, - reinterpret_cast(ctrlr_dom[0].ctrlr), - req->datatype, &cur_instance_count, dmi, - MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(temp_key); - UPLL_LOG_DEBUG(" returns error %d", result_code); - return result_code; - } } } if (UNC_KT_VUNK_IF != GetVlinkVnodeIfKeyType(ikey, 0)) { @@ -368,20 +336,14 @@ upll_rc_t VlinkMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return UPLL_RC_ERR_CFG_SEMANTIC; } UPLL_LOG_TRACE(" The Node 2 interface controller name is %s", - ctrlr_dom[1].ctrlr); + ctrlr_dom[1].ctrlr); UPLL_LOG_TRACE("The tempKey is %s", temp_key->ToStrAll().c_str()); if (is_vunk_interface || strncmp((const char *)ctrlr_dom[0].ctrlr, (const char *)ctrlr_dom[1].ctrlr, - kMaxLenCtrlrId)) { - result_code = GetInstanceCount(temp_key, reinterpret_cast - (ctrlr_dom[1].ctrlr), req->datatype, &cur_instance_count, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(temp_key); - UPLL_LOG_ERROR(" returns error %d", result_code); - return result_code; - } + kMaxLenCtrlrId)) { result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom[1].ctrlr)); + reinterpret_cast + (ctrlr_dom[1].ctrlr)); if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(temp_key); UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); @@ -391,7 +353,7 @@ upll_rc_t VlinkMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } DELETE_IF_NOT_NULL(temp_key); SET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); - result_code = RestoreVnode(ikey, req, dmi, ctrlr_dom); + result_code = RestoreVnode(ikey, req, dmi, ctrlr_dom, restore_flag); if (result_code != UPLL_RC_SUCCESS) UPLL_LOG_DEBUG("Returning %d", result_code); return result_code; @@ -405,8 +367,8 @@ upll_rc_t VlinkMoMgr::DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, } upll_rc_t VlinkMoMgr::ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { upll_rc_t result_code; if (!ikey || !ikey->get_cfg_val()) { UPLL_LOG_DEBUG("Invalid parameter"); @@ -465,7 +427,7 @@ upll_rc_t VlinkMoMgr::RestoreVnode(ConfigKeyVal *ikey, #endif // create a record in CANDIDATE DB DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag | kOpInOutDomain - | kOpInOutCtrlr }; + | kOpInOutCtrlr }; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi, &dbop, MAINTBL); @@ -483,9 +445,9 @@ upll_rc_t VlinkMoMgr::GetNodeType(void *key, bool vnode, unc_key_type_t &keytype, ConfigKeyVal *&ck_val, DalDmlIntf *dmi) { unc_key_type_t *ktype, if_ktype[] = { UNC_KT_VBR_IF, UNC_KT_VRT_IF, - UNC_KT_VTEP_IF, UNC_KT_VTUNNEL_IF }; + UNC_KT_VTEP_IF, UNC_KT_VTUNNEL_IF }; unc_key_type_t vnode_ktype[] = { UNC_KT_VBRIDGE, UNC_KT_VROUTER, UNC_KT_VTEP, - UNC_KT_VTUNNEL }; + UNC_KT_VTUNNEL }; int numnodes; if (vnode) { @@ -499,8 +461,13 @@ upll_rc_t VlinkMoMgr::GetNodeType(void *key, bool vnode, keytype = ktype[i]; MoMgrImpl *mgr = (reinterpret_cast(const_cast(GetMoManager( - keytype)))); - mgr->GetChildConfigKey(ck_val, NULL); + keytype)))); + upll_rc_t result_code = mgr->GetChildConfigKey(ck_val, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed result_code %d", result_code); + return result_code; + } + if (ck_val == NULL) { UPLL_LOG_ERROR("Invalid param"); return UPLL_RC_ERR_GENERIC; @@ -532,7 +499,7 @@ upll_rc_t VlinkMoMgr::GetNodeType(void *key, bool vnode, return UPLL_RC_ERR_GENERIC; } if (sizeof(reinterpret_cast(key)) - != key_stdef->ist_size) + != key_stdef->ist_size) return UPLL_RC_ERR_GENERIC; memcpy(ck_val->get_key(), key, sizeof(key_vbr_if_t)); break; @@ -542,9 +509,9 @@ upll_rc_t VlinkMoMgr::GetNodeType(void *key, bool vnode, return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutFlag - | kOpInOutDomain }; - upll_rc_t result_code = mgr->ReadConfigDB(ck_val, UPLL_DT_STATE, - UNC_OP_READ, dbop1, dmi, MAINTBL); + | kOpInOutDomain }; + result_code = mgr->ReadConfigDB(ck_val, UPLL_DT_STATE, + UNC_OP_READ, dbop1, dmi, MAINTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { continue; } else if (result_code != UPLL_RC_SUCCESS) { @@ -562,17 +529,19 @@ upll_rc_t VlinkMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, if (ikey == NULL) return UPLL_RC_ERR_GENERIC; key_vlink * vlink_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlink))); + (ConfigKeyVal::Malloc(sizeof(key_vlink))); uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vlink_key->vlink_name, - reinterpret_cast(ikey->get_key())->vlink_name, - (kMaxLenVlinkName+1)); + reinterpret_cast(ikey->get_key())->vlink_name, + (kMaxLenVlinkName+1)); ConfigKeyVal *ck_vlink = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, - reinterpret_cast(vlink_key), NULL); + reinterpret_cast + (vlink_key), NULL); if (ck_vlink == NULL) { UPLL_LOG_ERROR("Memory Allocation failed for ck_vlink"); FREE_IF_NOT_NULL(vlink_key); @@ -587,14 +556,14 @@ upll_rc_t VlinkMoMgr::SwapVnodes(ConfigKeyVal *&ck_vlink) { uint8_t temp_swap[32]; uuu::upll_strncpy(temp_swap, vlink_val->vnode1_name, (kMaxLenVnodeName+1)); uuu::upll_strncpy(vlink_val->vnode1_name, vlink_val->vnode2_name, - (kMaxLenVnodeName+1)); + (kMaxLenVnodeName+1)); uuu::upll_strncpy(vlink_val->vnode2_name, temp_swap, (kMaxLenVnodeName+1)); uuu::upll_strncpy(temp_swap, vlink_val->vnode1_ifname, - (kMaxLenInterfaceName+1)); + (kMaxLenInterfaceName+1)); uuu::upll_strncpy(vlink_val->vnode1_ifname, vlink_val->vnode2_ifname, (kMaxLenInterfaceName+1)); uuu::upll_strncpy(vlink_val->vnode2_ifname, temp_swap, - (kMaxLenInterfaceName+1)); + (kMaxLenInterfaceName+1)); #if 0 int rename_flag = 0; int temp_flag = 0; @@ -616,7 +585,133 @@ upll_rc_t VlinkMoMgr::SwapVnodes(ConfigKeyVal *&ck_vlink) { return UPLL_RC_SUCCESS; } +upll_rc_t VlinkMoMgr::NotifyPOMForPortMapVlinkFlag( + upll_keytype_datatype_t dt_type, + ConfigKeyVal *ckv_if, + DalDmlIntf *dmi, + unc_keytype_operation_t op) { + UPLL_FUNC_TRACE; + MoMgrImpl *pom_mgr = NULL; + MoMgrImpl *vnode_mgr = NULL; + ConfigKeyVal *okey = NULL; + if (ckv_if->get_key_type() == UNC_KT_VBR_IF) { + pom_mgr = reinterpret_cast + (const_cast( + GetMoManager(UNC_KT_VBRIF_FLOWFILTER))); + vnode_mgr = reinterpret_cast + (const_cast( + GetMoManager(UNC_KT_VBR_IF))); + } else if (ckv_if->get_key_type() == UNC_KT_VRT_IF) { + pom_mgr = reinterpret_cast + (const_cast( + GetMoManager(UNC_KT_VRTIF_FLOWFILTER))); + vnode_mgr = reinterpret_cast + (const_cast( + GetMoManager(UNC_KT_VRT_IF))); + } else { + UPLL_LOG_DEBUG("Do not notify POM since kt is %d", + ckv_if->get_key_type()); + return UPLL_RC_SUCCESS; + } + + if (!pom_mgr || !vnode_mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + + uint8_t user_data_flags = 0; + InterfacePortMapInfo if_info; + GET_USER_DATA_FLAGS(ckv_if, user_data_flags); + if (user_data_flags & VIF_TYPE_BOUNDARY) { + UPLL_LOG_DEBUG("VLINK TYPE --BOUNDRY"); + if_info = kPortMapConfigured; + } else if (user_data_flags & VIF_TYPE_LINKED) { + UPLL_LOG_DEBUG("VLINK TYPE --INTERNAL VLINK"); + if_info = kVlinkConfigured; + } else { + UPLL_LOG_DEBUG("VLINK TYPE --NO VLINK"); + if_info = kVlinkPortMapNotConfigured; + } + upll_rc_t result_code = vnode_mgr->GetChildConfigKey(okey, ckv_if); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChilConfigKey Failed"); + return UPLL_RC_ERR_GENERIC; + } + if (UNC_OP_DELETE == op) { + // Notify the POM Component to clear the vlink flag + result_code = pom_mgr->SetVlinkPortmapConfiguration( + okey, + dt_type, + dmi, + kVlinkPortMapNotConfigured, + op); + + if (okey) { + delete okey; + okey = NULL; + } + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", + result_code); + return result_code; + } + } else { + // Notify the POM Component to update the vlink or Portmap flag + result_code = pom_mgr->SetVlinkPortmapConfiguration( + okey, + dt_type, + dmi, + if_info, + op); + + if (okey) { + delete okey; + okey = NULL; + } + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", + result_code); + return result_code; + } + if ((if_info == kPortMapConfigured) && + (ckv_if->get_key_type() == UNC_KT_VBR_IF)) { + pom_mgr = reinterpret_cast + (const_cast( + GetMoManager(UNC_KT_VBRIF_POLICINGMAP))); + if (!pom_mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + result_code = vnode_mgr->GetChildConfigKey(okey, ckv_if); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChilConfigKey Failed"); + return UPLL_RC_ERR_GENERIC; + } + + // Notify the VBR IF PolicingMap Component to update the Portmap flag + result_code = pom_mgr->SetVlinkPortmapConfiguration( + okey, + dt_type, + dmi, + if_info, + op); + if (okey) { + delete okey; + okey = NULL; + } + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", + result_code); + return result_code; + } + } + } + return UPLL_RC_SUCCESS; +} upll_rc_t VlinkMoMgr::UpdateVlinkMemIfFlag(upll_keytype_datatype_t dt_type, @@ -630,7 +725,7 @@ upll_rc_t VlinkMoMgr::UpdateVlinkMemIfFlag(upll_keytype_datatype_t dt_type, UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; } - ConfigKeyVal *okey = NULL; + // ConfigKeyVal *okey = NULL; ConfigKeyVal *dup_ckvif = NULL; upll_rc_t result_code = mgr->DupConfigKeyVal(dup_ckvif, ckv_if, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -640,109 +735,50 @@ upll_rc_t VlinkMoMgr::UpdateVlinkMemIfFlag(upll_keytype_datatype_t dt_type, DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; void *if_val = GetVal(dup_ckvif); if (!if_val) { - UPLL_LOG_DEBUG("Invalid param"); - if (dup_ckvif) delete dup_ckvif; - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid param"); + if (dup_ckvif) delete dup_ckvif; + return UPLL_RC_ERR_GENERIC; } - switch (ckv_if->get_key_type()) { - case UNC_KT_VBR_IF: { - MoMgrImpl *pom_mgr = reinterpret_cast - (const_cast( - GetMoManager(UNC_KT_VBRIF_FLOWFILTER))); - MoMgrImpl *vbr_mgr = reinterpret_cast - (const_cast( - GetMoManager(UNC_KT_VBR_IF))); - if (!pom_mgr || !vbr_mgr) { - UPLL_LOG_DEBUG("Instance is NULL"); - if (dup_ckvif) delete dup_ckvif; - return UPLL_RC_ERR_GENERIC; - } - result_code = vbr_mgr->GetChildConfigKey(okey, ckv_if); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChilConfigKey Failed"); - if (dup_ckvif) delete dup_ckvif; - return UPLL_RC_ERR_GENERIC; - } - if (UNC_OP_CREATE == op) - result_code = pom_mgr->SetVlinkPortmapConfiguration(okey, dt_type, - dmi, kVlinkConfigured, op); - else if (UNC_OP_DELETE == op) - result_code = pom_mgr->SetVlinkPortmapConfiguration(okey, dt_type, - dmi, kVlinkPortMapNotConfigured, op); - if (okey) delete okey; - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", - result_code); - if (dup_ckvif) delete dup_ckvif; - return result_code; - } - ResetValid(val_vbr_if, &(reinterpret_cast - (if_val)->vbr_if_val)) - vnif_type = kVbrIf; - break; - } - case UNC_KT_VRT_IF: - { - MoMgrImpl *pom_mgr = reinterpret_cast - (const_cast( - GetMoManager(UNC_KT_VRTIF_FLOWFILTER))); - MoMgrImpl *vrt_mgr = reinterpret_cast - (const_cast( - GetMoManager(UNC_KT_VRT_IF))); - - if (!pom_mgr || !vrt_mgr) { - UPLL_LOG_DEBUG("Invalid Instance"); - if (dup_ckvif) delete dup_ckvif; - return UPLL_RC_ERR_GENERIC; - } - result_code = vrt_mgr->GetChildConfigKey(okey, ckv_if); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChilConfigKey Failed"); - if (dup_ckvif) delete dup_ckvif; - return UPLL_RC_ERR_GENERIC; - } - if (UNC_OP_CREATE == op) { - result_code = pom_mgr->SetVlinkPortmapConfiguration(okey, - dt_type, dmi, kVlinkConfigured, op); - } else if (UNC_OP_DELETE == op) { - result_code = pom_mgr->SetVlinkPortmapConfiguration(okey, dt_type, - dmi, kVlinkPortMapNotConfigured, op); - } - if (okey) delete okey; - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("SetVlinkPortMapConfiguration Failure %d", - result_code); - if (dup_ckvif) delete dup_ckvif; - return result_code; - } - ResetValid(val_vrt_if, if_val); - vnif_type = kVrtIf; + case UNC_KT_VBR_IF: { + ResetValid(val_vbr_if, &(reinterpret_cast + (if_val)->vbr_if_val)) + vnif_type = kVbrIf; break; } - case UNC_KT_VTEP_IF: - ResetValid(val_vtep_if, if_val); - vnif_type = kVtepIf; - break; - case UNC_KT_VTUNNEL_IF: - ResetValid(val_vtunnel_if, if_val); - vnif_type = kVtunnelIf; - break; - case UNC_KT_VUNK_IF: - ResetValid(val_vunk_if, if_val); - vnif_type = kVunkIf; - break; - default: - if (dup_ckvif) delete dup_ckvif; - UPLL_LOG_DEBUG("Unsupported keytype %d", ckv_if->get_key_type()); - return UPLL_RC_ERR_GENERIC; + case UNC_KT_VRT_IF: + { + ResetValid(val_vrt_if, if_val); + vnif_type = kVrtIf; + break; + } + case UNC_KT_VTEP_IF: + ResetValid(val_vtep_if, if_val); + vnif_type = kVtepIf; + break; + case UNC_KT_VTUNNEL_IF: + ResetValid(val_vtunnel_if, if_val); + vnif_type = kVtunnelIf; + break; + case UNC_KT_VUNK_IF: + ResetValid(val_vunk_if, if_val); + vnif_type = kVunkIf; + break; + /* VlanmapOnBoundary: vlanmap case added */ + case UNC_KT_VBR_VLANMAP: + ResetValid(val_vlan_map, &(reinterpret_cast + (if_val)->vm)); + vnif_type = kVlanMap; + break; + default: + if (dup_ckvif) delete dup_ckvif; + UPLL_LOG_DEBUG("Unsupported keytype %d", ckv_if->get_key_type()); + return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("Updating the Flag value in Interface Table %d", - ckv_if->get_key_type()); + ckv_if->get_key_type()); result_code = mgr->UpdateConfigDB(dup_ckvif, dt_type, - UNC_OP_UPDATE, dmi, &dbop, MAINTBL); + UNC_OP_UPDATE, dmi, &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) UPLL_LOG_DEBUG("Returning error %d", result_code); if (dup_ckvif) delete dup_ckvif; @@ -752,7 +788,8 @@ upll_rc_t VlinkMoMgr::UpdateVlinkMemIfFlag(upll_keytype_datatype_t dt_type, upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { + controller_domain *ctrlr_dom, + bool restore_flag) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; bool bound_vlink = false; @@ -764,7 +801,7 @@ upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, upll_keytype_datatype_t dt_type = req->datatype; uint8_t valid_boundary = reinterpret_cast(GetVal(ikey))-> - valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; + valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; uint8_t rename_flag = 0; uint8_t vnode_rename_flag = 0; VlinkNodePosition vnodeif_number = kVlinkVnode1; @@ -775,12 +812,13 @@ upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, int i = 0; VbrIfMoMgr *mgr = static_cast(const_cast(GetMoManager( - UNC_KT_VBR_IF))); + UNC_KT_VBR_IF))); // val is mandatory in vlink structure cv_link = ikey->get_cfg_val(); if (!cv_link) return UPLL_RC_ERR_GENERIC; do { - GET_USER_DATA_FLAGS(cv_link, rename_flag); + if (!restore_flag) + GET_USER_DATA_FLAGS(cv_link, rename_flag); rename_flag |= (uint8_t)(vnodeif_number & VIF_TYPE); SET_USER_DATA_FLAGS(cv_link, rename_flag); result_code = mgr->GetChildConfigKey(ck_drv_vbr_if, ikey); @@ -806,8 +844,9 @@ upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, else if (vnodeif_number == kVlinkVnode2) if2_type = key_type; GET_USER_DATA_CTRLR_DOMAIN(ck_if[i], ctrlr_dom[i]); UPLL_LOG_TRACE(" The Controller and Domain Name is %s & %s", - ctrlr_dom[i].ctrlr, ctrlr_dom[i].domain); - GET_USER_DATA_FLAGS(ck_if[i], rename_flag); + ctrlr_dom[i].ctrlr, ctrlr_dom[i].domain); + if (!restore_flag) + GET_USER_DATA_FLAGS(ck_if[i], rename_flag); if (rename_flag & VIF_TYPE) { UPLL_LOG_DEBUG("Interface is already part of another vlink"); delete ck_drv_vbr_if; // COV RESOURCE LEAK @@ -819,16 +858,16 @@ upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, if (vnode_rename_flag & 0x02) { GET_USER_DATA_FLAGS(cv_link, rename_flag); if (vnodeif_number == kVlinkVnode2) - vnode_rename_flag = 0x08; + vnode_rename_flag = 0x08; else - vnode_rename_flag = 0x04; + vnode_rename_flag = 0x04; rename_flag |= vnode_rename_flag; SET_USER_DATA_FLAGS(cv_link, rename_flag); } delete ck_drv_vbr_if; ck_drv_vbr_if = NULL; vnodeif_number = (vnodeif_number == kVlinkVnode1) ? - kVlinkVnode2 : kVlinkVnode1; + kVlinkVnode2 : kVlinkVnode1; i++; } while (vnodeif_number != kVlinkVnode1); if ((if1_type == UNC_KT_VUNK_IF) || (if2_type == UNC_KT_VUNK_IF)) { @@ -887,23 +926,41 @@ upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, } vnode_if_type vnif_type[2]; for (int i = 0; i < 2; i++) { - // Set the flag - 2 MSB for boundary and next 2 for internal + // Set the flag - 2 MSB for boundary and next 2 for internal GET_USER_DATA_FLAGS(ck_if[i], rename_flag); if (bound_vlink) { rename_flag |= (i == 0) ? - kVlinkBoundaryNode1 : kVlinkBoundaryNode2; + kVlinkBoundaryNode1 : kVlinkBoundaryNode2; SET_USER_DATA_FLAGS(ck_if[i], rename_flag); } else { rename_flag |= (i == 0) ? kVlinkInternalNode1 : - kVlinkInternalNode2; + kVlinkInternalNode2; + // Notify the POM Component to update the Internal Vlink Flag + + SET_USER_DATA_FLAGS(ck_if[i], rename_flag); + result_code = NotifyPOMForPortMapVlinkFlag(dt_type, + ck_if[i], + dmi, + UNC_OP_CREATE); + + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + for (int i =0; i <2; i++) + DELETE_IF_NOT_NULL(ck_if[i]); + return result_code; + } } - SET_USER_DATA_FLAGS(ck_if[i], rename_flag); + // SET_USER_DATA_FLAGS(ck_if[i], rename_flag); key_type = ck_if[i]->get_key_type(); MoMgrImpl *if_mgr = reinterpret_cast - (const_cast(GetMoManager(key_type))); - - result_code = UpdateVlinkMemIfFlag(dt_type, ck_if[i], - dmi, vnif_type[i], if_mgr, UNC_OP_CREATE); + (const_cast(GetMoManager(key_type))); + + result_code = UpdateVlinkMemIfFlag(dt_type, + ck_if[i], + dmi, + vnif_type[i], + if_mgr, + UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning error %d", result_code); for (int i =0; i <2; i++) @@ -917,10 +974,18 @@ upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, if (if1_type != UNC_KT_VUNK_IF) { SET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); + } else { + /* For vbypass or unknown, only domain info needs to be copied */ + SET_USER_DATA_DOMAIN(ikey, ctrlr_dom[0].domain); + GET_USER_DATA_DOMAIN(ikey, ctrlr_dom[0].domain); } if (if2_type != UNC_KT_VUNK_IF) { SET_USER_DATA_CTRLR_DOMAIN(ikey->get_cfg_val(), ctrlr_dom[1]); GET_USER_DATA_CTRLR_DOMAIN(ikey->get_cfg_val(), ctrlr_dom[1]); + } else { + /* For vbypass or unknown, only domain info needs to be copied */ + SET_USER_DATA_DOMAIN(ikey->get_cfg_val(), ctrlr_dom[1].domain); + GET_USER_DATA_DOMAIN(ikey->get_cfg_val(), ctrlr_dom[1].domain); } /* Set the vnode if types in first 6 bits of flag */ uint8_t flag = 0; @@ -931,9 +996,85 @@ upll_rc_t VlinkMoMgr::UpdateVlinkIf(IpcReqRespHeader *req, flag |= (vnif_type[1] << kVlinkVnodeIf2Type); SET_USER_DATA_FLAGS(ikey, flag); UPLL_LOG_DEBUG("Flags for vnode1if type %d vnode2if type %d value %d", - vnif_type[0], vnif_type[1], flag); + vnif_type[0], vnif_type[1], flag); if (valid_boundary) { UPLL_LOG_TRACE("Valid boundary"); + + /* VlanmapOnBoundary: In case of boundary vlan-map, + * update vnode_if type in vlink flag */ + ConfigKeyVal *dup_vlink = NULL; + result_code = DupConfigKeyVal(dup_vlink, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal returns error:%d", result_code); + for (int i =0; i <2; i++) + DELETE_IF_NOT_NULL(ck_if[i]); + return result_code; + } + + result_code = UpdateVlinkVlanmapFlag(ikey, dup_vlink); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateVlinkMemIfFlag returns error:%d", result_code); + for (int i =0; i <2; i++) + DELETE_IF_NOT_NULL(ck_if[i]); + return result_code; + } + + VlinkNodePosition vlanmap_vnode_number = kVlinkVnode1; + for (int i = 0; i < 2; i++) { + /* Get the key type of vnode_if */ + unc_key_type_t ktype; + ktype = GetVlinkVnodeIfKeyType(dup_vlink, i); + if (ktype == UNC_KT_VBR_VLANMAP) { + MoMgrImpl *mgr = reinterpret_cast(const_cast + (GetMoManager(ktype))); + if (!mgr) { + UPLL_LOG_DEBUG("Vlan-map MoMgr is invalid:%d", ktype); + for (int i =0; i <2; i++) + DELETE_IF_NOT_NULL(ck_if[i]); + delete dup_vlink; + return UPLL_RC_ERR_GENERIC; + } + + ConfigKeyVal *vlanmap_ckv = NULL; + /* Set the flag of cfg_val with vnode_number which will be used in + * vbr vlan-map GetChildConfigKey to populate vbr_vlanmap info */ + SET_USER_DATA_FLAGS(dup_vlink->get_cfg_val(), vlanmap_vnode_number); + + /* Boundary vlink update operation for SW or SD */ + result_code = mgr->GetChildConfigKey(vlanmap_ckv, dup_vlink); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning %d", result_code); + delete dup_vlink; + for (int i =0; i <2; i++) + DELETE_IF_NOT_NULL(ck_if[i]); + return result_code; + } + + val_vlink_t *dup_val = reinterpret_cast + (GetVal(dup_vlink)); + + /* valid flag of boundary_name is INVALID -> + * Boundary vlanmap CREATE req */ + dup_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] = UNC_VF_INVALID; + dup_val->valid[UPLL_IDX_VLAN_ID_VLNK] = UNC_VF_INVALID; + + /* Create request for Boundary vlanmap */ + result_code = mgr->BoundaryVlanmapReq(req, ikey, dup_vlink, + vlanmap_ckv, dmi); + DELETE_IF_NOT_NULL(vlanmap_ckv); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("BoundaryVlanmapReq returns error: %d", result_code); + delete dup_vlink; + for (int i =0; i <2; i++) + DELETE_IF_NOT_NULL(ck_if[i]); + return result_code; + } + } + vlanmap_vnode_number = kVlinkVnode2; + } + DELETE_IF_NOT_NULL(dup_vlink); + /* VlanmapOnBoundary: end */ + result_code = UpdateVnodeIf(dt_type, ikey, ck_if, dmi, req->operation); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning error %d", result_code); @@ -957,7 +1098,7 @@ upll_rc_t VlinkMoMgr::ValidateIfType(ConfigKeyVal **vnodeIf) { UPLL_LOG_DEBUG("Invalid combination for vlink"); return UPLL_RC_ERR_CFG_SEMANTIC; } - break; + break; case UNC_KT_VRT_IF: if ((node2_ktype == UNC_KT_VUNK_IF) || (node2_ktype == UNC_KT_VRT_IF) || (node2_ktype == UNC_KT_VTUNNEL_IF) || @@ -965,7 +1106,7 @@ upll_rc_t VlinkMoMgr::ValidateIfType(ConfigKeyVal **vnodeIf) { UPLL_LOG_DEBUG("Invalid combination for vlink"); return UPLL_RC_ERR_CFG_SEMANTIC; } - break; + break; case UNC_KT_VTUNNEL_IF: case UNC_KT_VTEP_IF: if ((node2_ktype == UNC_KT_VRT_IF) || (node2_ktype == UNC_KT_VTEP_IF) || @@ -973,7 +1114,7 @@ upll_rc_t VlinkMoMgr::ValidateIfType(ConfigKeyVal **vnodeIf) { UPLL_LOG_DEBUG("Invalid combination for vlink"); return UPLL_RC_ERR_CFG_SEMANTIC; } - break; + break; default: UPLL_LOG_DEBUG("Valid Combination"); } @@ -1014,7 +1155,7 @@ upll_rc_t VlinkMoMgr::ValidateIfType(ConfigKeyVal **vnodeIf) { /* Pure Virtual functions from MoMgrImpl */ upll_rc_t VlinkMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, - controller_domain *ctrlr_dom) { + controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; if (!ikey || !ctrlr_dom) { UPLL_LOG_INFO("Illegal parameter"); @@ -1025,7 +1166,7 @@ upll_rc_t VlinkMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, if ((ctrlr_dom->ctrlr && !strlen(reinterpret_cast(ctrlr_dom->ctrlr))) || (ctrlr_dom->domain && - !strlen(reinterpret_cast(ctrlr_dom->domain)))) { + !strlen(reinterpret_cast(ctrlr_dom->domain)))) { UPLL_LOG_DEBUG("Ctrlr domain null"); return UPLL_RC_ERR_GENERIC; } @@ -1036,36 +1177,35 @@ upll_rc_t VlinkMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, if ((ctrlr_dom[1].ctrlr && !strlen(reinterpret_cast(ctrlr_dom[1].ctrlr))) || (ctrlr_dom[1].domain && - !strlen(reinterpret_cast(ctrlr_dom[1].domain)))) { + !strlen(reinterpret_cast(ctrlr_dom[1].domain)))) { UPLL_LOG_DEBUG("Ctrlr domain null"); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("boundary 2nd ctrlr_dom %s %s", - ctrlr_dom[1].ctrlr, ctrlr_dom[1].domain); + ctrlr_dom[1].ctrlr, ctrlr_dom[1].domain); } return UPLL_RC_SUCCESS; } upll_rc_t VlinkMoMgr::UpdateVnodeIf(upll_keytype_datatype_t dt_type, - ConfigKeyVal *ikey, ConfigKeyVal **vnif, - DalDmlIntf *dmi, - unc_keytype_operation_t op) { + ConfigKeyVal *ikey, ConfigKeyVal **vnif, + DalDmlIntf *dmi, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (ikey == NULL || dt_type == UPLL_DT_INVALID || dmi == NULL) return UPLL_RC_ERR_GENERIC; upll_rc_t result_code = UPLL_RC_SUCCESS; uint8_t valid_boundary = reinterpret_cast(GetVal(ikey))-> - valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; + valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; if (valid_boundary == UNC_VF_VALID) { for (int i = 0; i < 2; i++) { -#if 0 - result_code = CheckPortmapValidandUpdateVbrIf(ikey, vnif[i], - dmi, dt_type); -#else + /* VlanmapOnBoundary: for vlanmap continue */ + if (GetVlinkVnodeIfKeyType(ikey, i) == UNC_KT_VBR_VLANMAP) + continue; + UPLL_LOG_TRACE("Before UpdatePortmap %s", (vnif[i]->ToStrAll()).c_str()); result_code = UpdateVnodeIfPortmap(ikey, vnif[i], dmi, dt_type, op); -#endif if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Updation of VnIf Portmap failed %d", result_code); return result_code; @@ -1075,7 +1215,7 @@ upll_rc_t VlinkMoMgr::UpdateVnodeIf(upll_keytype_datatype_t dt_type, for (int i = 0; i < 2; i++) { unc_key_type_t ktype = vnif[i]->get_key_type(); MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(ktype))); + (GetMoManager(ktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; @@ -1087,7 +1227,7 @@ upll_rc_t VlinkMoMgr::UpdateVnodeIf(upll_keytype_datatype_t dt_type, SET_USER_DATA_FLAGS(vnif[i], if_flag); vnode_if_type vnif_type; result_code = UpdateVlinkMemIfFlag(dt_type, vnif[i], dmi, - vnif_type, mgr, UNC_OP_DELETE); + vnif_type, mgr, UNC_OP_DELETE); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning error %d", result_code); return result_code; @@ -1095,62 +1235,66 @@ upll_rc_t VlinkMoMgr::UpdateVnodeIf(upll_keytype_datatype_t dt_type, #endif val_port_map *portmap = NULL; switch (ktype) { - case UNC_KT_VBR_IF: - { - val_drv_vbr_if *drv_ifval = reinterpret_cast - GetVal(vnif[i]); - drv_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = - UNC_VF_INVALID; - drv_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID_NO_VALUE; - result_code = reinterpret_cast(mgr)-> - UpdatePortMap(vnif[i], dt_type, dmi, vnif[i]); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Clear Portmap failed %d", result_code); - return result_code; - } - break; - } - case UNC_KT_VTEP_IF: - { - val_vtep_if *drv_ifval = reinterpret_cast - GetVal(vnif[i]); - drv_ifval->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; - drv_ifval->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_VALID_NO_VALUE; - portmap = &drv_ifval->portmap; - } - /* fall through intended */ - case UNC_KT_VTUNNEL_IF: - if (ktype == UNC_KT_VTUNNEL_IF) { - val_vtunnel_if *drv_ifval = reinterpret_cast - GetVal(vnif[i]); - portmap = &drv_ifval->portmap; - drv_ifval->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_INVALID; - drv_ifval->valid[UPLL_IDX_PORT_MAP_VTNL_IF] = UNC_VF_VALID_NO_VALUE; - } - portmap->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_VALID_NO_VALUE; - uuu::upll_strncpy(portmap->logical_port_id, "\0", 1); - portmap->valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; - portmap->valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID_NO_VALUE; - portmap->tagged = UPLL_VLAN_UNTAGGED; - portmap->vlan_id = 0; - break; - case UNC_KT_VUNK_IF: - break; - default: - UPLL_LOG_DEBUG("Unsupported keytype %d", ktype); - return UPLL_RC_ERR_GENERIC; + case UNC_KT_VBR_IF: + { + val_drv_vbr_if *drv_ifval = reinterpret_cast + GetVal(vnif[i]); + drv_ifval->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = + UNC_VF_INVALID; + drv_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = + UNC_VF_VALID_NO_VALUE; + result_code = reinterpret_cast(mgr)-> + UpdatePortMap(vnif[i], dt_type, dmi, vnif[i]); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Clear Portmap failed %d", result_code); + return result_code; + } + break; + } + case UNC_KT_VTEP_IF: + { + val_vtep_if *drv_ifval = reinterpret_cast + GetVal(vnif[i]); + drv_ifval->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; + drv_ifval->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_VALID_NO_VALUE; + portmap = &drv_ifval->portmap; + } + /* fall through intended */ + case UNC_KT_VTUNNEL_IF: + if (ktype == UNC_KT_VTUNNEL_IF) { + val_vtunnel_if *drv_ifval = reinterpret_cast + GetVal(vnif[i]); + portmap = &drv_ifval->portmap; + drv_ifval->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_INVALID; + drv_ifval->valid[UPLL_IDX_PORT_MAP_VTNL_IF] = UNC_VF_VALID_NO_VALUE; + } + portmap->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = + UNC_VF_VALID_NO_VALUE; + uuu::upll_strncpy(portmap->logical_port_id, "\0", 1); + portmap->valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; + portmap->valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID_NO_VALUE; + portmap->tagged = UPLL_VLAN_UNTAGGED; + portmap->vlan_id = 0; + break; + case UNC_KT_VUNK_IF: + break; + /* VlanmapOnBoundary: vlanmap case continue */ + case UNC_KT_VBR_VLANMAP: + continue; + default: + UPLL_LOG_DEBUG("Unsupported keytype %d", ktype); + return UPLL_RC_ERR_GENERIC; } DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; result_code = mgr->UpdateConfigDB(vnif[i], dt_type, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); + dmi, &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning %d", result_code); return result_code; } } } else { - UPLL_LOG_DEBUG("Internal vlink"); + UPLL_LOG_DEBUG("Internal vlink"); } if (ck_boundary) delete ck_boundary; @@ -1161,20 +1305,21 @@ upll_rc_t VlinkMoMgr::UpdateVnodeIf(upll_keytype_datatype_t dt_type, #if 0 upll_rc_t VlinkMoMgr::CheckPortmapValidandUpdateVbrIf( ConfigKeyVal *ikey, ConfigKeyVal *ck_drv_vbr_if, DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type) { + upll_keytype_datatype_t dt_type) { UPLL_FUNC_TRACE; if (ikey == NULL || ck_boundary == NULL || dmi == NULL || ck_drv_vbr_if == NULL || dt_type == UPLL_DT_INVALID) return UPLL_RC_ERR_GENERIC; upll_rc_t result_code = UPLL_RC_SUCCESS; VbrIfMoMgr *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VBR_IF))); + (GetMoManager + (UNC_KT_VBR_IF))); if (!mgr) { UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; } uint8_t valid_port = reinterpret_cast - (GetVal(ck_drv_vbr_if))->vbr_if_val.valid[UPLL_IDX_PM_DRV_VBRI]; + (GetVal(ck_drv_vbr_if))->vbr_if_val.valid[UPLL_IDX_PM_DRV_VBRI]; if (valid_port == UNC_VF_INVALID) { result_code = ConverttoDriverPortMap(ck_drv_vbr_if, ikey); if (result_code != UPLL_RC_SUCCESS) { @@ -1183,16 +1328,16 @@ upll_rc_t VlinkMoMgr::CheckPortmapValidandUpdateVbrIf( } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = mgr->UpdateConfigDB(ck_drv_vbr_if, dt_type, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); + dmi, &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Updation failed %d", result_code); - return result_code; + UPLL_LOG_DEBUG("Updation failed %d", result_code); + return result_code; } } else if (valid_port == UNC_VF_VALID) { #if 0 if (CompareVbrIfWithPhysicalData(ck_drv_vbr_if, ck_boundary, ikey)) { - UPLL_LOG_DEBUG("VbrIf is already configured"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("VbrIf is already configured"); + return UPLL_RC_ERR_GENERIC; } #endif } @@ -1202,8 +1347,8 @@ upll_rc_t VlinkMoMgr::CheckPortmapValidandUpdateVbrIf( upll_rc_t VlinkMoMgr::UpdateVnodeIfPortmap( ConfigKeyVal *ikey, ConfigKeyVal *ck_vn_if, DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op) { + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (ikey == NULL || ck_boundary == NULL || dmi == NULL || ck_vn_if == NULL || dt_type == UPLL_DT_INVALID) { @@ -1215,50 +1360,62 @@ upll_rc_t VlinkMoMgr::UpdateVnodeIfPortmap( // val_port_map *port_map_val; val_vlink *vlink_val = reinterpret_cast(GetVal(ikey)); MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(ktype))); + (GetMoManager(ktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("ktype %d", ktype); - uint8_t valid_port; + uint8_t valid_port = 0; void *val_if = GetVal(ck_vn_if); switch (ktype) { - case UNC_KT_VTEP_IF: - { - val_vtep_if *vtep_if = reinterpret_cast(val_if); - vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; - valid_port = vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI]; - // port_map_val = &vtep_if->portmap; - break; - } - case UNC_KT_VTUNNEL_IF: - { - val_vtunnel_if *vtunnel_if = reinterpret_cast(val_if); - vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_INVALID; - valid_port = vtunnel_if->valid[UPLL_IDX_PORT_MAP_VTNL_IF]; - // port_map_val = &vtunnel_if->portmap; - break; - } - case UNC_KT_VBR_IF: - { - val_drv_vbr_if *vbr_if = reinterpret_cast(val_if); - vbr_if->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_INVALID; - valid_port = vbr_if->vbr_if_val.valid[UPLL_IDX_PM_VBRI]; - // port_map_val = &vbr_if->vbr_if_val.portmap; - break; - } - case UNC_KT_VUNK_IF: - return UPLL_RC_SUCCESS; - default: - UPLL_LOG_DEBUG("Unsupported keytype %d", ktype); - return UPLL_RC_ERR_CFG_SEMANTIC; + case UNC_KT_VTEP_IF: + { + val_vtep_if *vtep_if = reinterpret_cast(val_if); + vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; + valid_port = vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI]; + // port_map_val = &vtep_if->portmap; + break; + } + case UNC_KT_VTUNNEL_IF: + { + val_vtunnel_if *vtunnel_if = reinterpret_cast(val_if); + vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_INVALID; + valid_port = vtunnel_if->valid[UPLL_IDX_PORT_MAP_VTNL_IF]; + // port_map_val = &vtunnel_if->portmap; + break; + } + case UNC_KT_VBR_IF: + { + val_drv_vbr_if *vbr_if = reinterpret_cast(val_if); + vbr_if->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_INVALID; + valid_port = vbr_if->vbr_if_val.valid[UPLL_IDX_PM_VBRI]; + result_code = NotifyPOMForPortMapVlinkFlag(dt_type, + ck_vn_if, + dmi, + op); + + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + return result_code; + } + // port_map_val = &vbr_if->vbr_if_val.portmap; + break; + } + case UNC_KT_VUNK_IF: + break; + /* VlanmapOnBoundary: During update: input received is vlanmap */ + case UNC_KT_VBR_VLANMAP: + return UPLL_RC_SUCCESS; + default: + UPLL_LOG_DEBUG("Unsupported keytype %d", ktype); + return UPLL_RC_ERR_CFG_SEMANTIC; } UPLL_LOG_DEBUG("valid_port %d valid vlanid %d", valid_port, - vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]); + vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]); if ((valid_port == UNC_VF_INVALID) || ((valid_port == UNC_VF_VALID) && (op != UNC_OP_CREATE))) { - result_code = ConverttoDriverPortMap(ck_vn_if, ikey); + result_code = ConverttoDriverPortMap(ck_vn_if, ikey, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning error %d", result_code); return result_code; @@ -1267,6 +1424,10 @@ upll_rc_t VlinkMoMgr::UpdateVnodeIfPortmap( UPLL_LOG_DEBUG("Vlink of a mapped interface is not allowed"); return UPLL_RC_ERR_CFG_SEMANTIC; } + + if (ktype == UNC_KT_VUNK_IF) + return UPLL_RC_SUCCESS; + #if 0 else if (valid_port == UNC_VF_VALID) { if (op == UNC_OP_CREATE) { @@ -1276,32 +1437,43 @@ upll_rc_t VlinkMoMgr::UpdateVnodeIfPortmap( port_map_val->tagged = UPLL_VLAN_TAGGED; port_map_val->valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; switch (vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]) { - case UNC_VF_VALID: - port_map_val->vlan_id = vlink_val->vlan_id; - break; - case UNC_VF_VALID_NO_VALUE: - port_map_val->vlan_id = 0; - port_map_val->tagged = UPLL_VLAN_UNTAGGED; - break; - default: - break; + case UNC_VF_VALID: + port_map_val->vlan_id = vlink_val->vlan_id; + break; + case UNC_VF_VALID_NO_VALUE: + port_map_val->vlan_id = 0; + port_map_val->tagged = UPLL_VLAN_UNTAGGED; + break; + default: + break; } port_map_val->valid[UPLL_IDX_VLAN_ID_PM] = - vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]; + vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]; #if 0 if (CompareVbrIfWithPhysicalData(ck_drv_vbr_if, ck_boundary, ikey)) { - UPLL_LOG_DEBUG("VbrIf is already configured"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("VbrIf is already configured"); + return UPLL_RC_ERR_GENERIC; } #endif } #endif + IpcReqRespHeader req; + memset(&req, 0, sizeof(IpcReqRespHeader)); + req.datatype = dt_type; + req.operation = op; + + result_code = mgr->IsLogicalPortAndVlanIdInUse(ck_vn_if, dmi, &req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("LogicalPort VlanId validation failed"); + return result_code; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = mgr->UpdateConfigDB(ck_vn_if, dt_type, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); + dmi, &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Updation failed %d", result_code); - return result_code; + UPLL_LOG_DEBUG("Updation failed %d", result_code); + return result_code; } return result_code; } @@ -1312,143 +1484,206 @@ bool VlinkMoMgr::CompareVbrIfWithPhysicalData(ConfigKeyVal *ck_drv_vbr_if, if (ikey == NULL || ck_drv_vbr_if == NULL || ck_boundary_data == NULL) return UPLL_RC_ERR_GENERIC; val_boundary *boundary_val_data = reinterpret_cast - ((GetVal(ck_boundary_data))); + ((GetVal(ck_boundary_data))); if (boundary_val_data == NULL) { UPLL_LOG_DEBUG("Boundary invalid"); return UPLL_RC_ERR_GENERIC; } #if 0 val_drv_port_map vbr_port_data = reinterpret_cast( - (GetVal(ck_drv_vbr_if)))->portmap; + (GetVal(ck_drv_vbr_if)))->portmap; if (*(reinterpret_cast - (ikey->get_cfg_val()->get_user_data())) & kVnode1) { + (ikey->get_cfg_val()->get_user_data())) & kVnode1) { if (boundary_val_data->valid[kIdxValBoundarySwitchid1] != UNC_VF_VALID && - vbr_port_data.valid[UPLL_IDX_SWITCH_ID_DRV_PM] != UNC_VF_VALID) - return false; + vbr_port_data.valid[UPLL_IDX_SWITCH_ID_DRV_PM] != UNC_VF_VALID) + return false; else if (!strcmp(reinterpret_cast(&boundary_val_data->switch_id_1), - reinterpret_cast&vbr_port_data.switch_id)) - return false; + reinterpret_cast&vbr_port_data.switch_id)) + return false; if (boundary_val_data->valid[kIdxValBoundaryPortname1] != UNC_VF_VALID && vbr_port_data.valid[UPLL_IDX_PORT_NAME_DRV_PM] != UNC_VF_VALID) - return false; + return false; else if (!strcmp(reinterpret_cast(&boundary_val_data->port_name_1), - reinterpret_cast)(&vbr_port_data.port_name))) - return false; + reinterpret_cast)(&vbr_port_data.port_name))) + return false; } else if (*(reinterpret_cast(ikey->get_cfg_val()->get_user_data())) - & kVnode2) { + & kVnode2) { if (boundary_val_data->valid[kIdxValBoundarySwitchid2] != UNC_VF_VALID && vbr_port_data.valid[UPLL_IDX_SWITCH_ID_PM] != UNC_VF_VALID) - return false; + return false; else if (!strcmp(reinterpret_cast(boundary_val_data->switch_id_2), - reinterpret_cast(&vbr_port_data.switch_id))) - return false; + reinterpret_cast(&vbr_port_data.switch_id))) + return false; if (boundary_val_data->valid[kIdxValBoundaryPortname2] != UNC_VF_VALID - && vbr_port_data.valid[UPLL_IDX_PORT_NAME_DRV_PM] != UNC_VF_VALID) - return false; + && vbr_port_data.valid[UPLL_IDX_PORT_NAME_DRV_PM] != UNC_VF_VALID) + return false; else if (!strcmp(reinterpret_cast(&boundary_val_data->port_name_2), - reinterpret_cast(&vbr_port_data.port_name))) - return false; + reinterpret_cast(&vbr_port_data.port_name))) + return false; } if (vlan_id != NULL && vbr_port_data.valid[UPLL_IDX_VLAN_ID_DRV_PM] - == UNC_VF_VALID ) - if (vlan_id != vbr_port_data.vlan_id) - return false; + == UNC_VF_VALID ) + if (vlan_id != vbr_port_data.vlan_id) + return false; #endif return true; } upll_rc_t VlinkMoMgr::ConverttoDriverPortMap(ConfigKeyVal *iokey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; if (ikey == NULL || iokey == NULL || ikey->get_cfg_val() == NULL || iokey->get_cfg_val() == NULL) { UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; } val_boundary *boundary_val_data = reinterpret_cast - (GetVal(ck_boundary)); + (GetVal(ck_boundary)); if (boundary_val_data == NULL) { UPLL_LOG_DEBUG("Invalid parameter"); return UPLL_RC_ERR_GENERIC; } unc_key_type_t ktype = iokey->get_key_type(); - val_port_map *port_map_val; + val_port_map *port_map_val = NULL; + UPLL_LOG_DEBUG("ktype %d " , ktype); switch (ktype) { - case UNC_KT_VBR_IF: - { - val_drv_vbr_if *drv_ifval = reinterpret_cast - (GetVal(iokey)); - if (!drv_ifval) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - if (drv_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_INVALID) { - std::string if_name = reinterpret_cast - (reinterpret_cast(iokey->get_key())->if_name); - if (strlen(if_name.c_str()) >= 10) { - if_name.erase(10); - } - - struct timeval _timeval; - struct timezone _timezone; - gettimeofday(&_timeval, &_timezone); - - std::stringstream ss; - ss << if_name << _timeval.tv_sec << _timeval.tv_usec; - std::string unique_id = ss.str(); - std::string vex_name("vx_"); - vex_name += unique_id; - std::string vex_if_name("vi_"); - vex_if_name += unique_id; - std::string vex_link_name("vl_"); - vex_link_name += unique_id; - - drv_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; - drv_ifval->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(drv_ifval->vex_name, vex_name.c_str(), - kMaxLenVnodeName+1); - - drv_ifval->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(reinterpret_cast(drv_ifval->vex_if_name), - vex_if_name.c_str(), kMaxLenInterfaceName+1); - - drv_ifval->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(reinterpret_cast(drv_ifval->vex_link_name), - vex_link_name.c_str(), kMaxLenVlinkName+1); - } - port_map_val = &drv_ifval->vbr_if_val.portmap; - break; - } - case UNC_KT_VTEP_IF: - { - val_vtep_if *drv_ifval = reinterpret_cast - (GetVal(iokey)); - if (!drv_ifval) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - drv_ifval->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_VALID; - port_map_val = &drv_ifval->portmap; - break; - } - case UNC_KT_VTUNNEL_IF: - { - val_vtunnel_if *drv_ifval = reinterpret_cast - (GetVal(iokey)); - if (!drv_ifval) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - drv_ifval->valid[UPLL_IDX_PORT_MAP_VTNL_IF] = UNC_VF_VALID; - port_map_val = &drv_ifval->portmap; - break; - } - case UNC_KT_VUNK_IF: - return UPLL_RC_SUCCESS; - default: - UPLL_LOG_DEBUG("Unsupported keytype %d", ktype); - return UPLL_RC_ERR_GENERIC; + case UNC_KT_VBR_IF: + { + val_drv_vbr_if *drv_ifval = reinterpret_cast + (GetVal(iokey)); + if (!drv_ifval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *okey = NULL; + if (drv_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_INVALID) { + MoMgrImpl *vbrif_mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VBR_IF))); + if (!vbrif_mgr) { + UPLL_LOG_ERROR("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + result_code = vbrif_mgr->GetChildConfigKey(okey, iokey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("GetChilConfigKey Failed"); + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag}; + result_code = vbrif_mgr->ReadConfigDB(okey, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_ERROR("ReadConfigDB failure %d", result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + + bool port_map_in_run = false; + if (result_code == UPLL_RC_SUCCESS) { + val_drv_vbr_if *drv_ifval1 = reinterpret_cast + (GetVal(okey)); + if (drv_ifval1 == NULL) { + UPLL_LOG_ERROR("val vbr is NULL"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + if (drv_ifval1->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == + UNC_VF_VALID) { + port_map_in_run = true; + drv_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; + drv_ifval->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(drv_ifval->vex_name, drv_ifval1->vex_name, + kMaxLenVnodeName+1); + drv_ifval->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(reinterpret_cast + (drv_ifval->vex_if_name), + drv_ifval1->vex_if_name, + kMaxLenInterfaceName+1); + drv_ifval->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(reinterpret_cast + (drv_ifval->vex_link_name), + drv_ifval1->vex_link_name, kMaxLenVlinkName+1); + } + } + if (!port_map_in_run) { + UPLL_LOG_TRACE("Generate vexternal and vexternal if name"); + std::string if_name = reinterpret_cast + (reinterpret_cast(iokey->get_key())->if_name); + if (strlen(if_name.c_str()) >= 10) { + if_name.erase(10); + } + + struct timeval _timeval; + struct timezone _timezone; + gettimeofday(&_timeval, &_timezone); + + std::stringstream ss; + ss << if_name << _timeval.tv_sec << _timeval.tv_usec; + std::string unique_id = ss.str(); + std::string vex_name("vx_"); + vex_name += unique_id; + std::string vex_if_name("vi_"); + vex_if_name += unique_id; + std::string vex_link_name("vl_"); + vex_link_name += unique_id; + + drv_ifval->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; + drv_ifval->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(drv_ifval->vex_name, vex_name.c_str(), + kMaxLenVnodeName+1); + + drv_ifval->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(reinterpret_cast + (drv_ifval->vex_if_name), + vex_if_name.c_str(), kMaxLenInterfaceName+1); + + drv_ifval->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_VALID; + uuu::upll_strncpy(reinterpret_cast + (drv_ifval->vex_link_name), + vex_link_name.c_str(), kMaxLenVlinkName+1); + } + } + port_map_val = &drv_ifval->vbr_if_val.portmap; + DELETE_IF_NOT_NULL(okey); + break; + } + case UNC_KT_VTEP_IF: + { + val_vtep_if *drv_ifval = reinterpret_cast + (GetVal(iokey)); + if (!drv_ifval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + drv_ifval->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_VALID; + port_map_val = &drv_ifval->portmap; + break; + } + case UNC_KT_VTUNNEL_IF: + { + val_vtunnel_if *drv_ifval = reinterpret_cast + (GetVal(iokey)); + if (!drv_ifval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + drv_ifval->valid[UPLL_IDX_PORT_MAP_VTNL_IF] = UNC_VF_VALID; + port_map_val = &drv_ifval->portmap; + break; + } + case UNC_KT_VUNK_IF: + break; + default: + UPLL_LOG_DEBUG("Unsupported keytype %d", ktype); + return UPLL_RC_ERR_GENERIC; } uint8_t rename = 0; controller_domain ctrlr_dom[2] = { { NULL, NULL }, { NULL, NULL } }; @@ -1458,7 +1693,7 @@ upll_rc_t VlinkMoMgr::ConverttoDriverPortMap(ConfigKeyVal *iokey, uppl_val_boundary_index index = kIdxBoundaryLogicalPortId1; GET_USER_DATA_FLAGS(iokey, rename); - upll_rc_t result_code = GetControllerDomainId(ikey, &ctrlr_dom[0]); + result_code = GetControllerDomainId(ikey, &ctrlr_dom[0]); if (UPLL_RC_SUCCESS != result_code) return result_code; @@ -1469,55 +1704,75 @@ upll_rc_t VlinkMoMgr::ConverttoDriverPortMap(ConfigKeyVal *iokey, node_ctrlr = ctrlr_dom[1].ctrlr; node_dom = ctrlr_dom[1].domain; } - if (!node_ctrlr || !node_dom) { + if ((!node_ctrlr && (ktype != UNC_KT_VUNK_IF)) || !node_dom) { UPLL_LOG_DEBUG("Returning error\n"); return UPLL_RC_ERR_GENERIC; } - if (!(strcmp(reinterpret_cast(node_ctrlr), - reinterpret_cast(boundary_val_data->controller_name1))) && - !(strcmp(reinterpret_cast(node_dom), - reinterpret_cast(boundary_val_data->domain_name1)))) { - index = kIdxBoundaryLogicalPortId1; - port_id = reinterpret_cast(boundary_val_data->logical_port_id1); + if (!node_ctrlr && node_dom && (ktype == UNC_KT_VUNK_IF)) { + if (!(strcmp(reinterpret_cast(node_dom), + reinterpret_cast + (boundary_val_data->domain_name2))) + || (!(strcmp(reinterpret_cast(node_dom), + reinterpret_cast + (boundary_val_data->domain_name1))))) { + UPLL_LOG_DEBUG("Controller / Domain Match"); + } else { + UPLL_LOG_DEBUG("Wrong Controller / domain \n"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else if (!(strcmp(reinterpret_cast(node_ctrlr), + reinterpret_cast + (boundary_val_data->controller_name1))) && + !(strcmp(reinterpret_cast(node_dom), + reinterpret_cast + (boundary_val_data->domain_name1)))) { + index = kIdxBoundaryLogicalPortId1; + port_id = reinterpret_cast(boundary_val_data->logical_port_id1); } else if (!(strcmp(reinterpret_cast(node_ctrlr), - reinterpret_cast(boundary_val_data->controller_name2))) && + reinterpret_cast + (boundary_val_data->controller_name2))) && !(strcmp(reinterpret_cast(node_dom), - reinterpret_cast(boundary_val_data->domain_name2)))) { - index = kIdxBoundaryLogicalPortId2; - port_id = reinterpret_cast(boundary_val_data->logical_port_id2); + reinterpret_cast + (boundary_val_data->domain_name2)))) { + index = kIdxBoundaryLogicalPortId2; + port_id = reinterpret_cast(boundary_val_data->logical_port_id2); } else { - UPLL_LOG_DEBUG("Wrong Controller / domain \n"); - return UPLL_RC_ERR_CFG_SEMANTIC; + UPLL_LOG_DEBUG("Wrong Controller / domain \n"); + return UPLL_RC_ERR_CFG_SEMANTIC; } + // Return as Vunknown Interface doesnt have portmap + if (ktype == UNC_KT_VUNK_IF) + return UPLL_RC_SUCCESS; + if (boundary_val_data->valid[index] == UNC_VF_VALID) { - port_map_val->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; - uuu::upll_strncpy(port_map_val->logical_port_id, - port_id, kMaxLenLogicalPortId+1); + port_map_val->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; + uuu::upll_strncpy(port_map_val->logical_port_id, + port_id, kMaxLenLogicalPortId+1); } else if (boundary_val_data->valid[index] == UNC_VF_VALID_NO_VALUE) { - port_map_val->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID_NO_VALUE; - uuu::upll_strncpy(port_map_val->logical_port_id, "\0", 1); + port_map_val->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID_NO_VALUE; + uuu::upll_strncpy(port_map_val->logical_port_id, "\0", 1); } else { - port_map_val->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_INVALID; + port_map_val->valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_INVALID; } val_vlink *vlink_val = reinterpret_cast(GetVal(ikey)); port_map_val->valid[UPLL_IDX_VLAN_ID_PM] = - vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]; + vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]; switch (vlink_val->valid[UPLL_IDX_VLAN_ID_VLNK]) { - case UNC_VF_VALID: - port_map_val->vlan_id = vlink_val->vlan_id; - if (port_map_val->vlan_id == 0xFFFF) + case UNC_VF_VALID: + port_map_val->vlan_id = vlink_val->vlan_id; + if (port_map_val->vlan_id == 0xFFFF) + port_map_val->tagged = UPLL_VLAN_UNTAGGED; + else + port_map_val->tagged = UPLL_VLAN_TAGGED; + port_map_val->valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; + break; + case UNC_VF_VALID_NO_VALUE: + port_map_val->vlan_id = 0; port_map_val->tagged = UPLL_VLAN_UNTAGGED; - else - port_map_val->tagged = UPLL_VLAN_TAGGED; - port_map_val->valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; - break; - case UNC_VF_VALID_NO_VALUE: - port_map_val->vlan_id = 0; - port_map_val->tagged = UPLL_VLAN_UNTAGGED; - port_map_val->valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; - break; - default: - break; + port_map_val->valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; + break; + default: + break; } return UPLL_RC_SUCCESS; } @@ -1529,14 +1784,68 @@ upll_rc_t VlinkMoMgr::CheckIfMemberOfVlink(ConfigKeyVal *ck_vnif, vn_if_type &interface_type) { UPLL_FUNC_TRACE; uint8_t if_flag = 0; - if (!ck_vnif) { + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ck_vnif || !(ck_vnif->get_key())) { UPLL_LOG_DEBUG("Invalid ck_vnif"); return UPLL_RC_ERR_GENERIC; } + /* Retrive the interface info from vbr_if_tbl(with VTN and vExternal info) + * which is required to search in vlink_tbl */ + if (ck_vnif->get_key_type() == UNC_KT_VBR_IF) { + MoMgrImpl *vbr_if_mgr = reinterpret_cast + (const_cast( + GetMoManager(UNC_KT_VBR_IF))); + key_vbr_if *err_key = reinterpret_cast(ck_vnif->get_key()); + val_drv_vbr_if *drv_val = reinterpret_cast + GetVal(ck_vnif); + if (vbr_if_mgr->IsValidKey(ck_vnif->get_key(), + uudst::vbridge_interface::kDbiVbrName) && + vbr_if_mgr->IsValidKey(ck_vnif->get_key(), + uudst::vbridge_interface::kDbiIfName)) { + UPLL_LOG_DEBUG("Key is complete"); + } else { + if (!drv_val) return UPLL_RC_ERR_NO_SUCH_INSTANCE; + if (drv_val->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] == UNC_VF_VALID) { + ConfigKeyVal *ckv_drv_vbr_if = NULL; + result_code = vbr_if_mgr->GetChildConfigKey(ckv_drv_vbr_if, ck_vnif); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + return result_code; + } + val_drv_vbr_if *valif = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); + uuu::upll_strncpy(valif->vex_name, drv_val->vex_name, + (kMaxLenVnodeName+1)); + valif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + + ConfigVal *ck_val = new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, valif); + ckv_drv_vbr_if->SetCfgVal(ck_val); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag}; + result_code = vbr_if_mgr->ReadConfigDB(ckv_drv_vbr_if, + dt_type, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Interface not found"); + delete ckv_drv_vbr_if; + return (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? + UPLL_RC_ERR_GENERIC : result_code; + } + key_vbr_if *drv_if_key = reinterpret_cast + (ckv_drv_vbr_if->get_key()); + uuu::upll_strncpy(err_key->vbr_key.vbridge_name, + drv_if_key->vbr_key.vbridge_name, + kMaxLenVnodeName+1); + uuu::upll_strncpy(err_key->if_name, + drv_if_key->if_name, + kMaxLenInterfaceName+1); + delete ckv_drv_vbr_if; + } + } + } interface_type = kUnlinkedInterface; GET_USER_DATA_FLAGS(ck_vnif, if_flag); SET_USER_DATA_FLAGS(ck_vnif, kVlinkVnode1); - upll_rc_t result_code = GetVlinkKeyVal(ck_vnif, dt_type, ck_vlink, dmi); + result_code = GetVlinkKeyVal(ck_vnif, dt_type, ck_vlink, dmi); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { // check if the vBrIf is the second VnodeIf in VLINK TBL SET_USER_DATA_FLAGS(ck_vnif, kVlinkVnode2); @@ -1550,19 +1859,19 @@ upll_rc_t VlinkMoMgr::CheckIfMemberOfVlink(ConfigKeyVal *ck_vnif, } /* the interface is not part of a boundary vlink */ if (result_code != UPLL_RC_SUCCESS) { - if (ck_vlink) delete ck_vlink; - ck_vlink = NULL; - interface_type = kUnlinkedInterface; + if (ck_vlink) delete ck_vlink; + ck_vlink = NULL; + interface_type = kUnlinkedInterface; } else { if (!ck_vlink) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; } uint8_t valid_boundary = reinterpret_cast(GetVal(ck_vlink))-> - valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; + valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; if (interface_type == kUnlinkedInterface) { interface_type = (valid_boundary)? - kVlinkBoundaryNode2:kVlinkInternalNode2; + kVlinkBoundaryNode2:kVlinkInternalNode2; } else if (interface_type == kVlinkInternalNode1) { interface_type = (valid_boundary)? kVlinkBoundaryNode1: interface_type; } else { @@ -1575,9 +1884,9 @@ upll_rc_t VlinkMoMgr::CheckIfMemberOfVlink(ConfigKeyVal *ck_vnif, upll_rc_t VlinkMoMgr::GetVlinkKeyVal(ConfigKeyVal *keyVal, - upll_keytype_datatype_t dt_type, - ConfigKeyVal *&ck_vlink, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + ConfigKeyVal *&ck_vlink, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; uint8_t mem_vlink = 0; if (!keyVal) { @@ -1585,40 +1894,73 @@ upll_rc_t VlinkMoMgr::GetVlinkKeyVal(ConfigKeyVal *keyVal, return UPLL_RC_ERR_GENERIC; } val_vlink *link_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vlink))); + (ConfigKeyVal::Malloc(sizeof(val_vlink))); upll_rc_t res_code = UPLL_RC_SUCCESS; - key_vbr_if *vbr_key_if = reinterpret_cast(keyVal->get_key()); - if (!vbr_key_if) { - UPLL_LOG_ERROR("Invalid key"); - free(link_val); - return UPLL_RC_ERR_GENERIC; - } - GET_USER_DATA_FLAGS(keyVal, mem_vlink); - mem_vlink &= VIF_TYPE; - if (mem_vlink & kVlinkVnode2) { - uuu::upll_strncpy(link_val->vnode2_name, - vbr_key_if->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(link_val->vnode2_ifname, - vbr_key_if->if_name, (kMaxLenVnodeName + 1)); - link_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_VALID; - link_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_VALID; - link_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_INVALID; - link_val->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_INVALID; - } else { - uuu::upll_strncpy(link_val->vnode1_name, - vbr_key_if->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(link_val->vnode1_ifname, - vbr_key_if->if_name, (kMaxLenVnodeName + 1)); - link_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_VALID; - link_val->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_VALID; - link_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_INVALID; - link_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_INVALID; + unc_key_type_t keytype = keyVal->get_key_type(); + + /* VlanmapOnBoundary: Added vlanmap check */ + if (keytype != UNC_KT_VBR_VLANMAP) { + key_vbr_if *vbr_key_if = reinterpret_cast(keyVal->get_key()); + if (!vbr_key_if) { + UPLL_LOG_ERROR("Invalid key"); + free(link_val); + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_FLAGS(keyVal, mem_vlink); + mem_vlink &= VIF_TYPE; + if (mem_vlink & 0x50) { + uuu::upll_strncpy(link_val->vnode2_name, + vbr_key_if->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(link_val->vnode2_ifname, + vbr_key_if->if_name, (kMaxLenVnodeName + 1)); + link_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_VALID; + link_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_VALID; + link_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_INVALID; + link_val->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_INVALID; + } else { + uuu::upll_strncpy(link_val->vnode1_name, + vbr_key_if->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(link_val->vnode1_ifname, + vbr_key_if->if_name, (kMaxLenVnodeName + 1)); + link_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_VALID; + link_val->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_VALID; + link_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_INVALID; + link_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_INVALID; + } + /* VlanmapOnBoundary: changes*/ + } else { + key_vlan_map *vlanmap_key = reinterpret_cast + (keyVal->get_key()); + if (!vlanmap_key) { + UPLL_LOG_ERROR("Invalid key"); + free(link_val); + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_FLAGS(keyVal, mem_vlink); + mem_vlink &= VIF_TYPE; + if (mem_vlink & kVlinkVnode2) { + uuu::upll_strncpy(link_val->vnode2_name, + vlanmap_key->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + link_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_VALID; + link_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_INVALID; + link_val->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_INVALID; + link_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_INVALID; + } else { + uuu::upll_strncpy(link_val->vnode1_name, + vlanmap_key->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + link_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_VALID; + link_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_INVALID; + link_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_INVALID; + link_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_INVALID; + } } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; /* get vlink key from if key */ upll_rc_t result_code = GetChildConfigKey(ck_vlink, keyVal); @@ -1629,7 +1971,7 @@ upll_rc_t VlinkMoMgr::GetVlinkKeyVal(ConfigKeyVal *keyVal, } ck_vlink->AppendCfgVal(IpctSt::kIpcStValVlink, link_val); res_code = ReadConfigDB(ck_vlink, dt_type, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); UPLL_LOG_TRACE(" Vlink ReadConfigDB After %d", res_code); return res_code; } @@ -1638,8 +1980,10 @@ upll_rc_t VlinkMoMgr::GetVlinkKeyVal(ConfigKeyVal *keyVal, * Based on the key type the bind info will pass */ -bool VlinkMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl) { +bool VlinkMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { /* Main Table or rename table only update */ if (MAINTBL == tbl) { nattr = NUM_KEY_MAIN_TBL_; @@ -1661,60 +2005,60 @@ upll_rc_t VlinkMoMgr::GetValid(void *val, switch (indx) { case uudst::vlink::kDbiOperStatus: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_OPER_STATUS_VLNKS]; - break; + valid[UPLL_IDX_OPER_STATUS_VLNKS]; + break; case uudst::vlink::kDbiDownCount: valid = NULL; - break; + break; case uudst::vlink::kDbiAdminStatus: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_ADMIN_STATUS_VLNK]; + valid[UPLL_IDX_ADMIN_STATUS_VLNK]; break; case uudst::vlink::kDbiVnode1Name: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_VNODE1_NAME_VLNK]; + valid[UPLL_IDX_VNODE1_NAME_VLNK]; break; case uudst::vlink::kDbiVnode1Ifname: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_VNODE1_IF_NAME_VLNK]; + valid[UPLL_IDX_VNODE1_IF_NAME_VLNK]; break; case uudst::vlink::kDbiVnode2Name: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_VNODE2_NAME_VLNK]; + valid[UPLL_IDX_VNODE2_NAME_VLNK]; break; case uudst::vlink::kDbiVnode2Ifname: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_VNODE2_IF_NAME_VLNK]; + valid[UPLL_IDX_VNODE2_IF_NAME_VLNK]; break; case uudst::vlink::kDbiBoundaryName: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; + valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; break; case uudst::vlink::kDbiVlanid: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_VLAN_ID_VLNK]; + valid[UPLL_IDX_VLAN_ID_VLNK]; break; case uudst::vlink::kDbiDesc: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DESCRIPTION_VLNK]; + valid[UPLL_IDX_DESCRIPTION_VLNK]; break; default: return UPLL_RC_ERR_GENERIC; } } else if (tbl == RENAMETBL) { switch (indx) { - case uudst::vlink_rename::kDbiCtrlrVtnName: - valid = &(reinterpret_cast(val))-> - valid[UPLL_CTRLR_VTN_NAME_VALID]; - break; - case uudst::vlink_rename::kDbiCtrlrVlinkName: - valid = &(reinterpret_cast(val))-> - valid[UPLL_CTRLR_VNODE_NAME_VALID]; - - break; - default: - break; - } + case uudst::vlink_rename::kDbiCtrlrVtnName: + valid = &(reinterpret_cast(val))-> + valid[UPLL_CTRLR_VTN_NAME_VALID]; + break; + case uudst::vlink_rename::kDbiCtrlrVlinkName: + valid = &(reinterpret_cast(val))-> + valid[UPLL_CTRLR_VNODE_NAME_VALID]; + + break; + default: + break; + } } return UPLL_RC_SUCCESS; } @@ -1727,8 +2071,8 @@ bool VlinkMoMgr::IsValidKey(void *key, uint64_t index) { case uudst::vlink::kDbiVtnName: case uudst::vnode_rename::kDbiUncVtnName: ret_val = ValidateKey( - reinterpret_cast(vlink_key->vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + reinterpret_cast(vlink_key->vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; @@ -1757,21 +2101,21 @@ upll_rc_t VlinkMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_vlink_t * vlink_key = NULL; if (okey && okey->get_key()) { - vlink_key = reinterpret_cast - (okey->get_key()); + vlink_key = reinterpret_cast + (okey->get_key()); } else { - vlink_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlink))); + vlink_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vlink))); } unc_key_type_t ktype; void *pkey; if (parent_key == NULL) { - if (!okey) - okey = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, vlink_key, - NULL); + if (!okey) + okey = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, vlink_key, + NULL); else if (okey->get_key() != vlink_key) - okey->SetKey(IpctSt::kIpcStKeyVlink,vlink_key); + okey->SetKey(IpctSt::kIpcStKeyVlink, vlink_key); return (okey)?UPLL_RC_SUCCESS:UPLL_RC_ERR_GENERIC; } else { pkey = parent_key->get_key(); @@ -1785,67 +2129,80 @@ upll_rc_t VlinkMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (ktype) { case UNC_KT_VTN: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1) ); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1) ); break; case UNC_KT_VBRIDGE: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VBR_IF: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)-> + vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VROUTER: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VRT_IF: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VLINK: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vlink_key->vlink_name, - reinterpret_cast(pkey)->vlink_name, - (kMaxLenVlinkName+1)); + reinterpret_cast(pkey)->vlink_name, + (kMaxLenVlinkName+1)); break; case UNC_KT_VTEP: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VTEP_IF: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtep_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vtep_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VTUNNEL: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VTUNNEL_IF: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast - (pkey)->vtunnel_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vtunnel_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VUNKNOWN: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VUNK_IF: uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vunk_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vunk_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); + break; + /* VlanmapOnBoundary: Added vlanmap case */ + case UNC_KT_VBR_VLANMAP: + uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, + reinterpret_cast + (pkey)->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; default: if (!okey || !(okey->get_key())) @@ -1854,14 +2211,14 @@ upll_rc_t VlinkMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } if (!okey) okey = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, vlink_key, - NULL); + NULL); else if (okey->get_key() != vlink_key) - okey->SetKey(IpctSt::kIpcStKeyVlink,vlink_key); + okey->SetKey(IpctSt::kIpcStKeyVlink, vlink_key); if (okey == NULL) { free(vlink_key); result_code = UPLL_RC_ERR_GENERIC; } else { - SET_USER_DATA(okey, parent_key); + SET_USER_DATA(okey, parent_key); } return result_code; } @@ -1885,16 +2242,17 @@ upll_rc_t VlinkMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VLINK) return UPLL_RC_ERR_GENERIC; - void *pkey = (ikey) ? ikey->get_key() : NULL; + void *pkey = ikey->get_key(); if (!pkey) return UPLL_RC_ERR_GENERIC; key_vtn *vtn_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_vtn))); + ConfigKeyVal::Malloc(sizeof(key_vtn))); uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); - if (okey == NULL) result_code = UPLL_RC_ERR_GENERIC; - else SET_USER_DATA(okey, ikey); + if (okey == NULL) { + result_code = UPLL_RC_ERR_GENERIC; + } else { SET_USER_DATA(okey, ikey);} return result_code; } @@ -1915,14 +2273,14 @@ upll_rc_t VlinkMoMgr::AllocVal(ConfigVal *&ck_val, } if (dt_type == UPLL_DT_STATE) { val = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_db_vlink_st))); + ConfigKeyVal::Malloc(sizeof(val_db_vlink_st))); ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVlinkSt, val); ck_val->AppendCfgVal(ck_nxtval); } break; case RENAMETBL: val = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_db_rename_vlink))); + ConfigKeyVal::Malloc(sizeof(val_db_rename_vlink))); ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); break; default: @@ -1946,7 +2304,7 @@ upll_rc_t VlinkMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, return UPLL_RC_ERR_GENERIC; } val_vlink *vlink_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vlink))); + (ConfigKeyVal::Malloc(sizeof(val_vlink))); memcpy(vlink_val, ival, sizeof(val_vlink)); tmp1 = new ConfigVal(IpctSt::kIpcStValVlink, vlink_val); } else if (tbl == RENAMETBL) { @@ -1954,16 +2312,16 @@ upll_rc_t VlinkMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, ConfigVal *ck_v = req->get_cfg_val(); if (ck_v->get_st_num() == IpctSt::kIpcInvalidStNum) { val_db_rename_vlink *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); rename_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_rename_vlink))); + (ConfigKeyVal::Malloc(sizeof(val_db_rename_vlink))); memcpy(rename_val, ival, sizeof(val_db_rename_vlink)); tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, rename_val); } else { val_rename_vlink *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); rename_val = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vlink))); + ConfigKeyVal::Malloc(sizeof(val_rename_vlink))); memcpy(rename_val, ival, sizeof(val_rename_vlink)); tmp1 = new ConfigVal(IpctSt::kIpcStValRenameVlink, rename_val); } @@ -1973,9 +2331,9 @@ upll_rc_t VlinkMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, if (tmp) { if (tbl == MAINTBL) { val_db_vlink_st *ival = reinterpret_cast - (tmp->get_val()); + (tmp->get_val()); val_db_vlink_st *val_db_vlink = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vlink_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vlink_st))); memcpy(val_db_vlink, ival, sizeof(val_db_vlink_st)); ConfigVal *tmp2 = new ConfigVal(IpctSt::kIpcStValVlinkSt, val_db_vlink); tmp1->AppendCfgVal(tmp2); @@ -1984,7 +2342,7 @@ upll_rc_t VlinkMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, void *tkey = (req != NULL) ? (req)->get_key() : NULL; key_vlink *ikey = reinterpret_cast(tkey); key_vlink *vlink_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlink))); + (ConfigKeyVal::Malloc(sizeof(key_vlink))); memcpy(vlink_key, ikey, sizeof(key_vlink)); okey = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, vlink_key, tmp1); @@ -2006,13 +2364,13 @@ upll_rc_t VlinkMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, ConfigKeyVal *unc_key = NULL; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; val_db_rename_vlink *rename_vlink = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_rename_vlink))); + (ConfigKeyVal::Malloc(sizeof(val_db_rename_vlink))); key_vlink *ctrlr_key = reinterpret_cast(ikey->get_key()); rename_vlink->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; rename_vlink->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_INVALID; upll_rc_t ret_val = ValidateKey( - reinterpret_cast(ctrlr_key->vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + reinterpret_cast(ctrlr_key->vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val == UPLL_RC_SUCCESS) { uuu::upll_strncpy(rename_vlink->ctrlr_vtn_name, ctrlr_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); @@ -2038,21 +2396,21 @@ upll_rc_t VlinkMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, unc_key->AppendCfgVal(IpctSt::kIpcInvalidStNum, rename_vlink); result_code = ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (result_code == UPLL_RC_SUCCESS) { key_vlink *vlink_key = reinterpret_cast(unc_key->get_key()); if (strcmp(reinterpret_cast(ctrlr_key->vtn_key.vtn_name), - reinterpret_cast(vlink_key->vtn_key.vtn_name))) { + reinterpret_cast(vlink_key->vtn_key.vtn_name))) { uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, - vlink_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); -// rename |= VTN_RENAME; + vlink_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + // rename |= VTN_RENAME; } if (strcmp(reinterpret_cast(ctrlr_key->vlink_name), reinterpret_cast(vlink_key->vlink_name))) { uuu::upll_strncpy(reinterpret_cast(ctrlr_key->vlink_name), - reinterpret_cast(vlink_key->vlink_name), - (kMaxLenVtnName+1)); -// rename |= VN_RENAME; + reinterpret_cast(vlink_key->vlink_name), + (kMaxLenVtnName+1)); + // rename |= VN_RENAME; } SET_USER_DATA(ikey, unc_key); } @@ -2067,7 +2425,7 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_DEBUG("Test : Controller %s Domain %s", - ctrlr_dom->ctrlr, ctrlr_dom->domain); + ctrlr_dom->ctrlr, ctrlr_dom->domain); uint8_t rename = 1, val_rename = 0, vnode_rename = 0; ConfigKeyVal *okey = NULL; for (int i = 0; i < 2; i++) { @@ -2091,9 +2449,9 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, ctrlr_dom_dup.ctrlr = NULL; ctrlr_dom_dup.domain = NULL; uuu::upll_strncpy(ctrlr_dom_dup.ctrlr, ctrlr_dom->ctrlr, - (kMaxLenCtrlrId + 1)); + (kMaxLenCtrlrId + 1)); uuu::upll_strncpy(ctrlr_dom_dup.domain, ctrlr_dom->domain, - (kMaxLenDomainId + 1)); + (kMaxLenDomainId + 1)); #endif val_vlink_t *val = reinterpret_cast(GetVal(ikey)); if (!val) { @@ -2105,9 +2463,10 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, okey = NULL; if (val_rename) { MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VBRIDGE))); + (GetMoManager + (UNC_KT_VBRIDGE))); if (!mgr) { - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("The Vnode RenameFlag is %d", val_rename); if (val_rename & 0x04) { /* vnode renamed*/ @@ -2115,19 +2474,19 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, SET_USER_DATA_FLAGS(ikey->get_cfg_val(), vnode_rename); result_code = mgr->GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) - return result_code; + return result_code; result_code = mgr->GetRenamedControllerKey(okey, dt_type, - dmi, ctrlr_dom); + dmi, ctrlr_dom); if (UPLL_RC_SUCCESS == result_code) { UPLL_LOG_TRACE("The ConfigKey is %s", (okey->ToStrAll()).c_str()); UPLL_LOG_TRACE("The controller vnode name is %s", - reinterpret_cast( - okey->get_key())->vbridge_name); + reinterpret_cast( + okey->get_key())->vbridge_name); uuu::upll_strncpy(val->vnode1_name, reinterpret_cast( - okey->get_key())->vbridge_name, (kMaxLenVnodeName+1)); + okey->get_key())->vbridge_name, (kMaxLenVnodeName+1)); } else { UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", - result_code); + result_code); delete okey; return result_code; } @@ -2137,32 +2496,33 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, okey = NULL; UPLL_LOG_TRACE("The Vnode RenameFlag is %d", val_rename); if (val_rename & 0x08) { - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VROUTER))); - if (!mgr) { - return UPLL_RC_ERR_GENERIC; - } + MoMgrImpl *mgr = reinterpret_cast(const_cast + (GetMoManager + (UNC_KT_VROUTER))); + if (!mgr) { + return UPLL_RC_ERR_GENERIC; + } vnode_rename = 0x40; SET_USER_DATA_FLAGS(ikey->get_cfg_val(), vnode_rename); result_code = mgr->GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) - return result_code; + return result_code; UPLL_LOG_DEBUG("Test : Controller %s Domain %s", - ctrlr_dom->ctrlr, ctrlr_dom->domain); + ctrlr_dom->ctrlr, ctrlr_dom->domain); result_code = mgr->GetRenamedControllerKey(okey, dt_type, - dmi, ctrlr_dom); + dmi, ctrlr_dom); if (UPLL_RC_SUCCESS == result_code) { - UPLL_LOG_TRACE("The ConfigKey is %s", (okey->ToStrAll()).c_str()); - UPLL_LOG_TRACE("The controller vnode name is %s", - reinterpret_cast( - okey->get_key())->vrouter_name); - uuu::upll_strncpy(val->vnode2_name, reinterpret_cast( - okey->get_key())->vrouter_name, - (kMaxLenVnodeName+1)); + UPLL_LOG_TRACE("The ConfigKey is %s", (okey->ToStrAll()).c_str()); + UPLL_LOG_TRACE("The controller vnode name is %s", + reinterpret_cast( + okey->get_key())->vrouter_name); + uuu::upll_strncpy(val->vnode2_name, reinterpret_cast( + okey->get_key())->vrouter_name, + (kMaxLenVnodeName+1)); } else { UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", - result_code); + result_code); delete okey; return result_code; } @@ -2193,7 +2553,7 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, return result_code; } val_db_rename_vlink *rename_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (!rename_val) { delete okey; return UPLL_RC_ERR_GENERIC; @@ -2205,11 +2565,11 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, } if (rename & 0x01) { /* vtn renamed */ uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, rename_val->ctrlr_vtn_name, - (kMaxLenVtnName+1)); + (kMaxLenVtnName+1)); } if (rename & 0x02) { /* vnode renamed */ uuu::upll_strncpy(ctrlr_key->vlink_name, rename_val->ctrlr_vlink_name, - (kMaxLenVlinkName+1)); + (kMaxLenVlinkName+1)); } SET_USER_DATA_FLAGS(ikey, rename); @@ -2219,11 +2579,11 @@ upll_rc_t VlinkMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, } upll_rc_t VlinkMoMgr::UpdateConfigStatus(ConfigKeyVal *vlink_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vlink *vlink_val; @@ -2244,24 +2604,24 @@ upll_rc_t VlinkMoMgr::UpdateConfigStatus(ConfigKeyVal *vlink_key, return UPLL_RC_ERR_GENERIC; } val_db_vlink_st *val_vlinkst = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vlink_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vlink_st))); val_vlinkst->vlink_val_st.oper_status = UPLL_OPER_STATUS_UNINIT; val_vlinkst->vlink_val_st.valid[UPLL_IDX_OPER_STATUS_VLNKS] - = UNC_VF_VALID; + = UNC_VF_VALID; if (op == UNC_OP_CREATE) { val_vlinkst->down_count = 0; } else { val_db_vlink_st *run_vlink_st = reinterpret_cast - (GetStateVal(upd_key)); + (GetStateVal(upd_key)); val_vlinkst->down_count = (run_vlink_st ? run_vlink_st->down_count:0); } vlink_key->AppendCfgVal(IpctSt::kIpcStValVlinkSt, val_vlinkst); UPLL_LOG_TRACE("%s", (vlink_key->ToStrAll()).c_str()); for ( unsigned int loop = 0; - loop < sizeof(vlink_val->valid)/sizeof(vlink_val->valid[0]); - ++loop ) { + loop < sizeof(vlink_val->valid)/sizeof(vlink_val->valid[0]); + ++loop ) { if ( (UNC_VF_VALID == vlink_val->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == vlink_val->valid[loop])) { + (UNC_VF_VALID_NO_VALUE == vlink_val->valid[loop])) { // Description is set to APPLIED if (loop == UPLL_IDX_DESCRIPTION_VLNK) vlink_val->cs_attr[loop] = UNC_CS_APPLIED; @@ -2269,10 +2629,10 @@ upll_rc_t VlinkMoMgr::UpdateConfigStatus(ConfigKeyVal *vlink_key, vlink_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vlink_val->valid[loop]) && (UNC_OP_CREATE == op)) { - vlink_val->cs_attr[loop] = UNC_CS_APPLIED; + vlink_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((UNC_VF_INVALID == vlink_val->valid[loop]) && (UNC_OP_UPDATE == op)) { - vlink_val->cs_attr[loop] = vlink_val2->cs_attr[loop]; + vlink_val->cs_attr[loop] = vlink_val2->cs_attr[loop]; } } SetConsolidatedStatus(vlink_key, op, cs_status, dmi); @@ -2281,7 +2641,9 @@ upll_rc_t VlinkMoMgr::UpdateConfigStatus(ConfigKeyVal *vlink_key, #if 0 upll_rc_t VlinkMoMgr::GetControllerKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey, unc_keytype_datatype_t dt_type, char *ctrlr_name ) { + ConfigKeyVal *&okey, + unc_keytype_datatype_t dt_type, + char *ctrlr_name ) { okey = NULL; char rename = (uint64_t)(ikey->get_user_data()); key_vlink_t *key = reinterpret_cast(ikey->get_key()); @@ -2295,9 +2657,9 @@ upll_rc_t VlinkMoMgr::GetControllerKey(ConfigKeyVal *ikey, ConfigKeyVal *ck_vtn = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); // MoMgrImpl *mgr = (MoMgrImpl *)GetMoManager(UNC_KT_VTN); -// mgr->ReadConfigDB(ck_vtn, dt_type, UNC_OP_READ, RENAMETBL); + // mgr->ReadConfigDB(ck_vtn, dt_type, UNC_OP_READ, RENAMETBL); val_rename_vtn* rename_val = reinterpret_cast - (GetVal(ck_vtn)); + (GetVal(ck_vtn)); uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, rename_val->new_name); delete ck_vtn; } @@ -2306,7 +2668,7 @@ upll_rc_t VlinkMoMgr::GetControllerKey(ConfigKeyVal *ikey, GetChildConfigKey(okey, ikey); // mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, RENAMETBL); val_rename_vbr *rename_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, rename_val->new_name); delete okey; } @@ -2326,35 +2688,36 @@ upll_rc_t VlinkMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, if (ikey->get_key_type() != UNC_KT_VLINK) return UPLL_RC_ERR_BAD_REQUEST; val_rename_vlink_t *tval = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!tval) return UPLL_RC_ERR_GENERIC; /* The PFC Name and New Name should not be equal */ if (!strcmp(reinterpret_cast(tval->new_name), - reinterpret_cast(reinterpret_cast - (ikey->get_key())->vlink_name))) + reinterpret_cast(reinterpret_cast + (ikey->get_key())->vlink_name))) return UPLL_RC_ERR_GENERIC; key_vlink_t * key_vlink = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlink_t))); + (ConfigKeyVal::Malloc(sizeof(key_vlink_t))); if (tval->valid[UPLL_IDX_NEW_NAME_RVLNK] == UNC_VF_VALID_NO_VALUE) { uuu::upll_strncpy(key_vlink->vlink_name, - static_cast(ikey->get_key())->vlink_name, - (kMaxLenVlinkName+1)); + static_cast(ikey->get_key())->vlink_name, + (kMaxLenVlinkName+1)); no_rename = true; } else { if ((reinterpret_cast(tval))-> - valid[UPLL_IDX_NEW_NAME_RVLNK] == UNC_VF_VALID) { + valid[UPLL_IDX_NEW_NAME_RVLNK] == UNC_VF_VALID) { /* checking the string is empty or not */ if (!strlen(reinterpret_cast - (static_cast(tval)->new_name))) { + (static_cast(tval)->new_name))) { free(key_vlink); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vlink->vlink_name, - static_cast(GetVal(ikey))->new_name, - (kMaxLenVlinkName+1)); + static_cast + (GetVal(ikey))->new_name, + (kMaxLenVlinkName+1)); } else { free(key_vlink); return UPLL_RC_ERR_GENERIC; @@ -2368,7 +2731,8 @@ upll_rc_t VlinkMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, return result_code; } MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager + (UNC_KT_VTN))); result_code = mgr->GetRenamedUncKey(pkey, UPLL_DT_IMPORT, dmi, ctrlr); if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { @@ -2379,12 +2743,12 @@ upll_rc_t VlinkMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, } /* use the UNC VTN name if PFC VTN name is renamed; */ if (strlen(reinterpret_cast(reinterpret_cast - (pkey->get_key())->vtn_name))) + (pkey->get_key())->vtn_name))) uuu::upll_strncpy(key_vlink->vtn_key.vtn_name, - reinterpret_cast(pkey->get_key())->vtn_name, - (kMaxLenVtnName+1)); - delete pkey; - pkey = NULL; + reinterpret_cast(pkey->get_key())->vtn_name, + (kMaxLenVtnName+1)); + delete pkey; + pkey = NULL; okey = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, key_vlink, NULL); if (NULL == okey) { @@ -2402,27 +2766,27 @@ upll_rc_t VlinkMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vlink_t * key_vlink = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_vlink_t))); - UPLL_LOG_TRACE("Table is MainTable "); - if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { + ConfigKeyVal::Malloc(sizeof(key_vlink_t))); + UPLL_LOG_TRACE("Table is MainTable "); + if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { + FREE_IF_NOT_NULL(key_vlink); + return UPLL_RC_ERR_GENERIC; + } + + uuu::upll_strncpy(key_vlink->vtn_key.vtn_name, + key_rename->old_unc_vtn_name, (kMaxLenVtnName+1)); + + if (ikey->get_key_type() == table[MAINTBL]->get_key_type()) { + UPLL_LOG_TRACE("Current Rename Key type is %d", ikey->get_key_type()); + if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { FREE_IF_NOT_NULL(key_vlink); return UPLL_RC_ERR_GENERIC; - } - - uuu::upll_strncpy(key_vlink->vtn_key.vtn_name, - key_rename->old_unc_vtn_name, (kMaxLenVtnName+1)); - - if (ikey->get_key_type() == table[MAINTBL]->get_key_type()) { - UPLL_LOG_TRACE("Current Rename Key type is %d", ikey->get_key_type()); - if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { - FREE_IF_NOT_NULL(key_vlink); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(key_vlink->vlink_name, - key_rename->old_unc_vnode_name, (kMaxLenVlinkName+1)); - } + } + uuu::upll_strncpy(key_vlink->vlink_name, + key_rename->old_unc_vnode_name, (kMaxLenVlinkName+1)); + } okey = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, key_vlink, NULL); if (!okey) { @@ -2453,66 +2817,69 @@ upll_rc_t VlinkMoMgr::GetRenameInfo(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } key_rename_vnode_info_t *vlink_rename_info = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info_t))); if (renamed) { if (!strlen(reinterpret_cast(reinterpret_cast - (GetVal(ikey))->ctrlr_vtn_name))) { + (GetVal(ikey))->ctrlr_vtn_name))) { free(vlink_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_rename_info->ctrlr_vtn_name, - reinterpret_cast(GetVal(ikey))->ctrlr_vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (GetVal(ikey))->ctrlr_vtn_name, + (kMaxLenVtnName+1)); if (!strlen(reinterpret_cast(reinterpret_cast (GetVal(ikey))->ctrlr_vnode_name))) { free(vlink_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_rename_info->ctrlr_vnode_name, - reinterpret_cast(GetVal(ikey))->ctrlr_vnode_name, - (kMaxLenVlinkName+1)); + reinterpret_cast + (GetVal(ikey))->ctrlr_vnode_name, + (kMaxLenVlinkName+1)); } else { if (!strlen(reinterpret_cast(vlink_key_->vlink_name))) { - free(vlink_rename_info); - return UPLL_RC_ERR_GENERIC; + free(vlink_rename_info); + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_rename_info->ctrlr_vnode_name, - vlink_key_->vlink_name, (kMaxLenVlinkName+1)); + vlink_key_->vlink_name, (kMaxLenVlinkName+1)); if (!strlen(reinterpret_cast(vlink_key_->vtn_key.vtn_name))) { free(vlink_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_rename_info->ctrlr_vtn_name, - vlink_key_->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vlink_key_->vtn_key.vtn_name, (kMaxLenVtnName+1)); } if (!strlen(reinterpret_cast(vlink_key_->vlink_name))) { - free(vlink_rename_info); - return UPLL_RC_ERR_GENERIC; + free(vlink_rename_info); + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_rename_info->old_unc_vnode_name, - vlink_key_->vlink_name, (kMaxLenVlinkName+1)); + vlink_key_->vlink_name, (kMaxLenVlinkName+1)); if (!strlen(reinterpret_cast(vlink_key_->vtn_key.vtn_name))) { free(vlink_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_rename_info->new_unc_vtn_name, - vlink_key_->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vlink_key_->vtn_key.vtn_name, (kMaxLenVtnName+1)); uuu::upll_strncpy(vlink_rename_info->old_unc_vtn_name, - vlink_key_->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vlink_key_->vtn_key.vtn_name, (kMaxLenVtnName+1)); if (!(okey->get_key())) { free(vlink_rename_info); return UPLL_RC_ERR_GENERIC; } if (!strlen(reinterpret_cast(reinterpret_cast - (okey->get_key())->vlink_name))) { + (okey->get_key())->vlink_name))) { free(vlink_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_rename_info->new_unc_vnode_name, - reinterpret_cast(okey->get_key())->vlink_name, - (kMaxLenVlinkName+1)); + reinterpret_cast + (okey->get_key())->vlink_name, + (kMaxLenVlinkName+1)); rename_info = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcInvalidStNum, vlink_rename_info, NULL); @@ -2527,13 +2894,15 @@ upll_rc_t VlinkMoMgr::GetRenameInfo(ConfigKeyVal *ikey, ConfigKeyVal *tmp_key = NULL; result_code = GetChildConfigKey(tmp_key, ikey); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed "); - free(vnode); // COV RESOURCE LEAK - return result_code; + UPLL_LOG_DEBUG("GetChildConfigKey Failed "); + free(vnode); // COV RESOURCE LEAK + return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(tmp_key, UPLL_DT_IMPORT, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB Failed"); free(vnode); // COV RESOURCE LEAK @@ -2543,8 +2912,8 @@ upll_rc_t VlinkMoMgr::GetRenameInfo(ConfigKeyVal *ikey, controller_domain ctrlr_dom; result_code = GetControllerDomainId(tmp_key, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { - delete tmp_key; - return result_code; + delete tmp_key; + return result_code; } SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); @@ -2552,11 +2921,13 @@ upll_rc_t VlinkMoMgr::GetRenameInfo(ConfigKeyVal *ikey, vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; uuu::upll_strncpy(vnode->ctrlr_vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vnode->ctrlr_vnode_name, - reinterpret_cast(ikey->get_key())->vlink_name, - (kMaxLenVlinkName+1)); + reinterpret_cast + (ikey->get_key())->vlink_name, + (kMaxLenVlinkName+1)); ConfigVal *rename_val_ = new ConfigVal(IpctSt::kIpcInvalidStNum, vnode); okey->SetCfgVal(rename_val_); dbop.readop = kOpNotRead; @@ -2576,8 +2947,8 @@ upll_rc_t VlinkMoMgr::UpdateVnodeVal(ConfigKeyVal *rename_info, upll_rc_t result_code = UPLL_RC_SUCCESS; if (!rename_info) return UPLL_RC_ERR_GENERIC; key_rename_vnode_info *rename_info_ = - reinterpret_cast( - rename_info->get_key()); + reinterpret_cast( + rename_info->get_key()); if (!rename_info_) { UPLL_LOG_DEBUG("Rename Info is Empty"); return UPLL_RC_ERR_GENERIC; @@ -2600,15 +2971,15 @@ upll_rc_t VlinkMoMgr::UpdateVnodeVal(ConfigKeyVal *rename_info, okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValVlink, val_vlink_)); DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutFlag|kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutFlag|kOpInOutCtrlr|kOpInOutDomain }; key_vlink_ = reinterpret_cast(okey->get_key()); uuu::upll_strncpy(key_vlink_->vtn_key.vtn_name, - rename_info_->new_unc_vtn_name, (kMaxLenVtnName+1)); + rename_info_->new_unc_vtn_name, (kMaxLenVtnName+1)); uuu::upll_strncpy(val_vlink_->vnode1_name, - rename_info_->old_unc_vnode_name, (kMaxLenVnodeName+1)); + rename_info_->old_unc_vnode_name, (kMaxLenVnodeName+1)); val_vlink_->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_VALID; @@ -2619,7 +2990,7 @@ upll_rc_t VlinkMoMgr::UpdateVnodeVal(ConfigKeyVal *rename_info, while (okey) { val_vlink_ = reinterpret_cast(GetVal(okey)); UPLL_LOG_TRACE("After Read ConfigDB in Vlink %s", - (okey->ToStrAll()).c_str()); + (okey->ToStrAll()).c_str()); GET_USER_DATA_FLAGS(okey->get_cfg_val(), rename); UPLL_LOG_TRACE("Rename No Rename %d", no_rename); @@ -2634,11 +3005,12 @@ upll_rc_t VlinkMoMgr::UpdateVnodeVal(ConfigKeyVal *rename_info, SET_USER_DATA_FLAGS(okey->get_cfg_val(), rename); uuu::upll_strncpy(val_vlink_->vnode1_name, - rename_info_->new_unc_vnode_name, (kMaxLenVnodeName+1)); + rename_info_->new_unc_vnode_name, + (kMaxLenVnodeName+1)); UPLL_LOG_TRACE("The New vnode name %s", val_vlink_->vnode1_name); UPLL_LOG_TRACE("Before Update ConfigDB in Vlink %s", - (okey->ToStrAll()).c_str()); + (okey->ToStrAll()).c_str()); dbop.readop = kOpNotRead; dbop.inoutop = kOpInOutFlag; @@ -2656,7 +3028,7 @@ upll_rc_t VlinkMoMgr::UpdateVnodeVal(ConfigKeyVal *rename_info, val_vlink_ = reinterpret_cast(GetVal(okey)); val_vlink_->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_INVALID; uuu::upll_strncpy(val_vlink_->vnode2_name, - rename_info_->old_unc_vnode_name, (kMaxLenVnodeName+1)); + rename_info_->old_unc_vnode_name, (kMaxLenVnodeName+1)); val_vlink_->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_VALID; result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, MAINTBL); @@ -2670,16 +3042,17 @@ upll_rc_t VlinkMoMgr::UpdateVnodeVal(ConfigKeyVal *rename_info, UPLL_LOG_TRACE("Before Update Rename flag =%d", rename); if (!no_rename) - rename = rename | VN2_RENAME; + rename = rename | VN2_RENAME; else - rename = rename & NO_VN2_RENAME; + rename = rename & NO_VN2_RENAME; UPLL_LOG_TRACE("After Update Rename flag =%d", rename); SET_USER_DATA_FLAGS(okey->get_cfg_val(), rename); uuu::upll_strncpy(val_vlink_->vnode2_name, - rename_info_->new_unc_vnode_name, (kMaxLenVnodeName+1)); + rename_info_->new_unc_vnode_name, + (kMaxLenVnodeName+1)); dbop.readop = kOpNotRead; dbop.inoutop = kOpInOutFlag; result_code = UpdateConfigDB(okey, data_type, UNC_OP_UPDATE, dmi, @@ -2704,15 +3077,16 @@ upll_rc_t VlinkMoMgr::ValidateBoundary(uint8_t *boundary_name, IpcResponse ipc_resp; key_boundary *bndrykey = static_cast - (ConfigKeyVal::Malloc(sizeof(key_boundary))); // COV NULL RETURN + (ConfigKeyVal::Malloc(sizeof(key_boundary))); // COV NULL RETURN uuu::upll_strncpy(bndrykey->boundary_id, boundary_name, - (kMaxLenBoundaryName+1)); + (kMaxLenBoundaryName+1)); + DELETE_IF_NOT_NULL(ck_boundary); ck_boundary = new ConfigKeyVal(UNC_KT_BOUNDARY, IpctSt::kIpcStKeyBoundary, bndrykey, NULL); result_code = SendIpcReq(req->clnt_sess_id, req->config_id, UNC_OP_READ, - UPLL_DT_CANDIDATE, ck_boundary, NULL, &ipc_resp); + UPLL_DT_CANDIDATE, ck_boundary, NULL, &ipc_resp); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in retrieving boundary data %d", result_code); delete ck_boundary; @@ -2736,9 +3110,9 @@ upll_rc_t VlinkMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, upll_rc_t result_code = UPLL_RC_SUCCESS; DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; key_vlink_t *vlink_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlink))); + (ConfigKeyVal::Malloc(sizeof(key_vlink))); val_vlink_t *linkval = static_cast - (ConfigKeyVal::Malloc(sizeof(val_vlink_t))); + (ConfigKeyVal::Malloc(sizeof(val_vlink_t))); key_boundary *bndrykey = reinterpret_cast(ckv->get_key()); if (!strlen(reinterpret_cast(bndrykey->boundary_id))) { free(linkval); @@ -2749,7 +3123,7 @@ upll_rc_t VlinkMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, (kMaxLenBoundaryName+1)); linkval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] = UNC_VF_VALID; ck_link = new ConfigKeyVal(UNC_KT_LINK, IpctSt::kIpcStKeyVlink, vlink_key, - new ConfigVal(IpctSt::kIpcStValVlink, linkval)); + new ConfigVal(IpctSt::kIpcStValVlink, linkval)); result_code = ReadConfigDB(ck_link, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); delete ck_link; @@ -2764,30 +3138,41 @@ upll_rc_t VlinkMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, } upll_rc_t VlinkMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vlink_t *val; val = (ckv_running != NULL) ? reinterpret_cast - (GetVal(ckv_running)) : NULL; + (GetVal(ckv_running)) : NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } + unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + + result_code = SetConsolidatedStatus(ckv_running, op, cs_status, dmi); + return result_code; } -bool VlinkMoMgr::FilterAttributes(void *&val1, void *val2, bool copy_to_running, +bool VlinkMoMgr::FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, unc_keytype_operation_t op) { UPLL_FUNC_TRACE; val_vlink_t *val_vlink1 = reinterpret_cast(val1); @@ -2804,16 +3189,16 @@ bool VlinkMoMgr::CompareValidValue(void *&val1, void *val2, val_vlink_t *val_vlink1 = reinterpret_cast(val1); val_vlink_t *val_vlink2 = reinterpret_cast(val2); for (unsigned int loop = 0; - loop < sizeof(val_vlink1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vlink1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == val_vlink1->valid[loop] && UNC_VF_VALID == val_vlink2->valid[loop]) val_vlink1->valid[loop] = UNC_VF_VALID_NO_VALUE; } - if (UNC_VF_INVALID != val_vlink1->valid[UPLL_IDX_DESCRIPTION_VLNK]) { + if (UNC_VF_INVALID != val_vlink1->valid[UPLL_IDX_DESCRIPTION_VLNK]) { if ((!copy_to_running) || ((UNC_VF_VALID == val_vlink1->valid[UPLL_IDX_DESCRIPTION_VLNK]) && (!strcmp(reinterpret_cast(val_vlink1->description), - reinterpret_cast(val_vlink2->description))))) + reinterpret_cast(val_vlink2->description))))) val_vlink1->valid[UPLL_IDX_DESCRIPTION_VLNK] = UNC_VF_INVALID; } if ((val_vlink2->valid[UPLL_IDX_ADMIN_STATUS_VLNK] == @@ -2858,17 +3243,17 @@ bool VlinkMoMgr::CompareValidValue(void *&val1, void *val2, val_vlink1->valid[UPLL_IDX_VLAN_ID_VLNK] = UNC_VF_INVALID; } for (unsigned int loop = 0; - loop < sizeof(val_vlink1->valid)/sizeof(val_vlink1->valid[0]); - ++loop ) { + loop < sizeof(val_vlink1->valid)/sizeof(val_vlink1->valid[0]); + ++loop ) { if ((UNC_VF_VALID == val_vlink1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == val_vlink1->valid[loop])) - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == val_vlink1->valid[loop])) + invalid_attr = false; } return invalid_attr; } upll_rc_t VlinkMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; if (!ikey || !req || !(ikey->get_key())) { @@ -2906,11 +3291,12 @@ upll_rc_t VlinkMoMgr::ValidateMessage(IpcReqRespHeader *req, if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVlink)) { val_vlink = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } else if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValRenameVlink)) { + ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStValRenameVlink)) { val_rename_vlink = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } if ((operation == UNC_OP_CREATE) && (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_IMPORT)) { @@ -2926,7 +3312,7 @@ upll_rc_t VlinkMoMgr::ValidateMessage(IpcReqRespHeader *req, } return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_UPDATE) && - (dt_type == UPLL_DT_CANDIDATE)) { + (dt_type == UPLL_DT_CANDIDATE)) { if (val_vlink == NULL) { UPLL_LOG_DEBUG("Value structure is mandatory for UPDATE op"); return UPLL_RC_ERR_BAD_REQUEST; @@ -2949,8 +3335,8 @@ upll_rc_t VlinkMoMgr::ValidateMessage(IpcReqRespHeader *req, } return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING || - operation == UNC_OP_READ_SIBLING_BEGIN) && - (dt_type == UPLL_DT_IMPORT)) { + operation == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_IMPORT)) { if (option1 != UNC_OPT1_NORMAL) { UPLL_LOG_DEBUG("option1 is not matching"); return UPLL_RC_ERR_INVALID_OPTION1; @@ -2970,9 +3356,9 @@ upll_rc_t VlinkMoMgr::ValidateMessage(IpcReqRespHeader *req, } return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING || - operation == UNC_OP_READ_SIBLING_BEGIN) && - (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || - dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE)) { + operation == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || + dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE)) { if (option1 != UNC_OPT1_NORMAL) { UPLL_LOG_DEBUG("option1 is not matching"); return UPLL_RC_ERR_INVALID_OPTION1; @@ -2996,11 +3382,11 @@ upll_rc_t VlinkMoMgr::ValidateMessage(IpcReqRespHeader *req, (operation == UNC_OP_READ_NEXT) || (operation == UNC_OP_READ_BULK)) { UPLL_LOG_DEBUG("Value structure validation is none for this operation :%d" - , operation); + , operation); return UPLL_RC_SUCCESS; } UPLL_LOG_DEBUG("Invalid datatype(%d) or operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -3011,27 +3397,27 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, UPLL_LOG_TRACE("Operation type :(%d)", operation); if ((operation == UNC_OP_CREATE) && - ((val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] == UNC_VF_INVALID) || - (val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] == UNC_VF_VALID_NO_VALUE)|| - (val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] == UNC_VF_INVALID) || - (val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] == - UNC_VF_VALID_NO_VALUE) || - (val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] == UNC_VF_INVALID) || - (val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] == UNC_VF_VALID_NO_VALUE) || - (val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] == UNC_VF_INVALID) || - (val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] == - UNC_VF_VALID_NO_VALUE))) { + ((val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] == UNC_VF_INVALID) || + (val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] == UNC_VF_VALID_NO_VALUE)|| + (val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] == UNC_VF_INVALID) || + (val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] == + UNC_VF_VALID_NO_VALUE) || + (val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] == UNC_VF_INVALID) || + (val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] == UNC_VF_VALID_NO_VALUE) || + (val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] == UNC_VF_INVALID) || + (val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] == + UNC_VF_VALID_NO_VALUE))) { UPLL_LOG_DEBUG("Vlink node name/If name is mandatory " - " for Create operation"); + " for Create operation"); return UPLL_RC_ERR_CFG_SYNTAX; } if ((operation == UNC_OP_UPDATE) && - ((val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] != UNC_VF_INVALID) || - (val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] != UNC_VF_INVALID) || - (val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] != UNC_VF_INVALID) || - (val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] != UNC_VF_INVALID))) { + ((val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] != UNC_VF_INVALID) || + (val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] != UNC_VF_INVALID) || + (val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] != UNC_VF_INVALID) || + (val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] != UNC_VF_INVALID))) { UPLL_LOG_DEBUG("Vlink node name/If name must be invalid " - " for Update operation"); + " for Update operation"); return UPLL_RC_ERR_CFG_SYNTAX; } if (val_vlink->valid[UPLL_IDX_ADMIN_STATUS_VLNK] == UNC_VF_VALID) { @@ -3043,34 +3429,36 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((val_vlink->valid[UPLL_IDX_ADMIN_STATUS_VLNK] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { val_vlink->admin_status = UPLL_ADMIN_ENABLE; } else if ((val_vlink->valid[UPLL_IDX_ADMIN_STATUS_VLNK] == UNC_VF_INVALID) - && (operation == UNC_OP_CREATE)) { + && (operation == UNC_OP_CREATE)) { val_vlink->admin_status = UPLL_ADMIN_ENABLE; val_vlink->valid[UPLL_IDX_ADMIN_STATUS_VLNK] = UNC_VF_VALID_NO_VALUE; } if ((val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] == UNC_VF_VALID) && (!READ_OP(operation))) { - if ((val_vlink->vnode1_name[0] == '\0') - || (val_vlink->vnode1_ifname[0] == '\0') - || (val_vlink->vnode2_name[0] == '\0') - || (val_vlink->vnode2_ifname[0] == '\0')) { - UPLL_LOG_DEBUG("Vlink node name/If name is empty!!"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + if ((val_vlink->vnode1_name[0] == '\0') + || (val_vlink->vnode1_ifname[0] == '\0') + || (val_vlink->vnode2_name[0] == '\0') + || (val_vlink->vnode2_ifname[0] == '\0')) { + UPLL_LOG_DEBUG("Vlink node name/If name is empty!!"); + return UPLL_RC_ERR_CFG_SYNTAX; + } } if (val_vlink->valid[UPLL_IDX_DESCRIPTION_VLNK] == UNC_VF_VALID) { if (!ValidateDesc(val_vlink->description, - kMinLenDescription, kMaxLenDescription)) { + kMinLenDescription, kMaxLenDescription)) { UPLL_LOG_DEBUG("Syntax check failed. description- (%s)", - val_vlink->description); + val_vlink->description); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((val_vlink->valid[UPLL_IDX_DESCRIPTION_VLNK] == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { val_vlink->description[0] = ' '; val_vlink->description[1] = '\0'; } @@ -3079,7 +3467,7 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. vnode1_name- (%s)", - val_vlink->vnode1_name); + val_vlink->vnode1_name); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -3089,7 +3477,7 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. vnode1_ifname- %s", - val_vlink->vnode1_ifname); + val_vlink->vnode1_ifname); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -3099,7 +3487,7 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. vnode2_name- (%s)", - val_vlink->vnode2_name); + val_vlink->vnode2_name); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -3110,8 +3498,8 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed." - "vnode2_ifname- (%s)", - val_vlink->vnode2_ifname); + "vnode2_ifname- (%s)", + val_vlink->vnode2_ifname); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -3122,8 +3510,8 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. " - "boundary_name- (%s)", - val_vlink->boundary_name); + "boundary_name- (%s)", + val_vlink->boundary_name); return UPLL_RC_ERR_CFG_SYNTAX; } #if 0 @@ -3132,23 +3520,25 @@ upll_rc_t VlinkMoMgr::ValidateVlinkValue(val_vlink_t *val_vlink, if (ret_val != UPLL_RC_SUCCESS) return UPLL_RC_ERR_CFG_SEMANTIC; #endif } else if ((val_vlink->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { val_vlink->boundary_name[0] = ' '; val_vlink->boundary_name[1] = '\0'; } if (val_vlink->valid[UPLL_IDX_VLAN_ID_VLNK] == UNC_VF_VALID) { if ((val_vlink->vlan_id != 0xFFFF) && - !ValidateNumericRange(val_vlink->vlan_id, - (uint16_t)(kMinVlanId), (uint16_t) - (kMaxVlanId), true, true)) { + !ValidateNumericRange(val_vlink->vlan_id, + (uint16_t)(kMinVlanId), (uint16_t) + (kMaxVlanId), true, true)) { UPLL_LOG_DEBUG("Syntax check failed. vlan_id- (%d)", val_vlink->vlan_id); - return UPLL_RC_ERR_CFG_SYNTAX; + return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((val_vlink->valid[UPLL_IDX_VLAN_ID_VLNK] == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { - val_vlink->vlan_id = 0; + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { + val_vlink->vlan_id = 0; } return UPLL_RC_SUCCESS; } @@ -3162,8 +3552,8 @@ upll_rc_t VlinkMoMgr::ValidateRenameVlinkValue( kMinLenVlinkName, kMaxLenVlinkName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed." - "new_name- (%s)", - val_rename_vlink->new_name); + "new_name- (%s)", + val_rename_vlink->new_name); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -3171,12 +3561,12 @@ upll_rc_t VlinkMoMgr::ValidateRenameVlinkValue( } upll_rc_t VlinkMoMgr::ValidateVlinkKey(key_vlink_t *key_vlink, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; int ret_val = UPLL_RC_SUCCESS; VtnMoMgr *objvtnmgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + UNC_KT_VTN))); if (NULL == objvtnmgr) { UPLL_LOG_DEBUG("unable to get VtnMoMgr object to validate key_vtn"); return UPLL_RC_ERR_GENERIC; @@ -3190,27 +3580,29 @@ upll_rc_t VlinkMoMgr::ValidateVlinkKey(key_vlink_t *key_vlink, if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { ret_val = ValidateKey(reinterpret_cast(key_vlink->vlink_name), - kMinLenVlinkName, kMaxLenVlinkName); + kMinLenVlinkName, kMaxLenVlinkName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. vlink_name (%s)", - key_vlink->vlink_name); + key_vlink->vlink_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_TRACE("Operation is %d", operation); - StringReset(key_vlink->vlink_name); + StringReset(key_vlink->vlink_name); } UPLL_LOG_TRACE("key structure validation successful for VLINK keytype"); return UPLL_RC_SUCCESS; } -upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, - const uint8_t* attrs, unc_keytype_operation_t operation) { +upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck( + val_vlink_t *val_vlink, + const uint8_t* attrs, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if ((val_vlink->valid[UPLL_IDX_ADMIN_STATUS_VLNK] == UNC_VF_VALID) || (val_vlink->valid[UPLL_IDX_ADMIN_STATUS_VLNK] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vlink::kCapAdminStatus] == 0) { val_vlink->valid[UPLL_IDX_ADMIN_STATUS_VLNK] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -3223,7 +3615,7 @@ upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, if ((val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] == UNC_VF_VALID) || (val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] == - UNC_VF_VALID_NO_VALUE)) { + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vlink::kCapVnode1Name] == 0) { val_vlink->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -3236,7 +3628,7 @@ upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, if ((val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] == UNC_VF_VALID) || (val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vlink::kCapVnode1IfName] == 0) { val_vlink->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -3249,7 +3641,7 @@ upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, if ((val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] == UNC_VF_VALID) || (val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] == - UNC_VF_VALID_NO_VALUE)) { + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vlink::kCapVnode2Name] == 0) { val_vlink->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -3262,7 +3654,7 @@ upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, if ((val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] == UNC_VF_VALID) || (val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vlink::kCapVnode2IfName] == 0) { val_vlink->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -3275,7 +3667,7 @@ upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, if ((val_vlink->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID) || (val_vlink->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vlink::kCapBoundaryName] == 0) { val_vlink->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -3298,7 +3690,7 @@ upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, } if ((val_vlink->valid[UPLL_IDX_DESCRIPTION_VLNK] == UNC_VF_VALID) || (val_vlink->valid[UPLL_IDX_DESCRIPTION_VLNK] == - UNC_VF_VALID_NO_VALUE)) { + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vlink::kCapDesc] == 0) { val_vlink->valid[UPLL_IDX_DESCRIPTION_VLNK] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -3313,8 +3705,8 @@ upll_rc_t VlinkMoMgr::ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, } upll_rc_t VlinkMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; if (!ikey || !req) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); @@ -3323,7 +3715,7 @@ upll_rc_t VlinkMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -3331,7 +3723,7 @@ upll_rc_t VlinkMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + ctrlr_name, req->operation); bool result_code = false; uint32_t max_instance_count = 0; @@ -3342,20 +3734,13 @@ upll_rc_t VlinkMoMgr::ValidateCapability(IpcReqRespHeader *req, case UNC_OP_CREATE: UPLL_LOG_TRACE(" The Controller Name is %s", ctrlr_name); result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s max_instance_count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } - + &max_instance_count, &max_attrs, + &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; case UNC_OP_READ: @@ -3363,7 +3748,7 @@ upll_rc_t VlinkMoMgr::ValidateCapability(IpcReqRespHeader *req, case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; default: @@ -3372,8 +3757,8 @@ upll_rc_t VlinkMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " - "for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + "for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } val_vlink_t *val_vlink = NULL; @@ -3387,7 +3772,7 @@ upll_rc_t VlinkMoMgr::ValidateCapability(IpcReqRespHeader *req, return ValVlinkAttributeSupportCheck(val_vlink, attrs, req->operation); } else { UPLL_LOG_DEBUG("Attribute list is empty for operation %d", - req->operation); + req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } @@ -3410,7 +3795,7 @@ upll_rc_t VlinkMoMgr::CheckVnodeInfo(ConfigKeyVal *ikey, } val_vlink_t *vlink_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vlink_t))); + (ConfigKeyVal::Malloc(sizeof(val_vlink_t))); vlink_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_VALID; vlink_val->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_VALID; vlink_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_INVALID; @@ -3420,81 +3805,92 @@ upll_rc_t VlinkMoMgr::CheckVnodeInfo(ConfigKeyVal *ikey, case UNC_KT_VBRIDGE: case UNC_KT_VBR_IF: if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name))) { + (ikey->get_key())-> + vbr_key.vbridge_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode1_name, - reinterpret_cast(ikey->get_key())-> - vbr_key.vbridge_name, (kMaxLenVnodeName+1)); + reinterpret_cast(ikey->get_key())-> + vbr_key.vbridge_name, (kMaxLenVnodeName+1)); if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->if_name))) { + (ikey->get_key())->if_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode1_ifname, - reinterpret_cast(ikey->get_key())->if_name, - (kMaxLenInterfaceName+1)); + reinterpret_cast + (ikey->get_key())->if_name, + (kMaxLenInterfaceName+1)); if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name))) { + (ikey->get_key())-> + vbr_key.vbridge_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode2_name, reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name, - (kMaxLenVnodeName+1)); + (ikey->get_key())->vbr_key.vbridge_name, + (kMaxLenVnodeName+1)); if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->if_name))) { + (ikey->get_key())->if_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode2_ifname, - reinterpret_cast(ikey->get_key())->if_name, - (kMaxLenInterfaceName+1)); + reinterpret_cast(ikey->get_key())-> + if_name, + (kMaxLenInterfaceName+1)); break; case UNC_KT_VROUTER: case UNC_KT_VRT_IF: if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->vrt_key.vrouter_name))) { + (ikey->get_key())-> + vrt_key.vrouter_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode1_name, - reinterpret_cast(ikey->get_key())->vrt_key.vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(ikey->get_key())-> + vrt_key.vrouter_name, + (kMaxLenVnodeName+1)); if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->if_name))) { + (ikey->get_key())->if_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode1_ifname, - reinterpret_cast(ikey->get_key())->if_name, - (kMaxLenInterfaceName+1)); + reinterpret_cast + (ikey->get_key())->if_name, + (kMaxLenInterfaceName+1)); if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->vrt_key.vrouter_name))) { + (ikey->get_key())-> + vrt_key.vrouter_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode2_name, - reinterpret_cast(ikey->get_key())->vrt_key.vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast + (ikey->get_key())-> + vrt_key.vrouter_name, + (kMaxLenVnodeName+1)); if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->if_name))) { + (ikey->get_key())->if_name))) { free(vlink_val); // COV RESOURCE LEAK delete okey; return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vlink_val->vnode2_ifname, - reinterpret_cast(ikey->get_key())->if_name, - (kMaxLenInterfaceName+1)); + reinterpret_cast + (ikey->get_key())->if_name, + (kMaxLenInterfaceName+1)); break; default: break; @@ -3536,7 +3932,7 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, } DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag}; result_code = ReadConfigDB(ck_vlink, dt_type, UNC_OP_READ, dbop1, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Invalid param %d", result_code); delete ck_vlink; @@ -3546,6 +3942,40 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, uint8_t if_flag = 0; /* reset the bits of the interfaces constituiing the vlink */ SET_USER_DATA_FLAGS(ck_vlink->get_cfg_val(), kVlinkVnode1); + + /* In bdry vlanmap case: During vlink delete, get + * logical_port_id from UPPL. It is required for updating flag + * in correct entry in vlan-map table */ + if ((GetVlinkVnodeIfKeyType(ck_vlink, 0) == UNC_KT_VBR_VLANMAP) || + (GetVlinkVnodeIfKeyType(ck_vlink, 1) == UNC_KT_VBR_VLANMAP)) { + uint32_t session_id = 0; + uint32_t config_id = 0; + + unc::tclib::TcLibModule *tclib = + unc::upll::config_momgr::UpllConfigMgr::GetTcLibModule(); + PFC_ASSERT(tclib != NULL); + if (tclib == NULL) { + UPLL_LOG_ERROR("Unable to get tclib module"); + return UPLL_RC_ERR_GENERIC; + } + + /* Get current session_id and config_id from TcLib */ + tclib->GetSessionAttributes(&session_id, &config_id); + UPLL_LOG_TRACE("session_id = %u. config_id = %u", session_id, config_id); + + IpcReqRespHeader req; + memset(&req, 0, sizeof(IpcReqRespHeader)); + req.clnt_sess_id = session_id; + req.config_id = config_id; + + val_vlink_t *vlink_val = reinterpret_cast(GetVal(ck_vlink)); + /* Get logical_port_id details from physical*/ + upll_rc_t rc = ValidateBoundary(vlink_val->boundary_name, &req); + if (rc != UPLL_RC_SUCCESS) { + delete ck_vlink; + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } for (int i = 0 ; i < 2; i++) { bool executed = false; unc_key_type_t ktype; @@ -3557,7 +3987,7 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(ktype))); + (GetMoManager(ktype))); ConfigKeyVal *ck_vnif = NULL; result_code = mgr->GetChildConfigKey(ck_vnif, ck_vlink); if (!ck_vnif || result_code != UPLL_RC_SUCCESS) { @@ -3565,6 +3995,37 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, delete ck_vlink; return result_code; } + /* VlanmapOnBoundary: Boundary-vlanmap case: vlink deletion- + * Update the flag & ref_count in vlanmap_tbl if ref(user) exists else + * delete the entry in vlanmap_tbl */ + if (ktype == UNC_KT_VBR_VLANMAP) { + SET_USER_DATA_FLAGS(ck_vnif, 0); + + uint8_t *logical_port_id = NULL; + uint8_t flags = 0; + + GET_USER_DATA_FLAGS(ck_vlink->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + + val_boundary_t *boundary_val = reinterpret_cast( + GetVal(ck_boundary)); + + if (flags == kVlinkVnode2) + logical_port_id = boundary_val->logical_port_id2; + else + logical_port_id = boundary_val->logical_port_id1; + + key_vlan_map_t *vlanmap_key = reinterpret_cast( + ck_vnif->get_key()); + + /* Populate the logcial port id before updating vlanmap tbl */ + if (logical_port_id) { + uuu::upll_strncpy(vlanmap_key->logical_port_id, logical_port_id, + (kMaxLenLogicalPortId + 1)); + vlanmap_key->logical_port_id_valid = PFC_TRUE; + } + } + result_code = mgr->ReadConfigDB(ck_vnif, dt_type, UNC_OP_READ, dbop1, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -3573,23 +4034,41 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, delete ck_vlink; return result_code; } - GET_USER_DATA_FLAGS(ck_vnif, if_flag); - if_flag &= ~VIF_TYPE; - SET_USER_DATA_FLAGS(ck_vnif, if_flag); - vnode_if_type vnif_type; - result_code = UpdateVlinkMemIfFlag(dt_type, ck_vnif, dmi, - vnif_type, mgr, UNC_OP_DELETE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - delete ck_vnif; - delete ck_vlink; - return result_code; + + /* VlanmapOnBoundary: If kt is vlanmap (bdry vlanmap case): + * NotifyPOMForPortMapVlinkFlag is not reqd + * UpdateVlinkMemIfFlag will be done inside switch case */ + if (ktype != UNC_KT_VBR_VLANMAP) { + GET_USER_DATA_FLAGS(ck_vnif, if_flag); + if_flag &= ~VIF_TYPE; + SET_USER_DATA_FLAGS(ck_vnif, if_flag); + vnode_if_type vnif_type; + result_code = NotifyPOMForPortMapVlinkFlag(dt_type, + ck_vnif, + dmi, + UNC_OP_DELETE); + + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("NotifyPOMForPortMapVlinkFlag returning error %d", + result_code); + delete ck_vnif; + delete ck_vlink; + return result_code; + } + result_code = UpdateVlinkMemIfFlag(dt_type, ck_vnif, dmi, + vnif_type, mgr, UNC_OP_DELETE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + delete ck_vnif; + delete ck_vlink; + return result_code; + } + UPLL_LOG_DEBUG("Reset bit for iftype %d", vnif_type); } - UPLL_LOG_DEBUG("Reset bit for iftype %d", vnif_type); switch (ktype) { case UNC_KT_VBR_IF: { val_drv_vbr_if *val_drv_vbr = reinterpret_cast - (GetVal(ck_vnif)); + (GetVal(ck_vnif)); if (val_drv_vbr == NULL) { UPLL_LOG_DEBUG("Invalid param"); delete ck_vnif; @@ -3599,11 +4078,11 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, if (val_drv_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { executed = true; val_drv_vbr->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = - UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID_NO_VALUE; val_drv_vbr->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = - UNC_VF_INVALID; + UNC_VF_INVALID; result_code = reinterpret_cast(mgr)-> - UpdateConfigVal(ck_vnif, dt_type, dmi); + UpdateConfigVal(ck_vnif, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning %d", result_code); delete ck_vnif; @@ -3626,7 +4105,7 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, vtepif_val->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_VALID_NO_VALUE; result_code = reinterpret_cast(mgr)-> - UpdateConfigVal(ck_vnif, dt_type, dmi); + UpdateConfigVal(ck_vnif, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigVal returned %d", result_code); delete ck_vnif; @@ -3638,7 +4117,7 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, } case UNC_KT_VTUNNEL_IF: { val_vtunnel_if *vtunnelif_val = static_cast - (GetVal(ck_vnif)); + (GetVal(ck_vnif)); if (vtunnelif_val == NULL) { UPLL_LOG_DEBUG("Invalid param"); delete ck_vlink; @@ -3647,10 +4126,10 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, if (vtunnelif_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == UNC_VF_VALID) { executed = true; vtunnelif_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF] = - UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID_NO_VALUE; vtunnelif_val->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_INVALID; result_code = reinterpret_cast(mgr)-> - UpdateConfigVal(ck_vnif, dt_type, dmi); + UpdateConfigVal(ck_vnif, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { delete ck_vnif; delete ck_vlink; @@ -3660,6 +4139,100 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, } break; } + /* VlanmapOnBoundary: Added vlanmap case */ + case UNC_KT_VBR_VLANMAP: { + pfcdrv_val_vlan_map_t *vlanmap_val = static_cast + (GetVal(ck_vnif)); + if (vlanmap_val == NULL) { + UPLL_LOG_DEBUG("vlanmap_val is NULL"); + delete ck_vlink; + return UPLL_RC_ERR_GENERIC; + } + uint8_t flags = 0; + GET_USER_DATA_FLAGS(ck_vnif, flags); + + if (vlanmap_val->vm.valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID) { + /* Update only bdry_ref_count or flag if it refered with + * other vlink or vlan_map*/ + if (((flags & USER_VLANMAP_FLAG) && + vlanmap_val->bdry_ref_count > 0)|| + (flags & USER_VLANMAP_FLAG) || + vlanmap_val->bdry_ref_count > 1) { + UPLL_LOG_TRACE("Both user & boundary configured;" + "bdry_ref_count:%u", + vlanmap_val->bdry_ref_count); + if (vlanmap_val->bdry_ref_count == 1) { + UPLL_LOG_TRACE("Vlanmap Flag before reset = %u", flags); + flags &= ~BOUNDARY_VLANMAP_FLAG; + SET_USER_DATA_FLAGS(ck_vnif, flags); + vlanmap_val->valid[PFCDRV_IDX_BDRY_REF_COUNT] = + UNC_VF_VALID_NO_VALUE; + } + + vlanmap_val->bdry_ref_count--; + DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; + result_code = mgr->UpdateConfigDB(ck_vnif, dt_type, UNC_OP_UPDATE, + dmi, &dbop1, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("bdry_ref_count update failed:%d", result_code); + delete ck_vnif; + delete ck_vlink; + return result_code; + } + } else { + /* Deletes vlanmap entry*/ + DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; + result_code = mgr->UpdateConfigDB(ck_vnif, dt_type, UNC_OP_DELETE, + dmi, &dbop, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB returns error = %d", result_code); + delete ck_vnif; + delete ck_vlink; + return result_code; + } + } + } + delete ck_vnif; + + ConfigKeyVal *vbrif_ckv = NULL; + MoMgrImpl *mgr = reinterpret_cast(const_cast + (GetMoManager + (UNC_KT_VBR_IF))); + result_code = mgr->GetChildConfigKey(vbrif_ckv, ck_vlink); + if (!vbrif_ckv || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey error = %d", result_code); + delete ck_vlink; + return result_code; + } + /* Reads vbr_if info from DB */ + result_code = mgr->ReadConfigDB(vbrif_ckv, dt_type, UNC_OP_READ, + dbop1, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB error = %d", result_code); + delete vbrif_ckv; + delete ck_vlink; + return result_code; + } + + /* During no vlink resets vnode interface flag */ + GET_USER_DATA_FLAGS(vbrif_ckv, if_flag); + if_flag &= ~VIF_TYPE; + SET_USER_DATA_FLAGS(vbrif_ckv, if_flag); + vnode_if_type vnif_type; + UPLL_LOG_TRACE("Vlanmap delete vbr_if flag = %u", if_flag); + + result_code = UpdateVlinkMemIfFlag(dt_type, vbrif_ckv, dmi, + vnif_type, mgr, UNC_OP_DELETE); + DELETE_IF_NOT_NULL(vbrif_ckv); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateVlinkVlanmapFlag error = %d", result_code); + delete ck_vlink; + return result_code; + } + + SET_USER_DATA_FLAGS(ck_vlink->get_cfg_val(), kVlinkVnode2); + continue; + } default: UPLL_LOG_TRACE("No Portmap"); } @@ -3677,14 +4250,16 @@ upll_rc_t VlinkMoMgr::IsReferenced(ConfigKeyVal *ikey, SET_USER_DATA_FLAGS(ck_vlink->get_cfg_val(), kVlinkVnode2); delete ck_vnif; } + DELETE_IF_NOT_NULL(ck_boundary); delete ck_vlink; return UPLL_RC_SUCCESS; } -upll_rc_t VlinkMoMgr::SetConsolidatedStatus(ConfigKeyVal *vlink, - unc_keytype_operation_t op, - unc_keytype_configstatus_t cs_status, - DalDmlIntf *dmi) { +upll_rc_t VlinkMoMgr::SetConsolidatedStatus( + ConfigKeyVal *vlink, + unc_keytype_operation_t op, + unc_keytype_configstatus_t cs_status, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vlink *vlink_val = reinterpret_cast(GetVal(vlink)); @@ -3696,21 +4271,27 @@ upll_rc_t VlinkMoMgr::SetConsolidatedStatus(ConfigKeyVal *vlink, } ConfigKeyVal *vnif[2] = {NULL, NULL}; unc_keytype_configstatus_t if_cstatus[2], - vlanid_cstatus[2] = {UNC_CS_UNKNOWN, UNC_CS_UNKNOWN}; + vlanid_cstatus[2] = {UNC_CS_UNKNOWN, + UNC_CS_UNKNOWN}; VlinkNodePosition vnode_number = kVlinkVnode1; uint8_t rename_flag = 0; GET_USER_DATA_FLAGS(vlink->get_cfg_val(), rename_flag); for (int i = 0; i < 2; i++) { unc_key_type_t ktype = GetVlinkVnodeIfKeyType(vlink, i); VnodeChildMoMgr *mgr = reinterpret_cast - (const_cast - (GetMoManager(ktype))); + (const_cast + (GetMoManager(ktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; } SET_USER_DATA_FLAGS(vlink->get_cfg_val(), vnode_number); - mgr->GetChildConfigKey(vnif[i], vlink); + result_code = mgr->GetChildConfigKey(vnif[i], vlink); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed result code %d", result_code); + return result_code; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCs }; result_code = mgr->ReadConfigDB(vnif[i], UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, MAINTBL); @@ -3742,68 +4323,99 @@ upll_rc_t VlinkMoMgr::SetConsolidatedStatus(ConfigKeyVal *vlink, UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; } - if (strncmp(reinterpret_cast(ctrlr1), - reinterpret_cast(ctrlr2), kMaxLenCtrlrId+1) || + if (strncmp(reinterpret_cast(ctrlr1), + reinterpret_cast(ctrlr2), kMaxLenCtrlrId+1) || strncmp(reinterpret_cast(dom1), - reinterpret_cast(dom2),kMaxLenDomainId+1)) + reinterpret_cast(dom2), kMaxLenDomainId+1)) bound_vlink = true; } if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { - val_db_vlink_st *val_vlink_st = reinterpret_cast - (GetStateVal(vlink)); - UPLL_LOG_TRACE("updated vlink %s down_count %x\n", - vlink->ToStrAll().c_str(), val_vlink_st->down_count); if (bound_vlink) { unc_key_type_t if_ktype = vnif[0]->get_key_type(); unc_keytype_configstatus_t c_status = UNC_CS_UNKNOWN; val_port_map *pm, *pm1, *pm2; pm = pm1 = pm2 = NULL; + + val_vlan_map *vlanmap = NULL, *vlanmap1 = NULL, *vlanmap2 = NULL; for (int if_type = 0; if_type < 2; if_type++) { switch (if_ktype) { - case UNC_KT_VBR_IF: { - pm = &(reinterpret_cast - (GetVal(vnif[if_type]))->vbr_if_val.portmap); - c_status = (unc_keytype_configstatus_t) - (reinterpret_cast - (GetVal(vnif[if_type]))->cs_row_status); } - break; - case UNC_KT_VTEP_IF: { - pm = &(reinterpret_cast - (GetVal(vnif[if_type]))->portmap); - c_status = (unc_keytype_configstatus_t) - (reinterpret_cast - (GetVal(vnif[if_type]))->cs_row_status); } - break; - case UNC_KT_VTUNNEL_IF: { - pm = &(reinterpret_cast - (GetVal(vnif[if_type]))->portmap); - c_status = (unc_keytype_configstatus_t) - (reinterpret_cast - (GetVal(vnif[if_type]))->cs_row_status); } - break; - case UNC_KT_VUNK_IF: { - c_status = (unc_keytype_configstatus_t) - (reinterpret_cast - (GetVal(vnif[if_type]))->cs_row_status); } - default: - break; + case UNC_KT_VBR_IF: { + val_vbr_if *vbr_ifval = &(reinterpret_cast + (GetVal(vnif[if_type]))->vbr_if_val); + pm = &(vbr_ifval->portmap); + c_status = (unc_keytype_configstatus_t) + (vbr_ifval->cs_row_status); } + break; + /* VlanmapOnBoundary: Added vlanmap case */ + case UNC_KT_VBR_VLANMAP: { + vlanmap = &(reinterpret_cast + (GetVal(vnif[if_type]))->vm); + c_status = (unc_keytype_configstatus_t) + (reinterpret_cast + (GetVal(vnif[if_type]))->vm.cs_row_status); } + break; + case UNC_KT_VTEP_IF: { + pm = &(reinterpret_cast + (GetVal(vnif[if_type]))->portmap); + c_status = (unc_keytype_configstatus_t) + (reinterpret_cast + (GetVal(vnif[if_type]))->cs_row_status); } + break; + case UNC_KT_VTUNNEL_IF: { + pm = &(reinterpret_cast + (GetVal(vnif[if_type]))->portmap); + c_status = (unc_keytype_configstatus_t) + (reinterpret_cast + (GetVal(vnif[if_type]))->cs_row_status); } + break; + case UNC_KT_VUNK_IF: { + c_status = (unc_keytype_configstatus_t) + (reinterpret_cast + (GetVal(vnif[if_type]))->cs_row_status); } + default: + break; + } + if (if_type == 0) { + /* VlanmapOnBoundary: changes */ + if (if_ktype == UNC_KT_VBR_VLANMAP) { + vlanmap1 = vlanmap; + } else { + pm1 = static_cast(pm); + } + } else { + /* VlanmapOnBoundary: changes */ + if (if_ktype == UNC_KT_VBR_VLANMAP) { + vlanmap2 = vlanmap; + } else { + pm2 = static_cast(pm); + } } - if (if_type == 0) - pm1 = static_cast(pm); - else - pm2 = static_cast(pm); // Assign Configstatus if_cstatus[if_type] = c_status; if_ktype = vnif[1]->get_key_type(); } + /* VlanmapOnBoundary: changes */ + if (vlanmap1 && + (vlanmap1->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID || + vlanmap1->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID_NO_VALUE)) { + vlanid_cstatus[0] = (unc_keytype_configstatus_t) + (vlanmap1->cs_attr[UPLL_IDX_VLAN_ID_VM]); + } + /* VlanmapOnBoundary: changes */ + if (vlanmap2 && + (vlanmap2->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID || + vlanmap2->valid[UPLL_IDX_VLAN_ID_VM] == UNC_VF_VALID_NO_VALUE)) { + vlanid_cstatus[1] = (unc_keytype_configstatus_t) + (vlanmap2->cs_attr[UPLL_IDX_VLAN_ID_VM]); + } if (pm1 && (pm1->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID || - pm1->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID_NO_VALUE)) + pm1->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID_NO_VALUE)) vlanid_cstatus[0] = (unc_keytype_configstatus_t) - (pm1->cs_attr[UPLL_IDX_VLAN_ID_PM]); - if (pm2 && (pm1->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID || - pm2->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID_NO_VALUE)) + (pm1->cs_attr[UPLL_IDX_VLAN_ID_PM]); + if (pm2 && (pm2->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID || + pm2->valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID_NO_VALUE)) vlanid_cstatus[1] = (unc_keytype_configstatus_t) - (pm2->cs_attr[UPLL_IDX_VLAN_ID_PM]); + (pm2->cs_attr[UPLL_IDX_VLAN_ID_PM]); if ((vlanid_cstatus[0] == UNC_CS_APPLIED) && (vlanid_cstatus[1] == UNC_CS_APPLIED)) vlink_val->cs_attr[UPLL_IDX_VLAN_ID_VLNK] = UNC_CS_APPLIED; @@ -3814,30 +4426,32 @@ upll_rc_t VlinkMoMgr::SetConsolidatedStatus(ConfigKeyVal *vlink, (vlanid_cstatus[1] == UNC_CS_NOT_APPLIED)) vlink_val->cs_attr[UPLL_IDX_VLAN_ID_VLNK] = UNC_CS_NOT_APPLIED; else { - if (node_vunk_if == 1) // If first node is KT_VUNKOWN_IF + if (node_vunk_if == 1) // If first node is KT_VUNKOWN_IF vlink_val->cs_attr[UPLL_IDX_VLAN_ID_VLNK] = vlanid_cstatus[1]; else if (node_vunk_if == 2) // If second node is KT_VUNKOWN_IF vlink_val->cs_attr[UPLL_IDX_VLAN_ID_VLNK] = vlanid_cstatus[0]; else // Set Partially Applied for other cases vlink_val->cs_attr[UPLL_IDX_VLAN_ID_VLNK] = - UNC_CS_PARTIALLY_APPLIED; + UNC_CS_PARTIALLY_APPLIED; } - /* update consolidated config status if boundary vlink */ + /* update consolidated config status if boundary vlink */ if (op == UNC_OP_CREATE) { - vlink_val->cs_attr[UPLL_IDX_VNODE1_IF_NAME_VLNK] = if_cstatus[0]; - vlink_val->cs_attr[UPLL_IDX_VNODE2_IF_NAME_VLNK] = if_cstatus[1]; - - if ((if_cstatus[0] == UNC_CS_APPLIED) && - (if_cstatus[1] == UNC_CS_APPLIED)) - vlink_val->cs_row_status = UNC_CS_APPLIED; - else if ((if_cstatus[0] == UNC_CS_INVALID) || - (if_cstatus[1] == UNC_CS_INVALID)) - vlink_val->cs_row_status = UNC_CS_INVALID; - else if ((if_cstatus[0] == UNC_CS_NOT_APPLIED) && - (if_cstatus[1] == UNC_CS_NOT_APPLIED)) - vlink_val->cs_row_status = UNC_CS_NOT_APPLIED; - else - vlink_val->cs_row_status = UNC_CS_PARTIALLY_APPLIED; + vlink_val->cs_attr[UPLL_IDX_VNODE1_NAME_VLNK] = if_cstatus[0]; + vlink_val->cs_attr[UPLL_IDX_VNODE2_NAME_VLNK] = if_cstatus[1]; + vlink_val->cs_attr[UPLL_IDX_VNODE1_IF_NAME_VLNK] = if_cstatus[0]; + vlink_val->cs_attr[UPLL_IDX_VNODE2_IF_NAME_VLNK] = if_cstatus[1]; + + if ((if_cstatus[0] == UNC_CS_APPLIED) && + (if_cstatus[1] == UNC_CS_APPLIED)) + vlink_val->cs_row_status = UNC_CS_APPLIED; + else if ((if_cstatus[0] == UNC_CS_INVALID) || + (if_cstatus[1] == UNC_CS_INVALID)) + vlink_val->cs_row_status = UNC_CS_INVALID; + else if ((if_cstatus[0] == UNC_CS_NOT_APPLIED) && + (if_cstatus[1] == UNC_CS_NOT_APPLIED)) + vlink_val->cs_row_status = UNC_CS_NOT_APPLIED; + else + vlink_val->cs_row_status = UNC_CS_PARTIALLY_APPLIED; } } } @@ -3850,13 +4464,13 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, state_notification notification, bool skip) { UPLL_FUNC_TRACE; -// bool oper_change = false; + // bool oper_change = false; if (!ikey) { UPLL_LOG_DEBUG("ikey is NULL"); return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_DEBUG("notification %d skip %d ikey %s\n",notification,skip, - ikey->ToStrAll().c_str()); + UPLL_LOG_DEBUG("notification %d skip %d ikey %s\n", notification, skip, + ikey->ToStrAll().c_str()); upll_rc_t result_code = UPLL_RC_SUCCESS; if (!skip) { DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; @@ -3872,8 +4486,8 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, ConfigVal *tmp = (ikey->get_cfg_val()) ? ikey->get_cfg_val()->get_next_cfg_val() : NULL; val_db_vlink_st *vlink_db_valst = (tmp != NULL) ? - reinterpret_cast - (tmp->get_val()) : NULL; + reinterpret_cast + (tmp->get_val()) : NULL; if (vlink_db_valst == NULL) { UPLL_LOG_ERROR("Returning error \n"); return UPLL_RC_ERR_GENERIC; @@ -3884,23 +4498,28 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, return UPLL_RC_ERR_GENERIC; } val_vlink_st_t *vlink_valst = reinterpret_cast - (vlink_db_valst); + (vlink_db_valst); /* Update oper status based on notification */ vlink_valst->valid[UPLL_IDX_OPER_STATUS_VLNKS] = UNC_VF_VALID; switch (notification) { - case kCtrlrReconnectIfUp: + case kCtrlrReconnectIfUp: case kCtrlrReconnectIfDown: { val_vlink* vlink_val = reinterpret_cast(GetVal(ikey)); if (!vlink_val) { UPLL_LOG_DEBUG("val vlink is NULL"); return UPLL_RC_ERR_GENERIC; } - if (vlink_valst->oper_status == UPLL_OPER_STATUS_UP || - vlink_valst->oper_status == UPLL_OPER_STATUS_DOWN) { + if ((vlink_valst->oper_status == UPLL_OPER_STATUS_UP && + notification == kCtrlrReconnectIfUp)|| + (vlink_valst->oper_status == UPLL_OPER_STATUS_DOWN)) { return result_code; } + if (vlink_valst->oper_status == UPLL_OPER_STATUS_UP && + notification == kCtrlrReconnectIfDown) { + vlink_valst->oper_status = UPLL_OPER_STATUS_DOWN; + } if (notification == kCtrlrReconnectIfUp && vlink_val->admin_status == UPLL_ADMIN_ENABLE ) { vlink_valst->oper_status = UPLL_OPER_STATUS_UP; @@ -3908,14 +4527,15 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, vlink_valst->oper_status = UPLL_OPER_STATUS_DOWN; } } - break; + break; case kCtrlrDisconnect: + case kPortUnknown: if (vlink_valst->oper_status == UPLL_OPER_STATUS_UNKNOWN) { return UPLL_RC_SUCCESS; } vlink_valst->oper_status = UPLL_OPER_STATUS_UNKNOWN; vlink_db_valst->down_count = 0; - break; + break; case kAdminStatusDisabled: vlink_valst->oper_status = UPLL_OPER_STATUS_DOWN; break; @@ -3931,10 +4551,10 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, vlink_db_valst->down_count = (vlink_db_valst->down_count + 1); if (vlink_db_valst->down_count == 1) { vlink_valst->oper_status = UPLL_OPER_STATUS_DOWN; - // oper_change = true; + // oper_change = true; } } - break; + break; case kPathFaultReset: case kPortFaultReset: case kBoundaryFaultReset: { @@ -3943,12 +4563,19 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, if (vlink_db_valst->down_count == 0) { if (vlink_val->admin_status == UPLL_ADMIN_ENABLE) { vlink_valst->oper_status = UPLL_OPER_STATUS_UP; - // generate alarm - // oper_change = true; + // generate alarm + // oper_change = true; } } } - break; + break; + case kBoundaryFaultResetWithAdminDisabled: + case kPortFaultResetWithAdminDisabled: + vlink_db_valst->down_count = (vlink_db_valst->down_count > 0) ? + (vlink_db_valst->down_count - 1) : 0; + // oper stays down as admin status of component if is disabled + vlink_valst->oper_status = UPLL_OPER_STATUS_DOWN; + break; default: UPLL_LOG_DEBUG("Invalid nofification"); return UPLL_RC_ERR_GENERIC; @@ -3957,8 +4584,8 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; result_code = UpdateConfigDB(ikey, UPLL_DT_STATE, UNC_OP_UPDATE, dmi, &dbop, MAINTBL); - UPLL_LOG_DEBUG("Vlink SetOperstatus for VTN after Update is \n %s", - ikey->ToStrAll().c_str()); + UPLL_LOG_DEBUG("Vlink SetOperstatus for VTN after Update is \n %s", + ikey->ToStrAll().c_str()); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_ERROR("Error in update oper status"); return result_code; @@ -3966,8 +4593,8 @@ upll_rc_t VlinkMoMgr::SetOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi, if (skip) break; ikey = ikey->get_next_cfg_key_val(); } -// if (ikey->get_cfg_val()) -// delete ikey->get_cfg_val(); + // if (ikey->get_cfg_val()) + // delete ikey->get_cfg_val(); return result_code; } @@ -3984,7 +4611,7 @@ upll_rc_t VlinkMoMgr::MergeValidate(unc_key_type_t keytype, ConfigKeyVal *dup_key = NULL; result_code = GetChildConfigKey(dup_key, ikey); if (UPLL_RC_SUCCESS != result_code) { - if(dup_key) delete dup_key; + if (dup_key) delete dup_key; UPLL_LOG_DEBUG("GetChildConfigKey Failed"); return result_code; } @@ -4044,16 +4671,16 @@ upll_rc_t VlinkMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { } while (cval) { if (IpctSt::kIpcStValVlink == cval->get_st_num()) { - // set admin status to valid no value - val_vlink *vlink_val = reinterpret_castGetVal(ikey); - if (vlink_val->valid[UPLL_IDX_ADMIN_STATUS_VLNK] == UNC_VF_INVALID) - vlink_val->valid[UPLL_IDX_ADMIN_STATUS_VLNK] = UNC_VF_VALID_NO_VALUE; + // set admin status to valid no value + val_vlink *vlink_val = reinterpret_castGetVal(ikey); + if (vlink_val->valid[UPLL_IDX_ADMIN_STATUS_VLNK] == UNC_VF_INVALID) + vlink_val->valid[UPLL_IDX_ADMIN_STATUS_VLNK] = UNC_VF_VALID_NO_VALUE; } if (IpctSt::kIpcStValVlinkSt == cval->get_st_num()) { val_vlink_st *vlink_val_st = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vlink_st))); + (ConfigKeyVal::Malloc(sizeof(val_vlink_st))); val_db_vlink_st *db_vlink_val_st = reinterpret_cast - (cval->get_val()); + (cval->get_val()); memcpy(vlink_val_st, &(db_vlink_val_st->vlink_val_st), sizeof(val_vlink_st)); cval->SetVal(IpctSt::kIpcStValVlinkSt, vlink_val_st); @@ -4062,16 +4689,16 @@ upll_rc_t VlinkMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { key = ikey->get_key(); ConfigVal *val = ikey->get_cfg_val(); val_rename_vlink_t *val_rename_vlink = reinterpret_cast - (ConfigKeyVal::Malloc( - sizeof(val_rename_vlink_t))); // COV NULL RETURN - // Getting valid - val_rename_vlink->valid[UPLL_IDX_NEW_NAME_RVLNK] = UNC_VF_VALID; - // Getting new_name - uuu::upll_strncpy(val_rename_vlink->new_name, - (reinterpret_cast(key))->vlink_name, - (kMaxLenVlinkName+1)); - val->SetVal(IpctSt::kIpcStValRenameVlink, val_rename_vlink); - ikey->SetCfgVal(val); + (ConfigKeyVal::Malloc( + sizeof(val_rename_vlink_t))); // COV NULL RETURN + // Getting valid + val_rename_vlink->valid[UPLL_IDX_NEW_NAME_RVLNK] = UNC_VF_VALID; + // Getting new_name + uuu::upll_strncpy(val_rename_vlink->new_name, + (reinterpret_cast(key))->vlink_name, + (kMaxLenVlinkName+1)); + val->SetVal(IpctSt::kIpcStValRenameVlink, val_rename_vlink); + ikey->SetCfgVal(val); } cval = cval->get_next_cfg_val(); } @@ -4083,21 +4710,21 @@ upll_rc_t VlinkMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutFlag - | kOpInOutDomain }; + | kOpInOutDomain }; if (NULL == ikey || NULL == req || !(ikey->get_key())) { - UPLL_LOG_ERROR("Given Input is Empty"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_ERROR("Given Input is Empty"); + return UPLL_RC_ERR_GENERIC; } UPLL_LOG_ERROR("UpdateMo for %d", ikey->get_key_type()); result_code = ValidateMessage(req, ikey); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Validation Message is Failed "); - return result_code; + UPLL_LOG_ERROR("Validation Message is Failed "); + return result_code; } ConfigKeyVal *dup_ckvlink = NULL; result_code = GetChildConfigKey(dup_ckvlink, ikey); @@ -4108,34 +4735,27 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, result_code = ReadConfigDB(dup_ckvlink, req->datatype, UNC_OP_READ, dbop1, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - if (dup_ckvlink) delete dup_ckvlink; - UPLL_LOG_ERROR("Record does Not Exists"); - return result_code; + if (dup_ckvlink) delete dup_ckvlink; + UPLL_LOG_ERROR("Record does Not Exists"); + return result_code; } if (dup_ckvlink->get_cfg_val()->get_val()) { val_vlink_t *vlink_val = reinterpret_cast( - GetVal(dup_ckvlink)); + GetVal(dup_ckvlink)); val_vlink_t *vlink_val1 = reinterpret_cast( - GetVal(ikey)); + GetVal(ikey)); if (vlink_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID && vlink_val1->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID) { if (strncmp(reinterpret_cast(vlink_val->boundary_name), reinterpret_cast(vlink_val1->boundary_name), - kMaxLenBoundaryName+1)) { + kMaxLenBoundaryName+1)) { UPLL_LOG_DEBUG("Vlink boundary name updation not possible"); - free(dup_ckvlink); + DELETE_IF_NOT_NULL(dup_ckvlink); return UPLL_RC_ERR_CFG_SEMANTIC; } } } -#if 0 - result_code = DupConfigKeyVal(okey, ikey, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" DupConfigKeyVal Failed %d", result_code); - return result_code; - } -#endif controller_domain ctrlr_dom[2] = { { NULL, NULL }, { NULL, NULL } }; @@ -4147,16 +4767,18 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, SET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); SET_USER_DATA(ikey->get_cfg_val(), dup_ckvlink->get_cfg_val()); + /* VlanmapOnBoundary: changes */ + SET_USER_DATA(ikey, dup_ckvlink); if (ctrlr_dom[0].ctrlr != NULL) { result_code = ValidateCapability( - req, ikey, reinterpret_cast - (ctrlr_dom[0].ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); - delete dup_ckvlink; - return result_code; - } + req, ikey, reinterpret_cast + (ctrlr_dom[0].ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); + delete dup_ckvlink; + return result_code; + } } bool bound_vlink = false; if (ctrlr_dom[1].ctrlr != NULL) { @@ -4165,7 +4787,8 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, reinterpret_cast(ctrlr_dom[1].ctrlr))) { bound_vlink = true; result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom[1].ctrlr)); + reinterpret_cast + (ctrlr_dom[1].ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); delete dup_ckvlink; @@ -4173,10 +4796,10 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, } } } else { - bound_vlink = true; + bound_vlink = true; } if (bound_vlink) { - /* boundary vlink */ + /* boundary vlink */ val_vlink_t *vlink_val = reinterpret_cast(GetVal(ikey)); if (vlink_val && vlink_val->admin_status == UPLL_ADMIN_DISABLE) { UPLL_LOG_ERROR("Boundary vlink cannot be shut\n"); @@ -4190,25 +4813,35 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, delete dup_ckvlink; return UPLL_RC_ERR_GENERIC; } + uint8_t valid_boundary = tmp_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; + uint8_t valid_vlanid = tmp_val->valid[UPLL_IDX_VLAN_ID_VLNK]; + /* Below flag is used to reset the valid flag of boundary_name + * in ikey at the end for only vlan-id update case */ bool check_boundary_valid = false; - if (valid_boundary == UNC_VF_INVALID) { + + /* Only vlan-id update from GUI, below code should be executed */ + if (valid_boundary == UNC_VF_INVALID && + valid_vlanid != UNC_VF_INVALID) { val_vlink_t *val = reinterpret_cast(GetVal(dup_ckvlink)); if (!val) { UPLL_LOG_DEBUG("Invalid val"); delete dup_ckvlink; return UPLL_RC_ERR_GENERIC; } + /* Reset valid_boundary to db value */ valid_boundary = val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; if (valid_boundary == UNC_VF_VALID) { uuu::upll_strncpy(reinterpret_cast(tmp_val->boundary_name), - reinterpret_cast(val->boundary_name), - kMaxLenBoundaryName); + reinterpret_cast(val->boundary_name), + kMaxLenBoundaryName); tmp_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] = - val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; + val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK]; check_boundary_valid = true; } } + + /* Send ipc to UPPL only if boundary_name is VALID */ result_code = ValidateAttribute(ikey, dmi, req); if (UPLL_RC_SUCCESS != result_code) { delete dup_ckvlink; @@ -4216,6 +4849,29 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } + /* VlanmapOnBoundary: changes */ + val_vlink_t *vlink_dbval = reinterpret_cast( + GetVal(dup_ckvlink)); + val_vlink_t *vlink_ikeyval = reinterpret_cast( + GetVal(ikey)); + /* Case1: New boundary-map request (all combinations) + * Case2: Boundary-map request after no boundary-map:w + * Below code should be executed to update the vlink flag */ + if (((vlink_ikeyval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID) && + (vlink_dbval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == + UNC_VF_VALID_NO_VALUE)) || + ((vlink_ikeyval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID) && + (vlink_dbval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_INVALID))) { + result_code = UpdateVlinkVlanmapFlag(ikey, dup_ckvlink); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Failed to update vlink ikey flag"); + delete dup_ckvlink; + return result_code; + } + } + + /* Except description update request, + * below code should be executed */ if (valid_boundary != UNC_VF_INVALID) { uint8_t rename_flag = 0; VlinkNodePosition vnode_number = kVlinkVnode1; @@ -4230,7 +4886,7 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, return UPLL_RC_ERR_CFG_SEMANTIC; } MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(ktype))); + (GetMoManager(ktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid Mgr %d", ktype); delete dup_ckvlink; @@ -4243,8 +4899,52 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, delete dup_ckvlink; return result_code; } + /* VlanmapOnBoundary: Boundary vlink update operation for SW or SD */ + if (ktype == UNC_KT_VBR_VLANMAP) { + UPLL_LOG_DEBUG("Vlink update operation SW or SD boundary"); + + /* validateBoundary should be called only once */ + if (!ck_boundary) { + if ((vlink_ikeyval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == + UNC_VF_VALID_NO_VALUE) && + (vlink_dbval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == + UNC_VF_VALID)) { + /* no boundary of logical port id SW or SD. case first gets + * the boundary info from uppl and updates the vlink ikey flag */ + result_code = ValidateBoundary(vlink_dbval->boundary_name, req); + if (result_code != UPLL_RC_SUCCESS) { + delete dup_ckvlink; + delete ck_vnif[i]; + return UPLL_RC_ERR_CFG_SEMANTIC; + } + result_code = UpdateVlinkVlanmapFlag(ikey, dup_ckvlink); + if (result_code != UPLL_RC_SUCCESS) { + delete dup_ckvlink; + delete ck_vnif[i]; + DELETE_IF_NOT_NULL(ck_boundary); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } + } + + SET_USER_DATA_FLAGS(ck_vnif[i], 0); + /* Handles boundary vlanmap request */ + result_code = mgr->BoundaryVlanmapReq(req, ikey, dup_ckvlink, + ck_vnif[i], dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to update vlink for SD or SW boundary"); + /* ck_boundary should be deleted */ + DELETE_IF_NOT_NULL(ck_boundary); + DELETE_IF_NOT_NULL(ck_vnif[i]); + delete dup_ckvlink; + return result_code; + } + vnode_number = kVlinkVnode2; + continue; + } + result_code = mgr->ReadConfigDB(ck_vnif[i], req->datatype, - UNC_OP_READ, dbop1, dmi, MAINTBL); + UNC_OP_READ, dbop1, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in reading %d", result_code); delete dup_ckvlink; @@ -4257,9 +4957,9 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, } SET_USER_DATA_FLAGS(dup_ckvlink->get_cfg_val(), rename_flag); if (!ck_vnif[0] || !ck_vnif[1]) { - UPLL_LOG_DEBUG("Invalid param"); - delete dup_ckvlink; - return UPLL_RC_ERR_CFG_SEMANTIC; + UPLL_LOG_DEBUG("Invalid param"); + delete dup_ckvlink; + return UPLL_RC_ERR_CFG_SEMANTIC; } UPLL_LOG_DEBUG("Before UpdateVnodeIf %s", (ikey->ToStrAll()).c_str()); result_code = UpdateVnodeIf(req->datatype, ikey, ck_vnif, dmi, @@ -4272,16 +4972,29 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } } - DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; UPLL_LOG_DEBUG("The ikey Structue before update %s", - (ikey->ToStrAll()).c_str()); - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); + (ikey->ToStrAll()).c_str()); + + /* VlanmapOnBoundary: Added vlanmap check */ + if ((GetVlinkVnodeIfKeyType(dup_ckvlink, 0) == UNC_KT_VBR_VLANMAP) || + (GetVlinkVnodeIfKeyType(dup_ckvlink, 1) == UNC_KT_VBR_VLANMAP)) { + UPLL_LOG_TRACE("ikey flags update with boundary vlanmap vlink flag"); + DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; + result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, + dmi, &dbop, MAINTBL); + } else { + DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; + result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, + dmi, &dbop, MAINTBL); + } + if (UPLL_RC_SUCCESS != result_code) { delete dup_ckvlink; UPLL_LOG_ERROR("Updation Failure in DB : %d", result_code); return result_code; } + /* Resetting valid[BOUNDARY_NAME] in the request(description + * update case) */ if (check_boundary_valid) { tmp_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] = UNC_VF_INVALID; } @@ -4292,7 +5005,7 @@ upll_rc_t VlinkMoMgr::UpdateMo(IpcReqRespHeader *req, /* This function update the vnode operstatus * while doing commit */ -upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, +upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t keytype, uint32_t session_id, uint32_t config_id, DalDmlIntf *dmi) { @@ -4302,7 +5015,7 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, result_code = GetUninitOperState(ck_vlink, dmi); if (!ck_vlink || UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } ConfigKeyVal *tkey = ck_vlink; @@ -4310,35 +5023,49 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, while (tkey) { VnodeChildMoMgr *ktype_mgr[2]; bool bound_vlink = false; - controller_domain_t vlink_ctrlr_dom[] = { {NULL,NULL}, {NULL,NULL}}; + controller_domain_t vlink_ctrlr_dom[] = { {NULL, NULL}, {NULL, NULL}}; result_code = BoundaryVlink(tkey, vlink_ctrlr_dom, bound_vlink); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("Returning error %d\n",result_code); + UPLL_LOG_ERROR("Returning error %d\n", result_code); DELETE_IF_NOT_NULL(ck_vlink); return result_code; - } + } /* update consolidated oper status */ /* get the constituent interfaces */ ConfigKeyVal *vnif[2] = {NULL, NULL}; + state_notification notification = kAdminStatusEnabled; for (int i = 0; i < 2; i++) { - result_code = GetVnodeIfFromVlink(tkey,&vnif[i],dmi,i); + result_code = GetVnodeIfFromVlink(tkey, &vnif[i], dmi, i); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_ERROR("get %d constituent interface of vlink failed %d", - i,result_code); + i, result_code); DELETE_IF_NOT_NULL(ck_vlink); return result_code; } unc_key_type_t ktype = vnif[i]->get_key_type(); ktype_mgr[i] = reinterpret_cast - (const_cast(GetMoManager(ktype))); - } + (const_cast(GetMoManager(ktype))); + uint8_t valid_pm, valid_admin, admin_status; + val_port_map_t *pm; + result_code = ktype_mgr[i]->GetPortMap(vnif[i], valid_pm, pm, + valid_admin, admin_status); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetPortMap failed %d %d\n", i, result_code); + DELETE_IF_NOT_NULL(ck_vlink); + DELETE_IF_NOT_NULL(vnif[0]); + DELETE_IF_NOT_NULL(vnif[1]); + return result_code; + } + if (admin_status == UPLL_ADMIN_DISABLE) + notification = kAdminStatusDisabled; + } val_vlink *vlink_val = reinterpret_cast(GetVal(tkey)); if (!vlink_val) { UPLL_LOG_ERROR("Invalid param \n"); DELETE_IF_NOT_NULL(ck_vlink); for (int i = 0; i < 2; i++) { DELETE_IF_NOT_NULL(vnif[i]); - } + } return UPLL_RC_ERR_GENERIC; } val_db_vbr_if_st *vnif1_st; @@ -4356,13 +5083,13 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, if (vnif[i]->get_key_type() != UNC_KT_VUNK_IF) { vnif1_st = reinterpret_cast(GetStateVal(vnif[i])); vnif1_st = reinterpret_cast(GetStateVal(vnif[i])); - vnif1_st->vbr_if_val_st.oper_status = UPLL_OPER_STATUS_DOWN; - vnif1_st->vbr_if_val_st.valid[UPLL_IDX_OPER_STATUS_VBRIS] - = UNC_VF_VALID; result_code = ktype_mgr[i]->UpdateOperStatus(vnif[i], dmi, - kAdminStatusDisabled, true, true, false); + kAdminStatusDisabled, + true, + true, + false); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); for (int i = 0; i < 2; i++) { DELETE_IF_NOT_NULL(vnif[i]); } @@ -4372,7 +5099,7 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, } } } else if (!bound_vlink) { - result_code = SetOperStatus(tkey, dmi, kAdminStatusEnabled, true); + result_code = SetOperStatus(tkey, dmi, notification, true); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("SetOperStatus failed %d", result_code); DELETE_IF_NOT_NULL(ck_vlink); @@ -4383,14 +5110,18 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, } for (int i = 0; i < 2; i++) { if (vnif[i]->get_key_type() != UNC_KT_VUNK_IF) { - vnif1_st = reinterpret_cast(GetStateVal(vnif[i])); + vnif1_st = reinterpret_cast + (GetStateVal(vnif[i])); vnif1_st->vbr_if_val_st.oper_status = UPLL_OPER_STATUS_UP; vnif1_st->vbr_if_val_st.valid[UPLL_IDX_OPER_STATUS_VBRIS] - = UNC_VF_VALID; + = UNC_VF_VALID; result_code = ktype_mgr[i]->UpdateOperStatus(vnif[i], dmi, - kAdminStatusEnabled, true, true, false); + notification, + true, + true, + false); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); for (int i = 0; i < 2; i++) { DELETE_IF_NOT_NULL(vnif[i]); } @@ -4400,30 +5131,52 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, } } } else { - state_notification notification = kCtrlrReconnect; //noop + notification = (notification != kAdminStatusDisabled)?kCtrlrReconnect: + notification; // noop + val_db_vlink_st *vlink_valst = reinterpret_cast + (GetStateVal(tkey)); + if (vlink_valst == NULL) { + UPLL_LOG_ERROR("Returning error \n"); + return UPLL_RC_ERR_GENERIC; + } if (vlink_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == - UNC_VF_VALID) { - val_oper_status bound_oper_status; - + UNC_VF_VALID) { + val_oper_status bound_oper_status = UPLL_OPER_STATUS_DOWN; + result_code = GetBoundaryStatusFromPhysical(vlink_val->boundary_name, - vlink_ctrlr_dom, bound_oper_status, session_id, config_id); + vlink_ctrlr_dom, + bound_oper_status, + session_id, + config_id); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("Returning error %d\n",result_code); + UPLL_LOG_ERROR("Returning error %d\n", result_code); } switch (bound_oper_status) { - case UPLL_OPER_STATUS_DOWN: - notification = kPortFault; - break; - case UPLL_OPER_STATUS_UNKNOWN: - notification = kCtrlrDisconnect; - break; - case UPLL_OPER_STATUS_UP: - notification = kPortFaultReset; - break; - default: - notification = kPortFault; - break; + case UPLL_OPER_STATUS_DOWN: + if (vlink_valst->down_count == 0) + notification = kPortFault; + else + notification = kAdminStatusDisabled; + break; + case UPLL_OPER_STATUS_UNKNOWN: + notification = kPortUnknown; + break; + case UPLL_OPER_STATUS_UP: + if (vlink_valst->down_count > 0) + notification = (notification != kAdminStatusDisabled)? + kPortFaultReset:kAdminStatusDisabled; + else + notification = (notification != kAdminStatusDisabled)? + kAdminStatusEnabled:kAdminStatusDisabled; + break; + default: + if (vlink_valst->down_count == 0) + notification = kPortFault; + else + notification = (notification != kAdminStatusDisabled)? + kAdminStatusEnabled:kAdminStatusDisabled; + break; } } else { notification = kAdminStatusDisabled; @@ -4439,8 +5192,12 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, } for (int i = 0; i < 2; i++) { if (vnif[i]->get_key_type() != UNC_KT_VUNK_IF) { - result_code = ktype_mgr[i]->UpdateOperStatus(vnif[i], dmi, - notification, true, true, false); + result_code = ktype_mgr[i]->UpdateOperStatus(vnif[i], + dmi, + notification, + true, + true, + false); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error updating oper status %d", result_code); for (int i = 0; i < 2; i++) { @@ -4453,7 +5210,7 @@ upll_rc_t VlinkMoMgr::TxUpdateDtState(unc_key_type_t ktype, } } for (int i = 0; i < 2; i++) { - DELETE_IF_NOT_NULL(vnif[i]); + DELETE_IF_NOT_NULL(vnif[i]); } tkey= tkey->get_next_cfg_key_val(); } @@ -4471,26 +5228,39 @@ upll_rc_t VlinkMoMgr::GetVnodeIfFromVlink(ConfigKeyVal *vlink, } int num = (pos > 1)?2:1; VlinkNodePosition vnode_number = - (pos == 1) ?kVlinkVnode2:kVlinkVnode1; + (pos == 1) ?kVlinkVnode2:kVlinkVnode1; uint8_t rename_flag = 0; GET_USER_DATA_FLAGS(vlink->get_cfg_val(), rename_flag); for (int i = 0; i < num ; i++) { int j = (pos > 1)?i:pos; unc_key_type_t ktype = GetVlinkVnodeIfKeyType(vlink, j); + + /* VlanmapOnBoundary: In boundary vlan-map case: + * Get the vBrIf of vlan-mapped interface */ + if (ktype == UNC_KT_VBR_VLANMAP) + ktype = UNC_KT_VBR_IF; + MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(ktype))); + (GetMoManager(ktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr for keytype %d", ktype); return UPLL_RC_ERR_GENERIC; } + upll_rc_t result_code = UPLL_RC_SUCCESS; SET_USER_DATA_FLAGS(vlink->get_cfg_val(), vnode_number); - mgr->GetChildConfigKey(vnif[i], vlink); - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCs }; - upll_rc_t result_code = mgr->ReadConfigDB(vnif[i], UPLL_DT_STATE, - UNC_OP_READ, dbop, dmi, MAINTBL); + result_code = mgr->GetChildConfigKey(vnif[i], vlink); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed result_code %d", result_code); + return result_code; + } + + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCs|kOpInOutCtrlr| + kOpInOutDomain | kOpInOutFlag}; + result_code = mgr->ReadConfigDB(vnif[i], UPLL_DT_STATE, + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) - result_code = UPLL_RC_ERR_GENERIC; + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) + result_code = UPLL_RC_ERR_GENERIC; DELETE_IF_NOT_NULL(vnif[i]); UPLL_LOG_DEBUG("Returning error %d", result_code); return result_code; @@ -4507,23 +5277,23 @@ upll_rc_t VlinkMoMgr::GetVnodeIfFromVlink(ConfigKeyVal *vlink, } upll_rc_t VlinkMoMgr::BoundaryStatusHandler(uint8_t boundary_name[32], - bool oper_status, DalDmlIntf *dmi) { + bool oper_status, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("Boundary name :(%s) oper_status:(%d)", boundary_name, - oper_status); + oper_status); upll_rc_t result_code = UPLL_RC_SUCCESS; state_notification notification = - (oper_status == UPLL_OPER_STATUS_UP) ? kBoundaryFaultReset : - kBoundaryFault; + (oper_status == UPLL_OPER_STATUS_UP) ? kBoundaryFaultReset : + kBoundaryFault; /* Allocating memory for vlink key and value structure */ val_vlink *vlink_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vlink_t))); + (ConfigKeyVal::Malloc(sizeof(val_vlink_t))); /* copy fault boundaryname to vlink value structure */ uuu::upll_strncpy(reinterpret_cast(vlink_val->boundary_name), - reinterpret_cast(boundary_name), - kMaxLenBoundaryName); + reinterpret_cast(boundary_name), + kMaxLenBoundaryName); /* set Boundary flag as valid */ vlink_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] = UNC_VF_VALID; @@ -4537,20 +5307,100 @@ upll_rc_t VlinkMoMgr::BoundaryStatusHandler(uint8_t boundary_name[32], } ikey->AppendCfgVal(IpctSt::kIpcStValVlink, vlink_val); DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain}; + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain}; /* Getting list of Vlinks that have same boundaryname */ result_code = ReadConfigDB(ikey, UPLL_DT_STATE, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in reading %d", result_code); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) + result_code = UPLL_RC_SUCCESS; + else + UPLL_LOG_DEBUG("Error in reading %d", result_code); delete ikey; return result_code; } ConfigKeyVal *tmp = ikey; while (tmp != NULL) { - /* setting vlink operstatus */ +#if 1 + /* update consolidated oper status */ + /* get the constituent interfaces */ + ConfigKeyVal *vnif[2] = {NULL, NULL}; + VnodeChildMoMgr *ktype_mgr[2]; + uint8_t if_oper_status[2] = {UPLL_OPER_STATUS_UNINIT, + UPLL_OPER_STATUS_UNINIT}; + for (int i = 0; i < 2; i++) { + result_code = GetVnodeIfFromVlink(tmp, &vnif[i], dmi, i); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("get %d constituent interface of vlink failed %d", + i, result_code); + DELETE_IF_NOT_NULL(ikey); + return result_code; + } + unc_key_type_t ktype = vnif[i]->get_key_type(); + if (ktype != UNC_KT_VUNK_IF) { + if_oper_status[i] = + (reinterpret_cast(GetStateVal(vnif[i])))-> + vbr_if_val_st.oper_status; + } else { + if_oper_status[i] = UPLL_OPER_STATUS_UP; + } + ktype_mgr[i] = reinterpret_cast + (const_cast(GetMoManager(ktype))); + } + if (notification == kBoundaryFaultReset) { + val_db_vlink_st *vlink_st = reinterpret_cast + (GetStateVal(tmp)); + if (!vlink_st) { + UPLL_LOG_TRACE("Returning NULL\n"); + return UPLL_RC_ERR_GENERIC; + } + // if down count == 0, change notification to admin enabled + // so downcount does not get decremented. + if (vlink_st->down_count == 0) + notification = kAdminStatusEnabled; + uint8_t valid_pm, valid_admin, admin_status; + val_port_map_t *pm = NULL; + for (int i = 0; i < 2; i++) { + result_code = ktype_mgr[i]->GetPortMap(vnif[i], valid_pm, pm, + valid_admin, admin_status); + // if the interface is admin disabled, change notification + // to admin disabled. + if ((valid_admin == UNC_VF_VALID) && + (admin_status == UPLL_ADMIN_DISABLE)) { + notification = (notification == kAdminStatusEnabled)? + kAdminStatusDisabled:kBoundaryFaultResetWithAdminDisabled; + break; + } + } + } + /* setting vlink operstatus */ + SetOperStatus(tmp, dmi, notification, true); + for (int i = 0; i < 2; i++) { + if ((notification != kAdminStatusEnabled) || + (if_oper_status[i] == UPLL_OPER_STATUS_UNKNOWN)) { + result_code = ktype_mgr[i]->UpdateOperStatus(vnif[i], dmi, + notification, + true, + true, + false); + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Updating operstatus of vnode if failed %d\n", + result_code); + DELETE_IF_NOT_NULL(ikey); + DELETE_IF_NOT_NULL(vnif[0]); + DELETE_IF_NOT_NULL(vnif[1]); + return result_code; + } + } + for (int i = 0; i < 2; i++) { + DELETE_IF_NOT_NULL(vnif[i]); + } +#else + + /* setting vlink operstatus */ SetOperStatus(tmp, dmi, notification, true); ConfigKeyVal *if_key = NULL; @@ -4559,54 +5409,61 @@ upll_rc_t VlinkMoMgr::BoundaryStatusHandler(uint8_t boundary_name[32], VlinkNodePosition vnode_number = kVlinkVnode1; for (int i = 0; i < 2 ; i++) { SET_USER_DATA_FLAGS(tmp->get_cfg_val(), vnode_number); - unc_key_type_t ktype = GetVlinkVnodeIfKeyType(tmp,i); + unc_key_type_t ktype = GetVlinkVnodeIfKeyType(tmp, i); if (ktype == UNC_KT_VUNK_IF) { if (vnode_number == kVlinkVnode1) { vnode_number = kVlinkVnode2; } continue; + } else { + if (ktype == UNC_KT_VBR_VLANMAP) + ktype = UNC_KT_VBR_IF; } VnodeChildMoMgr *mgr = (reinterpret_cast - (const_cast(GetMoManager(ktype)))); + (const_cast(GetMoManager(ktype)))); result_code = mgr->GetChildConfigKey(if_key, tmp); if (!if_key || result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed"); return UPLL_RC_ERR_GENERIC; } - result_code = mgr->UpdateOperStatus(if_key, dmi, notification, + result_code = mgr->UpdateOperStatus(if_key, dmi, notification, false, true, false); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_ERROR("Updating operstatus of vnode if failed %d\n", - result_code); + result_code); return result_code; } vnode_number = (vnode_number == kVlinkVnode1)? - kVlinkVnode2:kVlinkVnode1; + kVlinkVnode2:kVlinkVnode1; DELETE_IF_NOT_NULL(if_key); } SET_USER_DATA_FLAGS(tmp->get_cfg_val(), vlink_flag); +#endif tmp = tmp->get_next_cfg_key_val(); } VnodeMoMgr *vn_mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBRIDGE))); + (const_cast(GetMoManager(UNC_KT_VBRIDGE))); if (!vn_mgr) { UPLL_LOG_DEBUG("Returning error\n"); + DELETE_IF_NOT_NULL(ikey); return UPLL_RC_ERR_GENERIC; } - result_code = vn_mgr->TxUpdateDtState(UNC_KT_VBRIDGE,0,0,dmi); + result_code = vn_mgr->TxUpdateDtState(UNC_KT_VBRIDGE, 0, 0, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("failed to update vnode oper status %d\n",result_code); + UPLL_LOG_DEBUG("failed to update vnode oper status %d\n", result_code); + DELETE_IF_NOT_NULL(ikey); return result_code; } VtnMoMgr *vtn_mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); + (const_cast(GetMoManager(UNC_KT_VTN))); if (!vtn_mgr) { UPLL_LOG_DEBUG("Returning error\n"); + DELETE_IF_NOT_NULL(ikey); return UPLL_RC_ERR_GENERIC; } - result_code = vtn_mgr->TxUpdateDtState(UNC_KT_VTN,0,0,dmi); + result_code = vtn_mgr->TxUpdateDtState(UNC_KT_VTN, 0, 0, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("failed to update vtn oper status %d\n",result_code); + UPLL_LOG_DEBUG("failed to update vtn oper status %d\n", result_code); } // ikey->get_cfg_val()->set_user_data(NULL); if (ikey != NULL) { @@ -4617,9 +5474,9 @@ upll_rc_t VlinkMoMgr::BoundaryStatusHandler(uint8_t boundary_name[32], } upll_rc_t VlinkMoMgr::UpdateVlinkOperStatus(uint8_t *ctrlr_id, - DalDmlIntf *dmi, - state_notification notification, - bool skip) { + DalDmlIntf *dmi, + state_notification notification, + bool skip) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ck_val = NULL; @@ -4630,9 +5487,11 @@ upll_rc_t VlinkMoMgr::UpdateVlinkOperStatus(uint8_t *ctrlr_id, return result_code; } SET_USER_DATA_CTRLR(ck_val, ctrlr_id); - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr | kOpInOutFlag}; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr | kOpInOutFlag}; result_code = ReadConfigDB(ck_val, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (result_code == UPLL_RC_SUCCESS) { ConfigKeyVal *tkey = ck_val; while (tkey != NULL) { @@ -4649,68 +5508,70 @@ upll_rc_t VlinkMoMgr::UpdateVlinkOperStatus(uint8_t *ctrlr_id, } if (ktype[0] != UNC_KT_VUNK_IF && ktype[1] != UNC_KT_VUNK_IF) { UPLL_LOG_DEBUG("Empty Controller name recieved.") - UPLL_LOG_DEBUG("Controller is empty only for UNKNOWN controllers"); + UPLL_LOG_DEBUG("Controller is empty only for" + "UNKNOWN controllers"); return result_code; } } char *ctrlr1 = reinterpret_cast(vlink_ctrlr_dom[0].ctrlr); char *ctrlr2 = reinterpret_cast(vlink_ctrlr_dom[1].ctrlr); if ((ctrlr1 && !strcmp(ctrlr1, reinterpret_cast(ctrlr_id))) || - (ctrlr2 && !strcmp(ctrlr2, reinterpret_cast(ctrlr_id)))) { + (ctrlr2 && !strcmp(ctrlr2, reinterpret_cast(ctrlr_id)))) { result_code = SetOperStatus(tkey, dmi, notification, true); } tkey = tkey->get_next_cfg_key_val(); } } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UPLL_RC_SUCCESS; + result_code = UPLL_RC_SUCCESS; } DELETE_IF_NOT_NULL(ck_val); return result_code; } upll_rc_t VlinkMoMgr::RestoreVlinkOperStatus(ConfigKeyVal *ck_vnif, - DalDmlIntf *dmi, - state_notification notification, - bool skip) { + DalDmlIntf *dmi, + state_notification notification, + bool skip) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *tmp = ck_vnif; - while (tmp != NULL) { - ConfigKeyVal *ck_vlink = NULL; - uint8_t if_flag = 0; - GET_USER_DATA_FLAGS(tmp, if_flag); - SET_USER_DATA_FLAGS(tmp, kVlinkVnode1); + // while (tmp != NULL) { + ConfigKeyVal *ck_vlink = NULL; + uint8_t if_flag = 0; + GET_USER_DATA_FLAGS(tmp, if_flag); + SET_USER_DATA_FLAGS(tmp, kVlinkVnode1); + result_code = GetVlinkKeyVal(tmp, UPLL_DT_STATE, ck_vlink, dmi); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + // check if the vBrIf is the second VnodeIf in VLINK TBL + SET_USER_DATA_FLAGS(tmp, kVlinkVnode2); + DELETE_IF_NOT_NULL(ck_vlink); result_code = GetVlinkKeyVal(tmp, UPLL_DT_STATE, ck_vlink, dmi); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - // check if the vBrIf is the second VnodeIf in VLINK TBL - SET_USER_DATA_FLAGS(tmp, kVlinkVnode2); - DELETE_IF_NOT_NULL(ck_vlink); - result_code = GetVlinkKeyVal(tmp, UPLL_DT_STATE, ck_vlink, dmi); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to Read vlink table"); - DELETE_IF_NOT_NULL(ck_vlink); - return result_code; - } - if (result_code == UPLL_RC_SUCCESS) { - result_code = SetOperStatus(ck_vlink, dmi, notification, true); - } else if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - DELETE_IF_NOT_NULL(ck_vlink); - UPLL_LOG_DEBUG("Error in reading vlink DB"); - return result_code; - } - SET_USER_DATA_FLAGS(tmp, if_flag); + } else if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to Read vlink table"); DELETE_IF_NOT_NULL(ck_vlink); - tmp = tmp->get_next_cfg_key_val(); + return result_code; } + if (result_code == UPLL_RC_SUCCESS) { + result_code = SetOperStatus(ck_vlink, dmi, notification, true); + } else if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ck_vlink); + UPLL_LOG_DEBUG("Error in reading vlink DB"); + return result_code; + } + SET_USER_DATA_FLAGS(tmp, if_flag); + DELETE_IF_NOT_NULL(ck_vlink); + // tmp = tmp->get_next_cfg_key_val(); + // } return result_code; } -upll_rc_t VlinkMoMgr::GetBoundaryStatusFromPhysical(uint8_t *boundary, - controller_domain_t *ctr_domain, - val_oper_status &bound_operStatus, - uint32_t session_id, - uint32_t config_id) { +upll_rc_t VlinkMoMgr::GetBoundaryStatusFromPhysical( + uint8_t *boundary, + controller_domain_t *ctr_domain, + val_oper_status &bound_operStatus, + uint32_t session_id, + uint32_t config_id) { UPLL_FUNC_TRACE; IpcResponse ipc_resp; ConfigKeyVal *ck_bound = NULL; @@ -4720,27 +5581,27 @@ upll_rc_t VlinkMoMgr::GetBoundaryStatusFromPhysical(uint8_t *boundary, return UPLL_RC_ERR_GENERIC; } key_boundary *bound_cfg = static_cast - (ConfigKeyVal::Malloc(sizeof(key_boundary))); + (ConfigKeyVal::Malloc(sizeof(key_boundary))); uuu::upll_strncpy(bound_cfg->boundary_id, reinterpret_cast(boundary), (kMaxLenBoundaryName+1)); ck_bound = new ConfigKeyVal(UNC_KT_BOUNDARY, IpctSt::kIpcStKeyBoundary, bound_cfg, NULL); result_code = SendIpcReq(session_id, config_id, UNC_OP_READ, - UPLL_DT_STATE, ck_bound, NULL, &ipc_resp); + UPLL_DT_STATE, ck_bound, NULL, &ipc_resp); if ((result_code != UPLL_RC_SUCCESS) || (!ipc_resp.ckv_data)) { delete ck_bound; ck_bound = NULL; bound_operStatus = UPLL_OPER_STATUS_DOWN; DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - UPLL_LOG_ERROR("Invalid Boundary %s %d\n", boundary,result_code); - return UPLL_RC_ERR_CFG_SEMANTIC; + UPLL_LOG_ERROR("Invalid Boundary %s %d\n", boundary, result_code); + return UPLL_RC_ERR_GENERIC; } ck_bound->ResetWith(ipc_resp.ckv_data); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); val_boundary_st *bound_st = static_cast - (GetVal(ck_bound)); - if (!bound_st || (bound_st->valid[kIdxBoundaryStOperStatus] != + (GetVal(ck_bound)); + if (!bound_st || (bound_st->valid[kIdxBoundaryStOperStatus] != UNC_VF_VALID)) { UPLL_LOG_DEBUG("Returning error \n"); return UPLL_RC_ERR_GENERIC; @@ -4763,19 +5624,19 @@ upll_rc_t VlinkMoMgr::GetBoundaryStatusFromPhysical(uint8_t *boundary, } upll_rc_t VlinkMoMgr::GetRemoteIf(ConfigKeyVal *ck_vnif, - ConfigKeyVal *&ck_remif, - DalDmlIntf *dmi) { + ConfigKeyVal *&ck_remif, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; uint8_t vif_flag = 0; - uint8_t rem_if; + uint8_t rem_if; ConfigKeyVal *ck_vlink = NULL; if (!ck_vnif) { UPLL_LOG_DEBUG("Returning error\n"); return UPLL_RC_ERR_GENERIC; } - GET_USER_DATA_FLAGS(ck_vnif,vif_flag); + GET_USER_DATA_FLAGS(ck_vnif, vif_flag); if (vif_flag & 0xA0) rem_if = 1; else if (vif_flag & 0x50) @@ -4784,11 +5645,11 @@ upll_rc_t VlinkMoMgr::GetRemoteIf(ConfigKeyVal *ck_vnif, return UPLL_RC_ERR_GENERIC; result_code = GetVlinkKeyVal(ck_vnif, UPLL_DT_RUNNING, ck_vlink, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("Returning error\n"); + UPLL_LOG_ERROR("Returning error %d\n", result_code); DELETE_IF_NOT_NULL(ck_vlink); return UPLL_RC_ERR_GENERIC; } - result_code = GetVnodeIfFromVlink(ck_vlink,&ck_remif,dmi,rem_if); + result_code = GetVnodeIfFromVlink(ck_vlink, &ck_remif, dmi, rem_if); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_ERROR("get remote interface failed %d", result_code); DELETE_IF_NOT_NULL(ck_vlink); @@ -4798,15 +5659,19 @@ upll_rc_t VlinkMoMgr::GetRemoteIf(ConfigKeyVal *ck_vnif, return result_code; } -upll_rc_t VlinkMoMgr::GetConnected(key_vnode_type_t *src_node, - set *Vnode_set_obj, - set*Vlink_set_obj, - set* boundary_if_set, - DalDmlIntf *dmi) { +upll_rc_t VlinkMoMgr::GetConnected( + key_vnode_type_t *src_node, + set *Vnode_set_obj, + set*Vlink_set_obj, + set* boundary_if_set, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - set::iterator vlink_itr; - std::pair< set::iterator,bool > pr; + set::iterator vlink_itr; + std::pair< set::iterator, bool > pr; key_vnode_t vnode_key; memset(&vnode_key, 0, sizeof(key_vnode_t)); /* initialize the vlink key with the vtn name and vlink vnode1 val with @@ -4821,8 +5686,9 @@ upll_rc_t VlinkMoMgr::GetConnected(key_vnode_type_t *src_node, return result_code; } key_vlink *vlink_key = reinterpret_cast(ck_vlink->get_key()); - uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, src_node->vnode_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + uuu::upll_strncpy(vlink_key->vtn_key.vtn_name, + src_node->vnode_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); ConfigVal *cv_vlink = NULL; result_code = AllocVal(cv_vlink, UPLL_DT_RUNNING); if (result_code != UPLL_RC_SUCCESS) { @@ -4832,21 +5698,23 @@ upll_rc_t VlinkMoMgr::GetConnected(key_vnode_type_t *src_node, } ck_vlink->SetCfgVal(cv_vlink); val_vlink *vlink_val = reinterpret_cast - (GetVal(ck_vlink)); + (GetVal(ck_vlink)); if (vlink_val == NULL) { UPLL_LOG_DEBUG("val vlink is NULL"); DELETE_IF_NOT_NULL(ck_vlink); return UPLL_RC_ERR_GENERIC; } if (npos == kVnode1) { - uuu::upll_strncpy(vlink_val->vnode1_name,src_node->vnode_key.vnode_name, (kMaxLenVnodeName+1)); + uuu::upll_strncpy(vlink_val->vnode1_name, + src_node->vnode_key.vnode_name, + (kMaxLenVnodeName+1)); vlink_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_VALID; vlink_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_INVALID; } if (npos == kVnode2) { // check for a match with the given src_vbr as vnode2_name uuu::upll_strncpy(vlink_val->vnode2_name, - src_node->vnode_key.vnode_name, (kMaxLenVnodeName+1)); + src_node->vnode_key.vnode_name, (kMaxLenVnodeName+1)); vlink_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_VALID; vlink_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_INVALID; } @@ -4855,15 +5723,15 @@ upll_rc_t VlinkMoMgr::GetConnected(key_vnode_type_t *src_node, /* Get all the vlinks with the specified vnode as either vnode1 or vnode2 under the given VTN. Populate the corresponding vnode and vlink set. Invoke GetConnected on the inserted vnode - */ + */ DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr| kOpInOutDomain | kOpInOutFlag}; + kOpInOutCtrlr| kOpInOutDomain | kOpInOutFlag}; result_code = ReadConfigDB(ck_vlink, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("vlink records are %s\n ",ck_vlink->ToStrAll().c_str()); + UPLL_LOG_DEBUG("vlink records are %s\n ", ck_vlink->ToStrAll().c_str()); ConfigKeyVal *tmp = ck_vlink; - while(tmp != NULL) { + while (tmp != NULL) { controller_domain_t vlink_ctrlr_dom[2]; vlink_ctrlr_dom[0].ctrlr = NULL; vlink_ctrlr_dom[0].domain = NULL; @@ -4895,32 +5763,36 @@ upll_rc_t VlinkMoMgr::GetConnected(key_vnode_type_t *src_node, uint8_t boundary_if[kMaxLenInterfaceName+1]; if (npos == kVnode1) { uuu::upll_strncpy(vnode_key.vnode_name, - tmp_vlink_val->vnode2_name, (kMaxLenVnodeName+1)); + tmp_vlink_val->vnode2_name, (kMaxLenVnodeName+1)); if (bound_vlink) { - uuu::upll_strncpy(boundary_if, - tmp_vlink_val->vnode2_ifname, (kMaxLenInterfaceName+1)); + uuu::upll_strncpy(boundary_if, + tmp_vlink_val->vnode2_ifname, + (kMaxLenInterfaceName+1)); } swap_npos = 1; - + } else { uuu::upll_strncpy(vnode_key.vnode_name, - tmp_vlink_val->vnode1_name, (kMaxLenVnodeName+1)); + tmp_vlink_val->vnode1_name, (kMaxLenVnodeName+1)); if (bound_vlink) { - uuu::upll_strncpy(boundary_if, - tmp_vlink_val->vnode1_ifname, (kMaxLenInterfaceName+1)); + uuu::upll_strncpy(boundary_if, + tmp_vlink_val->vnode1_ifname, + (kMaxLenInterfaceName+1)); } swap_npos = 0; } uuu::upll_strncpy(vnode_key.vtn_key.vtn_name, - tmp_vlink_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + tmp_vlink_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); unc_key_type_t tmp_key_type = GetVlinkVnodeIfKeyType(tmp, swap_npos); if (bound_vlink) { if (tmp_key_type == UNC_KT_VBR_IF) { key_vnode_if tmp_boundary_vnode_if; tmp_boundary_vnode_if.vnode_key = vnode_key; - uuu::upll_strncpy(tmp_boundary_vnode_if.vnode_if_name, boundary_if, (kMaxLenInterfaceName+1)); + uuu::upll_strncpy(tmp_boundary_vnode_if.vnode_if_name, + boundary_if, + (kMaxLenInterfaceName+1)); boundary_if_set->insert(tmp_boundary_vnode_if); - } + } tmp = tmp->get_next_cfg_key_val(); continue; } @@ -4929,14 +5801,18 @@ upll_rc_t VlinkMoMgr::GetConnected(key_vnode_type_t *src_node, vnode_key_type.key_type = tmp_key_type; pr = Vnode_set_obj->insert(vnode_key_type); if (pr.second == true) { - GetConnected(&vnode_key_type, Vnode_set_obj, Vlink_set_obj,boundary_if_set, dmi); + GetConnected(&vnode_key_type, + Vnode_set_obj, + Vlink_set_obj, + boundary_if_set, + dmi); } tmp = tmp->get_next_cfg_key_val(); } } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Error in reading vlink DB"); - DELETE_IF_NOT_NULL(ck_vlink); - return result_code; + UPLL_LOG_DEBUG("Error in reading vlink DB"); + DELETE_IF_NOT_NULL(ck_vlink); + return result_code; } if (npos == kVnode2) { DELETE_IF_NOT_NULL(ck_vlink); @@ -4957,10 +5833,12 @@ upll_rc_t VlinkMoMgr::UpdateVlinkOperStatusUsingVlinkSet( for (set::iterator vlink_itr = vlink_set->begin(); vlink_itr != vlink_set->end(); ++vlink_itr) { key_vlink_t *vlink_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vlink_t))); + (ConfigKeyVal::Malloc(sizeof(key_vlink_t))); *vlink_key = *vlink_itr; - ConfigKeyVal *ck_vlink = new ConfigKeyVal(UNC_KT_VLINK, IpctSt::kIpcStKeyVlink, - vlink_key, NULL); + ConfigKeyVal *ck_vlink = new ConfigKeyVal(UNC_KT_VLINK, + IpctSt::kIpcStKeyVlink, + vlink_key, + NULL); result_code = SetOperStatus(ck_vlink, dmi, notification); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Record updation failed in UPLL_DT_STATE %d", @@ -4972,7 +5850,307 @@ upll_rc_t VlinkMoMgr::UpdateVlinkOperStatusUsingVlinkSet( } return result_code; } + +/* VlanmapOnBoundary changes */ +upll_rc_t VlinkMoMgr::UpdateVlinkVlanmapFlag(ConfigKeyVal *&ikey, + ConfigKeyVal *&db_vlinkckv) { + UPLL_FUNC_TRACE; + + uint8_t flag1 = 0; + uint8_t flag2 = 0; + uint8_t tmp_flag = 0; + + val_vlink_t *ival = reinterpret_cast(GetVal(ikey)); + val_vlink_t *dbval = reinterpret_cast(GetVal(db_vlinkckv)); + + if (!ival || !dbval) { + UPLL_LOG_DEBUG("ival:%p or dbval:%p is NULL", ival, dbval); + return UPLL_RC_ERR_GENERIC; + } + + /* In case of vLink create req without boundary name */ + if (ival->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_INVALID) { + UPLL_LOG_DEBUG("Boundary name is not present"); + return UPLL_RC_SUCCESS; + } + + /* If bdry info from uppl is present */ + if (ck_boundary && ck_boundary->get_cfg_val()) { + controller_domain_t vlink_ctrlr_dom[2]; + vlink_ctrlr_dom[0].ctrlr = NULL; + vlink_ctrlr_dom[0].domain = NULL; + vlink_ctrlr_dom[1].ctrlr = NULL; + vlink_ctrlr_dom[1].domain = NULL; + val_boundary_t *boundary_val = + reinterpret_cast(GetVal(ck_boundary)); + upll_rc_t result_code = GetControllerDomainId(ikey, vlink_ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to get vlink controller and domain"); + return UPLL_RC_SUCCESS; + } + + for (int i = 0; i < 2; i++) { + uint8_t *bdry_ctr_name = NULL; + uint8_t *bdry_domain = NULL; + uint8_t *logical_port_id = NULL; + + if (i == 0) { + logical_port_id = boundary_val->logical_port_id1; + bdry_ctr_name = boundary_val->controller_name1; + bdry_domain = boundary_val->domain_name1; + } else { + logical_port_id = boundary_val->logical_port_id2; + bdry_ctr_name = boundary_val->controller_name2; + bdry_domain = boundary_val->domain_name2; + } + + if ((toupper(logical_port_id[0]) == 'S' && + toupper(logical_port_id[1]) == 'W') || + (toupper(logical_port_id[0]) == 'S' && + toupper(logical_port_id[1]) == 'D')) { + for (int index = 0; index <2; index++) { + if (!vlink_ctrlr_dom[index].ctrlr) { + UPLL_LOG_TRACE("Controller name is empty. controller type" + "is unknown"); + continue; + } + if ((!strcmp(reinterpret_cast(vlink_ctrlr_dom[index].ctrlr), + reinterpret_cast(bdry_ctr_name))) && + (!strcmp(reinterpret_cast(vlink_ctrlr_dom[index].domain), + reinterpret_cast(bdry_domain)))) { + if (index == 0) { + UPLL_LOG_TRACE("Node1 is SW or SD"); + flag1 = (uint8_t)(VLINK_FLAG_NODE1_TYPE& + (kVlanMap << kVlinkVnodeIf1Type)); + if ((ival->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == + UNC_VF_VALID_NO_VALUE) + && (dbval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == + UNC_VF_VALID)) { + flag1 = (uint8_t)(VLINK_FLAG_NODE1_TYPE& + (kVbrIf << kVlinkVnodeIf1Type)); + } + /*Set ikey node1 flag */ + GET_USER_DATA_FLAGS(ikey, tmp_flag); + tmp_flag &= ~VLINK_FLAG_NODE1_TYPE; + tmp_flag |= flag1; + SET_USER_DATA_FLAGS(ikey, tmp_flag); + } else { + UPLL_LOG_TRACE("Node2 is SW or SD"); + flag2 = (uint8_t)(VLINK_FLAG_NODE2_TYPE& + (kVlanMap << kVlinkVnodeIf2Type)); + if ((ival->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == + UNC_VF_VALID_NO_VALUE) + && (dbval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == + UNC_VF_VALID)) { + flag2 = (uint8_t)(VLINK_FLAG_NODE2_TYPE& + (kVbrIf << kVlinkVnodeIf2Type)); + } + /*Set ikey node1 flag */ + GET_USER_DATA_FLAGS(ikey, tmp_flag); + tmp_flag &= ~VLINK_FLAG_NODE2_TYPE; + tmp_flag |= flag2; + SET_USER_DATA_FLAGS(ikey, tmp_flag); + } + } + } + } + } + + /* During vLink update: no-boundarymap: Dont set the tkey flag */ + if ((ival->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID_NO_VALUE) && + (dbval->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] == UNC_VF_VALID)) { + return UPLL_RC_SUCCESS; + } + + if (flag1 != 0) { + /*Set dbvlink node1 flag */ + GET_USER_DATA_FLAGS(db_vlinkckv, tmp_flag); + tmp_flag &= ~VLINK_FLAG_NODE1_TYPE; + tmp_flag |= flag1; + SET_USER_DATA_FLAGS(db_vlinkckv, tmp_flag); + } + + if (flag2 != 0) { + /*Set dbvlink node2 flag */ + GET_USER_DATA_FLAGS(db_vlinkckv, tmp_flag); + tmp_flag &= ~VLINK_FLAG_NODE2_TYPE; + tmp_flag |= flag2; + SET_USER_DATA_FLAGS(db_vlinkckv, tmp_flag); + } + } else { + UPLL_LOG_DEBUG("ck_boundary is NULL"); + return UPLL_RC_ERR_GENERIC; + } + return UPLL_RC_SUCCESS; +} + +upll_rc_t VlinkMoMgr::GetVlinkKeyValFromVlanMap( + ConfigKeyVal *vlanmap_ckv, + ConfigKeyVal *&vlink_ckv, + DalDmlIntf *dmi, + upll_keytype_datatype_t datatype) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + uint32_t session_id = 0; + uint32_t config_id = 0; + + key_vlan_map *vlanmap_key = (vlanmap_ckv->get_key()) ? + (reinterpret_cast(vlanmap_ckv->get_key())):NULL; + if (!vlanmap_key) { + UPLL_LOG_DEBUG("Error in retrieving key vlan map"); + return UPLL_RC_ERR_GENERIC; + } + + uint8_t *logical_port_id = NULL; + if (vlanmap_key->logical_port_id_valid == 1) { + logical_port_id = vlanmap_key->logical_port_id; + if (logical_port_id == NULL) { + UPLL_LOG_DEBUG("Recieved empty logical port id"); + return UPLL_RC_ERR_GENERIC; + } + } else { + UPLL_LOG_ERROR("Logical port id is not present"); + return UPLL_RC_ERR_GENERIC; + } + IpcResponse ipc_resp; + + /* ConfigKeyVal for Boundary + * */ + + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = ctrlr_dom.domain = NULL; + GET_USER_DATA_CTRLR_DOMAIN(vlanmap_ckv, ctrlr_dom); + + unc::tclib::TcLibModule *tclib = + unc::upll::config_momgr::UpllConfigMgr::GetTcLibModule(); + PFC_ASSERT(tclib != NULL); + if (tclib == NULL) { + UPLL_LOG_ERROR("Unable to get tclib module"); + return UPLL_RC_ERR_GENERIC; + } + + /* Get current session_id and config_id from TcLib */ + tclib->GetSessionAttributes(&session_id, &config_id); + UPLL_LOG_TRACE("session_id = %u. config_id = %u", session_id, config_id); + + key_boundary *bndrykey = static_cast + (ConfigKeyVal::Malloc(sizeof(key_boundary))); // COV NULL RETURN + val_boundary_t *boundary_val = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_boundary))); + ConfigVal *cv_boundary = new ConfigVal(IpctSt::kIpcStValBoundary, + boundary_val); + uuu::upll_strncpy(boundary_val->logical_port_id2, logical_port_id, + kMaxLenBoundaryName); + boundary_val->valid[kIdxBoundaryLogicalPortId2] = UNC_VF_VALID; + uuu::upll_strncpy(boundary_val->controller_name2, ctrlr_dom.ctrlr, + kMaxLenCtrlrId); + boundary_val->valid[kIdxBoundaryControllerName2] = UNC_VF_VALID; + ConfigKeyVal *ck_boundary = new ConfigKeyVal(UNC_KT_BOUNDARY, + IpctSt::kIpcStKeyBoundary, + bndrykey, cv_boundary); + SET_USER_DATA_CTRLR_DOMAIN(ck_boundary, ctrlr_dom); + + /* Case1: Audit - Always check boundary in RUNNING + * Case2: Commit(del) - check CANDIDATE + * Case3: Commit(Cr/upd) - check RUNNING */ + upll_keytype_datatype_t dt_type = (UPLL_DT_AUDIT == datatype)? + UPLL_DT_RUNNING:datatype; + + result_code = SendIpcReq(session_id, config_id, UNC_OP_READ_SIBLING, + dt_type, ck_boundary, NULL, &ipc_resp); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + boundary_val = reinterpret_cast(GetVal(ck_boundary)); + memset(boundary_val, 0, sizeof(val_boundary_t)); + uuu::upll_strncpy(boundary_val->logical_port_id1, logical_port_id, + kMaxLenBoundaryName); + boundary_val->valid[kIdxBoundaryLogicalPortId1] = UNC_VF_VALID; + uuu::upll_strncpy(boundary_val->controller_name1, ctrlr_dom.ctrlr, + kMaxLenCtrlrId); + boundary_val->valid[kIdxBoundaryControllerName1] = UNC_VF_VALID; + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + result_code = SendIpcReq(session_id, config_id, UNC_OP_READ_SIBLING, + dt_type, ck_boundary, NULL, &ipc_resp); + } + + if ((result_code != UPLL_RC_SUCCESS) || (!ipc_resp.ckv_data)) { + UPLL_LOG_DEBUG("Error in retrieving boundary info from UPPL"); + DELETE_IF_NOT_NULL(ck_boundary); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + ck_boundary->ResetWith(ipc_resp.ckv_data); + delete ipc_resp.ckv_data; + + ConfigKeyVal *ck_boundary_tmp = ck_boundary; + while (ck_boundary_tmp) { + uint8_t *boundary_id = ck_boundary_tmp->get_key()? + (reinterpret_cast + (ck_boundary_tmp->get_key()))->boundary_id : NULL; + if (boundary_id == NULL) { + UPLL_LOG_DEBUG("Boundary key is empty"); + DELETE_IF_NOT_NULL(ck_boundary); + return UPLL_RC_ERR_GENERIC; + } + + ConfigKeyVal *ckv_vlink = NULL; + result_code = GetChildConfigKey(ckv_vlink, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed for vlink"); + DELETE_IF_NOT_NULL(ck_boundary); + return result_code; + } + ConfigVal *cv_vlink = NULL; + result_code = AllocVal(cv_vlink, datatype, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AllocVal failed for vlink"); + DELETE_IF_NOT_NULL(ck_boundary); + return result_code; + } + ckv_vlink->AppendCfgVal(cv_vlink); + val_vlink *vlink_val = reinterpret_castGetVal(ckv_vlink); + if (vlink_val == NULL) { + UPLL_LOG_DEBUG("val_vlink is NULL"); + DELETE_IF_NOT_NULL(ckv_vlink); + DELETE_IF_NOT_NULL(ck_boundary); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(vlink_val->boundary_name, boundary_id, + kMaxLenBoundaryName+1); + vlink_val->valid[UPLL_IDX_BOUNDARY_NAME_VLNK] = UNC_VF_VALID; + + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag}; + result_code = ReadConfigDB(ckv_vlink, datatype, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + ck_boundary_tmp = ck_boundary_tmp->get_next_cfg_key_val(); + DELETE_IF_NOT_NULL(ckv_vlink); + continue; + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to read vlink info based on boundary id"); + DELETE_IF_NOT_NULL(ckv_vlink); + DELETE_IF_NOT_NULL(ck_boundary); + return UPLL_RC_ERR_GENERIC; + } + + if (vlink_ckv == NULL) { + vlink_ckv = ckv_vlink; + } else { + vlink_ckv->AppendCfgKeyVal(ckv_vlink); + } + UPLL_LOG_TRACE("%s", vlink_ckv->ToStrAll().c_str()); + ck_boundary_tmp = ck_boundary_tmp->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(ck_boundary); + + /* If vlink_ckv is NULL, do not send SUCCESS */ + if (!vlink_ckv) { + UPLL_LOG_INFO("No vlink found in datatype:%d", datatype); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + + return UPLL_RC_SUCCESS; +} + } // namespace kt_momgr } // namespace upll } // namespace unc - diff --git a/coordinator/modules/upll/vlink_momgr.hh b/coordinator/modules/upll/vlink_momgr.hh index 82ccc4a9..b3027bd1 100644 --- a/coordinator/modules/upll/vlink_momgr.hh +++ b/coordinator/modules/upll/vlink_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -12,6 +12,7 @@ #include #include +#include #include "vnode_momgr.hh" #include "unc/uppl_common.h" @@ -32,51 +33,53 @@ typedef struct key_vnode_if_t { struct key_vnode_if_compare { inline bool operator()(const key_vnode_if &keyvnodeif1, - const key_vnode_if keyvnodeif2) const { + const key_vnode_if keyvnodeif2) const { int ret = strcmp((const char *)keyvnodeif1.vnode_key.vtn_key.vtn_name, (const char *)keyvnodeif2.vnode_key.vtn_key.vtn_name); if (ret == 0) { ret = strcmp((const char *)keyvnodeif1.vnode_key.vnode_name, - (const char*)keyvnodeif2.vnode_key.vnode_name); + (const char*)keyvnodeif2.vnode_key.vnode_name); if (ret == 0) { return (strcmp((const char *)keyvnodeif1.vnode_if_name, - (const char*)keyvnodeif2.vnode_if_name) < 0); - } else + (const char*)keyvnodeif2.vnode_if_name) < 0); + } else { return (ret < 0); - } else + } + } else { return (ret < 0); - } + } + } }; typedef struct key_vlink_user_data { - key_user_data_t user_data1; - key_user_data_t user_data2; + key_user_data_t user_data1; + key_user_data_t user_data2; } key_vlink_user_data_t; typedef struct val_db_vlink_st { - val_vlink_st vlink_val_st; - uint32_t down_count; + val_vlink_st vlink_val_st; + uint32_t down_count; } val_db_vlink_st_t; #define SET_USER_DATA_CTRLR2(ckey, ctrlr2) { \ GET_USER_DATA(ckey) \ if (ctrlr && strlen(reinterpret_cast(ctrlr))) { \ - key_vlink_user_data *user_data = reinterpret_cast\ - (ckey->get_user_data()); \ - uuu::upll_strncpy(user_data->ctrlr2_id, ctrlr2, (kMaxLenCtrlrId+1)); \ + key_vlink_user_data *user_data = reinterpret_cast\ + (ckey->get_user_data()); \ + uuu::upll_strncpy(user_data->ctrlr2_id, ctrlr2, (kMaxLenCtrlrId+1)); \ } else { \ - return UPLL_RC_ERR_GENERIC; \ + return UPLL_RC_ERR_GENERIC; \ }\ } #define SET_USER_DATA_DOMAIN2(ckey, domain2) { \ GET_USER_DATA(ckey) \ if ( domain2 && strlen(reinterpret_cast(domain2))) { \ - key_vlink_user_data *user_data = reinterpret_cast \ - (ckey->get_user_data()); \ - uuu::upll_strncpy(user_data->domain2_id, domain2, (kMaxLenCtrlrId+1)); \ + key_vlink_user_data *user_data = reinterpret_cast \ + (ckey->get_user_data()); \ + uuu::upll_strncpy(user_data->domain2_id, domain2, (kMaxLenCtrlrId+1)); \ } else { \ - return UPLL_RC_ERR_GENERIC; \ + return UPLL_RC_ERR_GENERIC; \ }\ } @@ -86,713 +89,746 @@ enum NodePosition { }; class VlinkMoMgr : public VnodeMoMgr { - private: - static unc_key_type_t vlink_child[]; - static BindInfo vlink_bind_info[]; - static BindInfo vlink_rename_bind_info[]; - static BindInfo key_vlink_maintbl_bind_info[]; - static BindInfo key_vlink_renametbl_update_bind_info[]; - ConfigKeyVal *ck_boundary; - - /* @brief Retrieve oper status of boundary port from physical - * - * @param[in] boundary_name pointer to boundary name - * @param[in] ctr_domain pointer to controller and domain id pair - * @param[out] bound_operStatus operstatus of boundary - * @param[in] session_id transaction session id - * @param[in] config_id transaction config id - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t GetBoundaryStatusFromPhysical(uint8_t *boundary_name, - controller_domain_t *ctr_domain, - val_oper_status &bound_operStatus, - uint32_t session_id, - uint32_t config_id) ; - - - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VLINK keytype - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey); - /** - * @Brief compares controller id and domain id before - * updating the value to DB. - * - * @param[in] ikey ikey contains key and value structure. - * @param[in] okey okey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - */ - upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) { - UPLL_LOG_TRACE("Not needed for this KT, returning SUCCESS"); - return UPLL_RC_SUCCESS; - } - - /** - * @Brief Validates the syntax for KT_VLINK keytype key structure. - * - * @param[in] key_vlink KT_VLINK key structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVlinkKey( - key_vlink_t *key_vlink, - unc_keytype_operation_t operation = UNC_OP_INVALID); - - /** - * @Brief Validates the syntax for KT_VLINK keytype value structure. - * - * @param[in] val_vlink KT_VLINK value structure. - * - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVlinkValue(val_vlink_t *val_vlink, - unc_keytype_operation_t operation = UNC_OP_INVALID); - - /** - * @Brief Checks if the specified key type(KT_VLINK) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input - * request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - - upll_rc_t ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name = NULL); - - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_vlink Value Structure. - * @param[in] attr pointer to controller attribute - * @param[in] operation Operation Name - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, - const uint8_t* attrs, unc_keytype_operation_t operation); - - /** - * @brief Get the specific vtn_name and vnode_name from ConfigKeyVal - * - * @param[in] ikey ConfigKeyVal pointer - * @param[out] vtn_name vnode vtn name - * @param[out] vnode_name vnode specific name - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to retrieve the values - */ - upll_rc_t GetVnodeName(ConfigKeyVal *ikey, - uint8_t *&vtn_name, - uint8_t *&vnode_name); - - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - upll_rc_t GetControllerKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - unc_keytype_datatype_t dt_type, - char *ctrlr_name); - upll_rc_t SwapVnodes(ConfigKeyVal *&temp_ck_vlink); - upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - DalDmlIntf *dmi, uint8_t *ctrlr_id, bool &no_rename); - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom); - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id); - - upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, - controller_domain_t *ctrlr_dom); - - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - - /** - * @brief Validate whether the boundary exists in Physical - * -boundary data read from physical is stored in class variable - * @param[in] boundary_name BoundaryId - * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC Failed to fetch Boundary Data - */ - upll_rc_t ValidateBoundary(uint8_t *boundary_name,IpcReqRespHeader *req); - - /* Rename */ - - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, - ConfigKeyVal *okey, - ConfigKeyVal *&rename_info, - DalDmlIntf *dmi, - const char *ctrlr_id, - bool &renamed); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - upll_rc_t UpdateVnodeVal(ConfigKeyVal *rename_info, DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, bool &no_rename); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + private: + static unc_key_type_t vlink_child[]; + static BindInfo vlink_bind_info[]; + static BindInfo vlink_rename_bind_info[]; + static BindInfo key_vlink_maintbl_bind_info[]; + static BindInfo key_vlink_renametbl_update_bind_info[]; + + /* @brief Retrieve oper status of boundary port from physical + * + * @param[in] boundary_name pointer to boundary name + * @param[in] ctr_domain pointer to controller and domain id pair + * @param[out] bound_operStatus operstatus of boundary + * @param[in] session_id transaction session id + * @param[in] config_id transaction config id + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t GetBoundaryStatusFromPhysical(uint8_t *boundary_name, + controller_domain_t *ctr_domain, + val_oper_status &bound_operStatus, + uint32_t session_id, + uint32_t config_id); + + + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VLINK keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey); + /** + * @Brief compares controller id and domain id before + * updating the value to DB. + * + * @param[in] ikey ikey contains key and value structure. + * @param[in] okey okey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + */ + upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, + ConfigKeyVal *okey) { + UPLL_LOG_TRACE("Not needed for this KT, returning SUCCESS"); + return UPLL_RC_SUCCESS; + } + + /** + * @Brief Validates the syntax for KT_VLINK keytype key structure. + * + * @param[in] key_vlink KT_VLINK key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVlinkKey( + key_vlink_t *key_vlink, + unc_keytype_operation_t operation = UNC_OP_INVALID); + + /** + * @Brief Validates the syntax for KT_VLINK keytype value structure. + * + * @param[in] val_vlink KT_VLINK value structure. + * + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVlinkValue(val_vlink_t *val_vlink, + unc_keytype_operation_t operation + = UNC_OP_INVALID); + + /** + * @Brief Checks if the specified key type(KT_VLINK) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input + * request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + + upll_rc_t ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char *ctrlr_name = NULL); + + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_vlink Value Structure. + * @param[in] attr pointer to controller attribute + * @param[in] operation Operation Name + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVlinkAttributeSupportCheck(val_vlink_t *val_vlink, + const uint8_t* attrs, + unc_keytype_operation_t operation); + + /** + * @brief Get the specific vtn_name and vnode_name from ConfigKeyVal + * + * @param[in] ikey ConfigKeyVal pointer + * @param[out] vtn_name vnode vtn name + * @param[out] vnode_name vnode specific name + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to retrieve the values + */ + upll_rc_t GetVnodeName(ConfigKeyVal *ikey, + uint8_t *&vtn_name, + uint8_t *&vnode_name); + + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + upll_rc_t GetControllerKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + unc_keytype_datatype_t dt_type, + char *ctrlr_name); + upll_rc_t SwapVnodes(ConfigKeyVal *&temp_ck_vlink); + upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + DalDmlIntf *dmi, uint8_t *ctrlr_id, bool &no_rename); + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom); + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id); + + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + + /** + * @brief Validate whether the boundary exists in Physical + * -boundary data read from physical is stored in class variable + * @param[in] boundary_name BoundaryId + * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC Failed to fetch Boundary Data + */ + upll_rc_t ValidateBoundary(uint8_t *boundary_name, IpcReqRespHeader *req); + + /* Rename */ + + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, + ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + const char *ctrlr_id, + bool &renamed); + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + upll_rc_t UpdateVnodeVal(ConfigKeyVal *rename_info, DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, bool &no_rename); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); - /** - * @brief Check if Vlink interfaces are unique and update accordingly - * - * @param[in] req IpcReqRespHeader - * @param[in] ikey pointer to ConfigKeyVal - * @param[in] dmi pointer to DalDmlIntf - * @param[in] controller_ids pointer to array of controller domains - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIf - */ - upll_rc_t UpdateVlinkIf(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi, - controller_domain_t *ctrlr_dom); - /** - * @brief Updates the flag bits of the member interfacs - * - * @param[in] dt_type database type - * @param[in] ckv_if pointer to member interface ConfigKeyVal - * @param[in] dmi pointer to DalDmlIntf - * @param[in] mgr corresponding if momgr - * @param[out] vnif_type interface type encoded in 6 bits of vlink flag - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update member if - */ - - upll_rc_t UpdateVlinkMemIfFlag(upll_keytype_datatype_t dt_type, - ConfigKeyVal *ckv_if, - DalDmlIntf *dmi, - vnode_if_type &vnif_type, - MoMgrImpl *mgr, - unc_keytype_operation_t op); - /** - * @brief Update the VbrIf ConfigKeyVal with vExternal details fetched from - * physical, if the VbrIf is part of vExternal - * - * @param[in] dt_type database type - * @param[in] ikey pointer to ConfigKeyVal - * @param[in] ck_vbrif array of pointers to component vbrifs - * @param[in] dmi pointer to DalDmlIntf - * @param[in] op UPLL operation - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIf - */ - upll_rc_t UpdateVnodeIf(upll_keytype_datatype_t dt_type, - ConfigKeyVal *ikey, ConfigKeyVal **cv_vbrif, DalDmlIntf *dmi, - unc_keytype_operation_t op); - - /** - * @brief Check if the Vlink interface is a VbrIf. If it is VbrIf, - * Update portmap if port on switch in not preconfigured - with settings different from physical data - * - * @param[in] ikey pointer to vlink ConfigKeyVal - * @param[in] ikey pointer to vnode interface ConfigKeyVal - * @param[in] dmi pointer to DalDmlIntf - * @param[in] dt_type Data type (candidate/running) - * @param[in] op operation - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE vLink Interface is not a VbrIf Interface - * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIfi - */ - upll_rc_t UpdateVnodeIfPortmap(ConfigKeyVal *ikey, - ConfigKeyVal *ck_drv_vbr_if, - DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op); - - bool GetBoundaryData(ConfigKeyVal *ikey, - IpcRequest *ipc_req, - IpcResponse *ipc_resp); - - /** - * @brief If portmap is valid, compare the switch_id, port_name and vlan_id - * of physical boundary data with the existing VbrIf portmap details - * and throw error if mismatch - * - * @param[in] req pointer to IpcReqRespHeader - * @param[in] ikey pointer to ConfigKeyVal - * @param[in] dmi pointer to DalDmlIntf - * - * @retval true Successful - * @retval false Failure/MisMatch - */ - bool CompareVbrIfWithPhysicalData(ConfigKeyVal *ck_drv_vbr_if, - ConfigKeyVal *ck_boundary_data, - ConfigKeyVal *ikey); - - /** - * @brief Create a Driver port map structure which is filled with data from - * Boundary - * - * @param[in] iokey pointer to vbrif ConfigKeyVal - * @param[in] ikey pointer to vlink ConfigKeyVal - * - */ - upll_rc_t ConverttoDriverPortMap(ConfigKeyVal *iokey, ConfigKeyVal *ikey); - - upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey); - /* @brief This method invoke when the VTN merge hapeening between - * Running and DT import. This will checks the vnode name - * unique or not. - * - * @param[in] keytype UNC KEY TYPE - * @param[in/out] ctrlr_id Controller ID - * @param[in] conflict_ckv key and value structure - * @param[in] dal Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + /** + * @brief Check if Vlink interfaces are unique and update accordingly + * + * @param[in] req IpcReqRespHeader + * @param[in] ikey pointer to ConfigKeyVal + * @param[in] dmi pointer to DalDmlIntf + * @param[in] controller_ids pointer to array of controller domains + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIf + */ + upll_rc_t UpdateVlinkIf(IpcReqRespHeader *req, + ConfigKeyVal *ikey, DalDmlIntf *dmi, + controller_domain_t *ctrlr_dom, + bool restore_flag); + /** + * @brief Updates the flag bits of the member interfacs + * + * @param[in] dt_type database type + * @param[in] ckv_if pointer to member interface ConfigKeyVal + * @param[in] dmi pointer to DalDmlIntf + * @param[in] mgr corresponding if momgr + * @param[out] vnif_type interface type encoded in 6 bits of vlink flag + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update member if + */ + + upll_rc_t UpdateVlinkMemIfFlag(upll_keytype_datatype_t dt_type, + ConfigKeyVal *ckv_if, + DalDmlIntf *dmi, + vnode_if_type &vnif_type, + MoMgrImpl *mgr, + unc_keytype_operation_t op); + /** + * @brief Update the VbrIf ConfigKeyVal with vExternal details fetched from + * physical, if the VbrIf is part of vExternal + * + * @param[in] dt_type database type + * @param[in] ikey pointer to ConfigKeyVal + * @param[in] ck_vbrif array of pointers to component vbrifs + * @param[in] dmi pointer to DalDmlIntf + * @param[in] op UPLL operation + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIf + */ + upll_rc_t UpdateVnodeIf(upll_keytype_datatype_t dt_type, + ConfigKeyVal *ikey, + ConfigKeyVal **cv_vbrif, + DalDmlIntf *dmi, + unc_keytype_operation_t op); - /* @brief To convert the value structure read from DB to - * VTNService during READ operations - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); - /** - * @brief Used to create a vnode entry in CANDIDATE DB and is invoked - * through createMo - * - * @param[in] req IpcRequestresponseHeader pointer - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dmi DalDmlIntf pointer - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE parent vtn is not present in DB - * @retval UPLL_RC_ERR_GENERIC generic error - * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Not Supported by controller - * @retval UPLL_RC_ERR_INVALID_OPTION1 Invalid option - */ - upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); - upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id); - /** - * @brief Creates a vnode entry in DB after performing pre-requisite checks - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] req IpcReqRespHeader pointer - * @param[in] dmi DalDmlIntf pointer - * @param[in] controller_ids pointer to - * array of controller id pointers - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE is not present in DB - * @retval UPLL_RC_ERR_GENERIC generic error - * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB - */ + /** + * @brief Check if the Vlink interface is a VbrIf. If it is VbrIf, + * Update portmap if port on switch in not preconfigured + with settings different from physical data + * + * @param[in] ikey pointer to vlink ConfigKeyVal + * @param[in] ikey pointer to vnode interface ConfigKeyVal + * @param[in] dmi pointer to DalDmlIntf + * @param[in] dt_type Data type (candidate/running) + * @param[in] op operation + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE vLink Interface is not a VbrIf Interface + * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIfi + */ + upll_rc_t UpdateVnodeIfPortmap(ConfigKeyVal *ikey, + ConfigKeyVal *ck_drv_vbr_if, + DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op); + + bool GetBoundaryData(ConfigKeyVal *ikey, + IpcRequest *ipc_req, + IpcResponse *ipc_resp); + + /** + * @brief If portmap is valid, compare the switch_id, port_name and vlan_id + * of physical boundary data with the existing VbrIf portmap details + * and throw error if mismatch + * + * @param[in] req pointer to IpcReqRespHeader + * @param[in] ikey pointer to ConfigKeyVal + * @param[in] dmi pointer to DalDmlIntf + * + * @retval true Successful + * @retval false Failure/MisMatch + */ + bool CompareVbrIfWithPhysicalData(ConfigKeyVal *ck_drv_vbr_if, + ConfigKeyVal *ck_boundary_data, + ConfigKeyVal *ikey); + + /** + * @brief Create a Driver port map structure which is filled with data from + * Boundary + * + * @param[in] iokey pointer to vbrif ConfigKeyVal + * @param[in] ikey pointer to vlink ConfigKeyVal + * + */ + upll_rc_t ConverttoDriverPortMap(ConfigKeyVal *iokey, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, + ConfigKeyVal *&okey); + /* @brief This method invoke when the VTN merge hapeening between + * Running and DT import. This will checks the vnode name + * unique or not. + * + * @param[in] keytype UNC KEY TYPE + * @param[in/out] ctrlr_id Controller ID + * @param[in] conflict_ckv key and value structure + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /* @brief To convert the value structure read from DB to + * VTNService during READ operations + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); + /** + * @brief Used to create a vnode entry in CANDIDATE DB and is invoked + * through createMo + * + * @param[in] req IpcRequestresponseHeader pointer + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dmi DalDmlIntf pointer + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE parent vtn is not present in DB + * @retval UPLL_RC_ERR_GENERIC generic error + * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Not Supported by controller + * @retval UPLL_RC_ERR_INVALID_OPTION1 Invalid option + */ + upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag = false); + upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id); + /** + * @brief Creates a vnode entry in DB after performing pre-requisite checks + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] req IpcReqRespHeader pointer + * @param[in] dmi DalDmlIntf pointer + * @param[in] controller_ids pointer to + * array of controller id pointers + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE is not present in DB + * @retval UPLL_RC_ERR_GENERIC generic error + * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB + */ #if 0 - upll_rc_t RestoreVnode(ConfigKeyVal *ikey, - IpcReqRespHeader *req, - DalDmlIntf *dmi, - controller_domain_t ctrlr_domain[]); + upll_rc_t RestoreVnode(ConfigKeyVal *ikey, + IpcReqRespHeader *req, + DalDmlIntf *dmi, + controller_domain_t ctrlr_domain[]); #endif - /** - * @brief Set the Consolidated Configstatus of boundary vlink after - * retreiving the component if status from individual controllers - * @param[in] vlink ConfigKeyVal pointer - * @param[in] dmi Pointer to DalDmlIntf Class. - * - */ - upll_rc_t SetConsolidatedStatus(ConfigKeyVal *vlink, - unc_keytype_operation_t op, - unc_keytype_configstatus_t cs_status, - DalDmlIntf *dmi); - - /** - * @brief Validate whether its valid Boundary Combination - * - * @param[in] node1_ktype Ketype of first Node - * @param[in] node2_ktype Ketype of Second Node - * - * @retval UPLL_RC_SUCCESS Valid combination - * @retval UPLL_RC_ERR_CFG_SEMANTIC Invalid combination - */ - upll_rc_t ValidateIfType(ConfigKeyVal **vnodeIf); - - public: - VlinkMoMgr(); - virtual ~VlinkMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - if (ck_boundary) - delete ck_boundary; - ck_boundary = NULL; - } - - /** - * @brief Gets the associated config information for the remote interface - * that constitute the vlink - * - * @param[in] ck_vif ConfigKeyVal pointer to the interface - * @param[out] ck_remif ConfigKeyVal pointer to the remote interface - * @param[in] dmi Database connection params - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Illegal operation/ invalid paramters - **/ - upll_rc_t GetRemoteIf(ConfigKeyVal *ck_vif, - ConfigKeyVal *&ck_remif, - DalDmlIntf *dmi); - /** - * @brief Gets the associated config and state information for interfaces - * that constitute the vlink - * - * @param[in] vlink ConfigKeyVal pointer to the vlink - * @param[out] vnif array of pointers to the vlink member interfaces - * if both interfaces wanted - - * @param[in] dmi Database connection params - * @param[in] pos 0 if both interfaces wanted else - * kVlinkVnode1/kVlinkVnode2 for that vnode if. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Illegal operation/ invalid paramters - **/ - upll_rc_t GetVnodeIfFromVlink(ConfigKeyVal *vlink, - ConfigKeyVal **vnif, - DalDmlIntf *dmi, - uint8_t pos = 0) ; - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, - uint64_t index); - - /** - * @brief Exposed to Physical to Verify whether particular Key - * is in Use in Logical - * - - * @param[in/out] operation Operation to check if a boundary is referenced - * in UPLL configuration - * @param[in] dt_type Data Type - * @param[in] key_type KeyType of the key to be verified - * @param[in] ckv ConfigKeyVal of the KeyType - * @param[out] in_use true if key is in use, else false - * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - * - */ - upll_rc_t IsKeyInUse(upll_keytype_datatype_t dt_type, - const ConfigKeyVal *ckv, bool *in_use, - DalDmlIntf *dmi); + /** + * @brief Set the Consolidated Configstatus of boundary vlink after + * retreiving the component if status from individual controllers + * @param[in] vlink ConfigKeyVal pointer + * @param[in] dmi Pointer to DalDmlIntf Class. + * + */ + upll_rc_t SetConsolidatedStatus(ConfigKeyVal *vlink, + unc_keytype_operation_t op, + unc_keytype_configstatus_t cs_status, + DalDmlIntf *dmi); + + /** + * @brief Validate whether its valid Boundary Combination + * + * @param[in] node1_ktype Ketype of first Node + * @param[in] node2_ktype Ketype of Second Node + * + * @retval UPLL_RC_SUCCESS Valid combination + * @retval UPLL_RC_ERR_CFG_SEMANTIC Invalid combination + */ + upll_rc_t ValidateIfType(ConfigKeyVal **vnodeIf); + + public: + VlinkMoMgr(); + virtual ~VlinkMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + if (ck_boundary) + delete ck_boundary; + ck_boundary = NULL; + } + + /** + * @brief Gets the associated config information for the remote interface + * that constitute the vlink + * + * @param[in] ck_vif ConfigKeyVal pointer to the interface + * @param[out] ck_remif ConfigKeyVal pointer to the remote interface + * @param[in] dmi Database connection params + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Illegal operation/ invalid paramters + **/ + upll_rc_t GetRemoteIf(ConfigKeyVal *ck_vif, + ConfigKeyVal *&ck_remif, + DalDmlIntf *dmi); + /** + * @brief Gets the associated config and state information for interfaces + * that constitute the vlink + * + * @param[in] vlink ConfigKeyVal pointer to the vlink + * @param[out] vnif array of pointers to the vlink member interfaces + * if both interfaces wanted - + * @param[in] dmi Database connection params + * @param[in] pos 0 if both interfaces wanted else + * kVlinkVnode1/kVlinkVnode2 for that vnode if. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Illegal operation/ invalid paramters + **/ + upll_rc_t GetVnodeIfFromVlink(ConfigKeyVal *vlink, + ConfigKeyVal **vnif, + DalDmlIntf *dmi, + uint8_t pos = 0); + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, + uint64_t index); + + /** + * @brief Exposed to Physical to Verify whether particular Key + * is in Use in Logical + * + + * @param[in/out] operation Operation to check if a boundary is referenced + * in UPLL configuration + * @param[in] dt_type Data Type + * @param[in] key_type KeyType of the key to be verified + * @param[in] ckv ConfigKeyVal of the KeyType + * @param[out] in_use true if key is in use, else false + * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success + * + */ + upll_rc_t IsKeyInUse(upll_keytype_datatype_t dt_type, + const ConfigKeyVal *ckv, bool *in_use, + DalDmlIntf *dmi); + + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, + void *val2, + bool audit_status, + unc_keytype_operation_t op); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, + void *val2, + bool audit); + + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + upll_rc_t ValidateRenameVlinkValue(val_rename_vlink_t *val); + upll_rc_t CheckVnodeInfo(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, - void *val2, - bool audit_status, - unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, - void *val2, - bool audit); - - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - upll_rc_t ValidateRenameVlinkValue(val_rename_vlink_t *val); - upll_rc_t CheckVnodeInfo(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - - upll_rc_t SetOperStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - state_notification notification, - bool skip = false); - - upll_rc_t GetNodeType(void *key, bool vnode, - unc_key_type_t &keytype, - ConfigKeyVal *&ck_val, DalDmlIntf *dmi); - /** - * @brief Returns success if member of Boundary vlink - * - * @param[in] ck_vbrif ConfigKeyVal of the vbrif - * @param[in] dt_type Configuration type - * @param[in/out] ck_vlink ConfigKeyVal of the vlink key formed - * @param[in] dmi DB Connection - * @param[out] upll_rc_t UPLL_RC_SUCCESS if member - * UPLL_RC_ERR_NO_SUCH_INSTANCE if not - * UPLL_RC_SUCCESS on success - * - */ - upll_rc_t CheckIfMemberOfVlink(ConfigKeyVal *ck_vbrif, + upll_rc_t SetOperStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + state_notification notification, + bool skip = false); + + upll_rc_t GetNodeType(void *key, bool vnode, + unc_key_type_t &keytype, + ConfigKeyVal *&ck_val, DalDmlIntf *dmi); + /** + * @brief Returns success if member of Boundary vlink + * + * @param[in] ck_vbrif ConfigKeyVal of the vbrif + * @param[in] dt_type Configuration type + * @param[in/out] ck_vlink ConfigKeyVal of the vlink key formed + * @param[in] dmi DB Connection + * @param[out] upll_rc_t UPLL_RC_SUCCESS if member + * UPLL_RC_ERR_NO_SUCH_INSTANCE if not + * UPLL_RC_SUCCESS on success + * + */ + upll_rc_t CheckIfMemberOfVlink(ConfigKeyVal *ck_vbrif, upll_keytype_datatype_t dt_type, ConfigKeyVal *&ck_vlink, DalDmlIntf *dmi, vn_if_type &if_type); - /** - * @brief Creates a vlink key from a vbrif key that is a boundary. - * - * @param[in] keyVal ConfigKeyVal of the vbrif - * @param[in] dt_type Configuration type - * @param[in/out] ck_vlink ConfigKeyVal of the vlink key formed - * @param[in] dmi DB Connection - * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - * - */ - upll_rc_t GetVlinkKeyVal(ConfigKeyVal *keyVal, + /** + * @brief Creates a vlink key from a vbrif key that is a boundary. + * + * @param[in] keyVal ConfigKeyVal of the vbrif + * @param[in] dt_type Configuration type + * @param[in/out] ck_vlink ConfigKeyVal of the vlink key formed + * @param[in] dmi DB Connection + * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success + * + */ + upll_rc_t GetVlinkKeyVal(ConfigKeyVal *keyVal, upll_keytype_datatype_t dt_type, ConfigKeyVal *&ck_vlink, DalDmlIntf *dmi); - /** - * @brief Determines if a given vlink is a boundary - * - * @param[in/out] ck_vlink ConfigKeyVal of the vlink key with - * populated user data - * @retval bool true if it is aboundary - * false if it is not - */ - inline upll_rc_t BoundaryVlink(ConfigKeyVal *ck_main, - controller_domain_t *ctrlr_dom, - bool &bound_vlink) { - unc_key_type_t ktype1 = GetVlinkVnodeIfKeyType(ck_main, 0); - unc_key_type_t ktype2 = GetVlinkVnodeIfKeyType(ck_main, 1); - if ((ktype1 == UNC_KT_VUNK_IF) || (ktype2 == UNC_KT_VUNK_IF)) { - bound_vlink = true; - return UPLL_RC_SUCCESS; - } - upll_rc_t result_code = GetControllerDomainId(ck_main, ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning %d", result_code); - return result_code; - } - if((memcmp(ctrlr_dom[0].ctrlr, ctrlr_dom[1].ctrlr,kMaxLenCtrlrId)) || - (memcmp(ctrlr_dom[0].domain, ctrlr_dom[1].domain,kMaxLenDomainId))) - bound_vlink = true; - else - bound_vlink = false; - return UPLL_RC_SUCCESS; + /** + * @brief Determines if a given vlink is a boundary + * + * @param[in/out] ck_vlink ConfigKeyVal of the vlink key with + * populated user data + * @retval bool true if it is aboundary + * false if it is not + */ + inline upll_rc_t BoundaryVlink(ConfigKeyVal *ck_main, + controller_domain_t *ctrlr_dom, + bool &bound_vlink) { + unc_key_type_t ktype1 = GetVlinkVnodeIfKeyType(ck_main, 0); + unc_key_type_t ktype2 = GetVlinkVnodeIfKeyType(ck_main, 1); + if ((ktype1 == UNC_KT_VUNK_IF) || (ktype2 == UNC_KT_VUNK_IF)) { + bound_vlink = true; + return UPLL_RC_SUCCESS; } - upll_rc_t DeleteMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); - upll_rc_t UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); - upll_rc_t TxUpdateDtState(unc_key_type_t ktype, - uint32_t session_id, - uint32_t config_id, - DalDmlIntf *dmi); - upll_rc_t BoundaryStatusHandler(uint8_t boundary_name[32], - bool oper_status, DalDmlIntf *dmi); - - /** - * @brief Gets the keytype of the vlink member interface specified by pos - * - * @param[in] ck_vlink ConfigKeyVal pointer to the vlink - * @param[in] pos 0/1 corresponding to the first/second member - * interface - * - * @retval unc_key_type_t keytype of the specified member interface - * KT_ROOT if unsupported iftype. - **/ - unc_key_type_t GetVlinkVnodeIfKeyType(ConfigKeyVal *ck_vlink, - int pos ) { - uint8_t vnif_type; - uint8_t vlink_flag = 0; - if (!ck_vlink || ck_vlink->get_key_type() != UNC_KT_VLINK) { - UPLL_LOG_DEBUG("Invalid param"); - return UNC_KT_ROOT; - } - GET_USER_DATA_FLAGS(ck_vlink,vlink_flag); - if (pos == 0) - vnif_type = GET_VLINK_NODE1_TYPE(vlink_flag); - else - vnif_type = GET_VLINK_NODE2_TYPE(vlink_flag); - UPLL_LOG_DEBUG("flag %d vnif_type %d pos %d",vlink_flag,vnif_type,pos); - unc_key_type_t if_ktype[] = {UNC_KT_ROOT,UNC_KT_VBR_IF, UNC_KT_VRT_IF, - UNC_KT_VUNK_IF, UNC_KT_VTEP_IF,UNC_KT_VTUNNEL_IF}; - if (vnif_type >= sizeof(if_ktype)/sizeof(if_ktype[0])) - return UNC_KT_ROOT; - return if_ktype[vnif_type]; + upll_rc_t result_code = GetControllerDomainId(ck_main, ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning %d", result_code); + return result_code; } - upll_rc_t RestoreVlinkOperStatus(ConfigKeyVal *ck_vnif, - DalDmlIntf *dmi, - state_notification notification, - bool skip); - upll_rc_t UpdateVlinkOperStatus(uint8_t *ctrlr_id, - DalDmlIntf *dmi, - state_notification notification, - bool skip); - upll_rc_t GetConnected(key_vnode_type_t *src_node, - set *Vnode_set_obj, - set*Vlink_set_obj, - set* boundary_vnode_if, + if ((memcmp(ctrlr_dom[0].ctrlr, ctrlr_dom[1].ctrlr, kMaxLenCtrlrId)) || + (memcmp(ctrlr_dom[0].domain, ctrlr_dom[1].domain, kMaxLenDomainId))) + bound_vlink = true; + else + bound_vlink = false; + return UPLL_RC_SUCCESS; + } + upll_rc_t DeleteMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); + upll_rc_t UpdateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); + upll_rc_t TxUpdateDtState(unc_key_type_t ktype, + uint32_t session_id, + uint32_t config_id, + DalDmlIntf *dmi); + upll_rc_t BoundaryStatusHandler(uint8_t boundary_name[32], + bool oper_status, DalDmlIntf *dmi); + + /** + * @brief Gets the keytype of the vlink member interface specified by pos + * + * @param[in] ck_vlink ConfigKeyVal pointer to the vlink + * @param[in] pos 0/1 corresponding to the first/second member + * interface + * + * @retval unc_key_type_t keytype of the specified member interface + * KT_ROOT if unsupported iftype. + **/ + unc_key_type_t GetVlinkVnodeIfKeyType(ConfigKeyVal *ck_vlink, + int pos ) { + uint8_t vnif_type; + uint8_t vlink_flag = 0; + if (!ck_vlink || ck_vlink->get_key_type() != UNC_KT_VLINK) { + UPLL_LOG_DEBUG("Invalid param"); + return UNC_KT_ROOT; + } + GET_USER_DATA_FLAGS(ck_vlink, vlink_flag); + if (pos == 0) + vnif_type = GET_VLINK_NODE1_TYPE(vlink_flag); + else + vnif_type = GET_VLINK_NODE2_TYPE(vlink_flag); + UPLL_LOG_DEBUG("flag %d vnif_type %d pos %d", vlink_flag, vnif_type, pos); + unc_key_type_t if_ktype[] = {UNC_KT_ROOT, UNC_KT_VBR_IF, UNC_KT_VRT_IF, + UNC_KT_VUNK_IF, UNC_KT_VTEP_IF, UNC_KT_VTUNNEL_IF + /* VlanmapOnBoundary: vlanmap added */ + , UNC_KT_VBR_VLANMAP + }; + if (vnif_type >= sizeof(if_ktype)/sizeof(if_ktype[0])) + return UNC_KT_ROOT; + return if_ktype[vnif_type]; + } + upll_rc_t RestoreVlinkOperStatus(ConfigKeyVal *ck_vnif, + DalDmlIntf *dmi, + state_notification notification, + bool skip); + upll_rc_t UpdateVlinkOperStatus(uint8_t *ctrlr_id, + DalDmlIntf *dmi, + state_notification notification, + bool skip); + upll_rc_t GetConnected(key_vnode_type_t *src_node, + set *Vnode_set_obj, + set*Vlink_set_obj, + set* boundary_vnode_if, DalDmlIntf *dmi); - upll_rc_t UpdateVlinkOperStatusUsingVlinkSet( - set*vlink_set, - DalDmlIntf *dmi, state_notification notification); + upll_rc_t UpdateVlinkOperStatusUsingVlinkSet( + set*vlink_set, + DalDmlIntf *dmi, state_notification notification); + + /** + * @brief VlanmapOnBoundary + * Updates vlink flag with kVbrVlanmap,if the requested boundary + * logical port id SW or SD + * + * @param[out] ikey ConfigKeyVal instance of received ikey from config_mgr. + * @param[out] tkey ConfigKeyVal instance of vlink read from DB. + **/ + upll_rc_t UpdateVlinkVlanmapFlag(ConfigKeyVal *&ikey, ConfigKeyVal *&tkey); + + upll_rc_t GetVlinkKeyValFromVlanMap(ConfigKeyVal *vlanmap_ckv, + ConfigKeyVal *&vlink_ckv, + DalDmlIntf *dmi, + upll_keytype_datatype_t datatype); + + upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, + controller_domain_t *ctrlr_dom); + /* VlanmapOnBoundary: Moved to public */ + ConfigKeyVal *ck_boundary; + upll_rc_t NotifyPOMForPortMapVlinkFlag(upll_keytype_datatype_t dt_type, + ConfigKeyVal *ckv_if, + DalDmlIntf *dmi, + unc_keytype_operation_t op); }; typedef struct val_db_rename_vlink { - uint8_t valid[2]; - uint8_t ctrlr_vtn_name[(kMaxLenVtnName + 1)]; - uint8_t ctrlr_vlink_name[(kMaxLenVlinkName + 1)]; + uint8_t valid[2]; + uint8_t ctrlr_vtn_name[(kMaxLenVtnName + 1)]; + uint8_t ctrlr_vlink_name[(kMaxLenVlinkName + 1)]; } val_db_rename_vlink_t; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vnode_child_momgr.cc b/coordinator/modules/upll/vnode_child_momgr.cc index 289fff7c..35295b5b 100644 --- a/coordinator/modules/upll/vnode_child_momgr.cc +++ b/coordinator/modules/upll/vnode_child_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -14,6 +14,9 @@ #include "vtn_momgr.hh" #include "vlink_momgr.hh" #include "config_mgr.hh" +#include "vlanmap_momgr.hh" + +#define NO_VLINK_FLAG 0x03 namespace unc { namespace upll { @@ -29,7 +32,7 @@ upll_rc_t VnodeChildMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ctrlr_dom.domain = NULL; ConfigKeyVal *pckv = NULL; uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. @@ -44,7 +47,7 @@ upll_rc_t VnodeChildMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, if ((ikey->get_key_type() == UNC_KT_VTEP_GRP) || (ikey->get_key_type() == UNC_KT_VTEP_GRP_MEMBER)) { result_code = GetControllerDomainId(ikey, UPLL_DT_AUDIT, - &ctrlr_dom, dmi); + &ctrlr_dom, dmi); ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); @@ -52,18 +55,18 @@ upll_rc_t VnodeChildMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, result_code = GetParentConfigKey(pckv, ikey); if (result_code != UPLL_RC_SUCCESS && pckv == NULL) { UPLL_LOG_DEBUG("GetParentConfigKey failed err_code is %d", - result_code); + result_code); return result_code; } result_code = GetControllerDomainId(pckv, UPLL_DT_AUDIT, - &ctrlr_dom, dmi); + &ctrlr_dom, dmi); ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; GET_USER_DATA_CTRLR_DOMAIN(pckv, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); DELETE_IF_NOT_NULL(pckv); } - + if ((result_code != UPLL_RC_SUCCESS) || (ctrlr_dom.ctrlr == NULL) || (ctrlr_dom.domain == NULL)) { UPLL_LOG_INFO("GetControllerDomainId failed err_code %d", result_code); @@ -71,13 +74,13 @@ upll_rc_t VnodeChildMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag | kOpInOutDomain - | kOpInOutCtrlr }; + | kOpInOutCtrlr }; // SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("UpdateConfigDB failed for creating vnode child err_code %d", - result_code); + result_code); } DELETE_IF_NOT_NULL(pckv); return result_code; @@ -85,45 +88,34 @@ upll_rc_t VnodeChildMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, upll_rc_t VnodeChildMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - return result_code; + if (!restore_flag) { + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; + } + } + + if (parent_ck_vnode) { + UPLL_LOG_DEBUG("parent_ck_vnode has value \n"); + delete parent_ck_vnode; + parent_ck_vnode = NULL; } - // Parent check - parent_ck_vnode = NULL; result_code = GetParentConfigKey(parent_ck_vnode, ikey); if (result_code != UPLL_RC_SUCCESS || parent_ck_vnode == NULL) { return result_code; } - unc_key_type_t key_type = parent_ck_vnode->get_key_type(); - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(key_type))); - result_code = mgr->UpdateConfigDB(parent_ck_vnode, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE - || result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_INFO("Parent doesn't exist in CANDIDATE DB. Error code : %d", - result_code); - DELETE_IF_NOT_NULL(parent_ck_vnode); - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - }else { - UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); - DELETE_IF_NOT_NULL(parent_ck_vnode); - return result_code; - } - } if ((ikey->get_key_type() == UNC_KT_VTEP_GRP) || (ikey->get_key_type() == UNC_KT_VTEP_GRP_MEMBER)) { result_code = GetControllerDomainId(ikey, req->datatype, - &cntrl_dom, dmi); + &cntrl_dom, dmi); cntrl_dom.ctrlr = NULL; if (ikey->get_key_type() != UNC_KT_VTEP_GRP) cntrl_dom.domain = NULL; @@ -132,6 +124,14 @@ upll_rc_t VnodeChildMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } else { result_code = GetControllerDomainId(parent_ck_vnode, req->datatype, &cntrl_dom, dmi); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(parent_ck_vnode); + return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } else if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error from GetControllerDomainId"); + DELETE_IF_NOT_NULL(parent_ck_vnode); + return result_code; + } cntrl_dom.ctrlr = NULL; cntrl_dom.domain = NULL; GET_USER_DATA_CTRLR_DOMAIN(parent_ck_vnode, cntrl_dom); @@ -145,136 +145,438 @@ upll_rc_t VnodeChildMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } ConfigKeyVal *dup_ikey = NULL; if (UPLL_DT_IMPORT != req->datatype) { - void *ifval = GetVal(ikey); - if ((ikey->get_key_type() == UNC_KT_VBR_IF) && ifval) { - result_code = GetChildConfigKey(dup_ikey, ikey); - if (!dup_ikey || result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(parent_ck_vnode); - UPLL_LOG_DEBUG("Returning error %d", result_code); - return result_code; - } - val_drv_vbr_if *valif = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); - memcpy(&(valif->vbr_if_val), ifval, sizeof(val_vbr_if)); - dup_ikey->AppendCfgVal(IpctSt::kIpcStPfcdrvValVbrIf, valif); - } else { - dup_ikey = ikey; + void *ifval = GetVal(ikey); + /* VlanmapOnBoundary: Added vlan-map check */ + if (((ikey->get_key_type() == UNC_KT_VBR_IF) || + (ikey->get_key_type() == UNC_KT_VBR_VLANMAP))&& ifval) { + result_code = GetChildConfigKey(dup_ikey, ikey); + if (!dup_ikey || result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(parent_ck_vnode); + UPLL_LOG_DEBUG("Returning error %d", result_code); + return result_code; + } + + /* VlanmapOnBoundary: Added vlan-map check */ + if (ikey->get_key_type() == UNC_KT_VBR_IF) { + val_drv_vbr_if *valif = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if))); + memcpy(&(valif->vbr_if_val), ifval, sizeof(val_vbr_if)); + dup_ikey->AppendCfgVal(IpctSt::kIpcStPfcdrvValVbrIf, valif); + } + + if (ikey->get_key_type() == UNC_KT_VBR_VLANMAP) { + /* Case1: "vlanmap vlan-id" create request is received, + * do existence check with value struct containing vlan-id + * Case2: "vlanmap log_port_id vlan-id" + * If log_port_id_valid is present, do exist check without + * vlan-id(no val struct) */ + if ((!(reinterpret_cast + (ikey->get_key())->logical_port_id_valid == PFC_TRUE)) || + restore_flag) { + pfcdrv_val_vlan_map_t *val_vlanmap = + reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vlan_map_t))); + if (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStValVlanMap) { + /* Copy the value strcuture to do existence check */ + memcpy(&(val_vlanmap->vm), ifval, sizeof(val_vlan_map_t)); + } else if (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValVlanMap) { + /* This case specific to restore of vlanmap */ + memcpy(val_vlanmap, ifval, sizeof(pfcdrv_val_vlan_map_t)); + } + dup_ikey->AppendCfgVal(IpctSt::kIpcStPfcdrvValVlanMap, val_vlanmap); + } } } else { dup_ikey = ikey; } - UPLL_LOG_DEBUG("%s \n",dup_ikey->ToStrAll().c_str()); + } else { + dup_ikey = ikey; + } + UPLL_LOG_DEBUG("%s \n", dup_ikey->ToStrAll().c_str()); + + /* VlanmapOnBoundary: Added vlan-map check */ + uint8_t flags = 0; + if (dup_ikey->get_key_type() == UNC_KT_VBR_VLANMAP) { + /* When the request is received from boundary, + * boundary bit is always set in user_data */ + GET_USER_DATA_FLAGS(dup_ikey, flags); + + /* Set the user-configured bit in vlan-map flag + * case1 : All cases of import + * case2 : All user configurations (with & without log_port_id) */ + if (!(flags & BOUNDARY_VLANMAP_FLAG)) { + // uint8_t vlanmap_flag = 0; + flags |= USER_VLANMAP_FLAG; + SET_USER_DATA_FLAGS(dup_ikey, flags); + } + } - // Existence check in DB - result_code = UpdateConfigDB(dup_ikey, req->datatype, UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (!restore_flag) { + if (ikey->get_key_type() == UNC_KT_VBR_NWMONITOR) { + ConfigKeyVal *temp_ikey = NULL; + result_code = DupConfigKeyVal(temp_ikey, dup_ikey); + if (result_code != UPLL_RC_SUCCESS || temp_ikey == NULL) { + UPLL_LOG_DEBUG("Returning %d", result_code); + DELETE_IF_NOT_NULL(parent_ck_vnode); + return result_code; + } + key_nwm *key_nwmon = + reinterpret_cast(temp_ikey->get_key()); + memset(key_nwmon->vbr_key.vbridge_name, 0, + sizeof(key_nwmon->vbr_key.vbridge_name)); + // Existence check in DB + result_code = UpdateConfigDB(temp_ikey, req->datatype, + UNC_OP_READ, dmi, MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS + || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(parent_ck_vnode); + DELETE_IF_NOT_NULL(temp_ikey); + return result_code; + } + DELETE_IF_NOT_NULL(temp_ikey); + /* VlanmapOnBoundary: Added vlan-map check */ + } else if ((dup_ikey->get_key_type() == UNC_KT_VBR_VLANMAP) && + (reinterpret_cast + (ikey->get_key())->logical_port_id_valid == PFC_TRUE)) { + /* If logical-port-id is specified in the user-request */ + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + result_code = ReadConfigDB(dup_ikey, req->datatype, UNC_OP_READ, dbop, + dmi, MAINTBL); + UPLL_LOG_TRACE("Read config DB result code = %u", result_code); + pfcdrv_val_vlan_map_t *val_vlanmap = + reinterpret_cast (GetVal(dup_ikey)); + /* It is always expected to get value structure from DB */ + if (!val_vlanmap) { + UPLL_LOG_ERROR("Val strcut from DB is NULL"); + delete dup_ikey; + DELETE_IF_NOT_NULL(parent_ck_vnode); + return UPLL_RC_ERR_GENERIC; + } + + val_vlan_map_t *ival = NULL; + if ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStPfcdrvValVlanMap) { + pfcdrv_val_vlan_map_t* drv_ival = + reinterpret_cast(GetVal(ikey)); + if (drv_ival->valid[PFCDRV_IDX_BDRY_REF_COUNT] == UNC_VF_VALID) { + val_vlanmap->bdry_ref_count = drv_ival->bdry_ref_count; + val_vlanmap->valid[PFCDRV_IDX_BDRY_REF_COUNT] = UNC_VF_VALID; + } + ival = &(reinterpret_cast(GetVal(ikey))->vm); + } else { + ival = reinterpret_cast(GetVal(ikey)); + } + + /* result_code is SUCCESS if vlan-map is already + * configured via boundary. */ + if (result_code == UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("%s \n", dup_ikey->ToStrAll().c_str()); + UPLL_LOG_TRACE("Vlanmap already configured") + + uint8_t vlanmap_flag = 0; + GET_USER_DATA_FLAGS(dup_ikey, vlanmap_flag) + + /* Vlan-id should be same as existing since its + * referred by boundary */ + if ((ival->vlan_id != val_vlanmap->vm.vlan_id) && + (vlanmap_flag & BOUNDARY_VLANMAP_FLAG)) { + UPLL_LOG_ERROR("Vlan-id cannot be modified since boundary " + "vlanmap with different vlan-id is configured"); + delete dup_ikey; + DELETE_IF_NOT_NULL(parent_ck_vnode); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + + /* vlanmap create request from user when its + * already created by user*/ + if ((ival->vlan_id == val_vlanmap->vm.vlan_id) && + (vlanmap_flag & USER_VLANMAP_FLAG)) { + UPLL_LOG_ERROR("Vlanmap already with the same key exists"); + delete dup_ikey; + DELETE_IF_NOT_NULL(parent_ck_vnode); + return UPLL_RC_ERR_INSTANCE_EXISTS; + } + + val_vlanmap->vm.vlan_id = ival->vlan_id; + val_vlanmap->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + + /* Update the flag if vlanmap is user configured*/ + vlanmap_flag |= flags; + SET_USER_DATA_FLAGS(dup_ikey, vlanmap_flag); + + DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutFlag }; + result_code = UpdateConfigDB(dup_ikey, req->datatype, UNC_OP_UPDATE, + dmi, &dbop1, MAINTBL); + DELETE_IF_NOT_NULL(parent_ck_vnode); + DELETE_IF_NOT_NULL(dup_ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + return result_code; + } + return UPLL_RC_SUCCESS; + } + val_vlanmap->vm.vlan_id = ival->vlan_id; + val_vlanmap->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + + UPLL_LOG_DEBUG("%s \n", dup_ikey->ToStrAll().c_str()); + } + } + result_code = ValidateCapability(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("ValidateCapability failed"); DELETE_IF_NOT_NULL(parent_ck_vnode); if (UPLL_DT_IMPORT != req->datatype) { - void *ifval = GetVal(ikey); - if ((ikey->get_key_type() == UNC_KT_VBR_IF) && ifval) { + void *ifval = GetVal(ikey); + if (((ikey->get_key_type() == UNC_KT_VBR_IF) || + (ikey->get_key_type() == UNC_KT_VBR_VLANMAP)) && ifval) { DELETE_IF_NOT_NULL(dup_ikey); - } + } } return result_code; } - ConfigKeyVal *inst_key = NULL; - result_code = GetChildConfigKey(inst_key, NULL); + SET_USER_DATA_CTRLR_DOMAIN(dup_ikey, cntrl_dom); + result_code = ValidateAttribute(dup_ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("ValidateAttribute semantic check returns error %d", + result_code); DELETE_IF_NOT_NULL(parent_ck_vnode); - DELETE_IF_NOT_NULL(dup_ikey); - UPLL_LOG_DEBUG("Returning error %d", result_code); + if (UPLL_DT_IMPORT != req->datatype) { + void *ifval = GetVal(ikey); + if (((ikey->get_key_type() == UNC_KT_VBR_IF) || + (ikey->get_key_type() == UNC_KT_VBR_VLANMAP)) && ifval) { + DELETE_IF_NOT_NULL(dup_ikey); + } + } return result_code; } - result_code = GetInstanceCount(inst_key, reinterpret_cast - (cntrl_dom.ctrlr), req->datatype, &cur_instance_count, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetInstanceCount error %d", result_code); - DELETE_IF_NOT_NULL(dup_ikey); - DELETE_IF_NOT_NULL(parent_ck_vnode); - DELETE_IF_NOT_NULL(inst_key); - return UPLL_RC_ERR_GENERIC; - } - DELETE_IF_NOT_NULL(inst_key); - result_code = ValidateCapability(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("ValidateCapability failed"); + if (restore_flag) { + /* Reset the vlink related bits in rename flag */ + unc_key_type_t kt_type = dup_ikey->get_key_type(); + if (IS_INTERFACE_KEY(kt_type)) { + uint8_t rename = 0; + GET_USER_DATA_FLAGS(dup_ikey, rename); + /* In case of interfaces (having portmaps) and is part of + * boundary vlink, then do not restore port_map info. + * It will be restored during vlink restore */ + if (kt_type != UNC_KT_VRT_IF && kt_type != UNC_KT_VUNK_IF) { + /* VRT_IF and VUNK_IF do not have portmaps */ + if_type vnif_type = kUnboundInterface; + upll_rc_t rcode = UPLL_RC_SUCCESS; + /* Get the interface type */ + rcode = GetInterfaceType(dup_ikey, UNC_VF_INVALID, vnif_type); + if (rcode != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetInterfaceType error %d\n", rcode); + DELETE_IF_NOT_NULL(parent_ck_vnode); + if (UPLL_DT_IMPORT != req->datatype) { + void *ifval = GetVal(ikey); + /* VlanmapOnBoundary: Added vlan-map check */ + if (((ikey->get_key_type() == UNC_KT_VBR_IF) || + (ikey->get_key_type() == UNC_KT_VBR_VLANMAP)) && ifval) { + DELETE_IF_NOT_NULL(dup_ikey); + } + } + return rcode; + } + /* If boundarymapped, then keep valid_portmap as INVALID */ + if (kBoundaryInterface == vnif_type) { + if (kt_type == UNC_KT_VBR_IF) { + /* In bdry vbr_if, set all portmap flags to INVALID */ + val_drv_vbr_if *val_vbrif = reinterpret_cast + (GetVal(dup_ikey)); + val_vbrif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_INVALID; + val_vbrif->valid[PFCDRV_IDX_VEXTIF_NAME_VBRIF] = UNC_VF_INVALID; + val_vbrif->valid[PFCDRV_IDX_VLINK_NAME_VBRIF] = UNC_VF_INVALID; + val_vbrif->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_INVALID; + } else if (kt_type == UNC_KT_VTEP_IF) { + /* Handle vtep if */ + val_vtep_if *val_vtepif = reinterpret_cast + (GetVal(dup_ikey)); + val_vtepif->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_INVALID; + } else if (kt_type == UNC_KT_VTUNNEL_IF) { + /* Handle vtunnel if */ + val_vtunnel_if *val_vtun_if = reinterpret_cast + (GetVal(dup_ikey)); + val_vtun_if->valid[UPLL_IDX_PORT_MAP_VTNL_IF] = UNC_VF_INVALID; + } else { + UPLL_LOG_DEBUG("Invalid vnode child keytype"); + DELETE_IF_NOT_NULL(parent_ck_vnode); + if (UPLL_DT_IMPORT != req->datatype) { + void *ifval = GetVal(ikey); + /* VlanmapOnBoundary: Added vlan-map check */ + if (((ikey->get_key_type() == UNC_KT_VBR_IF) || + (ikey->get_key_type() == UNC_KT_VBR_VLANMAP)) && ifval) { + DELETE_IF_NOT_NULL(dup_ikey); + } + } + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_DEBUG("Restoring interface which is part of boundary" + " \n %s \n", dup_ikey->ToStrAll().c_str()); + } // kBoundaryInterface + } + if (rename) + rename&=NO_VLINK_FLAG; + SET_USER_DATA_FLAGS(dup_ikey, rename); + } + result_code = UpdateConfigDB(dup_ikey, + req->datatype, + UNC_OP_CREATE, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Failed to create an entry in Candidate DB %d", + result_code); + } DELETE_IF_NOT_NULL(parent_ck_vnode); if (UPLL_DT_IMPORT != req->datatype) { - void *ifval = GetVal(ikey); - if ((ikey->get_key_type() == UNC_KT_VBR_IF) && ifval) { + void *ifval = GetVal(ikey); + /* VlanmapOnBoundary: Added vlan-map check */ + if (((ikey->get_key_type() == UNC_KT_VBR_IF) || + (ikey->get_key_type() == UNC_KT_VBR_VLANMAP)) && ifval) { DELETE_IF_NOT_NULL(dup_ikey); - } + } } return result_code; } - SET_USER_DATA_CTRLR_DOMAIN(dup_ikey, cntrl_dom); - result_code = RestoreVnode(dup_ikey, req, dmi); + + result_code = RestoreVnode(dup_ikey, req, dmi, restore_flag); DELETE_IF_NOT_NULL(parent_ck_vnode); - + if (UPLL_DT_IMPORT != req->datatype) { - void *ifval = GetVal(ikey); - if ((ikey->get_key_type() == UNC_KT_VBR_IF) && ifval) { + void *ifval = GetVal(ikey); + /* VlanmapOnBoundary: Added vlan-map check */ + if (((ikey->get_key_type() == UNC_KT_VBR_IF) || + (ikey->get_key_type() == UNC_KT_VBR_VLANMAP)) && ifval) { DELETE_IF_NOT_NULL(dup_ikey); - } + } } return result_code; } upll_rc_t VnodeChildMoMgr::RestoreVnode(ConfigKeyVal *ikey, IpcReqRespHeader *req, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *dup_ikey = NULL; upll_keytype_datatype_t dt_type = req->datatype; - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, dt_type, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + switch (ikey->get_key_type()) { + case UNC_KT_VRT_IF: { + val_vrt_if *vrt_if_val = reinterpret_cast + (GetVal(ikey)); + if (vrt_if_val != NULL) { + vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_INVALID; + } + } + break; + case UNC_KT_VBR_IF: { + val_drv_vbr_if *vbr_if_val = reinterpret_cast + (GetVal(ikey)); + if (vbr_if_val != NULL) { + vbr_if_val->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = + UNC_VF_INVALID; + } + } + break; + case UNC_KT_VBR_NWMONITOR: { + val_nwm_t *nwm_val = reinterpret_cast + (GetVal(ikey)); + if (nwm_val != NULL) { + nwm_val->valid[UPLL_IDX_ADMIN_STATUS_NWM] = UNC_VF_INVALID; + } + } + break; + default: + UPLL_LOG_DEBUG("Other vnode child keytypes"); + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + dt_type, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); return result_code; } - return result_code; - } - } - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE - || UPLL_DT_IMPORT == req->datatype) { - UPLL_LOG_TRACE("Given Create Record doesn't exists in Running"); - result_code = DupConfigKeyVal(dup_ikey, ikey); - if (result_code != UPLL_RC_SUCCESS || dup_ikey == NULL) { - UPLL_LOG_DEBUG("Returning %d", result_code); - return result_code; - } - result_code = ValidateAttribute(dup_ikey, dmi, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("ValidateAttribute semantic check returns error %d", - result_code); - return result_code; + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } } else { -// std::cout << "Problem in reading RUNNING DB"; - return result_code; + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } - unc_key_type_t ktype = parent_ck_vnode->get_key_type(); - if (UPLL_DT_CANDIDATE == req->datatype) { - if (ktype == UNC_KT_VBRIDGE || ktype == UNC_KT_VROUTER) { - result_code = SetRenameField(dup_ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Problem in setting rename field"); + + if (!restore_flag) { + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE + || UPLL_DT_IMPORT == req->datatype) { + UPLL_LOG_TRACE("Given Create Record doesn't exists in Running"); + result_code = DupConfigKeyVal(dup_ikey, ikey); + if (result_code != UPLL_RC_SUCCESS || dup_ikey == NULL) { + UPLL_LOG_DEBUG("Returning %d", result_code); return result_code; } + } else { + // std::cout << "Problem in reading RUNNING DB"; + return result_code; } - if (dup_ikey->get_key_type() == UNC_KT_VBR_IF) { - val_drv_vbr_if_t *if_val = reinterpret_cast - (GetVal(dup_ikey)); - if (if_val != NULL && - if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { - ConverttoDriverPortMap(dup_ikey); + uint8_t flag = 0; + unc_key_type_t ktype = parent_ck_vnode->get_key_type(); + if (UPLL_DT_CANDIDATE == req->datatype) { + if (ktype == UNC_KT_VBRIDGE || ktype == UNC_KT_VROUTER) { + GET_USER_DATA_FLAGS(dup_ikey, flag); + result_code = SetRenameField(dup_ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Problem in setting rename field"); + return result_code; + } + } + + if (dup_ikey->get_key_type() == UNC_KT_VBR_IF) { + val_drv_vbr_if_t *if_val = reinterpret_cast + (GetVal(dup_ikey)); + if (if_val != NULL && + if_val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] == UNC_VF_VALID) { + ConverttoDriverPortMap(dup_ikey); + } + } + + /* VlanmapOnBoundary: Added vlan-map check */ + if (dup_ikey->get_key_type() == UNC_KT_VBR_VLANMAP) { + uint8_t dup_flag = 0; + GET_USER_DATA_FLAGS(dup_ikey, dup_flag); + flag |= dup_flag; + SET_USER_DATA_FLAGS(dup_ikey, flag); + UPLL_LOG_TRACE("FLAG RESTORE = %u", flag); } } } @@ -288,22 +590,22 @@ upll_rc_t VnodeChildMoMgr::RestoreVnode(ConfigKeyVal *ikey, upll_rc_t VnodeChildMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; if (NULL == ikey) return UPLL_RC_ERR_GENERIC; switch (ikey->get_key_type()) { - case UNC_KT_VBR_IF: - case UNC_KT_VRT_IF: - case UNC_KT_VTEP_IF: - case UNC_KT_VTUNNEL_IF: - case UNC_KT_VUNK_IF: - break; - default: - return UPLL_RC_SUCCESS; + case UNC_KT_VBR_IF: + case UNC_KT_VRT_IF: + case UNC_KT_VTEP_IF: + case UNC_KT_VTUNNEL_IF: + case UNC_KT_VUNK_IF: + break; + default: + return UPLL_RC_SUCCESS; } result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS || okey == NULL) { @@ -312,15 +614,15 @@ upll_rc_t VnodeChildMoMgr::IsReferenced(ConfigKeyVal *ikey, } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); while (okey) { uint8_t if_flag = 0; GET_USER_DATA_FLAGS(okey, if_flag); if_flag &= VIF_TYPE; if (if_flag) { - UPLL_LOG_DEBUG("Part of a vlink %d", if_flag); - result_code = UPLL_RC_ERR_CFG_SEMANTIC; - break; + UPLL_LOG_DEBUG("Part of a vlink %d", if_flag); + result_code = UPLL_RC_ERR_CFG_SEMANTIC; + break; } okey = okey->get_next_cfg_key_val(); } @@ -350,11 +652,11 @@ upll_rc_t VnodeChildMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, ctrlr_dom.ctrlr = ctrlr_id; ctrlr_dom.domain = NULL; if (!OVERLAY_KT(ktype)) - result_code = GetRenamedKey(ikey, dt_type, dmi, - &ctrlr_dom, - UNC_RENAME_KEY); + result_code = GetRenamedKey(ikey, dt_type, dmi, + &ctrlr_dom, + UNC_RENAME_KEY); else - result_code = UPLL_RC_SUCCESS; + result_code = UPLL_RC_SUCCESS; return result_code; } @@ -369,7 +671,7 @@ upll_rc_t VnodeChildMoMgr::GetRenamedControllerKey( result_code = GetRenamedKey(ikey, dt_type, dmi, ctrlr_dom, CTRLR_RENAME_KEY); UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); } else { result_code = UPLL_RC_SUCCESS; } @@ -388,21 +690,22 @@ upll_rc_t VnodeChildMoMgr::GetRenamedKey(ConfigKeyVal *ikey, if (!ck_parent || (result_code != UPLL_RC_SUCCESS)) return result_code; unc_key_type_t ktype = ck_parent->get_key_type(); MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(ktype))); + (GetMoManager(ktype))); if (flag == UNC_RENAME_KEY) { result_code = mgr->GetRenamedUncKey(ck_parent, dt_type, dmi, - ctrlr_dom->ctrlr); + ctrlr_dom->ctrlr); if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey failed. Result : %d", result_code); DELETE_IF_NOT_NULL(ck_parent); return result_code; } } else { - result_code = mgr->GetRenamedControllerKey(ck_parent, dt_type, dmi, - ctrlr_dom); + result_code = mgr->GetRenamedControllerKey(ck_parent, dt_type, dmi, + ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result: %d", result_code); + UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result: %d", + result_code); DELETE_IF_NOT_NULL(ck_parent); return result_code; } @@ -410,12 +713,12 @@ upll_rc_t VnodeChildMoMgr::GetRenamedKey(ConfigKeyVal *ikey, if (result_code == UPLL_RC_SUCCESS) { result_code = GetChildConfigKey(ikey, ck_parent); if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL (ck_parent); - UPLL_LOG_DEBUG("GetChildConfigkey Failed"); - return result_code; + DELETE_IF_NOT_NULL(ck_parent); + UPLL_LOG_DEBUG("GetChildConfigkey Failed"); + return result_code; } SET_USER_DATA(ikey, ck_parent) - GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); + GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); } delete ck_parent; return result_code; @@ -427,25 +730,25 @@ upll_rc_t VnodeChildMoMgr::ReadMo(IpcReqRespHeader *header, ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; unc_key_type_t ktype = ikey->get_key_type(); switch (ktype) { - case UNC_KT_VBR_IF: - case UNC_KT_VRT_IF: - case UNC_KT_VUNK_IF: - case UNC_KT_VTEP_IF: - case UNC_KT_VTUNNEL_IF: - UPLL_LOG_DEBUG("read request for %d, option 1 %d option2 %d", ktype, + case UNC_KT_VBR_IF: + case UNC_KT_VRT_IF: + case UNC_KT_VUNK_IF: + case UNC_KT_VTEP_IF: + case UNC_KT_VTUNNEL_IF: + UPLL_LOG_DEBUG("read request for %d, option 1 %d option2 %d", ktype, header->option1, header->option2); - if (header->option2 == UNC_OPT2_NEIGHBOR) { - result_code = ValidateMessage(header, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", result_code); - return result_code; + if (header->option2 == UNC_OPT2_NEIGHBOR) { + result_code = ValidateMessage(header, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", result_code); + return result_code; + } + result_code = PopulateValVtnNeighbor(ikey, dmi); + break; } - result_code = PopulateValVtnNeighbor(ikey, dmi); - break; - } - /* fall through intended */ - default: - result_code = MoMgrImpl::ReadMo(header, ikey, dmi); + /* fall through intended */ + default: + result_code = MoMgrImpl::ReadMo(header, ikey, dmi); } return result_code; } @@ -456,11 +759,11 @@ upll_rc_t VnodeChildMoMgr::GetControllerDomainId( UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; if (!pckv) return UPLL_RC_ERR_GENERIC; unc_key_type_t pktype = pckv->get_key_type(); VnodeMoMgr *mgr = reinterpret_cast(const_cast - (GetMoManager(pktype))); + (GetMoManager(pktype))); result_code = mgr->ReadConfigDB(pckv, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -472,48 +775,51 @@ upll_rc_t VnodeChildMoMgr::GetControllerDomainId( upll_rc_t VnodeChildMoMgr::PopulateValVtnNeighbor(ConfigKeyVal *&in_ckv, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; // Read on the left side of the link bool got_left_side = false; ConfigKeyVal *vlink_ckv = NULL; VlinkMoMgr *vlink_momgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VLINK))); + (const_cast(GetMoManager(UNC_KT_VLINK))); if (!vlink_momgr) { UPLL_LOG_DEBUG("Invalid Mgr"); return UPLL_RC_ERR_GENERIC; } vn_if_type iftype; upll_rc_t result_code = vlink_momgr->CheckIfMemberOfVlink(in_ckv, - UPLL_DT_RUNNING, vlink_ckv, dmi, iftype); + UPLL_DT_RUNNING, + vlink_ckv, + dmi, + iftype); if (!vlink_ckv || result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_TRACE("Not found in vlink table"); } else if (result_code == UPLL_RC_SUCCESS) { key_vlink_t *vlink_key = reinterpret_cast - (vlink_ckv->get_key()); + (vlink_ckv->get_key()); if (!vlink_key) { UPLL_LOG_DEBUG("Invalid param"); if (vlink_ckv) delete vlink_ckv; return UPLL_RC_ERR_GENERIC; } if ((iftype == kVlinkBoundaryNode1) || (iftype == kVlinkInternalNode1)) - got_left_side = true; + got_left_side = true; val_vlink_t *vlink_val = reinterpret_cast - (GetVal(vlink_ckv)); + (GetVal(vlink_ckv)); val_vtn_neighbor_t *val_vtn_neighbor = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_neighbor_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtn_neighbor_t))); memset(val_vtn_neighbor, 0, sizeof(val_vtn_neighbor_t)); val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] = UNC_VF_VALID; val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_IF_NAME_VN] = UNC_VF_VALID; val_vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] = UNC_VF_VALID; uuu::upll_strncpy(val_vtn_neighbor->connected_vnode_name, ((got_left_side) ? vlink_val->vnode2_name : - vlink_val->vnode1_name), + vlink_val->vnode1_name), (kMaxLenVnodeName + 1)); uuu::upll_strncpy(val_vtn_neighbor->connected_if_name, ((got_left_side) ? vlink_val->vnode2_ifname : - vlink_val->vnode1_ifname), + vlink_val->vnode1_ifname), (kMaxLenInterfaceName + 1)); uuu::upll_strncpy(val_vtn_neighbor->connected_vlink_name, vlink_key->vlink_name, (kMaxLenVnodeName + 1)); @@ -534,6 +840,7 @@ upll_rc_t VnodeChildMoMgr::InitOperStatus(ConfigKeyVal *ikey, uint8_t valid_pm, val_port_map_t *pm) { UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; T2 *vnif_db_st = reinterpret_cast(GetStateVal(ikey)); if (!vnif_db_st) { UPLL_LOG_DEBUG("Invalid param"); @@ -543,67 +850,72 @@ upll_rc_t VnodeChildMoMgr::InitOperStatus(ConfigKeyVal *ikey, // vnif_db_st->down_count = 0; #if 0 if ((valid_admin == UNC_VF_VALID) || - (valid_admin == UNC_VF_VALID_NO_VALUE)) + (valid_admin == UNC_VF_VALID_NO_VALUE)) #endif if (vnif_st->oper_status != UPLL_OPER_STATUS_UNINIT) { if (admin_status == UPLL_ADMIN_DISABLE) { - vnif_st->oper_status = UPLL_OPER_STATUS_DOWN; + vnif_st->oper_status = UPLL_OPER_STATUS_DOWN; } else if (admin_status == UPLL_ADMIN_ENABLE) { if_type vnif_type = kUnboundInterface; - GetInterfaceType(ikey, valid_pm, vnif_type); - UPLL_LOG_DEBUG("ktype %d vnif_type %d valid_pm %d\n", - ikey->get_key_type(),vnif_type, valid_pm); + result_code = GetInterfaceType(ikey, valid_pm, vnif_type); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetInterfaceType error %d\n", result_code); + return result_code; + } + + UPLL_LOG_DEBUG("ktype %d vnif_type %d valid_pm %d\n", + ikey->get_key_type(), vnif_type, valid_pm); switch (vnif_type) { - case kBoundaryInterface: - case kMappedInterface: - if (valid_pm != UNC_VF_VALID) + case kBoundaryInterface: + case kMappedInterface: + if (valid_pm != UNC_VF_VALID) vnif_st->oper_status = UPLL_OPER_STATUS_DOWN; - else + else vnif_st->oper_status = UPLL_OPER_STATUS_UNINIT; - break; - case kLinkedInterface: - vnif_st->oper_status = UPLL_OPER_STATUS_UP; - break; - case kUnboundInterface: - vnif_st->oper_status = UPLL_OPER_STATUS_DOWN; - break; + break; + case kLinkedInterface: + vnif_st->oper_status = UPLL_OPER_STATUS_UP; + break; + case kUnboundInterface: + vnif_st->oper_status = UPLL_OPER_STATUS_DOWN; + break; } } else { vnif_st->oper_status = UPLL_OPER_STATUS_UNKNOWN; } - } + } vnif_st->valid[UPLL_IDX_OPER_STATUS_VRTS] = UNC_VF_VALID; return UPLL_RC_SUCCESS; } template upll_rc_t VnodeChildMoMgr::InitOperStatus( - ConfigKeyVal *ikey, - uint8_t valid_admin, - uint8_t admin_status, - uint8_t valid_pm, - val_port_map_t *pm); +val_db_vrt_if_st>( + ConfigKeyVal *ikey, + uint8_t valid_admin, + uint8_t admin_status, + uint8_t valid_pm, + val_port_map_t *pm); template upll_rc_t VnodeChildMoMgr::InitOperStatus( - ConfigKeyVal *ikey, - uint8_t valid_admin, - uint8_t admin_status, - uint8_t valid_pm, - val_port_map_t *pm); +val_db_vtep_if_st>( + ConfigKeyVal *ikey, + uint8_t valid_admin, + uint8_t admin_status, + uint8_t valid_pm, + val_port_map_t *pm); template upll_rc_t VnodeChildMoMgr::InitOperStatus( - ConfigKeyVal *ikey, - uint8_t valid_admin, - uint8_t admin_status, - uint8_t valid_pm, - val_port_map_t *pm); +val_db_vtunnel_if_st>( + ConfigKeyVal *ikey, + uint8_t valid_admin, + uint8_t admin_status, + uint8_t valid_pm, + val_port_map_t *pm); template upll_rc_t VnodeChildMoMgr::InitOperStatus( - ConfigKeyVal *ikey, - uint8_t valid_admin, - uint8_t admin_status, - uint8_t valid_pm, - val_port_map_t *pm); +val_db_vbr_if_st>( + ConfigKeyVal *ikey, + uint8_t valid_admin, + uint8_t admin_status, + uint8_t valid_pm, + val_port_map_t *pm); upll_rc_t VnodeChildMoMgr::GetInterfaceType(ConfigKeyVal *ck_vnif, uint8_t valid_pm, @@ -629,7 +941,7 @@ upll_rc_t VnodeChildMoMgr::GetInterfaceType(ConfigKeyVal *ck_vnif, return UPLL_RC_SUCCESS; } -upll_rc_t VnodeChildMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, +upll_rc_t VnodeChildMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -638,32 +950,34 @@ upll_rc_t VnodeChildMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } unc_key_type_t ktype = ikey->get_key_type(); - if ((ktype != UNC_KT_VBR_IF) && (ktype != UNC_KT_VRT_IF)) + if ((ktype != UNC_KT_VBR_IF) && (ktype != UNC_KT_VRT_IF)) return UPLL_RC_SUCCESS; DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; // value not bound during delete - read to get down count / oper status result_code = ReadConfigDB(ikey, UPLL_DT_STATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } - val_db_vbr_if_st *valst = reinterpret_cast(GetStateVal(ikey)); + val_db_vbr_if_st *valst = reinterpret_cast + (GetStateVal(ikey)); if (!valst) { UPLL_LOG_DEBUG("Returning error\n"); return UPLL_RC_ERR_GENERIC; } if (valst->vbr_if_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] == UNC_VF_VALID) { if (valst->vbr_if_val_st.oper_status != UPLL_OPER_STATUS_DOWN) - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; ConfigKeyVal *ck_vn = NULL; - result_code = GetParentConfigKey(ck_vn,ikey); + result_code = GetParentConfigKey(ck_vn, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } - VnodeMoMgr *mgr = reinterpret_cast(const_cast - (GetMoManager(ck_vn->get_key_type()))); + VnodeMoMgr *mgr = reinterpret_cast( + const_cast + (GetMoManager(ck_vn->get_key_type()))); if (!mgr) { UPLL_LOG_DEBUG("Returning error \n"); delete ck_vn; @@ -671,52 +985,55 @@ upll_rc_t VnodeChildMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, } #if 0 result_code = mgr->ReadConfigDB(ck_vn, UPLL_DT_STATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - } else + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + } else { result_code = UPLL_RC_SUCCESS; + } DELETE_IF_NOT_NULL(ck_vn); return result_code; } val_db_vbr_if_st *vn_valst = reinterpret_cast - GetStateVal(ck_vn); - if (valst->down_count > 0) { + GetStateVal(ck_vn); + if (valst->down_count > 0) { vn_valst->down_count--; } - result_code = mgr->GetCkvUninit(ck_vn,NULL,dmi); + result_code = mgr->GetCkvUninit(ck_vn, NULL, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); DELETE_IF_NOT_NULL(ck_vn); return result_code; } result_code = mgr->UpdateConfigDB(ck_vn, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, MAINTBL); + dmi, MAINTBL); #else - state_notification notification = (valst->down_count > 0)?kPortFaultReset:kAdminStatusEnabled; + state_notification notification = + (valst->down_count > 0)?kPortFaultReset:kAdminStatusEnabled; result_code = mgr->UpdateOperStatus(ck_vn, dmi, notification, false, true); #endif if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; } DELETE_IF_NOT_NULL(ck_vn); } - return result_code; + return result_code; } upll_rc_t VnodeChildMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - state_notification notification, - bool skip, bool upd_if, bool upd_remif, - bool save_to_db) { + DalDmlIntf *dmi, + state_notification notification, + bool skip, bool upd_if, + bool upd_remif, + bool save_to_db) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (!skip) { DbSubOp dbop = { kOpReadMultiple, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag }; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag }; if (notification == kCtrlrDisconnect || notification == kCtrlrReconnect) { dbop.matchop = kOpMatchCtrlr; dbop.inoutop = kOpInOutFlag; @@ -730,84 +1047,99 @@ upll_rc_t VnodeChildMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, } } ConfigKeyVal *tkey = ikey; - unc_key_type_t ktype = ikey->get_key_type(),pktype = UNC_KT_ROOT; + unc_key_type_t ktype = ikey->get_key_type(), pktype = UNC_KT_ROOT; while (tkey != NULL) { - /* upd_if is set to true ->if operstatus - * is updated as part of vlink processing. - */ + /* upd_if is set to true ->if operstatus + * is updated as part of vlink processing. + */ if (!upd_if) { - if_type vnif_type ; - result_code = GetInterfaceType(tkey,UNC_VF_INVALID,vnif_type); + if_type vnif_type; + result_code = GetInterfaceType(tkey, UNC_VF_INVALID, vnif_type); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } if ((vnif_type == kBoundaryInterface) || (vnif_type == kLinkedInterface)) { tkey = tkey->get_next_cfg_key_val(); continue; - } + } + } + if (notification == kPortFaultReset) { + uint8_t valid_pm, valid_admin, admin_status; + val_port_map_t *pm = NULL; + GetPortMap(ikey, valid_pm, pm, valid_admin, admin_status); + if (admin_status == UPLL_ADMIN_DISABLE) + notification = kPortFaultResetWithAdminDisabled; } alarm_status oper_status_change = ALARM_NOT_SET; switch (ktype) { - case UNC_KT_VBR_IF: - pktype = UNC_KT_VBRIDGE; - result_code = SetOperStatus - (tkey, notification, dmi, - oper_status_change); - if (tkey) { - val_drv_vbr_if *vbr_if = - reinterpret_cast(GetVal(tkey)); - if (vbr_if) - vbr_if->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = - UNC_VF_INVALID; - } - break; - case UNC_KT_VRT_IF: - pktype = UNC_KT_VROUTER; - result_code = SetOperStatus - (tkey, notification, dmi, - oper_status_change); - if (tkey) { - val_vrt_if *vrt_if = - reinterpret_cast(GetVal(tkey)); - if (vrt_if) - vrt_if->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_INVALID; - } - break; - case UNC_KT_VTEP_IF: - pktype = UNC_KT_VTEP; - result_code = SetOperStatus - (tkey, notification, dmi, - oper_status_change); - if (tkey) { - val_vtep_if *vtep_if = - reinterpret_cast(GetVal(tkey)); - if (vtep_if) - vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; - } - break; - case UNC_KT_VTUNNEL_IF: - pktype = UNC_KT_VTUNNEL; - result_code = SetOperStatus - (tkey, notification, dmi, - oper_status_change); - if (tkey) { - val_vtunnel_if *vtunnel_if = - reinterpret_cast(GetVal(tkey)); - if (vtunnel_if) - vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_INVALID; - } - break; - default: - UPLL_LOG_DEBUG("oper status attribute not supported"); - return UPLL_RC_SUCCESS; + case UNC_KT_VBR_IF: + pktype = UNC_KT_VBRIDGE; + result_code = SetOperStatus + (tkey, notification, dmi, + oper_status_change); + if (tkey) { + val_drv_vbr_if *vbr_if = + reinterpret_cast(GetVal(tkey)); + if (vbr_if) + vbr_if->vbr_if_val.valid[UPLL_IDX_ADMIN_STATUS_VBRI] = + UNC_VF_INVALID; + } + break; + case UNC_KT_VRT_IF: + pktype = UNC_KT_VROUTER; + result_code = SetOperStatus + (tkey, notification, dmi, + oper_status_change); + if (tkey) { + val_vrt_if *vrt_if = + reinterpret_cast(GetVal(tkey)); + if (vrt_if) + vrt_if->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_INVALID; + } + break; + case UNC_KT_VTEP_IF: + pktype = UNC_KT_VTEP; + result_code = SetOperStatus + (tkey, notification, dmi, + oper_status_change); + if (tkey) { + val_vtep_if *vtep_if = + reinterpret_cast(GetVal(tkey)); + if (vtep_if) + vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; + } + break; + case UNC_KT_VTUNNEL_IF: + pktype = UNC_KT_VTUNNEL; + result_code = SetOperStatus + (tkey, notification, dmi, + oper_status_change); + if (tkey) { + val_vtunnel_if *vtunnel_if = + reinterpret_cast(GetVal(tkey)); + if (vtunnel_if) + vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_INVALID; + } + break; + default: + UPLL_LOG_DEBUG("oper status attribute not supported"); + return UPLL_RC_SUCCESS; } if (oper_status_change != ALARM_NOT_SET) { - if (!EnqueOperStatusNotification(tkey, oper_status_change)) { - UPLL_LOG_DEBUG("Alarm Notification failed"); - return UPLL_RC_ERR_GENERIC; + if ((notification != kAdminStatusEnabled) && + (notification != kAdminStatusDisabled) && + (notification != kPortUnknown)) { + if (!EnqueOperStatusNotification(tkey, oper_status_change)) { + UPLL_LOG_DEBUG("Alarm Notification failed"); + return UPLL_RC_ERR_GENERIC; + } } + } else if (notification != kCtrlrReconnectIfUp && + notification != kCtrlrReconnectIfDown) { + tkey = tkey->get_next_cfg_key_val(); + continue; } if (notification != kCtrlrDisconnect && notification != kCtrlrReconnect) { @@ -818,16 +1150,20 @@ upll_rc_t VnodeChildMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } VnodeMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(ck_parent->get_key_type()))); + (const_cast(GetMoManager(ck_parent->get_key_type()))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); delete ck_parent; return UPLL_RC_ERR_GENERIC; } - result_code = mgr->UpdateOperStatus(ck_parent, dmi, notification, false, save_to_db); + result_code = mgr->UpdateOperStatus(ck_parent, + dmi, + notification, + false, + save_to_db); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateOperStatus failed for %d key_type", - ck_parent->get_key_type()); + ck_parent->get_key_type()); delete ck_parent; return result_code; } @@ -835,38 +1171,38 @@ upll_rc_t VnodeChildMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, delete ck_parent; } if (upd_if && upd_remif && - notification != kCtrlrDisconnect && - notification != kCtrlrReconnect && - notification != kCtrlrReconnectIfUp && - notification != kCtrlrReconnectIfDown && - notification != kBoundaryFault && - notification != kBoundaryFaultReset) { + notification != kCtrlrDisconnect && + notification != kCtrlrReconnect && + notification != kCtrlrReconnectIfUp && + notification != kCtrlrReconnectIfDown && + notification != kBoundaryFault && + notification != kBoundaryFaultReset) { uint8_t vlink_flag = 0; uint8_t remote_if = 0; ConfigKeyVal *ck_vlink = NULL; /* interface is a member of a vlink */ GET_USER_DATA_FLAGS(ikey, vlink_flag); switch (vlink_flag & VIF_TYPE) { - case kVlinkBoundaryNode1: - case kVlinkInternalNode1: - SET_USER_DATA_FLAGS(ikey, kVlinkVnode1); - remote_if = 1; - break; - case kVlinkBoundaryNode2: - case kVlinkInternalNode2: - SET_USER_DATA_FLAGS(ikey, kVlinkVnode2); - remote_if = 0; - break; - default: - if (skip) { - UPLL_LOG_DEBUG("Not member of vlink %s",(ikey->ToStr()).c_str()); - goto flush_db ; - } - tkey = tkey->get_next_cfg_key_val(); - continue; + case kVlinkBoundaryNode1: + case kVlinkInternalNode1: + SET_USER_DATA_FLAGS(ikey, kVlinkVnode1); + remote_if = 1; + break; + case kVlinkBoundaryNode2: + case kVlinkInternalNode2: + SET_USER_DATA_FLAGS(ikey, kVlinkVnode2); + remote_if = 0; + break; + default: + if (skip) { + UPLL_LOG_DEBUG("Not member of vlink %s", (ikey->ToStr()).c_str()); + goto flush_db; + } + tkey = tkey->get_next_cfg_key_val(); + continue; } VlinkMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VLINK))); + (const_cast(GetMoManager(UNC_KT_VLINK))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; @@ -884,7 +1220,7 @@ upll_rc_t VnodeChildMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, } /* set the status of the remote interface */ ConfigKeyVal *vnif = NULL; - result_code = mgr->GetVnodeIfFromVlink(ck_vlink,&vnif,dmi,remote_if); + result_code = mgr->GetVnodeIfFromVlink(ck_vlink, &vnif, dmi, remote_if); if (result_code != UPLL_RC_SUCCESS && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("get remote interface failed %d", result_code); @@ -894,17 +1230,17 @@ upll_rc_t VnodeChildMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; VnodeChildMoMgr *rem_mgr = reinterpret_cast - (const_cast(GetMoManager(vnif->get_key_type()))); + (const_cast(GetMoManager(vnif->get_key_type()))); if (!rem_mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; } result_code = rem_mgr->UpdateOperStatus(vnif, dmi, notification, true, - true,false); + true, false); if (vnif) delete vnif; if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error updating rem interface oper status %d", - result_code); + UPLL_LOG_DEBUG("Error updating rem interface oper status %d", + result_code); return result_code; } if (ck_vlink) delete ck_vlink; @@ -913,28 +1249,32 @@ upll_rc_t VnodeChildMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, tkey = tkey->get_next_cfg_key_val(); } if (pktype == UNC_KT_ROOT) - return UPLL_RC_SUCCESS; -flush_db: + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + flush_db: if (!save_to_db) { - map::iterator it; + map::iterator it; VnodeMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(pktype))); + (const_cast(GetMoManager(pktype))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_DEBUG("Flushing vnode to db %d",ktype); - for (it = mgr->vnode_oper_map.begin(); it != mgr->vnode_oper_map.end(); it++) { + UPLL_LOG_DEBUG("Flushing vnode to db %d", ktype); + for (it = mgr->vnode_oper_map.begin(); + it != mgr->vnode_oper_map.end(); it++) { DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; ConfigKeyVal *tckv = it->second; - UPLL_LOG_TRACE("%s %p",(it->first).c_str(),it->second); - UPLL_LOG_DEBUG("nextvnode %p",tckv); - result_code = mgr->UpdateConfigDB(tckv, UPLL_DT_STATE, UNC_OP_UPDATE, dmi, - &dbop, MAINTBL); + UPLL_LOG_TRACE("%s %p", (it->first).c_str(), it->second); + UPLL_LOG_DEBUG("nextvnode %p", tckv); + result_code = mgr->UpdateConfigDB(tckv, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in update oper status %d", result_code); } - if (tckv) delete tckv; + if (tckv) delete tckv; } mgr->vnode_oper_map.clear(); } @@ -943,33 +1283,39 @@ flush_db: template upll_rc_t VnodeChildMoMgr::SetOperStatus(ConfigKeyVal *ikey, - state_notification ¬ification, - DalDmlIntf *dmi, alarm_status &oper_change) { + state_notification ¬ification, + DalDmlIntf *dmi, + alarm_status &oper_change) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; /* update corresponding interface operstatus */ ConfigVal *tmp = (ikey->get_cfg_val()) ? - ikey->get_cfg_val()->get_next_cfg_val() : NULL; + ikey->get_cfg_val()->get_next_cfg_val() : NULL; T2 *vn_valst = reinterpret_cast((tmp != NULL) ? tmp->get_val() : NULL); if (vn_valst == NULL) return UPLL_RC_ERR_GENERIC; T1 *vn_val = reinterpret_cast(vn_valst); - - UPLL_LOG_DEBUG("notification %d down_count %d ",notification, vn_valst->down_count); - /* Update oper status based on notification */ - vn_val->valid[0] = UNC_VF_VALID; + UPLL_LOG_DEBUG("notification %d down_count %d ", notification, + vn_valst->down_count) + + /* Update oper status based on notification */ + vn_val->valid[0] = UNC_VF_VALID; switch (notification) { - case kCtrlrReconnect: { - uint8_t valid_pm,valid_admin,admin_status; + case kCtrlrReconnect: { + uint8_t valid_pm, valid_admin, admin_status; val_port_map_t *pm = NULL; - GetPortMap(ikey, valid_pm, pm, valid_admin, admin_status); + result_code = GetPortMap(ikey, valid_pm, pm, valid_admin, admin_status); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("GetPortMap failed : %d", result_code); + return result_code; + } if_type vnif_type; result_code = GetInterfaceType(ikey, valid_pm, vnif_type); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Returning error %d", result_code); return result_code; } - UPLL_LOG_DEBUG("vnif_type is %d",vnif_type); + UPLL_LOG_DEBUG("vnif_type is %d", vnif_type); if (ikey->get_key_type() == UNC_KT_VBR_IF) { val_vbr_if *vbr_if_val = reinterpret_cast(GetVal(ikey)); if (!vbr_if_val) { @@ -989,93 +1335,136 @@ upll_rc_t VnodeChildMoMgr::SetOperStatus(ConfigKeyVal *ikey, if (admin_status == UPLL_ADMIN_DISABLE) { vn_val->oper_status = UPLL_OPER_STATUS_DOWN; notification = kCtrlrReconnectIfDown; + result_code = UpdateRemoteVlinkIf(ikey, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in update oper status %d", result_code); + } } else { + if (vn_val->oper_status == UPLL_OPER_STATUS_DOWN) { + return UPLL_RC_SUCCESS; + } vn_val->oper_status = UPLL_OPER_STATUS_UP; notification = kCtrlrReconnectIfUp; - } + } VlinkMoMgr *vlink_mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(UNC_KT_VLINK)))); + reinterpret_cast(const_cast + (const_cast + (GetMoManager(UNC_KT_VLINK)))); result_code = vlink_mgr->RestoreVlinkOperStatus(ikey, dmi, - notification, false); + notification, false); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("restoring vlink operstatus failed"); return result_code; } } else if (vnif_type == kUnboundInterface) { - vn_val->oper_status = UPLL_OPER_STATUS_DOWN; - notification = kCtrlrReconnectIfDown; + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + notification = kCtrlrReconnectIfDown; } else { return UPLL_RC_SUCCESS; - } + } } break; - case kAdminStatusDisabled: - vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + case kAdminStatusDisabled: + if (vn_val->oper_status != UPLL_OPER_STATUS_DOWN) { + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + oper_change = ALARM_OPER_DOWN; + } break; - case kAdminStatusEnabled: + case kAdminStatusEnabled: if (vn_valst->down_count == 0) { if_type vnif_type; - uint8_t valid_pm,valid_admin,admin_status; + uint8_t valid_pm, valid_admin, admin_status; val_port_map_t *pm = NULL; GetPortMap(ikey, valid_pm, pm, valid_admin, admin_status); - upll_rc_t result_code = GetInterfaceType(ikey,valid_pm,vnif_type); + upll_rc_t result_code = GetInterfaceType(ikey, valid_pm, vnif_type); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("Returning error %d", result_code); return result_code; } if ((vnif_type == kLinkedInterface) || (vnif_type == kMappedInterface) || - (vnif_type == kBoundaryInterface)) + (vnif_type == kBoundaryInterface)) { vn_val->oper_status = UPLL_OPER_STATUS_UP; - else if (vnif_type == kUnboundInterface) + oper_change = ALARM_OPER_UP; + } else { + if (vnif_type == kUnboundInterface) vn_val->oper_status = UPLL_OPER_STATUS_DOWN; - } else + } + } else { vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + } break; - case kCtrlrDisconnect: - vn_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; + case kPortUnknown: + if (vn_val->oper_status != UPLL_OPER_STATUS_UNKNOWN) { + oper_change = ALARM_OPER_DOWN; + } + /* fall through intended */ + case kCtrlrDisconnect: vn_valst->down_count = 0; + vn_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; break; - case kPortFault: - case kPathFault: - case kBoundaryFault: - if (vn_valst->down_count < 1) + case kPortFault: + if (vn_valst->down_count == 1) + return UPLL_RC_SUCCESS; + case kPathFault: + case kBoundaryFault: + if (vn_valst->down_count < 1) { vn_valst->down_count = (vn_valst->down_count + 1); - if (vn_valst->down_count == 1) { - vn_val->oper_status = UPLL_OPER_STATUS_DOWN; - // generate alarm - oper_change = ALARM_OPER_DOWN; + if (vn_valst->down_count == 1) { + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + // generate alarm + oper_change = ALARM_OPER_DOWN; + } } break; - case kPortFaultReset: - case kPathFaultReset: - case kBoundaryFaultReset: + case kPortFaultReset: + case kPathFaultReset: + case kBoundaryFaultReset: if (vn_valst->down_count > 0) { --vn_valst->down_count; } if (vn_valst->down_count == 0) { - uint8_t valid_pm,valid_admin,admin_status; - val_port_map_t *pm = NULL; - GetPortMap(ikey, valid_pm, pm, valid_admin, admin_status); +#if 0 + uint8_t valid_pm, valid_admin, admin_status; + val_port_map_t *pm = NULL; + GetPortMap(ikey, valid_pm, pm, valid_admin, admin_status); + if (notification != kBoundaryFaultResetWithAdminDisabled) { if (admin_status == UPLL_ADMIN_ENABLE) { vn_val->oper_status = UPLL_OPER_STATUS_UP; - // reset alarm - oper_change = ALARM_OPER_UP; - } else - vn_val->oper_status = UPLL_OPER_STATUS_UP; - } else + } else { + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + } + } else { vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + } +#else + vn_val->oper_status = UPLL_OPER_STATUS_UP; +#endif + // reset alarm + oper_change = ALARM_OPER_UP; + } else { + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + } + break; + case kPortFaultResetWithAdminDisabled: + case kBoundaryFaultResetWithAdminDisabled: + if (vn_valst->down_count > 0) { + --vn_valst->down_count; + } + /* oper status stays down though down_count == 0 + as admin is down */ + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + oper_change = ALARM_OPER_UP; + break; + default: + UPLL_LOG_DEBUG("unsupported notification for operstatus update"); + return UPLL_RC_ERR_GENERIC; break; - default: - UPLL_LOG_DEBUG("unsupported notification for operstatus update"); - return UPLL_RC_ERR_GENERIC; - break; } DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; result_code = UpdateConfigDB(ikey, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); + dmi, &dbop, MAINTBL); UPLL_LOG_TRACE("VnodeChild SetOperstatus for VTN after Update is \n %s", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); return result_code; } @@ -1087,32 +1476,6 @@ upll_rc_t VnodeChildMoMgr::TxUpdateDtState(unc_key_type_t ktype, UPLL_FUNC_TRACE; ConfigKeyVal *ck_vn = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; -#if 0 - switch (ktype) { - case UNC_KT_VRT_IF: - result_code = GetUninitOperState - (ck_vn, dmi); - break; - case UNC_KT_VUNK_IF: - UPLL_LOG_DEBUG("Returning success"); - return UPLL_RC_SUCCESS; - case UNC_KT_VBR_IF: - result_code = GetUninitOperState - (ck_vn, dmi); - break; - case UNC_KT_VTEP_IF: - result_code = GetUninitOperState - (ck_vn, dmi); - break; - case UNC_KT_VTUNNEL_IF: - result_code = GetUninitOperState(ck_vn, dmi); - break; - default: - UPLL_LOG_DEBUG("Oper status not supported"); - return UPLL_RC_ERR_GENERIC; - } -#endif result_code = GetUninitOperState(ck_vn, dmi); if (!ck_vn || result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateDtState failed %d", result_code); @@ -1127,133 +1490,158 @@ upll_rc_t VnodeChildMoMgr::TxUpdateDtState(unc_key_type_t ktype, tkey = ck_vn; ck_vn = ck_vn->get_next_cfg_key_val(); tkey->set_next_cfg_key_val(NULL); - state_notification notification = kCtrlrReconnect; //noop - uint8_t valid_pm,valid_admin,admin_status; + state_notification notification = kCtrlrReconnect; // noop + uint8_t valid_pm, valid_admin, admin_status; val_port_map_t *pm = NULL; - result_code = GetPortMap(tkey, valid_pm, pm,valid_admin,admin_status); + result_code = GetPortMap(tkey, valid_pm, pm, valid_admin, admin_status); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + delete tkey; + DELETE_IF_NOT_NULL(ck_vn); return result_code; } - UPLL_LOG_DEBUG("valid_pm %d valid_admin %d admin_status %d", - valid_pm, valid_admin,admin_status); + UPLL_LOG_DEBUG("valid_pm %d valid_admin %d admin_status %d", + valid_pm, valid_admin, admin_status); if (valid_admin == UNC_VF_VALID && - admin_status == UPLL_ADMIN_DISABLE) - notification = kAdminStatusDisabled; - else if (valid_pm == UNC_VF_VALID) { - val_oper_status port_oper_status; - GET_USER_DATA_CTRLR_DOMAIN(tkey, ctrlr_dom); - result_code = GetPortStatusFromPhysical(pm, ctrlr_dom, port_oper_status, + admin_status == UPLL_ADMIN_DISABLE) { + notification = kAdminStatusDisabled; + } else if (valid_pm == UNC_VF_VALID) { + val_oper_status port_oper_status; + GET_USER_DATA_CTRLR_DOMAIN(tkey, ctrlr_dom); + result_code = GetPortStatusFromPhysical(pm, ctrlr_dom, port_oper_status, session_id, config_id); - /* During import Physical don't have the Port status - * in the running db so its return no such instance - * so here comment this check */ - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error retrieving port status from physical %d %d", - result_code, port_oper_status); + /* During import Physical don't have the Port status + * in the running db so its return no such instance + * so here comment this check */ + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error retrieving port status from physical %d %d", + result_code, port_oper_status); // return result_code; - } - val_db_vbr_if_st *vbrif_valst = reinterpret_cast - (GetStateVal(tkey)); - switch (port_oper_status) { + } + val_db_vbr_if_st *vbrif_valst = reinterpret_cast + (GetStateVal(tkey)); + switch (port_oper_status) { case UPLL_OPER_STATUS_DOWN: if (vbrif_valst->down_count == 0) notification = kPortFault; else - notification = kAdminStatusEnabled; + notification = kAdminStatusDisabled; break; case UPLL_OPER_STATUS_UNKNOWN: - notification = kCtrlrDisconnect; + notification = kPortUnknown; break; case UPLL_OPER_STATUS_UP: - { - if (vbrif_valst->down_count > 0) - notification = kPortFaultReset; - else - notification = kAdminStatusEnabled; - break; - } + { + if (vbrif_valst->down_count > 0) + notification = kPortFaultReset; + else + notification = kAdminStatusEnabled; + break; + } default: if (vbrif_valst->down_count == 0) notification = kPortFault; else notification = kAdminStatusEnabled; break; - } - } - if (notification == kAdminStatusEnabled || admin_status == UPLL_ADMIN_ENABLE) { + } + } + if ((notification == kAdminStatusEnabled) || + (notification != kPortUnknown && + admin_status == UPLL_ADMIN_ENABLE)) { if_type vnif_type; - result_code = GetInterfaceType(tkey,valid_pm,vnif_type); + result_code = GetInterfaceType(tkey, valid_pm, vnif_type); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("Returning error %d", result_code); + delete tkey; + DELETE_IF_NOT_NULL(ck_vn); return result_code; } - if (vnif_type == kBoundaryInterface) { - ConfigKeyVal *ck_remif = NULL; - VlinkMoMgr *vlink_mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VLINK))); - if (!vlink_mgr) { - UPLL_LOG_ERROR("Invalid mgr\n"); - return UPLL_RC_ERR_GENERIC; - } - result_code = vlink_mgr->GetRemoteIf(tkey,ck_remif, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_ERROR("Returning error %d\n",result_code); - DELETE_IF_NOT_NULL(ck_remif); - return result_code; - } - result_code = GetPortMap(ck_remif, valid_pm, pm, - valid_admin,admin_status); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - DELETE_IF_NOT_NULL(ck_remif); - return result_code; - } - if (valid_admin == UNC_VF_VALID && - admin_status == UPLL_ADMIN_DISABLE) + switch (vnif_type) { + case kBoundaryInterface: + case kLinkedInterface: + { + ConfigKeyVal *ck_remif = NULL; + VlinkMoMgr *vlink_mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VLINK))); + if (!vlink_mgr) { + UPLL_LOG_ERROR("Invalid mgr\n"); + delete tkey; + DELETE_IF_NOT_NULL(ck_vn); + return UPLL_RC_ERR_GENERIC; + } + result_code = vlink_mgr->GetRemoteIf(tkey, ck_remif, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Returning error %d\n", result_code); + DELETE_IF_NOT_NULL(ck_remif); + delete tkey; + DELETE_IF_NOT_NULL(ck_vn); + return result_code; + } + VnodeChildMoMgr *mgr = reinterpret_cast + (const_cast + (GetMoManager(ck_remif->get_key_type()))); + result_code = mgr->GetPortMap(ck_remif, valid_pm, pm, + valid_admin, admin_status); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + DELETE_IF_NOT_NULL(ck_remif); + delete tkey; + DELETE_IF_NOT_NULL(ck_vn); + return result_code; + } + if (valid_admin == UNC_VF_VALID && + admin_status == UPLL_ADMIN_DISABLE) + notification = kAdminStatusDisabled; + else + notification = kAdminStatusEnabled; + DELETE_IF_NOT_NULL(ck_remif); + break; + } + case kMappedInterface: + break; + case kUnboundInterface: + default: notification = kAdminStatusDisabled; - else - notification = kAdminStatusEnabled; - DELETE_IF_NOT_NULL(ck_remif); - } else if (vnif_type == kLinkedInterface) { - notification = kAdminStatusEnabled; - } else if (vnif_type == kUnboundInterface) { - notification = kAdminStatusDisabled; - } + break; + } } // vlinked interfaces should be handled as part of vlink dt state update result_code = UpdateOperStatus(tkey, dmi, notification, true, true, true); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error updating oper status %d", result_code); + delete tkey; + DELETE_IF_NOT_NULL(ck_vn); return result_code; } #if 0 - DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; - result_code = UpdateConfigDB(tkey, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop1, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB Executed %d", result_code); - break; - } + DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; + result_code = UpdateConfigDB(tkey, UPLL_DT_STATE, UNC_OP_UPDATE, + dmi, &dbop1, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB Executed %d", result_code); + break; + } #endif - delete tkey; + delete tkey; } return result_code; } -upll_rc_t VnodeChildMoMgr::GetPortStatusFromPhysical(val_port_map_t *pm, - controller_domain_t ctr_domain, - val_oper_status &logical_port_operStatus, - uint32_t session_id, - uint32_t config_id) { +upll_rc_t VnodeChildMoMgr::GetPortStatusFromPhysical( + val_port_map_t *pm, + controller_domain_t ctr_domain, + val_oper_status &logical_port_operStatus, + uint32_t session_id, + uint32_t config_id) { UPLL_FUNC_TRACE; IpcResponse ipc_resp; ConfigKeyVal *log_Port_CK = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; key_logical_port *phy_logPort_Key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_logical_port))); + (ConfigKeyVal::Malloc(sizeof(key_logical_port))); uuu::upll_strncpy(phy_logPort_Key->domain_key.ctr_key.controller_name, reinterpret_cast(ctr_domain.ctrlr), (kMaxLenCtrlrId+1)); @@ -1267,16 +1655,17 @@ upll_rc_t VnodeChildMoMgr::GetPortStatusFromPhysical(val_port_map_t *pm, IpctSt::kIpcStKeyLogicalPort, phy_logPort_Key, NULL); result_code = SendIpcReq(session_id, config_id, UNC_OP_READ, - UPLL_DT_STATE, log_Port_CK, NULL, &ipc_resp); + UPLL_DT_STATE, log_Port_CK, NULL, &ipc_resp); if ((result_code != UPLL_RC_SUCCESS) || (!ipc_resp.ckv_data)) { delete log_Port_CK; log_Port_CK = NULL; logical_port_operStatus = UPLL_OPER_STATUS_DOWN; if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + logical_port_operStatus = UPLL_OPER_STATUS_UNKNOWN; UPLL_LOG_DEBUG("Invalid Logical Port Id"); -// return UPLL_RC_ERR_CFG_SEMANTIC; - return UPLL_RC_SUCCESS; + // return UPLL_RC_ERR_CFG_SEMANTIC; + return UPLL_RC_SUCCESS; } UPLL_LOG_DEBUG("Error in retrieving LogicalPortId data from Physical"); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); @@ -1285,7 +1674,7 @@ upll_rc_t VnodeChildMoMgr::GetPortStatusFromPhysical(val_port_map_t *pm, log_Port_CK->ResetWith(ipc_resp.ckv_data); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); val_logical_port_st *phy_logPort_St = static_cast - (GetVal(log_Port_CK)); + (GetVal(log_Port_CK)); if (phy_logPort_St) switch (phy_logPort_St->oper_status) { case UPPL_CONTROLLER_OPER_DOWN: @@ -1300,14 +1689,14 @@ upll_rc_t VnodeChildMoMgr::GetPortStatusFromPhysical(val_port_map_t *pm, break; default: break; - } + } if (log_Port_CK) delete log_Port_CK; return result_code; } bool VnodeChildMoMgr::EnqueOperStatusNotification(ConfigKeyVal *ikey, - bool oper_status_change) { + bool oper_status_change) { UPLL_FUNC_TRACE; if (!ikey || !ikey->get_key()) { UPLL_LOG_DEBUG("Inputs are Invalid"); @@ -1322,34 +1711,34 @@ bool VnodeChildMoMgr::EnqueOperStatusNotification(ConfigKeyVal *ikey, switch (ktype) { case UNC_KT_VBR_IF: vtn_name = reinterpret_cast - (ikey->get_key())->vbr_key.vtn_key.vtn_name; + (ikey->get_key())->vbr_key.vtn_key.vtn_name; vnode_name = reinterpret_cast - (ikey->get_key())->vbr_key.vbridge_name; + (ikey->get_key())->vbr_key.vbridge_name; vif_name = (reinterpret_cast(ikey->get_key()))->if_name; - break; + break; case UNC_KT_VRT_IF: vtn_name = reinterpret_cast - (ikey->get_key())->vrt_key.vtn_key.vtn_name; + (ikey->get_key())->vrt_key.vtn_key.vtn_name; vnode_name = reinterpret_cast - (ikey->get_key())->vrt_key.vrouter_name; + (ikey->get_key())->vrt_key.vrouter_name; vif_name = (reinterpret_cast(ikey->get_key()))->if_name; - break; + break; case UNC_KT_VTUNNEL_IF: vtn_name = reinterpret_cast - (ikey->get_key())->vtunnel_key.vtn_key.vtn_name; + (ikey->get_key())->vtunnel_key.vtn_key.vtn_name; vnode_name = reinterpret_cast - (ikey->get_key())->vtunnel_key.vtunnel_name; + (ikey->get_key())->vtunnel_key.vtunnel_name; vif_name = reinterpret_cast(ikey->get_key())->if_name; - break; + break; case UNC_KT_VTEP_IF: vtn_name = reinterpret_cast - (ikey->get_key())->vtep_key.vtn_key.vtn_name; + (ikey->get_key())->vtep_key.vtn_key.vtn_name; vnode_name = reinterpret_cast - (ikey->get_key())->vtep_key.vtep_name; + (ikey->get_key())->vtep_key.vtep_name; vif_name = (reinterpret_cast(ikey->get_key()))->if_name; - break; + break; default: - UPLL_LOG_DEBUG("Invalid KeyType"); + UPLL_LOG_DEBUG("Invalid KeyType"); } return cfg_instance->SendOperStatusAlarm(reinterpret_cast(vtn_name), reinterpret_cast(vnode_name), @@ -1358,9 +1747,9 @@ bool VnodeChildMoMgr::EnqueOperStatusNotification(ConfigKeyVal *ikey, } upll_rc_t VnodeChildMoMgr::SetLinkedIfOperStatusforPathFault( - const key_vnode_type_t &vnode_key, - state_notification notification, - DalDmlIntf *dmi) { + const key_vnode_type_t &vnode_key, + state_notification notification, + DalDmlIntf *dmi) { ConfigKeyVal *ck_vnode_if = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; result_code = GetMappedInterfaces(vnode_key, dmi, ck_vnode_if); @@ -1371,27 +1760,38 @@ upll_rc_t VnodeChildMoMgr::SetLinkedIfOperStatusforPathFault( } ConfigKeyVal *tmp_vnode_if = ck_vnode_if; while (tmp_vnode_if != NULL) { - result_code = UpdateOperStatus(tmp_vnode_if, dmi, notification, true, false, false); + result_code = UpdateOperStatus(tmp_vnode_if, + dmi, + notification, + true, + false, + false); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Operstatus updation failed"); return result_code; } tmp_vnode_if = tmp_vnode_if->get_next_cfg_key_val(); } - DELETE_IF_NOT_NULL(ck_vnode_if); + DELETE_IF_NOT_NULL(ck_vnode_if); return result_code; } /*This function gives the interfaces mapped to a particular vbridge */ -upll_rc_t VnodeChildMoMgr::GetMappedInterfaces(const key_vnode_type_t &vnode_key_type, - DalDmlIntf *dmi, - ConfigKeyVal *&iokey) { +upll_rc_t VnodeChildMoMgr::GetMappedInterfaces( + const key_vnode_type_t &vnode_key_type, + DalDmlIntf *dmi, + ConfigKeyVal *&iokey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - GetChildConfigKey(iokey, NULL); + result_code = GetChildConfigKey(iokey, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigkey Failed"); + return result_code; + } + key_vnode *vnode_key = reinterpret_cast(iokey->get_key()); memcpy(vnode_key, &(vnode_key_type.vnode_key), sizeof(key_vnode)); - + /* Get all the vbridges under the VTN */ DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(iokey, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, @@ -1399,32 +1799,135 @@ upll_rc_t VnodeChildMoMgr::GetMappedInterfaces(const key_vnode_type_t &vnode_key return result_code; } -upll_rc_t VnodeChildMoMgr::UpdateVnodeIf(ConfigKeyVal *ck_if, - DalDmlIntf *dmi, - state_notification notification) { +upll_rc_t VnodeChildMoMgr::UpdateVnodeIfOperStatus( + ConfigKeyVal *ck_vnode, + DalDmlIntf *dmi, + state_notification notification) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ck_if = NULL; + result_code = GetChildConfigKey(ck_if, ck_vnode); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + return UPLL_RC_ERR_GENERIC; + } DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutFlag}; + kOpInOutFlag}; result_code = ReadConfigDB(ck_if, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", - result_code); + result_code); + DELETE_IF_NOT_NULL(ck_if); return result_code; } ConfigKeyVal *tmp = ck_if; while (tmp != NULL) { - result_code = UpdateOperStatus(tmp, dmi, notification, true, true, + ConfigKeyVal *tmp1 = tmp->get_next_cfg_key_val(); + tmp->set_next_cfg_key_val(NULL); + result_code = UpdateOperStatus(tmp, dmi, notification, true, true, true, true); + DELETE_IF_NOT_NULL(tmp); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error updating oper status %d", result_code); - return result_code; + DELETE_IF_NOT_NULL(tmp1); + UPLL_LOG_DEBUG("Error updating oper status %d", result_code); + return result_code; } - tmp = tmp->get_next_cfg_key_val(); + tmp = tmp1; } return result_code; } +upll_rc_t VnodeChildMoMgr::UpdateRemoteVlinkIf(ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + ConfigKeyVal *ck_remif = NULL; + VlinkMoMgr *vlink_mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VLINK))); + if (!vlink_mgr) { + UPLL_LOG_ERROR("Invalid mgr\n"); + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t result_code = UPLL_RC_SUCCESS; + result_code = vlink_mgr->GetRemoteIf(ikey, ck_remif, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Returning error %d\n", result_code); + DELETE_IF_NOT_NULL(ck_remif); + return result_code; + } + + ConfigVal *tmp = (ck_remif->get_cfg_val()) ? + ck_remif->get_cfg_val()->get_next_cfg_val() : NULL; + val_db_vbr_if_st *vn_valst = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vn_valst == NULL) return UPLL_RC_ERR_GENERIC; + val_vbr_if_st *vn_val = reinterpret_cast(vn_valst); + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; + + unc_key_type_t ktype = ck_remif->get_key_type(); + VnodeChildMoMgr *vnode_child_mgr = reinterpret_cast + (const_cast(GetMoManager(ktype))); + if (!vnode_child_mgr) { + DELETE_IF_NOT_NULL(ck_remif); + UPLL_LOG_ERROR("Invalid mgr\n"); + return UPLL_RC_ERR_GENERIC; + } + result_code = vnode_child_mgr->UpdateConfigDB(ck_remif, UPLL_DT_STATE, + UNC_OP_UPDATE, dmi, + &dbop, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_remif); + UPLL_LOG_DEBUG("Errorin Updating OPerStatus"); + return result_code; + } + ConfigKeyVal *parent_node = NULL; + result_code = vnode_child_mgr->GetParentConfigKey(parent_node, ck_remif); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_remif); + UPLL_LOG_DEBUG("Error in retrieving Parent Node Key"); + return result_code; + } + unc_key_type_t parent_key_type = parent_node->get_key_type(); + VnodeMoMgr *vnode_mgr = reinterpret_cast + (const_cast(GetMoManager(parent_key_type))); + if (!vnode_mgr) { + DELETE_IF_NOT_NULL(ck_remif); + DELETE_IF_NOT_NULL(parent_node); + UPLL_LOG_ERROR("Invalid mgr\n"); + return UPLL_RC_ERR_GENERIC; + } + ConfigVal *cfg_val = NULL; + result_code = vnode_mgr->AllocVal(cfg_val, UPLL_DT_STATE, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_remif); + DELETE_IF_NOT_NULL(parent_node); + UPLL_LOG_DEBUG("Error in allocating Parent Node cfg val"); + return result_code; + } + parent_node->SetCfgVal(cfg_val); + ConfigVal *cv_tmp = (parent_node->get_cfg_val()) ? + parent_node->get_cfg_val()->get_next_cfg_val() : NULL; + val_db_vbr_st *vnode_st = reinterpret_cast + ((cv_tmp != NULL) ? cv_tmp->get_val() : NULL); + if (vn_valst == NULL) { + DELETE_IF_NOT_NULL(ck_remif); + DELETE_IF_NOT_NULL(parent_node); + return UPLL_RC_ERR_GENERIC; + } + vnode_st->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; + vnode_st->vbr_val_st.valid[0] = UNC_VF_VALID; + result_code = vnode_mgr->UpdateConfigDB(parent_node, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop, + MAINTBL); + + DELETE_IF_NOT_NULL(parent_node); + DELETE_IF_NOT_NULL(ck_remif); + return result_code; +} } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vnode_child_momgr.hh b/coordinator/modules/upll/vnode_child_momgr.hh index ca16c9e4..84dc68aa 100644 --- a/coordinator/modules/upll/vnode_child_momgr.hh +++ b/coordinator/modules/upll/vnode_child_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -28,254 +28,223 @@ namespace upll { namespace kt_momgr { typedef struct val_db_vbr_if_st { - val_vbr_if_st vbr_if_val_st; - uint32_t down_count; + val_vbr_if_st vbr_if_val_st; + uint32_t down_count; } val_db_vbr_if_st_t; typedef struct val_db_vrt_if_st { - val_vrt_if_st vrt_if_val_st; - uint32_t down_count; + val_vrt_if_st vrt_if_val_st; + uint32_t down_count; } val_db_vrt_if_st_t; typedef struct val_db_vtep_if_st { - val_vtep_if_st vtep_if_val_st; - uint32_t down_count; + val_vtep_if_st vtep_if_val_st; + uint32_t down_count; } val_db_vtep_if_st_t; typedef struct val_db_vtunnel_if_st { - val_vtunnel_if_st vtunnel_if_val_st; - uint32_t down_count; + val_vtunnel_if_st vtunnel_if_val_st; + uint32_t down_count; } val_db_vtunnel_if_st_t; class VnodeChildMoMgr : public MoMgrImpl { - controller_domain cntrl_dom; - upll_rc_t RestoreVnode(ConfigKeyVal *ikey, IpcReqRespHeader *req, - DalDmlIntf *dmi); - virtual upll_rc_t SetRenameField(ConfigKeyVal *&ikey); - virtual upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - upll_rc_t GetRenamedKey(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, controller_domain *ctrlr_dom, - rename_key flag); - - /* @brief Read the configuration either from RDBMS and/or from the controller - * - * @param[in] req Pointer to IpcResResHeader - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING operations - * - * @param[in/out] key Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t PopulateValVtnNeighbor(ConfigKeyVal *&key, - DalDmlIntf *dmi); - - /* @brief Gets the interface type (mapped,boundary,linked,unbound) - * expects the interface key/val to be populated - * - * @param[in] ck_vnif Pointer to the ConfigKeyVal Structure - * @param[in] valid_pm whether portmap is set to valid - * @param[out] vnif_type type of the interface - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t GetInterfaceType(ConfigKeyVal *ck_vnif, - uint8_t valid_pm, - if_type &vnif_type ) ; - - protected: - ConfigKeyVal *parent_ck_vnode; - uint32_t cur_instance_count; - - /** - * @brief Update parent oper status on delete for Transaction commit - * - * @param[in] ikey ConfigKeyVal instance - * @param[in] dmi Database connection parameter - - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - virtual upll_rc_t UpdateParentOperStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /* @brief Returns portmap information if portmap is valid - * Else returns NULL for portmap - * - * @param[in] ikey Pointer to ConfigKeyVal - * @param[out] valid_pm portmap is valid - * @param[out] pm pointer to portmap informtation if valid_pm - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, - val_port_map_t *&pm, uint8_t &valid_admin, - uint8_t &admin_status) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; - } - - virtual upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id); - upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - DalDmlIntf *dmi, uint8_t *ctrlr) { - return UPLL_RC_ERR_NO_SUCH_OPERATION; - } - template - upll_rc_t SetOperStatus(ConfigKeyVal *ikey, - state_notification ¬ification, - DalDmlIntf *dmi, alarm_status &oper_change = ALARM_NOT_SET); - - /** - * @brief Enqueues oper status notifications - * - * @param[in] ikey pointer to the configkeyval with - * the changed oper status - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - bool EnqueOperStatusNotification(ConfigKeyVal *ikey, bool oper_change); - - /* @brief Retrieve oper status of logical portid from physical - * - * @param[in] pm pointer to portmap structure - * @param[in] ctr_domain holds pointers to controller and domain id - * @param[in] logical_port_operStatus operstatus of logical port - * @param[in] session_id transaction session id - * @param[in] config_id transaction config id - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t GetPortStatusFromPhysical(val_port_map_t *pm, - controller_domain_t ctr_domain, - val_oper_status &logical_port_operStatus, - uint32_t session_id, - uint32_t config_id) ; + controller_domain cntrl_dom; + upll_rc_t RestoreVnode(ConfigKeyVal *ikey, IpcReqRespHeader *req, + DalDmlIntf *dmi, bool restore_flag); + virtual upll_rc_t SetRenameField(ConfigKeyVal *&ikey); + upll_rc_t GetRenamedKey(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, controller_domain *ctrlr_dom, + rename_key flag); + + /* @brief Read the configuration either from RDBMS and/or from the controller + * + * @param[in] req Pointer to IpcResResHeader + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING operations + * + * @param[in/out] key Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t PopulateValVtnNeighbor(ConfigKeyVal *&key, + DalDmlIntf *dmi); + + protected: + ConfigKeyVal *parent_ck_vnode; + + /** + * @brief Update parent oper status on delete for Transaction commit + * + * @param[in] ikey ConfigKeyVal instance + * @param[in] dmi Database connection parameter + + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + virtual upll_rc_t UpdateParentOperStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + + virtual upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id); + upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + DalDmlIntf *dmi, uint8_t *ctrlr) { + return UPLL_RC_ERR_NO_SUCH_OPERATION; + } + template +upll_rc_t SetOperStatus(ConfigKeyVal *ikey, + state_notification ¬ification, + DalDmlIntf *dmi, alarm_status &oper_change = + ALARM_NOT_SET); + + /** + * @brief Enqueues oper status notifications + * + * @param[in] ikey pointer to the configkeyval with + * the changed oper status + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + bool EnqueOperStatusNotification(ConfigKeyVal *ikey, bool oper_change); + + /* @brief Retrieve oper status of logical portid from physical + * + * @param[in] pm pointer to portmap structure + * @param[in] ctr_domain holds pointers to controller and domain id + * @param[in] logical_port_operStatus operstatus of logical port + * @param[in] session_id transaction session id + * @param[in] config_id transaction config id + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t GetPortStatusFromPhysical(val_port_map_t *pm, + controller_domain_t ctr_domain, + val_oper_status &logical_port_operStatus, + uint32_t session_id, + uint32_t config_id); #if 0 - /* @brief Gets ports with uninitialized oper status - * - ports whose status have to be obtained from physical - * - * @param[out] ikey Pointer to a list of configkeyvals - * @param[in] dmi Database connection parameter - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - template - upll_rc_t GetUninitOperState(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); + /* @brief Gets ports with uninitialized oper status + * - ports whose status have to be obtained from physical + * + * @param[out] ikey Pointer to a list of configkeyvals + * @param[in] dmi Database connection parameter + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + template +upll_rc_t GetUninitOperState(ConfigKeyVal *&ck_vn, DalDmlIntf *dmi); #endif - /* @brief Initializes the oper status on configuring the object - * - * - * @param[in] ikey Pointer to the ConfigKeyVal Structure - * @param[in] valid_admin valid flag corresponding to admin field - * @param[in] admin_status admin field of value structure - * @param[in] valid_pm valid flag corresponding to portmap field - * @param[in] pm pointer to portmap field if applicable - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - template - upll_rc_t InitOperStatus(ConfigKeyVal *ikey, - uint8_t valid_admin, - uint8_t admin_status, - uint8_t valid_pm, - val_port_map_t *pm = NULL); - public: - VnodeChildMoMgr() { - parent_ck_vnode = NULL; - cur_instance_count = 0; - memset(&cntrl_dom, 0, sizeof(controller_domain)); - } - virtual ~VnodeChildMoMgr() { - if (parent_ck_vnode) delete parent_ck_vnode; - parent_ck_vnode = NULL; - } - - /* @brief Called by configmgr to update state information - * for mapped interfaces - * - * @param[in] ktype keytype - * @param[in] session_id transaction session_id - * @param[in] config_id transaction config_id - * @param[in] dmi database connection paramter - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t TxUpdateDtState(unc_key_type_t ktype, - uint32_t session_id, - uint32_t config_id, - DalDmlIntf *dmi); + /* @brief Initializes the oper status on configuring the object + * + * + * @param[in] ikey Pointer to the ConfigKeyVal Structure + * @param[in] valid_admin valid flag corresponding to admin field + * @param[in] admin_status admin field of value structure + * @param[in] valid_pm valid flag corresponding to portmap field + * @param[in] pm pointer to portmap field if applicable + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + template +upll_rc_t InitOperStatus(ConfigKeyVal *ikey, + uint8_t valid_admin, + uint8_t admin_status, + uint8_t valid_pm, + val_port_map_t *pm = NULL); - upll_rc_t RenameMo(IpcReqRespHeader *req, ConfigKeyVal *key, - DalDmlIntf *dmi, const char *ctrlr_id) { - return UPLL_RC_ERR_NO_SUCH_OPERATION; - } - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id); - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom); - virtual upll_rc_t GetControllerDomainId(ConfigKeyVal *ck_vbr, - upll_keytype_datatype_t dt_type, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi); - - /** - * @Brief Compare if Vtep member ControllerId and VtepGrp ControllerId are same - * If same throw an error - * - * @param[in] req pointer IpcReqResp header - * @param[in] ikey ikey contains key and value structure. - * @param[in] dt_type database type - * @param[in] dmi pointer to DalDmlIntf - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT Operation not allowed - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t CompareContollers(ConfigKeyVal *ikey, - upll_keytype_datatype_t datatye, - DalDmlIntf *dmi); - virtual upll_rc_t ConverttoDriverPortMap(ConfigKeyVal *ck_port_map) { - return UPLL_RC_ERR_GENERIC; - } + public + : + VnodeChildMoMgr() { + parent_ck_vnode = NULL; + memset(&cntrl_dom, 0, sizeof(controller_domain)); + } + virtual ~VnodeChildMoMgr() { + if (parent_ck_vnode) delete parent_ck_vnode; + parent_ck_vnode = NULL; + } + + + /* @brief Called by configmgr to update state information + * for mapped interfaces + * + * @param[in] ktype keytype + * @param[in] session_id transaction session_id + * @param[in] config_id transaction config_id + * @param[in] dmi database connection paramter + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t TxUpdateDtState(unc_key_type_t ktype, + uint32_t session_id, + uint32_t config_id, + DalDmlIntf *dmi); + + upll_rc_t RenameMo(IpcReqRespHeader *req, ConfigKeyVal *key, + DalDmlIntf *dmi, const char *ctrlr_id) { + return UPLL_RC_ERR_NO_SUCH_OPERATION; + } + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id); + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom); + virtual upll_rc_t GetControllerDomainId(ConfigKeyVal *ck_vbr, + upll_keytype_datatype_t dt_type, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi); + + /** + * @Brief Compare if Vtep member ControllerId and VtepGrp ControllerId are same + * If same throw an error + * + * @param[in] req pointer IpcReqResp header + * @param[in] ikey ikey contains key and value structure. + * @param[in] dt_type database type + * @param[in] dmi pointer to DalDmlIntf + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT Operation not allowed + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t CompareContollers(ConfigKeyVal *ikey, + upll_keytype_datatype_t datatye, + DalDmlIntf *dmi); + virtual upll_rc_t ConverttoDriverPortMap(ConfigKeyVal *ck_port_map) { + return UPLL_RC_ERR_GENERIC; + } /* @brief This is semantic check for KEY_VBR_IF key type * in the update operation. @@ -289,31 +258,64 @@ class VnodeChildMoMgr : public MoMgrImpl { * **/ - upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - virtual upll_rc_t SetVlinkPortmapConfiguration(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - InterfacePortMapInfo flag) { - return UPLL_RC_ERR_GENERIC; - } - upll_rc_t UpdateOperStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - state_notification notification, - bool skip, bool upd_if, bool upd_remif, - bool save_to_db = false); - virtual upll_rc_t GetMappedInterfaces(const key_vnode_type_t &vnode_key, - DalDmlIntf *dmi, - ConfigKeyVal *&iokey); - virtual upll_rc_t SetLinkedIfOperStatusforPathFault( - const key_vnode_type_t &vnode_key, - state_notification notification, - DalDmlIntf *dmi); - virtual upll_rc_t UpdateVnodeIf(ConfigKeyVal *ck_if, - DalDmlIntf *dmi, - state_notification notification); + virtual upll_rc_t SetVlinkPortmapConfiguration( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + InterfacePortMapInfo flag) { + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t UpdateOperStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + state_notification notification, + bool skip, bool upd_if, bool upd_remif, + bool save_to_db = false); + virtual upll_rc_t GetMappedInterfaces(const key_vnode_type_t &vnode_key, + DalDmlIntf *dmi, + ConfigKeyVal *&iokey); + virtual upll_rc_t SetLinkedIfOperStatusforPathFault( + const key_vnode_type_t &vnode_key, + state_notification notification, + DalDmlIntf *dmi); + virtual upll_rc_t UpdateVnodeIfOperStatus(ConfigKeyVal *ck_if, + DalDmlIntf *dmi, + state_notification notification); + + /* VlanmapOnBoundary change */ + virtual upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, DalDmlIntf *dmi, + bool restore_flag = false); + + /* @brief Gets the interface type (mapped,boundary,linked,unbound) + * expects the interface key/val to be populated + * + * @param[in] ck_vnif Pointer to the ConfigKeyVal Structure + * @param[in] valid_pm whether portmap is set to valid + * @param[out] vnif_type type of the interface + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t GetInterfaceType(ConfigKeyVal *ck_vnif, + uint8_t valid_pm, + if_type &vnif_type); + + /* @brief Updates the remote Interface of Internal Vlink on Controller Reconnect + * based on the interface admin status + * + * @param[in] ikey Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t UpdateRemoteVlinkIf(ConfigKeyVal *ikey, DalDmlIntf *dmi); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vnode_momgr.cc b/coordinator/modules/upll/vnode_momgr.cc index 0f024fc0..eb7b7f71 100644 --- a/coordinator/modules/upll/vnode_momgr.cc +++ b/coordinator/modules/upll/vnode_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -15,13 +15,17 @@ #include "vtn_flowfilter_momgr.hh" #include "vtn_flowfilter_entry_momgr.hh" #include "vtn_policingmap_momgr.hh" +#include "config_mgr.hh" +#include "vlanmap_momgr.hh" + namespace unc { namespace upll { namespace kt_momgr { upll_rc_t VnodeMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; if (!ikey || !(ikey->get_key()) || !req || !dmi) { UPLL_LOG_DEBUG("Cannot perform create operation"); @@ -29,11 +33,12 @@ upll_rc_t VnodeMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; - ConfigKeyVal *temp_key = NULL; - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage Failed : %d", result_code); - return result_code; + if (!restore_flag) { + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage Failed : %d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { @@ -41,66 +46,22 @@ upll_rc_t VnodeMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } - // Parent VTN check - result_code = GetParentConfigKey(parent_ck_vtn, ikey); - if (result_code == UPLL_RC_ERR_GENERIC) { - UPLL_LOG_DEBUG( - "Error in retrieving the parent VTN ConfigKeyVal. Error code : %d", - result_code); - return result_code; - } - MoMgrImpl *mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(UNC_KT_VTN)))); - if (!mgr) { - UPLL_LOG_DEBUG("Invalid Mgr"); - DELETE_IF_NOT_NULL(parent_ck_vtn); - return UPLL_RC_ERR_GENERIC; - } - result_code = mgr->UpdateConfigDB(parent_ck_vtn, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("VTN doesn't exist in CANDIDATE DB. Error code : %d", - result_code); - DELETE_IF_NOT_NULL(parent_ck_vtn); - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } - DELETE_IF_NOT_NULL(parent_ck_vtn); - UPLL_LOG_DEBUG("ikey keytype %d", ikey->get_key_type()); - // Vnode Existence check in CANDIDATE DB + // Vnode Existence check in CANDIDATE DB result_code = VnodeChecks(ikey, req->datatype, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG( - "Another Vnode with the same name already exists. Error code : %d", - result_code); + "Another Vnode with the same name already exists. Error code : %d", + result_code); return result_code; } - // check for key support on controller and max count + // check for key support on controller and max count result_code = GetControllerDomainId(ikey, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetControllerDomainId Failed"); return result_code; } - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - return result_code; - } - - result_code = GetInstanceCount(temp_key, - reinterpret_cast(ctrlr_dom.ctrlr), - req->datatype, &cur_instance_count, dmi, - MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetInstanceCount error %d", result_code); - if (temp_key) - delete temp_key; - return UPLL_RC_ERR_GENERIC; - } - if (temp_key) - delete temp_key; result_code = ValidateCapability(req, ikey); if (result_code != UPLL_RC_SUCCESS) { @@ -108,13 +69,13 @@ upll_rc_t VnodeMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } - result_code = RestoreVnode(ikey, req, dmi, &ctrlr_dom); + result_code = RestoreVnode(ikey, req, dmi, &ctrlr_dom, restore_flag); return result_code; } upll_rc_t VnodeMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; if (!ikey || !(ikey->get_key()) || !dmi) { UPLL_LOG_DEBUG("Cannot perform create operation"); @@ -123,14 +84,15 @@ upll_rc_t VnodeMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. * else - create using the controller name. */ result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } @@ -142,10 +104,10 @@ upll_rc_t VnodeMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return result_code; } DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag | kOpInOutDomain - | kOpInOutCtrlr }; + | kOpInOutCtrlr }; SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, - dmi, &dbop, MAINTBL); + dmi, &dbop, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Record Creation failed in CANDIDATE DB"); return result_code; @@ -160,13 +122,13 @@ upll_rc_t VnodeMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, result_code = CheckVtnExistenceOnController(ikey, &req, &ctrlr_dom, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("VTN doesn't exist on controller"); - return result_code; + return result_code; } return result_code; } upll_rc_t VnodeMoMgr::CtrlrTypeAndDomainCheck(ConfigKeyVal *ikey, - IpcReqRespHeader *req) { + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -180,7 +142,9 @@ upll_rc_t VnodeMoMgr::CtrlrTypeAndDomainCheck(ConfigKeyVal *ikey, unc_keytype_ctrtype_t ctrlrtype; uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); if (!ctrlr_mgr->GetCtrlrType( - reinterpret_cast(ctrlr_dom.ctrlr), req->datatype, &ctrlrtype)) { + reinterpret_cast(ctrlr_dom.ctrlr), + req->datatype, + &ctrlrtype)) { UPLL_LOG_DEBUG("Specified Controller Doesn't Exist"); return UPLL_RC_ERR_CFG_SEMANTIC; } @@ -196,8 +160,15 @@ upll_rc_t VnodeMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, if (req->operation == UNC_OP_UPDATE) { ConfigKeyVal *okey = NULL; result_code = GetChildConfigKey(okey, ikey); - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; - result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, dbop, dmi, MAINTBL); + DbSubOp dbop = {kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; + result_code = ReadConfigDB(okey, + req->datatype, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_ERROR("Record does Not Exists"); delete okey; @@ -212,31 +183,32 @@ upll_rc_t VnodeMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, } result_code = CtrlrTypeAndDomainCheck(okey, req); delete okey; - } else { - result_code = CtrlrTypeAndDomainCheck(ikey, req); - } - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Controller type and domain check failed"); - return result_code; - } - //* other semantic validations *// + } else { + result_code = CtrlrTypeAndDomainCheck(ikey, req); + } + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_ERROR("Controller type and domain check failed"); + return result_code; + } + // * other semantic validations *// if (ikey->get_key_type() == UNC_KT_VBRIDGE) { result_code = IsHostAddrAndPrefixLenInUse(ikey, dmi, req); } - //Commented for #403 + // Commented for #403 /*if (ikey->get_key_type() == UNC_KT_VROUTER) { result_code = EnableAdminStatus(ikey, dmi, req); if (result_code != UPLL_RC_ERR_CFG_SEMANTIC) { - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; } - }*/ + }*/ return result_code; } upll_rc_t VnodeMoMgr::RestoreVnode(ConfigKeyVal *ikey, IpcReqRespHeader *req, DalDmlIntf *dmi, - controller_domain_t *ctrlr_dom) { + controller_domain_t *ctrlr_dom, + bool restore_flag) { UPLL_FUNC_TRACE; if (ikey == NULL || dmi == NULL) { UPLL_LOG_DEBUG("Create error due to insufficient parameters"); @@ -248,35 +220,74 @@ upll_rc_t VnodeMoMgr::RestoreVnode(ConfigKeyVal *ikey, ** if exists : restore to CANDIDATE DB ** else : validate the attributes */ - if (UPLL_DT_CANDIDATE == req->datatype) { + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restoring children failed. Error code : %d", result_code); - return UPLL_RC_ERR_GENERIC; - } - if (key_type == UNC_KT_VBRIDGE || key_type == UNC_KT_VROUTER || - key_type == UNC_KT_VTEP || key_type == UNC_KT_VTUNNEL - || key_type == UNC_KT_VTEP_GRP) { - /* check if controller is aware of parent VTN - ** and create an entry in VtnCtrlrTbl on failure - */ - result_code = CheckVtnExistenceOnController(ikey, req, ctrlr_dom, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("VTN doesn't exist on controller"); + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + switch (ikey->get_key_type()) { + case UNC_KT_VROUTER: { + val_vrt *vrt_val = reinterpret_cast + (GetVal(ikey)); + if (vrt_val != NULL) { + vrt_val->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] = + UNC_VF_INVALID; + } + } + break; + case UNC_KT_VLINK: { + val_vlink_t *vlink_val = reinterpret_cast + (GetVal(ikey)); + if (vlink_val != NULL) { + vlink_val->valid[UPLL_IDX_ADMIN_STATUS_VLNK] = UNC_VF_INVALID; + } + } + break; + default: + UPLL_LOG_DEBUG("Other vnode child keytypes"); + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); return result_code; } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; } - return result_code; + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE || - UPLL_DT_IMPORT == req->datatype) { + UPLL_DT_IMPORT == req->datatype) { if (key_type == UNC_KT_VTEP || key_type == UNC_KT_VTUNNEL || key_type == UNC_KT_VTEP_GRP) { - // create a record in CANDIDATE DB + // create a record in CANDIDATE DB DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutFlag }; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi, &dbop, MAINTBL); @@ -300,22 +311,24 @@ upll_rc_t VnodeMoMgr::RestoreVnode(ConfigKeyVal *ikey, /* check if any UNC vtn is renamed as this VTN on the given Controller ** if so : throw an error */ - if (UPLL_DT_CANDIDATE == req->datatype ) { - if (ikey->get_key_type() != UNC_KT_VLINK) { - result_code = CheckRenamedVtnName(ikey, req->datatype, ctrlr_dom, dmi); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Specified VTN is already on controller"); - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_DEBUG("Error in Reading DB %d", result_code); - return result_code; - } + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + if (ikey->get_key_type() != UNC_KT_VLINK) { + result_code = CheckRenamedVtnName(ikey, req->datatype, ctrlr_dom, dmi); + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Specified VTN is already on controller"); + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_DEBUG("Error in Reading DB %d", result_code); + return result_code; + } + } } } } /* set the controller domain in the ikey */ - // SET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); + // SET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); #if 0 if (ikey->get_key_type() == UNC_KT_VLINK) { @@ -323,9 +336,9 @@ upll_rc_t VnodeMoMgr::RestoreVnode(ConfigKeyVal *ikey, SET_USER_DATA_CTRLR_DOMAIN(ikey->get_cfg_val(), ctrlr_dom[1]); } #endif - // create a record in CANDIDATE DB + // create a record in CANDIDATE DB DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutFlag | kOpInOutDomain - | kOpInOutCtrlr }; + | kOpInOutCtrlr }; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi, &dbop, MAINTBL); @@ -344,19 +357,20 @@ upll_rc_t VnodeMoMgr::RestoreVnode(ConfigKeyVal *ikey, return result_code; } } - // TODO (karthi) moved here, because after creating the vnode + // TODO(karthi): moved here, because after creating the vnode // we need to set the rename flag. /* If parent VTN is renamed, set the renamed flag in Vnode ** and create an entry in vnode rename table if VTN is renamed */ + if (!restore_flag) { if (UPLL_DT_IMPORT != req->datatype) { result_code = SetVnodeRenameFlag(ikey, req->datatype, ctrlr_dom, dmi); if (result_code != UPLL_RC_SUCCESS) { return result_code; } } - + } return result_code; } @@ -378,7 +392,8 @@ upll_rc_t VnodeMoMgr::CheckRenamedVtnName(ConfigKeyVal *ikey, MoMgrImpl *mgr = reinterpret_cast(const_cast - (const_cast(GetMoManager(UNC_KT_VTN)))); + (const_cast + (GetMoManager(UNC_KT_VTN)))); if (!mgr) { UPLL_LOG_DEBUG("Invalid Mgr"); delete vtn_key; @@ -405,7 +420,8 @@ upll_rc_t VnodeMoMgr::SetVnodeRenameFlag(ConfigKeyVal *&ikey, /*Check if parent vtn renamed and get the renamed name */ MoMgrImpl *mgr = reinterpret_cast(const_cast - (const_cast(GetMoManager(UNC_KT_VTN)))); + (const_cast( + GetMoManager(UNC_KT_VTN)))); if (!mgr) { UPLL_LOG_DEBUG("Invalid Mgr"); return UPLL_RC_ERR_GENERIC; @@ -415,7 +431,7 @@ upll_rc_t VnodeMoMgr::SetVnodeRenameFlag(ConfigKeyVal *&ikey, UPLL_LOG_DEBUG("GetParentConfigKey Failed"); return result_code; } - // SET_USER_DATA_CTRLR_DOMAIN(parent_ck_vtn, *ctrlr_dom); + // SET_USER_DATA_CTRLR_DOMAIN(parent_ck_vtn, *ctrlr_dom); UPLL_LOG_DEBUG("ctrlr dom %p %p %p\n", ctrlr_dom->ctrlr, ctrlr_dom->domain, ikey->get_user_data()); UPLL_LOG_DEBUG("%p %p %p %p \n", parent_ck_vtn, ikey, ikey->get_user_data(), @@ -425,7 +441,7 @@ upll_rc_t VnodeMoMgr::SetVnodeRenameFlag(ConfigKeyVal *&ikey, if (result_code != UPLL_RC_SUCCESS) { DELETE_IF_NOT_NULL(parent_ck_vtn); UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", - result_code); + result_code); return result_code; } int rename = 0; @@ -435,28 +451,31 @@ upll_rc_t VnodeMoMgr::SetVnodeRenameFlag(ConfigKeyVal *&ikey, return UPLL_RC_SUCCESS; } // create entry in Vnode Rename Table-parent_ck_vtn contains the renamed name - // TODO (karthi) Here removed CreateVnodeRenameEntry and combined + // TODO(karthi): Here removed CreateVnodeRenameEntry and combined GetVnodeName(ikey, temp_vtn_name, temp_vnode_name); if (temp_vtn_name == NULL || temp_vnode_name == NULL) return UPLL_RC_ERR_GENERIC; key_vnode* key_rename_vnode = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vnode))); + (ConfigKeyVal::Malloc(sizeof(key_vnode))); uuu::upll_strncpy(key_rename_vnode->vtn_key.vtn_name, - temp_vtn_name, (kMaxLenVtnName+1) ); + temp_vtn_name, (kMaxLenVtnName+1) ); uuu::upll_strncpy(key_rename_vnode->vnode_name, temp_vnode_name, (kMaxLenVnodeName+1)); val_rename_vnode_t* val_rename_vnode = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode_t))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode_t))); uuu::upll_strncpy(val_rename_vnode->ctrlr_vtn_name, - reinterpret_cast(parent_ck_vtn->get_key())->vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (parent_ck_vtn->get_key())->vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(val_rename_vnode->ctrlr_vnode_name, temp_vnode_name, (kMaxLenVnodeName+1)); ck_rename_vnode = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcInvalidStNum, key_rename_vnode, - new ConfigVal(IpctSt::kIpcInvalidStNum, val_rename_vnode)); + new ConfigVal( + IpctSt::kIpcInvalidStNum, + val_rename_vnode)); val_rename_vnode->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; val_rename_vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; @@ -466,9 +485,13 @@ upll_rc_t VnodeMoMgr::SetVnodeRenameFlag(ConfigKeyVal *&ikey, /* Create the Entry in Vnode rename table for vbr and vrt * Vlink rename table for vlink key type */ - result_code = UpdateConfigDB(ck_rename_vnode, dt_type, UNC_OP_CREATE, dmi, &dbop, + result_code = UpdateConfigDB(ck_rename_vnode, + dt_type, + UNC_OP_CREATE, + dmi, + &dbop, RENAMETBL); -// SET_USER_DATA_CTRLR(ck_rename_vnode, ctrlr_id); + // SET_USER_DATA_CTRLR(ck_rename_vnode, ctrlr_id); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Record Creation failed in %d", result_code); DELETE_IF_NOT_NULL(parent_ck_vtn); @@ -476,7 +499,7 @@ upll_rc_t VnodeMoMgr::SetVnodeRenameFlag(ConfigKeyVal *&ikey, return result_code; } /* Update the Rename Flag for vnode in the main table */ - DELETE_IF_NOT_NULL (ck_rename_vnode); + DELETE_IF_NOT_NULL(ck_rename_vnode); rename = 0; GET_USER_DATA_FLAGS(ikey, rename); rename |= VTN_RENAME; @@ -490,10 +513,10 @@ upll_rc_t VnodeMoMgr::SetVnodeRenameFlag(ConfigKeyVal *&ikey, } upll_rc_t VnodeMoMgr::CheckVtnExistenceOnController( - ConfigKeyVal *ikey, - IpcReqRespHeader *req, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + IpcReqRespHeader *req, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; if (ikey == NULL || dmi == NULL || ctrlr_dom == NULL) { UPLL_LOG_ERROR("Create error due to insufficient parameters"); @@ -512,15 +535,15 @@ upll_rc_t VnodeMoMgr::CheckVtnExistenceOnController( result_code = GetParentConfigKey(ck_domain_vtn, ikey); if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - return result_code; + DELETE_IF_NOT_NULL(ck_vtn_cntrlr); + return result_code; } /* set the controller -id */ SET_USER_DATA_CTRLR_DOMAIN(ck_vtn_cntrlr, *ctrlr_dom); MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("Invalid Mgr"); DELETE_IF_NOT_NULL(ck_vtn_cntrlr); @@ -538,52 +561,29 @@ upll_rc_t VnodeMoMgr::CheckVtnExistenceOnController( DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; result_code = mgr->ReadConfigDB(ck_vtn, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); - DELETE_IF_NOT_NULL(ck_vtn); - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - DELETE_IF_NOT_NULL(ck_domain_vtn); - return result_code; - } - val_vtn *vtn_val = reinterpret_cast - (GetVal(ck_vtn)); - if (!vtn_val) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_vtn); - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - DELETE_IF_NOT_NULL(ck_domain_vtn); - return UPLL_RC_ERR_GENERIC; - } - uint8_t valid_vtn_desc = vtn_val->valid[UPLL_IDX_DESC_VTN]; - - ConfigKeyVal *temp_key = NULL; - result_code = mgr->GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); DELETE_IF_NOT_NULL(ck_vtn); DELETE_IF_NOT_NULL(ck_vtn_cntrlr); DELETE_IF_NOT_NULL(ck_domain_vtn); return result_code; } - result_code = mgr->GetInstanceCount(temp_key, - reinterpret_cast(ctrlr_dom->ctrlr), - req->datatype, &mgr->cur_instance_count, dmi, - MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetInstanceCount error %d", result_code); - DELETE_IF_NOT_NULL(temp_key); + val_vtn *vtn_val = reinterpret_cast + (GetVal(ck_vtn)); + if (!vtn_val) { + UPLL_LOG_DEBUG("Invalid param"); DELETE_IF_NOT_NULL(ck_vtn); DELETE_IF_NOT_NULL(ck_vtn_cntrlr); DELETE_IF_NOT_NULL(ck_domain_vtn); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(temp_key); + uint8_t valid_vtn_desc = vtn_val->valid[UPLL_IDX_DESC_VTN]; if (req->datatype != UPLL_DT_AUDIT) { dt_type = req->datatype; result_code = mgr->ValidateCapability( - req, ck_vtn, reinterpret_cast(ctrlr_dom->ctrlr)); + req, ck_vtn, reinterpret_cast(ctrlr_dom->ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateCapability Failed %d", result_code); DELETE_IF_NOT_NULL(ck_vtn_cntrlr); @@ -592,160 +592,168 @@ upll_rc_t VnodeMoMgr::CheckVtnExistenceOnController( return result_code; } } else { - dt_type = UPLL_DT_AUDIT; + dt_type = UPLL_DT_AUDIT; } dbop.matchop = kOpMatchCtrlr|kOpMatchDomain; /*Checks VTN exists on the controller and doamin*/ result_code = mgr->ReadConfigDB(ck_domain_vtn, req->datatype, - UNC_OP_READ, dbop, dmi, CTRLRTBL); + UNC_OP_READ, dbop, dmi, CTRLRTBL); if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code && UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code) + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code) + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn_cntrlr); + DELETE_IF_NOT_NULL(ck_domain_vtn); + return result_code; + } + + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + dbop.matchop = kOpMatchCtrlr; + /* If the vtn exists in controller and not in domain + * then we have to rename the vtn name */ + result_code = mgr->ReadConfigDB(ck_vtn_cntrlr, req->datatype, + UNC_OP_READ, dbop, dmi, CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); DELETE_IF_NOT_NULL(ck_vtn); DELETE_IF_NOT_NULL(ck_vtn_cntrlr); DELETE_IF_NOT_NULL(ck_domain_vtn); return result_code; - } - - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - - dbop.matchop = kOpMatchCtrlr; - /* If the vtn exists in controller and not in domain - * then we have to rename the vtn name */ - result_code = mgr->ReadConfigDB(ck_vtn_cntrlr, req->datatype, - UNC_OP_READ, dbop, dmi, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_SUCCESS == result_code) { + /* The VTN name is available in the controller + * but not in the domain, so we have to create the new name + * for the give vtn */ + std::string domain = reinterpret_cast(ctrlr_dom->domain); + std::string vtn_name = reinterpret_cast + (reinterpret_cast( + ck_domain_vtn->get_key())->vtn_name); + if (strlen(vtn_name.c_str()) >= 10) { + vtn_name.assign(vtn_name.c_str(), 10); + } + struct timeval _timeval; + struct timezone _timezone; + gettimeofday(&_timeval, &_timezone); + /* Renaming the VTN name based on the Time and Micro seconds */ + std::string vtn_domain_name = vtn_name+"_"+ + static_cast( + &(std::ostringstream() << _timeval.tv_sec))->str() + + static_cast( + &(std::ostringstream() << _timeval.tv_usec) )->str(); + val_rename_vtn_t* rename_vtn = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + uuu::upll_strncpy(rename_vtn->new_name, vtn_domain_name.c_str(), + (kMaxLenVtnName+1)); + rename_vtn->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + ck_vtn->SetCfgVal(new ConfigVal(IpctSt::kIpcStValRenameVtn, rename_vtn)); + SET_USER_DATA(ck_vtn, ck_domain_vtn); + dbop.matchop = kOpMatchNone; + dbop.inoutop = kOpInOutCtrlr|kOpInOutDomain; + /* Create Entry in Rename Table */ + result_code = mgr->UpdateConfigDB(ck_vtn, req->datatype, + UNC_OP_CREATE, dmi, &dbop, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateconfigDB failed"); DELETE_IF_NOT_NULL(ck_vtn); DELETE_IF_NOT_NULL(ck_vtn_cntrlr); DELETE_IF_NOT_NULL(ck_domain_vtn); - return result_code; - } - if (UPLL_RC_SUCCESS == result_code) { - /* The VTN name is available in the controller - * but not in the domain, so we have to create the new name - * for the give vtn */ - std::string domain = reinterpret_cast(ctrlr_dom->domain); - std::string vtn_name = reinterpret_cast - (reinterpret_cast( - ck_domain_vtn->get_key())->vtn_name); - if (strlen(vtn_name.c_str())>=10) { - vtn_name.assign(vtn_name.c_str(), 10); - } - struct timeval _timeval; - struct timezone _timezone; - gettimeofday(&_timeval, &_timezone); - /* Renaming the VTN name based on the Time and Micro seconds */ - std::string vtn_domain_name = vtn_name+"_"+ - static_cast( - &(std::ostringstream() << _timeval.tv_sec))->str() + - static_cast( - &(std::ostringstream() << _timeval.tv_usec) )->str(); - val_rename_vtn_t* rename_vtn = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); - uuu::upll_strncpy(rename_vtn->new_name, vtn_domain_name.c_str(), - (kMaxLenVtnName+1)); - rename_vtn->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - ck_vtn->SetCfgVal(new ConfigVal(IpctSt::kIpcStValRenameVtn, rename_vtn)); - SET_USER_DATA(ck_vtn, ck_domain_vtn); - dbop.matchop = kOpMatchNone; - dbop.inoutop = kOpInOutCtrlr|kOpInOutDomain; - /* Create Entry in Rename Table */ - result_code = mgr->UpdateConfigDB(ck_vtn, req->datatype, - UNC_OP_CREATE, dmi, &dbop, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateconfigDB failed"); - DELETE_IF_NOT_NULL(ck_vtn); - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - DELETE_IF_NOT_NULL(ck_domain_vtn); - return result_code; - } - SET_USER_DATA_FLAGS(ck_domain_vtn, VTN_RENAME); - SET_USER_DATA_FLAGS(ck_vtn, VTN_RENAME); - ck_vtn->SetCfgVal(NULL); - /* UpdateRename Flag In VTN Main Table*/ - dbop.inoutop = kOpInOutFlag; - result_code = mgr->UpdateConfigDB(ck_vtn, req->datatype, - UNC_OP_UPDATE, dmi, &dbop, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateconfigDB failed"); - DELETE_IF_NOT_NULL(ck_vtn); - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - DELETE_IF_NOT_NULL(ck_domain_vtn); - return result_code; - } - SET_USER_DATA_FLAGS(ikey, VTN_RENAME); + return result_code; } - ctrlr_val = reinterpret_cast - (GetVal(ck_domain_vtn)); - if (!ctrlr_val) { - UPLL_LOG_DEBUG("Val is empty"); - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - DELETE_IF_NOT_NULL(ck_domain_vtn); - DELETE_IF_NOT_NULL(ck_vtn); - return UPLL_RC_ERR_GENERIC; + SET_USER_DATA_FLAGS(ck_domain_vtn, VTN_RENAME); + SET_USER_DATA_FLAGS(ck_vtn, VTN_RENAME); + ck_vtn->SetCfgVal(NULL); + /* UpdateRename Flag In VTN Main Table*/ + dbop.inoutop = kOpInOutFlag; + result_code = mgr->UpdateConfigDB(ck_vtn, req->datatype, + UNC_OP_UPDATE, dmi, &dbop, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateconfigDB failed"); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn_cntrlr); + DELETE_IF_NOT_NULL(ck_domain_vtn); + return result_code; } - ctrlr_val->ref_count = 1; - ctrlr_val->down_count = 0; - ctrlr_val->flags = 0; - ctrlr_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; - ctrlr_val->alarm_status = UPLL_ALARM_CLEAR; - if (valid_vtn_desc == UNC_VF_NOT_SUPPORTED) - ctrlr_val->cs_attr[0] = UNC_CS_NOT_SUPPORTED ; - else if (valid_vtn_desc == UNC_VF_VALID) - ctrlr_val->cs_attr[0] = UNC_CS_NOT_APPLIED ; - ctrlr_val->cs_row_status = UNC_CS_NOT_APPLIED; - /* Inform to the POM keytypes for the new entry in vtn controller table*/ - if (! OVERLAY_KT(ikey->get_key_type())) { - result_code = IntimatePOMAboutNewController(ikey, ctrlr_dom, - dmi, UNC_OP_CREATE, dt_type); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in updating POM Manager" - " about the addition of a new Controller"); - DELETE_IF_NOT_NULL(ck_vtn); - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - DELETE_IF_NOT_NULL(ck_domain_vtn); - return result_code; - } + SET_USER_DATA_FLAGS(ikey, VTN_RENAME); + } + ctrlr_val = reinterpret_cast + (GetVal(ck_domain_vtn)); + if (!ctrlr_val) { + UPLL_LOG_DEBUG("Val is empty"); + DELETE_IF_NOT_NULL(ck_vtn_cntrlr); + DELETE_IF_NOT_NULL(ck_domain_vtn); + DELETE_IF_NOT_NULL(ck_vtn); + return UPLL_RC_ERR_GENERIC; + } + ctrlr_val->ref_count = 1; + ctrlr_val->down_count = 0; + ctrlr_val->flags = 0; + ctrlr_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; + ctrlr_val->alarm_status = UPLL_ALARM_CLEAR; + if (valid_vtn_desc == UNC_VF_NOT_SUPPORTED) + ctrlr_val->cs_attr[0] = UNC_CS_NOT_SUPPORTED; + else if (valid_vtn_desc == UNC_VF_VALID) + ctrlr_val->cs_attr[0] = UNC_CS_NOT_APPLIED; + ctrlr_val->cs_row_status = UNC_CS_NOT_APPLIED; + /* Inform to the POM keytypes for the new entry in vtn controller table*/ + if (!OVERLAY_KT(ikey->get_key_type())) { + result_code = IntimatePOMAboutNewController(ikey, ctrlr_dom, + dmi, UNC_OP_CREATE, dt_type); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in updating POM Manager" + " about the addition of a new Controller"); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn_cntrlr); + DELETE_IF_NOT_NULL(ck_domain_vtn); + return result_code; } + } op = UNC_OP_CREATE; } else if (UPLL_RC_SUCCESS == result_code) { - ctrlr_val = reinterpret_cast - (GetVal(ck_domain_vtn)); - if (!ctrlr_val) { - UPLL_LOG_DEBUG("Val is empty"); - DELETE_IF_NOT_NULL(ck_vtn_cntrlr); - DELETE_IF_NOT_NULL(ck_domain_vtn); - DELETE_IF_NOT_NULL(ck_vtn); - return UPLL_RC_ERR_GENERIC; - } + ctrlr_val = reinterpret_cast + (GetVal(ck_domain_vtn)); + if (!ctrlr_val) { + UPLL_LOG_DEBUG("Val is empty"); + DELETE_IF_NOT_NULL(ck_vtn_cntrlr); + DELETE_IF_NOT_NULL(ck_domain_vtn); + DELETE_IF_NOT_NULL(ck_vtn); + return UPLL_RC_ERR_GENERIC; + } - ctrlr_val->ref_count++; - op = UNC_OP_UPDATE; + ctrlr_val->ref_count++; + op = UNC_OP_UPDATE; } - // ck_vtn_cntrlr->SetCfgVal(new ConfigVal(IpctSt::kIpcInvalidStNum, ctrlr_val)); + // ck_vtn_cntrlr->SetCfgVal(new ConfigVal(IpctSt::kIpcInvalidStNum, + // ctrlr_val)); /* Create/Update Entry in Controller Table*/ - // result_code = mgr->UpdateConfigDB(ck_vtn_cntrlr, req->datatype, - result_code = mgr->UpdateConfigDB(ck_domain_vtn, req->datatype, - op, dmi, CTRLRTBL); + // result_code = mgr->UpdateConfigDB(ck_vtn_cntrlr, req->datatype, + result_code = mgr->UpdateConfigDB(ck_domain_vtn, req->datatype, + op, dmi, CTRLRTBL); DELETE_IF_NOT_NULL(ck_vtn); DELETE_IF_NOT_NULL(ck_vtn_cntrlr); DELETE_IF_NOT_NULL(ck_domain_vtn); return result_code; } -upll_rc_t VnodeMoMgr::IntimatePOMAboutNewController(ConfigKeyVal *ikey, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type) { +upll_rc_t VnodeMoMgr::IntimatePOMAboutNewController( + ConfigKeyVal *ikey, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type) { UPLL_FUNC_TRACE - upll_rc_t result_code = UPLL_RC_SUCCESS; + upll_rc_t result_code = UPLL_RC_SUCCESS; + /* For Audit case, intimate to POM key type not required + * because POM key type ctrlr table are populated before + * vnodes creation in audit table + */ + if (dt_type == UPLL_DT_AUDIT) { + return result_code; + } unc_key_type_t pom_keys[] = { UNC_KT_VTN_FLOWFILTER, - UNC_KT_VTN_FLOWFILTER_ENTRY, - UNC_KT_VTN_POLICINGMAP}; + UNC_KT_VTN_FLOWFILTER_ENTRY, + UNC_KT_VTN_POLICINGMAP}; MoMgrImpl *pom_mgr = NULL; uint8_t *vtn_name = (reinterpret_cast(ikey->get_key()))->vtn_name; if (!vtn_name) return UPLL_RC_ERR_GENERIC; @@ -756,14 +764,19 @@ upll_rc_t VnodeMoMgr::IntimatePOMAboutNewController(ConfigKeyVal *ikey, uint8_t flag = 0; GET_USER_DATA_FLAGS(ikey, flag); for (uint8_t count = 0; count < npom_mgr; count++) { - pom_mgr = reinterpret_cast(const_cast(GetMoManager( - pom_keys[count]))); + pom_mgr = reinterpret_cast(const_cast( + GetMoManager( + pom_keys[count]))); if (!pom_mgr) { UPLL_LOG_DEBUG("error in fetching MoMgr reference"); return UPLL_RC_ERR_GENERIC; } result_code = pom_mgr->UpdateControllerTableForVtn(vtn_name, - ctrlr_dom, op, dt_type, dmi, flag); + ctrlr_dom, + op, + dt_type, + dmi, + flag); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed in Intimating POM module of new controller, %d", result_code); @@ -786,8 +799,10 @@ upll_rc_t VnodeMoMgr::DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, * then value is one, */ DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutNone }; - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutNone }; + DbSubOp dbop1 = { kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain }; ConfigKeyVal *parent_key = NULL; result_code = GetParentConfigKey(parent_key, ikey); @@ -806,43 +821,46 @@ upll_rc_t VnodeMoMgr::DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, return result_code; } result_code = ReadConfigDB(ck_vbr, req->datatype, UNC_OP_READ, dbop1, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) result_code = GetControllerDomainId(ck_vbr, &ctrlr_dom); if ((result_code != UPLL_RC_SUCCESS) || (ctrlr_dom.ctrlr == NULL) || (ctrlr_dom.domain == NULL)) { UPLL_LOG_INFO("Invalid ctrlr/domain"); - //DELETE_IF_NOT_NULL(parent_key); + // DELETE_IF_NOT_NULL(parent_key); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); SET_USER_DATA_CTRLR_DOMAIN(parent_key, ctrlr_dom); - // delete ck_vbr; + // delete ck_vbr; /* GetReference count from vtn controller table */ MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("Invalid Mgr"); return UPLL_RC_ERR_GENERIC; } - dbop.matchop = kOpMatchCtrlr | kOpMatchDomain ; + dbop.matchop = kOpMatchCtrlr | kOpMatchDomain; result_code = mgr->ReadConfigDB(parent_key, req->datatype, UNC_OP_READ, dbop, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) return result_code; val_vtn_ctrlr *vtn_st_val = reinterpret_cast - (GetVal(parent_key)); + (GetVal(parent_key)); if (!vtn_st_val) { UPLL_LOG_DEBUG("Val is empty"); return UPLL_RC_ERR_GENERIC; } if (1 == vtn_st_val->ref_count) { - if (! OVERLAY_KT(ikey->get_key_type())) { - result_code = IntimatePOMAboutNewController(parent_key, &ctrlr_dom, - dmi, UNC_OP_DELETE, req->datatype); + if (!OVERLAY_KT(ikey->get_key_type())) { + result_code = IntimatePOMAboutNewController(parent_key, + &ctrlr_dom, + dmi, + UNC_OP_DELETE, + req->datatype); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("IntimatePOMAboutNewController %d", result_code); return result_code; @@ -856,8 +874,8 @@ upll_rc_t VnodeMoMgr::DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, result_code = mgr->UpdateConfigDB(parent_key, req->datatype, UNC_OP_DELETE, dmi, &dbop, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateconfigDB Failed %d", result_code); - return result_code; + UPLL_LOG_DEBUG("UpdateconfigDB Failed %d", result_code); + return result_code; } parent_key->SetCfgVal(NULL); result_code = mgr->UpdateConfigDB(parent_key, req->datatype, UNC_OP_DELETE, @@ -868,9 +886,9 @@ upll_rc_t VnodeMoMgr::DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, return result_code; } result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; } else { - // Reduce the ref count if vnode is not last node. + // Reduce the ref count if vnode is not last node. vtn_st_val->ref_count--; result_code = mgr->UpdateConfigDB(parent_key, req->datatype, UNC_OP_UPDATE, dmi, &dbop, CTRLRTBL); @@ -878,7 +896,7 @@ upll_rc_t VnodeMoMgr::DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, delete parent_key; if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in updating/deleting ctrlr table %d result %d", - vtn_st_val->ref_count, result_code); + vtn_st_val->ref_count, result_code); return result_code; } result_code = DeleteCandidateMo(req, ikey, dmi); @@ -903,7 +921,7 @@ upll_rc_t VnodeMoMgr::ControlMo(IpcReqRespHeader *header, ConfigKeyVal *ikey, result_code = ValidateMessage(header, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); + result_code); return result_code; } ConfigKeyVal *okey = NULL; @@ -913,19 +931,19 @@ upll_rc_t VnodeMoMgr::ControlMo(IpcReqRespHeader *header, ConfigKeyVal *ikey, return result_code; } result_code = UpdateConfigDB(okey, UPLL_DT_RUNNING, UNC_OP_READ, - dmi, MAINTBL); + dmi, MAINTBL); DELETE_IF_NOT_NULL(okey); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { UPLL_LOG_DEBUG("Record doesn't exist in DB. Error code : %d", - result_code); + result_code); return result_code; } - // Getting the controller vtn, vnode name + // Getting the controller vtn, vnode name result_code = GetRenamedControllerKey(ikey, UPLL_DT_RUNNING, dmi, - &ctrlr_dom); + &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", - result_code); + result_code); return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); @@ -938,39 +956,46 @@ upll_rc_t VnodeMoMgr::ControlMo(IpcReqRespHeader *header, ConfigKeyVal *ikey, memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); ipc_req.ckv_data = ikey; - if (!uui::IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), - reinterpret_cast(ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { + if (!uui::IpcUtil::SendReqToDriver( + (const char *)(ctrlr_dom.ctrlr), + reinterpret_cast + (ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ikey->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); + ikey->get_key_type(), reinterpret_cast + (ctrlr_dom.ctrlr)); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); return UPLL_RC_ERR_GENERIC; } - // Populate ConfigKeyVal and IpcReqRespHeader with the response from driver + // Populate ConfigKeyVal and IpcReqRespHeader with the response + // from driver ikey->ResetWith(ipc_resp.ckv_data); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); result_code = (header->result_code = ipc_resp.header.result_code); } else { - UPLL_LOG_DEBUG("Control Operation not allowed for %d data type", header->datatype); + UPLL_LOG_DEBUG("Control Operation not allowed for %d data type", + header->datatype); return UPLL_RC_ERR_CFG_SEMANTIC; } } else { - UPLL_LOG_DEBUG("Control Operation not allowed for %d key type", ikey->get_key_type()); + UPLL_LOG_DEBUG("Control Operation not allowed for %d key type", + ikey->get_key_type()); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } return result_code; } upll_rc_t VnodeMoMgr::GetVnodeType(const void *key, bool vnode, - unc_key_type_t &keytype, - ConfigKeyVal *&ck_val, DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type) { + unc_key_type_t &keytype, + ConfigKeyVal *&ck_val, DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type) { unc_key_type_t *ktype, if_ktype[] = { UNC_KT_VBR_IF, UNC_KT_VRT_IF, - UNC_KT_VUNK_IF, UNC_KT_VTEP_IF, - UNC_KT_VTUNNEL_IF }; + UNC_KT_VUNK_IF, UNC_KT_VTEP_IF, + UNC_KT_VTUNNEL_IF }; unc_key_type_t vnode_ktype[] = { UNC_KT_VBRIDGE, UNC_KT_VROUTER, UNC_KT_VTEP, - UNC_KT_VTUNNEL, UNC_KT_VUNKNOWN }; + UNC_KT_VTUNNEL, UNC_KT_VUNKNOWN }; int numnodes; if (vnode) { @@ -984,7 +1009,7 @@ upll_rc_t VnodeMoMgr::GetVnodeType(const void *key, bool vnode, keytype = ktype[i]; MoMgrImpl *mgr = (reinterpret_cast(const_cast - (GetMoManager(keytype)))); + (GetMoManager(keytype)))); if (!mgr) { UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; @@ -995,7 +1020,7 @@ upll_rc_t VnodeMoMgr::GetVnodeType(const void *key, bool vnode, return UPLL_RC_ERR_GENERIC; } switch (keytype) { - case UNC_KT_VBRIDGE: + case UNC_KT_VBRIDGE: case UNC_KT_VROUTER: case UNC_KT_VUNKNOWN: case UNC_KT_VTUNNEL: @@ -1017,7 +1042,7 @@ upll_rc_t VnodeMoMgr::GetVnodeType(const void *key, bool vnode, const pfc_ipcstdef_t *key_stdef = IpctSt::GetIpcStdef( ck_val->get_st_num()); if (sizeof(*reinterpret_cast(key)) - != key_stdef->ist_size) { + != key_stdef->ist_size) { DELETE_IF_NOT_NULL(ck_val); return UPLL_RC_ERR_GENERIC; } @@ -1029,9 +1054,9 @@ upll_rc_t VnodeMoMgr::GetVnodeType(const void *key, bool vnode, return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag | kOpMatchCtrlr | kOpInOutDomain }; + kOpInOutFlag | kOpMatchCtrlr | kOpInOutDomain }; result_code = mgr->ReadConfigDB(ck_val, dt_type, - UNC_OP_READ, dbop1, dmi, MAINTBL); + UNC_OP_READ, dbop1, dmi, MAINTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { DELETE_IF_NOT_NULL(ck_val); continue; @@ -1047,7 +1072,7 @@ upll_rc_t VnodeMoMgr::GetVnodeType(const void *key, bool vnode, return UPLL_RC_ERR_CFG_SEMANTIC; } -upll_rc_t VnodeMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, +upll_rc_t VnodeMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -1056,81 +1081,94 @@ upll_rc_t VnodeMoMgr::UpdateParentOperStatus(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } unc_key_type_t ktype = ikey->get_key_type(); - if ((ktype != UNC_KT_VBRIDGE) && (ktype != UNC_KT_VROUTER)) + if ((ktype != UNC_KT_VBRIDGE) && (ktype != UNC_KT_VROUTER)) return UPLL_RC_SUCCESS; DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; result_code = ReadConfigDB(ikey, UPLL_DT_STATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } - val_db_vbr_st *valst = reinterpret_cast(GetStateVal(ikey)); + val_db_vbr_st *valst = reinterpret_cast(GetStateVal(ikey)); if (!valst) { UPLL_LOG_DEBUG("Returning error\n"); return UPLL_RC_ERR_GENERIC; } if (valst->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] == UNC_VF_VALID) { if (valst->vbr_val_st.oper_status != UPLL_OPER_STATUS_DOWN) - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; ConfigKeyVal *ck_vtn = NULL; - // decrement the down count in vtn controller table - result_code = GetParentConfigKey(ck_vtn,ikey); + // decrement the down count in vtn controller table + result_code = GetParentConfigKey(ck_vtn, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager(UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("Returning error \n"); delete ck_vtn; return UPLL_RC_ERR_GENERIC; } - DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutNone}; + DbSubOp dbop = {kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutNone}; result_code = mgr->ReadConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_READ, dbop, - dmi, CTRLRTBL); + dmi, CTRLRTBL); if (result_code == UPLL_RC_SUCCESS) { - val_vtn_ctrlr *vtn_val_st = reinterpret_cast(GetVal(ck_vtn)); - vtn_val_st->down_count--; + val_vtn_ctrlr *vtn_val_st = reinterpret_cast + (GetVal(ck_vtn)); + vtn_val_st->down_count = (vtn_val_st->down_count > 0)? + (vtn_val_st->down_count - 1):0; + if (vtn_val_st->down_count == 0) + vtn_val_st->oper_status = UPLL_OPER_STATUS_UP; result_code = mgr->UpdateConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, CTRLRTBL); + dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); delete ck_vtn; return result_code; } } else { - UPLL_LOG_DEBUG("Last vnode in ctrlr table %s\n", - (reinterpret_cast(ikey->get_key()))->vbridge_name); + UPLL_LOG_DEBUG("Last vnode in ctrlr table %s\n", + (reinterpret_cast + (ikey->get_key()))->vbridge_name); } - // initialize parent vtn of main tbl to uninit so oper status gets computed during dt_state - DELETE_IF_NOT_NULL(ck_vtn); - result_code = mgr->GetCkvUninit(ck_vtn,NULL,dmi); + // initialize parent vtn of main tbl to uninit so oper status + // gets computed during dt_state + ConfigKeyVal *tmp_ckv = ck_vtn; + ck_vtn = NULL; + // get ck_vtn with oper status uninit. + result_code = mgr->GetCkvUninit(ck_vtn, tmp_ckv, dmi); + DELETE_IF_NOT_NULL(tmp_ckv); if (result_code != UPLL_RC_SUCCESS) { if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - } else + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + } else { result_code = UPLL_RC_SUCCESS; + } DELETE_IF_NOT_NULL(ck_vtn); return result_code; } result_code = mgr->UpdateConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) result_code = UPLL_RC_SUCCESS; } DELETE_IF_NOT_NULL(ck_vtn); } - return result_code; + return result_code; } upll_rc_t VnodeMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - state_notification notification, bool skip, - bool save_to_db) { + DalDmlIntf *dmi, + state_notification notification, + bool skip, + bool save_to_db) { UPLL_FUNC_TRACE; bool oper_status_change = false; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -1145,29 +1183,29 @@ upll_rc_t VnodeMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, if (!save_to_db) { void *key = ikey->get_key(); const char *vtn_name = reinterpret_cast( - reinterpret_cast(key)->vtn_name); - s = string(vtn_name) + - reinterpret_cast( - reinterpret_cast(key) + sizeof(struct key_vtn)); - map::const_iterator got - = vnode_oper_map.find(s); + reinterpret_cast(key)->vtn_name); + s = string(vtn_name) + + reinterpret_cast( + reinterpret_cast(key) + sizeof(struct key_vtn)); + map::const_iterator got + = vnode_oper_map.find(s); if (got == vnode_oper_map.end()) - read_db = true; + read_db = true; } if (read_db || save_to_db) { DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain }; + kOpInOutCtrlr | kOpInOutDomain }; result_code = ReadConfigDB(ikey, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Error in reading: %d", result_code); return result_code; } - } + } } else if (!save_to_db) { UPLL_LOG_ERROR("Returning error \n"); return UPLL_RC_ERR_GENERIC; - } + } ConfigKeyVal *tkey, *tkey_next = ikey; while (tkey_next != NULL) { tkey = tkey_next; @@ -1177,49 +1215,47 @@ upll_rc_t VnodeMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, switch (ktype) { case UNC_KT_VBRIDGE: oper_status_change = SetOperStatus( - tkey, dmi, notification, true, save_to_db); + tkey, dmi, notification, true, save_to_db); break; case UNC_KT_VROUTER: oper_status_change = SetOperStatus( - tkey, dmi, notification, true, save_to_db); + tkey, dmi, notification, true, save_to_db); break; case UNC_KT_VTEP: oper_status_change = SetOperStatus - ( - tkey, dmi, notification, true, save_to_db); + ( + tkey, dmi, notification, true, save_to_db); break; case UNC_KT_VTUNNEL: oper_status_change = SetOperStatus - ( - tkey, dmi, notification, true, save_to_db); + ( + tkey, dmi, notification, true, save_to_db); break; default: UPLL_LOG_DEBUG("Operstatus attribute not supported for this kt %d", - ktype); + ktype); break; } - if ((oper_status_change && notification != kCtrlrDisconnect) || - notification == kCtrlrReconnect || - notification == kCtrlrReconnectIfUp || - notification == kCtrlrReconnectIfDown) { - VtnMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); - if (!mgr) { - UPLL_LOG_DEBUG("Invalid mgr"); - return UPLL_RC_ERR_GENERIC; - } - ConfigKeyVal *ck_vtn = NULL; - upll_rc_t result_code = GetParentConfigKey(ck_vtn, tkey); - if (!ck_vtn || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - return result_code; - } - result_code = mgr->UpdateOperStatus(ck_vtn, dmi, notification, false); - delete ck_vtn; - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("VTN UpdateOperStatus failed"); - return result_code; - } + // vishnu + if (oper_status_change && (notification != kCtrlrDisconnect)) { + VtnMoMgr *mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VTN))); + if (!mgr) { + UPLL_LOG_DEBUG("Invalid mgr"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ck_vtn = NULL; + upll_rc_t result_code = GetParentConfigKey(ck_vtn, tkey); + if (!ck_vtn || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + return result_code; + } + result_code = mgr->UpdateOperStatus(ck_vtn, dmi, notification, false); + delete ck_vtn; + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("VTN UpdateOperStatus failed"); + return result_code; + } } if (skip) break; @@ -1228,14 +1264,14 @@ upll_rc_t VnodeMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, if (!save_to_db) { map::const_iterator it; VtnMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); + (const_cast(GetMoManager(UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; } for (it = mgr->vtn_oper_map.begin(); it != mgr->vtn_oper_map.end(); ++it) { DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutNone }; + kOpInOutNone }; ConfigKeyVal *ck_vtn_main = NULL, *tkey = it->second; result_code = mgr->UpdateConfigDB(tkey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, &dbop, CTRLRTBL); @@ -1270,8 +1306,8 @@ upll_rc_t VnodeMoMgr::UpdateOperStatus(ConfigKeyVal *ikey, template bool VnodeMoMgr::SetOperStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi, int notification, - bool skip, bool save_to_db) { + DalDmlIntf *dmi, int notification, + bool skip, bool save_to_db) { /* update corresponding vnode operstatus */ UPLL_FUNC_TRACE; bool oper_change = false; @@ -1281,19 +1317,19 @@ bool VnodeMoMgr::SetOperStatus(ConfigKeyVal *ikey, if (!save_to_db) { void *key = ikey->get_key(); const char *vtn_name = reinterpret_cast( - reinterpret_cast(key)->vtn_name); + reinterpret_cast(key)->vtn_name); string s = string(vtn_name) + - reinterpret_cast( - reinterpret_cast(key) + sizeof(struct key_vtn)); + reinterpret_cast( + reinterpret_cast(key) + sizeof(struct key_vtn)); map::const_iterator got - = vnode_oper_map.find(s); + = vnode_oper_map.find(s); if (got == vnode_oper_map.end()) read_db = true; } - if ( read_db || save_to_db) { + if (read_db || save_to_db) { DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(ikey, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Error in reading: %d", result_code); return oper_change; @@ -1312,15 +1348,17 @@ bool VnodeMoMgr::SetOperStatus(ConfigKeyVal *ikey, /* Update oper status based on notification */ vn_val->valid[0] = UNC_VF_VALID; UPLL_LOG_DEBUG("notification %d down_count %d fault_count %d", notification, - vn_valst->down_count, vn_valst->fault_count); + vn_valst->down_count, vn_valst->fault_count); switch (notification) { case kCtrlrReconnect: return UPLL_RC_SUCCESS; case kCtrlrDisconnect: + case kPortUnknown: oper_change = (vn_val->oper_status != UPLL_OPER_STATUS_UNKNOWN)? - true:false; + true:false; vn_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; vn_valst->down_count = 0; + vn_valst->fault_count = 0; break; case kCtrlrReconnectIfDown: vn_val->oper_status = UPLL_OPER_STATUS_DOWN; @@ -1331,54 +1369,66 @@ bool VnodeMoMgr::SetOperStatus(ConfigKeyVal *ikey, } vn_val->oper_status = UPLL_OPER_STATUS_UP; break; -// return false; + // return false; case kAdminStatusDisabled: oper_change = (vn_val->oper_status != UPLL_OPER_STATUS_DOWN)?true:false; vn_val->oper_status = UPLL_OPER_STATUS_DOWN; break; case kAdminStatusEnabled: - if (vn_valst->down_count == 0) { - // oper_change = (vn_val->oper_status != UPLL_OPER_STATUS_UNINIT)?true:false; - oper_change = (vn_val->oper_status == UPLL_OPER_STATUS_DOWN)? - true:false; + if ((vn_valst->down_count == 0) && (vn_valst->fault_count == 0)) { + // oper_change = (vn_val->oper_status != UPLL_OPER_STATUS_UNINIT)? + // true : false; + oper_change = ((vn_val->oper_status == UPLL_OPER_STATUS_DOWN)|| + (vn_val->oper_status == UPLL_OPER_STATUS_UNKNOWN))? + true:false; if (OVERLAY_KT(ktype)) vn_val->oper_status = UPLL_OPER_STATUS_UP; else vn_val->oper_status = UPLL_OPER_STATUS_UNINIT; } else { - vn_val->oper_status = UPLL_OPER_STATUS_DOWN; oper_change = (vn_val->oper_status != UPLL_OPER_STATUS_DOWN)? - true:false; + true:false; + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; } break; case kPathFault: - vn_valst->down_count= (vn_valst->down_count + 1); vn_valst->fault_count= (vn_valst->fault_count + 1); - if (vn_valst->fault_count == 1 || vn_valst->down_count == 1) { - oper_change = (vn_val->oper_status != UPLL_OPER_STATUS_DOWN)?true:false; + if (vn_valst->fault_count == 1) { + oper_change = (vn_val->oper_status != + UPLL_OPER_STATUS_DOWN)?true:false; vn_val->oper_status = UPLL_OPER_STATUS_DOWN; - // generate alarm + // generate alarm + if (!EnqueOperStatusNotification(ikey, ALARM_OPER_DOWN)) { + UPLL_LOG_DEBUG("Alarm Notification failed"); + return UPLL_RC_ERR_GENERIC; + } } break; case kPathFaultReset: vn_valst->fault_count = (vn_valst->fault_count > 0) ? (vn_valst->fault_count - 1) : 0; - vn_valst->down_count = (vn_valst->down_count > 0) ? - (vn_valst->down_count - 1) : 0; - if (vn_valst->fault_count == 0 || vn_valst->down_count == 0) { - oper_change = (vn_val->oper_status == UPLL_OPER_STATUS_DOWN)?true:false; + if (vn_valst->fault_count == 0 && vn_valst->down_count == 0) { + oper_change = (vn_val->oper_status == + UPLL_OPER_STATUS_DOWN)?true:false; if (OVERLAY_KT(ktype)) vn_val->oper_status = UPLL_OPER_STATUS_UP; else vn_val->oper_status = UPLL_OPER_STATUS_UNINIT; - // reset alarm + // reset alarm + if (vn_valst->fault_count == 0) { + if (!EnqueOperStatusNotification(ikey, ALARM_OPER_UP)) { + UPLL_LOG_DEBUG("Alarm Notification failed"); + return UPLL_RC_ERR_GENERIC; + } + } } break; case kPortFault: case kBoundaryFault: vn_valst->down_count = (vn_valst->down_count + 1); if (vn_valst->down_count == 1) { - oper_change = (vn_val->oper_status != UPLL_OPER_STATUS_DOWN)?true:false; + oper_change = (vn_val->oper_status != + UPLL_OPER_STATUS_DOWN)?true:false; vn_val->oper_status = UPLL_OPER_STATUS_DOWN; } break; @@ -1386,32 +1436,43 @@ bool VnodeMoMgr::SetOperStatus(ConfigKeyVal *ikey, case kBoundaryFaultReset: vn_valst->down_count = (vn_valst->down_count > 0) ? (vn_valst->down_count - 1) : 0; - if (vn_valst->down_count == 0) { - oper_change = (vn_val->oper_status == UPLL_OPER_STATUS_DOWN)?true:false; + /* fall through intentional */ + if (vn_valst->down_count == 0 && vn_valst->fault_count == 0) { + oper_change = ((vn_val->oper_status == UPLL_OPER_STATUS_DOWN) || + (vn_val->oper_status == UPLL_OPER_STATUS_UNKNOWN))? + true:false; if (OVERLAY_KT(ktype)) vn_val->oper_status = UPLL_OPER_STATUS_UP; else vn_val->oper_status = UPLL_OPER_STATUS_UNINIT; - // generate alarm + // generate alarm } break; + case kPortFaultResetWithAdminDisabled: + case kBoundaryFaultResetWithAdminDisabled: + vn_valst->down_count = (vn_valst->down_count > 0) ? + (vn_valst->down_count - 1) : 0; + // oper status stays down irrespective of down_count + // as admin is disabled for one of the child interfaces. + vn_val->oper_status = UPLL_OPER_STATUS_DOWN; + break; } if (save_to_db) { DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; result_code = UpdateConfigDB(ikey, UPLL_DT_STATE, UNC_OP_UPDATE, dmi, - &dbop, MAINTBL); - UPLL_LOG_TRACE("Vnode SetOperstatus for VTN after Update is \n %s", - ikey->ToStrAll().c_str()); + &dbop, MAINTBL); + UPLL_LOG_TRACE("Vnode SetOperstatus for VTN after Update is \n %s", + ikey->ToStrAll().c_str()); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in update oper status %d", result_code); } } else { void *key = ikey->get_key(); const char *vtn_name = reinterpret_cast( - reinterpret_cast(key)->vtn_name) ; + reinterpret_cast(key)->vtn_name); string s = string(vtn_name) + - reinterpret_cast( - reinterpret_cast(key) + sizeof(struct key_vtn)); + reinterpret_cast( + reinterpret_cast(key) + sizeof(struct key_vtn)); vnode_oper_map[s] = ikey; if (vnode_oper_map[s] == ikey) UPLL_LOG_DEBUG("Storing %s %p", s.c_str(), ikey); @@ -1434,63 +1495,64 @@ upll_rc_t VnodeMoMgr::TxUpdateDtState(unc_key_type_t ktype, /* Create Vnode If key */ switch (ktype) { - case UNC_KT_VBRIDGE: - child_keytype = UNC_KT_VBR_IF; - break; - case UNC_KT_VROUTER: - child_keytype = UNC_KT_VRT_IF; - break; - case UNC_KT_VTEP: - child_keytype = UNC_KT_VTEP_IF; - break; - case UNC_KT_VTUNNEL: - child_keytype = UNC_KT_VTUNNEL_IF; - break; - default: - UPLL_LOG_DEBUG("Unsupported operation on keytype %d", ktype); - return UPLL_RC_ERR_GENERIC; + case UNC_KT_VBRIDGE: + child_keytype = UNC_KT_VBR_IF; + break; + case UNC_KT_VROUTER: + child_keytype = UNC_KT_VRT_IF; + break; + case UNC_KT_VTEP: + child_keytype = UNC_KT_VTEP_IF; + break; + case UNC_KT_VTUNNEL: + child_keytype = UNC_KT_VTUNNEL_IF; + break; + default: + UPLL_LOG_DEBUG("Unsupported operation on keytype %d", ktype); + return UPLL_RC_ERR_GENERIC; } - result_code = GetUninitOperState(ck_vn, dmi); + result_code = GetUninitOperState(ck_vn, dmi); if (UPLL_RC_SUCCESS != result_code || ck_vn == NULL) { return result_code; } ConfigKeyVal *tkey = ck_vn; DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; while (ck_vn) { - state_notification notification; + state_notification notification = kAdminStatusEnabled; tkey = ck_vn; ck_vn = tkey->get_next_cfg_key_val(); tkey->set_next_cfg_key_val(NULL); /* read the state value */ val_db_vbr_st * vnode_runst = reinterpret_cast - (GetStateVal(tkey)); + (GetStateVal(tkey)); if (!vnode_runst) { UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; } if ((vnode_runst->down_count == 0) && (vnode_runst->fault_count == 0)) { - // get count of vnode ifs down - uint32_t cur_instance_count = 0; + // get count of vnode ifs down ConfigKeyVal *ck_vnif = NULL; - + VnodeChildMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(child_keytype))); + (const_cast(GetMoManager(child_keytype))); result_code = mgr->GetCkvUninit(ck_vnif, tkey, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } val_db_vbr_st *vnif_stval = reinterpret_cast - (GetStateVal(ck_vnif)); + (GetStateVal(ck_vnif)); vnif_stval->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; vnif_stval->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; - result_code = mgr->GetInstanceCount(ck_vnif, NULL, UPLL_DT_STATE, - &cur_instance_count, dmi, MAINTBL); +#if 0 + uint32_t cur_instance_count = 0; + result_code = mgr->GetInstanceCount(ck_vnif, NULL, UPLL_DT_STATE, + &cur_instance_count, dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { if (cur_instance_count == 0) { vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_UP; notification = kAdminStatusEnabled; - } else { + } else { vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; notification = kAdminStatusDisabled; } @@ -1498,7 +1560,68 @@ upll_rc_t VnodeMoMgr::TxUpdateDtState(unc_key_type_t ktype, vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; notification = kAdminStatusDisabled; } else { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + } +#else + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr + | kOpInOutDomain }; + result_code = mgr->ReadConfigDB(ck_vnif, UPLL_DT_STATE, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code == UPLL_RC_SUCCESS) { + // operationally down interface present in the interface table + vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; + result_code = UPLL_RC_SUCCESS; + notification = kAdminStatusDisabled; + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + ck_vnif->SetCfgVal(NULL); + result_code = mgr->UpdateConfigDB(ck_vnif, UPLL_DT_STATE, UNC_OP_READ, + dmi, &dbop, MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + // vnode has no interface that is down + vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_UP; + result_code = UPLL_RC_SUCCESS; + notification = kAdminStatusEnabled; + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (tkey->get_key_type() == UNC_KT_VBRIDGE) { + VlanMapMoMgr *vlan_mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VBR_VLANMAP))); + ConfigKeyVal *ckv_vlanmap = NULL; + result_code = vlan_mgr->GetChildConfigKey(ckv_vlanmap, tkey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed for vlanmap\n"); + return result_code; + } + result_code = vlan_mgr->UpdateConfigDB(ckv_vlanmap, + UPLL_DT_STATE, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + // vbridge with vlanmap configured + vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_UP; + result_code = UPLL_RC_SUCCESS; + notification = kAdminStatusEnabled; + } + DELETE_IF_NOT_NULL(ckv_vlanmap); + } + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + // standalone vnode + if (OVERLAY_KT(ktype)) { + notification = kAdminStatusEnabled; + vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_UP; + } else { + notification = kAdminStatusDisabled; + vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; + } + result_code = UPLL_RC_SUCCESS; + } + } + } +#endif + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); delete ck_vnif; delete tkey; delete ck_vn; @@ -1506,29 +1629,29 @@ upll_rc_t VnodeMoMgr::TxUpdateDtState(unc_key_type_t ktype, } DELETE_IF_NOT_NULL(ck_vnif); vnode_runst->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; - } else { - if (vnode_runst->down_count > 0) - notification = kPortFault; - else if (vnode_runst->fault_count > 0) - notification = kPathFault; + } else { + if (vnode_runst->down_count > 0) + notification = kPortFault; + else if (vnode_runst->fault_count > 0) + notification = kPathFault; vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; vnode_runst->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; } - result_code = UpdateConfigDB(tkey, UPLL_DT_STATE,UNC_OP_UPDATE, + result_code = UpdateConfigDB(tkey, UPLL_DT_STATE, UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Executed %d", result_code); break; } - // invoked from port status handler - // don't propagate as the event is already propagated. + // invoked from port status handler + // don't propagate as the event is already propagated. if ((config_id == 0) && (session_id == 0)) { delete tkey; continue; } if (notification != kAdminStatusEnabled) { VtnMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); + (const_cast(GetMoManager(UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; @@ -1554,6 +1677,51 @@ upll_rc_t VnodeMoMgr::TxUpdateDtState(unc_key_type_t ktype, return result_code; } +bool VnodeMoMgr::EnqueOperStatusNotification(ConfigKeyVal *ikey, + bool oper_status_change) { + UPLL_FUNC_TRACE; + if (!ikey || !ikey->get_key()) { + UPLL_LOG_DEBUG("Inputs are Invalid"); + return false; + } + uuc::UpllConfigMgr *cfg_instance = uuc::UpllConfigMgr::GetUpllConfigMgr(); + unc_key_type_t ktype = ikey->get_key_type(); + uint8_t *vtn_name = NULL; + uint8_t *vnode_name = NULL; + + switch (ktype) { + case UNC_KT_VBRIDGE: + vtn_name = reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name; + vnode_name = reinterpret_cast + (ikey->get_key())->vbridge_name; + break; + case UNC_KT_VROUTER: + vtn_name = reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name; + vnode_name = reinterpret_cast + (ikey->get_key())->vrouter_name; + break; + case UNC_KT_VTUNNEL: + vtn_name = reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name; + vnode_name = reinterpret_cast + (ikey->get_key())->vtunnel_name; + break; + case UNC_KT_VTEP: + vtn_name = reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name; + vnode_name = reinterpret_cast + (ikey->get_key())->vtep_name; + break; + default: + UPLL_LOG_DEBUG("Invalid KeyType"); + } + return cfg_instance->SendOperStatusAlarm(reinterpret_cast(vtn_name), + reinterpret_cast(vnode_name), + reinterpret_cast(NULL), + oper_status_change); +} #if 0 upll_rc_t VnodeMoMgr::InitOperStatus(ConfigKeyVal *tkey) { @@ -1567,34 +1735,34 @@ upll_rc_t VnodeMoMgr::InitOperStatus(ConfigKeyVal *tkey) { /* read the state value */ val_db_vbr_st * vnode_runst = reinterpret_cast - (GetStateVal(tkey)); + (GetStateVal(tkey)); if (!vnode_runst) { UPLL_LOG_DEBUG("Invalid param"); return UPLL_RC_ERR_GENERIC; } if ((vnode_runst->down_count == 0) && (vnode_runst->fault_count == 0)) { - // get count of vnode ifs down + // get count of vnode ifs down uint32_t cur_instance_count = 0; ConfigKeyVal *ck_vnif = NULL; - + VnodeChildMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(child_keytype))); + (const_cast(GetMoManager(child_keytype))); result_code = mgr->GetCkvUninit(ck_vnif, tkey, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); return result_code; } val_db_vbr_st *vnif_stval = reinterpret_cast - (GetStateVal(ck_vnif)); + (GetStateVal(ck_vnif)); vnif_stval->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; vnif_stval->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; - result_code = mgr->GetInstanceCount(ck_vnif, NULL, UPLL_DT_STATE, - &cur_instance_count, dmi, MAINTBL); + result_code = mgr->GetInstanceCount(ck_vnif, NULL, UPLL_DT_STATE, + &cur_instance_count, dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { if (cur_instance_count == 0) { vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_UP; notification = kAdminStatusEnabled; - } else { + } else { vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; notification = kAdminStatusDisabled; } @@ -1602,7 +1770,7 @@ upll_rc_t VnodeMoMgr::InitOperStatus(ConfigKeyVal *tkey) { vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; notification = kAdminStatusDisabled; } else { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); + UPLL_LOG_DEBUG("Returning error %d\n", result_code); delete ck_vnif; delete tkey; delete ck_vn; @@ -1610,23 +1778,23 @@ upll_rc_t VnodeMoMgr::InitOperStatus(ConfigKeyVal *tkey) { } DELETE_IF_NOT_NULL(ck_vnif); vnode_runst->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; - } else { - if (vnode_runst->down_count > 0) - notification = kPortFault; - else if (vnode_runst->fault_count > 0) - notification = kPathFault; + } else { + if (vnode_runst->down_count > 0) + notification = kPortFault; + else if (vnode_runst->fault_count > 0) + notification = kPathFault; vnode_runst->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; vnode_runst->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; } DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; - result_code = UpdateConfigDB(tkey, UPLL_DT_STATE,UNC_OP_UPDATE, + result_code = UpdateConfigDB(tkey, UPLL_DT_STATE, UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Executed %d", result_code); return result_code; } VtnMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); + (const_cast(GetMoManager(UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr"); return UPLL_RC_ERR_GENERIC; @@ -1640,7 +1808,7 @@ upll_rc_t VnodeMoMgr::InitOperStatus(ConfigKeyVal *tkey) { result_code = mgr->UpdateOperStatus(ck_vtn, dmi, notification, false); delete ck_vtn; if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("VTN UpdateOperStatus failed"); + UPLL_LOG_DEBUG("VTN UpdateOperStatus failed"); } return result_code; } diff --git a/coordinator/modules/upll/vnode_momgr.hh b/coordinator/modules/upll/vnode_momgr.hh index ebec343f..cdc8377f 100644 --- a/coordinator/modules/upll/vnode_momgr.hh +++ b/coordinator/modules/upll/vnode_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,330 +20,342 @@ namespace upll { namespace kt_momgr { typedef struct val_db_vbr_st { - val_vbr_st vbr_val_st; - uint32_t down_count; - uint32_t fault_count; + val_vbr_st vbr_val_st; + uint32_t down_count; + uint32_t fault_count; } val_db_vbr_st_t; typedef struct val_db_vrt_st { - val_vrt_st vrt_val_st; - uint32_t down_count; - uint32_t fault_count; + val_vrt_st vrt_val_st; + uint32_t down_count; + uint32_t fault_count; } val_db_vrt_st_t; typedef struct val_db_vtep_st { - val_vtep_st vtep_val_st; - uint32_t down_count; - uint32_t fault_count; + val_vtep_st vtep_val_st; + uint32_t down_count; + uint32_t fault_count; } val_db_vtep_st_t; typedef struct val_db_vtunnel_st { - val_vtunnel_st vtunnel_val_st; - uint32_t down_count; - uint32_t fault_count; + val_vtunnel_st vtunnel_val_st; + uint32_t down_count; + uint32_t fault_count; } val_db_vtunnel_st_t; class VnodeMoMgr : public MoMgrImpl { - public: - map vnode_oper_map; - - VnodeMoMgr() { - parent_ck_vtn = NULL; - cntrl_id = NULL; - } - virtual ~VnodeMoMgr() { - if (parent_ck_vtn) delete parent_ck_vtn; - parent_ck_vtn = NULL; - } - - upll_rc_t UpdateOperStatus(ConfigKeyVal *ck_vn, - DalDmlIntf *dmi, - state_notification notification, bool skip, - bool save_to_db); - upll_rc_t CtrlrTypeAndDomainCheck(ConfigKeyVal *ikey, - IpcReqRespHeader *req); - /** - * @Brief compares controller id and domain id before - * updating the value to DB. - * @param[in] ikey ikey contains key and value structure. - * @param[in] okey okey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - */ - virtual upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) = 0; - - /** - * @brief Perform Semantic Check to check Different vbridges - * contain same switch-id and vlan-id - * - * @param[in] ikey ConfigKeyVal - * @param[out] dmi DataBase Interface - * - * @retval UPLL_RC_ERR_CFG_SEMANTIC on error - * @retval UPLL_RC_SUCCESS on success - **/ - virtual upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - - /** - * @Brief This API is to update(Add or delete) the controller - * - * @param[in] vtn_name vtn name pointer - * @param[in] ctrlr_dom Controller Domain pointer - * @param[in] op UNC Operation Code - * @param[in] dmi Database Intereface pointer - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_GENERIC Generic error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record is not available. - * + public: + map vnode_oper_map; + + VnodeMoMgr() { + parent_ck_vtn = NULL; + cntrl_id = NULL; + } + virtual ~VnodeMoMgr() { + if (parent_ck_vtn) delete parent_ck_vtn; + parent_ck_vtn = NULL; + } + + upll_rc_t UpdateOperStatus(ConfigKeyVal *ck_vn, + DalDmlIntf *dmi, + state_notification notification, bool skip, + bool save_to_db); + upll_rc_t CtrlrTypeAndDomainCheck(ConfigKeyVal *ikey, + IpcReqRespHeader *req); + /** + * @Brief compares controller id and domain id before + * updating the value to DB. + * @param[in] ikey ikey contains key and value structure. + * @param[in] okey okey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + */ + virtual upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, + ConfigKeyVal *okey) = 0; + + /** + * @brief Perform Semantic Check to check Different vbridges + * contain same switch-id and vlan-id + * + * @param[in] ikey ConfigKeyVal + * @param[out] dmi DataBase Interface + * + * @retval UPLL_RC_ERR_CFG_SEMANTIC on error + * @retval UPLL_RC_SUCCESS on success + **/ + virtual upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + + /** + * @Brief This API is to update(Add or delete) the controller + * + * @param[in] vtn_name vtn name pointer + * @param[in] ctrlr_dom Controller Domain pointer + * @param[in] op UNC Operation Code + * @param[in] dmi Database Intereface pointer + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_GENERIC Generic error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record is not available. + * + */ + /* upll_rc_t UpdateControllerTableForVtn(uint8_t *vtn_name, + controller_domain *ctrlr_dom, + unc_keytype_operation_t op, + DalDmlIntf *dmi); */ - /* upll_rc_t UpdateControllerTableForVtn(uint8_t *vtn_name, - controller_domain *ctrlr_dom, - unc_keytype_operation_t op, - DalDmlIntf *dmi); -*/ - /** - * @brief Imtimate POM modules of new Controller addition - * - * @param[in] ikey ConfigKeyVal - * @parm[in] ctrlr_dom controller_domain pointer - * @parm[in] dmi DataBase Interface pointer - * @param[in] op type of operation - * - **/ - upll_rc_t IntimatePOMAboutNewController(ConfigKeyVal *ikey, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type); - - template - bool SetOperStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - int notification, - bool skip, - bool save_to_db); - - /* @brief To update oper status of vnode - * - * @param[in] ktype keytype - * @param[in] session_id session identifier - * @param[in] config_id config identifier - * @param[in] dmi Pointer to db connection instance - * - * @retval UPLL_RC_SUCCESS updated successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * - **/ - - upll_rc_t TxUpdateDtState(unc_key_type_t ktype, - uint32_t session_id, - uint32_t config_id, - DalDmlIntf *dmi) ; - protected: - ConfigKeyVal *parent_ck_vtn; - - /** - * @brief Update parent oper status on delete for Transaction commit - * - * @param[in] ikey ConfigKeyVal instance - * @param[in] dmi Database connection parameter - - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - virtual upll_rc_t UpdateParentOperStatus(ConfigKeyVal *ikey, + /** + * @brief Imtimate POM modules of new Controller addition + * + * @param[in] ikey ConfigKeyVal + * @parm[in] ctrlr_dom controller_domain pointer + * @parm[in] dmi DataBase Interface pointer + * @param[in] op type of operation + * + **/ + upll_rc_t IntimatePOMAboutNewController(ConfigKeyVal *ikey, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type); + + template +bool SetOperStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + int notification, + bool skip, + bool save_to_db); + /** + * @brief Enqueues oper status notifications + * + * @param[in] ikey pointer to the configkeyval with + * the changed oper status + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + bool EnqueOperStatusNotification(ConfigKeyVal *ikey, bool oper_change); + + /* @brief To update oper status of vnode + * + * @param[in] ktype keytype + * @param[in] session_id session identifier + * @param[in] config_id config identifier + * @param[in] dmi Pointer to db connection instance + * + * @retval UPLL_RC_SUCCESS updated successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * + **/ + + upll_rc_t TxUpdateDtState(unc_key_type_t ktype, + uint32_t session_id, + uint32_t config_id, + DalDmlIntf *dmi); + + protected: + ConfigKeyVal *parent_ck_vtn; + + /** + * @brief Update parent oper status on delete for Transaction commit + * + * @param[in] ikey ConfigKeyVal instance + * @param[in] dmi Database connection parameter + + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + virtual upll_rc_t UpdateParentOperStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi); - virtual upll_rc_t DeleteMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, + virtual upll_rc_t DeleteMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + upll_rc_t GetVnodeType(const void *key, bool vnode, + unc_key_type_t &keytype, + ConfigKeyVal *&ck_val, DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type); + /** + * @brief set the renamed flag in Vnode + * and create an entry in vnode rename table if VTN is renamed + * + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dt_type specifies the database type + * @param[in] ctrlr_id pointer to the controller name + * @param[in] dmi DalDmlIntf pointer + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf + */ + upll_rc_t SetVnodeRenameFlag(ConfigKeyVal *&ikey, + upll_keytype_datatype_t dt_type, + controller_domain_t *ctrlr_dom, DalDmlIntf *dmi); - - upll_rc_t GetVnodeType(const void *key, bool vnode, - unc_key_type_t &keytype, - ConfigKeyVal *&ck_val, DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type); - /** - * @brief set the renamed flag in Vnode - * and create an entry in vnode rename table if VTN is renamed - * - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dt_type specifies the database type - * @param[in] ctrlr_id pointer to the controller name - * @param[in] dmi DalDmlIntf pointer - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf - */ - upll_rc_t SetVnodeRenameFlag(ConfigKeyVal *&ikey, - upll_keytype_datatype_t dt_type, - controller_domain_t *ctrlr_dom, - DalDmlIntf *dmi); - /** - * @brief Creates a vnode entry in DB after performing pre-requisite checks - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] req IpcReqRespHeader pointer - * @param[in] dmi DalDmlIntf pointer - * @param[in] controller_ids pointer to - * array of controller id pointers - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE is not present in DB - * @retval UPLL_RC_ERR_GENERIC generic error - * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB - */ - upll_rc_t RestoreVnode(ConfigKeyVal *ikey, - IpcReqRespHeader *req, - DalDmlIntf *dmi, - controller_domain_t ctrlr_domain[]); - - /** - * @brief Get the specific vtn_name and vnode_name from ConfigKeyVal - * - * @param[in] ikey ConfigKeyVal pointer - * @param[out] vtn_name vnode vtn name - * @param[out] vnode_name vnode specific name - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to retrieve the values - */ - virtual upll_rc_t GetVnodeName(ConfigKeyVal *ikey, - uint8_t *&vtn_name, - uint8_t *&vnode_name) =0; - - /** - * @brief Checks and Updates the VbrIf interfaces associated with the vlink with the - * information from physical if the VbrIf is part of vExternal - * - * @param[in] dt_type database type - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dmi DalDmlIntf pointer - * @param[in] controller_domain pointer to array of controller and - * domain pointers - * @param[in] req IpcRequestresponseHeader pointer - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf - */ - /* virtual upll_rc_t CheckVlinkVbrIf(upll_keytype_datatype_t dt_type, + /** + * @brief Creates a vnode entry in DB after performing pre-requisite checks + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] req IpcReqRespHeader pointer + * @param[in] dmi DalDmlIntf pointer + * @param[in] controller_ids pointer to + * array of controller id pointers + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE is not present in DB + * @retval UPLL_RC_ERR_GENERIC generic error + * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB + */ + upll_rc_t RestoreVnode(ConfigKeyVal *ikey, + IpcReqRespHeader *req, + DalDmlIntf *dmi, + controller_domain_t ctrlr_domain[], + bool restore_flag); + + /** + * @brief Get the specific vtn_name and vnode_name from ConfigKeyVal + * + * @param[in] ikey ConfigKeyVal pointer + * @param[out] vtn_name vnode vtn name + * @param[out] vnode_name vnode specific name + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to retrieve the values + */ + virtual upll_rc_t GetVnodeName(ConfigKeyVal *ikey, + uint8_t *&vtn_name, + uint8_t *&vnode_name) =0; + + /** + * @brief Checks and Updates the VbrIf interfaces associated with the vlink with the + * information from physical if the VbrIf is part of vExternal + * + * @param[in] dt_type database type + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dmi DalDmlIntf pointer + * @param[in] controller_domain pointer to array of controller and + * domain pointers + * @param[in] req IpcRequestresponseHeader pointer + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf + */ + /* virtual upll_rc_t CheckVlinkVbrIf(upll_keytype_datatype_t dt_type, + ConfigKeyVal *ikey, DalDmlIntf *dmi, + controller_domain *ctrlr_dom);*/ + + /** + * @brief Update the VbrIf ConfigKeyVal with vExternal details fetched from + * physical, if the VbrIf is part of vExternal + * + * @param[in] dt_type database type + * @param[in] ikey pointer to ConfigKeyVal + * @param[in] dmi pointer to DalDmlIntf + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIf + */ + upll_rc_t UpdateVbrIfExternal(upll_keytype_datatype_t dt_type, + ConfigKeyVal *ikey, DalDmlIntf *dmi); + + private: + uint8_t *cntrl_id; + + /** + * @brief Used to create a vnode entry in CANDIDATE DB and is invoked + * through createMo + * + * @param[in] req IpcRequestresponseHeader pointer + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dmi DalDmlIntf pointer + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE parent vtn is not present in DB + * @retval UPLL_RC_ERR_GENERIC generic error + * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Not Supported by controller + * @retval UPLL_RC_ERR_INVALID_OPTION1 Invalid option + */ + virtual upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi, - controller_domain *ctrlr_dom);*/ - - /** - * @brief Update the VbrIf ConfigKeyVal with vExternal details fetched from - * physical, if the VbrIf is part of vExternal - * - * @param[in] dt_type database type - * @param[in] ikey pointer to ConfigKeyVal - * @param[in] dmi pointer to DalDmlIntf - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC Generic error/Failed to update VbrIf - */ - upll_rc_t UpdateVbrIfExternal(upll_keytype_datatype_t dt_type, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - - private: - uint8_t *cntrl_id; - - /** - * @brief Used to create a vnode entry in CANDIDATE DB and is invoked - * through createMo - * - * @param[in] req IpcRequestresponseHeader pointer - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dmi DalDmlIntf pointer - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE parent vtn is not present in DB - * @retval UPLL_RC_ERR_GENERIC generic error - * @retval UPLL_RC_ERR_INSTANCE_EXISTS entry already exists in DB - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Not Supported by controller - * @retval UPLL_RC_ERR_INVALID_OPTION1 Invalid option - */ - virtual upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - virtual upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id); - - /** - * @brief Checks if the parent VTN is already present in the pfc controller - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] req IpcReqRespHeader pointer - * @param[in] ctrlr_dom pointer to the controller and domain name - * @param[in] dmi DalDmlIntf pointer - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC generic error - * @retval UPLL_RC_ERR_INSTANCE_EXISTS VTN already exists in controller - */ - upll_rc_t CheckVtnExistenceOnController(ConfigKeyVal *ikey, - IpcReqRespHeader *req, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi); - - /** - * @brief create entry in Vnode Rename Table, - * with the renamed VTN details fetched from VTN rename Table - * - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dt_type specifies the database type - * @param[in] ctrlr_dom pointer to the controller and domain name - * @param[in] dmi DalDmlIntf pointer - * - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf - */ - upll_rc_t CreateVnodeRenameEntry(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi); - - - /** - * @brief check if any UNC VTN is renamed as this VTN on the given Controller - * - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dt_type specifies the database type - * @param[in] ctrlr_dom pointer to the controller and domain name - * @param[in] dmi DalDmlIntf pointer - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf - */ - upll_rc_t CheckRenamedVtnName(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi); - - /* @brief To control operation on key types - * - * @param[in] header Pointer to IpcResResHeader - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t ControlMo(IpcReqRespHeader *header, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - + bool restore_flag = false); + virtual upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id); + + /** + * @brief Checks if the parent VTN is already present in the pfc controller + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] req IpcReqRespHeader pointer + * @param[in] ctrlr_dom pointer to the controller and domain name + * @param[in] dmi DalDmlIntf pointer + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC generic error + * @retval UPLL_RC_ERR_INSTANCE_EXISTS VTN already exists in controller + */ + upll_rc_t CheckVtnExistenceOnController(ConfigKeyVal *ikey, + IpcReqRespHeader *req, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi); + + /** + * @brief create entry in Vnode Rename Table, + * with the renamed VTN details fetched from VTN rename Table + * + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dt_type specifies the database type + * @param[in] ctrlr_dom pointer to the controller and domain name + * @param[in] dmi DalDmlIntf pointer + * + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf + */ + upll_rc_t CreateVnodeRenameEntry(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi); + + + /** + * @brief check if any UNC VTN is renamed as this VTN on the given Controller + * + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dt_type specifies the database type + * @param[in] ctrlr_dom pointer to the controller and domain name + * @param[in] dmi DalDmlIntf pointer + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf + */ + upll_rc_t CheckRenamedVtnName(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi); + + /* @brief To control operation on key types + * + * @param[in] header Pointer to IpcResResHeader + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t ControlMo(IpcReqRespHeader *header, ConfigKeyVal *ikey, + DalDmlIntf *dmi); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.cc b/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.cc index 7b4dcfa5..16d849fb 100644 --- a/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.cc +++ b/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.cc @@ -1,7 +1,7 @@ /* * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -23,11 +23,11 @@ namespace kt_momgr { using unc::upll::ipc_util::IpcUtil; -#define FLOWLIST_RENAME_FLAG 0x04 // For 3rd Bit -#define VTN_RENAME_FLAG 0x01 // For first Bit -#define VBR_RENAME_FLAG 0x10 // For 2nd Bit -#define VRT_RENAME_FLAG 0x02 // For 2nd Bit -#define NO_VRT_RENAME_FLAG ~VRT_RENAME_FLAG +#define FLOWLIST_RENAME_FLAG 0x04 // For 3rd Bit +#define VTN_RENAME_FLAG 0x01 // For first Bit +#define VBR_RENAME_FLAG 0x10 // For 2nd Bit +#define VRT_RENAME_FLAG 0x02 // For 2nd Bit +#define NO_VRT_RENAME_FLAG ~VRT_RENAME_FLAG #define VLINK_CONFIGURED 0x01 #define PORTMAP_CONFIGURED 0x02 #define VLINK_PORTMAP_CONFIGURED 0x03 @@ -35,7 +35,7 @@ using unc::upll::ipc_util::IpcUtil; #define NO_FLAG_VLINK ~SET_FLAG_VLINK #define SET_FLAG_PORTMAP 0x20 #define SET_FLAG_VLINK_PORTMAP 0x80 -#define SET_FLAG_NO_VLINK_PORTMAP ~SET_FLAG_VLINK_PORTMAP +#define SET_FLAG_NO_VLINK_PORTMAP ~0x9F #define FLOW_RENAME 0x04 #define NO_FLOWLIST_RENAME ~FLOW_RENAME @@ -61,11 +61,11 @@ BindInfo VrtIfFlowFilterEntryMoMgr::vrt_if_flowfilter_entry_bind_info[] = { offsetof(key_user_data_t, ctrlr_id), uud::kDalChar, (kMaxLenCtrlrId + 1) }, { uudst::vrt_if_flowfilter_entry::kDbiDomainId, CK_VAL, - offsetof(key_user_data, domain_id), - uud::kDalChar, (kMaxLenDomainId + 1) }, + offsetof(key_user_data, domain_id), + uud::kDalChar, (kMaxLenDomainId + 1) }, { uudst::vrt_if_flowfilter_entry::kDbiFlowlistName, CFG_VAL, offsetof(val_flowfilter_entry_t, flowlist_name), - uud::kDalChar, (kMaxLenFlowListName + 1) }, + uud::kDalChar, (kMaxLenFlowListName + 1) }, { uudst::vrt_if_flowfilter_entry::kDbiAction, CFG_VAL, offsetof(val_flowfilter_entry_t, action), uud::kDalUint8, 1 }, @@ -177,20 +177,22 @@ BindInfo VrtIfFlowFilterEntryMoMgr::vrt_if_flowfilter_entry_maintbl_bind_info[] VrtIfFlowFilterEntryMoMgr::VrtIfFlowFilterEntryMoMgr() : MoMgrImpl() { UPLL_FUNC_TRACE; - // Rename and ctrlr tables not required for this KT - // setting table indexed for ctrl table and rename table to NULL + // Rename and ctrlr tables not required for this KT + // setting table indexed for ctrl table and rename table to NULL ntable = (MAX_MOMGR_TBLS); table = new Table *[ntable]; - // For Main Table - table[MAINTBL] = new Table(uudst::kDbiVrtIfFlowFilterEntryTbl, - UNC_KT_VRTIF_FLOWFILTER_ENTRY, vrt_if_flowfilter_entry_bind_info, - IpctSt::kIpcStKeyVrtIfFlowfilterEntry, IpctSt::kIpcStValFlowfilterEntry, + // For Main Table + table[MAINTBL] = new Table( + uudst::kDbiVrtIfFlowFilterEntryTbl, + UNC_KT_VRTIF_FLOWFILTER_ENTRY, + vrt_if_flowfilter_entry_bind_info, + IpctSt::kIpcStKeyVrtIfFlowfilterEntry, + IpctSt::kIpcStValFlowfilterEntry, uudst::vrt_if_flowfilter_entry::kDbiVrtIfFlowFilterEntryNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; nchild = 0; - cur_instance_count =0; child = NULL; } @@ -215,7 +217,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, if (UPLL_RC_SUCCESS != result_code) { return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr }; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutCtrlr | kOpInOutFlag}; result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -227,14 +230,18 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, val_flowfilter_entry_t *flowfilter_val = reinterpret_cast (GetVal(okey)); if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - FlowListMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id), req->datatype, UNC_OP_DELETE); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(okey); - return result_code; + uint8_t flag_vlink = 0; + GET_USER_DATA_FLAGS(okey, flag_vlink); + if (flag_vlink & SET_FLAG_VLINK) { + FlowListMoMgr *mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + result_code = mgr->AddFlowListToController( + reinterpret_cast(flowfilter_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), req->datatype, UNC_OP_DELETE); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(okey); + return result_code; + } } } DELETE_IF_NOT_NULL(okey); @@ -245,9 +252,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, } upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -263,14 +271,14 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateAuditConfigStatus( if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } UPLL_LOG_DEBUG("UpdateAuditConfigStatus::Success"); return result_code; @@ -292,73 +300,30 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("Vallidation is Failed %d", result_code); return result_code; } - result_code = ValidateVrtIfValStruct(req, ikey, dmi); + result_code = ValidateVrtIfValStruct(req, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ValidateVrtIfValStruct Failed %d", result_code); return result_code; } - // Capability Check - /* - result_code = ValidateCapability(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key/Attribute not supported by controller"); - // return result_code; - }*/ - // Check if Object exists in Candidate Configuration or not - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi, MAINTBL); - - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } result_code = ValidateAttribute(ikey, dmi, req); if (UPLL_RC_SUCCESS != result_code) return result_code; - // Check and update the flowlist reference count - // if the flowlist object is referred + // Check and update the flowlist reference count + // if the flowlist object is referred FlowListMoMgr *flowlist_mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(ikey)); - if (UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { - // Check Flowlist object exist or not - result_code = flowlist_mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - return result_code; - } - key_flowlist_t *key_flowlist = reinterpret_cast - (okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - flowfilter_val->flowlist_name, - (kMaxLenFlowListName +1)); - result_code = flowlist_mgr->UpdateConfigDB(okey, req->datatype, - UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Given FlowList does not exists %d", result_code); - delete okey; - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Instance Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - delete okey; - UPLL_LOG_DEBUG("Error Accesing CANDIDATE DB (%d)", result_code); - return result_code; - } - delete okey; - okey = NULL; - } - + reinterpret_cast (GetVal(ikey)); result_code = GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed"); - return result_code; + return result_code; } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; result_code = ReadConfigDB(okey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { delete okey; UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -369,7 +334,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, GET_USER_DATA_FLAGS(okey, dbflag); UPLL_LOG_DEBUG("CallingValidatecapanin VRTIF flowfilter "); result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_id)); + reinterpret_cast(ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { delete okey; UPLL_LOG_DEBUG("Key/Attribute not supported by controller"); @@ -381,7 +346,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { if ((SET_FLAG_VLINK & dbflag)) { val_flowfilter_entry_t *temp_ffe_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); UPLL_LOG_DEBUG("flowlist name %s", flowfilter_val->flowlist_name); if (UNC_VF_VALID == flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && UNC_VF_VALID == temp_ffe_val-> @@ -403,10 +368,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } } else if (UNC_VF_VALID == flowfilter_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && - (UNC_VF_INVALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || UNC_VF_VALID_NO_VALUE == - temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && + (UNC_VF_INVALID == temp_ffe_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || UNC_VF_VALID_NO_VALUE == + temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(flowfilter_val->flowlist_name), dmi, reinterpret_cast (ctrlr_id), req->datatype, UNC_OP_CREATE); @@ -416,9 +381,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } } else if (UNC_VF_VALID_NO_VALUE == flowfilter_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && - UNC_VF_VALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && + UNC_VF_VALID == temp_ffe_val-> + valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ffe_val->flowlist_name), dmi, reinterpret_cast(ctrlr_id), req->datatype, UNC_OP_DELETE); @@ -430,9 +395,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, } } } - DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; + DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutNone}; result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, - dmi, &dbop1, MAINTBL); + dmi, &dbop1, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB is Failed %d", result_code); return result_code; @@ -442,422 +407,240 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, } upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedControllerKey( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE - ConfigKeyVal *okey = NULL; + ConfigKeyVal *okey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; - // ConfigKeyVal *temp_key=ikey; - uint8_t rename = 0; + // ConfigKeyVal *temp_key=ikey; /* Get the controller's redirect node(vbridge/vrt) name -start*/ val_flowfilter_entry_t *val_flowfilter_entry = reinterpret_cast (GetVal(ikey)); - + if (NULL == ctrlr_dom) { + UPLL_LOG_DEBUG("ctrlr null"); + return UPLL_RC_ERR_GENERIC; + } if (val_flowfilter_entry) { if ((UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && - (UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && + (UNC_VF_VALID == + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VROUTER }; bool isRedirectVnodeVbridge = false; for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { + i < sizeof(child_key)/sizeof(child_key[0]); i++) { const unc_key_type_t ktype = child_key[i]; MoMgrImpl *mgrvbr = reinterpret_cast( - const_cast(GetMoManager(ktype))); - if (!mgrvbr) { - UPLL_LOG_DEBUG("mgrvbr failed"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = mgrvbr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - // SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (okey->get_key_type() == UNC_KT_VBRIDGE) { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node, (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("redirect node vbr name (%s) (%s)", - reinterpret_cast(okey->get_key())->vbridge_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node); - } else if (okey->get_key_type() == UNC_KT_VROUTER) { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->vrouter_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->redirect_node, (kMaxLenVnodeName + 1)); - - UPLL_LOG_DEBUG("redirect node vrt name (%s) (%s)", - reinterpret_cast(okey->get_key())->vrouter_name, - reinterpret_cast(ikey->get_cfg_val()-> - get_val())->flowlist_name); - } + const_cast(GetMoManager(ktype))); + if (!mgrvbr) { + UPLL_LOG_DEBUG("mgrvbr failed"); + return UPLL_RC_ERR_GENERIC; + } - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); + result_code = mgrvbr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); return result_code; } - } + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); + if (okey->get_key_type() == UNC_KT_VBRIDGE) { + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node, (kMaxLenVnodeName + 1)); + + UPLL_LOG_DEBUG("redirect node vbr name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vbridge_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node); + } else if (okey->get_key_type() == UNC_KT_VROUTER) { + uuu::upll_strncpy(reinterpret_cast + (okey->get_key())->vrouter_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->redirect_node, (kMaxLenVnodeName + 1)); + + UPLL_LOG_DEBUG("redirect node vrt name (%s) (%s)", + reinterpret_cast + (okey->get_key())->vrouter_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->flowlist_name); + } - if (result_code == UPLL_RC_SUCCESS) { - val_rename_vnode *rename_val = NULL; - isRedirectVnodeVbridge = true; - rename_val = reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("rename_val NULL."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + result_code = mgrvbr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return result_code; + } } - uuu::upll_strncpy(reinterpret_cast - (ikey->get_cfg_val()->get_val())->redirect_node, - rename_val->ctrlr_vnode_name, (kMaxLenVtnName + 1)); - } - DELETE_IF_NOT_NULL(okey); - if (isRedirectVnodeVbridge) - break; + if (result_code == UPLL_RC_SUCCESS) { + val_rename_vnode *rename_val = NULL; + isRedirectVnodeVbridge = true; + rename_val = reinterpret_cast (GetVal(okey)); + if (!rename_val) { + UPLL_LOG_DEBUG("rename_val NULL."); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + + uuu::upll_strncpy(reinterpret_cast + (ikey->get_cfg_val()->get_val())->redirect_node, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); + } + DELETE_IF_NOT_NULL(okey); + if (isRedirectVnodeVbridge) + break; } } } /* -end*/ - - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) { - UPLL_LOG_DEBUG("no rename"); - return UPLL_RC_SUCCESS; - } UPLL_LOG_TRACE("%s GetRenamedCtrl vrt_if_ff_entry start", ikey->ToStrAll().c_str()); - if ((rename & VTN_RENAME_FLAG) || (rename & VRT_RENAME_FLAG)) { - MoMgrImpl *VrtMoMgr = static_cast - ((const_cast (GetMoManager(UNC_KT_VROUTER)))); - if (VrtMoMgr == NULL) { - UPLL_LOG_DEBUG("InValid Reference of VRTIF"); - return UPLL_RC_ERR_BAD_REQUEST; - } - result_code = VrtMoMgr->GetChildConfigKey(okey, NULL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return UPLL_RC_ERR_GENERIC; - } - if (ctrlr_dom) - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name)); - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name)); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - /* ctrlr_name */ - result_code = VrtMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // NULL Checks Missing + MoMgrImpl *VrtMoMgr = static_cast + ((const_cast (GetMoManager(UNC_KT_VROUTER)))); + if (VrtMoMgr == NULL) { + UPLL_LOG_DEBUG("InValid Reference of VRTIF"); + return UPLL_RC_ERR_BAD_REQUEST; + } + result_code = VrtMoMgr->GetChildConfigKey(okey, NULL); + if ( result_code != UPLL_RC_SUCCESS ) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return UPLL_RC_ERR_GENERIC; + } + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); + + + strncpy(reinterpret_cast + (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name), + kMaxLenVtnName + 1); + UPLL_LOG_DEBUG("vrt name (%s) (%s)", + reinterpret_cast + (reinterpret_cast + (okey->get_key())->vtn_key.vtn_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vrt_key.vtn_key.vtn_name)); + strncpy(reinterpret_cast + (reinterpret_cast(okey->get_key())->vrouter_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name), + kMaxLenVtnName + 1); + UPLL_LOG_DEBUG("vrt name (%s) (%s)", + reinterpret_cast + (reinterpret_cast(okey->get_key())->vrouter_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vrt_key.vrouter_name)); + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + /* ctrlr_name */ + result_code = VrtMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if (( result_code != UPLL_RC_SUCCESS ) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + if (UPLL_RC_SUCCESS == result_code) { val_rename_vnode *rename_val = - reinterpret_cast (GetVal(okey)); + reinterpret_cast (GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("VRT Name is not Valid."); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn renamed"); uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); UPLL_LOG_DEBUG("vtn rename (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name); - } + reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name); - if (rename & VRT_RENAME_FLAG) { - UPLL_LOG_DEBUG("vrt renamed"); uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); + reinterpret_cast + (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); UPLL_LOG_DEBUG("vrt rename (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name, - rename_val->ctrlr_vnode_name); + reinterpret_cast + (ikey->get_key())-> + flowfilter_key.if_key.vrt_key.vrouter_name, + rename_val->ctrlr_vnode_name); } - DELETE_IF_NOT_NULL(okey); + // flowlist_name + val_flowfilter_entry_t *val_ffe = reinterpret_cast + (GetVal(ikey)); + if (NULL == val_ffe) { + UPLL_LOG_DEBUG("value structure is null"); + return UPLL_RC_SUCCESS; } - // flowlist_name - if (rename & FLOWLIST_RENAME_FLAG) { - UPLL_LOG_DEBUG("flowlist name renamed"); - MoMgrImpl *mgrflist = static_cast - ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); - result_code = mgrflist->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (!GetVal(ikey)) - return UPLL_RC_SUCCESS; - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = mgrflist->ReadConfigDB(okey, dt_type, - UNC_OP_READ, dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - val_rename_flowlist_t *rename_val = - reinterpret_cast (GetVal(okey)); - - if (!rename_val) { - UPLL_LOG_DEBUG("flowlist is not valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); - DELETE_IF_NOT_NULL(okey); + if (strlen(reinterpret_cast + (val_ffe->flowlist_name)) == 0) { + return UPLL_RC_SUCCESS; } - UPLL_LOG_TRACE("%s GetRenamedCtrl vrt_if_ff_entry end", - ikey->ToStrAll().c_str()); - UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); - return UPLL_RC_SUCCESS; -#if 0 - /* vtn renamed */ - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn renamed"); - MoMgrImpl *mgrvtn = static_cast - ((const_cast (GetMoManager(UNC_KT_VTN)))); - mgrvtn->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (ctrlr_dom != NULL) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = mgrvtn->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - val_rename_vtn *rename_val = reinterpret_cast - (GetVal(okey)); // NULL Checks Missing - if (!rename_val) { - UPLL_LOG_DEBUG("Vtn Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - rename_val->new_name, - (kMaxLenVtnName + 1)); - UPLL_LOG_DEBUG("vtn rename (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - rename_val->new_name); - SET_USER_DATA_FLAGS(ikey, rename); + MoMgrImpl *mgrflist = static_cast + ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); + result_code = mgrflist->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist_name, + kMaxLenFlowListName + 1); + UPLL_LOG_DEBUG("flowlist name (%s) (%s)", + reinterpret_cast + (okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist_name); + + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; + /* ctrlr_name */ + result_code = mgrflist->ReadConfigDB(okey, dt_type, + UNC_OP_READ, dbop1, dmi, RENAMETBL); + if (( result_code != UPLL_RC_SUCCESS ) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB fail"); DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } -/*Vrouter_name*/ - if (rename & VRT_RENAME_FLAG) { - UPLL_LOG_DEBUG("vrt renamed"); - okey = NULL; - MoMgrImpl *VrtMoMgr = static_cast - ((const_cast (GetMoManager(UNC_KT_VROUTER)))); - if (VrtMoMgr == NULL) { - UPLL_LOG_DEBUG("InValid Reference of VRTIF"); - return UPLL_RC_ERR_BAD_REQUEST; - } - result_code = VrtMoMgr->GetChildConfigKey(okey, NULL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return UPLL_RC_ERR_GENERIC; - } - if (ctrlr_dom) - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name)); - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name)); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = VrtMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // NULL Checks Missing - val_rename_vnode *rename_val = - reinterpret_cast (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("VRT Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); - UPLL_LOG_DEBUG("vrt rename (%s) (%s)", - reinterpret_cast - (ikey->get_key())->flowfilter_key.if_key.vrt_key.vrouter_name, - rename_val->ctrlr_vnode_name); - DELETE_IF_NOT_NULL(okey); - } - // flowlist_name - if (rename & FLOWLIST_RENAME_FLAG) { - UPLL_LOG_DEBUG("flowlist name renamed"); - MoMgrImpl *mgrflist = static_cast - ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); - result_code = mgrflist->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = mgrflist->ReadConfigDB(okey, dt_type, - UNC_OP_READ, dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + if (UPLL_RC_SUCCESS == result_code) { val_rename_flowlist_t *rename_val = reinterpret_cast (GetVal(okey)); @@ -867,26 +650,25 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedControllerKey( return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy( - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); - DELETE_IF_NOT_NULL(okey); + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist_name, + rename_val->flowlist_newname, + (kMaxLenFlowListName + 1)); } + DELETE_IF_NOT_NULL(okey); UPLL_LOG_TRACE("%s GetRenamedCtrl vrt_if_ff_entry end", ikey->ToStrAll().c_str()); UPLL_LOG_DEBUG("Renamed Controller key is sucessfull."); return UPLL_RC_SUCCESS; -#endif } upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE("%s GetRenamedUncKey vrtifff_entry start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if ((NULL == ikey) || (ctrlr_id == NULL) || (NULL == dmi)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); return UPLL_RC_ERR_GENERIC; @@ -895,29 +677,29 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( ConfigKeyVal *unc_key = NULL; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; MoMgrImpl *VrtIfMoMgr = static_cast - ((const_cast (GetMoManager(UNC_KT_VROUTER)))); + ((const_cast (GetMoManager(UNC_KT_VROUTER)))); if (VrtIfMoMgr == NULL) { UPLL_LOG_DEBUG("VrtMoMgr NULL"); return UPLL_RC_ERR_GENERIC; } val_rename_vnode *rename_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); if (!rename_val) { UPLL_LOG_DEBUG("VrtMoMgr NULL"); return UPLL_RC_ERR_GENERIC; } key_vrt_if_flowfilter_entry_t *ctrlr_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); if (!ctrlr_key) { UPLL_LOG_DEBUG("ctrlr_key NULL"); free(rename_val); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy( - rename_val->ctrlr_vtn_name, - ctrlr_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + rename_val->ctrlr_vtn_name, + ctrlr_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); rename_val->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; uuu::upll_strncpy(rename_val->ctrlr_vnode_name, @@ -942,18 +724,21 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); result_code = VrtIfMoMgr->ReadConfigDB(unc_key, dt_type, - UNC_OP_READ, dbop, dmi, RENAMETBL); + UNC_OP_READ, dbop, dmi, RENAMETBL); if (result_code == UPLL_RC_SUCCESS) { - key_vrt_if_flowfilter_entry_t *key_vrt_if_flowfilter_entry =reinterpret_cast - (unc_key->get_key()); + key_vrt_if_flowfilter_entry_t *key_vrt_if_flowfilter_entry = + reinterpret_cast + (unc_key->get_key()); uuu::upll_strncpy( - ctrlr_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - key_vrt_if_flowfilter_entry->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + ctrlr_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + key_vrt_if_flowfilter_entry-> + flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy( - ctrlr_key->flowfilter_key.if_key.vrt_key.vrouter_name, - key_vrt_if_flowfilter_entry->flowfilter_key.if_key.vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); + ctrlr_key->flowfilter_key.if_key.vrt_key.vrouter_name, + key_vrt_if_flowfilter_entry-> + flowfilter_key.if_key.vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("ReadConfigDB err"); DELETE_IF_NOT_NULL(unc_key); @@ -966,18 +751,18 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( val_flowfilter_entry_t *val_flowfilter_entry = NULL; pfcdrv_val_flowfilter_entry_t *pfc_val_import = NULL; if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { UPLL_LOG_DEBUG("val struct num (%d)", ikey->get_cfg_val()->get_st_num()); pfc_val_import = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + (ikey->get_cfg_val()->get_val()); val_flowfilter_entry = &pfc_val_import->val_ff_entry; UPLL_LOG_DEBUG("FLOWLIST name (%s)", val_flowfilter_entry->flowlist_name); } else if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValFlowfilterEntry)) { + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStValFlowfilterEntry)) { val_flowfilter_entry = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); } if (!val_flowfilter_entry) { @@ -986,71 +771,71 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( } if (UNC_VF_VALID == val_flowfilter_entry - ->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { - val_rename_flowlist_t *rename_flowlist = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); - if (!rename_flowlist) { - UPLL_LOG_DEBUG("rename_flowlist NULL"); - free(rename_flowlist); - return UPLL_RC_ERR_GENERIC; - } + ->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { + val_rename_flowlist_t *rename_flowlist = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist_t))); + if (!rename_flowlist) { + UPLL_LOG_DEBUG("rename_flowlist NULL"); + free(rename_flowlist); + return UPLL_RC_ERR_GENERIC; + } - uuu::upll_strncpy(rename_flowlist->flowlist_newname, - val_flowfilter_entry->flowlist_name, - (kMaxLenFlowListName + 1)); - rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; + uuu::upll_strncpy(rename_flowlist->flowlist_newname, + val_flowfilter_entry->flowlist_name, + (kMaxLenFlowListName + 1)); + rename_flowlist->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; - MoMgrImpl* mgr =static_cast - ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); - if (!mgr) { - UPLL_LOG_DEBUG("mgr failed"); - if (rename_flowlist) free(rename_flowlist); - return UPLL_RC_ERR_GENERIC; - } + MoMgrImpl* mgr =static_cast + ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); + if (!mgr) { + UPLL_LOG_DEBUG("mgr failed"); + if (rename_flowlist) free(rename_flowlist); + return UPLL_RC_ERR_GENERIC; + } - result_code = mgr->GetChildConfigKey(unc_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - free(rename_flowlist); - mgr = NULL; - return result_code; - } - if (!unc_key) { - UPLL_LOG_DEBUG("unc_key NULL"); - free(rename_flowlist); - mgr = NULL; - return result_code; - } - SET_USER_DATA_CTRLR(unc_key, ctrlr_id); - unc_key->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, rename_flowlist); - result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code == UPLL_RC_SUCCESS) { - key_flowlist_t *key_flowlist = reinterpret_cast - (unc_key->get_key()); - uuu::upll_strncpy(val_flowfilter_entry->flowlist_name, - key_flowlist->flowlist_name, - (kMaxLenFlowListName + 1)); - } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB err"); + result_code = mgr->GetChildConfigKey(unc_key, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + free(rename_flowlist); + mgr = NULL; + return result_code; + } + if (!unc_key) { + UPLL_LOG_DEBUG("unc_key NULL"); + free(rename_flowlist); + mgr = NULL; + return result_code; + } + SET_USER_DATA_CTRLR(unc_key, ctrlr_id); + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameFlowlist, rename_flowlist); + result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if (result_code == UPLL_RC_SUCCESS) { + key_flowlist_t *key_flowlist = reinterpret_cast + (unc_key->get_key()); + uuu::upll_strncpy(val_flowfilter_entry->flowlist_name, + key_flowlist->flowlist_name, + (kMaxLenFlowListName + 1)); + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB err"); + DELETE_IF_NOT_NULL(unc_key); + mgr = NULL; + return result_code; + } + UPLL_LOG_DEBUG("Key is filled with UncKey Successfully %d", result_code); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; - return result_code; - } - UPLL_LOG_DEBUG("Key is filled with UncKey Successfully %d", result_code); - DELETE_IF_NOT_NULL(unc_key); - mgr = NULL; } if ((UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE]) && (UNC_VF_VALID == - val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { + val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE])) { unc_key_type_t child_key[]= { UNC_KT_VBRIDGE, UNC_KT_VROUTER }; bool isRedirectVnodeVbridge = false; for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { + i < sizeof(child_key)/sizeof(child_key[0]); i++) { const unc_key_type_t ktype = child_key[i]; MoMgrImpl *mgrvbr = reinterpret_cast( const_cast(GetMoManager(ktype))); @@ -1059,15 +844,15 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( return UPLL_RC_ERR_GENERIC; } val_rename_vnode *rename_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); if (!rename_val) { UPLL_LOG_TRACE("rename_val NULL"); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_val->ctrlr_vnode_name, - val_flowfilter_entry->redirect_node, - (kMaxLenVnodeName + 1)); + val_flowfilter_entry->redirect_node, + (kMaxLenVnodeName + 1)); rename_val->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; result_code = mgrvbr->GetChildConfigKey(unc_key, NULL); @@ -1079,10 +864,14 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( } SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); - result_code = mgrvbr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + result_code = mgrvbr->ReadConfigDB(unc_key, + dt_type, + UNC_OP_READ, + dbop, + dmi, + RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && - (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(unc_key); mgrvbr = NULL; @@ -1094,13 +883,13 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( isRedirectVnodeVbridge = true; key_vbr *vbr_key = reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy(val_flowfilter_entry->redirect_node, - vbr_key->vbridge_name, - (kMaxLenVnodeName + 1)); + vbr_key->vbridge_name, + (kMaxLenVnodeName + 1)); } else if (unc_key->get_key_type() == UNC_KT_VROUTER) { key_vrt *vrt_key = reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy(val_flowfilter_entry->redirect_node, - vrt_key->vrouter_name, - (kMaxLenVnodeName + 1)); + vrt_key->vrouter_name, + (kMaxLenVnodeName + 1)); } } DELETE_IF_NOT_NULL(unc_key); @@ -1114,7 +903,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetRenamedUncKey( if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifff_entry end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); return result_code; } @@ -1128,7 +917,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetChildConfigKey( if (parent_key == NULL) { vrt_if_ffe_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt_if_flowfilter_entry_t))); - // If no direction is specified , 0xFE is filled to bind output direction + // If no direction is specified , 0xFE is filled to bind output direction vrt_if_ffe_key->flowfilter_key.direction = 0xFE; okey = new ConfigKeyVal(UNC_KT_VRTIF_FLOWFILTER_ENTRY, IpctSt::kIpcStKeyVrtIfFlowfilterEntry, @@ -1151,7 +940,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetChildConfigKey( } else { vrt_if_ffe_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt_if_flowfilter_entry_t))); - // If no direction is specified , 0xFE is filled to bind output direction + // If no direction is specified , 0xFE is filled to bind output direction vrt_if_ffe_key->flowfilter_key.direction = 0xFE; } switch (parent_key->get_key_type()) { @@ -1260,9 +1049,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetChildConfigKey( } upll_rc_t VrtIfFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckval = NULL; @@ -1277,7 +1066,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -1289,26 +1078,26 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, while (NULL != ckval) { val_flowfilter_entry_t* val = reinterpret_cast - (GetVal(ckval)); + (GetVal(ckval)); if (val->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { - if (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == - UNC_VF_VALID) { - result_code = VerifyRedirectDestination(ckval, dmi, UPLL_DT_IMPORT); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ckval); - UPLL_LOG_DEBUG("redirect-destination node/interface doesn't exists"); - return UPLL_RC_ERR_MERGE_CONFLICT; - } + if (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == + UNC_VF_VALID) { + result_code = VerifyRedirectDestination(ckval, dmi, UPLL_DT_IMPORT); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ckval); + UPLL_LOG_DEBUG("redirect-destination node/interface doesn't exists"); + return UPLL_RC_ERR_MERGE_CONFLICT; } + } } ckval = ckval->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(ckval); MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VRTIF_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VRTIF_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr param"); return UPLL_RC_ERR_GENERIC; @@ -1332,8 +1121,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } if (req->get_key_type() != UNC_KT_VRTIF_FLOWFILTER_ENTRY) { - UPLL_LOG_DEBUG(" DupConfigKeyval Failed."); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG(" DupConfigKeyval Failed."); + return UPLL_RC_ERR_GENERIC; } ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); if (tmp) { @@ -1356,13 +1145,13 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, key_vrt_if_flowfilter_entry_t *ikey = reinterpret_cast(tkey); key_vrt_if_flowfilter_entry_t *key_vrt_if_ffe = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vrt_if_flowfilter_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vrt_if_flowfilter_entry_t))); memcpy(key_vrt_if_ffe, ikey, sizeof(key_vrt_if_flowfilter_entry_t)); okey = new ConfigKeyVal(UNC_KT_VRTIF_FLOWFILTER_ENTRY, - IpctSt::kIpcStKeyVrtIfFlowfilterEntry, - key_vrt_if_ffe, tmp1); + IpctSt::kIpcStKeyVrtIfFlowfilterEntry, + key_vrt_if_ffe, tmp1); if (okey) { SET_USER_DATA(okey, req); } @@ -1387,7 +1176,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, memset(&ctrlr_dom, 0, sizeof(controller_domain)); switch (req->datatype) { - // Retrieving config information + // Retrieving config information case UPLL_DT_CANDIDATE: case UPLL_DT_RUNNING: case UPLL_DT_STARTUP: @@ -1398,7 +1187,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG(" Read request failed result(%d)", result_code); return result_code; } - // Retrieving state information + // Retrieving state information } else if ((req->datatype == UPLL_DT_STATE) && (req->option1 == UNC_OPT1_DETAIL)&& (req->option2 == UNC_OPT2_NONE)) { @@ -1423,11 +1212,12 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - - //Added CapaCheck + + // Added CapaCheck UPLL_LOG_DEBUG("Calling ValidateCapability From ReadMo "); result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); DELETE_IF_NOT_NULL(dup_key); @@ -1435,7 +1225,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, return result_code; } - // 1.Getting renamed name if renamed + // 1.Getting renamed name if renamed result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -1470,7 +1260,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, l_key->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValFlowfilterEntry, pfc_val)); - // 2.send request to driver + // 2.send request to driver IpcResponse ipc_resp; memset(&ipc_resp, 0, sizeof(IpcResponse)); IpcRequest ipc_req; @@ -1482,10 +1272,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, ipc_req.header.datatype = req->datatype; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, - &ipc_req, true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, + &ipc_req, true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -1497,8 +1287,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadMo(IpcReqRespHeader *req, if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(ipc_req.ckv_data); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); DELETE_IF_NOT_NULL(dup_key); @@ -1556,7 +1346,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, memset(&ctrlr_dom, 0, sizeof(controller_domain)); switch (req->datatype) { - // Retrieving config information + // Retrieving config information case UPLL_DT_CANDIDATE: case UPLL_DT_RUNNING: case UPLL_DT_STARTUP: @@ -1582,7 +1372,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, result_code = DupConfigKeyVal(dup_key, tctrl_key, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" DupConfigKeyVal failed for dup_key%d ", result_code); + UPLL_LOG_DEBUG(" DupConfigKeyVal failed for dup_key%d ", + result_code); return result_code; } @@ -1601,15 +1392,16 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } GET_USER_DATA_CTRLR_DOMAIN(dup_key, ctrlr_dom); SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); - //Added CapaCheck + // Added CapaCheck result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); return result_code; } - // 1.Getting renamed name if renamed + // 1.Getting renamed name if renamed result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -1652,7 +1444,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, l_key->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValFlowfilterEntry, pfc_val)); - // 2.send request to driver + // 2.send request to driver IpcResponse ipc_resp; memset(&ipc_resp, 0, sizeof(IpcResponse)); IpcRequest ipc_req; @@ -1674,10 +1466,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, (tmp_key->get_key())->sequence_num; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, - &ipc_req, true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, + &ipc_req, true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -1685,7 +1477,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", + UPLL_LOG_DEBUG("Driver response for Key %d controller" + "%s result %d", l_key->get_key_type(), ctrlr_dom.ctrlr, ipc_resp.header.result_code); return ipc_resp.header.result_code; @@ -1693,7 +1486,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, result_code = ConstructReadDetailResponse(tmp_key, ipc_resp.ckv_data, - &okey); + &okey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ConstructReadDetailResponse error code (%d)", result_code); @@ -1716,17 +1509,17 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ReadSiblingMo(IpcReqRespHeader *req, #if 0 upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateConfigStatus( - ConfigKeyVal *key, unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { + ConfigKeyVal *key, unc_keytype_operation_t op, uint32_t driver_result, + ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *vrtif_ff_entry_val = NULL; unc_keytype_configstatus_t cs_status = - (driver_result == 0) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + (driver_result == 0) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; vrtif_ff_entry_val = reinterpret_cast - (GetVal(key)); + (GetVal(key)); if (vrtif_ff_entry_val == NULL) { UPLL_LOG_DEBUG("vrtif_ff_entry_val is Null"); @@ -1735,34 +1528,34 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateConfigStatus( if (op == UNC_OP_CREATE) { if (vrtif_ff_entry_val->cs_row_status != UNC_CS_NOT_SUPPORTED) - vrtif_ff_entry_val->cs_row_status = cs_status; - for (unsigned int loop = 0; - loop < (sizeof(vrtif_ff_entry_val->valid)/ - sizeof(vrtif_ff_entry_val->valid[0])); ++loop) { - if ((UNC_VF_VALID == vrtif_ff_entry_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vrtif_ff_entry_val->valid[loop])) - if (vrtif_ff_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) - vrtif_ff_entry_val->cs_attr[loop] = - vrtif_ff_entry_val->cs_row_status; - } + vrtif_ff_entry_val->cs_row_status = cs_status; + for (unsigned int loop = 0; + loop < (sizeof(vrtif_ff_entry_val->valid)/ + sizeof(vrtif_ff_entry_val->valid[0])); ++loop) { + if ((UNC_VF_VALID == vrtif_ff_entry_val->valid[loop]) + || (UNC_VF_VALID_NO_VALUE == vrtif_ff_entry_val->valid[loop])) + if (vrtif_ff_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) + vrtif_ff_entry_val->cs_attr[loop] = + vrtif_ff_entry_val->cs_row_status; + } } else if (op == UNC_OP_UPDATE) { void *fle_val1 = GetVal(key); void *fle_val2 = GetVal(upd_key); CompareValidValue(fle_val1, fle_val2, true); for (unsigned int loop = 0; loop < sizeof(vrtif_ff_entry_val->valid)/ - sizeof(vrtif_ff_entry_val->valid[0]); ++loop) { + sizeof(vrtif_ff_entry_val->valid[0]); ++loop) { if (vrtif_ff_entry_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) - if ((UNC_VF_VALID == vrtif_ff_entry_val->valid[loop]) - ||(UNC_VF_VALID_NO_VALUE == vrtif_ff_entry_val->valid[loop])) - // if (CompareVal(vrtif_ff_entry_val, upd_key->GetVal())) - vrtif_ff_entry_val->cs_attr[loop] = - vrtif_ff_entry_val->cs_row_status; - } - } else { - UPLL_LOG_DEBUG("Operation Not Supported."); - return UPLL_RC_ERR_GENERIC; + if ((UNC_VF_VALID == vrtif_ff_entry_val->valid[loop]) + ||(UNC_VF_VALID_NO_VALUE == vrtif_ff_entry_val->valid[loop])) + // if (CompareVal(vrtif_ff_entry_val, upd_key->GetVal())) + vrtif_ff_entry_val->cs_attr[loop] = + vrtif_ff_entry_val->cs_row_status; } + } else { + UPLL_LOG_DEBUG("Operation Not Supported."); + return UPLL_RC_ERR_GENERIC; + } UPLL_LOG_DEBUG("UpdateConfigStatus Success"); return result_code; } @@ -1790,8 +1583,9 @@ bool VrtIfFlowFilterEntryMoMgr::IsValidKey(void *key, break; case uudst::vrt_if_flowfilter_entry::kDbiVrtName: ret_val = ValidateKey(reinterpret_cast - (ff_key->flowfilter_key.if_key.vrt_key.vrouter_name), - kMinLenVnodeName, kMaxLenVnodeName); + (ff_key-> + flowfilter_key.if_key.vrt_key.vrouter_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("VRT Name is not valid(%d)", ret_val); return false; @@ -1808,12 +1602,12 @@ bool VrtIfFlowFilterEntryMoMgr::IsValidKey(void *key, break; case uudst::vrt_if_flowfilter_entry::kDbiInputDirection: if (ff_key->flowfilter_key.direction == 0xFE) { - // if operation is read sibling begin or - // read sibling count return false - // for output binding + // if operation is read sibling begin or + // read sibling count return false + // for output binding ff_key->flowfilter_key.direction = 0; return false; - } + } if (!ValidateNumericRange(ff_key->flowfilter_key.direction, (uint8_t) UPLL_FLOWFILTER_DIR_IN, (uint8_t) UPLL_FLOWFILTER_DIR_OUT, @@ -1822,7 +1616,7 @@ bool VrtIfFlowFilterEntryMoMgr::IsValidKey(void *key, return false; } break; - case uudst::vrt_if_flowfilter_entry::kDbiSequenceNum: + case uudst::vrt_if_flowfilter_entry::kDbiSequenceNum: if (!ValidateNumericRange(ff_key->sequence_num, kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, @@ -1840,15 +1634,21 @@ bool VrtIfFlowFilterEntryMoMgr::IsValidKey(void *key, } -upll_rc_t VrtIfFlowFilterEntryMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VrtIfFlowFilterEntryMoMgr::IsReferenced( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey) return UPLL_RC_ERR_BAD_REQUEST; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the object existence - result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_READ, dmi, &dbop, MAINTBL); + // Check the object existence + result_code = UpdateConfigDB(ikey, + dt_type, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); return result_code; } @@ -1864,107 +1664,66 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("input key is null"); return UPLL_RC_ERR_GENERIC; } - + MoMgrImpl *mgr = NULL; key_vrt_if_flowfilter_entry_t *key_vrtif_ffe = reinterpret_cast(ikey->get_key()); - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VRTIF_FLOWFILTER))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed - %d", result_code); - return result_code; - } - - key_vrt_if_flowfilter_t *vrtif_ff_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vrtif_ff_key->if_key.vrt_key.vtn_key.vtn_name, - key_vrtif_ffe->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vrtif_ff_key->if_key.vrt_key.vrouter_name, - key_vrtif_ffe->flowfilter_key.if_key.vrt_key.vrouter_name, - kMaxLenVnodeName + 1); - - uuu::upll_strncpy(vrtif_ff_key->if_key.if_name, - key_vrtif_ffe->flowfilter_key.if_key.if_name, - kMaxLenInterfaceName + 1); - - vrtif_ff_key->direction = key_vrtif_ffe->flowfilter_key.direction; - - /* Checks the given vrt_if_flowfilter exists in DB or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VRT_IF_FLOWFILTER key does not exists"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; /* read val_flowfilter_entry from ikey*/ val_flowfilter_entry_t *val_flowfilter_entry = - static_cast( - ikey->get_cfg_val()->get_val()); + static_cast( + ikey->get_cfg_val()->get_val()); if (val_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] - == UNC_VF_VALID) { - /* validate flowlist_name in val_flowfilter_entry exists in FLOWLIST table*/ - mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_FLOWLIST))); + == UNC_VF_VALID) { + /* validate flowlist_name in val_flowfilter_entry exists in FLOWLIST table*/ + mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_FLOWLIST))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("Unable to get FLOWLIST object"); - return UPLL_RC_ERR_GENERIC; - } + if (NULL == mgr) { + UPLL_LOG_DEBUG("Unable to get FLOWLIST object"); + return UPLL_RC_ERR_GENERIC; + } - /** allocate memory for FLOWLIST key_struct */ - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for FLOWLIST key struct - %d", - result_code); - return result_code; - } + /** allocate memory for FLOWLIST key_struct */ + result_code = mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Memory allocation failed for FLOWLIST key struct - %d", + result_code); + return result_code; + } - /** fill key_flowlist_t from val_flowfilter_entry*/ - key_flowlist_t *key_flowlist = static_cast( - okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - val_flowfilter_entry->flowlist_name, - kMaxLenFlowListName+1); + /** fill key_flowlist_t from val_flowfilter_entry*/ + key_flowlist_t *key_flowlist = static_cast( + okey->get_key()); + uuu::upll_strncpy(key_flowlist->flowlist_name, + val_flowfilter_entry->flowlist_name, + kMaxLenFlowListName+1); - UPLL_LOG_TRACE("Flowlist name in val_flowfilter_entry %s", - key_flowlist->flowlist_name); + UPLL_LOG_TRACE("Flowlist name in val_flowfilter_entry %s", + key_flowlist->flowlist_name); - /* Check flowlist_name exists in table*/ - result_code = mgr->UpdateConfigDB(okey, req->datatype, - UNC_OP_READ, dmi, MAINTBL); + /* Check flowlist_name exists in table*/ + result_code = mgr->UpdateConfigDB(okey, req->datatype, + UNC_OP_READ, dmi, MAINTBL); + + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_DEBUG("Flowlist name in val_flowfilter_entry does not exists" + "in FLOWLIST table"); + delete okey; + okey = NULL; + return UPLL_RC_ERR_CFG_SEMANTIC; + } else { + result_code = UPLL_RC_SUCCESS; + } - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("Flowlist name in val_flowfilter_entry does not exists" - "in FLOWLIST table"); delete okey; okey = NULL; - return UPLL_RC_ERR_CFG_SEMANTIC; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; } if (val_flowfilter_entry->valid[UPLL_IDX_NWM_NAME_FFE] - == UNC_VF_VALID) { - // validate nwm_name in KT_VBR_NWMONITOR table + == UNC_VF_VALID) { + // validate nwm_name in KT_VBR_NWMONITOR table mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); + (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); if (NULL == mgr) { UPLL_LOG_DEBUG("Unable to get KT_VBR_NWMONITOR object"); @@ -1975,30 +1734,31 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Memory allocation failed for key_nwm struct - %d", - result_code); + result_code); return result_code; } /** fill key_nwm from key/val VRTIF_FLOWFILTER_ENTRY structs*/ key_nwm_t *key_nwm = static_cast( - okey->get_key()); + okey->get_key()); uuu::upll_strncpy(key_nwm->nwmonitor_name, - val_flowfilter_entry->nwm_name, - kMaxLenVnodeName+1); + val_flowfilter_entry->nwm_name, + kMaxLenVnodeName+1); uuu::upll_strncpy(key_nwm->vbr_key.vtn_key.vtn_name, - key_vrtif_ffe->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - kMaxLenVtnName+1); + key_vrtif_ffe-> + flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + kMaxLenVtnName+1); /* Check nwm_name exists in table*/ DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; result_code = mgr->ReadConfigDB(okey, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("NWM name in val_flowfilter_entry does not exists" - "in KT_VBR_NWMONITOR table"); + "in KT_VBR_NWMONITOR table"); delete okey; okey = NULL; return UPLL_RC_ERR_CFG_SEMANTIC; @@ -2008,12 +1768,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, delete okey; okey = NULL; - } // nwm_name is valid - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } + } // nwm_name is valid UPLL_LOG_DEBUG("ValidateAttribute Successfull."); return result_code; } @@ -2022,7 +1777,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, MoMgrTables tbl) { UPLL_FUNC_TRACE; - void *val; // *ck_nxtval; + void *val; // *ck_nxtval; if (ck_val != NULL) { UPLL_LOG_DEBUG("ck_val Consist the Value"); return UPLL_RC_ERR_GENERIC; @@ -2041,9 +1796,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::AllocVal(ConfigVal *&ck_val, } upll_rc_t VrtIfFlowFilterEntryMoMgr::GetValid(void *val, uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (val == NULL) { UPLL_LOG_DEBUG("Memory is not Allocated"); @@ -2099,7 +1854,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetValid(void *val, uint64_t indx, return UPLL_RC_SUCCESS; } upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *key) { + ConfigKeyVal *key) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; @@ -2114,35 +1869,36 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } if (key->get_st_num() != IpctSt::kIpcStKeyVrtIfFlowfilterEntry) { - UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", - key->get_st_num()); + UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); - return UPLL_RC_ERR_INVALID_OPTION1; - } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); + return UPLL_RC_ERR_INVALID_OPTION1; + } if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -2158,7 +1914,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, } rt_code = ValidateVrtIfFlowfilterEntryKey(key_vrt_if_flowfilter_entry, - req->operation); + req->operation); if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" key_vrtif_flowfilter syntax validation failed :" @@ -2170,9 +1926,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, /* validate value structure*/ if (!key->get_cfg_val()) { if ((req->operation == UNC_OP_UPDATE) || - (req->operation == UNC_OP_CREATE)) { - UPLL_LOG_DEBUG("val structure is mandatory"); - return UPLL_RC_ERR_BAD_REQUEST; + (req->operation == UNC_OP_CREATE)) { + UPLL_LOG_DEBUG("val structure is mandatory"); + return UPLL_RC_ERR_BAD_REQUEST; } else { UPLL_LOG_TRACE("val structure is optional"); return UPLL_RC_SUCCESS; @@ -2180,8 +1936,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (key->get_cfg_val()->get_st_num() != - IpctSt::kIpcStValFlowfilterEntry) { - UPLL_LOG_DEBUG("Invalid val structure received. struct num - %d", + IpctSt::kIpcStValFlowfilterEntry) { + UPLL_LOG_DEBUG("Invalid val structure received. struct num - %d", (key->get_cfg_val())->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } @@ -2195,95 +1951,25 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } - // UpdateMo invokes val structure validate function - // as UPDATE operation requires dmi + // UpdateMo invokes val structure validate function + // as UPDATE operation requires dmi if (req->operation == UNC_OP_UPDATE) return UPLL_RC_SUCCESS; return VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( - val_flowfilter_entry, req->operation); + val_flowfilter_entry, req->operation); } upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateVrtIfValStruct( IpcReqRespHeader *req, - ConfigKeyVal *key, - DalDmlIntf *dmi) { - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + ConfigKeyVal *key) { val_flowfilter_entry_t *val_flowfilter_entry = reinterpret_cast( key->get_cfg_val()->get_val()); - - bool db_action_valid = false; - bool db_action_redirect = false; - - if ((val_flowfilter_entry->valid[UPLL_IDX_ACTION_FFE] - == UNC_VF_INVALID) && (req->operation == UNC_OP_UPDATE)) { - /** Read key struct from ConfigKeyVal argument*/ - key_vrt_if_flowfilter_entry_t *key_vrt_if_ffe = - static_cast(key->get_key()); - - /** Check whether Action configured or not from DB */ - ConfigKeyVal *okey = NULL; - - result_code = GetChildConfigKey(okey, NULL); - - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("okey memory allocation failed- %d", result_code); - return result_code; - } - - key_vrt_if_flowfilter_entry_t *vrt_if_ffe_key = - reinterpret_cast(okey->get_key()); - - /* copy key structure into okey key struct */ - uuu::upll_strncpy( - vrt_if_ffe_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - key_vrt_if_ffe->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); - uuu::upll_strncpy( - vrt_if_ffe_key->flowfilter_key.if_key.vrt_key.vrouter_name, - key_vrt_if_ffe->flowfilter_key.if_key.vrt_key.vrouter_name, - (kMaxLenVnodeName+1)); - uuu::upll_strncpy(vrt_if_ffe_key->flowfilter_key.if_key.if_name, - key_vrt_if_ffe->flowfilter_key.if_key.if_name, - (kMaxLenInterfaceName+1)); - vrt_if_ffe_key->flowfilter_key.direction = - key_vrt_if_ffe->flowfilter_key.direction; - vrt_if_ffe_key->sequence_num = key_vrt_if_ffe->sequence_num; - - /* Check the action field configured in VBR_FLOWFILTER_ENTRY table*/ - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, - dbop, dmi, MAINTBL); - - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB is failed for VRT_IF_FLOWFILTER_ENTRY"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - - /* check the action value from the DB data */ - val_flowfilter_entry_t *val_ffe = - reinterpret_cast( - okey->get_cfg_val()->get_val()); - - if (val_ffe->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { - db_action_valid = true; - if (val_ffe->action == UPLL_FLOWFILTER_ACT_REDIRECT) { - db_action_redirect = true; - } - } - - delete okey; - okey = NULL; - } - /** validate val_flowfilter_entry value structure */ return VbrFlowFilterEntryMoMgr::ValidateFlowfilterEntryValue( - val_flowfilter_entry, req->operation, - db_action_valid, db_action_redirect); + val_flowfilter_entry, req->operation); } upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateVrtIfFlowfilterEntryKey( @@ -2337,9 +2023,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateVrtIfFlowfilterEntryKey( return UPLL_RC_SUCCESS; } -upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name) { +upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateCapability( + IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char* ctrlr_name) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; @@ -2353,7 +2040,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, ctrlr_name = static_cast(ikey->get_user_data()); UPLL_LOG_TRACE("dt_type : (%d)" - "operation : (%d)", req->datatype, req->operation); + "operation : (%d)", req->datatype, req->operation); bool ret_code = false; uint32_t instance_count = 0; @@ -2362,35 +2049,30 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { - UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetCreateCapability Operation %d ", + req->operation); ret_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &instance_count, &max_attrs, &attrs); - if (ret_code && cur_instance_count >= instance_count && - cur_instance_count !=0 && instance_count != 0) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } - - + &instance_count, &max_attrs, &attrs); break; } case UNC_OP_UPDATE: { - UPLL_LOG_TRACE("Calling GetUpdateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetUpdateCapability Operation %d ", + req->operation); ret_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } default: { if (req->datatype == UPLL_DT_STATE) { - UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", + req->operation); ret_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), &max_attrs, &attrs); } else { - UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", + req->operation); ret_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } break; } @@ -2398,27 +2080,27 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ret_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s)", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_flowfilter_entry_t *val_flowfilter_entry = reinterpret_cast(GetVal(ikey)); if (max_attrs > 0) { - return VbrFlowFilterEntryMoMgr::ValFlowFilterEntryAttributeSupportCheck( - val_flowfilter_entry, attrs); + return VbrFlowFilterEntryMoMgr::ValFlowFilterEntryAttributeSupportCheck( + val_flowfilter_entry, attrs); } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR ; + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } bool VrtIfFlowFilterEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl ) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl ) { /* Main Table only update */ if (MAINTBL == tbl) { nattr = sizeof(vrt_if_flowfilter_entry_maintbl_bind_info)/ - sizeof(vrt_if_flowfilter_entry_maintbl_bind_info[0]); + sizeof(vrt_if_flowfilter_entry_maintbl_bind_info[0]); binfo = vrt_if_flowfilter_entry_maintbl_bind_info; } @@ -2426,7 +2108,7 @@ bool VrtIfFlowFilterEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, return PFC_TRUE; } upll_rc_t VrtIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2436,11 +2118,11 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, } key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vrt_if_flowfilter_entry_t *key_vrt_if = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt_if_flowfilter_entry_t))); - // if (UNC_KT_VRTIF_FLOWFILTER_ENTRY == ikey->get_key_type()) { + // if (UNC_KT_VRTIF_FLOWFILTER_ENTRY == ikey->get_key_type()) { if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { UPLL_LOG_DEBUG("String Length not Valid to Perform the Operation"); free(key_vrt_if); @@ -2472,8 +2154,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_vrt_if->flowfilter_key.direction = 0xFE; okey = new ConfigKeyVal(UNC_KT_VRTIF_FLOWFILTER_ENTRY, IpctSt:: - kIpcStKeyVrtIfFlowfilterEntry, key_vrt_if, NULL); - + kIpcStKeyVrtIfFlowfilterEntry, key_vrt_if, NULL); + if (!okey) { free(key_vrt_if); return UPLL_RC_ERR_GENERIC; @@ -2481,10 +2163,11 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; @@ -2498,9 +2181,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, key_rename_vnode_info_t *key_rename = reinterpret_cast(ikey->get_key()); - //copy the olf flowlist name to val_flowfilter_entry - val_flowfilter_entry_t *val_ff_entry = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + // copy the olf flowlist name to val_flowfilter_entry + val_flowfilter_entry_t *val_ff_entry = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); if (!val_ff_entry) return UPLL_RC_ERR_GENERIC; @@ -2510,13 +2194,13 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(val_ff_entry->flowlist_name, - key_rename->old_flowlist_name, - (kMaxLenFlowListName + 1)); + uuu::upll_strncpy(val_ff_entry->flowlist_name, + key_rename->old_flowlist_name, + (kMaxLenFlowListName + 1)); val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("valid and flowlist name (%d) (%s)", - val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry->flowlist_name); + val_ff_entry->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry->flowlist_name); } else if ((ikey->get_key_type() == UNC_KT_VBRIDGE) || (ikey->get_key_type() == UNC_KT_VROUTER)) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { @@ -2525,8 +2209,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(val_ff_entry->redirect_node, - key_rename->old_unc_vnode_name, - sizeof(val_ff_entry->redirect_node)); + key_rename->old_unc_vnode_name, + sizeof(val_ff_entry->redirect_node)); val_ff_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("valid and vbridge name (%d) (%s)", val_ff_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE], @@ -2535,21 +2219,24 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, result_code = GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - free(val_ff_entry); - return result_code; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + free(val_ff_entry); + return result_code; } if (!okey) { free(val_ff_entry); return UPLL_RC_ERR_GENERIC; } - okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry)); + okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + val_ff_entry)); - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; - // Read the record of key structure and old flowlist name in maintbl - result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, + // Read the record of key structure and old flowlist name in maintbl + result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG(" ReadConfigDB failed (%d)", result_code); @@ -2566,50 +2253,51 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, if (!kval) { return UPLL_RC_ERR_GENERIC; } - // Copy the new flowlist name in val_flowfilter_entry - val_flowfilter_entry_t *val_ff_entry_new = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + // Copy the new flowlist name in val_flowfilter_entry + val_flowfilter_entry_t *val_ff_entry_new = reinterpret_cast + + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); if (!val_ff_entry_new) return UPLL_RC_ERR_GENERIC; - if (ikey->get_key_type() == UNC_KT_FLOWLIST) { - // New Name NuLL CHECK - if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { - if (val_ff_entry_new) free(val_ff_entry_new); - UPLL_LOG_DEBUG("new_flowlist_name NULL"); - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - // Copy the new flowlist_name into val_flowfilter_entry - uuu::upll_strncpy(val_ff_entry_new->flowlist_name, - key_rename->new_flowlist_name, - (kMaxLenFlowListName + 1)); - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; - UPLL_LOG_DEBUG("flowlist name and valid (%d) (%s)", - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry_new->flowlist_name); - } else if ((ikey->get_key_type() == UNC_KT_VBRIDGE) || - (ikey->get_key_type() == UNC_KT_VROUTER)) { - // New Name NuLL CHECK - if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { - UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); - if (val_ff_entry_new) free(val_ff_entry_new); - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // Copy the new vbridge name into val_flowfilter_entry - uuu::upll_strncpy(val_ff_entry_new->redirect_node, - key_rename->new_unc_vnode_name, - sizeof(val_ff_entry_new->redirect_node)); - val_ff_entry_new->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; - UPLL_LOG_DEBUG("vbridge name and valid (%d) (%s)", - val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], - val_ff_entry_new->redirect_node); - + if (ikey->get_key_type() == UNC_KT_FLOWLIST) { + // New Name NuLL CHECK + if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { + if (val_ff_entry_new) free(val_ff_entry_new); + UPLL_LOG_DEBUG("new_flowlist_name NULL"); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + + // Copy the new flowlist_name into val_flowfilter_entry + uuu::upll_strncpy(val_ff_entry_new->flowlist_name, + key_rename->new_flowlist_name, + (kMaxLenFlowListName + 1)); + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_VALID; + UPLL_LOG_DEBUG("flowlist name and valid (%d) (%s)", + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry_new->flowlist_name); + } else if ((ikey->get_key_type() == UNC_KT_VBRIDGE) || + (ikey->get_key_type() == UNC_KT_VROUTER)) { + // New Name NuLL CHECK + if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { + UPLL_LOG_DEBUG("new_unc_vnode_name NULL"); + if (val_ff_entry_new) free(val_ff_entry_new); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + // Copy the new vbridge name into val_flowfilter_entry + uuu::upll_strncpy(val_ff_entry_new->redirect_node, + key_rename->new_unc_vnode_name, + sizeof(val_ff_entry_new->redirect_node)); + val_ff_entry_new->valid[UPLL_IDX_REDIRECT_NODE_FFE] = UNC_VF_VALID; + UPLL_LOG_DEBUG("vbridge name and valid (%d) (%s)", + val_ff_entry_new->valid[UPLL_IDX_FLOWLIST_NAME_FFE], + val_ff_entry_new->redirect_node); } - ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry_new); + ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + val_ff_entry_new); kval->SetCfgVal(cval1); memset(&ctrlr_dom, 0, sizeof(controller_domain)); @@ -2636,12 +2324,13 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, SET_USER_DATA_FLAGS(kval, rename); SET_USER_DATA_CTRLR_DOMAIN(kval, ctrlr_dom); - //Update the new flowlist name in MAINTBL + // Update the new flowlist name in MAINTBL result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Create record Err in vbrflowfilterentrytbl CANDIDATE DB(%d)", - result_code); + UPLL_LOG_DEBUG("Create record Err in vbrflowfilterentrytbl" + "CANDIDATE DB(%d)", + result_code); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(okey); return result_code; @@ -2654,7 +2343,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return result_code; } bool VrtIfFlowFilterEntryMoMgr::CompareValidValue(void *&val1, - void *val2, bool copy_to_running) { + void *val2, + bool copy_to_running) { UPLL_FUNC_TRACE; bool attr = true; val_flowfilter_entry_t *val_ff_entry1 = @@ -2662,73 +2352,72 @@ bool VrtIfFlowFilterEntryMoMgr::CompareValidValue(void *&val1, val_flowfilter_entry_t *val_ff_entry2 = reinterpret_cast(val2); for ( unsigned int loop = 0; loop < sizeof(val_ff_entry1->valid); ++loop ) { - if (UNC_VF_INVALID == val_ff_entry1->valid[loop] && - UNC_VF_VALID == val_ff_entry2->valid[loop]) - val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; - } + if (UNC_VF_INVALID == val_ff_entry1->valid[loop] && + UNC_VF_VALID == val_ff_entry2->valid[loop]) + val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; + } if (val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->flowlist_name), - reinterpret_cast(val_ff_entry2->flowlist_name))) + reinterpret_cast(val_ff_entry2->flowlist_name))) val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_ACTION_FFE] == UNC_VF_VALID) { if (val_ff_entry1->action == val_ff_entry2->action) val_ff_entry1->valid[UPLL_IDX_ACTION_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_REDIRECT_NODE_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->redirect_node), - reinterpret_cast(val_ff_entry2->redirect_node))) + reinterpret_cast(val_ff_entry2->redirect_node))) val_ff_entry1->valid[UPLL_IDX_REDIRECT_NODE_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_REDIRECT_PORT_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->redirect_port), - reinterpret_cast(val_ff_entry2->redirect_port))) + reinterpret_cast(val_ff_entry2->redirect_port))) val_ff_entry1->valid[UPLL_IDX_REDIRECT_PORT_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } if (val_ff_entry1->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID) { - + val_ff_entry2->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] == UNC_VF_VALID) { if (!memcmp(reinterpret_cast(val_ff_entry1->modify_dstmac), - reinterpret_cast(val_ff_entry2->modify_dstmac), - sizeof(val_ff_entry2->modify_dstmac))) { + reinterpret_cast(val_ff_entry2->modify_dstmac), + sizeof(val_ff_entry2->modify_dstmac))) { val_ff_entry1->valid[UPLL_IDX_MODIFY_DST_MAC_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } } if (val_ff_entry1->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] == UNC_VF_VALID) { if (!memcmp(reinterpret_cast(val_ff_entry1->modify_srcmac), - reinterpret_cast(val_ff_entry2->modify_srcmac), - sizeof(val_ff_entry2->modify_srcmac))) { + reinterpret_cast(val_ff_entry2->modify_srcmac), + sizeof(val_ff_entry2->modify_srcmac))) { val_ff_entry1->valid[UPLL_IDX_MODIFY_SRC_MAC_FFE] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } } if (val_ff_entry1->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_NWM_NAME_FFE] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast(val_ff_entry1->nwm_name), - reinterpret_cast(val_ff_entry2->nwm_name))) + reinterpret_cast(val_ff_entry2->nwm_name))) val_ff_entry1->valid[UPLL_IDX_NWM_NAME_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_DSCP_FFE] == UNC_VF_VALID) { if (val_ff_entry1->dscp == val_ff_entry2->dscp) val_ff_entry1->valid[UPLL_IDX_DSCP_FFE] = UNC_VF_INVALID; } if (val_ff_entry1->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID && - val_ff_entry2->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID) { + val_ff_entry2->valid[UPLL_IDX_PRIORITY_FFE] == UNC_VF_VALID) { if (val_ff_entry1->priority == val_ff_entry2->priority) val_ff_entry1->valid[UPLL_IDX_PRIORITY_FFE] = UNC_VF_INVALID; } UPLL_LOG_DEBUG("CompareValidValue :: Success"); for (unsigned int loop = 0; - loop < sizeof(val_ff_entry1->valid)/ sizeof(uint8_t); ++loop) { + loop < sizeof(val_ff_entry1->valid)/ sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_ff_entry1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_ff_entry1->valid[loop])) attr = false; @@ -2736,9 +2425,9 @@ bool VrtIfFlowFilterEntryMoMgr::CompareValidValue(void *&val1, return attr; } upll_rc_t VrtIfFlowFilterEntryMoMgr::VerifyRedirectDestination( - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type) { UPLL_FUNC_TRACE; MoMgrImpl *mgr = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2755,121 +2444,122 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::VerifyRedirectDestination( /* read val_vtn_flowfilter_entry from ikey*/ val_flowfilter_entry_t *val_flowfilter_entry = - static_cast( - ikey->get_cfg_val()->get_val()); - // Symentic Validation for redirect destination + static_cast( + ikey->get_cfg_val()->get_val()); + // Symentic Validation for redirect destination if ((val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_NODE_FFE] == - UNC_VF_VALID) && - (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] == - UNC_VF_VALID)) { - DbSubOp dbop_up = { kOpReadExist, kOpMatchCtrlr|kOpMatchDomain, - kOpInOutNone }; - result_code = GetControllerDomainID(ikey, dt_type, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", - result_code); - } + UNC_VF_VALID) && + (val_flowfilter_entry->valid[UPLL_IDX_REDIRECT_PORT_FFE] == + UNC_VF_VALID)) { + DbSubOp dbop_up = { kOpReadExist, kOpMatchCtrlr|kOpMatchDomain, + kOpInOutNone }; + result_code = GetControllerDomainID(ikey, dt_type, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", + result_code); + } - GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); - UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); - // Verify whether the vtnnode and interface are exists in DB - // 1. Check for the vbridge Node - mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_IF))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("Unable to get VBRIDGE Interface object"); - return UPLL_RC_ERR_GENERIC; - } - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for VBRIDGE key struct - %d", - result_code); - return result_code; - } - key_vbr_if_t *vbrif_key = static_cast( - okey->get_key()); - uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, - key_vrtif_ffe->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, + UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", + ctrlr_dom.ctrlr, ctrlr_dom.domain); + // Verify whether the vtnnode and interface are exists in DB + // 1. Check for the vbridge Node + mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VBR_IF))); + if (NULL == mgr) { + UPLL_LOG_DEBUG("Unable to get VBRIDGE Interface object"); + return UPLL_RC_ERR_GENERIC; + } + result_code = mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Memory allocation failed for VBRIDGE key struct - %d", + result_code); + return result_code; + } + key_vbr_if_t *vbrif_key = static_cast( + okey->get_key()); + uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, + key_vrtif_ffe-> + flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); + + uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, reinterpret_cast (val_flowfilter_entry->redirect_node), (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(vbrif_key->if_name, + uuu::upll_strncpy(vbrif_key->if_name, reinterpret_cast (val_flowfilter_entry->redirect_port), kMaxLenInterfaceName + 1); - /* Check vtnnode and interface exists in table*/ + /* Check vtnnode and interface exists in table*/ - SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); - result_code = mgr->UpdateConfigDB(okey, dt_type, - UNC_OP_READ, dmi, &dbop_up, MAINTBL); - - DELETE_IF_NOT_NULL(okey); - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("vtn node/interface in val_flowfilter_entry exists" - "in DB"); - } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - // 2. Check for Vrouter Node - - // Verify whether the vtnnode and interface are exists in DB - mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VRT_IF))); - if (NULL == mgr) { - UPLL_LOG_DEBUG("Unable to get VROUTER Interface object"); - return UPLL_RC_ERR_GENERIC; - } - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for VROUTER key struct - %d", - result_code); - return result_code; - } - key_vrt_if_t *vrtif_key = static_cast( - okey->get_key()); - uuu::upll_strncpy(vrtif_key->vrt_key.vtn_key.vtn_name, - key_vrtif_ffe->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + result_code = mgr->UpdateConfigDB(okey, dt_type, + UNC_OP_READ, dmi, &dbop_up, MAINTBL); - uuu::upll_strncpy(vrtif_key->vrt_key.vrouter_name, + DELETE_IF_NOT_NULL(okey); + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + UPLL_LOG_DEBUG("vtn node/interface in val_flowfilter_entry exists" + "in DB"); + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + // 2. Check for Vrouter Node + + // Verify whether the vtnnode and interface are exists in DB + mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VRT_IF))); + if (NULL == mgr) { + UPLL_LOG_DEBUG("Unable to get VROUTER Interface object"); + return UPLL_RC_ERR_GENERIC; + } + result_code = mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Memory allocation failed for VROUTER key struct - %d", + result_code); + return result_code; + } + key_vrt_if_t *vrtif_key = static_cast( + okey->get_key()); + uuu::upll_strncpy(vrtif_key->vrt_key.vtn_key.vtn_name, + key_vrtif_ffe-> + flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); + + uuu::upll_strncpy(vrtif_key->vrt_key.vrouter_name, reinterpret_cast (val_flowfilter_entry->redirect_node), (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(vrtif_key->if_name, + uuu::upll_strncpy(vrtif_key->if_name, reinterpret_cast (val_flowfilter_entry->redirect_port), kMaxLenInterfaceName + 1); - UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); - /* Check vtnnode and interface exists in table*/ - result_code = mgr->UpdateConfigDB(okey, dt_type, - UNC_OP_READ, dmi, &dbop_up, MAINTBL); - DELETE_IF_NOT_NULL(okey); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG("vtn node/interface in val struct does not exists" - "in DB"); - return UPLL_RC_ERR_CFG_SEMANTIC; - } + UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", + ctrlr_dom.ctrlr, ctrlr_dom.domain); + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + /* Check vtnnode and interface exists in table*/ + result_code = mgr->UpdateConfigDB(okey, dt_type, + UNC_OP_READ, dmi, &dbop_up, MAINTBL); + DELETE_IF_NOT_NULL(okey); + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { + UPLL_LOG_DEBUG("vtn node/interface in val struct does not exists" + "in DB"); + return UPLL_RC_ERR_CFG_SEMANTIC; } - result_code = - (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : - result_code; - - } // end of Symentic Validation + } + result_code = + (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? UPLL_RC_SUCCESS : + result_code; + } // end of Symentic Validation return result_code; } /*Return result of validation*/ upll_rc_t VrtIfFlowFilterEntryMoMgr::TxVote(unc_key_type_t keytype, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; ConfigKeyVal *req = NULL, *nreq = NULL; DalResultCode db_result; @@ -2879,38 +2569,47 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::TxVote(unc_key_type_t keytype, DalCursor *cfg1_cursor = NULL; for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, nreq, &cfg1_cursor, dmi, MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + continue; + } while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("No diff found for op %d", op[i]); + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); break; } val_flowfilter_entry_t* val = reinterpret_cast - (GetVal(req)); + (GetVal(req)); if ((val->valid[UPLL_IDX_REDIRECT_NODE_FFE] == - UNC_VF_VALID) && - (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == - UNC_VF_VALID)) { - result_code = VerifyRedirectDestination(req, dmi, - UPLL_DT_CANDIDATE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Invalid redirect-destination node/interface"); - *err_ckv = req; - DELETE_IF_NOT_NULL(nreq); - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } + UNC_VF_VALID) && + (val->valid[UPLL_IDX_REDIRECT_PORT_FFE] == + UNC_VF_VALID)) { + result_code = VerifyRedirectDestination(req, dmi, + UPLL_DT_CANDIDATE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Invalid redirect-destination node/interface"); + DEL_USER_DATA(req); // Delete the controller and domain from req + *err_ckv = req; + DELETE_IF_NOT_NULL(nreq); + dmi->CloseCursor(cfg1_cursor, true); + return result_code; } } - dmi->CloseCursor(cfg1_cursor, true); - if (req) delete req; - if (nreq) delete nreq; } - + dmi->CloseCursor(cfg1_cursor, true); + if (req) delete req; + if (nreq) delete nreq; + } + return result_code; } upll_rc_t VrtIfFlowFilterEntryMoMgr::TxUpdateController( @@ -3006,7 +2705,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::TxUpdateController( UPLL_LOG_DEBUG("GetChildConfigKey failed, err %d", result_code); return result_code; } - // SET_USER_DATA_CTRLR_DOMAIN(temp, ctrlr_dom); + // SET_USER_DATA_CTRLR_DOMAIN(temp, ctrlr_dom); DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr|kOpMatchDomain, kOpInOutFlag}; result_code = ReadConfigDB(temp, UPLL_DT_RUNNING, @@ -3064,7 +2763,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::TxUpdateController( (GetVal(ck_main)); memcpy(&pfc_val->val_ff_entry, val, sizeof(val_flowfilter_entry_t)); #endif - // Inserting the controller to Set + // Inserting the controller to Set affected_ctrlr_set->insert (string(reinterpret_cast(ctrlr_dom.ctrlr))); ConfigKeyVal *temp_ck_main = NULL; @@ -3095,7 +2794,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::TxUpdateController( pfc_val)); result_code = SendIpcReq(session_id, config_id, op1, UPLL_DT_CANDIDATE, ck_main, &ctrlr_dom, &ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG(" driver result code - %d", result_code); result_code = UPLL_RC_SUCCESS; } @@ -3125,10 +2824,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::TxUpdateController( } upll_rc_t VrtIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( - ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, InterfacePortMapInfo flag, - unc_keytype_operation_t oper) { + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, InterfacePortMapInfo flag, + unc_keytype_operation_t oper) { upll_rc_t result_code = UPLL_RC_ERR_GENERIC; controller_domain ctrlr_dom; uint8_t *ctrlr_id = NULL; @@ -3138,26 +2837,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( } ConfigKeyVal *ckv = NULL; memset(&ctrlr_dom, 0, sizeof(controller_domain)); - result_code = GetChildConfigKey(ckv, NULL); + result_code = GetChildConfigKey(ckv, ikey); if (UPLL_RC_SUCCESS != result_code) { return result_code; } - key_vrt_if_flowfilter_entry_t *ff_key = - reinterpret_cast(ckv->get_key()); - key_vrt_if_t *vrtif_key = reinterpret_cast(ikey->get_key()); - - uuu::upll_strncpy(ff_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - vrtif_key->vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(ff_key->flowfilter_key.if_key.vrt_key.vrouter_name, - vrtif_key->vrt_key.vrouter_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(ff_key->flowfilter_key.if_key.if_name, - vrtif_key->if_name, - kMaxLenInterfaceName + 1); - ff_key->flowfilter_key.direction = 0xFE; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; result_code = ReadConfigDB(ckv, dt_type , UNC_OP_READ, dbop, dmi, MAINTBL); @@ -3176,15 +2859,14 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( ConfigKeyVal *ckv_first = ckv; while (ckv) { val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(ckv)); + reinterpret_cast (GetVal(ckv)); flag_port_map = 0; GET_USER_DATA_FLAGS(ckv, flag_port_map); if (flag & kVlinkConfigured) { - UPLL_LOG_DEBUG("Vlink Flag"); + UPLL_LOG_DEBUG("Vlink Flag"); flag_port_map |= SET_FLAG_VLINK; } else { - - UPLL_LOG_DEBUG("No Vlink Flag"); + UPLL_LOG_DEBUG("No Vlink Flag"); flag_port_map &= NO_FLAG_VLINK; } UPLL_LOG_DEBUG("SET_USER_DATA_FLAGS flag_port_map %d", flag_port_map); @@ -3194,7 +2876,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( result_code = UpdateConfigDB(ckv, dt_type, UNC_OP_UPDATE, dmi, &dbop_update, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Failed to update flag in DB ,err %d", result_code); + UPLL_LOG_DEBUG("Failed to update flag in DB , err %d", result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } @@ -3203,32 +2885,32 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetVlinkPortmapConfiguration( FlowListMoMgr *mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); if (flag_port_map & SET_FLAG_VLINK) { - op = UNC_OP_CREATE; + op = UNC_OP_CREATE; } else { - op = UNC_OP_DELETE; + op = UNC_OP_DELETE; } result_code = GetControllerDomainID(ikey, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); ctrlr_id = ctrlr_dom.ctrlr; result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id), dt_type, op); + reinterpret_cast(flowfilter_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), dt_type, op); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", - result_code); - DELETE_IF_NOT_NULL(ckv); - return result_code; + UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", + result_code); + DELETE_IF_NOT_NULL(ckv); + return result_code; } } - + ckv = ckv->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(ckv_first); @@ -3251,9 +2933,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL || - ikey->get_key_type() != UNC_KT_VRTIF_FLOWFILTER_ENTRY) { + ikey->get_key_type() != UNC_KT_VRTIF_FLOWFILTER_ENTRY) { UPLL_LOG_DEBUG("Ignoring ktype/Table kt=%d, tbl=%d", - ikey->get_key_type(), tbl); + ikey->get_key_type(), tbl); return result_code; } @@ -3268,26 +2950,26 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( result_code = GetControllerDomainID(ikey, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", - result_code); + result_code); return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); ctrlr_id = ctrlr_dom.ctrlr; mgr = reinterpret_cast (const_cast (GetMoManager(UNC_KT_FLOWLIST))); result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), - dmi, - reinterpret_cast(ctrlr_id), - dt_type, - UNC_OP_CREATE); + reinterpret_cast(flowfilter_val->flowlist_name), + dmi, + reinterpret_cast(ctrlr_id), + dt_type, + UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to update the FlowList at ctrlr table.Err %d", + UPLL_LOG_DEBUG("Unable to update the FlowList at ctrlr table.Err %d", result_code); - return result_code; + return result_code; } } return result_code; @@ -3295,9 +2977,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; - ConfigKeyVal* okey = NULL; uint8_t *ctrlr_id = NULL; controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(ctrlr_dom)); @@ -3313,25 +2995,30 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, if (req->datatype == UPLL_DT_IMPORT) { UPLL_LOG_DEBUG("Inside %d", req->datatype); if (ikey->get_cfg_val() && - (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { - UPLL_LOG_DEBUG("pran:-val struct num (%d)",ikey->get_cfg_val()->get_st_num()); + (ikey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStPfcdrvValFlowfilterEntry)) { + UPLL_LOG_DEBUG("pran:-val struct num (%d)", ikey-> + get_cfg_val()->get_st_num()); pfc_val_import = reinterpret_cast - (ikey->get_cfg_val()->get_val()); - val_ff_import = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); - memcpy(val_ff_import, &pfc_val_import->val_ff_entry, sizeof(val_flowfilter_entry_t)); - UPLL_LOG_DEBUG("FLOWLIST name (%s)", val_ff_import->flowlist_name); - ikey->SetCfgVal(NULL); - ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_import)); + (ikey->get_cfg_val()->get_val()); + val_ff_import = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + memcpy(val_ff_import, &pfc_val_import->val_ff_entry, + sizeof(val_flowfilter_entry_t)); + UPLL_LOG_DEBUG("FLOWLIST name (%s)", val_ff_import->flowlist_name); + ikey->SetCfgVal(NULL); + ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValFlowfilterEntry, + val_ff_import)); } } UPLL_LOG_TRACE("%s vrt_if_ff_entry", ikey->ToStrAll().c_str()); - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" ValidateMessage failed "); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" ValidateMessage failed "); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); @@ -3340,20 +3027,16 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } - // Check if Object already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Record already exists in Candidate DB"); - return result_code; - } val_flowfilter_entry_t *flowfilter_val = reinterpret_cast (GetVal(ikey)); - FlowListMoMgr *mgr = NULL; result_code = GetControllerDomainID(ikey, req->datatype, dmi); if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", result_code); + return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); @@ -3361,88 +3044,55 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ctrlr_dom.ctrlr, ctrlr_dom.domain); ctrlr_id = ctrlr_dom.ctrlr; - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed in ValidateCapability"); - return result_code; - } - result_code = GetInstanceCount(temp_key, - reinterpret_cast (ctrlr_id), - req->datatype, - &cur_instance_count, - dmi, - MAINTBL); - DELETE_IF_NOT_NULL(temp_key); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount Failed in ValidateCapability"); - return result_code; - } - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_id)); + reinterpret_cast(ctrlr_id)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); return result_code; } - - // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restore Operation Failed, err %d", result_code); + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); return result_code; } - return result_code; - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG(" error reading DB. err code(%d)", result_code); - return result_code; - } else { - UPLL_LOG_DEBUG("Record doesn't exist in reading Running DB "); - } - } - if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - - // Check Flowlist object exist or not - result_code = mgr->GetChildConfigKey(okey, NULL); - if (!okey || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Recored %d", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - key_flowlist_t *key_flowlist = reinterpret_cast - (okey->get_key()); - uuu::upll_strncpy(key_flowlist->flowlist_name, - flowfilter_val->flowlist_name, - (kMaxLenFlowListName +1)); - - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Given FlowList does not exists %d", result_code); - delete okey; - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Instance Available"); - } else if (result_code != UPLL_RC_SUCCESS) { - delete okey; - UPLL_LOG_DEBUG("Error Accesing CANDIDATE DB (%d)", result_code); - return result_code; - } - if (okey) { - delete okey; - okey = NULL; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } - // create a record in CANDIDATE DB + // create a record in CANDIDATE DB VrtIfMoMgr *vrtifmgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VRT_IF))); + UNC_KT_VRT_IF))); ConfigKeyVal *ckv = NULL; InterfacePortMapInfo flags = kVlinkPortMapNotConfigured; result_code = vrtifmgr->GetChildConfigKey(ckv, NULL); @@ -3451,28 +3101,28 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, key_vrt_if_t *vrtif_key = reinterpret_cast(ckv->get_key()); uuu::upll_strncpy(vrtif_key->vrt_key.vtn_key.vtn_name, - ff_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + ff_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vrtif_key->vrt_key.vrouter_name, - ff_key->flowfilter_key.if_key.vrt_key.vrouter_name, - kMaxLenVtnName + 1); + ff_key->flowfilter_key.if_key.vrt_key.vrouter_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vrtif_key->if_name, - ff_key->flowfilter_key.if_key.if_name, - kMaxLenInterfaceName + 1); + ff_key->flowfilter_key.if_key.if_name, + kMaxLenInterfaceName + 1); uint8_t* vexternal = reinterpret_cast - (ConfigKeyVal::Malloc(kMaxLenVnodeName + 1)); + (ConfigKeyVal::Malloc(kMaxLenVnodeName + 1)); uint8_t* vex_if = reinterpret_cast - (ConfigKeyVal::Malloc(kMaxLenInterfaceName + 1)); + (ConfigKeyVal::Malloc(kMaxLenInterfaceName + 1)); result_code = vrtifmgr->GetVexternal(ckv, req->datatype, dmi, - vexternal, vex_if, flags); + vexternal, vex_if, flags); if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ckv); - free(vexternal); - free(vex_if); - return result_code; + DELETE_IF_NOT_NULL(ckv); + free(vexternal); + free(vex_if); + return result_code; } DELETE_IF_NOT_NULL(ckv); uint8_t flag_port_map = 0; @@ -3485,6 +3135,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, SET_USER_DATA_FLAGS(ikey, flag_port_map); if (flags & kVlinkConfigured) { if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { + FlowListMoMgr *mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); result_code = mgr->AddFlowListToController( reinterpret_cast(flowfilter_val->flowlist_name), dmi, reinterpret_cast (ctrlr_id), req->datatype, UNC_OP_CREATE); @@ -3505,9 +3157,10 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } -upll_rc_t VrtIfFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VrtIfFlowFilterEntryMoMgr::GetControllerDomainID( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -3523,7 +3176,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, result_code = mgrvrtif->GetChildConfigKey(ckv, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to get the ParentConfigKey, resultcode=%d", - result_code); + result_code); return result_code; } @@ -3559,7 +3212,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(vrt_key); DELETE_IF_NOT_NULL(ckv); UPLL_LOG_INFO("GetControllerDomainId error err code(%d)", result_code); - return UPLL_RC_ERR_GENERIC; + return result_code; } UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", @@ -3568,7 +3221,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, GET_USER_DATA_FLAGS(ikey, temp_flag); SET_USER_DATA(ikey, vrt_key); SET_USER_DATA_FLAGS(ikey, temp_flag); - // SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + // SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); DELETE_IF_NOT_NULL(vrt_key); DELETE_IF_NOT_NULL(ckv); @@ -3583,7 +3236,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VRTIF_FLOWFILTER_ENTRY) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -3645,12 +3298,12 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::ConstructReadDetailResponse( } upll_rc_t VrtIfFlowFilterEntryMoMgr::DeleteChildrenPOM( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; uint8_t *ctrlr_id = NULL; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; -// uint8_t rename = 0; + // uint8_t rename = 0; if (NULL == ikey && NULL == dmi) return result_code; ConfigKeyVal *temp_okey = NULL; @@ -3660,7 +3313,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DeleteChildrenPOM( return result_code; } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain }; + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag }; result_code = ReadConfigDB(temp_okey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -3676,25 +3329,30 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DeleteChildrenPOM( while (NULL != okey) { GET_USER_DATA_CTRLR(okey, ctrlr_id); val_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(okey)); + reinterpret_cast (GetVal(okey)); if (flowfilter_val->valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - FlowListMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); - result_code = mgr->AddFlowListToController( - reinterpret_cast(flowfilter_val->flowlist_name), dmi, - reinterpret_cast(ctrlr_id), dt_type, UNC_OP_DELETE); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Send delete request to flowlist failed. err code(%d)", - result_code); - DELETE_IF_NOT_NULL(temp_okey); - return result_code; + uint8_t flag_port_map = 0; + GET_USER_DATA_FLAGS(okey, flag_port_map); + if (flag_port_map & SET_FLAG_VLINK) { + FlowListMoMgr *mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + result_code = mgr->AddFlowListToController( + reinterpret_cast(flowfilter_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), dt_type, UNC_OP_DELETE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" Send delete request to flowlist failed." + "err code(%d)", + result_code); + DELETE_IF_NOT_NULL(temp_okey); + return result_code; + } } } result_code = UpdateConfigDB(okey, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to delete the vrt if flowfilter entry ,err %d", - result_code); + UPLL_LOG_DEBUG("Failed to delete the vrt if flowfilter entry , err %d", + result_code); DELETE_IF_NOT_NULL(temp_okey); return result_code; } @@ -3703,14 +3361,16 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::DeleteChildrenPOM( DELETE_IF_NOT_NULL(temp_okey); return UPLL_RC_SUCCESS; } - -upll_rc_t VrtIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi) { + +upll_rc_t VrtIfFlowFilterEntryMoMgr::AuditUpdateController( + unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result = uud::kDalRcSuccess; @@ -3727,35 +3387,44 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp uint8_t *ctrlr = reinterpret_cast(const_cast(ctrlr_id)); /* decides whether to retrieve from controller table or main table */ DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; - //GET_TABLE_TYPE(keytype, tbl); + // GET_TABLE_TYPE(keytype, tbl); unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); unc_keytype_operation_t op1 = op; if (phase == uuc::kUpllUcpDelete2) - return result_code; + return result_code; /* retreives the delta of running and audit configuration */ - UPLL_LOG_DEBUG("Operation is %d", op); + UPLL_LOG_DEBUG("Operation is %d", op); result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op, - ckv_running_db, ckv_audit_db, - &cursor, dmi, ctrlr, tbl); + ckv_running_db, ckv_audit_db, + &cursor, dmi, ctrlr, tbl); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("No more diff found for operation %d", op); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + return UPLL_RC_SUCCESS; + } if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return result_code; } while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { op1 = op; if (phase != uuc::kUpllUcpDelete) { uint8_t *db_ctrlr = NULL; - GET_USER_DATA_CTRLR(ckv_running_db,db_ctrlr); + GET_USER_DATA_CTRLR(ckv_running_db, db_ctrlr); UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", - db_ctrlr, ctrlr_id); - // Skipping the controller ID if the controller id in DB and - // controller id available for Audit are not the same + db_ctrlr, ctrlr_id); + // Skipping the controller ID if the controller id in DB and + // controller id available for Audit are not the same if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), - reinterpret_cast(ctrlr_id), - strlen(reinterpret_cast(ctrlr_id)) + 1)) { + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast + (ctrlr_id)) + 1)) { continue; } } @@ -3763,70 +3432,82 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp switch (phase) { case uuc::kUpllUcpDelete: UPLL_LOG_TRACE("Deleted record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); result_code = GetChildConfigKey(ckv_driver_req, ckv_running_db); UPLL_LOG_TRACE("ckv_driver_req in delete is %s", - ckv_driver_req->ToStrAll().c_str()); + ckv_driver_req->ToStrAll().c_str()); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) - dmi->CloseCursor(cursor, true); + dmi->CloseCursor(cursor, true); return result_code; } if (ckv_driver_req->get_cfg_val()) { UPLL_LOG_DEBUG("Invalid param"); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) - dmi->CloseCursor(cursor, true); + dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } result_code = ReadConfigDB(ckv_driver_req, UPLL_DT_AUDIT, UNC_OP_READ, - dbop, dmi, MAINTBL); + dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("Returning error %d", result_code); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) - dmi->CloseCursor(cursor, true); + dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } break; case uuc::kUpllUcpCreate: - UPLL_LOG_TRACE("Created record is %s ", - ckv_running_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", - result_code, phase); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; - } - break; + UPLL_LOG_TRACE("Created record is %s ", + ckv_running_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", + result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + if (cursor) + dmi->CloseCursor(cursor, true); + return result_code; + } + break; case uuc::kUpllUcpUpdate: - ckv_audit_dup_db = NULL; - ckv_driver_req = NULL; - UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_running_db->ToStrAll().c_str()); - UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_audit_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; - } - result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); - DELETE_IF_NOT_NULL(ckv_driver_req); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; - } + ckv_audit_dup_db = NULL; + ckv_driver_req = NULL; + UPLL_LOG_TRACE("UpdateRecord record is %s ", + ckv_running_db->ToStrAll().c_str()); + UPLL_LOG_TRACE("UpdateRecord record is %s ", + ckv_audit_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record." + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + if (cursor) + dmi->CloseCursor(cursor, true); + return result_code; + } + result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. " + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + DELETE_IF_NOT_NULL(ckv_driver_req); + if (cursor) + dmi->CloseCursor(cursor, true); + return result_code; + } break; default: UPLL_LOG_DEBUG("Invalid operation %d", phase); @@ -3838,59 +3519,81 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp if (ctrlr_dom.ctrlr == NULL) { DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } GET_USER_DATA_FLAGS(ckv_driver_req, db_flag); - // If vlink flag is not set at running and the operation is update - // then vlink is deleted in the update phase from UNC - // hence flowfilter seq no also should get deleted from controller - // hence sending the delete request to the controller driver + // If vlink flag is not set at running and the operation is update + // then vlink is deleted in the update phase from UNC + // hence flowfilter seq no also should get deleted from controller + // hence sending the delete request to the controller driver if (SET_FLAG_VLINK & db_flag) { - // Continue with further operations + // Continue with further operations } else { if (UNC_OP_UPDATE == op1) { op1 = UNC_OP_DELETE; } else { - // No Vlink Configured, Configuration is not - // sent to driver + // No Vlink Configured, Configuration is not + // sent to driver DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); continue; } } - if (UNC_OP_UPDATE == op1) { + if (UNC_OP_UPDATE == op1) { void *running_val = NULL; bool invalid_attr = false; running_val = GetVal(ckv_driver_req); invalid_attr = FilterAttributes(running_val, - GetVal(ckv_audit_dup_db), false, UNC_OP_UPDATE); + GetVal(ckv_audit_dup_db), + false, + UNC_OP_UPDATE); if (invalid_attr) { DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); + // Assuming that the diff found only in ConfigStatus + // Setting the value as OnlyCSDiff in the out + // parameter ctrlr_affected + // The value Configdiff should be given more + // priority than the value + // onlycs . + // So If the out parameter ctrlr_affected + // has already value as configdiff + // then dont change the value + if (*ctrlr_affected != uuc::kCtrlrAffectedConfigDiff) { + UPLL_LOG_INFO("Setting the ctrlr_affected to OnlyCSDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedOnlyCSDiff; + } continue; } } + DELETE_IF_NOT_NULL(ckv_audit_dup_db); upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? - UPLL_DT_AUDIT : UPLL_DT_RUNNING; + UPLL_DT_AUDIT : UPLL_DT_RUNNING; result_code = GetRenamedControllerKey(ckv_driver_req, UPLL_DT_RUNNING, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", result_code); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return result_code; } - - pfcdrv_val_flowfilter_entry_t *pfc_val = reinterpret_cast + + pfcdrv_val_flowfilter_entry_t *pfc_val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_flowfilter_entry_t))); pfc_val->valid[PFCDRV_IDX_VAL_VBRIF_VEXTIF_FFE] = UNC_VF_VALID; @@ -3902,7 +3605,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp (GetVal(ckv_driver_req)); memcpy(&pfc_val->val_ff_entry, val, sizeof(val_flowfilter_entry_t)); - ckv_driver_req->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValFlowfilterEntry, pfc_val)); + ckv_driver_req->SetCfgVal(new ConfigVal( + IpctSt::kIpcStPfcdrvValFlowfilterEntry, + pfc_val)); IpcResponse ipc_response; memset(&ipc_response, 0, sizeof(IpcResponse)); @@ -3913,89 +3618,120 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::AuditUpdateController(unc_key_type_t keytyp ipc_req.header.operation = op1; ipc_req.header.datatype = UPLL_DT_CANDIDATE; ipc_req.ckv_data = ckv_driver_req; - if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, reinterpret_cast - (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { + if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, + reinterpret_cast + (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, true, + &ipc_response)) { UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv_driver_req->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); + ckv_driver_req->get_key_type(), + reinterpret_cast(ctrlr_dom.ctrlr)); DELETE_IF_NOT_NULL(ckv_driver_req); if (cursor) dmi->CloseCursor(cursor, true); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return UPLL_RC_ERR_GENERIC; } - if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("driver return failure err_code is %d", ipc_response.header.result_code); + if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("driver return failure err_code is %d", + ipc_response.header.result_code); + *err_ckv = ckv_running_db; + if (phase != uuc::kUpllUcpDelete) { ConfigKeyVal *resp = NULL; - + result_code = GetChildConfigKey(resp, ipc_response.ckv_data); if (!resp || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for ipc response ckv err_code %d", - result_code); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - DELETE_IF_NOT_NULL(resp); - DELETE_IF_NOT_NULL(ckv_driver_req); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; + UPLL_LOG_DEBUG("DupConfigKeyVal failed for ipc" + "response ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(resp); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + if (cursor) + dmi->CloseCursor(cursor, true); + return result_code; } - pfcdrv_val_flowfilter_entry_t *pfc_val_ff = reinterpret_cast - (GetVal(ipc_response.ckv_data)); + pfcdrv_val_flowfilter_entry_t *pfc_val_ff = reinterpret_cast + + (GetVal(ipc_response.ckv_data)); if (NULL == pfc_val_ff) { UPLL_LOG_DEBUG("pfcdrv_val_flowfilter_entry_t is NULL"); DELETE_IF_NOT_NULL(resp); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } - val_flowfilter_entry_t* val_ff = reinterpret_cast + val_flowfilter_entry_t* val_ff = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); - memcpy(val_ff, &pfc_val_ff->val_ff_entry, sizeof(val_flowfilter_entry_t)); + memcpy(val_ff, &pfc_val_ff->val_ff_entry, + sizeof(val_flowfilter_entry_t)); resp->AppendCfgVal(IpctSt::kIpcStValFlowfilterEntry, val_ff); - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, phase, resp); + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + phase, + resp, + dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Update Audit config status failed %d", - result_code); + result_code); DELETE_IF_NOT_NULL(resp); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return result_code; } DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutCs }; result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, - dmi, &dbop,tbl); + dmi, &dbop, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response ckv err_code %d", - result_code); + UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response" + "ckv err_code %d", + result_code); DELETE_IF_NOT_NULL(resp); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return result_code; - } - DELETE_IF_NOT_NULL(resp); - + } + DELETE_IF_NOT_NULL(resp); + } + return ipc_response.header.result_code; } DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); - *ctrlr_affected = true; + // *ctrlr_affected = true; + if (*ctrlr_affected == uuc::kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Reset ctrlr state from OnlyCSDiff to ConfigDiff"); + } + UPLL_LOG_DEBUG("Setting the ctrlr_affected to ConfigDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedConfigDiff; } if (cursor) - dmi->CloseCursor(cursor, true); + dmi->CloseCursor(cursor, true); if (uud::kDalRcSuccess != db_result) { - UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); - result_code = DalToUpllResCode(db_result); + UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); + result_code = DalToUpllResCode(db_result); } DELETE_IF_NOT_NULL(ckv_running_db); DELETE_IF_NOT_NULL(ckv_audit_db); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; + ? UPLL_RC_SUCCESS : result_code; return result_code; } @@ -4008,8 +3744,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val->valid) / sizeof(val->valid[0]); - ++loop) { + loop < sizeof(val->valid) / sizeof(val->valid[0]); + ++loop) { if (val->valid[loop] == UNC_VF_VALID) { val->cs_attr[loop] = UNC_CS_APPLIED; } else if (val->valid[loop] == UNC_VF_INVALID) { @@ -4021,36 +3757,36 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; uint8_t flags = 0; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl - * * if "renamed" create the object by the UNC name. - * * else - create using the controller name. - * */ + * * if "renamed" create the object by the UNC name. + * * else - create using the controller name. + * */ result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); - if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } pfcdrv_val_flowfilter_entry_t *pfc_val = - reinterpret_cast (GetVal(ikey)); + reinterpret_cast (GetVal(ikey)); if (pfc_val == NULL) { UPLL_LOG_DEBUG("Driver Structure Empty"); return UPLL_RC_ERR_GENERIC; } - if ( pfc_val->val_vbrif_vextif.interface_type == PFCDRV_IF_TYPE_VBRIF) { + if (pfc_val->val_vbrif_vextif.interface_type == PFCDRV_IF_TYPE_VBRIF) { flags = SET_FLAG_VLINK; - } - else { + } else { flags = 0; } @@ -4064,17 +3800,17 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, val_flowfilter_entry_t * val_ff_entry = NULL; val_ff_entry = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_entry_t))); memcpy(val_ff_entry, &pfc_val->val_ff_entry, sizeof(val_flowfilter_entry_t)); - okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry); + okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterEntry, val_ff_entry); SET_USER_DATA_FLAGS(okey, flags); - + controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(ctrlr_dom)); result_code = GetControllerDomainID(okey, UPLL_DT_AUDIT, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to Get the Controller Domain details,err:%d", + UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", result_code); DELETE_IF_NOT_NULL(okey); return result_code; @@ -4085,7 +3821,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ctrlr_dom.ctrlr, ctrlr_dom.domain); FlowListMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); if (mgr == NULL) { UPLL_LOG_DEBUG("Invalid FlowListMoMgr Instance"); DELETE_IF_NOT_NULL(okey); @@ -4093,11 +3829,12 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } if (pfc_val->val_ff_entry.valid[UPLL_IDX_FLOWLIST_NAME_FFE] == UNC_VF_VALID) { - result_code = mgr->AddFlowListToController(reinterpret_cast - (pfc_val->val_ff_entry.flowlist_name), dmi, - reinterpret_cast (const_cast(ctrlr_id)), - UPLL_DT_AUDIT, - UNC_OP_CREATE); + result_code = mgr->AddFlowListToController( + reinterpret_cast + (pfc_val->val_ff_entry.flowlist_name), dmi, + reinterpret_cast (const_cast(ctrlr_id)), + UPLL_DT_AUDIT, + UNC_OP_CREATE); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Reference Count Updation Fails %d", result_code); @@ -4112,7 +3849,11 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(okey); return result_code; } - result_code = UpdateConfigDB(okey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); + result_code = UpdateConfigDB(okey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); DELETE_IF_NOT_NULL(okey); @@ -4124,21 +3865,22 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, bool VrtIfFlowFilterEntryMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); return false; } -upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { +upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateConfigStatus( + ConfigKeyVal *ikey, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; ConfigKeyVal * vrt_ffe_run_key = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -4153,47 +3895,47 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, result_code = GetChildConfigKey(vrt_ffe_run_key, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); return result_code; } - DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag |kOpInOutCs }; + DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag |kOpInOutCs }; result_code = ReadConfigDB(vrt_ffe_run_key, UPLL_DT_RUNNING , - UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); + UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); - DELETE_IF_NOT_NULL(vrt_ffe_run_key); + DELETE_IF_NOT_NULL(vrt_ffe_run_key); return result_code; } val_main = reinterpret_cast - (GetVal(vrt_ffe_run_key)); + (GetVal(vrt_ffe_run_key)); for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { - ffe_val->cs_attr[loop] = val_main->cs_attr[loop]; + sizeof(val_main->valid[0]); ++loop) { + ffe_val->cs_attr[loop] = val_main->cs_attr[loop]; } void *ffeval = reinterpret_cast(ffe_val); CompareValidValue(ffeval, GetVal(vrt_ffe_run_key), true); } else { return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_TRACE("%s",(ikey->ToStrAll()).c_str()); - val_flowfilter_entry_t *ffe_val2 = + UPLL_LOG_TRACE("%s", (ikey->ToStrAll()).c_str()); + val_flowfilter_entry_t *ffe_val2 = reinterpret_cast(GetVal(upd_key)); if (UNC_OP_UPDATE == op) { - UPLL_LOG_TRACE("%s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); ffe_val->cs_row_status = ffe_val2->cs_row_status; } for (unsigned int loop = 0; - loop < sizeof(ffe_val->valid) / sizeof(ffe_val->valid[0]); ++loop) { + loop < sizeof(ffe_val->valid) / sizeof(ffe_val->valid[0]); ++loop) { /* Setting CS to the not supported attributes*/ if (UNC_VF_NOT_SUPPORTED == ffe_val->valid[loop]) { - ffe_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + ffe_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; } else if ((UNC_VF_VALID == ffe_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == ffe_val->valid[loop])) { - ffe_val->cs_attr[loop] = cs_status; + || (UNC_VF_VALID_NO_VALUE == ffe_val->valid[loop])) { + ffe_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == ffe_val->valid[loop]) && (UNC_OP_CREATE == op)) { - ffe_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; + ffe_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; } else if ((UNC_VF_INVALID == ffe_val->valid[loop]) && (UNC_OP_UPDATE == op)) { if (val_main->valid[loop] == UNC_VF_VALID) { @@ -4202,27 +3944,27 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, } } } else if ((UNC_VF_VALID == ffe_val->valid[loop]) && - (UNC_OP_UPDATE == op)) { + (UNC_OP_UPDATE == op)) { if (cs_status == UNC_CS_APPLIED) { ffe_val->cs_attr[loop] = UNC_CS_APPLIED; } - } - if ((ffe_val->valid[loop] == UNC_VF_VALID_NO_VALUE) - &&(UNC_OP_UPDATE == op)) { - ffe_val->cs_attr[loop] = UNC_CS_UNKNOWN; - } + } + if ((ffe_val->valid[loop] == UNC_VF_VALID_NO_VALUE) + &&(UNC_OP_UPDATE == op)) { + ffe_val->cs_attr[loop] = UNC_CS_UNKNOWN; + } } - DELETE_IF_NOT_NULL(vrt_ffe_run_key); + DELETE_IF_NOT_NULL(vrt_ffe_run_key); return result_code; } upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_entry_t *val_ffe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_ffe) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -4235,8 +3977,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VRTIF_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VRTIF_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -4251,19 +3993,19 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } UPLL_LOG_DEBUG("Flag from parent : %d", rename); DELETE_IF_NOT_NULL(pkey); - // Check flowlist is renamed + // Check flowlist is renamed if ((UNC_VF_VALID == val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) && ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -4277,7 +4019,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (fl_rename & 0x01) { - rename |= FLOW_RENAME; // TODO Check for correct flag value + rename |= FLOW_RENAME; // TODO(upll): Check for correct flag value } DELETE_IF_NOT_NULL(fl_ckv); } @@ -4292,7 +4034,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } DbSubOp dbop1 = {kOpReadSingle, kOpMatchNone, kOpInOutFlag}; result_code = ReadConfigDB(dup_ckv, req->datatype, UNC_OP_READ, - dbop1, dmi, MAINTBL); + dbop1, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(dup_ckv); @@ -4303,14 +4045,14 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, if (UNC_VF_VALID == val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_FFE]) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -4324,7 +4066,7 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (fl_rename & 0x01) { - rename |= FLOW_RENAME; // TODO Check for correct flag value + rename |= FLOW_RENAME; // TODO(upll): Check for correct flag value } else { rename &= NO_FLOWLIST_RENAME; /* reset flag*/ @@ -4332,7 +4074,9 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(fl_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_ffe->valid [UPLL_IDX_FLOWLIST_NAME_FFE]) { - rename &= NO_FLOWLIST_RENAME; // TODO Check for correct flag value. No rename flowlist value should be set + rename &= NO_FLOWLIST_RENAME; // TODO(upll): Check for correct + // flag value. + // No rename flowlist value should be set } SET_USER_DATA_FLAGS(ikey, rename); } @@ -4340,13 +4084,13 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VrtIfFlowFilterEntryMoMgr::GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + UNC_KT_FLOWLIST))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -4355,8 +4099,8 @@ upll_rc_t VrtIfFlowFilterEntryMoMgr::GetFlowlistConfigKey( key_flowlist_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->flowlist_name, - flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_name, + (kMaxLenFlowListName+1)); return UPLL_RC_SUCCESS; } } // namespace kt_momgr diff --git a/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.hh b/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.hh index 2e5f61bd..93f22ba9 100644 --- a/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.hh +++ b/coordinator/modules/upll/vrt_if_flowfilter_entry_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,13 +21,13 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_VRT_IF_FLOWFILTER */ -/** - * @brief VrtIfFlowFilterEntryMoMgr class handles all the request - * received from service. - */ + /** + * @brief VrtIfFlowFilterEntryMoMgr class handles all the request + * received from service. + */ -class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { - private: + class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { + private: static BindInfo vrt_if_flowfilter_entry_bind_info[]; static BindInfo vrt_if_flowfilter_entry_maintbl_bind_info[]; @@ -35,82 +35,82 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { * @Brief Member variable for VrtIFlowlistRenameBindInfo */ static BindInfo vrt_if_flowlist_rename_bind_info[]; - uint32_t cur_instance_count; - public: + + public: /** - * @brief Method used to fill the CongigKeyVal with the - Parent Class Information. - - * @param[out] okey This Contains the pointerto the - ConfigKeyVal Class forwhich - fields have to be updated - with values from the parent Class. - * @param[in] parent_key This Contains the pointer to the - ConfigKeyVal Class which is the - Parent Class used to fill the details. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @brief Method used to fill the CongigKeyVal with the + Parent Class Information. + + * @param[out] okey This Contains the pointerto the + ConfigKeyVal Class forwhich + fields have to be updated + with values from the parent Class. + * @param[in] parent_key This Contains the pointer to the + ConfigKeyVal Class which is the + Parent Class used to fill the details. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); /** - * @brief Method used to get the RenamedUncKey. - * @param[out] ikey This Contains the pointer to - the Class for which fields have - to be updated with values from - the parent Class. - * @param[in] dt_type Describes Configiration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @brief Method used to get the RenamedUncKey. + * @param[out] ikey This Contains the pointer to + the Class for which fields have + to be updated with values from + the parent Class. + * @param[in] dt_type Describes Configiration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id); /** - * @brief Method used for RenamedControllerkey(PfcName). + * @brief Method used for RenamedControllerkey(PfcName). - * @param[out] ikey Contains the Pointer to ConfigkeyVal - Class and contains the Pfc Name. - * @param[in] dt_type Describes Configiration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_name Describes the Controller Name. + * @param[out] ikey Contains the Pointer to ConfigkeyVal + Class and contains the Pfc Name. + * @param[in] dt_type Describes Configiration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_name Describes the Controller Name. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Return Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Return Failure + */ upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, controller_domain *ctrlr_dom = NULL); /** - * @brief Method used for DeleteMo Operation. + * @brief Method used for DeleteMo Operation. - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Reurn Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Reurn Failure + */ upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); /** - * @brief Method used for GetObjectConfigKeyVal Operation. + * @brief Method used for GetObjectConfigKeyVal Operation. - * @param[out] okey This Contains the pointerto the - ConfigKeyVal Class forwhich - fields have to be updated. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] ObjType Specifies Flowlist Or N/w Monitor Type . + * @param[out] okey This Contains the pointerto the + ConfigKeyVal Class forwhich + fields have to be updated. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] ObjType Specifies Flowlist Or N/w Monitor Type . - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Generic Error - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Generic Error + */ upll_rc_t GetObjectConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&ikey, int ObjType); @@ -145,156 +145,158 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { IpcReqRespHeader *req = NULL); /** - * @brief Method used for createCandidateMo Operation. + * @brief Method used for createCandidateMo Operation. - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance does Not exist - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Instance does Not exist + */ upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi, bool restore_flag = false); /** - * @brief Method used for Validation before Merge. - - * @param[in] ikey This Contains the pointer to the - Class for which fields have to - be Validated before the Merge. - * @param[in] keytype Describes the keyType Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_MERGE_CONFLICT metge Conflict Error - */ + * @brief Method used for Validation before Merge. + + * @param[in] ikey This Contains the pointer to the + Class for which fields have to + be Validated before the Merge. + * @param[in] keytype Describes the keyType Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_MERGE_CONFLICT metge Conflict Error + */ upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, ConfigKeyVal *ikey, DalDmlIntf *dmi); /** - * @brief Method used to Duplicate the ConfigkeyVal. - - * @param[out] okey This Contains the pointer to - the Class for which fields - have to be updated with values - from the Request. - * @param[in] req This Contains the pointer to the - Class which is used for the Duplication . - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Generic failure - */ + * @brief Method used to Duplicate the ConfigkeyVal. + + * @param[out] okey This Contains the pointer to + the Class for which fields + have to be updated with values + from the Request. + * @param[in] req This Contains the pointer to the + Class which is used for the Duplication . + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Generic failure + */ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, MoMgrTables tbl); /** - * @brief Method Updates the ConfigStatus for AuditConfigiration. - - * @param[out] ckv_running This Contains the pointer to the Class - * for which Audit ConfigStatus is Updated. - * @param[in] cs_status Describes CsStatus Information. - Information. - * @param[in] phase Describes the Phase of the Operation. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_GENERIC Returned Generic Error. - */ + * @brief Method Updates the ConfigStatus for AuditConfigiration. + + * @param[out] ckv_running This Contains the pointer to the Class + * for which Audit ConfigStatus is Updated. + * @param[in] cs_status Describes CsStatus Information. + Information. + * @param[in] phase Describes the Phase of the Operation. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_GENERIC Returned Generic Error. + */ upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** - * @brief Method used for Update Operation. + * @brief Method used for Update Operation. - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); /** - * @brief Method Updates the ConfigStatus for AuditConfigiration. - - * @param[out] ckv_db This Contains the pointer to - the Class for which ConfigStatus - is Updated. - * @param[in] ctrlr_commit_status Describes Commit Control Status Information. - * @param[in] response_code Describes the Response Code. - * @param[in] dmi Pinter to DalDmlIntf Class. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Instance Exist - */ + * @brief Method Updates the ConfigStatus for AuditConfigiration. + + * @param[out] ckv_db This Contains the pointer to + the Class for which ConfigStatus + is Updated. + * @param[in] ctrlr_commit_status Describes Commit Control Status Information. + * @param[in] response_code Describes the Response Code. + * @param[in] dmi Pinter to DalDmlIntf Class. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Instance Exist + */ upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); /** - * @brief Method used for Trasaction Vote Operation. + * @brief Method used for Trasaction Vote Operation. - * @param[in] key Pointer to ConfigKeyVal Class. - * @param[in] op Describes the Type of Opeartion. - * @param[in] driver_result Describes the result of Driver Operation. - * @param[in] upd_key Pointer to ConfigKeyVal Class. - * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. + * @param[in] key Pointer to ConfigKeyVal Class. + * @param[in] op Describes the Type of Opeartion. + * @param[in] driver_result Describes the result of Driver Operation. + * @param[in] upd_key Pointer to ConfigKeyVal Class. + * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t UpdateConfigStatus(ConfigKeyVal *key, unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key); /** - * @brief Allocates Memory for the Incoming Pointer to the Class. + * @brief Allocates Memory for the Incoming Pointer to the Class. - * @param[out] ck_val This Contains the pointer to the Class for - which memory has to be allocated. - * @param[in] dt_type Describes Configiration Information. - * @param[in] tbl Describes the Destination table Information. + * @param[out] ck_val This Contains the pointer to the Class for + which memory has to be allocated. + * @param[in] dt_type Describes Configiration Information. + * @param[in] tbl Describes the Destination table Information. - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Return Generic Error - */ + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Return Generic Error + */ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, MoMgrTables tbl); /** - * @brief Allocates Memory for the Incoming Pointer to the Class. + * @brief Allocates Memory for the Incoming Pointer to the Class. - *@param[out] val This Contains the pointer to the Class for - which memory has to be allocated. - *@param[in] indx Describes The Index Value - *@param[in] valid Describes The Validity Of VrtIfFlowFilterEntryMoMgr - *@param[in] dt_type Describes Configiration Information. - *@param[in] tbl Describes the Destination table Information. + *@param[out] val This Contains the pointer to the Class for + which memory has to be allocated. + *@param[in] indx Describes The Index Value + *@param[in] valid Describes The Validity Of VrtIfFlowFilterEntryMoMgr + *@param[in] dt_type Describes Configiration Information. + *@param[in] tbl Describes the Destination table Information. - *@retval UPLL_RC_SUCCESS Successfull completion. - *@retval UPLL_RC_ERR_GENERIC Failure - */ + *@retval UPLL_RC_SUCCESS Successfull completion. + *@retval UPLL_RC_ERR_GENERIC Failure + */ upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, upll_keytype_datatype_t dt_type, MoMgrTables tbl); /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VRTIF_FLOWFILTER_ENTRY keytype - * - * @param[in] IpcReqRespHeader contains first 8 fields of input - * request structure - * @param[in] ConfigKeyVal key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vrtif_flowfilter_entry - * is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ + * @Brief Validates the syntax of the specified key and value structure + * for KT_VRTIF_FLOWFILTER_ENTRY keytype + * + * @param[in] IpcReqRespHeader contains first 8 fields of input + * request structure + * @param[in] ConfigKeyVal key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vrtif_flowfilter_entry + * is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); @@ -312,41 +314,40 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Generic failure. */ upll_rc_t ValidateVrtIfValStruct(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /** - * @Brief Validates the syntax fr KT_VRTIF_FLOWFILTER_ENTRY - * keytype key structure. - * - * @param[in] key_vbrif_flowfilter KT_VRTIF_FLOWFILTER_ENTRY key structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + ConfigKeyVal *ikey); + + /** + * @Brief Validates the syntax fr KT_VRTIF_FLOWFILTER_ENTRY + * keytype key structure. + * + * @param[in] key_vbrif_flowfilter KT_VRTIF_FLOWFILTER_ENTRY key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateVrtIfFlowfilterEntryKey( - key_vrt_if_flowfilter_entry_t* key_vrt_if_flowfilter_entry, - unc_keytype_operation_t operation); + key_vrt_if_flowfilter_entry_t* key_vrt_if_flowfilter_entry, + unc_keytype_operation_t operation); /** - * @Brief Checks if the specified key type(KT_VRTIF_FLOWFILTER_ENTRY) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input - * request structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller name. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + * @Brief Checks if the specified key type(KT_VRTIF_FLOWFILTER_ENTRY) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input + * request structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller name. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); + const char* ctrlr_name = NULL); - /** + /** * @Brief Method used to get the Bind Info Structure for Rename Purpose. * * @param[in] key_type Describes the KT Information. @@ -357,7 +358,7 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { * @retval pfc_true Successful Completion. * @retval pfc_fasle Failure. */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, MoMgrTables tbl); @@ -372,10 +373,10 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_SUCCESS Successfull Completion. * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /** + /** * @brief Method To Compare the Valid Check of Attributes * * @param[out] val1 Pointer to ConfigKeyVal Class @@ -412,7 +413,7 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { bool IsValidKey(void *key, uint64_t index); - /** + /** * @brief Method used for GetParentConfigKey Operation. * * @param[out] okey Pointer to ConfigKeyVal Class. @@ -421,8 +422,8 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); /** @@ -435,13 +436,13 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl, - DalDmlIntf* dmi); + upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl, + DalDmlIntf* dmi); upll_rc_t SetVlinkPortmapConfiguration(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, @@ -466,8 +467,8 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { upll_keytype_datatype_t dt_type); upll_rc_t GetControllerDomainID(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); upll_rc_t ConstructReadDetailResponse(ConfigKeyVal *ikey, ConfigKeyVal *drv_resp_ckv, @@ -476,7 +477,7 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - + upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); @@ -489,8 +490,9 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { uint32_t session_id, uint32_t config_id, uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected); upll_rc_t UpdateVnodeVal(ConfigKeyVal *ikey, DalDmlIntf *dmi, @@ -503,12 +505,12 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { unc_keytype_operation_t op); upll_rc_t GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi); upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); + DalDmlIntf *dmi, + IpcReqRespHeader *req); VrtIfFlowFilterEntryMoMgr(); ~VrtIfFlowFilterEntryMoMgr() { @@ -519,7 +521,7 @@ class VrtIfFlowFilterEntryMoMgr : public MoMgrImpl { } delete[] table; } -}; + }; } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vrt_if_flowfilter_momgr.cc b/coordinator/modules/upll/vrt_if_flowfilter_momgr.cc index 7676fc6f..c651044a 100644 --- a/coordinator/modules/upll/vrt_if_flowfilter_momgr.cc +++ b/coordinator/modules/upll/vrt_if_flowfilter_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -75,93 +75,126 @@ BindInfo VrtIfFlowFilterMoMgr::vrtIfflowfiltermaintbl_bind_info[] = { unc_key_type_t VrtIfFlowFilterMoMgr::vrt_if_flowfilter_child[] = { UNC_KT_VRTIF_FLOWFILTER_ENTRY - }; - VrtIfFlowFilterMoMgr::VrtIfFlowFilterMoMgr() : MoMgrImpl() { +}; +VrtIfFlowFilterMoMgr::VrtIfFlowFilterMoMgr() : MoMgrImpl() { UPLL_FUNC_TRACE; // Rename and ctrlr tables not required for this KT // setting table index for ctrl and rename table as NULL ntable = (MAX_MOMGR_TBLS); table = new Table *[ntable]; - cur_instance_count = 0; - table[MAINTBL] = new Table(uudst::kDbiVrtIfFlowFilterTbl, - UNC_KT_VRTIF_FLOWFILTER, vrt_if_flowfilter_bind_info, - IpctSt::kIpcStKeyVrtIfFlowfilter, IpctSt::kIpcStValFlowfilter, + table[MAINTBL] = new Table( + uudst::kDbiVrtIfFlowFilterTbl, + UNC_KT_VRTIF_FLOWFILTER, + vrt_if_flowfilter_bind_info, + IpctSt::kIpcStKeyVrtIfFlowfilter, + IpctSt::kIpcStValFlowfilter, uudst::vrt_if_flowfilter::kDbiVrtIfFlowFilterNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; - nchild = sizeof(vrt_if_flowfilter_child) / sizeof(vrt_if_flowfilter_child[0]); + nchild = sizeof(vrt_if_flowfilter_child) / + sizeof(vrt_if_flowfilter_child[0]); child = vrt_if_flowfilter_child; } upll_rc_t VrtIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; - ConfigKeyVal *temp_key = NULL; - + if (ikey == NULL || req == NULL) { return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("InputConfigKeyVal %s", ikey->ToStrAll().c_str()); upll_rc_t result_code = UPLL_RC_SUCCESS; - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed, Error - %d", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + pfc_log_debug("ValidateMessage failed, Error - %d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateAttribute failed, Error - %d", result_code); return result_code; } - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS - || result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - return result_code; - } - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, - UNC_OP_READ, dmi, MAINTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - return result_code; + + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; + } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } - } + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { // create a record in CANDIDATE DB VrtIfMoMgr *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VRT_IF))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VRT_IF))); ConfigKeyVal *ckv = NULL; InterfacePortMapInfo flags = kVlinkPortMapNotConfigured; result_code = mgr->GetChildConfigKey(ckv, NULL); key_vrt_if_flowfilter_entry_t *ff_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vrt_if_t *vrtif_key = reinterpret_cast(ckv->get_key()); uuu::upll_strncpy(vrtif_key->vrt_key.vtn_key.vtn_name, - ff_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + ff_key->flowfilter_key.if_key.vrt_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vrtif_key->vrt_key.vrouter_name, - ff_key->flowfilter_key.if_key.vrt_key.vrouter_name, - kMaxLenVtnName + 1); + ff_key->flowfilter_key.if_key.vrt_key.vrouter_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(vrtif_key->if_name, - ff_key->flowfilter_key.if_key.if_name, - kMaxLenInterfaceName + 1); + ff_key->flowfilter_key.if_key.if_name, + kMaxLenInterfaceName + 1); uint8_t* vexternal = reinterpret_cast (ConfigKeyVal::Malloc(kMaxLenVnodeName + 1)); uint8_t* vex_if = reinterpret_cast (ConfigKeyVal::Malloc(kMaxLenInterfaceName + 1)); result_code = mgr->GetVexternal(ckv, req->datatype, dmi, - vexternal, vex_if, flags); + vexternal, vex_if, flags); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckv); FREE_IF_NOT_NULL(vexternal); @@ -182,37 +215,26 @@ upll_rc_t VrtIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, memset(&ctrlr_dom, 0, sizeof(controller_domain)); result_code = GetControllerDomainID(ikey, req->datatype, dmi); if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; + } UPLL_LOG_DEBUG("Failed to Get the Controller Domain details, err:%d", result_code); + return result_code; } GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - result_code = GetChildConfigKey(temp_key, NULL); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed in ValidateCapability"); - return result_code; - } - result_code = GetInstanceCount(temp_key, - reinterpret_cast(ctrlr_dom.ctrlr), - req->datatype, - &cur_instance_count, - dmi, - MAINTBL); - delete temp_key; - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount Failed in ValidateCapability"); - return result_code; - } - - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); - return result_code; - } + result_code = ValidateCapability(req, + ikey, + reinterpret_cast + (ctrlr_dom.ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); + return result_code; + } result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi); return result_code; @@ -225,14 +247,19 @@ upll_rc_t VrtIfFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, upll_rc_t VrtIfFlowFilterMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ikey) return UPLL_RC_ERR_GENERIC; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; // Check the object existence - result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_READ, dmi, &dbop, MAINTBL); + result_code = UpdateConfigDB(ikey, + dt_type, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed %d ", result_code); return result_code; @@ -244,68 +271,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::IsReferenced(ConfigKeyVal *ikey, upll_rc_t VrtIfFlowFilterMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - ConfigKeyVal *okey = NULL; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_DEBUG("input key is null"); - return UPLL_RC_ERR_GENERIC; - } - - key_vrt_if_flowfilter_t *key_vrtif_ff = - reinterpret_cast(ikey->get_key()); - - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VRT_IF))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Memory allocation failed for KT_VRT_IF key struct - %d", - result_code); - return result_code; - } - - key_vrt_if_t *vrtif_key = - reinterpret_cast(okey->get_key()); - - uuu::upll_strncpy(vrtif_key->vrt_key.vtn_key.vtn_name, - key_vrtif_ff->if_key.vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); - - uuu::upll_strncpy(vrtif_key->vrt_key.vrouter_name, - key_vrtif_ff->if_key.vrt_key.vrouter_name, - kMaxLenVnodeName + 1); - - uuu::upll_strncpy(vrtif_key->if_name, - key_vrtif_ff->if_key.if_name, - kMaxLenInterfaceName + 1); - - /* Checks the given key_vrt_if exists in DB or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent KT_VRT_IF key does not exists"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - if (UNC_OP_CREATE == req->operation) { - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - } - - delete okey; - okey = NULL; - - UPLL_LOG_DEBUG("ValidateAttribute Successfull."); - return result_code; + // No operation + return UPLL_RC_SUCCESS; } upll_rc_t VrtIfFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, @@ -320,8 +287,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VRT_IF))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VRT_IF))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -411,254 +378,99 @@ upll_rc_t VrtIfFlowFilterMoMgr::GetRenamedControllerKey( UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; - uint8_t rename = 0; - IsRenamed(ikey, dt_type, dmi, rename); - if (!rename) { - UPLL_LOG_DEBUG("no renamed"); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_TRACE("Start... Input ConfigKeyVal %s", - ikey->ToStrAll().c_str()); - - MoMgrImpl *VrtMoMgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VROUTER))); - if (VrtMoMgr == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - result_code = VrtMoMgr->GetChildConfigKey(okey, NULL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return UPLL_RC_ERR_GENERIC; - } - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name)); - - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vrouter_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vrouter_name)); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; - /* ctrlr_name */ - result_code = VrtMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // NULL Checks Missing - val_rename_vnode *rename_val = reinterpret_cast - ((GetVal(okey))); - if (!rename_val) { - UPLL_LOG_DEBUG("vrt Name is not Valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name, - rename_val->ctrlr_vtn_name, - (kMaxLenVtnName + 1)); + MoMgrImpl *VrtMoMgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VROUTER))); + if (VrtMoMgr == NULL) { + UPLL_LOG_DEBUG("obj null"); + return UPLL_RC_ERR_GENERIC; } - if (rename & VRT_RENAME_FLAG) { - UPLL_LOG_DEBUG("vrt name renamed"); - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vrouter_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); + result_code = VrtMoMgr->GetChildConfigKey(okey, NULL); + if ( result_code != UPLL_RC_SUCCESS ) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_TRACE("End ... GetRenamedCtrl InputConfigKeyVal %s", - ikey->ToStrAll().c_str()); - UPLL_LOG_DEBUG("GetRenamedControllerKey::Success"); - return UPLL_RC_SUCCESS; -#if 0 - /* vtn renamed */ - if (rename & VTN_RENAME_FLAG) { - UPLL_LOG_DEBUG("vtn name renamed"); - MoMgrImpl *VtnMoMgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); - if (VtnMoMgr == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - - VtnMoMgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } - - if (ctrlr_dom != NULL) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name)); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = VtnMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // NULL Checks Missing - val_rename_vtn *rename_val = reinterpret_cast - ((GetVal(okey))); - if (!rename_val) { - UPLL_LOG_DEBUG("Vtn Name is not Valid."); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name, - rename_val->new_name, - (kMaxLenVtnName + 1)); - SET_USER_DATA_FLAGS(ikey, rename); + if (ctrlr_dom) { + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + } else { + UPLL_LOG_DEBUG("ctrlr null"); DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } - /*Vrouter_name*/ - if (rename & VRT_RENAME_FLAG) { - UPLL_LOG_DEBUG("vrt name renamed"); - MoMgrImpl *VrtMoMgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VROUTER))); - if (VrtMoMgr == NULL) { - UPLL_LOG_DEBUG("obj null"); - return UPLL_RC_ERR_GENERIC; - } - result_code = VrtMoMgr->GetChildConfigKey(okey, ikey); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return UPLL_RC_ERR_GENERIC; - } - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } - else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name)); - - strncpy(reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vrouter_name), - kMaxLenVtnName + 1); - UPLL_LOG_DEBUG("vrt name (%s) (%s)", - reinterpret_cast - (reinterpret_cast(okey->get_key())->vrouter_name), - reinterpret_cast - (reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vrouter_name)); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - /* ctrlr_name */ - result_code = VrtMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); - if ( result_code != UPLL_RC_SUCCESS ) { - UPLL_LOG_DEBUG("ReadConfigDB fail"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - // NULL Checks Missing - val_rename_vnode *rename_val = reinterpret_cast - ((GetVal(okey))); - if (!rename_val) { - UPLL_LOG_DEBUG("vrt Name is not Valid"); + strncpy(reinterpret_cast + (reinterpret_cast(okey->get_key())->vtn_key.vtn_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name), + kMaxLenVtnName + 1); + UPLL_LOG_DEBUG("vrt name (%s) (%s)", + reinterpret_cast + (reinterpret_cast + (okey->get_key())->vtn_key.vtn_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name)); + + strncpy(reinterpret_cast + (reinterpret_cast(okey->get_key())->vrouter_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())->if_key.vrt_key.vrouter_name), + kMaxLenVnodeName + 1); + UPLL_LOG_DEBUG("vrt name (%s) (%s)", + reinterpret_cast + (reinterpret_cast(okey->get_key())->vrouter_name), + reinterpret_cast + (reinterpret_cast + (ikey->get_key())->if_key.vrt_key.vrouter_name)); + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; + /* ctrlr_name */ + result_code = VrtMoMgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, RENAMETBL); + if ( result_code != UPLL_RC_SUCCESS ) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("ReadConfigDB no instance"); DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_SUCCESS; } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->if_key.vrt_key.vrouter_name, - rename_val->ctrlr_vnode_name, - (kMaxLenVnodeName + 1)); + UPLL_LOG_DEBUG("ReadConfigDB fail"); DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_TRACE("%s GetRenamedCtrl vrt_if_ff end", ikey->ToStrAll().c_str()); - UPLL_LOG_DEBUG("GetRenamedControllerKey::GetRenamedControllerKey Success"); + // NULL Checks Missing + val_rename_vnode *rename_val = reinterpret_cast + ((GetVal(okey))); + if (!rename_val) { + UPLL_LOG_DEBUG("vrt Name is not Valid"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + + uuu::upll_strncpy( + reinterpret_cast + (ikey->get_key())->if_key.vrt_key.vtn_key.vtn_name, + rename_val->ctrlr_vtn_name, + (kMaxLenVtnName + 1)); + + uuu::upll_strncpy( + reinterpret_cast + (ikey->get_key())->if_key.vrt_key.vrouter_name, + rename_val->ctrlr_vnode_name, + (kMaxLenVnodeName + 1)); + + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_TRACE("End ... GetRenamedCtrl InputConfigKeyVal %s", + ikey->ToStrAll().c_str()); + UPLL_LOG_DEBUG("GetRenamedControllerKey::Success"); return UPLL_RC_SUCCESS; -#endif } upll_rc_t VrtIfFlowFilterMoMgr::GetRenamedUncKey( @@ -669,14 +481,15 @@ upll_rc_t VrtIfFlowFilterMoMgr::GetRenamedUncKey( upll_rc_t result_code = UPLL_RC_SUCCESS; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; UPLL_LOG_TRACE("%s GetRenamedUncKey vrtifff start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if ((NULL == ikey) || (ctrlr_id == NULL) || (NULL == dmi)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); return UPLL_RC_ERR_GENERIC; } - MoMgrImpl *VrtMoMgr = reinterpret_cast (const_cast - (GetMoManager(UNC_KT_VROUTER))); + MoMgrImpl *VrtMoMgr = reinterpret_cast ( + const_cast + (GetMoManager(UNC_KT_VROUTER))); if (VrtMoMgr == NULL) { UPLL_LOG_DEBUG("VrtMoMgr NULL"); return UPLL_RC_ERR_GENERIC; @@ -688,21 +501,21 @@ upll_rc_t VrtIfFlowFilterMoMgr::GetRenamedUncKey( return UPLL_RC_ERR_GENERIC; } key_vrt_if_flowfilter_t *ctrlr_key = - reinterpret_cast - (ikey->get_key()); + reinterpret_cast + (ikey->get_key()); if (!ctrlr_key) { UPLL_LOG_DEBUG("rename_val NULL"); free(rename_val); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_val->ctrlr_vtn_name, - ctrlr_key->if_key.vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + ctrlr_key->if_key.vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); rename_val->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_VALID; uuu::upll_strncpy(rename_val->ctrlr_vnode_name, - ctrlr_key->if_key.vrt_key.vrouter_name, - (kMaxLenVnodeName + 1)); + ctrlr_key->if_key.vrt_key.vrouter_name, + (kMaxLenVnodeName + 1)); rename_val->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; result_code = VrtMoMgr->GetChildConfigKey(unc_key, NULL); @@ -721,15 +534,15 @@ upll_rc_t VrtIfFlowFilterMoMgr::GetRenamedUncKey( SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_val); result_code = VrtMoMgr->ReadConfigDB(unc_key, dt_type, - UNC_OP_READ, dbop, dmi, - RENAMETBL); + UNC_OP_READ, dbop, dmi, + RENAMETBL); if (result_code == UPLL_RC_SUCCESS) { key_vrt_if_flowfilter_t *key_vrt_if_flowfilter = - reinterpret_cast (unc_key->get_key()); + reinterpret_cast (unc_key->get_key()); uuu::upll_strncpy( ctrlr_key->if_key.vrt_key.vtn_key.vtn_name, - key_vrt_if_flowfilter->if_key.vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + key_vrt_if_flowfilter->if_key.vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy( ctrlr_key->if_key.vrt_key.vrouter_name, key_vrt_if_flowfilter->if_key.vrt_key.vrouter_name, @@ -737,7 +550,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::GetRenamedUncKey( } UPLL_LOG_TRACE("%s GetRenamedUncKey vbrifff end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); VrtMoMgr = NULL; if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) @@ -913,7 +726,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, // Added CapaCheck result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); delete dup_key; @@ -921,7 +735,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, return result_code; } - // 1.Getting renamed name if renamed + // 1.Getting renamed name if renamed result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -963,10 +777,10 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, ipc_req.header.datatype = req->datatype; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, - true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, + true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -977,8 +791,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); DELETE_IF_NOT_NULL(l_key); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); return ipc_resp.header.result_code; @@ -991,8 +805,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, DELETE_IF_NOT_NULL(ipc_resp.ckv_data); DELETE_IF_NOT_NULL(dup_key); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ConstructReadDetailResponse error code (%d)", - result_code); + UPLL_LOG_DEBUG("ConstructReadDetailResponse error code (%d)", + result_code); return result_code; } else { if (okey != NULL) { @@ -1050,7 +864,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::AllocVal(ConfigVal *&ck_val, val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); ck_val = new ConfigVal(IpctSt::kIpcStValFlowfilter, val); - break; + break; default: val = NULL; return UPLL_RC_ERR_GENERIC; @@ -1100,13 +914,14 @@ upll_rc_t VrtIfFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, key_vrt_if_flowfilter_t *ikey = NULL; ikey = reinterpret_cast (tkey); key_vrt_if_flowfilter_t *vrt_if_flowfilter = - reinterpret_cast + reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt_if_flowfilter_t))); memcpy(vrt_if_flowfilter, ikey, sizeof(key_vrt_if_flowfilter_t)); okey = new ConfigKeyVal(UNC_KT_VRTIF_FLOWFILTER, - IpctSt::kIpcStKeyVrtIfFlowfilter, vrt_if_flowfilter, - tmp1); + IpctSt::kIpcStKeyVrtIfFlowfilter, + vrt_if_flowfilter, + tmp1); SET_USER_DATA(okey, req); UPLL_LOG_DEBUG("DupConfigkeyVal Succesfull."); @@ -1122,7 +937,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, upll_rc_t VrtIfFlowFilterMoMgr::UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; - UPLL_LOG_DEBUG("UpdateMo :: UpdateMo Success "); + UPLL_LOG_DEBUG("Operation not allowed for this KT"); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } @@ -1135,9 +950,9 @@ upll_rc_t VrtIfFlowFilterMoMgr::RenameMo(IpcReqRespHeader *req, } upll_rc_t VrtIfFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckval = NULL; @@ -1154,9 +969,11 @@ upll_rc_t VrtIfFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, if (!ckval) return UPLL_RC_ERR_GENERIC; - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -1190,8 +1007,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, return UPLL_RC_SUCCESS; } upll_rc_t VrtIfFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; if ((NULL == req) || (NULL == ikey)) { @@ -1211,28 +1028,28 @@ upll_rc_t VrtIfFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, const uint8_t *attrs = NULL; uint32_t max_attrs = 0; - switch (req->operation) { + switch (req->operation) { case UNC_OP_CREATE: { - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && cur_instance_count >= max_instance_count && - cur_instance_count !=0 && max_instance_count != 0) { - UPLL_LOG_INFO("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } - break; - } - default : { + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); + break; + } + default : { if (req->datatype == UPLL_DT_STATE) { - UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", req->operation); - result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + UPLL_LOG_TRACE("Calling GetStateCapability Operation %d ", + req->operation); + result_code = GetStateCapability(ctrlr_name, + ikey->get_key_type(), + &max_attrs, + &attrs); } else { - UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", req->operation); + UPLL_LOG_TRACE("Calling GetReadCapability Operation %d ", + req->operation); result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } } } @@ -1261,31 +1078,32 @@ upll_rc_t VrtIfFlowFilterMoMgr::ValidateMessage(IpcReqRespHeader* req, UPLL_LOG_DEBUG(" Invalid keytype(%d)", key->get_key_type()); return UPLL_RC_ERR_BAD_REQUEST; } - if(req->option2 != UNC_OPT2_NONE) { + if (req->option2 != UNC_OPT2_NONE) { UPLL_LOG_DEBUG(" Error: option2 is not NONE"); return UPLL_RC_ERR_INVALID_OPTION2; } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->option1 != UNC_OPT1_DETAIL)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if((req->option1 != UNC_OPT1_NORMAL) - &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { - UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if ((req->option1 == UNC_OPT1_DETAIL) && + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->option1 != UNC_OPT1_DETAIL)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 != UNC_OPT1_NORMAL) + &&(req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Error: option1 is not NORMAL for ReadSiblingCount"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if ((req->option1 == UNC_OPT1_DETAIL) && (req->datatype != UPLL_DT_STATE)) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -1361,20 +1179,20 @@ upll_rc_t VrtIfFlowFilterMoMgr::ValidateVrtIfFlowfilterKey( return UPLL_RC_SUCCESS; } bool VrtIfFlowFilterMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl ) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl ) { /* Main Table only update */ if (MAINTBL == tbl) { nattr = sizeof(vrtIfflowfiltermaintbl_bind_info)/ - sizeof(vrtIfflowfiltermaintbl_bind_info[0]); + sizeof(vrtIfflowfiltermaintbl_bind_info[0]); binfo = vrtIfflowfiltermaintbl_bind_info; } UPLL_LOG_DEBUG(" GetRenameKeyBindInfo::Successful Completeion"); return PFC_TRUE; } upll_rc_t VrtIfFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -1420,7 +1238,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_vrt_if->direction = 0xFE; okey = new ConfigKeyVal(UNC_KT_VRTIF_FLOWFILTER, IpctSt:: - kIpcStKeyVrtIfFlowfilter, key_vrt_if, NULL); + kIpcStKeyVrtIfFlowfilter, key_vrt_if, NULL); if (!okey) { UPLL_LOG_DEBUG("okey NULL"); free(key_vrt_if); @@ -1465,21 +1283,24 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } else if ((req->datatype == UPLL_DT_STATE) && (req->option1 == UNC_OPT1_DETAIL) && (req->option2 == UNC_OPT2_NONE)) { - result_code = DupConfigKeyVal(tctrl_key, ikey, MAINTBL); + result_code = DupConfigKeyVal(tctrl_key, ikey, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal fail in ReadSiblingMo for tctrl_key"); + UPLL_LOG_DEBUG("DupConfigKeyVal fail in ReadSiblingMo" + "for tctrl_key"); return result_code; } result_code = ReadInfoFromDB(req, tctrl_key, dmi, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDb failed for tctrl_key%d ", result_code); + UPLL_LOG_DEBUG("ReadConfigDb failed for tctrl_key%d ", + result_code); DELETE_IF_NOT_NULL(tctrl_key); return result_code; } result_code = DupConfigKeyVal(dup_key, tctrl_key, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" DupConfigKeyVal failed for dup_key%d ", result_code); + UPLL_LOG_DEBUG(" DupConfigKeyVal failed for dup_key%d ", + result_code); DELETE_IF_NOT_NULL(tctrl_key); return result_code; } @@ -1504,7 +1325,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, SET_USER_DATA_CTRLR_DOMAIN(l_key, ctrlr_dom); // Adding CapaXheck result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("validate Capability Failed %d", result_code); DELETE_IF_NOT_NULL(tctrl_key); @@ -1557,8 +1379,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } pfcdrv_val_vbrif_vextif_t *pfc_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); pfc_val->valid[PFCDRV_IDX_INTERFACE_TYPE] = UNC_VF_VALID; pfc_val->valid[PFCDRV_IDX_VEXTERNAL_NAME_VBRIF] = UNC_VF_INVALID; @@ -1586,10 +1408,10 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, (tmp_key->get_key())->direction; ipc_req.ckv_data = l_key; if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, - &ipc_req, true, &ipc_resp)) { + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, + &ipc_req, true, &ipc_resp)) { UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); @@ -1602,7 +1424,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", + UPLL_LOG_DEBUG("Driver response for Key %d controller %s" + "result %d", l_key->get_key_type(), ctrlr_dom.ctrlr, ipc_resp.header.result_code); DELETE_IF_NOT_NULL(tctrl_key); @@ -1794,8 +1617,8 @@ upll_rc_t VrtIfFlowFilterMoMgr::TxUpdateController( } pfcdrv_val_vbrif_vextif_t *pfc_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); pfc_val->valid[PFCDRV_IDX_INTERFACE_TYPE] = UNC_VF_VALID; pfc_val->valid[PFCDRV_IDX_VEXTERNAL_NAME_VBRIF] = UNC_VF_INVALID; @@ -1813,7 +1636,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::TxUpdateController( result_code = SendIpcReq(session_id, config_id, op1, UPLL_DT_CANDIDATE, ck_main, &ctrlr_dom, &ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG(" driver result code - %d", result_code); result_code = UPLL_RC_SUCCESS; } @@ -1852,20 +1675,20 @@ upll_rc_t VrtIfFlowFilterMoMgr::SetVlinkPortmapConfiguration( return result_code; } key_vrt_if_flowfilter_t *ff_key = reinterpret_cast - (ckv->get_key()); + (ckv->get_key()); key_vrt_if_t *vrtif_key = reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(ff_key->if_key.vrt_key.vtn_key.vtn_name, - vrtif_key->vrt_key.vtn_key.vtn_name, - kMaxLenVtnName + 1); + vrtif_key->vrt_key.vtn_key.vtn_name, + kMaxLenVtnName + 1); uuu::upll_strncpy(ff_key->if_key.vrt_key.vrouter_name, - vrtif_key->vrt_key.vrouter_name, - kMaxLenVnodeName + 1); + vrtif_key->vrt_key.vrouter_name, + kMaxLenVnodeName + 1); uuu::upll_strncpy(ff_key->if_key.if_name, - vrtif_key->if_name, - kMaxLenInterfaceName + 1); + vrtif_key->if_name, + kMaxLenInterfaceName + 1); ff_key->direction = 0xFE; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; @@ -1886,31 +1709,44 @@ upll_rc_t VrtIfFlowFilterMoMgr::SetVlinkPortmapConfiguration( flag_port_map = 0; GET_USER_DATA_FLAGS(temp_ckv, flag_port_map); if (flags & kVlinkConfigured) { + if (flag_port_map & SET_FLAG_VLINK) { + UPLL_LOG_DEBUG("vlink flag is already set in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } flag_port_map |= SET_FLAG_VLINK; } else { + if (flag_port_map & SET_FLAG_NO_VLINK_PORTMAP) { + UPLL_LOG_DEBUG("Port-Map/vlink flag is already cleared in DB"); + DELETE_IF_NOT_NULL(ckv); + return UPLL_RC_SUCCESS; + } flag_port_map &= SET_FLAG_NO_VLINK_PORTMAP; } SET_USER_DATA_FLAGS(temp_ckv, flag_port_map); DbSubOp dbop_update = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; result_code = UpdateConfigDB(temp_ckv, dt_type, UNC_OP_UPDATE, - dmi, &dbop_update, MAINTBL); + dmi, &dbop_update, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckv); return result_code; } VrtIfFlowFilterEntryMoMgr *mgr = - reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VRTIF_FLOWFILTER_ENTRY))); + reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VRTIF_FLOWFILTER_ENTRY))); if (mgr == NULL) { - DELETE_IF_NOT_NULL(ckv); + DELETE_IF_NOT_NULL(ckv); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("Sending vlink flag=%d for ff entry", flags); - result_code = mgr->SetVlinkPortmapConfiguration(ikey, dt_type, dmi, flags, - oper); + result_code = mgr->SetVlinkPortmapConfiguration(temp_ckv, + dt_type, + dmi, + flags, + oper); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Unable to update vlink flag for flowfilterentry, err %d", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv); return result_code; } @@ -1920,9 +1756,10 @@ upll_rc_t VrtIfFlowFilterMoMgr::SetVlinkPortmapConfiguration( return UPLL_RC_SUCCESS; } -upll_rc_t VrtIfFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VrtIfFlowFilterMoMgr::GetControllerDomainID( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -1937,7 +1774,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, result_code = mgrvrtif->GetChildConfigKey(ckv, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to get the ParentConfigKey, resultcode=%d", - result_code); + result_code); return result_code; } @@ -1973,26 +1810,26 @@ upll_rc_t VrtIfFlowFilterMoMgr::GetControllerDomainID(ConfigKeyVal *ikey, UPLL_LOG_INFO("GetControllerDomainId error err code(%d)", result_code); DELETE_IF_NOT_NULL(vrt_key); DELETE_IF_NOT_NULL(ckv); - return UPLL_RC_ERR_GENERIC; + return result_code; } SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); UPLL_LOG_DEBUG("ctrlrid %s, domainid %s", - ctrlr_dom.ctrlr, ctrlr_dom.domain); + ctrlr_dom.ctrlr, ctrlr_dom.domain); DELETE_IF_NOT_NULL(vrt_key); DELETE_IF_NOT_NULL(ckv); return result_code; } upll_rc_t VrtIfFlowFilterMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; if (!ikey) { UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VRTIF_FLOWFILTER) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -2064,14 +1901,14 @@ upll_rc_t VrtIfFlowFilterMoMgr::ConstructReadDetailResponse( } upll_rc_t VrtIfFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; uint8_t flags = 0; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. @@ -2086,18 +1923,17 @@ upll_rc_t VrtIfFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("GetRenamed UncKey Passed"); pfcdrv_val_vbrif_vextif_t *pfc_val = - reinterpret_cast (GetVal(ikey)); + reinterpret_cast (GetVal(ikey)); if (pfc_val == NULL) { UPLL_LOG_DEBUG("Val Structure is EWmpty"); return UPLL_RC_ERR_GENERIC; } - + if (pfc_val->interface_type == PFCDRV_IF_TYPE_VBRIF) { flags = SET_FLAG_VLINK; - } - else { - flags = 0; + } else { + flags = 0; } ConfigKeyVal *okey = NULL; @@ -2121,7 +1957,11 @@ upll_rc_t VrtIfFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, ctrlr_dom.ctrlr, ctrlr_dom.domain); // Create a record in AUDIT DB - result_code = UpdateConfigDB(okey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); + result_code = UpdateConfigDB(okey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); DELETE_IF_NOT_NULL(okey); @@ -2132,15 +1972,16 @@ upll_rc_t VrtIfFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } upll_rc_t VrtIfFlowFilterMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_flowfilter_t *val = NULL; val = (ckv_running != NULL)? - reinterpret_cast (GetVal(ckv_running)):NULL; + reinterpret_cast (GetVal(ckv_running)):NULL; if (NULL == val) { UPLL_LOG_DEBUG("UpdateAuditConfigStatus :: Memory Not Allocated"); @@ -2149,21 +1990,23 @@ upll_rc_t VrtIfFlowFilterMoMgr::UpdateAuditConfigStatus( if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; UPLL_LOG_DEBUG("Update Audit Config Status Successfull"); return result_code; } -upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi) { +upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController( + unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode db_result = uud::kDalRcSuccess; @@ -2174,7 +2017,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, ConfigKeyVal *ckv_running_db = NULL; ConfigKeyVal *ckv_audit_db = NULL; ConfigKeyVal *ckv_driver_req = NULL; - ConfigKeyVal *ckv_audit_dup_db = NULL; + ConfigKeyVal *ckv_audit_dup_db = NULL; DalCursor *cursor = NULL; uint8_t db_flag = 0; // uint8_t flag = 0; @@ -2183,33 +2026,42 @@ upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, GET_TABLE_TYPE(keytype, tbl); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); unc_keytype_operation_t op1 = op; if (phase == uuc::kUpllUcpDelete2) - return result_code; + return result_code; /* retreives the delta of running and audit configuration */ - UPLL_LOG_DEBUG("Operation is %d", op); + UPLL_LOG_DEBUG("Operation is %d", op); result_code = DiffConfigDB(UPLL_DT_RUNNING, UPLL_DT_AUDIT, op, - ckv_running_db, ckv_audit_db, - &cursor, dmi, ctrlr, tbl); + ckv_running_db, ckv_audit_db, + &cursor, dmi, ctrlr, tbl); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("No more diff found for operation %d", op); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + return UPLL_RC_SUCCESS; + } if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DiffConfigDB failed - %d", result_code); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return result_code; } while (uud::kDalRcSuccess == (db_result = dmi->GetNextRecord(cursor))) { op1 = op; if (phase != uuc::kUpllUcpDelete) { uint8_t *db_ctrlr = NULL; - GET_USER_DATA_CTRLR(ckv_running_db,db_ctrlr); + GET_USER_DATA_CTRLR(ckv_running_db, db_ctrlr); UPLL_LOG_DEBUG("db ctrl_id and audit ctlr_id are %s %s", db_ctrlr, ctrlr_id); // Skipping the controller ID if the controller id in DB and // controller id available for Audit are not the same - if (db_ctrlr && strncmp(reinterpret_cast(db_ctrlr), - reinterpret_cast(ctrlr_id), - strlen(reinterpret_cast(ctrlr_id)) + 1)) { + if (db_ctrlr && strncmp( + reinterpret_cast(db_ctrlr), + reinterpret_cast(ctrlr_id), + strlen(reinterpret_cast(ctrlr_id)) + 1)) { continue; } } @@ -2217,74 +2069,89 @@ upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, switch (phase) { case uuc::kUpllUcpDelete: UPLL_LOG_TRACE("Deleted record is %s ", - ckv_running_db->ToStrAll().c_str()); + ckv_running_db->ToStrAll().c_str()); result_code = GetChildConfigKey(ckv_driver_req, ckv_running_db); if (!ckv_driver_req || result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return result_code; } UPLL_LOG_TRACE("ckv_driver_req in delete is %s", - ckv_driver_req->ToStrAll().c_str()) - if (ckv_driver_req->get_cfg_val()) { - UPLL_LOG_DEBUG("Invalid param"); + ckv_driver_req->ToStrAll().c_str()) + if (ckv_driver_req->get_cfg_val()) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + if (cursor) + dmi->CloseCursor(cursor, true); + return UPLL_RC_ERR_GENERIC; + } + result_code = ReadConfigDB(ckv_driver_req, UPLL_DT_AUDIT, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } - result_code = ReadConfigDB(ckv_driver_req, UPLL_DT_AUDIT, UNC_OP_READ, - dbop, dmi, MAINTBL); + break; + case uuc::kUpllUcpCreate: + UPLL_LOG_TRACE("Created record is %s ", + ckv_running_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); + UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", + result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); - return UPLL_RC_ERR_GENERIC; + return result_code; } break; - case uuc::kUpllUcpCreate: - UPLL_LOG_TRACE("Created record is %s ", - ckv_running_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", - result_code, phase); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; - } - break; case uuc::kUpllUcpUpdate: - ckv_audit_dup_db = NULL; - ckv_driver_req = NULL; - UPLL_LOG_TRACE("UpdateRecord running DB record is %s ", - ckv_running_db->ToStrAll().c_str()); - UPLL_LOG_TRACE("UpdateRecord AuditDB record is %s ", - ckv_audit_db->ToStrAll().c_str()); - result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; - } - result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); - DELETE_IF_NOT_NULL(ckv_driver_req); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; - } + ckv_audit_dup_db = NULL; + ckv_driver_req = NULL; + UPLL_LOG_TRACE("UpdateRecord running DB record is %s ", + ckv_running_db->ToStrAll().c_str()); + UPLL_LOG_TRACE("UpdateRecord AuditDB record is %s ", + ckv_audit_db->ToStrAll().c_str()); + result_code = DupConfigKeyVal(ckv_driver_req, ckv_running_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record." + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + if (cursor) + dmi->CloseCursor(cursor, true); + return result_code; + } + result_code = DupConfigKeyVal(ckv_audit_dup_db, ckv_audit_db, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. " + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + if (cursor) + dmi->CloseCursor(cursor, true); + return result_code; + } break; default: UPLL_LOG_DEBUG("Invalid operation %d", phase); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); return UPLL_RC_ERR_NO_SUCH_OPERATION; - break; } if (!ckv_driver_req) return UPLL_RC_ERR_GENERIC; GET_USER_DATA_CTRLR_DOMAIN(ckv_driver_req, ctrlr_dom); @@ -2292,12 +2159,14 @@ upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, UPLL_LOG_INFO("controller id or domain is NULL"); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + ctrlr_dom.domain); db_flag = 0; GET_USER_DATA_FLAGS(ckv_driver_req, db_flag); @@ -2318,21 +2187,36 @@ upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, continue; } } - if (UNC_OP_UPDATE == op1) { + if (UNC_OP_UPDATE == op1) { void *running_val = NULL; bool invalid_attr = false; running_val = GetVal(ckv_running_db); invalid_attr = FilterAttributes(running_val, - GetVal(ckv_audit_dup_db), false, UNC_OP_UPDATE); + GetVal(ckv_audit_dup_db), + false, + UNC_OP_UPDATE); if (invalid_attr) { DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ckv_audit_dup_db); + // Assuming that the diff found only in ConfigStatus + // Setting the value as OnlyCSDiff in the out parameter + // ctrlr_affected + // The value Configdiff should be given more priority than the value + // onlycs . + // So If the out parameter ctrlr_affected has already value + // as configdiff + // then dont change the value + if (*ctrlr_affected != uuc::kCtrlrAffectedConfigDiff) { + UPLL_LOG_INFO("Setting the ctrlr_affected to OnlyCSDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedOnlyCSDiff; + } continue; } } + DELETE_IF_NOT_NULL(ckv_audit_dup_db); upll_keytype_datatype_t dt_type = (op1 == UNC_OP_DELETE)? - UPLL_DT_AUDIT : UPLL_DT_RUNNING; + UPLL_DT_AUDIT : UPLL_DT_RUNNING; result_code = GetRenamedControllerKey(ckv_driver_req, UPLL_DT_RUNNING, dmi, &ctrlr_dom); @@ -2341,21 +2225,24 @@ upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, UPLL_LOG_DEBUG(" GetRenamedControllerKey failed err code(%d)", result_code); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return result_code; } - + pfcdrv_val_vbrif_vextif_t *pfc_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(pfcdrv_val_vbrif_vextif_t))); pfc_val->valid[PFCDRV_IDX_INTERFACE_TYPE] = UNC_VF_VALID; pfc_val->valid[PFCDRV_IDX_VEXTERNAL_NAME_VBRIF] = UNC_VF_INVALID; pfc_val->valid[PFCDRV_IDX_VEXT_IF_NAME_VBRIF] = UNC_VF_INVALID; pfc_val->interface_type = PFCDRV_IF_TYPE_VBRIF; - ckv_driver_req->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValVbrifVextif, pfc_val)); + ckv_driver_req->SetCfgVal(new ConfigVal + (IpctSt::kIpcStPfcdrvValVbrifVextif, pfc_val)); IpcResponse ipc_response; memset(&ipc_response, 0, sizeof(IpcResponse)); @@ -2366,94 +2253,136 @@ upll_rc_t VrtIfFlowFilterMoMgr::AuditUpdateController(unc_key_type_t keytype, ipc_req.header.operation = op1; ipc_req.header.datatype = UPLL_DT_CANDIDATE; ipc_req.ckv_data = ckv_driver_req; - if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, reinterpret_cast - (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_response)) { + if (!IpcUtil::SendReqToDriver((const char *)ctrlr_dom.ctrlr, + reinterpret_cast + (ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_response)) { UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ckv_driver_req->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); + ckv_driver_req->get_key_type(), + reinterpret_cast + (ctrlr_dom.ctrlr)); DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); if (cursor) dmi->CloseCursor(cursor, true); return UPLL_RC_ERR_GENERIC; } - if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("driver return failure err_code is %d", ipc_response.header.result_code); + if (ipc_response.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("driver return failure err_code is %d", + ipc_response.header.result_code); + *err_ckv = ckv_running_db; + + if (phase != uuc::kUpllUcpDelete) { ConfigKeyVal *resp = NULL; - + result_code = GetChildConfigKey(resp, ipc_response.ckv_data); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for ipc response ckv err_code %d", - result_code); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - DELETE_IF_NOT_NULL(ckv_driver_req); - if (cursor) - dmi->CloseCursor(cursor, true); - return result_code; + UPLL_LOG_DEBUG("DupConfigKeyVal failed for ipc response" + "ckv err_code %d", + result_code); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_driver_req); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; + if (cursor) + dmi->CloseCursor(cursor, true); + return result_code; } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; - result_code = ReadConfigDB(resp, dt_type, UNC_OP_READ, dbop,dmi, MAINTBL); + result_code = ReadConfigDB(resp, + dt_type, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ReadConfigDB Failed"); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; if (cursor) dmi->CloseCursor(cursor, true); return result_code; } - - result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, phase, resp); + + result_code = UpdateAuditConfigStatus(UNC_CS_INVALID, + phase, + resp, + dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Update Audit config status failed %d", - result_code); + result_code); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; if (cursor) dmi->CloseCursor(cursor, true); return result_code; } DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutCs }; result_code = UpdateConfigDB(resp, dt_type, UNC_OP_UPDATE, - dmi, &dbop1, tbl); + dmi, &dbop1, tbl); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response ckv err_code %d", - result_code); + UPLL_LOG_DEBUG("UpdateConfigDB failed for ipc response" + "ckv err_code %d", + result_code); DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(ckv_running_db); + DELETE_IF_NOT_NULL(ckv_audit_db); + *err_ckv = NULL; if (cursor) - dmi->CloseCursor(cursor, true); + dmi->CloseCursor(cursor, true); return result_code; - } + } DELETE_IF_NOT_NULL(resp); + } + return ipc_response.header.result_code; } DELETE_IF_NOT_NULL(ckv_driver_req); DELETE_IF_NOT_NULL(ipc_response.ckv_data); - *ctrlr_affected = true; + // *ctrlr_affected = true; + if (*ctrlr_affected == uuc::kCtrlrAffectedOnlyCSDiff) { + UPLL_LOG_INFO("Reset ctrlr state from OnlyCSDiff to ConfigDiff"); + } + UPLL_LOG_DEBUG("Setting the ctrlr_affected to ConfigDiff"); + *ctrlr_affected = uuc::kCtrlrAffectedConfigDiff; } if (cursor) - dmi->CloseCursor(cursor, true); + dmi->CloseCursor(cursor, true); if (uud::kDalRcSuccess != db_result) { - UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); - result_code = DalToUpllResCode(db_result); + UPLL_LOG_DEBUG("GetNextRecord from database failed - %d", db_result); + result_code = DalToUpllResCode(db_result); } - + DELETE_IF_NOT_NULL(ckv_running_db); DELETE_IF_NOT_NULL(ckv_audit_db); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code; + ? UPLL_RC_SUCCESS : result_code; return result_code; } -upll_rc_t VrtIfFlowFilterMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { +upll_rc_t VrtIfFlowFilterMoMgr::DeleteChildrenPOM( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == dmi) { - UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); - return result_code; + UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); + return result_code; } // Read the DB get the flowlist value and send the delete request to // flowlist momgr if flowlist is configured. @@ -2465,7 +2394,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, return result_code; } result_code = UpdateConfigDB(tempckv, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("UPLL_RC_ERR_NO_SUCH_INSTANCE"); @@ -2473,7 +2402,7 @@ upll_rc_t VrtIfFlowFilterMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(tempckv); return result_code; } @@ -2485,16 +2414,16 @@ upll_rc_t VrtIfFlowFilterMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, upll_rc_t VrtIfFlowFilterMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { UPLL_FUNC_TRACE; val_flowfilter_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); val->cs_row_status = UNC_CS_APPLIED; ikey->AppendCfgVal(IpctSt::kIpcStValFlowfilter, val); return UPLL_RC_SUCCESS; } bool VrtIfFlowFilterMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return true; @@ -2502,4 +2431,4 @@ bool VrtIfFlowFilterMoMgr::FilterAttributes(void *&val1, } } // namespace kt_momgr } // namespace upll -} // namespace eunc +} // namespace unc diff --git a/coordinator/modules/upll/vrt_if_flowfilter_momgr.hh b/coordinator/modules/upll/vrt_if_flowfilter_momgr.hh index 875e21a8..8968d03e 100644 --- a/coordinator/modules/upll/vrt_if_flowfilter_momgr.hh +++ b/coordinator/modules/upll/vrt_if_flowfilter_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -27,418 +27,421 @@ enum vrtifflowfilterMoMgrTables { */ class VrtIfFlowFilterMoMgr : public MoMgrImpl { - private: - static unc_key_type_t vrt_if_flowfilter_child[]; - static BindInfo vrt_if_flowfilter_bind_info[]; - static BindInfo vrtIfflowfiltermaintbl_bind_info[]; - uint32_t cur_instance_count; - public: - /** - * @brief Method used to fill the CongigKeyVal with the - Parent Class Information. - - * @param[out] okey This Contains the pointerto the - ConfigKeyVal Class forwhich - fields have to be updated - with values from the parent Class. - * @param[in] parent_key This Contains the pointer to the - ConfigKeyVal Class which is the - Parent Class used to fill the details. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - - /** - * @brief Method used to get the RenamedUncKey. - * @param[out] ikey This Contains the pointer to - the Class for which fields have - to be updated with values from - the parent Class. - * @param[in] dt_type Describes Configiration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id); - - /** - * @brief Method used to get the RenamedUncKey. - * @param[out] ikey This Contains the pointer to - the Class for which fields have - to be updated with values from - the parent Class. - * @param[in] dt_type Describes Configiration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom = NULL); - /** - * @brief Method Updates the ConfigStatus for AuditConfigiration. - * - * @param[out] ckv_running This Contains the pointer to the Class - * for which Audit ConfigStatus is Updated. - * @param[in] cs_status Describes CsStaus Information. - * Information. - * @param[in] phase Describes the Phase of the Operation. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_GENERIC Returned Generic Error. - */ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - - /** - * @brief Method Updates the ConfigStatus for AuditConfigiration. - - * @param[out] ckv_db This Contains the pointer to - the Class for which ConfigStatus - is Updated. - * @param[in] ctrlr_commit_status Describes Commit Control Status Information. - * @param[in] response_code Describes the Response Code. - * @param[in] dmi Pinter to DalDmlIntf Class. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Such Instance Exist - */ - upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + private: + static unc_key_type_t vrt_if_flowfilter_child[]; + static BindInfo vrt_if_flowfilter_bind_info[]; + static BindInfo vrtIfflowfiltermaintbl_bind_info[]; + + public: + /** + * @brief Method used to fill the CongigKeyVal with the + Parent Class Information. + + * @param[out] okey This Contains the pointerto the + ConfigKeyVal Class forwhich + fields have to be updated + with values from the parent Class. + * @param[in] parent_key This Contains the pointer to the + ConfigKeyVal Class which is the + Parent Class used to fill the details. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + + /** + * @brief Method used to get the RenamedUncKey. + * @param[out] ikey This Contains the pointer to + the Class for which fields have + to be updated with values from + the parent Class. + * @param[in] dt_type Describes Configiration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id); + + /** + * @brief Method used to get the RenamedUncKey. + * @param[out] ikey This Contains the pointer to + the Class for which fields have + to be updated with values from + the parent Class. + * @param[in] dt_type Describes Configiration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom = NULL); + /** + * @brief Method Updates the ConfigStatus for AuditConfigiration. + * + * @param[out] ckv_running This Contains the pointer to the Class + * for which Audit ConfigStatus is Updated. + * @param[in] cs_status Describes CsStaus Information. + * Information. + * @param[in] phase Describes the Phase of the Operation. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_GENERIC Returned Generic Error. + */ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - /** - * @brief Method used for Trasaction Vote Operation. - - * @param[in] key Pointer to ConfigKeyVal Class. - * @param[in] op Describes the Type of Opeartion. - * @param[in] driver_result Describes the result of Driver Operation. - * @param[in] upd_key Pointer to ConfigKeyVal Class. - * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t UpdateConfigStatus(ConfigKeyVal *key, unc_keytype_operation_t op, - uint32_t driver_result, ConfigKeyVal *upd_key, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key); - - /** - * @brief Allocates Memory for the Incoming Pointer to the Class. - - * @param[out] ck_val This Contains the pointer to the Class for - which memory has to be allocated. - * @param[in] dt_type Describes Configiration Information. - * @param[in] tbl Describes the Destination table Information. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl); - - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * For this KT this function will always return sucess since - * there is not Valid array associated in the value structure - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - * @retval UPLL_RC_SUCCESS Successful Completion - **/ - upll_rc_t GetValid(void*val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - return UPLL_RC_SUCCESS; - } - - /** - * @Brief This API is used to check the object availability - * in CANDIDATE DB - * - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dt_type Configuration information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Error code. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Record in DB. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record exists in DB. - */ - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - - /** - * @brief Validates the Attribute of a Particular Class. - * - * @param[in] kval This contains the Class to which the fields - * have to be validated. - * @param[in] dmi Pointer to DbInterface - * - * @retval UPLL_RC_SUCCESS Successfull Completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - - /** - * @brief Method used to Duplicate the ConfigkeyVal. - - * @param[out] okey This Contains the pointer to - the Class for which fields - have to be updated with values - from the Request. - * @param[in] req This Contains the pointer to the - Class which is used for the Duplication . - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure - */ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl); - - /** - * @brief Method used for Validation before Merge. - - * @param[in] ikey This Contains the pointer to the - Class for which fields have to - be Validated before the Merge. - * @param[in] keytype Describes the keyType Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_MERGE_CONFLICT MetgeConflict - */ - upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - - /** - * @brief Method used for rename Operation. - - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes the Controller Name. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT No Operation Allowed - */ - upll_rc_t RenameMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi, const char *ctrlr_id); - - /** - * @brief Method used for Update Operation. - - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Generic failure - */ - upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + /** + * @brief Method Updates the ConfigStatus for AuditConfigiration. + + * @param[out] ckv_db This Contains the pointer to + the Class for which ConfigStatus + is Updated. + * @param[in] ctrlr_commit_status Describes Commit Control Status Information. + * @param[in] response_code Describes the Response Code. + * @param[in] dmi Pinter to DalDmlIntf Class. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Such Instance Exist + */ + upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /** + * @brief Method used for Trasaction Vote Operation. + + * @param[in] key Pointer to ConfigKeyVal Class. + * @param[in] op Describes the Type of Opeartion. + * @param[in] driver_result Describes the result of Driver Operation. + * @param[in] upd_key Pointer to ConfigKeyVal Class. + * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + upll_rc_t UpdateConfigStatus(ConfigKeyVal *key, unc_keytype_operation_t op, + uint32_t driver_result, ConfigKeyVal *upd_key, + DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key); + + /** + * @brief Allocates Memory for the Incoming Pointer to the Class. + + * @param[out] ck_val This Contains the pointer to the Class for + which memory has to be allocated. + * @param[in] dt_type Describes Configiration Information. + * @param[in] tbl Describes the Destination table Information. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl); + + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * For this KT this function will always return sucess since + * there is not Valid array associated in the value structure + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + * @retval UPLL_RC_SUCCESS Successful Completion + **/ + upll_rc_t GetValid(void*val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + return UPLL_RC_SUCCESS; + } + + /** + * @Brief This API is used to check the object availability + * in CANDIDATE DB + * + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dt_type Configuration information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Error code. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No Record in DB. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record exists in DB. + */ + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + + /** + * @brief Validates the Attribute of a Particular Class. + * + * @param[in] kval This contains the Class to which the fields + * have to be validated. + * @param[in] dmi Pointer to DbInterface + * + * @retval UPLL_RC_SUCCESS Successfull Completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + + /** + * @brief Method used to Duplicate the ConfigkeyVal. + + * @param[out] okey This Contains the pointer to + the Class for which fields + have to be updated with values + from the Request. + * @param[in] req This Contains the pointer to the + Class which is used for the Duplication . + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure + */ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl); + + /** + * @brief Method used for Validation before Merge. + + * @param[in] ikey This Contains the pointer to the + Class for which fields have to + be Validated before the Merge. + * @param[in] keytype Describes the keyType Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_MERGE_CONFLICT MetgeConflict + */ + upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, + ConfigKeyVal *ikey, DalDmlIntf *dmi); + + /** + * @brief Method used for rename Operation. + + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes the Controller Name. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT No Operation Allowed + */ + upll_rc_t RenameMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi, const char *ctrlr_id); + + /** + * @brief Method used for Update Operation. + + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Generic failure + */ + upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VRTIF_FLOWFILTER keytype + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request structure + * @param[in] ConfigKeyVal key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vrtif_flowfilter is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); + + /** + * @Brief Validates the syntax for KT_VRTIF_FLOWFILTER keytype key structure. + * + * @param[in] key_vbrif_flowfilter KT_VRTIF_FLOWFILTER key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVrtIfFlowfilterKey( + key_vrt_if_flowfilter_t* key_vrt_if_flowfilter, + unc_keytype_operation_t op); + /** + * @Brief Method used to get the Bind Info Structure for Rename Purpose. + * + * @param[in] key_type Describes the KT Information. + * @param[in] nattr Describes the Tbl For which the Operation is + * Targeted. + * @param[in] tbl Describes the Table Information + * + * @retval pfc_true Successful Completion. + * @retval pfc_fasle Failure. + */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl); + /** + * @brief Method to Copy The ConfigkeyVal with the Input Key. + * + * @param[out] okey Pointer to ConfigKeyVal Class for which attributes + * have to be copied. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * + * @retval UPLL_RC_SUCCESS Successfull Completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + /** + * @Brief Checks if the specified key type(KT_VRTIF_FLOWFILTER_ENTRY) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input + * request structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name specifies The Ctrl Name + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char* ctrlr_name = NULL); + + /** + * @brief Method To Compare the Valid Check of Attributes + * + * @param[out] val1 Pointer to ConfigKeyVal Class which contains only Valid Attributes + * @param[in] val2 Pointer to ConfigKeyVal Class. + * @param[in] audit If true,Audit Process. + * + * @return Void Function. + */ + bool CompareValidValue(void *&val1, void *val2, bool audit) { + return false; + } + + /** + * @brief Method to check validity of Key + * + * @param[in] ConfigKeyVal input COnfigKeyVal + * @param[out] index DB Column Index + * + * @return TRUE Success + * @retval FALSE Failure + **/ + bool IsValidKey(void *key, + uint64_t index); + + /** + * @brief Method used for GetParentConfigKey Operation. + * + * @param[out] okey Pointer to ConfigKeyVal Class. + * @param[in] parent_key Pointer to ConfigKeyVal Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + + /** + * @brief Method used for ReadDetail Operation. + * + * @param[in,out] ikey Pointer to ConfigKeyVal Class. + * @param[in] dt_type Describes Configiration Information. + * @param[in] op Describes the Type of Opeartion. + * @param[in] dbop Describes the dbop Type + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] domain_id Pointer to domain_id. + * @param[in] dctrlr_id Pointer to ctrlr_id. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + + upll_rc_t ReadDetail(ConfigKeyVal *ikey, + ConfigKeyVal *dup_key, + IpcResponse *ipc_response, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DbSubOp dbop, DalDmlIntf *dmi); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VRTIF_FLOWFILTER keytype - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request structure - * @param[in] ConfigKeyVal key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vrtif_flowfilter is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); - - /** - * @Brief Validates the syntax for KT_VRTIF_FLOWFILTER keytype key structure. - * - * @param[in] key_vbrif_flowfilter KT_VRTIF_FLOWFILTER key structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVrtIfFlowfilterKey( - key_vrt_if_flowfilter_t* key_vrt_if_flowfilter, - unc_keytype_operation_t op); - /** - * @Brief Method used to get the Bind Info Structure for Rename Purpose. - * - * @param[in] key_type Describes the KT Information. - * @param[in] nattr Describes the Tbl For which the Operation is - * Targeted. - * @param[in] tbl Describes the Table Information - * - * @retval pfc_true Successful Completion. - * @retval pfc_fasle Failure. - */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl); - /** - * @brief Method to Copy The ConfigkeyVal with the Input Key. - * - * @param[out] okey Pointer to ConfigKeyVal Class for which attributes - * have to be copied. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * - * @retval UPLL_RC_SUCCESS Successfull Completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - /** - * @Brief Checks if the specified key type(KT_VRTIF_FLOWFILTER_ENTRY) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input - * request structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name specifies The Ctrl Name - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); - - /** - * @brief Method To Compare the Valid Check of Attributes - * - * @param[out] val1 Pointer to ConfigKeyVal Class which contains only Valid Attributes - * @param[in] val2 Pointer to ConfigKeyVal Class. - * @param[in] audit If true,Audit Process. - * - * @return Void Function. - */ - bool CompareValidValue(void *&val1, void *val2, bool audit) { - return false; - } - - /** - * @brief Method to check validity of Key - * - * @param[in] ConfigKeyVal input COnfigKeyVal - * @param[out] index DB Column Index - * - * @return TRUE Success - * @retval FALSE Failure - **/ - bool IsValidKey(void *key, - uint64_t index); - - /** - * @brief Method used for GetParentConfigKey Operation. - * - * @param[out] okey Pointer to ConfigKeyVal Class. - * @param[in] parent_key Pointer to ConfigKeyVal Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - - /** - * @brief Method used for ReadDetail Operation. - * - * @param[in,out] ikey Pointer to ConfigKeyVal Class. - * @param[in] dt_type Describes Configiration Information. - * @param[in] op Describes the Type of Opeartion. - * @param[in] dbop Describes the dbop Type - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] domain_id Pointer to domain_id. - * @param[in] dctrlr_id Pointer to ctrlr_id. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - - upll_rc_t ReadDetail(ConfigKeyVal *ikey, - ConfigKeyVal *dup_key, - IpcResponse *ipc_response, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op, - DbSubOp dbop, + /** + * @brief Method used for ReadSibling Operation. + * + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in,out] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + + upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + bool begin, DalDmlIntf *dmi); - /** - * @brief Method used for ReadSibling Operation. - * - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in,out] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - - upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - bool begin, - DalDmlIntf *dmi); - - upll_rc_t SetVlinkPortmapConfiguration(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - InterfacePortMapInfo flag, - unc_keytype_operation_t oper); - - upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); - - upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - - upll_rc_t GetControllerDomainID(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t ConstructReadDetailResponse(ConfigKeyVal *ikey, - ConfigKeyVal *drv_resp_ckv, - ConfigKeyVal **okey); - - upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi); - - upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id); + + upll_rc_t SetVlinkPortmapConfiguration(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + InterfacePortMapInfo flag, + unc_keytype_operation_t oper); + + upll_rc_t TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); + + upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag = false); + + + upll_rc_t GetControllerDomainID(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + upll_rc_t ConstructReadDetailResponse(ConfigKeyVal *ikey, + ConfigKeyVal *drv_resp_ckv, + ConfigKeyVal **okey); + + upll_rc_t AuditUpdateController(unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected); + + upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id); upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, @@ -455,26 +458,26 @@ class VrtIfFlowFilterMoMgr : public MoMgrImpl { DalDmlIntf *dmi, IpcReqRespHeader *req); - public: - VrtIfFlowFilterMoMgr(); - ~VrtIfFlowFilterMoMgr() { - for (int i = 0; i < ntable; i++) { - if (table[i]) { - delete table[i]; - } + public: + VrtIfFlowFilterMoMgr(); + ~VrtIfFlowFilterMoMgr() { + for (int i = 0; i < ntable; i++) { + if (table[i]) { + delete table[i]; } - delete[] table; } + delete[] table; + } }; typedef struct val_vrt_if_ctrlr { - uint8_t valid[2]; - val_oper_status oper_status; - val_alarm_status alarm_status; - unc_keytype_configstatus_t cs_row_status; - unc_keytype_configstatus_t cs_description; - uint8_t flags; + uint8_t valid[2]; + val_oper_status oper_status; + val_alarm_status alarm_status; + unc_keytype_configstatus_t cs_row_status; + unc_keytype_configstatus_t cs_description; + uint8_t flags; } val_vrt_if_ctrlr_t; -} // kt_momgr -} // upll -} // unc +} // namespace kt_momgr +} // namespace upll +} // namespace unc #endif // MODULES_UPLL_VRT_IF_FLOWFILTER_MOMGR_HH_ diff --git a/coordinator/modules/upll/vrt_if_momgr.cc b/coordinator/modules/upll/vrt_if_momgr.cc index 58161d69..df609434 100644 --- a/coordinator/modules/upll/vrt_if_momgr.cc +++ b/coordinator/modules/upll/vrt_if_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -17,101 +17,101 @@ namespace upll { namespace kt_momgr { BindInfo VrtIfMoMgr::vrt_if_bind_info[] = { - { uudst::vrouter_interface::kDbiVtnName, CFG_KEY, offsetof( - key_vrt_if, vrt_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vrouter_interface::kDbiVrouterName, CFG_KEY, offsetof( - key_vrt_if, vrt_key.vrouter_name), - uud::kDalChar, 32 }, - { uudst::vrouter_interface::kDbiIfName, CFG_KEY, offsetof(key_vrt_if, - if_name), - uud::kDalChar, 32 }, - { uudst::vrouter_interface::kDbiDesc, CFG_VAL, offsetof(val_vrt_if, - description), - uud::kDalChar, 128 }, - { uudst::vrouter_interface::kDbiIpAddr, CFG_VAL, offsetof(val_vrt_if, - ip_addr), - uud::kDalUint32, 1 }, - { uudst::vrouter_interface::kDbiMask, CFG_VAL, offsetof(val_vrt_if, - prefixlen), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiMacAddr, CFG_VAL, offsetof(val_vrt_if, - macaddr), - uud::kDalUint8, 6 }, - { uudst::vrouter_interface::kDbiAdminStatus, CFG_VAL, offsetof( - val_vrt_if, admin_status), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiOperStatus, ST_VAL, offsetof( - val_db_vrt_if_st, vrt_if_val_st.oper_status), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiDownCount, ST_VAL, offsetof( - val_db_vrt_if_st, down_count), - uud::kDalUint32, 1 }, - { uudst::vrouter_interface::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vrouter_interface::kDbiDomainId, CK_VAL, offsetof(key_user_data, - domain_id), - uud::kDalChar, 32 }, - { uudst::vrouter_interface::kDbiVrtIfFlags, CK_VAL, offsetof(key_user_data, - flags), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiValidDesc, CFG_META_VAL, offsetof( - val_vrt_if, valid[UPLL_IDX_DESC_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiValidIpAddr, CFG_META_VAL, offsetof( - val_vrt_if, valid[UPLL_IDX_IP_ADDR_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiValidMask, CFG_META_VAL, offsetof( - val_vrt_if, valid[UPLL_IDX_PREFIXLEN_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiValidMacAddr, CFG_META_VAL, offsetof( - val_vrt_if, valid[UPLL_IDX_MAC_ADDR_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( - val_vrt_if, valid[UPLL_IDX_ADMIN_ST_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiValidOperStatus, ST_META_VAL, offsetof( - val_vrt_if_st, valid[UPLL_IDX_OPER_STATUS_VRTIS]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiCsRowstatus, CS_VAL, offsetof( - val_vrt_if, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiCsDesc, CS_VAL, offsetof( - val_vrt_if, cs_attr[UPLL_IDX_DESC_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiCsIpAddr, CS_VAL, offsetof( - val_vrt_if, cs_attr[UPLL_IDX_IP_ADDR_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiCsMask, CS_VAL, offsetof( - val_vrt_if, cs_attr[UPLL_IDX_PREFIXLEN_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiCsMacAddr, CS_VAL, offsetof( - val_vrt_if, cs_attr[UPLL_IDX_MAC_ADDR_VI]), - uud::kDalUint8, 1 }, - { uudst::vrouter_interface::kDbiCsAdminStatus, CS_VAL, offsetof( - val_vrt_if, cs_attr[UPLL_IDX_ADMIN_ST_VI]), - uud::kDalUint8, 1 } }; + { uudst::vrouter_interface::kDbiVtnName, CFG_KEY, offsetof( + key_vrt_if, vrt_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vrouter_interface::kDbiVrouterName, CFG_KEY, offsetof( + key_vrt_if, vrt_key.vrouter_name), + uud::kDalChar, 32 }, + { uudst::vrouter_interface::kDbiIfName, CFG_KEY, offsetof(key_vrt_if, + if_name), + uud::kDalChar, 32 }, + { uudst::vrouter_interface::kDbiDesc, CFG_VAL, offsetof(val_vrt_if, + description), + uud::kDalChar, 128 }, + { uudst::vrouter_interface::kDbiIpAddr, CFG_VAL, offsetof(val_vrt_if, + ip_addr), + uud::kDalUint32, 1 }, + { uudst::vrouter_interface::kDbiMask, CFG_VAL, offsetof(val_vrt_if, + prefixlen), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiMacAddr, CFG_VAL, offsetof(val_vrt_if, + macaddr), + uud::kDalUint8, 6 }, + { uudst::vrouter_interface::kDbiAdminStatus, CFG_VAL, offsetof( + val_vrt_if, admin_status), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiOperStatus, ST_VAL, offsetof( + val_db_vrt_if_st, vrt_if_val_st.oper_status), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiDownCount, ST_VAL, offsetof( + val_db_vrt_if_st, down_count), + uud::kDalUint32, 1 }, + { uudst::vrouter_interface::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vrouter_interface::kDbiDomainId, CK_VAL, offsetof(key_user_data, + domain_id), + uud::kDalChar, 32 }, + { uudst::vrouter_interface::kDbiVrtIfFlags, CK_VAL, offsetof(key_user_data, + flags), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiValidDesc, CFG_META_VAL, offsetof( + val_vrt_if, valid[UPLL_IDX_DESC_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiValidIpAddr, CFG_META_VAL, offsetof( + val_vrt_if, valid[UPLL_IDX_IP_ADDR_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiValidMask, CFG_META_VAL, offsetof( + val_vrt_if, valid[UPLL_IDX_PREFIXLEN_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiValidMacAddr, CFG_META_VAL, offsetof( + val_vrt_if, valid[UPLL_IDX_MAC_ADDR_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( + val_vrt_if, valid[UPLL_IDX_ADMIN_ST_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiValidOperStatus, ST_META_VAL, offsetof( + val_vrt_if_st, valid[UPLL_IDX_OPER_STATUS_VRTIS]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiCsRowstatus, CS_VAL, offsetof( + val_vrt_if, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiCsDesc, CS_VAL, offsetof( + val_vrt_if, cs_attr[UPLL_IDX_DESC_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiCsIpAddr, CS_VAL, offsetof( + val_vrt_if, cs_attr[UPLL_IDX_IP_ADDR_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiCsMask, CS_VAL, offsetof( + val_vrt_if, cs_attr[UPLL_IDX_PREFIXLEN_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiCsMacAddr, CS_VAL, offsetof( + val_vrt_if, cs_attr[UPLL_IDX_MAC_ADDR_VI]), + uud::kDalUint8, 1 }, + { uudst::vrouter_interface::kDbiCsAdminStatus, CS_VAL, offsetof( + val_vrt_if, cs_attr[UPLL_IDX_ADMIN_ST_VI]), + uud::kDalUint8, 1 } }; BindInfo VrtIfMoMgr::key_vrt_if_maintbl_update_bind_info[] = { - { uudst::vrouter_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vrt_if, vrt_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vrouter_interface::kDbiVrouterName, CFG_MATCH_KEY, offsetof( - key_vrt_if, vrt_key.vrouter_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vrouter_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( - key_vrt_if, if_name), - uud::kDalChar, kMaxLenInterfaceName + 1 }, - { uudst::vrouter_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vrouter_interface::kDbiVrouterName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vrouter_interface::kDbiVrtIfFlags, CK_VAL, offsetof( - key_user_data, flags), - uud::kDalUint8, 1 } + { uudst::vrouter_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_vrt_if, vrt_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vrouter_interface::kDbiVrouterName, CFG_MATCH_KEY, offsetof( + key_vrt_if, vrt_key.vrouter_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vrouter_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( + key_vrt_if, if_name), + uud::kDalChar, kMaxLenInterfaceName + 1 }, + { uudst::vrouter_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vrouter_interface::kDbiVrouterName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vrouter_interface::kDbiVrtIfFlags, CK_VAL, offsetof( + key_user_data, flags), + uud::kDalUint8, 1 } }; unc_key_type_t VrtIfMoMgr::vrt_if_child[] = { UNC_KT_VRTIF_FLOWFILTER }; @@ -119,8 +119,12 @@ VrtIfMoMgr::VrtIfMoMgr() { UPLL_FUNC_TRACE; ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; - table[MAINTBL] = new Table(uudst::kDbiVrtIfTbl, UNC_KT_VRT_IF, - vrt_if_bind_info, IpctSt::kIpcStKeyVrtIf, IpctSt::kIpcStValVrtIf, + table[MAINTBL] = new Table( + uudst::kDbiVrtIfTbl, + UNC_KT_VRT_IF, + vrt_if_bind_info, + IpctSt::kIpcStKeyVrtIf, + IpctSt::kIpcStValVrtIf, uudst::vrouter_interface::kDbiVrtIfNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; @@ -148,7 +152,7 @@ upll_rc_t VrtIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (ikey->get_key_type() != UNC_KT_VRT_IF) result_code = - UPLL_RC_ERR_CFG_SYNTAX; + UPLL_RC_ERR_CFG_SYNTAX; return result_code; } @@ -159,8 +163,8 @@ bool VrtIfMoMgr::IsValidKey(void *key, uint64_t index) { switch (index) { case uudst::vrouter_interface::kDbiVtnName: ret_val = ValidateKey(reinterpret_cast - (vrtif_key->vrt_key.vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + (vrtif_key->vrt_key.vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("VTN Name is not valid(%d)", ret_val); return false; @@ -168,7 +172,7 @@ bool VrtIfMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vrouter_interface::kDbiVrouterName: ret_val = ValidateKey(reinterpret_cast - (vrtif_key->vrt_key.vrouter_name), + (vrtif_key->vrt_key.vrouter_name), kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VRouter Name is not valid(%d)", ret_val); @@ -177,8 +181,8 @@ bool VrtIfMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vrouter_interface::kDbiIfName: ret_val = ValidateKey(reinterpret_cast - (vrtif_key->if_name), kMinLenInterfaceName, - kMaxLenInterfaceName); + (vrtif_key->if_name), kMinLenInterfaceName, + kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VRouterInterface Name is not valid(%d)", ret_val); return false; @@ -200,17 +204,17 @@ upll_rc_t VrtIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, if (parent_key == NULL) { vrt_key_if = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt_if))); - if (okey) delete okey; + if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VRT_IF, IpctSt::kIpcStKeyVrtIf, vrt_key_if, NULL); return UPLL_RC_SUCCESS; } else { - pkey = parent_key->get_key(); + pkey = parent_key->get_key(); } if (!pkey) return UPLL_RC_ERR_GENERIC; if (okey) { if (okey->get_key_type() != UNC_KT_VRT_IF) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; vrt_key_if = reinterpret_cast(okey->get_key()); if (!vrt_key_if) return UPLL_RC_ERR_GENERIC; } else { @@ -221,71 +225,75 @@ upll_rc_t VrtIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(vrt_key_if->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); *(vrt_key_if->vrt_key.vrouter_name) = *""; break; case UNC_KT_VROUTER: uuu::upll_strncpy(vrt_key_if->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vrt_key_if->vrt_key.vrouter_name, - reinterpret_cast(pkey)->vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)->vrouter_name, + (kMaxLenVnodeName+1)); break; case UNC_KT_VRT_IF: uuu::upll_strncpy(vrt_key_if->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vrt_key_if->vrt_key.vrouter_name, - reinterpret_cast(pkey)->vrt_key.vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast + (pkey)->vrt_key.vrouter_name, + (kMaxLenVnodeName+1)); uuu::upll_strncpy(vrt_key_if->if_name, - reinterpret_cast(pkey)->if_name, - (kMaxLenInterfaceName+1)); + reinterpret_cast(pkey)->if_name, + (kMaxLenInterfaceName+1)); break; case UNC_KT_DHCPRELAY_IF: uuu::upll_strncpy(vrt_key_if->vrt_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vrt_key_if->vrt_key.vrouter_name, - reinterpret_cast(pkey)->vrt_key.vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast + (pkey)->vrt_key.vrouter_name, + (kMaxLenVnodeName+1)); uuu::upll_strncpy(vrt_key_if->if_name, - reinterpret_cast(pkey)->if_name, - (kMaxLenInterfaceName+1)); + reinterpret_cast(pkey)->if_name, + (kMaxLenInterfaceName+1)); break; - case UNC_KT_VLINK: { - uint8_t *vnode_name, *if_name; - uint8_t flags = 0; - val_vlink *vlink_val = reinterpret_cast - (GetVal(parent_key)); - if (!vlink_val) { - if (!okey || !(okey->get_key())) - free(vrt_key_if); - return UPLL_RC_ERR_GENERIC; - } - GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); - flags &= VLINK_FLAG_NODE_POS; - if (flags == kVlinkVnode2) { - vnode_name = vlink_val->vnode2_name; - if_name = vlink_val->vnode2_ifname; - } else { - vnode_name = vlink_val->vnode1_name; - if_name = vlink_val->vnode1_ifname; - } - uuu::upll_strncpy(vrt_key_if->vrt_key.vtn_key.vtn_name, + case UNC_KT_VLINK: { + uint8_t *vnode_name, *if_name; + uint8_t flags = 0; + val_vlink *vlink_val = reinterpret_cast + (GetVal(parent_key)); + if (!vlink_val) { + if (!okey || !(okey->get_key())) + free(vrt_key_if); + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + if (flags == kVlinkVnode2) { + vnode_name = vlink_val->vnode2_name; + if_name = vlink_val->vnode2_ifname; + } else { + vnode_name = vlink_val->vnode1_name; + if_name = vlink_val->vnode1_ifname; + } + uuu::upll_strncpy(vrt_key_if->vrt_key.vtn_key.vtn_name, reinterpret_cast(pkey)->vtn_key.vtn_name, (kMaxLenVtnName + 1)); - if (vnode_name) - uuu::upll_strncpy(vrt_key_if->vrt_key.vrouter_name, vnode_name, + if (vnode_name) + uuu::upll_strncpy(vrt_key_if->vrt_key.vrouter_name, vnode_name, (kMaxLenVnodeName + 1)); - if (if_name) - uuu::upll_strncpy(vrt_key_if->if_name, if_name, + if (if_name) + uuu::upll_strncpy(vrt_key_if->if_name, if_name, (kMaxLenInterfaceName + 1)); } - break; + break; default: break; } @@ -299,7 +307,7 @@ upll_rc_t VrtIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, free(vrt_key_if); result_code = UPLL_RC_ERR_GENERIC; } else { - SET_USER_DATA(okey, parent_key); + SET_USER_DATA(okey, parent_key); } return result_code; } @@ -321,11 +329,12 @@ upll_rc_t VrtIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, key_vrt *vrt_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt))); uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vrt_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vrt_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vrt_key->vrouter_name, - reinterpret_cast(pkey)->vrt_key.vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)->vrt_key.vrouter_name, + (kMaxLenVnodeName+1)); okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, vrt_key, NULL); if (okey == NULL) { free(vrt_key); @@ -341,7 +350,7 @@ upll_rc_t VrtIfMoMgr::AllocVal(ConfigVal *&ck_val, MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; // , *nxt_val; -// ConfigVal *ck_nxtval; + // ConfigVal *ck_nxtval; if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; switch (tbl) { @@ -382,7 +391,8 @@ upll_rc_t VrtIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, }; if (tmp) { if (tbl == MAINTBL) { - val_db_vrt_if_st *ival = reinterpret_cast(tmp->get_val()); + val_db_vrt_if_st *ival = reinterpret_cast + (tmp->get_val()); val_db_vrt_if_st *val_vrt_if = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_db_vrt_if_st))); memcpy(val_vrt_if, ival, sizeof(val_db_vrt_if_st)); @@ -398,9 +408,9 @@ upll_rc_t VrtIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, okey = new ConfigKeyVal(UNC_KT_VRT_IF, IpctSt::kIpcStKeyVrtIf, vrt_if_key, tmp1); if (okey) { - SET_USER_DATA(okey, req); + SET_USER_DATA(okey, req); } else { - DELETE_IF_NOT_NULL(tmp1); + DELETE_IF_NOT_NULL(tmp1); FREE_IF_NOT_NULL(vrt_if_key); } return UPLL_RC_SUCCESS; @@ -418,19 +428,20 @@ upll_rc_t VrtIfMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { UPLL_LOG_DEBUG("Config Val is Null"); return UPLL_RC_ERR_GENERIC; } - while (cval ) { + while (cval) { if (IpctSt::kIpcStValVrtIf == cval->get_st_num()) { - // set admin status to valid no value - val_vrt_if *vrt_if_val = reinterpret_castGetVal(ikey); - if (vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] == UNC_VF_INVALID) - vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_VALID_NO_VALUE; + // set admin status to valid no value + val_vrt_if *vrt_if_val = reinterpret_castGetVal(ikey); + if (vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] == UNC_VF_INVALID) + vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_VALID_NO_VALUE; } if (IpctSt::kIpcStValVrtIfSt == cval->get_st_num()) { val_vrt_if_st *vrt_if_val_st = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vrt_if_st))); - val_db_vrt_if_st *db_vrt_if_val_st = reinterpret_cast - (cval->get_val()); - memcpy(vrt_if_val_st,&(db_vrt_if_val_st->vrt_if_val_st), + (ConfigKeyVal::Malloc(sizeof(val_vrt_if_st))); + val_db_vrt_if_st *db_vrt_if_val_st = reinterpret_cast + + (cval->get_val()); + memcpy(vrt_if_val_st, &(db_vrt_if_val_st->vrt_if_val_st), sizeof(val_vrt_if_st)); cval->SetVal(IpctSt::kIpcStValVrtIfSt, vrt_if_val_st); } @@ -455,58 +466,64 @@ upll_rc_t VrtIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, bool oper_status_change = true; if (vrt_if_val == NULL) return UPLL_RC_ERR_GENERIC; switch (op) { - case UNC_OP_UPDATE: - { - void *val = reinterpret_cast(vrt_if_val); - CompareValidValue(val, GetVal(upd_key), true); - uint8_t cand_flag = 0,run_flag = 0; - GET_USER_DATA_FLAGS(ikey,cand_flag); - GET_USER_DATA_FLAGS(upd_key,run_flag); - if ((cand_flag & VIF_TYPE) == (run_flag & VIF_TYPE)) - oper_status_change = false; - } - /* fall through intended */ - case UNC_OP_CREATE: - { - if (op == UNC_OP_CREATE) - vrt_if_val->cs_row_status = cs_status; - val_db_vrt_if_st *vrt_if_valst = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vrt_if_st))); - ikey->AppendCfgVal(IpctSt::kIpcStValVrtIfSt, vrt_if_valst); - break; - } - default: - return UPLL_RC_ERR_GENERIC; + case UNC_OP_UPDATE: + { + void *val = reinterpret_cast(vrt_if_val); + CompareValidValue(val, GetVal(upd_key), true); + uint8_t cand_flag = 0, run_flag = 0; + GET_USER_DATA_FLAGS(ikey, cand_flag); + GET_USER_DATA_FLAGS(upd_key, run_flag); + if ((cand_flag & VIF_TYPE) == (run_flag & VIF_TYPE)) + oper_status_change = false; + } + /* fall through intended */ + case UNC_OP_CREATE: + { + if (op == UNC_OP_CREATE) + vrt_if_val->cs_row_status = cs_status; + val_db_vrt_if_st *vrt_if_valst = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_db_vrt_if_st))); + ikey->AppendCfgVal(IpctSt::kIpcStValVrtIfSt, vrt_if_valst); + break; + } + default: + return UPLL_RC_ERR_GENERIC; } if (oper_status_change) { #if 0 - rs_code = InitOperStatus(ikey, - vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI], - vrt_if_val->admin_status,(uint8_t)UNC_VF_INVALID); + rs_code = InitOperStatus( + ikey, + vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI], + vrt_if_val->admin_status, + (uint8_t)UNC_VF_INVALID); if (rs_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error setting oper status"); return UPLL_RC_ERR_GENERIC; } #else - val_vrt_if_st *vnif_st = &(reinterpret_cast - (GetStateVal(ikey))->vrt_if_val_st); - if (!vnif_st) { - UPLL_LOG_DEBUG("Returning error\n"); - return UPLL_RC_ERR_GENERIC; - } - vnif_st->oper_status = UPLL_OPER_STATUS_UNINIT; - vnif_st->valid[UPLL_IDX_OPER_STATUS_VRTS] = UNC_VF_VALID; + val_vrt_if_st *vnif_st = &(reinterpret_cast + (GetStateVal(ikey))->vrt_if_val_st); + if (!vnif_st) { + UPLL_LOG_DEBUG("Returning error\n"); + return UPLL_RC_ERR_GENERIC; + } + vnif_st->oper_status = UPLL_OPER_STATUS_UNINIT; +#if 0 + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_UNINIT; +#endif + vnif_st->valid[UPLL_IDX_OPER_STATUS_VRTS] = UNC_VF_VALID; #endif } - UPLL_LOG_TRACE("%s",(ikey->ToStrAll()).c_str()); + UPLL_LOG_TRACE("%s", (ikey->ToStrAll()).c_str()); val_vrt_if *vrt_if_val2 = reinterpret_cast(GetVal(upd_key)); if (UNC_OP_UPDATE == op) { - UPLL_LOG_TRACE("%s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); vrt_if_val->cs_row_status = vrt_if_val2->cs_row_status; } - for (unsigned int loop = 0; loop < + for (unsigned int loop = 0; loop < sizeof(vrt_if_val->valid) / sizeof(vrt_if_val->valid[0]); ++loop) { - if ((UNC_VF_VALID == (uint8_t) vrt_if_val->valid[loop]) + if ((UNC_VF_VALID == (uint8_t) vrt_if_val->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) vrt_if_val->valid[loop])) { if (loop == UPLL_IDX_DESC_VI) vrt_if_val->cs_attr[loop] = UNC_CS_APPLIED; @@ -514,36 +531,38 @@ upll_rc_t VrtIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, vrt_if_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vrt_if_val->valid[loop]) && (UNC_OP_CREATE == op)) { - vrt_if_val->cs_attr[loop] = UNC_CS_APPLIED; + vrt_if_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((UNC_VF_INVALID == vrt_if_val->valid[loop]) && (UNC_OP_UPDATE == op)) { - vrt_if_val->cs_attr[loop] = vrt_if_val2->cs_attr[loop]; + vrt_if_val->cs_attr[loop] = vrt_if_val2->cs_attr[loop]; } - } return rs_code; } upll_rc_t VrtIfMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vrt_if_t *val; val = (ckv_running != NULL) ? reinterpret_cast - (GetVal(ckv_running)) : NULL; + (GetVal(ckv_running)) : NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } @@ -554,8 +573,9 @@ uint8_t* VrtIfMoMgr::GetControllerId(ConfigKeyVal *ck_vrt, UPLL_FUNC_TRACE; if (ck_vrt->get_key_type() != UNC_KT_VROUTER) return NULL; DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VROUTER))); + MoMgrImpl *mgr = reinterpret_cast + (const_cast + (GetMoManager(UNC_KT_VROUTER))); upll_rc_t result_code = mgr->ReadConfigDB(ck_vrt, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -564,9 +584,9 @@ uint8_t* VrtIfMoMgr::GetControllerId(ConfigKeyVal *ck_vrt, // val_vrt_t *vrt_val = (val_vrt_t *)(GetVal(ck_vrt)); #ifdef UNCOMMENT if (vrt_val) - return (vrt_val->controller_id); + return (vrt_val->controller_id); else - return NULL; + return NULL; #endif return reinterpret_cast(const_cast("pfc")); } @@ -587,7 +607,7 @@ upll_rc_t VrtIfMoMgr::ValidateMessage(IpcReqRespHeader *req, upll_rc_t ret_val = UPLL_RC_SUCCESS; if (ikey->get_st_num() != IpctSt::kIpcStKeyVrtIf) { UPLL_LOG_DEBUG("Invalid key structure received. received struct - %d", - (ikey->get_st_num())); + (ikey->get_st_num())); return UPLL_RC_ERR_BAD_REQUEST; } key_vrt_if *vrt_if_key = reinterpret_cast(ikey->get_key()); @@ -605,59 +625,79 @@ upll_rc_t VrtIfMoMgr::ValidateMessage(IpcReqRespHeader *req, val_vtn_neighbor *vtn_neighbor = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVrtIf)) { - vrt_if_val = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + vrt_if_val = reinterpret_cast + (ikey->get_cfg_val()->get_val()); } else if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtnNeighbor)) { + ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStValVtnNeighbor)) { vtn_neighbor = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + (ikey->get_cfg_val()->get_val()); } else if ((ikey->get_cfg_val()) && - (((ikey->get_cfg_val())->get_st_num() != IpctSt::kIpcStValVrtIf) || - ((ikey->get_cfg_val())->get_st_num() != IpctSt::kIpcStValVtnNeighbor))) { + (((ikey->get_cfg_val())->get_st_num() != + IpctSt::kIpcStValVrtIf) || + ((ikey->get_cfg_val())->get_st_num() != + IpctSt::kIpcStValVtnNeighbor))) { UPLL_LOG_DEBUG("Invalid val structure received.received struct - %d", - ikey->get_cfg_val()->get_st_num()); + ikey->get_cfg_val()->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } if ((op == UNC_OP_CREATE) && ((dt_type == UPLL_DT_CANDIDATE) - || UPLL_DT_IMPORT == dt_type)) { - if (vrt_if_val == NULL) { - UPLL_LOG_DEBUG( - "Val struct Validation is an optional for CREATE operation"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVrtIfValue(vrt_if_val, op); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failure for CREATE operation"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + || UPLL_DT_IMPORT == dt_type)) { + if (vrt_if_val == NULL) { + UPLL_LOG_DEBUG( + "Val struct Validation is an optional for CREATE operation"); return UPLL_RC_SUCCESS; + } + ret_val = ValidateVrtIfValue(vrt_if_val, op); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failure for CREATE operation"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } else if ((op == UNC_OP_UPDATE) && (dt_type == UPLL_DT_CANDIDATE)) { - if (vrt_if_val == NULL) { - UPLL_LOG_DEBUG("Val struct Validation is mandatory for UPDATE op"); - return UPLL_RC_ERR_BAD_REQUEST; - } - ret_val = ValidateVrtIfValue(vrt_if_val, op); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failure for UPDATE operation"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; + if (vrt_if_val == NULL) { + UPLL_LOG_DEBUG("Val struct Validation is mandatory for UPDATE op"); + return UPLL_RC_ERR_BAD_REQUEST; + } + ret_val = ValidateVrtIfValue(vrt_if_val, op); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failure for UPDATE operation"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } else if ((op == UNC_OP_READ || op == UNC_OP_READ_SIBLING || - op == UNC_OP_READ_SIBLING_BEGIN) && - (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING - || dt_type == UPLL_DT_STARTUP)) { - if (opt1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (opt2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } + op == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING + || dt_type == UPLL_DT_STARTUP)) { + if (opt1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (opt2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (vrt_if_val == NULL) { + UPLL_LOG_DEBUG( + "Val struct Validation is an optional for READ operation"); + return UPLL_RC_SUCCESS; + } + ret_val = ValidateVrtIfValue(vrt_if_val, op); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("val struct Validation failure for READ operation"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } else if ((op == UNC_OP_READ) && (dt_type == UPLL_DT_STATE)) { + if (opt1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (opt2 == UNC_OPT2_NONE) { if (vrt_if_val == NULL) { UPLL_LOG_DEBUG( - "Val struct Validation is an optional for READ operation"); + "Val struct Validation is an optional for READ operation"); return UPLL_RC_SUCCESS; } ret_val = ValidateVrtIfValue(vrt_if_val, op); @@ -665,96 +705,81 @@ upll_rc_t VrtIfMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_DEBUG("val struct Validation failure for READ operation"); return UPLL_RC_ERR_CFG_SYNTAX; } - return UPLL_RC_SUCCESS; - } else if ((op == UNC_OP_READ) && (dt_type == UPLL_DT_STATE)) { - if (opt1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (opt2 == UNC_OPT2_NONE) { - if (vrt_if_val == NULL) { - UPLL_LOG_DEBUG( - "Val struct Validation is an optional for READ operation"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVrtIfValue(vrt_if_val, op); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("val struct Validation failure for READ operation"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return ret_val; - } else if (opt2 == UNC_OPT2_NEIGHBOR) { - if (vtn_neighbor == NULL) { - UPLL_LOG_DEBUG( - "Val vtn_neighbor struct Validation is an optional" - "for READ operation"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVtnNeighborValue(vtn_neighbor, op); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failure for" - "val_vtn_neighbor structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return ret_val; - } else { - UPLL_LOG_DEBUG("Error option2 is not matching"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - } else if ((op == UNC_OP_READ_SIBLING_BEGIN || - op == UNC_OP_READ_SIBLING) && (dt_type == UPLL_DT_STATE)) { - if (opt1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (opt2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - if (vrt_if_val == NULL) { - UPLL_LOG_DEBUG("Val struct Validation is an optional for" - "READ_SIBLING_COUNT operation"); + return ret_val; + } else if (opt2 == UNC_OPT2_NEIGHBOR) { + if (vtn_neighbor == NULL) { + UPLL_LOG_DEBUG( + "Val vtn_neighbor struct Validation is an optional" + "for READ operation"); return UPLL_RC_SUCCESS; } - ret_val = ValidateVrtIfValue(vrt_if_val, op); + ret_val = ValidateVtnNeighborValue(vtn_neighbor, op); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG( - "Val struct Validation failure for READ_SIBLING_COUNT operation"); + UPLL_LOG_DEBUG("Val struct Validation failure for" + "val_vtn_neighbor structure"); return UPLL_RC_ERR_CFG_SYNTAX; } + return ret_val; + } else { + UPLL_LOG_DEBUG("Error option2 is not matching"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + } else if ((op == UNC_OP_READ_SIBLING_BEGIN || + op == UNC_OP_READ_SIBLING) && (dt_type == UPLL_DT_STATE)) { + if (opt1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (opt2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (vrt_if_val == NULL) { + UPLL_LOG_DEBUG("Val struct Validation is an optional for" + "READ_SIBLING_COUNT operation"); return UPLL_RC_SUCCESS; - } else if ((op == UNC_OP_READ_SIBLING_COUNT) && (dt_type == UPLL_DT_STATE || + } + ret_val = ValidateVrtIfValue(vrt_if_val, op); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG( + "Val struct Validation failure for READ_SIBLING_COUNT operation"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } else if ((op == UNC_OP_READ_SIBLING_COUNT) && ( + dt_type == UPLL_DT_STATE || dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING)) { - if (opt1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (opt2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG("Error option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - if (vrt_if_val == NULL) { - UPLL_LOG_DEBUG("Val struct Validation is an optional for" - "READ_SIBLING_COUNT operation"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVrtIfValue(vrt_if_val, op); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG( - "Val struct Validation failure for READ_SIBLING_COUNT operation"); - return UPLL_RC_ERR_CFG_SYNTAX; - } + if (opt1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (opt2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG("Error option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (vrt_if_val == NULL) { + UPLL_LOG_DEBUG("Val struct Validation is an optional for" + "READ_SIBLING_COUNT operation"); return UPLL_RC_SUCCESS; - } else if ((op == UNC_OP_DELETE || op == UNC_OP_READ_NEXT || - op == UNC_OP_READ_BULK) && (dt_type == UPLL_DT_CANDIDATE || - dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP)) { + } + ret_val = ValidateVrtIfValue(vrt_if_val, op); + if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG( + "Val struct Validation failure for READ_SIBLING_COUNT operation"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } else if ((op == UNC_OP_DELETE || op == UNC_OP_READ_NEXT || + op == UNC_OP_READ_BULK) && ( + dt_type == UPLL_DT_CANDIDATE || + dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP)) { + UPLL_LOG_DEBUG( "Value structure validation is none for this operation." " operation - %d", op); - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; } - UPLL_LOG_DEBUG("Unsupported operation %d or datatype %d", op,dt_type); + UPLL_LOG_DEBUG("Unsupported operation %d or datatype %d", op, dt_type); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -767,8 +792,8 @@ upll_rc_t VrtIfMoMgr::ValidateVrtIfKey(key_vrt_if *vrt_if_key, kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Vtn name syntax check failed." - "Received vtn_name - %s", - vrt_if_key->vrt_key.vtn_key.vtn_name); + "Received vtn_name - %s", + vrt_if_key->vrt_key.vtn_key.vtn_name); return UPLL_RC_ERR_CFG_SYNTAX; } ret_val = ValidateKey(reinterpret_cast @@ -776,18 +801,18 @@ upll_rc_t VrtIfMoMgr::ValidateVrtIfKey(key_vrt_if *vrt_if_key, kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("vrouter_name syntax check failed. %s", - vrt_if_key->vrt_key.vrouter_name); + vrt_if_key->vrt_key.vrouter_name); return UPLL_RC_ERR_CFG_SYNTAX; } if (operation != UNC_OP_READ_SIBLING_COUNT && operation != UNC_OP_READ_SIBLING_BEGIN) { ret_val = ValidateKey(reinterpret_cast(vrt_if_key->if_name), - kMinLenInterfaceName, - kMaxLenInterfaceName); + kMinLenInterfaceName, + kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Interface Name syntax check failed." - "Received if_name - %s", - vrt_if_key->if_name); + "Received if_name - %s", + vrt_if_key->if_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -803,44 +828,45 @@ upll_rc_t VrtIfMoMgr::ValidateVrtIfValue(val_vrt_if *vrt_if_val, if (vrt_if_val->valid[UPLL_IDX_DESC_VI] == UNC_VF_VALID) { if (!ValidateDesc(vrt_if_val->description, - kMinLenDescription, - kMaxLenDescription)) { + kMinLenDescription, + kMaxLenDescription)) { UPLL_LOG_DEBUG("Description syntax check failed." - "received Description - %s", - vrt_if_val->description); + "received Description - %s", + vrt_if_val->description); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vrt_if_val->valid[UPLL_IDX_DESC_VI] == UNC_VF_VALID_NO_VALUE - && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { + && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { uuu::upll_strncpy(vrt_if_val->description, " ", 2); } if (vrt_if_val->valid[UPLL_IDX_PREFIXLEN_VI] == UNC_VF_VALID) { - if (ValidateNumericRange((uint8_t) vrt_if_val->prefixlen, kMinVnodeIpv4Prefix, + if (ValidateNumericRange((uint8_t) vrt_if_val->prefixlen, + kMinVnodeIpv4Prefix, kMaxVnodeIpv4Prefix, true, true)) { UPLL_LOG_DEBUG("IPV4 prefixlength validation is success"); if (!ValidateIpv4Addr(vrt_if_val->ip_addr.s_addr, - vrt_if_val->prefixlen)) { + vrt_if_val->prefixlen)) { UPLL_LOG_DEBUG("Ip address Validation failed"); return UPLL_RC_ERR_CFG_SYNTAX; } } else { UPLL_LOG_DEBUG("prefixlen validation check failed." - "prefixlen - %d", - vrt_if_val->prefixlen); + "prefixlen - %d", + vrt_if_val->prefixlen); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vrt_if_val->valid[UPLL_IDX_PREFIXLEN_VI] == UNC_VF_VALID_NO_VALUE - && (op == UNC_OP_UPDATE || op == UNC_OP_CREATE)) { + && (op == UNC_OP_UPDATE || op == UNC_OP_CREATE)) { vrt_if_val->prefixlen = 0; } if (vrt_if_val->valid[UPLL_IDX_MAC_ADDR_VI] == UNC_VF_VALID) { if (!ValidateMacAddr(vrt_if_val->macaddr)) { UPLL_LOG_DEBUG("Mac Address validation failure for KT_VRT_IF val struct." - " Received mac_address is - %s", - vrt_if_val->macaddr); + " Received mac_address is - %s", + vrt_if_val->macaddr); return UPLL_RC_ERR_CFG_SYNTAX; } } @@ -854,10 +880,10 @@ upll_rc_t VrtIfMoMgr::ValidateVrtIfValue(val_vrt_if *vrt_if_val, return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] == UNC_VF_VALID_NO_VALUE - && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { + && (op == UNC_OP_CREATE || op == UNC_OP_UPDATE)) { vrt_if_val->admin_status = UPLL_ADMIN_ENABLE; } else if ((vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] == UNC_VF_INVALID) - && (op == UNC_OP_CREATE)) { + && (op == UNC_OP_CREATE)) { vrt_if_val->admin_status = UPLL_ADMIN_ENABLE; vrt_if_val->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_VALID_NO_VALUE; } @@ -865,8 +891,9 @@ upll_rc_t VrtIfMoMgr::ValidateVrtIfValue(val_vrt_if *vrt_if_val, } -upll_rc_t VrtIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, - unc_keytype_operation_t operation) { +upll_rc_t VrtIfMoMgr::ValidateVtnNeighborValue( + val_vtn_neighbor *vtn_neighbor, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; @@ -876,13 +903,13 @@ upll_rc_t VrtIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("connected_vnode_name syntax check failed." - "Received connected_vnode_name - %s", - vtn_neighbor->connected_vnode_name); + "Received connected_vnode_name - %s", + vtn_neighbor->connected_vnode_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { uuu::upll_strncpy(vtn_neighbor->connected_vnode_name, " ", kMaxLenVnodeName+1); } @@ -892,13 +919,13 @@ upll_rc_t VrtIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, kMinLenInterfaceName, kMinLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("connected_if_name syntax check failed." - "Received connected_if_name - %s", - vtn_neighbor->connected_if_name); + "Received connected_if_name - %s", + vtn_neighbor->connected_if_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_IF_NAME_VN] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { uuu::upll_strncpy(vtn_neighbor->connected_if_name, " ", kMaxLenInterfaceName+1); } @@ -908,15 +935,15 @@ upll_rc_t VrtIfMoMgr::ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, kMinLenVlinkName, kMaxLenVlinkName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("connected_vlink_name syntax check failed." - "Received connected_vlink_name - %s", - vtn_neighbor->connected_vlink_name); + "Received connected_vlink_name - %s", + vtn_neighbor->connected_vlink_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { uuu::upll_strncpy(vtn_neighbor->connected_vlink_name, " ", - kMaxLenVlinkName+1); + kMaxLenVlinkName+1); } return UPLL_RC_SUCCESS; } @@ -926,15 +953,15 @@ upll_rc_t VrtIfMoMgr::ValidateCapability(IpcReqRespHeader *req, const char *ctrlr_name) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; - - if (!req || !ikey ) { + + if (!req || !ikey) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is NULL"); return UPLL_RC_ERR_GENERIC; } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -951,13 +978,6 @@ upll_rc_t VrtIfMoMgr::ValidateCapability(IpcReqRespHeader *req, result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; case UNC_OP_UPDATE: @@ -977,30 +997,34 @@ upll_rc_t VrtIfMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("key_type - %d is not supported by controller - %s", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_vrt_if *vrt_if_val = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVrtIf)) { - vrt_if_val = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + vrt_if_val = reinterpret_cast + (ikey->get_cfg_val()->get_val()); } if (vrt_if_val) { if (max_attrs > 0) { - ret_val = ValVrtIfAttributeSupportCheck(vrt_if_val, attrs, req->operation); + ret_val = ValVrtIfAttributeSupportCheck(vrt_if_val, + attrs, + req->operation); return ret_val; } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); return UPLL_RC_ERR_GENERIC; } } return UPLL_RC_SUCCESS; } -upll_rc_t VrtIfMoMgr::ValVrtIfAttributeSupportCheck(val_vrt_if *vrt_if_val, - const uint8_t *attrs, - unc_keytype_operation_t operation) { +upll_rc_t VrtIfMoMgr::ValVrtIfAttributeSupportCheck( + val_vrt_if *vrt_if_val, + const uint8_t *attrs, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if (vrt_if_val != NULL) { @@ -1025,7 +1049,8 @@ upll_rc_t VrtIfMoMgr::ValVrtIfAttributeSupportCheck(val_vrt_if *vrt_if_val, } } if ((vrt_if_val->valid[UPLL_IDX_PREFIXLEN_VI] == UNC_VF_VALID) - || (vrt_if_val->valid[UPLL_IDX_PREFIXLEN_VI] == UNC_VF_VALID_NO_VALUE)) { + || (vrt_if_val->valid[UPLL_IDX_PREFIXLEN_VI] == + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vrt_if::kCapPrefixlen] == 0) { vrt_if_val->valid[UPLL_IDX_PREFIXLEN_VI] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -1034,7 +1059,7 @@ upll_rc_t VrtIfMoMgr::ValVrtIfAttributeSupportCheck(val_vrt_if *vrt_if_val, } } } - // #if 0 //CHECK + // #if 0 //CHECK if ((vrt_if_val->valid[UPLL_IDX_MAC_ADDR_VI] == UNC_VF_VALID) || (vrt_if_val->valid[UPLL_IDX_MAC_ADDR_VI] == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vrt_if::kCapMacAddr] == 0) { @@ -1055,7 +1080,7 @@ upll_rc_t VrtIfMoMgr::ValVrtIfAttributeSupportCheck(val_vrt_if *vrt_if_val, } } } -// #endif + // #endif } else { UPLL_LOG_DEBUG("Error vrt_if struct is NULL"); return UPLL_RC_ERR_GENERIC; @@ -1065,13 +1090,13 @@ upll_rc_t VrtIfMoMgr::ValVrtIfAttributeSupportCheck(val_vrt_if *vrt_if_val, upll_rc_t VrtIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; + UPLL_FUNC_TRACE; if (!ikey || !(ikey->get_key())) return UPLL_RC_ERR_GENERIC; upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vrt_if_t * key_vrt = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt_if_t))); if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { @@ -1079,21 +1104,21 @@ upll_rc_t VrtIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vrt->vrt_key.vtn_key.vtn_name, - key_rename->old_unc_vtn_name, (kMaxLenVtnName+1)); + key_rename->old_unc_vtn_name, (kMaxLenVtnName+1)); if (UNC_KT_VROUTER == ikey->get_key_type()) { if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { FREE_IF_NOT_NULL(key_vrt); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vrt->vrt_key.vrouter_name, - key_rename->old_unc_vnode_name, (kMaxLenVnodeName+1)); + key_rename->old_unc_vnode_name, (kMaxLenVnodeName+1)); } else { if (!strlen(reinterpret_cast(key_rename->new_unc_vnode_name))) { FREE_IF_NOT_NULL(key_vrt); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vrt->vrt_key.vrouter_name, - key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); + key_rename->new_unc_vnode_name, (kMaxLenVnodeName+1)); } okey = new ConfigKeyVal(UNC_KT_VRT_IF, IpctSt::kIpcStKeyVrtIf, key_vrt, NULL); if (!okey) { @@ -1107,13 +1132,14 @@ bool VrtIfMoMgr::FilterAttributes(void *&val1, void *val2, bool copy_to_running, unc_keytype_operation_t op) { val_vrt_if_t *val_vrt_if1 = reinterpret_cast(val1); val_vrt_if1->valid[UPLL_IDX_DESC_VI] = UNC_VF_INVALID; - if (op != UNC_OP_CREATE) + if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); return false; - } -bool VrtIfMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running) { +bool VrtIfMoMgr::CompareValidValue(void *&val1, + void *val2, + bool copy_to_running) { UPLL_FUNC_TRACE; bool invalid_attr = true; val_vrt_if_t *val_vrt_if1 = reinterpret_cast(val1); @@ -1123,10 +1149,10 @@ bool VrtIfMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val_vrt_if1->valid) / sizeof(uint8_t); ++loop) { - if (UNC_VF_INVALID == val_vrt_if1->valid[loop] - && UNC_VF_VALID == val_vrt_if2->valid[loop]) - val_vrt_if1->valid[loop] = UNC_VF_VALID_NO_VALUE; + loop < sizeof(val_vrt_if1->valid) / sizeof(uint8_t); ++loop) { + if (UNC_VF_INVALID == val_vrt_if1->valid[loop] + && UNC_VF_VALID == val_vrt_if2->valid[loop]) + val_vrt_if1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (!copy_to_running) { if (UNC_VF_VALID_NO_VALUE == val_vrt_if1->valid[UPLL_IDX_IP_ADDR_VI]) { @@ -1145,8 +1171,8 @@ bool VrtIfMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running if (!copy_to_running || ((UNC_VF_VALID == val_vrt_if1->valid[UPLL_IDX_DESC_VI]) && (!strncmp(reinterpret_cast(val_vrt_if1->description), - reinterpret_cast(val_vrt_if2->description), - sizeof(val_vrt_if2->description))))) + reinterpret_cast(val_vrt_if2->description), + sizeof(val_vrt_if2->description))))) val_vrt_if1->valid[UPLL_IDX_DESC_VI] = UNC_VF_INVALID; } if (UNC_VF_VALID == val_vrt_if1->valid[UPLL_IDX_IP_ADDR_VI] @@ -1162,8 +1188,8 @@ bool VrtIfMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running if (UNC_VF_VALID == val_vrt_if1->valid[UPLL_IDX_MAC_ADDR_VI] && UNC_VF_VALID == val_vrt_if2->valid[UPLL_IDX_MAC_ADDR_VI]) { if (!memcmp(reinterpret_cast(val_vrt_if1->macaddr), - reinterpret_cast(val_vrt_if2->macaddr), - sizeof(val_vrt_if2->macaddr))) + reinterpret_cast(val_vrt_if2->macaddr), + sizeof(val_vrt_if2->macaddr))) val_vrt_if1->valid[UPLL_IDX_MAC_ADDR_VI] = UNC_VF_INVALID; } val_vrt_if1->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_INVALID; @@ -1174,9 +1200,9 @@ bool VrtIfMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running loop < sizeof(val_vrt_if1->valid) / sizeof(val_vrt_if1->valid[0]); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vrt_if1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vrt_if1->valid[loop])) { - invalid_attr = false; - break; + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vrt_if1->valid[loop])) { + invalid_attr = false; + break; } } return invalid_attr; @@ -1188,12 +1214,12 @@ upll_rc_t VrtIfMoMgr::IsReferenced(ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL,*ckv_dhcp = NULL; + ConfigKeyVal *okey = NULL, *ckv_dhcp = NULL; if (!ikey || !ikey->get_key()) return UPLL_RC_ERR_GENERIC; result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS || okey == NULL) { - UPLL_LOG_DEBUG("Create key returning error %d",result_code); + UPLL_LOG_DEBUG("Create key returning error %d", result_code); return result_code; } /* Getting the Full key information with help of read operation */ @@ -1202,7 +1228,7 @@ upll_rc_t VrtIfMoMgr::IsReferenced(ConfigKeyVal *ikey, result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; DELETE_IF_NOT_NULL(okey); return result_code; } @@ -1212,7 +1238,7 @@ upll_rc_t VrtIfMoMgr::IsReferenced(ConfigKeyVal *ikey, ckv_dhcp = NULL; // Is interface part of vlink? - GET_USER_DATA_FLAGS(temkey,vlink_flag); + GET_USER_DATA_FLAGS(temkey, vlink_flag); if (vlink_flag & VIF_TYPE) { delete okey; return UPLL_RC_ERR_CFG_SEMANTIC; @@ -1220,27 +1246,28 @@ upll_rc_t VrtIfMoMgr::IsReferenced(ConfigKeyVal *ikey, /* return error if dhcp relay is enabled on interface */ if (IsValidKey(temkey->get_key(), uudst::vrouter_interface::kDbiIfName)) { - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_DHCPRELAY_IF))); + MoMgrImpl *mgr = reinterpret_cast + (const_cast + (GetMoManager(UNC_KT_DHCPRELAY_IF))); result_code = mgr->GetChildConfigKey(ckv_dhcp, temkey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Create key returning error %d",result_code); + UPLL_LOG_DEBUG("Create key returning error %d", result_code); delete okey; return result_code; } DbSubOp dbop1 = {kOpReadExist, kOpMatchNone, kOpInOutNone}; result_code = mgr->UpdateConfigDB(ckv_dhcp, UPLL_DT_CANDIDATE, - UNC_OP_READ, dmi, &dbop1, MAINTBL); + UNC_OP_READ, dmi, &dbop1, MAINTBL); if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { uint8_t *if_name = reinterpret_cast - (ckv_dhcp->get_key())->if_name; + (ckv_dhcp->get_key())->if_name; UPLL_LOG_DEBUG("Cannot delete dhcp relay enabled interface %s", - if_name); + if_name); delete ckv_dhcp; delete okey; return UPLL_RC_ERR_CFG_SEMANTIC; } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG(" Returning error %d",result_code); + UPLL_LOG_DEBUG(" Returning error %d", result_code); delete ckv_dhcp; delete okey; return result_code; @@ -1261,16 +1288,16 @@ upll_rc_t VrtIfMoMgr::MergeValidate(unc_key_type_t keytype, upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *tkey = NULL; if (!ikey || !(ikey->get_key())) { - UPLL_LOG_DEBUG("Input is NULL"); - return UPLL_RC_ERR_GENERIC; - } - ConfigKeyVal *dup_key = NULL; - result_code = GetChildConfigKey(dup_key, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - if (dup_key) delete dup_key; - return result_code; - } + UPLL_LOG_DEBUG("Input is NULL"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *dup_key = NULL; + result_code = GetChildConfigKey(dup_key, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + if (dup_key) delete dup_key; + return result_code; + } /* * Here getting FULL Key (VTN & VRT Name ) */ @@ -1290,34 +1317,34 @@ upll_rc_t VrtIfMoMgr::MergeValidate(unc_key_type_t keytype, * Checks Host address value is available or not in import ckval */ result_code = DupConfigKeyVal(tkey, travel, MAINTBL); - if (UPLL_RC_SUCCESS != result_code){ - UPLL_LOG_DEBUG("DupConfigKeyVal Failed %d", result_code); - if (dup_key) delete dup_key; - return result_code; + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("DupConfigKeyVal Failed %d", result_code); + if (dup_key) delete dup_key; + return result_code; } val_vrt_if_t *tval = reinterpret_cast - (GetVal(tkey)); + (GetVal(tkey)); if (tval) { /* This we have to check if its success */ -// UPLL_LOG_DEBUG("NO VALUES WHAT TODO "); + // UPLL_LOG_DEBUG("NO VALUES WHAT TODO "); if (tval->valid[UPLL_IDX_IP_ADDR_VI] != UNC_VF_VALID && tval->valid[UPLL_IDX_MAC_ADDR_VI] != UNC_VF_VALID) { - UPLL_LOG_DEBUG(" MAIN VALUES ARE NOT VALID"); + UPLL_LOG_DEBUG(" MAIN VALUES ARE NOT VALID"); } else { if (tval->valid[UPLL_IDX_IP_ADDR_VI] == UNC_VF_VALID && tval->valid[UPLL_IDX_PREFIXLEN_VI] == UNC_VF_VALID ) { - /* Reset the Valid flag to INVALID and check any one attribute is present - * in the DT */ + /* Reset the Valid flag to INVALID and check any one attribute is present + * in the DT */ tvalid1 = 1; tval->valid[UPLL_IDX_IP_ADDR_VI] = UNC_VF_INVALID; - tval->valid[UPLL_IDX_PREFIXLEN_VI] = UNC_VF_INVALID; + tval->valid[UPLL_IDX_PREFIXLEN_VI] = UNC_VF_INVALID; } if (tval->valid[UPLL_IDX_MAC_ADDR_VI] == UNC_VF_VALID) { tvalid2 = 1; tval->valid[UPLL_IDX_MAC_ADDR_VI] = UNC_VF_INVALID; } - + if (tvalid1) { tval->valid[UPLL_IDX_DESC_VI] = UNC_VF_INVALID; tval->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_INVALID; @@ -1325,13 +1352,13 @@ upll_rc_t VrtIfMoMgr::MergeValidate(unc_key_type_t keytype, /* The Same VTN should not have the same MAC and IP address so must * remove the if_name */ memset(reinterpret_cast(tkey->get_key())->if_name, 0, - kMaxLenInterfaceName); + kMaxLenInterfaceName); memset(reinterpret_cast(tkey->get_key())->vrt_key. - vrouter_name, 0, kMaxLenVnodeName); + vrouter_name, 0, kMaxLenVnodeName); /* set Valid for IP address */ tval->valid[UPLL_IDX_IP_ADDR_VI] = UNC_VF_VALID; - tval->valid[UPLL_IDX_PREFIXLEN_VI] = UNC_VF_VALID; + tval->valid[UPLL_IDX_PREFIXLEN_VI] = UNC_VF_VALID; result_code = ReadConfigDB(tkey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS == result_code) { @@ -1350,43 +1377,48 @@ upll_rc_t VrtIfMoMgr::MergeValidate(unc_key_type_t keytype, } if (tvalid2) { tval = reinterpret_cast - (GetVal(tkey)); + (GetVal(tkey)); if (tval) { - tval->valid[UPLL_IDX_DESC_VI] = UNC_VF_INVALID; - tval->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_INVALID; + tval->valid[UPLL_IDX_DESC_VI] = UNC_VF_INVALID; + tval->valid[UPLL_IDX_ADMIN_ST_VI] = UNC_VF_INVALID; /* The Same VTN should not have the same MAC and IP address so must * remove the if_name */ - memset(reinterpret_cast(tkey->get_key())->if_name, 0, - kMaxLenInterfaceName); - - memset(reinterpret_cast(tkey->get_key())->vrt_key. - vrouter_name, 0, kMaxLenVnodeName); - /* set Valid for MAC address */ - if (tvalid1) { - tval->valid[UPLL_IDX_IP_ADDR_VI] = UNC_VF_INVALID; - tval->valid[UPLL_IDX_PREFIXLEN_VI] = UNC_VF_INVALID; - } - tval->valid[UPLL_IDX_MAC_ADDR_VI] = UNC_VF_VALID; - result_code = ReadConfigDB(tkey, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, - MAINTBL); - if (UPLL_RC_SUCCESS == result_code) { - ikey->ResetWith(tkey); - delete tkey; - delete dup_key; - return UPLL_RC_ERR_MERGE_CONFLICT; - } - if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); - if (dup_key) delete dup_key; - delete tkey; - return result_code; - } - } + memset(reinterpret_cast(tkey->get_key())->if_name, + 0, + kMaxLenInterfaceName); + + memset(reinterpret_cast(tkey->get_key())->vrt_key. + vrouter_name, 0, kMaxLenVnodeName); + /* set Valid for MAC address */ + if (tvalid1) { + tval->valid[UPLL_IDX_IP_ADDR_VI] = UNC_VF_INVALID; + tval->valid[UPLL_IDX_PREFIXLEN_VI] = UNC_VF_INVALID; + } + tval->valid[UPLL_IDX_MAC_ADDR_VI] = UNC_VF_VALID; + result_code = ReadConfigDB(tkey, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (UPLL_RC_SUCCESS == result_code) { + ikey->ResetWith(tkey); + delete tkey; + delete dup_key; + return UPLL_RC_ERR_MERGE_CONFLICT; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + if (dup_key) delete dup_key; + delete tkey; + return result_code; + } + } } } } else { - UPLL_LOG_DEBUG("Vrt_If val is Empty"); + UPLL_LOG_DEBUG("Vrt_If val is Empty"); } if (tkey) { delete tkey; @@ -1404,8 +1436,8 @@ upll_rc_t VrtIfMoMgr::MergeValidate(unc_key_type_t keytype, upll_rc_t VrtIfMoMgr::GetVexternal(ConfigKeyVal *ikey, upll_keytype_datatype_t data_type, DalDmlIntf *dmi, - uint8_t *vexternal, uint8_t *vex_if, - InterfacePortMapInfo &iftype) { + uint8_t *vexternal, uint8_t *vex_if, + InterfacePortMapInfo &iftype) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (!ikey) { @@ -1413,23 +1445,23 @@ upll_rc_t VrtIfMoMgr::GetVexternal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } MoMgrImpl *mgr = reinterpret_cast(const_cast( - GetMoManager(UNC_KT_VLINK))); + GetMoManager(UNC_KT_VLINK))); if (!mgr) { - UPLL_LOG_DEBUG("Instance is NULL"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; } switch (data_type) { case UPLL_DT_CANDIDATE: case UPLL_DT_IMPORT: - result_code = mgr->CheckVnodeInfo(ikey, data_type, dmi); - break; + result_code = mgr->CheckVnodeInfo(ikey, data_type, dmi); + break; case UPLL_DT_AUDIT: - result_code = mgr->CheckVnodeInfo(ikey, UPLL_DT_RUNNING, dmi); - break; + result_code = mgr->CheckVnodeInfo(ikey, UPLL_DT_RUNNING, dmi); + break; default: - UPLL_LOG_DEBUG("Invalid Datatype %d", data_type); - return UPLL_RC_ERR_GENERIC; - break; + UPLL_LOG_DEBUG("Invalid Datatype %d", data_type); + return UPLL_RC_ERR_GENERIC; + break; } if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { @@ -1437,14 +1469,14 @@ upll_rc_t VrtIfMoMgr::GetVexternal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } if (UPLL_RC_SUCCESS == result_code) { - iftype = kVlinkConfigured; + iftype = kVlinkConfigured; } else { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - iftype = kVlinkPortMapNotConfigured; - } else { - UPLL_LOG_DEBUG("Error %d", result_code); - return result_code; - } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + iftype = kVlinkPortMapNotConfigured; + } else { + UPLL_LOG_DEBUG("Error %d", result_code); + return result_code; + } } return UPLL_RC_SUCCESS; } diff --git a/coordinator/modules/upll/vrt_if_momgr.hh b/coordinator/modules/upll/vrt_if_momgr.hh index 48781631..3e4e7174 100644 --- a/coordinator/modules/upll/vrt_if_momgr.hh +++ b/coordinator/modules/upll/vrt_if_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,347 +20,350 @@ namespace upll { namespace kt_momgr { class VrtIfMoMgr : public VnodeChildMoMgr { - private: - static unc_key_type_t vrt_if_child[]; - static BindInfo vrt_if_bind_info[]; - static BindInfo key_vrt_if_maintbl_update_bind_info[]; + private: + static unc_key_type_t vrt_if_child[]; + static BindInfo vrt_if_bind_info[]; + static BindInfo key_vrt_if_maintbl_update_bind_info[]; - /* @brief Returns admin and portmap information if portmap is - * valid. Else returns NULL for portmap - * - * @param[in] ikey Pointer to ConfigKeyVal - * @param[out] valid_pm portmap is valid - * @param[out] pm pointer to portmap informtation if valid_pm - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, - val_port_map_t *&pm, uint8_t &valid_admin, - uint8_t &admin_status) { - UPLL_FUNC_TRACE; - if (ikey == NULL) return UPLL_RC_ERR_GENERIC; - val_vrt_if *ifval = reinterpret_cast - (GetVal(ikey)); - if (!ifval) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - valid_pm = UNC_VF_INVALID; - pm = NULL; - valid_admin = ifval->valid[UPLL_IDX_ADMIN_ST_VI]; - admin_status = ifval->admin_status; - return UPLL_RC_SUCCESS; + /* @brief Returns admin and portmap information if portmap is + * valid. Else returns NULL for portmap + * + * @param[in] ikey Pointer to ConfigKeyVal + * @param[out] valid_pm portmap is valid + * @param[out] pm pointer to portmap informtation if valid_pm + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, + val_port_map_t *&pm, uint8_t &valid_admin, + uint8_t &admin_status) { + UPLL_FUNC_TRACE; + if (ikey == NULL) return UPLL_RC_ERR_GENERIC; + val_vrt_if *ifval = reinterpret_cast + (GetVal(ikey)); + if (!ifval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; } - - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vrouter_interface::kDbiOperStatus: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_OPER_STATUS_VRTIS]; - break; - case uudst::vrouter_interface::kDbiDownCount: - valid = NULL; - break; - case uudst::vrouter_interface::kDbiAdminStatus: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_ADMIN_ST_VI]; - break; - case uudst::vrouter_interface::kDbiDesc: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DESC_VI]; - break; - case uudst::vrouter_interface::kDbiIpAddr: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_IP_ADDR_VI]; - break; - case uudst::vrouter_interface::kDbiMask: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_PREFIXLEN_VI]; - break; - case uudst::vrouter_interface::kDbiMacAddr: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_MAC_ADDR_VI]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } + valid_pm = UNC_VF_INVALID; + pm = NULL; + valid_admin = ifval->valid[UPLL_IDX_ADMIN_ST_VI]; + admin_status = ifval->admin_status; + return UPLL_RC_SUCCESS; + } + + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vrouter_interface::kDbiOperStatus: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_OPER_STATUS_VRTIS]; + break; + case uudst::vrouter_interface::kDbiDownCount: + valid = NULL; + break; + case uudst::vrouter_interface::kDbiAdminStatus: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_ADMIN_ST_VI]; + break; + case uudst::vrouter_interface::kDbiDesc: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_DESC_VI]; + break; + case uudst::vrouter_interface::kDbiIpAddr: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_IP_ADDR_VI]; + break; + case uudst::vrouter_interface::kDbiMask: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_PREFIXLEN_VI]; + break; + case uudst::vrouter_interface::kDbiMacAddr: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_MAC_ADDR_VI]; + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, - void *val2, - bool audit_status, - unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * - **/ - bool CompareValidValue(void *&val1, - void *val2, - bool audit); + return UPLL_RC_SUCCESS; + } + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, + void *val2, + bool audit_status, + unc_keytype_operation_t op); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * + **/ + bool CompareValidValue(void *&val1, + void *val2, + bool audit); - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VRT_IF keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vrt_if is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VRT_IF keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vrt_if is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey); - /** - * @Brief Checks if the specified key type(KT_VRT_IF) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] ctrlr_name Controller name associated with ikey. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name); + /** + * @Brief Checks if the specified key type(KT_VRT_IF) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] ctrlr_name Controller name associated with ikey. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char *ctrlr_name); - /** - * @Brief Validates the syntax for KT_VRT_IF keytype value structure. - * - * @param[in] val_vrt_if KT_VRT_IF value structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVrtIfValue(val_vrt_if *vrt_if_val, - unc_keytype_operation_t op); + /** + * @Brief Validates the syntax for KT_VRT_IF keytype value structure. + * + * @param[in] val_vrt_if KT_VRT_IF value structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVrtIfValue(val_vrt_if *vrt_if_val, + unc_keytype_operation_t op); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] vrt_if_val KT_VRT_IF value structure. - * @param[in] attrs Pointer to controller attribute. - * @param[in] operation Operation name. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count resource - * limit is exceeds. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVrtIfAttributeSupportCheck(val_vrt_if *vrt_if_val, - const uint8_t *attrs, - unc_keytype_operation_t operation); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] vrt_if_val KT_VRT_IF value structure. + * @param[in] attrs Pointer to controller attribute. + * @param[in] operation Operation name. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT Instance count resource + * limit is exceeds. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVrtIfAttributeSupportCheck(val_vrt_if *vrt_if_val, + const uint8_t *attrs, + unc_keytype_operation_t operation); - /** - * @Brief Validates the syntax of the specified value structure - * for KT_VRT_IF keytype - * @param[in] val_vtn_neighbor vtn neighbor value structure - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * - */ - upll_rc_t ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, - unc_keytype_operation_t operation); + /** + * @Brief Validates the syntax of the specified value structure + * for KT_VRT_IF keytype + * @param[in] val_vtn_neighbor vtn neighbor value structure + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * + */ + upll_rc_t ValidateVtnNeighborValue(val_vtn_neighbor *vtn_neighbor, + unc_keytype_operation_t operation); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main - * table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main + * table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the - * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the + * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); - /* @brief To convert the value structure read from DB to + /* @brief To convert the value structure read from DB to * VTNService during READ operations - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * * @retval UPLL_RC_SUCCESS Completed successfully. * @retval UPLL_RC_ERR_GENERIC Generic failure. * **/ upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); - - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - uint8_t* GetControllerId(ConfigKeyVal *ck_vrt, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - /* Rename */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + uint8_t* GetControllerId(ConfigKeyVal *ck_vrt, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + + /* Rename */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + bool GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl); - public: - VrtIfMoMgr(); - virtual ~VrtIfMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to - * a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, - uint64_t index); - /** - * @Brief Validates the syntax for KT_VRT_IF Keytype key structure. - * - * @param[in] key_vrt_if KT_VRT_IF key structure. - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - **/ - upll_rc_t ValidateVrtIfKey(key_vrt_if *vrt_if_key, - unc_keytype_operation_t operation = UNC_OP_INVALID); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + public: + VrtIfMoMgr(); + virtual ~VrtIfMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to + * a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, + uint64_t index); + /** + * @Brief Validates the syntax for KT_VRT_IF Keytype key structure. + * + * @param[in] key_vrt_if KT_VRT_IF key structure. + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + **/ + upll_rc_t ValidateVrtIfKey( + key_vrt_if *vrt_if_key, + unc_keytype_operation_t operation = UNC_OP_INVALID); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); - upll_rc_t MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + upll_rc_t MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi); - upll_rc_t GetVexternal(ConfigKeyVal *ikey, - upll_keytype_datatype_t data_type, - DalDmlIntf *dmi, - uint8_t *vexternal, uint8_t *vex_if, - InterfacePortMapInfo &iftype); -/** - * @brief Method to get a configkeyval of a specified keytype from an - * input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from - * which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); + upll_rc_t GetVexternal(ConfigKeyVal *ikey, + upll_keytype_datatype_t data_type, + DalDmlIntf *dmi, + uint8_t *vexternal, uint8_t *vex_if, + InterfacePortMapInfo &iftype); + /** + * @brief Method to get a configkeyval of a specified keytype from an + * input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from + * which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vrt_momgr.cc b/coordinator/modules/upll/vrt_momgr.cc index 50694ef1..dfb9a6d4 100644 --- a/coordinator/modules/upll/vrt_momgr.cc +++ b/coordinator/modules/upll/vrt_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -16,115 +16,116 @@ namespace upll { namespace kt_momgr { BindInfo VrtMoMgr::vrt_bind_info[] = { - { uudst::vrouter::kDbiVtnName, CFG_KEY, offsetof(key_vrt, vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vrouter::kDbiVrtName, CFG_KEY, offsetof(key_vrt, vrouter_name), - uud::kDalChar, 32 }, - { uudst::vrouter::kDbiCtrlrName, CFG_VAL, offsetof(val_vrt, controller_id), - uud::kDalChar, 32 }, - { uudst::vrouter::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vrouter::kDbiDomainId, CFG_VAL, offsetof(val_vrt, domain_id), - uud::kDalChar, 32 }, - { uudst::vrouter::kDbiDomainId, CK_VAL, offsetof(key_user_data, domain_id), - uud::kDalChar, 32 }, - { uudst::vrouter::kDbiVrtDesc, CFG_VAL, offsetof(val_vrt, vrt_description), - uud::kDalChar, 128 }, - { uudst::vrouter::kDbiDhcprelayAdminstatus, CFG_VAL, offsetof( - val_vrt, dhcp_relay_admin_status), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiOperStatus, ST_VAL, offsetof(val_db_vrt_st, - vrt_val_st.oper_status), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiDownCount, ST_VAL, offsetof(val_db_vrt_st, - down_count), - uud::kDalUint32, 1 }, - { uudst::vrouter::kDbiValidCtrlrName, CFG_META_VAL, offsetof( - val_vrt, valid[UPLL_IDX_CONTROLLER_ID_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiValidDomainId, CFG_META_VAL, offsetof( - val_vrt, valid[UPLL_IDX_DOMAIN_ID_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiValidDesc, CFG_META_VAL, offsetof( - val_vrt, valid[UPLL_IDX_DESC_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiValidDhcprelayAdminstatus, CFG_META_VAL, offsetof( - val_vrt, valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiValidOperStatus, ST_META_VAL, offsetof( - val_vrt_st, valid[UPLL_IDX_OPER_STATUS_VRTS]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiCsCtrlrName, CS_VAL, offsetof( - val_vrt, cs_attr[UPLL_IDX_CONTROLLER_ID_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiCsDomainId, CS_VAL, offsetof( - val_vrt, cs_attr[UPLL_IDX_DOMAIN_ID_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiCsVrtDesc, CS_VAL, offsetof( - val_vrt, cs_attr[UPLL_IDX_DESC_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiCsDhcprelayAdminstatus, CS_VAL, offsetof( - val_vrt, cs_attr[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT]), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiCsRowstatus, CS_VAL, offsetof(val_vrt, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vrouter::kDbiVrtFlags, CK_VAL, offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } }; + { uudst::vrouter::kDbiVtnName, CFG_KEY, offsetof(key_vrt, vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vrouter::kDbiVrtName, CFG_KEY, offsetof(key_vrt, vrouter_name), + uud::kDalChar, 32 }, + { uudst::vrouter::kDbiCtrlrName, CFG_VAL, offsetof(val_vrt, controller_id), + uud::kDalChar, 32 }, + { uudst::vrouter::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vrouter::kDbiDomainId, CFG_VAL, offsetof(val_vrt, domain_id), + uud::kDalChar, 32 }, + { uudst::vrouter::kDbiDomainId, CK_VAL, offsetof(key_user_data, domain_id), + uud::kDalChar, 32 }, + { uudst::vrouter::kDbiVrtDesc, CFG_VAL, offsetof(val_vrt, vrt_description), + uud::kDalChar, 128 }, + { uudst::vrouter::kDbiDhcprelayAdminstatus, CFG_VAL, offsetof( + val_vrt, dhcp_relay_admin_status), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiOperStatus, ST_VAL, offsetof(val_db_vrt_st, + vrt_val_st.oper_status), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiDownCount, ST_VAL, offsetof(val_db_vrt_st, + down_count), + uud::kDalUint32, 1 }, + { uudst::vrouter::kDbiValidCtrlrName, CFG_META_VAL, offsetof( + val_vrt, valid[UPLL_IDX_CONTROLLER_ID_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiValidDomainId, CFG_META_VAL, offsetof( + val_vrt, valid[UPLL_IDX_DOMAIN_ID_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiValidDesc, CFG_META_VAL, offsetof( + val_vrt, valid[UPLL_IDX_DESC_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiValidDhcprelayAdminstatus, CFG_META_VAL, offsetof( + val_vrt, valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiValidOperStatus, ST_META_VAL, offsetof( + val_vrt_st, valid[UPLL_IDX_OPER_STATUS_VRTS]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiCsCtrlrName, CS_VAL, offsetof( + val_vrt, cs_attr[UPLL_IDX_CONTROLLER_ID_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiCsDomainId, CS_VAL, offsetof( + val_vrt, cs_attr[UPLL_IDX_DOMAIN_ID_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiCsVrtDesc, CS_VAL, offsetof( + val_vrt, cs_attr[UPLL_IDX_DESC_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiCsDhcprelayAdminstatus, CS_VAL, offsetof( + val_vrt, cs_attr[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT]), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiCsRowstatus, CS_VAL, offsetof(val_vrt, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vrouter::kDbiVrtFlags, CK_VAL, offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 } }; BindInfo VrtMoMgr::vrt_rename_bind_info[] = { - { uudst::vnode_rename::kDbiUncVtnName, CFG_KEY, offsetof(key_vrt, - vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_KEY, offsetof(key_vrt, - vrouter_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrName, CK_VAL, offsetof(key_user_data_t, - ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiDomainId, CK_VAL, offsetof(key_user_data_t, - domain_id), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrVtnName, CFG_VAL, offsetof(val_rename_vnode, - ctrlr_vtn_name), - uud::kDalChar, 32 }, - { uudst::vnode_rename::kDbiCtrlrVnodeName, CFG_VAL, offsetof( - val_rename_vnode, ctrlr_vnode_name), - uud::kDalChar, 32 } }; + { uudst::vnode_rename::kDbiUncVtnName, CFG_KEY, offsetof(key_vrt, + vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_KEY, offsetof(key_vrt, + vrouter_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrName, CK_VAL, offsetof(key_user_data_t, + ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiDomainId, CK_VAL, offsetof(key_user_data_t, + domain_id), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrVtnName, CFG_VAL, offsetof(val_rename_vnode, + ctrlr_vtn_name), + uud::kDalChar, 32 }, + { uudst::vnode_rename::kDbiCtrlrVnodeName, CFG_VAL, offsetof( + val_rename_vnode, ctrlr_vnode_name), + uud::kDalChar, 32 } }; unc_key_type_t VrtMoMgr::vrt_child[] = { UNC_KT_VRT_IPROUTE, - UNC_KT_DHCPRELAY_SERVER, - UNC_KT_DHCPRELAY_IF, UNC_KT_VRT_IF }; + UNC_KT_VRT_IF, + UNC_KT_DHCPRELAY_SERVER, + UNC_KT_DHCPRELAY_IF}; BindInfo VrtMoMgr::key_vrt_maintbl_update_bind_info[] = { - { uudst::vrouter::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vrt_t, - vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vrouter::kDbiVrtName, CFG_MATCH_KEY, offsetof(key_vrt_t, - vrouter_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vrouter::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vrouter::kDbiVrtName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vrouter::kDbiVrtFlags, CK_VAL, offsetof(key_user_data_t, - flags), - uud::kDalUint8, 1 } }; + { uudst::vrouter::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vrt_t, + vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vrouter::kDbiVrtName, CFG_MATCH_KEY, offsetof(key_vrt_t, + vrouter_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vrouter::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vrouter::kDbiVrtName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vrouter::kDbiVrtFlags, CK_VAL, offsetof(key_user_data_t, + flags), + uud::kDalUint8, 1 } }; BindInfo VrtMoMgr::key_vrt_renametbl_update_bind_info[] = { - { uudst::vnode_rename::kDbiUncVtnName, CFG_MATCH_KEY, offsetof( - key_vrt_t, vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_MATCH_KEY, offsetof( - key_vrt_t, vrouter_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vnode_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vnode_rename::kDbiUncvnodeName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vnode_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, }; + { uudst::vnode_rename::kDbiUncVtnName, CFG_MATCH_KEY, offsetof( + key_vrt_t, vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_MATCH_KEY, offsetof( + key_vrt_t, vrouter_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vnode_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vnode_rename::kDbiUncvnodeName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vnode_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, }; /* * Based on the key type the bind info will pass @@ -143,7 +144,7 @@ bool VrtMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, UPLL_LOG_DEBUG("Invalid Table "); return PFC_FALSE; } - + return PFC_TRUE; } VrtMoMgr::VrtMoMgr() { @@ -151,12 +152,12 @@ VrtMoMgr::VrtMoMgr() { ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiVrtTbl, UNC_KT_VROUTER, vrt_bind_info, - IpctSt::kIpcStKeyVrt, IpctSt::kIpcStValVrt, - (uudst::vrouter::kDbiVrtNumCols+2)); + IpctSt::kIpcStKeyVrt, IpctSt::kIpcStValVrt, + (uudst::vrouter::kDbiVrtNumCols+2)); table[RENAMETBL] = new Table(uudst::kDbiVNodeRenameTbl, UNC_KT_VROUTER, - vrt_rename_bind_info, IpctSt::kIpcInvalidStNum, - IpctSt::kIpcInvalidStNum, - uudst::vnode_rename::kDbiVnodeRenameNumCols); + vrt_rename_bind_info, IpctSt::kIpcInvalidStNum, + IpctSt::kIpcInvalidStNum, + uudst::vnode_rename::kDbiVnodeRenameNumCols); table[CTRLRTBL] = NULL; nchild = sizeof(vrt_child) / sizeof(*vrt_child); child = vrt_child; @@ -172,7 +173,7 @@ bool VrtMoMgr::IsValidKey(void *key, uint64_t index) { ret_val = ValidateKey(reinterpret_cast(vrt_key->vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("VTN Name is not valid(%d)", ret_val); + UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; } break; @@ -181,7 +182,7 @@ bool VrtMoMgr::IsValidKey(void *key, uint64_t index) { ret_val = ValidateKey(reinterpret_cast(vrt_key->vrouter_name), kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("VRouter Name is not valid(%d)", ret_val); + UPLL_LOG_TRACE("VRouter Name is not valid(%d)", ret_val); return false; } break; @@ -199,22 +200,22 @@ upll_rc_t VrtMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_vrt *vrt_key = NULL; if (okey && (okey->get_key())) { - vrt_key = reinterpret_cast - (okey->get_key()); + vrt_key = reinterpret_cast + (okey->get_key()); } else { vrt_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vrt_t))); + (ConfigKeyVal::Malloc(sizeof(key_vrt_t))); } void *pkey; if (parent_key == NULL) { if (okey == NULL) okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, vrt_key, - NULL); + NULL); else if (okey->get_key() != vrt_key) - okey->SetKey(IpctSt::kIpcStKeyVrt,vrt_key); + okey->SetKey(IpctSt::kIpcStKeyVrt, vrt_key); return UPLL_RC_SUCCESS; } else { - pkey = parent_key->get_key(); + pkey = parent_key->get_key(); } if (!pkey) { if (!okey || !(okey->get_key())) @@ -226,47 +227,52 @@ upll_rc_t VrtMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (parent_key->get_key_type()) { case UNC_KT_VROUTER: uuu::upll_strncpy(vrt_key->vrouter_name, - reinterpret_cast(pkey)->vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)->vrouter_name, + (kMaxLenVnodeName+1)); uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1) ); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1) ); break; case UNC_KT_VLINK: { - uint8_t *vnode_name; - uint8_t flags = 0; - val_vlink *vlink_val = reinterpret_cast(GetVal(parent_key)); - if (!vlink_val) { - if (!okey || !(okey->get_key())) - free(vrt_key); - return UPLL_RC_ERR_GENERIC; - } - GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); - flags &= VLINK_FLAG_NODE_POS; - UPLL_LOG_DEBUG("Vlink flag node position %d",flags); - if (flags == kVlinkVnode2) { - vnode_name = vlink_val->vnode2_name; - } else { - vnode_name = vlink_val->vnode1_name; - } - uuu::upll_strncpy(vrt_key->vrouter_name, vnode_name, + uint8_t *vnode_name; + uint8_t flags = 0; + val_vlink *vlink_val = reinterpret_cast( + GetVal(parent_key)); + if (!vlink_val) { + if (!okey || !(okey->get_key())) + free(vrt_key); + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + UPLL_LOG_DEBUG("Vlink flag node position %d", flags); + if (flags == kVlinkVnode2) { + vnode_name = vlink_val->vnode2_name; + } else { + vnode_name = vlink_val->vnode1_name; + } + uuu::upll_strncpy(vrt_key->vrouter_name, vnode_name, (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, reinterpret_cast( - parent_key->get_key())->vtn_key.vtn_name , (kMaxLenVtnName+1)); - } - break; + uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, + reinterpret_cast( + parent_key->get_key())->vtn_key.vtn_name , (kMaxLenVtnName+1)); + } + break; case UNC_KT_VTN: default: uuu::upll_strncpy(vrt_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); *(vrt_key->vrouter_name) = *""; } -// cout << "GetChildConfigKey " << vrt_key->vtn_key.vtn_name << " "; -// cout << vrt_key->vrouter_name << ""; + // cout << "GetChildConfigKey " << vrt_key->vtn_key.vtn_name << " "; + // cout << vrt_key->vrouter_name << ""; if (!okey) - okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, vrt_key, NULL); + okey = new ConfigKeyVal(UNC_KT_VROUTER, + IpctSt::kIpcStKeyVrt, + vrt_key, + NULL); else if (okey->get_key() != vrt_key) okey->SetKey(IpctSt::kIpcStKeyVrt, vrt_key); if (okey == NULL) @@ -293,22 +299,23 @@ upll_rc_t VrtMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, key_vtn *vtn_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn))); uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); if (okey == NULL) - result_code = UPLL_RC_ERR_GENERIC; + result_code = UPLL_RC_ERR_GENERIC; else - SET_USER_DATA(okey, ikey); + SET_USER_DATA(okey, ikey); return result_code; } upll_rc_t VrtMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; // , *nxt_val; -// ConfigVal *ck_nxtval; + // ConfigVal *ck_nxtval; if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; switch (tbl) { @@ -353,12 +360,13 @@ upll_rc_t VrtMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, ConfigVal *ck_v = req->get_cfg_val(); if (ck_v->get_st_num() == IpctSt::kIpcInvalidStNum) { val_rename_vnode *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); rename_val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); memcpy(rename_val, ival, sizeof(val_rename_vnode)); } else { - val_rename_vrt *ival = reinterpret_cast (GetVal(req)); + val_rename_vrt *ival = reinterpret_cast + (GetVal(req)); rename_val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_rename_vrt))); memcpy(rename_val, ival, sizeof(val_rename_vrt)); @@ -405,14 +413,15 @@ upll_rc_t VrtMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; val_rename_vnode *rename_vnode = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode))); key_vrt *ctrlr_key = reinterpret_cast(ikey->get_key()); - + rename_vnode->valid[UPLL_CTRLR_VTN_NAME_VALID] = UNC_VF_INVALID; rename_vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_INVALID; - upll_rc_t ret_val = ValidateKey(reinterpret_cast(ctrlr_key->vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + upll_rc_t ret_val = ValidateKey(reinterpret_cast + (ctrlr_key->vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val == UPLL_RC_SUCCESS) { uuu::upll_strncpy(rename_vnode->ctrlr_vtn_name, ctrlr_key->vtn_key.vtn_name, @@ -438,7 +447,7 @@ upll_rc_t VrtMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, } if (ctrlr_id) { SET_USER_DATA_CTRLR(unc_key, ctrlr_id); - }else { + } else { dbop.matchop = kOpMatchNone; } @@ -446,21 +455,21 @@ upll_rc_t VrtMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vnode); result_code = ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (result_code == UPLL_RC_SUCCESS) { - // uint8_t rename = 0x00; + // uint8_t rename = 0x00; key_vrt *vrt_key = reinterpret_cast(unc_key->get_key()); if (strcmp((const char *) ctrlr_key->vtn_key.vtn_name, (const char *) vrt_key->vtn_key.vtn_name)) { uuu::upll_strncpy(ctrlr_key->vtn_key.vtn_name, - vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); -// rename |= VTN_RENAME; + vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + // rename |= VTN_RENAME; } if (strcmp(reinterpret_cast(ctrlr_key->vrouter_name), - reinterpret_cast(vrt_key->vrouter_name))) { + reinterpret_cast(vrt_key->vrouter_name))) { uuu::upll_strncpy(ctrlr_key->vrouter_name, - vrt_key->vrouter_name, (kMaxLenVnodeName+1)); - // rename |= VN_RENAME; + vrt_key->vrouter_name, (kMaxLenVnodeName+1)); + // rename |= VN_RENAME; } SET_USER_DATA(ikey, unc_key); } @@ -487,19 +496,19 @@ upll_rc_t VrtMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, } else { result_code = GetChildConfigKey(dup_key, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d",result_code); + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); return result_code; } #endif result_code = IsRenamed(ikey, dt_type, dmi, rename); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning %d",result_code); + UPLL_LOG_DEBUG("Returning %d", result_code); return result_code; } if (!ctrlr_dom->ctrlr || - !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || - !ctrlr_dom->domain || - !strlen(reinterpret_cast(ctrlr_dom->domain))) { + !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || + !ctrlr_dom->domain || + !strlen(reinterpret_cast(ctrlr_dom->domain))) { GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); } #if 0 @@ -512,7 +521,7 @@ upll_rc_t VrtMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, SET_USER_DATA(ikey, dup_key); GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); if (dup_key) - delete dup_key; + delete dup_key; } if (!ctrlr_dom->ctrlr || !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || @@ -524,26 +533,26 @@ upll_rc_t VrtMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, !strlen(reinterpret_cast(ctrlr_dom->ctrlr)) || !ctrlr_dom->domain || !strlen(reinterpret_cast(ctrlr_dom->domain))) { - UPLL_LOG_DEBUG("Invalid Ctrlr/domain"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Invalid Ctrlr/domain"); + return UPLL_RC_ERR_GENERIC; } #endif if (rename == 0) return UPLL_RC_SUCCESS; result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d",result_code); - return result_code; + UPLL_LOG_DEBUG("Returning error %d", result_code); + return result_code; } -// GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); -// if (!ctrlr_dom->ctrlr || !ctrlr_dom->domain) return UPLL_RC_ERR_GENERIC; + // GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); + // if (!ctrlr_dom->ctrlr || !ctrlr_dom->domain) return UPLL_RC_ERR_GENERIC; SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag }; + kOpInOutFlag }; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (result_code != UPLL_RC_SUCCESS) return result_code; val_rename_vnode *rename_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (!rename_val) return UPLL_RC_ERR_GENERIC; key_vrt *ctrlr_key = reinterpret_cast(ikey->get_key()); if (!ctrlr_key) { @@ -558,7 +567,7 @@ upll_rc_t VrtMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, if (rename & 0x02) { /* vnode renamed */ UPLL_LOG_TRACE("COntroller Vnode name %s", rename_val->ctrlr_vnode_name); uuu::upll_strncpy(ctrlr_key->vrouter_name, - rename_val->ctrlr_vnode_name, (kMaxLenVnodeName+1)); + rename_val->ctrlr_vnode_name, (kMaxLenVnodeName+1)); } SET_USER_DATA_FLAGS(ikey, rename); delete okey; @@ -591,9 +600,11 @@ upll_rc_t VrtMoMgr::UpdateConfigStatus(ConfigKeyVal *vrt_key, if (op == UNC_OP_CREATE) { vrt_val->cs_row_status = cs_status; val_db_vrtst = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vrt_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vrt_st))); val_vrtst = &val_db_vrtst->vrt_val_st; - val_vrtst->oper_status = UPLL_OPER_STATUS_DOWN; + val_vrtst->oper_status = + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_DOWN; val_vrtst->valid[UPLL_IDX_OPER_STATUS_VRTS] = UNC_VF_VALID; val_db_vrtst->down_count = 0; val_db_vrtst->fault_count = 0; @@ -612,32 +623,32 @@ upll_rc_t VrtMoMgr::UpdateConfigStatus(ConfigKeyVal *vrt_key, || (UNC_VF_VALID_NO_VALUE == (uint8_t) vrt_val->valid[loop])) { // Description is set to APPLIED if (loop == UPLL_IDX_DESC_VRT) - vrt_val->cs_attr[loop] = UNC_CS_APPLIED; + vrt_val->cs_attr[loop] = UNC_CS_APPLIED; else - vrt_val->cs_attr[loop] = cs_status; + vrt_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vrt_val->valid[loop]) && (UNC_OP_CREATE == op)) { - vrt_val->cs_attr[loop] = UNC_CS_APPLIED; + vrt_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((UNC_VF_INVALID == vrt_val->valid[loop]) && (UNC_OP_UPDATE == op)) { - vrt_val->cs_attr[loop] = vrt_val2->cs_attr[loop]; + vrt_val->cs_attr[loop] = vrt_val2->cs_attr[loop]; } } return result_code; } /* -uint8_t* VrtMoMgr::GetControllerId(ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; - if (!ikey) - return NULL; - val_vrt * temp_vrt = reinterpret_cast(GetVal(ikey)); - if (temp_vrt->valid[UPLL_IDX_CONTROLLER_ID_VRT] != UNC_VF_VALID - || !strlen(reinterpret_cast(temp_vrt->controller_id))) - return NULL; - return temp_vrt->controller_id; -} -*/ + uint8_t* VrtMoMgr::GetControllerId(ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + if (!ikey) + return NULL; + val_vrt * temp_vrt = reinterpret_cast(GetVal(ikey)); + if (temp_vrt->valid[UPLL_IDX_CONTROLLER_ID_VRT] != UNC_VF_VALID + || !strlen(reinterpret_cast(temp_vrt->controller_id))) + return NULL; + return temp_vrt->controller_id; + } + */ upll_rc_t VrtMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, controller_domain *ctrlr_dom) { @@ -658,14 +669,14 @@ upll_rc_t VrtMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, if (temp_vrt == NULL || temp_vrt->valid[UPLL_IDX_DOMAIN_ID_VRT] != UNC_VF_VALID || !strlen(reinterpret_cast( - temp_vrt->domain_id))) { + temp_vrt->domain_id))) { ctrlr_dom->domain = NULL; UPLL_LOG_DEBUG("Ctrlr null"); } else { SET_USER_DATA_DOMAIN(ikey, temp_vrt->domain_id); GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); } - UPLL_LOG_DEBUG("ctrlr_dom %s %s",ctrlr_dom->ctrlr, ctrlr_dom->domain); + UPLL_LOG_DEBUG("ctrlr_dom %s %s", ctrlr_dom->ctrlr, ctrlr_dom->domain); return UPLL_RC_SUCCESS; } @@ -700,35 +711,37 @@ upll_rc_t VrtMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, (ikey != NULL) ? reinterpret_cast (GetVal(ikey)) : NULL; if (!tval) { - UPLL_LOG_DEBUG("tval is null"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("tval is null"); + return UPLL_RC_ERR_GENERIC; } /* The PFC Name and New Name should not be equal */ if (!strcmp(reinterpret_cast(tval->new_name), - reinterpret_cast(reinterpret_cast - (ikey->get_key())->vrouter_name))) + reinterpret_cast(reinterpret_cast + (ikey->get_key())->vrouter_name))) return UPLL_RC_ERR_GENERIC; key_vrt_t *key_vrt = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vrt_t))); + (ConfigKeyVal::Malloc(sizeof(key_vrt_t))); if (tval->valid[UPLL_IDX_NEW_NAME_RVRT] == UNC_VF_VALID_NO_VALUE) { uuu::upll_strncpy(key_vrt->vrouter_name, - (static_cast(ikey->get_key())->vrouter_name), - (kMaxLenVnodeName+1)); + (static_cast(ikey->get_key())-> + vrouter_name), + (kMaxLenVnodeName+1)); no_rename = true; } else { if ((reinterpret_cast(tval)-> - valid[UPLL_IDX_NEW_NAME_RVRT] == UNC_VF_VALID)) { + valid[UPLL_IDX_NEW_NAME_RVRT] == UNC_VF_VALID)) { // checking the string is empty or not if (!strlen(reinterpret_cast(static_cast - (tval)->new_name))) { + (tval)->new_name))) { free(key_vrt); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(key_vrt->vrouter_name, - (static_cast(GetVal(ikey)))->new_name, - (kMaxLenVnodeName+1)); + (static_cast(GetVal(ikey)))-> + new_name, + (kMaxLenVnodeName+1)); } else { free(key_vrt); return UPLL_RC_ERR_GENERIC; @@ -742,26 +755,26 @@ upll_rc_t VrtMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, return result_code; } MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager(UNC_KT_VTN))); result_code = mgr->GetRenamedUncKey(pkey, UPLL_DT_IMPORT, dmi, ctrlr); - if (UPLL_RC_SUCCESS != result_code + if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("GetRenamedUncKey failed with result_code %d", - result_code); + result_code); DELETE_IF_NOT_NULL(pkey); free(key_vrt); return result_code; } // use the UNC VTN name if PFC VTN name is renamed; if (!strlen(reinterpret_cast(reinterpret_cast - (pkey->get_key())->vtn_name))) { - DELETE_IF_NOT_NULL(pkey); - free(key_vrt); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(key_vrt->vtn_key.vtn_name, - reinterpret_cast(pkey->get_key())->vtn_name, - (kMaxLenVtnName+1)); + (pkey->get_key())->vtn_name))) { + DELETE_IF_NOT_NULL(pkey); + free(key_vrt); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(key_vrt->vtn_key.vtn_name, + reinterpret_cast(pkey->get_key())->vtn_name, + (kMaxLenVtnName+1)); okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, key_vrt, NULL); delete pkey; @@ -773,27 +786,28 @@ upll_rc_t VrtMoMgr::SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, } upll_rc_t VrtMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vrt_t *val; val = (ckv_running != NULL) ? reinterpret_cast - (GetVal(ckv_running)) : NULL; + (GetVal(ckv_running)) : NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid) / sizeof(uint8_t); - ++loop) { + ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } @@ -803,7 +817,7 @@ upll_rc_t VrtMoMgr::MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; - if (!ikey || !(ikey->get_key())){ + if (!ikey || !(ikey->get_key())) { UPLL_LOG_DEBUG(" Input is NULL "); return UPLL_RC_ERR_GENERIC; } @@ -811,7 +825,7 @@ upll_rc_t VrtMoMgr::MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, result_code = GetChildConfigKey(dup_key, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - if(dup_key) delete dup_key; + if (dup_key) delete dup_key; return result_code; } /* @@ -833,19 +847,19 @@ upll_rc_t VrtMoMgr::MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code || UPLL_RC_ERR_CFG_SEMANTIC == result_code) { - result_code = GetChildConfigKey(ikey, travel); - if (dup_key) delete dup_key; - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - return result_code; - } - UPLL_LOG_DEBUG("VRouter Name Conflict %d", result_code); - return UPLL_RC_ERR_MERGE_CONFLICT; + result_code = GetChildConfigKey(ikey, travel); + if (dup_key) delete dup_key; + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + UPLL_LOG_DEBUG("VRouter Name Conflict %d", result_code); + return UPLL_RC_ERR_MERGE_CONFLICT; } /* Any other DB error */ if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Vnode Checks Failed %d", result_code); - if(dup_key) delete dup_key; + if (dup_key) delete dup_key; return result_code; } travel = travel->get_next_cfg_key_val(); @@ -863,26 +877,26 @@ upll_rc_t VrtMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vrt_t * key_vrt = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt_t))); - if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { - /* Addressed RESOURCE_LEAK */ - FREE_IF_NOT_NULL(key_vrt); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(key_vrt->vtn_key.vtn_name, - key_rename->old_unc_vtn_name, (kMaxLenVtnName+1)); - if (ikey->get_key_type() == table[MAINTBL]->get_key_type()) { - if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { + if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { + /* Addressed RESOURCE_LEAK */ + FREE_IF_NOT_NULL(key_vrt); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(key_vrt->vtn_key.vtn_name, + key_rename->old_unc_vtn_name, (kMaxLenVtnName+1)); + if (ikey->get_key_type() == table[MAINTBL]->get_key_type()) { + if (!strlen(reinterpret_cast(key_rename->old_unc_vnode_name))) { /* Addressed RESOURCE_LEAK */ FREE_IF_NOT_NULL(key_vrt); return UPLL_RC_ERR_GENERIC; } - uuu::upll_strncpy(key_vrt->vrouter_name, - key_rename->old_unc_vnode_name, (kMaxLenVnodeName+1)); - } + uuu::upll_strncpy(key_vrt->vrouter_name, + key_rename->old_unc_vnode_name, (kMaxLenVnodeName+1)); + } okey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, key_vrt, NULL); if (!okey) { free(key_vrt); @@ -891,7 +905,7 @@ upll_rc_t VrtMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, +upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, ConfigKeyVal *okey, ConfigKeyVal *&rename_info, DalDmlIntf *dmi, @@ -904,8 +918,8 @@ upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, key_vrt_t * vrt_key = NULL; key_rename_vnode_info *vrt_rename_info = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info))); vrt_key = reinterpret_cast (ikey->get_key()); if (!vrt_key) { @@ -915,63 +929,65 @@ upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, } if (renamed) { if (!strlen(reinterpret_cast(reinterpret_cast - (GetVal(ikey))->ctrlr_vnode_name))) { + (GetVal(ikey))->ctrlr_vnode_name))) { FREE_IF_NOT_NULL(vrt_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vrt_rename_info->ctrlr_vnode_name, - reinterpret_cast(GetVal(ikey))->ctrlr_vnode_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(GetVal(ikey))-> + ctrlr_vnode_name, + (kMaxLenVnodeName+1)); if (!strlen(reinterpret_cast(reinterpret_cast - (GetVal(ikey))->ctrlr_vtn_name))) { + (GetVal(ikey))->ctrlr_vtn_name))) { FREE_IF_NOT_NULL(vrt_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vrt_rename_info->ctrlr_vtn_name, - reinterpret_cast(GetVal(ikey))->ctrlr_vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(GetVal(ikey))-> + ctrlr_vtn_name, + (kMaxLenVtnName+1)); } else { if (!strlen(reinterpret_cast(vrt_key->vrouter_name))) { FREE_IF_NOT_NULL(vrt_rename_info); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vrt_rename_info->ctrlr_vnode_name, - vrt_key->vrouter_name, (kMaxLenVnodeName+1)); + vrt_key->vrouter_name, (kMaxLenVnodeName+1)); if (!strlen(reinterpret_cast(vrt_key->vtn_key.vtn_name))) { FREE_IF_NOT_NULL(vrt_rename_info); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vrt_rename_info->ctrlr_vtn_name, - vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); } if (!strlen(reinterpret_cast(vrt_key->vrouter_name))) { - FREE_IF_NOT_NULL(vrt_rename_info); - return UPLL_RC_ERR_GENERIC; + FREE_IF_NOT_NULL(vrt_rename_info); + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vrt_rename_info->old_unc_vnode_name, - vrt_key->vrouter_name, (kMaxLenVnodeName+1)); + vrt_key->vrouter_name, (kMaxLenVnodeName+1)); if (!strlen(reinterpret_cast(vrt_key->vtn_key.vtn_name))) { - FREE_IF_NOT_NULL(vrt_rename_info); - return UPLL_RC_ERR_GENERIC; + FREE_IF_NOT_NULL(vrt_rename_info); + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vrt_rename_info->new_unc_vtn_name, - vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); uuu::upll_strncpy(vrt_rename_info->old_unc_vtn_name, - vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + vrt_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); vrt_key = reinterpret_cast(okey->get_key()); if (!vrt_key) { - /* Addressed RESOURCE_LEAK */ + /* Addressed RESOURCE_LEAK */ FREE_IF_NOT_NULL(vrt_rename_info); return UPLL_RC_ERR_GENERIC; } if (!strlen(reinterpret_cast(vrt_key->vtn_key.vtn_name))) { - FREE_IF_NOT_NULL(vrt_rename_info); - return UPLL_RC_ERR_GENERIC; + FREE_IF_NOT_NULL(vrt_rename_info); + return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vrt_rename_info->new_unc_vnode_name, - vrt_key->vrouter_name, (kMaxLenVnodeName+1)); + vrt_key->vrouter_name, (kMaxLenVnodeName+1)); rename_info = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcInvalidStNum, vrt_rename_info, NULL); @@ -981,7 +997,7 @@ upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, } if (!renamed) { val_rename_vnode_t *vnode = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vnode_t))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vnode_t))); ConfigKeyVal *tmp_key = NULL; result_code = GetChildConfigKey(tmp_key, ikey); @@ -990,9 +1006,11 @@ upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, FREE_IF_NOT_NULL(vnode); return result_code; } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(tmp_key, UPLL_DT_IMPORT, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB Failed"); delete tmp_key; @@ -1002,8 +1020,8 @@ upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, controller_domain ctrlr_dom; result_code = GetControllerDomainId(tmp_key, &ctrlr_dom); if (UPLL_RC_SUCCESS != result_code) { - delete tmp_key; - return result_code; + delete tmp_key; + return result_code; } SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); @@ -1011,11 +1029,13 @@ upll_rc_t VrtMoMgr::GetRenameInfo(ConfigKeyVal *ikey, vnode->valid[UPLL_CTRLR_VNODE_NAME_VALID] = UNC_VF_VALID; uuu::upll_strncpy(vnode->ctrlr_vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(ikey->get_key())-> + vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vnode->ctrlr_vnode_name, - reinterpret_cast(ikey->get_key())->vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(ikey->get_key())-> + vrouter_name, + (kMaxLenVnodeName+1)); ConfigVal *rename_val_ = new ConfigVal(IpctSt::kIpcInvalidStNum, vnode); okey->SetCfgVal(rename_val_); dbop.readop = kOpNotRead; @@ -1038,15 +1058,17 @@ bool VrtMoMgr::FilterAttributes(void *&val1, void *val2, bool copy_to_running, return false; } -bool VrtMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running) { +bool VrtMoMgr::CompareValidValue(void *&val1, + void *val2, + bool copy_to_running) { UPLL_FUNC_TRACE; bool invalid_attr = true; val_vrt_t *val_vrt1 = reinterpret_cast(val1); val_vrt_t *val_vrt2 = reinterpret_cast(val2); for (unsigned int loop = 0; - loop < sizeof(val_vrt1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vrt1->valid) / sizeof(uint8_t); ++loop) { if (UNC_VF_INVALID == val_vrt1->valid[loop] - && UNC_VF_VALID == val_vrt2->valid[loop]) + && UNC_VF_VALID == val_vrt2->valid[loop]) val_vrt1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_INVALID != val_vrt1->valid[UPLL_IDX_DESC_VRT]) { @@ -1054,7 +1076,7 @@ bool VrtMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running) ((UNC_VF_VALID == val_vrt1->valid[UPLL_IDX_DESC_VRT]) && !strcmp(reinterpret_cast(val_vrt1->vrt_description), reinterpret_cast(val_vrt2->vrt_description)))) - val_vrt1->valid[UPLL_IDX_DESC_VRT] = UNC_VF_INVALID; + val_vrt1->valid[UPLL_IDX_DESC_VRT] = UNC_VF_INVALID; } if (UNC_VF_VALID == val_vrt1->valid[UPLL_IDX_CONTROLLER_ID_VRT] && UNC_VF_VALID == val_vrt2->valid[UPLL_IDX_CONTROLLER_ID_VRT]) { @@ -1070,12 +1092,12 @@ bool VrtMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running) } if (UNC_VF_VALID == val_vrt1->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] && UNC_VF_VALID - == val_vrt2->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT]) { + == val_vrt2->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT]) { if (val_vrt1->dhcp_relay_admin_status == val_vrt2->dhcp_relay_admin_status) val_vrt1->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] = UNC_VF_INVALID; } if (!copy_to_running) - val_vrt1->valid[UPLL_IDX_DESC_VRT] = UNC_VF_INVALID; + val_vrt1->valid[UPLL_IDX_DESC_VRT] = UNC_VF_INVALID; for (unsigned int loop = 0; loop < sizeof(val_vrt1->valid) / sizeof(val_vrt1->valid[0]); ++loop) { @@ -1089,7 +1111,7 @@ bool VrtMoMgr::CompareValidValue(void *&val1, void *val2, bool copy_to_running) } upll_rc_t VrtMoMgr::ValidateVrtKey(key_vrt *vrt_key, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; @@ -1105,12 +1127,12 @@ upll_rc_t VrtMoMgr::ValidateVrtKey(key_vrt *vrt_key, if ((operation != UNC_OP_READ_SIBLING_COUNT) && (operation != UNC_OP_READ_SIBLING_BEGIN)) { ret_val = ValidateKey(reinterpret_cast(vrt_key->vrouter_name), - kMinLenVnodeName, - kMaxLenVnodeName); + kMinLenVnodeName, + kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("vrouter name syntax check failed." - "Received vrouter name - %s", - vrt_key->vrouter_name); + "Received vrouter name - %s", + vrt_key->vrouter_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -1121,7 +1143,7 @@ upll_rc_t VrtMoMgr::ValidateVrtKey(key_vrt *vrt_key, } upll_rc_t VrtMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) { + ConfigKeyVal *okey) { UPLL_FUNC_TRACE; val_vrt *vrt_val = reinterpret_cast(GetVal(ikey)); val_vrt *vrt_val1 = reinterpret_cast(GetVal(okey)); @@ -1131,8 +1153,8 @@ upll_rc_t VrtMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, kMaxLenCtrlrId+1)) { UPLL_LOG_DEBUG("controller id comparision failed"); return UPLL_RC_ERR_CFG_SYNTAX; - } - } + } + } if (vrt_val->valid[UPLL_IDX_DOMAIN_ID_VRT] == UNC_VF_VALID) { if (strncmp(reinterpret_cast(vrt_val->domain_id), reinterpret_cast(vrt_val1->domain_id), @@ -1153,12 +1175,12 @@ upll_rc_t VrtMoMgr::ValidateVrtValue(val_vrt *vrt_val, // Attribute syntax validation for (unsigned int valid_index = 0; valid_index < sizeof(vrt_val->valid) / sizeof(vrt_val->valid[0]); - valid_index++) { + valid_index++) { if (vrt_val->valid[valid_index] == UNC_VF_VALID) { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VRT: ret_val = ValidateString(vrt_val->controller_id, - kMinLenCtrlrId, kMaxLenCtrlrId); + kMinLenCtrlrId, kMaxLenCtrlrId); break; case UPLL_IDX_DOMAIN_ID_VRT: ret_val = ValidateDefaultStr(vrt_val->domain_id, @@ -1167,16 +1189,16 @@ upll_rc_t VrtMoMgr::ValidateVrtValue(val_vrt *vrt_val, case UPLL_IDX_DESC_VRT: ret_val = ValidateDesc(vrt_val->vrt_description, kMinLenDescription, kMaxLenDescription); - break; + break; case UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT: ret_val = ValidateNumericRange( - (uint8_t) vrt_val->dhcp_relay_admin_status, - (uint8_t) UPLL_ADMIN_ENABLE, - (uint8_t) UPLL_ADMIN_DISABLE, true, true); + (uint8_t) vrt_val->dhcp_relay_admin_status, + (uint8_t) UPLL_ADMIN_ENABLE, + (uint8_t) UPLL_ADMIN_DISABLE, true, true); break; } if (!ret_val) { - return UPLL_RC_ERR_CFG_SYNTAX; + return UPLL_RC_ERR_CFG_SYNTAX; } } } @@ -1189,43 +1211,51 @@ upll_rc_t VrtMoMgr::ValidateVrtValue(val_vrt *vrt_val, switch (operation) { case UNC_OP_CREATE: { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VRT: case UPLL_IDX_DOMAIN_ID_VRT: if ((flag == UNC_VF_INVALID || flag == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_INFO("controller_id or domain_id flag is invalid" - " or valid_no_value"); - return UPLL_RC_ERR_CFG_SYNTAX; + " or valid_no_value"); + return UPLL_RC_ERR_CFG_SYNTAX; } break; case UPLL_IDX_DESC_VRT: break; case UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT: - if ((flag == UNC_VF_INVALID) || (flag == UNC_VF_VALID_NO_VALUE)) { - vrt_val->dhcp_relay_admin_status = UPLL_ADMIN_ENABLE; // TODO: Admin status reset value +#if 0 // no default value for dhcp_relay_admin status + if ((flag == UNC_VF_INVALID) || (flag == + UNC_VF_VALID_NO_VALUE)) { + vrt_val->dhcp_relay_admin_status = UPLL_ADMIN_ENABLE; + } +#else + if (flag == UNC_VF_VALID_NO_VALUE) { + vrt_val->valid[valid_index] = UNC_VF_INVALID; } +#endif break; default: break; } - } + } break; case UNC_OP_UPDATE: { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VRT: case UPLL_IDX_DOMAIN_ID_VRT: if (flag == UNC_VF_VALID_NO_VALUE) { - UPLL_LOG_INFO("controller_id or domain_id flag is valid_no_value"); + UPLL_LOG_INFO("controller_id or domain_id" + "flag is valid_no_value"); return UPLL_RC_ERR_CFG_SYNTAX; } - break; + break; case UPLL_IDX_DESC_VRT: case UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT: default: break; } - } + } break; } } @@ -1235,10 +1265,10 @@ upll_rc_t VrtMoMgr::ValidateVrtValue(val_vrt *vrt_val, valid_index < sizeof(vrt_val->valid) / sizeof(vrt_val->valid[0]); valid_index++) { uint8_t flag = vrt_val->valid[valid_index]; - if (flag != UNC_VF_INVALID && flag != UNC_VF_VALID_NO_VALUE) + if (flag != UNC_VF_INVALID && flag != UNC_VF_VALID_NO_VALUE) continue; - - switch(valid_index) { + + switch (valid_index) { case UPLL_IDX_CONTROLLER_ID_VRT: StringReset(vrt_val->controller_id); break; @@ -1248,15 +1278,16 @@ upll_rc_t VrtMoMgr::ValidateVrtValue(val_vrt *vrt_val, case UPLL_IDX_DESC_VRT: StringReset(vrt_val->vrt_description); break; - case UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT: // TODO: check admin_status is enable or disable when reset - vrt_val->dhcp_relay_admin_status = UPLL_ADMIN_ENABLE; + case UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT: // TODO(upll): + // check admin_status is enable or disable when reset + vrt_val->dhcp_relay_admin_status = UPLL_ADMIN_ENABLE; break; default: UPLL_LOG_TRACE("Never here"); break; } } - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; } upll_rc_t VrtMoMgr::ValidateVrtPingValue(val_ping *ping_val) { @@ -1300,7 +1331,8 @@ upll_rc_t VrtMoMgr::ValidateVrtPingValue(val_ping *ping_val) { ping_val->packet_size); return UPLL_RC_ERR_CFG_SYNTAX; } - } else if (ping_val->valid[UPLL_IDX_PACKET_SIZE_PING] == UNC_VF_VALID_NO_VALUE) { + } else if (ping_val->valid[UPLL_IDX_PACKET_SIZE_PING] == + UNC_VF_VALID_NO_VALUE) { ping_val->packet_size = 0; } @@ -1324,7 +1356,8 @@ upll_rc_t VrtMoMgr::ValidateVrtPingValue(val_ping *ping_val) { ping_val->interval); return UPLL_RC_ERR_CFG_SYNTAX; } - } else if (ping_val->valid[UPLL_IDX_INTERVAL_PING] == UNC_VF_VALID_NO_VALUE) { + } else if (ping_val->valid[UPLL_IDX_INTERVAL_PING] == + UNC_VF_VALID_NO_VALUE) { ping_val->interval = 0; } @@ -1359,7 +1392,8 @@ upll_rc_t VrtMoMgr::ValidateVrtRenameValue(val_rename_vrt *vrt_rename_val) { return UPLL_RC_SUCCESS; } -upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { +upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; @@ -1385,7 +1419,7 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { return UPLL_RC_ERR_BAD_REQUEST; } key_vrt *vrt_key = reinterpret_cast(ikey->get_key()); - + ret_val = ValidateVrtKey(vrt_key, operation); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("syntax check failure for key_vrt struct"); @@ -1398,12 +1432,14 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVrt)) { vrt_val = reinterpret_cast(ikey->get_cfg_val()->get_val()); } else if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValRenameVrt)) { - vrt_rename = reinterpret_cast(ikey->get_cfg_val()->get_val()); - } + ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStValRenameVrt)) { + vrt_rename = reinterpret_cast( + ikey->get_cfg_val()->get_val()); + } if (((operation == UNC_OP_CREATE) || (operation == UNC_OP_UPDATE)) && - ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_IMPORT))) { + ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_IMPORT))) { if (vrt_val == NULL) { UPLL_LOG_INFO("Val struct is mandatory for create and update op"); return UPLL_RC_ERR_BAD_REQUEST; @@ -1425,7 +1461,7 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { } if (vrt_rename == NULL) { UPLL_LOG_INFO( - "val_rename_vrt struct is Mandatory for Rename op"); + "val_rename_vrt struct is Mandatory for Rename op"); return UPLL_RC_ERR_BAD_REQUEST; } ret_val = ValidateVrtRenameValue(vrt_rename); @@ -1435,8 +1471,8 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { } return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING || - operation == UNC_OP_READ_SIBLING_BEGIN) && - (dt_type == UPLL_DT_IMPORT)) { + operation == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_IMPORT)) { if (option1 != UNC_OPT1_NORMAL) { UPLL_LOG_INFO("Error option1 is not NORMAL"); return UPLL_RC_ERR_INVALID_OPTION1; @@ -1457,7 +1493,7 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING || operation == UNC_OP_READ_SIBLING_BEGIN || - operation == UNC_OP_READ_SIBLING_COUNT) && + operation == UNC_OP_READ_SIBLING_COUNT) && (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP)) { if (option1 != UNC_OPT1_NORMAL) { @@ -1479,10 +1515,9 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { } return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING || - operation == UNC_OP_READ_SIBLING_BEGIN || - operation == UNC_OP_READ_SIBLING_COUNT) - && (dt_type == UPLL_DT_STATE)) { - + operation == UNC_OP_READ_SIBLING_BEGIN || + operation == UNC_OP_READ_SIBLING_COUNT) + && (dt_type == UPLL_DT_STATE)) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { if (vrt_val == NULL) { @@ -1495,7 +1530,7 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { return UPLL_RC_ERR_CFG_SYNTAX; } return UPLL_RC_SUCCESS; - } else if (option2 == UNC_OPT2_DHCP_RELAY || + } else if (option2 == UNC_OPT2_DHCP_RELAY || option2 == UNC_OPT2_IP_ROUTE || option2 == UNC_OPT2_ARP_ENTRY || option2 == UNC_OPT2_ARP_ENTRY_STATIC || @@ -1505,8 +1540,8 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { } else { UPLL_LOG_INFO("Option2 is Invalid"); return UPLL_RC_ERR_INVALID_OPTION2; - } - } else if (option1 == UNC_OPT1_DETAIL) { + } + } else if (option1 == UNC_OPT1_DETAIL) { if (option2 == UNC_OPT2_IP_ROUTE || option2 == UNC_OPT2_DHCP_RELAY) { UPLL_LOG_INFO("val struct is optional for this option"); @@ -1529,7 +1564,8 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { UPLL_LOG_INFO("Error option1 is Invalid"); return UPLL_RC_ERR_INVALID_OPTION1; } - } else if ((operation == UNC_OP_READ_NEXT || operation == UNC_OP_READ_BULK) && + } else if ((operation == UNC_OP_READ_NEXT || + operation == UNC_OP_READ_BULK) && (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_IMPORT)) { UPLL_LOG_INFO("Value structure is none for operation type:%d", operation); @@ -1539,39 +1575,39 @@ upll_rc_t VrtMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey) { return UPLL_RC_SUCCESS; } else if ((operation == UNC_OP_CONTROL) && (dt_type == UPLL_DT_RUNNING || dt_type == UPLL_DT_STATE)) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_INFO("Error option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_PING) { - UPLL_LOG_INFO("Error option2 is not PING"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - if (NULL == ikey->get_cfg_val()) { - UPLL_LOG_TRACE("ConfigVal struct is null"); - return UPLL_RC_ERR_BAD_REQUEST; - } - if (ikey->get_cfg_val()->get_st_num() != IpctSt::kIpcStValPing) { - UPLL_LOG_INFO( - "Expecting val_ping structure. received struct - %d", - ikey->get_cfg_val()->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_ping *ping_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); - if (ping_val == NULL) { - UPLL_LOG_TRACE("val_ping struct is missing"); - return UPLL_RC_ERR_GENERIC; - } - ret_val = ValidateVrtPingValue(ping_val); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("syntax check failure for val_ping value structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_INFO("Error option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_PING) { + UPLL_LOG_INFO("Error option2 is not PING"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (NULL == ikey->get_cfg_val()) { + UPLL_LOG_TRACE("ConfigVal struct is null"); + return UPLL_RC_ERR_BAD_REQUEST; + } + if (ikey->get_cfg_val()->get_st_num() != IpctSt::kIpcStValPing) { + UPLL_LOG_INFO( + "Expecting val_ping structure. received struct - %d", + ikey->get_cfg_val()->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_ping *ping_val = + reinterpret_cast(ikey->get_cfg_val()->get_val()); + if (ping_val == NULL) { + UPLL_LOG_TRACE("val_ping struct is missing"); + return UPLL_RC_ERR_GENERIC; + } + ret_val = ValidateVrtPingValue(ping_val); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("syntax check failure for val_ping value structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; } UPLL_LOG_INFO("Unsupported datatype-(%d) or operation-(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NO_SUCH_INSTANCE; } @@ -1580,15 +1616,15 @@ upll_rc_t VrtMoMgr::ValidateCapability(IpcReqRespHeader *req, const char *ctrlr_name) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; - - if (!ikey || !req ) { + + if (!ikey || !req) { UPLL_LOG_INFO(" ConfigKeyVal / IpcReqRespHeader is NULL"); return UPLL_RC_ERR_GENERIC; } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -1605,13 +1641,6 @@ upll_rc_t VrtMoMgr::ValidateCapability(IpcReqRespHeader *req, result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_INFO("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; case UNC_OP_UPDATE: @@ -1623,7 +1652,7 @@ upll_rc_t VrtMoMgr::ValidateCapability(IpcReqRespHeader *req, case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; default: UPLL_LOG_INFO("Invalid operation code"); @@ -1631,7 +1660,7 @@ upll_rc_t VrtMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("key_type - %d is not supported by controller - %s", - ikey->get_key_type(), ctrlr_name); + ikey->get_key_type(), ctrlr_name); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } @@ -1643,19 +1672,22 @@ upll_rc_t VrtMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (vrt_val) { if (max_attrs > 0) { - ret_val = ValidateVrtAttributeSupportCheck(vrt_val, attrs, req->operation); + ret_val = ValidateVrtAttributeSupportCheck(vrt_val, attrs, + req->operation); return ret_val; } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); return UPLL_RC_ERR_GENERIC; } } return UPLL_RC_SUCCESS; } -upll_rc_t VrtMoMgr::ValidateVrtAttributeSupportCheck(val_vrt_t *vrt_val, - const uint8_t *attrs, - unc_keytype_operation_t operation) { +upll_rc_t VrtMoMgr::ValidateVrtAttributeSupportCheck( + val_vrt_t *vrt_val, + const uint8_t *attrs, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if (vrt_val != NULL) { if ((vrt_val->valid[UPLL_IDX_DOMAIN_ID_VRT] == UNC_VF_VALID) || @@ -1675,7 +1707,7 @@ upll_rc_t VrtMoMgr::ValidateVrtAttributeSupportCheck(val_vrt_t *vrt_val, if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_INFO("Description attr is not supported by pfc ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + } } } if ((vrt_val->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] == UNC_VF_VALID) @@ -1684,7 +1716,7 @@ upll_rc_t VrtMoMgr::ValidateVrtAttributeSupportCheck(val_vrt_t *vrt_val, if (attrs[unc::capa::vrt::kCapDhcpRelayAdminStatus] == 0) { vrt_val->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] = UNC_VF_INVALID; - if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { + if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_INFO("Admin status attr is not supported by pfc ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } @@ -1704,26 +1736,31 @@ upll_rc_t VrtMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, key_vrt * temp_key_vrt = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vrt))); if (!strlen(reinterpret_cast(reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name))) { + (ikey->get_key())-> + vtn_key.vtn_name))) { /* Addressed RESOURCE_LEAK */ FREE_IF_NOT_NULL(temp_key_vrt); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(temp_key_vrt->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(ikey->get_key())-> + vtn_key.vtn_name, + (kMaxLenVtnName+1)); if (!strlen(reinterpret_cast( reinterpret_cast - (ikey->get_key())->vrouter_name))) { + (ikey-> + get_key())->vrouter_name))) { // RESOURCE_LEAK FREE_IF_NOT_NULL(temp_key_vrt); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(temp_key_vrt->vrouter_name, - reinterpret_cast(ikey->get_key())->vrouter_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(ikey->get_key())->vrouter_name, + (kMaxLenVnodeName+1)); ConfigKeyVal *ck_vrt = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, - reinterpret_cast(temp_key_vrt), NULL); + reinterpret_cast + (temp_key_vrt), + NULL); if (ck_vrt == NULL) return UPLL_RC_ERR_GENERIC; okey = ck_vrt; return UPLL_RC_SUCCESS; @@ -1734,12 +1771,13 @@ upll_rc_t VrtMoMgr::IsReferenced(ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VRT_IF))); + MoMgrImpl *mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VRT_IF))); result_code = mgr->IsReferenced(ikey, dt_type, dmi); - if (UPLL_RC_SUCCESS != result_code) { + if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code (%d)", - result_code); + result_code); return result_code; } UPLL_LOG_DEBUG("IsReferenced result code (%d)", result_code); @@ -1758,12 +1796,12 @@ upll_rc_t VrtMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { UPLL_LOG_DEBUG("Config Val is Null"); return UPLL_RC_ERR_GENERIC; } - while (cval ) { + while (cval) { if (IpctSt::kIpcStValVrtSt == cval->get_st_num()) { val_vrt_st *vrt_val_st = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vrt_st))); + (ConfigKeyVal::Malloc(sizeof(val_vrt_st))); val_db_vrt_st *db_vrt_val_st = reinterpret_cast - (cval->get_val()); + (cval->get_val()); memcpy(vrt_val_st, &(db_vrt_val_st->vrt_val_st), sizeof(val_vrt_st)); cval->SetVal(IpctSt::kIpcStValVrtSt, vrt_val_st); @@ -1776,8 +1814,8 @@ upll_rc_t VrtMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { } upll_rc_t VrtMoMgr::EnableAdminStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; if (ikey->get_key_type() != UNC_KT_VROUTER) return UPLL_RC_ERR_CFG_SYNTAX; @@ -1787,28 +1825,34 @@ upll_rc_t VrtMoMgr::EnableAdminStatus(ConfigKeyVal *ikey, string dhcpif_name = ""; val_vrt_t *vrt_val = reinterpret_cast(GetVal(ikey)); - if ((vrt_val->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] != UNC_VF_VALID) && - (vrt_val->dhcp_relay_admin_status != UPLL_ADMIN_ENABLE)) { + if ((vrt_val->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] != UNC_VF_VALID) && + (vrt_val->dhcp_relay_admin_status != UPLL_ADMIN_ENABLE)) { UPLL_LOG_DEBUG("Semantic check not required!"); return UPLL_RC_SUCCESS; - } - + } + UPLL_LOG_DEBUG("Check for dhcp-relay server"); key_dhcp_relay_server *dhcp_server_key = (key_dhcp_relay_server *) - ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_server)); - + ConfigKeyVal::Malloc(sizeof(key_dhcp_relay_server)); + memcpy(dhcp_server_key, ikey->get_key(), sizeof(key_vrt_t)); - ConfigKeyVal *ckv_dhcpserver = new ConfigKeyVal(UNC_KT_DHCPRELAY_SERVER, - IpctSt::kIpcStKeyDhcpRelayServer, - dhcp_server_key); - - MoMgrImpl *dhcpserver_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_DHCPRELAY_SERVER))); - upll_rc_t result_code = dhcpserver_mgr->ReadConfigDB(ckv_dhcpserver, - UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, sibling_count, dmi, MAINTBL); + ConfigKeyVal *ckv_dhcpserver = new ConfigKeyVal( + UNC_KT_DHCPRELAY_SERVER, + IpctSt::kIpcStKeyDhcpRelayServer, + dhcp_server_key); + + MoMgrImpl *dhcpserver_mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_DHCPRELAY_SERVER))); + upll_rc_t result_code = dhcpserver_mgr->ReadConfigDB(ckv_dhcpserver, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + sibling_count, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("dhcp-relay server is not configured!"); + UPLL_LOG_DEBUG("dhcp-relay server is not configured!"); delete ckv_dhcpserver; return UPLL_RC_ERR_CFG_SEMANTIC; } @@ -1816,16 +1860,19 @@ upll_rc_t VrtMoMgr::EnableAdminStatus(ConfigKeyVal *ikey, delete ckv_dhcpserver; UPLL_LOG_DEBUG("Check for dhcp-relay interface"); key_dhcp_relay_if *dhcp_if_key = (key_dhcp_relay_if *) - malloc(sizeof(key_dhcp_relay_if)); + malloc(sizeof(key_dhcp_relay_if)); memset(dhcp_if_key, 0, sizeof(key_dhcp_relay_if)); memcpy(dhcp_if_key, ikey->get_key(), sizeof(key_vrt_t)); ConfigKeyVal *ckv_dhcpif = new ConfigKeyVal(UNC_KT_DHCPRELAY_IF, - IpctSt::kIpcStKeyDhcpRelayIf, - dhcp_if_key); - MoMgrImpl *dhcpif_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_DHCPRELAY_IF))); - result_code = dhcpif_mgr->ReadConfigDB(ckv_dhcpif, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, sibling_count, dmi, MAINTBL); + IpctSt::kIpcStKeyDhcpRelayIf, + dhcp_if_key); + MoMgrImpl *dhcpif_mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_DHCPRELAY_IF))); + result_code = dhcpif_mgr->ReadConfigDB(ckv_dhcpif, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, sibling_count, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS || sibling_count == 0) { UPLL_LOG_DEBUG("dhcp-relay interface is not configured!"); delete ckv_dhcpif; @@ -1834,7 +1881,7 @@ upll_rc_t VrtMoMgr::EnableAdminStatus(ConfigKeyVal *ikey, if (sibling_count > 0) { key_dhcp_relay_if *dhcp_if_key= (key_dhcp_relay_if *)ckv_dhcpif->get_key(); dhcpif_name = (const char *)dhcp_if_key->if_name; - } + } UPLL_LOG_DEBUG("Check for vrouter interface"); key_vrt_if *vrtifkey = (key_vrt_if *)malloc(sizeof(key_vrt_if)); @@ -1842,17 +1889,22 @@ upll_rc_t VrtMoMgr::EnableAdminStatus(ConfigKeyVal *ikey, memcpy(&vrtifkey->vrt_key, ikey->get_key(), sizeof(key_vrt_t)); memcpy(vrtifkey->if_name, dhcpif_name.c_str(), dhcpif_name.length()+1); ConfigKeyVal *ckv_vrtif = new ConfigKeyVal(UNC_KT_VRT_IF, - IpctSt::kIpcStKeyVrtIf, - vrtifkey); + IpctSt::kIpcStKeyVrtIf, + vrtifkey); DbSubOp dbop2 = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; - MoMgrImpl *vrtif_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VRT_IF))); - result_code = vrtif_mgr->ReadConfigDB(ckv_vrtif, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop2, dmi, MAINTBL); + MoMgrImpl *vrtif_mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VRT_IF))); + result_code = vrtif_mgr->ReadConfigDB(ckv_vrtif, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop2, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("vrouter interface is not configured!"); return UPLL_RC_ERR_CFG_SEMANTIC; - } + } DELETE_IF_NOT_NULL(ckv_vrtif); UPLL_LOG_DEBUG("Check for vrouter interface on a vlink"); @@ -1863,23 +1915,34 @@ upll_rc_t VrtMoMgr::EnableAdminStatus(ConfigKeyVal *ikey, val_vlink *vlink_val = (val_vlink *)malloc(sizeof(val_vlink)); memset(vlink_val, 0, sizeof(val_vlink)); - memcpy(vlink_val->vnode1_name, vrt_key->vrouter_name, sizeof(vrt_key->vrouter_name)); - memcpy(vlink_val->vnode1_ifname, dhcpif_name.c_str(), dhcpif_name.length()+1); - memcpy(vlink_val->vnode2_name, vrt_key->vrouter_name, sizeof(vrt_key->vrouter_name)); - memcpy(vlink_val->vnode2_ifname, dhcpif_name.c_str(), dhcpif_name.length()+1); + memcpy(vlink_val->vnode1_name, vrt_key->vrouter_name, + sizeof(vrt_key->vrouter_name)); + memcpy(vlink_val->vnode1_ifname, dhcpif_name.c_str(), + dhcpif_name.length()+1); + memcpy(vlink_val->vnode2_name, vrt_key->vrouter_name, + sizeof(vrt_key->vrouter_name)); + memcpy(vlink_val->vnode2_ifname, dhcpif_name.c_str(), + dhcpif_name.length()+1); vlink_val->valid[UPLL_IDX_VNODE1_NAME_VLNK] = UNC_VF_VALID; vlink_val->valid[UPLL_IDX_VNODE1_IF_NAME_VLNK] = UNC_VF_VALID; vlink_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_INVALID; vlink_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_INVALID; ConfigKeyVal *ckv_vlink = new ConfigKeyVal(UNC_KT_VLINK, - IpctSt::kIpcStKeyVlink, - vlink_key, - new ConfigVal(IpctSt::kIpcStValVlink, vlink_val)); - MoMgrImpl *vlink_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VLINK))); - result_code = vlink_mgr->ReadConfigDB(ckv_vlink, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, dmi, MAINTBL); + IpctSt::kIpcStKeyVlink, + vlink_key, + new ConfigVal( + IpctSt::kIpcStValVlink, + vlink_val)); + MoMgrImpl *vlink_mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VLINK))); + result_code = vlink_mgr->ReadConfigDB(ckv_vlink, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (result_code == UPLL_RC_SUCCESS) { delete ckv_vlink; UPLL_LOG_DEBUG("vrouter interface is configured on a vlink!"); @@ -1891,8 +1954,8 @@ upll_rc_t VrtMoMgr::EnableAdminStatus(ConfigKeyVal *ikey, vlink_val->valid[UPLL_IDX_VNODE2_NAME_VLNK] = UNC_VF_VALID; vlink_val->valid[UPLL_IDX_VNODE2_IF_NAME_VLNK] = UNC_VF_VALID; - result_code = vlink_mgr->ReadConfigDB(ckv_vlink, UPLL_DT_CANDIDATE, - UNC_OP_READ, dbop, dmi, MAINTBL); + result_code = vlink_mgr->ReadConfigDB(ckv_vlink, UPLL_DT_CANDIDATE, + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("vrouter interface is not configured on a vlink!"); result_code = UPLL_RC_ERR_CFG_SEMANTIC; diff --git a/coordinator/modules/upll/vrt_momgr.hh b/coordinator/modules/upll/vrt_momgr.hh index c16acfce..a68358b3 100644 --- a/coordinator/modules/upll/vrt_momgr.hh +++ b/coordinator/modules/upll/vrt_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -28,15 +28,15 @@ class VrtMoMgr : public VnodeMoMgr { static BindInfo key_vrt_maintbl_update_bind_info[]; static BindInfo key_vrt_renametbl_update_bind_info[]; /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration * - * @param[in] val pointer to the value structure + * @param[in] val pointer to the value structure * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - + * @param[out] valid position of the variable in the valid array - * NULL if valid does not exist. * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value + * @param[in] tbl specifies the table containing the given value * **/ upll_rc_t GetValid(void *val, @@ -48,13 +48,13 @@ class VrtMoMgr : public VnodeMoMgr { return UPLL_RC_ERR_GENERIC; if (tbl == MAINTBL) { switch (indx) { - case uudst::vrouter::kDbiOperStatus: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_OPER_STATUS_VRTS]; - break; - case uudst::vrouter::kDbiDownCount: - valid = NULL; - break; + case uudst::vrouter::kDbiOperStatus: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_OPER_STATUS_VRTS]; + break; + case uudst::vrouter::kDbiDownCount: + valid = NULL; + break; case uudst::vrouter::kDbiCtrlrName: valid = &(reinterpret_cast(val))-> valid[UPLL_IDX_CONTROLLER_ID_VRT]; @@ -75,19 +75,18 @@ class VrtMoMgr : public VnodeMoMgr { return UPLL_RC_ERR_GENERIC; } } else if (tbl == RENAMETBL) { - - switch(indx) { - case uudst::vnode_rename::kDbiCtrlrVtnName: - valid = &(reinterpret_cast + switch (indx) { + case uudst::vnode_rename::kDbiCtrlrVtnName: + valid = &(reinterpret_cast (val))->valid[UPLL_CTRLR_VTN_NAME_VALID]; - break; - case uudst::vnode_rename::kDbiCtrlrVnodeName: - valid = &(reinterpret_cast + break; + case uudst::vnode_rename::kDbiCtrlrVnodeName: + valid = &(reinterpret_cast (val))->valid[UPLL_CTRLR_VNODE_NAME_VALID]; - break; - default: - break; - } + break; + default: + break; + } } return UPLL_RC_SUCCESS; } @@ -108,7 +107,7 @@ class VrtMoMgr : public VnodeMoMgr { /** * @brief Compares the valid value between two database records. * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. + * attribute as invalid in the first record. * * @param[in/out] val1 first record value instance. * @param[in] val2 second record value instance. @@ -136,11 +135,13 @@ class VrtMoMgr : public VnodeMoMgr { * @param[in/out] ckv_running ConfigKeyVal instance. * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * **/ upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** * @Brief Validates the syntax of the specified key and value structure * for KT_VRT keytype @@ -188,7 +189,7 @@ class VrtMoMgr : public VnodeMoMgr { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVrtKey(key_vrt *vrt_key, - unc_keytype_operation_t operation = UNC_OP_INVALID); + unc_keytype_operation_t operation = UNC_OP_INVALID); /** * @Brief Validates the syntax for KT_VRT keytype value structure. @@ -233,7 +234,7 @@ class VrtMoMgr : public VnodeMoMgr { * @param[in] operation Operation name. * * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_EXCEEDS_RESOURSE_LIMIT Instance count limit is exceeds. + * @retval UPLL_RC_ERR_EXCEEDS_RESOURSE_LIMIT Instance count limit is exceeds. * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. * @retval UPLL_RC_ERR_GENERIC Generic failure. */ @@ -242,7 +243,7 @@ class VrtMoMgr : public VnodeMoMgr { unc_keytype_operation_t operation); /** - * @brief Duplicates the input configkeyval including the key and val. + * @brief Duplicates the input configkeyval including the key and val. * based on the tbl specified. * * @param[in] okey Output Configkeyval - allocated within the function @@ -256,13 +257,13 @@ class VrtMoMgr : public VnodeMoMgr { ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); /** - * @brief Allocates for the specified val in the given configuration in the * specified table. + * @brief Allocates for the specified val in the given configuration in the * specified table. * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the + * state + * @param[in] tbl specifies if the corresponding table is the * main table / controller table or rename table. * * @retval UPLL_RC_SUCCESS Successfull completion. @@ -274,7 +275,7 @@ class VrtMoMgr : public VnodeMoMgr { /** * @brief Method to get a configkeyval of a specified keytype from an input configkeyval * - * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in/out] okey pointer to output ConfigKeyVal * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. * * @retval UPLL_RC_SUCCESS Successfull completion. @@ -283,10 +284,10 @@ class VrtMoMgr : public VnodeMoMgr { upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); /** - * @brief Method to get a configkeyval of the parent keytype + * @brief Method to get a configkeyval of the parent keytype * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from * which the parent configkey val is obtained. * * @retval UPLL_RC_SUCCESS Successfull completion. @@ -315,10 +316,10 @@ class VrtMoMgr : public VnodeMoMgr { upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - /* @brief To convert the value structure read from DB to + /* @brief To convert the value structure read from DB to * VTNService during READ operations - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * * @retval UPLL_RC_SUCCESS Completed successfully. * @retval UPLL_RC_ERR_GENERIC Generic failure. * @@ -363,7 +364,7 @@ class VrtMoMgr : public VnodeMoMgr { upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); /** - * @Brief compares controller id and domain id before + * @Brief compares controller id and domain id before * updating the value to DB. * * @param[in] ikey ikey contains key and value structure. @@ -374,7 +375,7 @@ class VrtMoMgr : public VnodeMoMgr { */ upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey); + ConfigKeyVal *okey); /** * @brief create entry in Vnode Rename Table, * with the renamed VTN details fetched from VTN rename Table diff --git a/coordinator/modules/upll/vtep_grp_momgr.cc b/coordinator/modules/upll/vtep_grp_momgr.cc index b3904d66..8d591acc 100644 --- a/coordinator/modules/upll/vtep_grp_momgr.cc +++ b/coordinator/modules/upll/vtep_grp_momgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -17,34 +17,34 @@ namespace unc { namespace upll { namespace kt_momgr { - BindInfo VtepGrpMoMgr::vtep_grp_bind_info[] = { - { uudst::vtep_group::kDbiVtnName, CFG_KEY, - offsetof(key_vtep_grp, vtn_key.vtn_name), uud::kDalChar, - kMaxLenVtnName+1 }, - { uudst::vtep_group::kDbiVtepgrpName, CFG_KEY, - offsetof(key_vtep_grp, vtepgrp_name), uud::kDalChar, - kMaxLenVnodeName+1 }, - { uudst::vtep_group::kDbiCtrlrName, CFG_VAL, - offsetof(val_vtep_grp, controller_id), uud::kDalChar, kMaxLenCtrlrId+1}, - { uudst::vtep_group::kDbiCtrlrName, CK_VAL, - offsetof(key_user_data_t, ctrlr_id), - uud::kDalChar, kMaxLenCtrlrId+1 }, - { uudst::vtep_group::kDbiDesc, CFG_VAL, offsetof(val_vtep_grp, description), - uud::kDalChar, kMaxLenDescription+1}, - { uudst::vtep_group::kDbiFlags, CK_VAL, offsetof(key_user_data_t, flags), - uud::kDalUint8, 1}, - { uudst::vtep_group::kDbiValidCtrlrName, CFG_META_VAL, - offsetof(val_vtep_grp, valid[0]), uud::kDalUint8, 1}, - { uudst::vtep_group::kDbiValidDesc, CFG_META_VAL, - offsetof(val_vtep_grp, valid[1]), uud::kDalUint8, 1}, - { uudst::vtep_group::kDbiCsRowstatus, CS_VAL, - offsetof(val_vtep_grp, cs_row_status), uud::kDalUint8, 1}, - { uudst::vtep_group::kDbiCsCtrlrName, CS_VAL, offsetof(val_vtep_grp, - cs_attr[0]), - uud::kDalUint8, 1}, - { uudst::vtep_group::kDbiCsDesc, CS_VAL, offsetof(val_vtep_grp, cs_attr[1]), - uud::kDalUint8, 1} - }; +BindInfo VtepGrpMoMgr::vtep_grp_bind_info[] = { + { uudst::vtep_group::kDbiVtnName, CFG_KEY, + offsetof(key_vtep_grp, vtn_key.vtn_name), uud::kDalChar, + kMaxLenVtnName+1 }, + { uudst::vtep_group::kDbiVtepgrpName, CFG_KEY, + offsetof(key_vtep_grp, vtepgrp_name), uud::kDalChar, + kMaxLenVnodeName+1 }, + { uudst::vtep_group::kDbiCtrlrName, CFG_VAL, + offsetof(val_vtep_grp, controller_id), uud::kDalChar, kMaxLenCtrlrId+1}, + { uudst::vtep_group::kDbiCtrlrName, CK_VAL, + offsetof(key_user_data_t, ctrlr_id), + uud::kDalChar, kMaxLenCtrlrId+1 }, + { uudst::vtep_group::kDbiDesc, CFG_VAL, offsetof(val_vtep_grp, description), + uud::kDalChar, kMaxLenDescription+1}, + { uudst::vtep_group::kDbiFlags, CK_VAL, offsetof(key_user_data_t, flags), + uud::kDalUint8, 1}, + { uudst::vtep_group::kDbiValidCtrlrName, CFG_META_VAL, + offsetof(val_vtep_grp, valid[0]), uud::kDalUint8, 1}, + { uudst::vtep_group::kDbiValidDesc, CFG_META_VAL, + offsetof(val_vtep_grp, valid[1]), uud::kDalUint8, 1}, + { uudst::vtep_group::kDbiCsRowstatus, CS_VAL, + offsetof(val_vtep_grp, cs_row_status), uud::kDalUint8, 1}, + { uudst::vtep_group::kDbiCsCtrlrName, CS_VAL, offsetof(val_vtep_grp, + cs_attr[0]), + uud::kDalUint8, 1}, + { uudst::vtep_group::kDbiCsDesc, CS_VAL, offsetof(val_vtep_grp, cs_attr[1]), + uud::kDalUint8, 1} +}; unc_key_type_t VtepGrpMoMgr::vtep_grp_child[] = { UNC_KT_VTEP_GRP_MEMBER @@ -53,9 +53,9 @@ unc_key_type_t VtepGrpMoMgr::vtep_grp_child[] = { VtepGrpMoMgr::VtepGrpMoMgr() { UPLL_FUNC_TRACE; Table *tbl = new Table(uudst::kDbiVtepGrpTbl, UNC_KT_VTEP_GRP, - vtep_grp_bind_info, - IpctSt::kIpcStKeyVtepGrp, IpctSt::kIpcStValVtepGrp, - uudst::vtep_group::kDbiVtepGrpNumCols+1); + vtep_grp_bind_info, + IpctSt::kIpcStKeyVtepGrp, IpctSt::kIpcStValVtepGrp, + uudst::vtep_group::kDbiVtepGrpNumCols+1); ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = tbl; @@ -115,11 +115,11 @@ bool VtepGrpMoMgr::IsValidKey(void *key, uint64_t index) { } upll_rc_t VtepGrpMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { + ConfigKeyVal *parent_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtep_grp *vtep_grp_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); + (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); if (vtep_grp_key == NULL) return UPLL_RC_ERR_GENERIC; void *pkey; if (parent_key == NULL) { @@ -150,38 +150,38 @@ upll_rc_t VtepGrpMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (parent_key->get_key_type()) { case UNC_KT_VTEP_GRP: uuu::upll_strncpy(vtep_grp_key->vtepgrp_name, - reinterpret_cast(pkey)->vtepgrp_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)->vtepgrp_name, + (kMaxLenVnodeName+1)); uuu::upll_strncpy(vtep_grp_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VTN: default: uuu::upll_strncpy(vtep_grp_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); } SET_USER_DATA(okey, parent_key); return result_code; } upll_rc_t VtepGrpMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey ) { + ConfigKeyVal *ikey ) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtep_grp *pkey = (ikey)? - static_cast(ikey->get_key()):NULL; + static_cast(ikey->get_key()):NULL; if (!pkey) return UPLL_RC_ERR_GENERIC; if (ikey->get_key_type() != UNC_KT_VTEP_GRP) return UPLL_RC_ERR_GENERIC; key_vtn *vtn_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn))); + (ConfigKeyVal::Malloc(sizeof(key_vtn))); if (!vtn_key) return UPLL_RC_ERR_GENERIC; uuu::upll_strncpy(vtn_key->vtn_name, - pkey->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + pkey->vtn_key.vtn_name, + (kMaxLenVtnName+1)); DELETE_IF_NOT_NULL(okey); okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); if (okey == NULL) { @@ -194,14 +194,15 @@ upll_rc_t VtepGrpMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, } upll_rc_t VtepGrpMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; switch (tbl) { case MAINTBL: val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtep_grp))); + (ConfigKeyVal::Malloc(sizeof(val_vtep_grp))); if (!val) return UPLL_RC_ERR_GENERIC; ck_val = new ConfigVal(IpctSt::kIpcStValVtepGrp, val); if (!ck_val) { @@ -223,7 +224,7 @@ upll_rc_t VtepGrpMoMgr::ValidateAttribute(ConfigKeyVal *ikey, ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; upll_rc_t result_code = GetControllerDomainId(ikey, UPLL_DT_CANDIDATE, - &ctrlr_dom, dmi); + &ctrlr_dom, dmi); if ((result_code != UPLL_RC_SUCCESS) || (ctrlr_dom.ctrlr == NULL)) { UPLL_LOG_INFO("GetControllerDomainId failed err_code %d", result_code); return UPLL_RC_ERR_GENERIC; @@ -232,7 +233,9 @@ upll_rc_t VtepGrpMoMgr::ValidateAttribute(ConfigKeyVal *ikey, unc_keytype_ctrtype_t ctrlrtype; uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); if (!ctrlr_mgr->GetCtrlrType( - reinterpret_cast(ctrlr_dom.ctrlr), req->datatype, &ctrlrtype)) { + reinterpret_cast(ctrlr_dom.ctrlr), + req->datatype, + &ctrlrtype)) { UPLL_LOG_DEBUG("Specified Controller Doesn't Exist"); return UPLL_RC_ERR_CFG_SEMANTIC; } @@ -240,9 +243,9 @@ upll_rc_t VtepGrpMoMgr::ValidateAttribute(ConfigKeyVal *ikey, } upll_rc_t VtepGrpMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -251,17 +254,17 @@ upll_rc_t VtepGrpMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } val_vtep_grp *temp_vtep_grp = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (temp_vtep_grp->valid[UPLL_IDX_CONTROLLER_ID_VTEPG] != UNC_VF_VALID) { temp_vtep_grp = NULL; result_code = GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_ERROR("GetChildConfigKey failed with result_code %d", - result_code); + result_code); return result_code; } DbSubOp dbop = {kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -294,7 +297,7 @@ upll_rc_t VtepGrpMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, } upll_rc_t VtepGrpMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { + ConfigKeyVal *&req, MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) return UPLL_RC_ERR_GENERIC; if (okey != NULL) return UPLL_RC_ERR_GENERIC; @@ -305,7 +308,7 @@ upll_rc_t VtepGrpMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tbl == MAINTBL) { val_vtep_grp *ival = reinterpret_cast(GetVal(req)); val_vtep_grp *vtepgrp_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtep_grp))); + (ConfigKeyVal::Malloc(sizeof(val_vtep_grp))); if (!vtepgrp_val) return UPLL_RC_ERR_GENERIC; memcpy(vtepgrp_val, ival, sizeof(val_vtep_grp)); tmp1 = new ConfigVal(IpctSt::kIpcStValVtepGrp, vtepgrp_val); @@ -318,14 +321,14 @@ upll_rc_t VtepGrpMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, void *tkey = (req != NULL)?(req)->get_key():NULL; key_vtep_grp *ikey = reinterpret_cast(tkey); key_vtep_grp *vtepgrp_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); + (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); if (!vtepgrp_key) { if (tmp1) delete tmp1; return UPLL_RC_ERR_GENERIC; } memcpy(vtepgrp_key, ikey, sizeof(key_vtep_grp)); okey = new ConfigKeyVal(UNC_KT_VTEP_GRP, IpctSt::kIpcStKeyVtepGrp, - vtepgrp_key, tmp1); + vtepgrp_key, tmp1); if (okey) { SET_USER_DATA(okey, req); } else { @@ -337,17 +340,17 @@ upll_rc_t VtepGrpMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } upll_rc_t VtepGrpMoMgr::UpdateConfigStatus(ConfigKeyVal *vtepgrp_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_vtep_grp_t *vtepgrp_val = reinterpret_cast - (GetVal(vtepgrp_key)); + (GetVal(vtepgrp_key)); unc_keytype_configstatus_t cs_status = - (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; val_vtep_grp_t *val_running = static_cast(GetVal(upd_key)); if (vtepgrp_val == NULL) return UPLL_RC_ERR_GENERIC; if (op == UNC_OP_CREATE) { @@ -361,8 +364,8 @@ upll_rc_t VtepGrpMoMgr::UpdateConfigStatus(ConfigKeyVal *vtepgrp_key, return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(vtepgrp_val->valid) / sizeof(vtepgrp_val->valid[0]); - ++loop) { + loop < sizeof(vtepgrp_val->valid) / sizeof(vtepgrp_val->valid[0]); + ++loop) { if ((UNC_VF_VALID == vtepgrp_val->valid[loop]) || (UNC_VF_VALID_NO_VALUE == vtepgrp_val->valid[loop])) { // Description is set to APPLIED @@ -372,10 +375,10 @@ upll_rc_t VtepGrpMoMgr::UpdateConfigStatus(ConfigKeyVal *vtepgrp_key, vtepgrp_val->cs_attr[loop] = cs_status; } else if ((vtepgrp_val->valid[loop] == UNC_VF_INVALID) && (UNC_OP_CREATE == op)) { - vtepgrp_val->cs_attr[loop] = UNC_CS_APPLIED; + vtepgrp_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((vtepgrp_val->valid[loop] == UNC_VF_INVALID) && (UNC_OP_UPDATE == op)) { - vtepgrp_val->cs_attr[loop] = val_running->cs_attr[loop]; + vtepgrp_val->cs_attr[loop] = val_running->cs_attr[loop]; } } return UPLL_RC_SUCCESS; @@ -399,27 +402,27 @@ bool VtepGrpMoMgr::CompareValidValue(void *&val1, void *val2, val_vtep_grp_t *val_vtepgrp1 = reinterpret_cast(val1); val_vtep_grp_t *val_vtepgrp2 = reinterpret_cast(val2); for ( unsigned int loop = 0; - loop < sizeof(val_vtepgrp1->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val_vtepgrp1->valid)/sizeof(uint8_t); ++loop ) { if ( UNC_VF_INVALID == val_vtepgrp1->valid[loop] - && UNC_VF_VALID == val_vtepgrp2->valid[loop]) + && UNC_VF_VALID == val_vtepgrp2->valid[loop]) val_vtepgrp1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_VALID == val_vtepgrp1->valid[UPLL_IDX_DESCRIPTION_VTEPG] && UNC_VF_VALID == val_vtepgrp2->valid[UPLL_IDX_DESCRIPTION_VTEPG]) { if (!strcmp(reinterpret_cast(val_vtepgrp1->description), - reinterpret_cast(val_vtepgrp2->description))) + reinterpret_cast(val_vtepgrp2->description))) val_vtepgrp1->valid[UPLL_IDX_DESCRIPTION_VTEPG] = UNC_VF_INVALID; } if (UNC_VF_VALID == val_vtepgrp1->valid[UPLL_IDX_CONTROLLER_ID_VTEPG] && UNC_VF_VALID == val_vtepgrp2->valid[UPLL_IDX_CONTROLLER_ID_VTEPG]) { if (!strcmp(reinterpret_cast(val_vtepgrp1->controller_id), - reinterpret_cast(val_vtepgrp2->controller_id))) + reinterpret_cast(val_vtepgrp2->controller_id))) val_vtepgrp1->valid[UPLL_IDX_CONTROLLER_ID_VTEPG] = UNC_VF_INVALID; } if (!copy_to_running) - val_vtepgrp1->valid[UPLL_IDX_DESCRIPTION_VTEPG] = UNC_VF_INVALID; + val_vtepgrp1->valid[UPLL_IDX_DESCRIPTION_VTEPG] = UNC_VF_INVALID; for (unsigned int loop = 0; - loop < sizeof(val_vtepgrp1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vtepgrp1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vtepgrp1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vtepgrp1->valid[loop])) { invalid_attr = false; @@ -432,21 +435,23 @@ bool VtepGrpMoMgr::CompareValidValue(void *&val1, void *val2, upll_rc_t VtepGrpMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtep_grp_t *val = (ckv_running != NULL)? - reinterpret_cast(GetVal(ckv_running)):NULL; + reinterpret_cast(GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || cs_status == UNC_CS_APPLIED) val->cs_attr[loop] = cs_status; @@ -455,7 +460,7 @@ upll_rc_t VtepGrpMoMgr::UpdateAuditConfigStatus( } upll_rc_t VtepGrpMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; if (!ikey || !req || !(ikey->get_key())) { @@ -469,17 +474,17 @@ upll_rc_t VtepGrpMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (ikey->get_st_num() != IpctSt::kIpcStKeyVtepGrp) { UPLL_LOG_DEBUG("Invalid struct received.Expected struct-kIpcStKeyVtepGrp," - "received struct -%s ", reinterpret_cast - (IpctSt::GetIpcStdef(ikey->get_st_num()))); + "received struct -%s ", reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vtep_grp_t *key_vtep_grp = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); val_vtep_grp_t *val_vtep_grp = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepGrp)) { val_vtep_grp = - reinterpret_cast (ikey->get_cfg_val()->get_val()); + reinterpret_cast (ikey->get_cfg_val()->get_val()); } uint32_t dt_type = req->datatype; uint32_t operation = req->operation; @@ -505,13 +510,13 @@ upll_rc_t VtepGrpMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } } else if (((operation == UNC_OP_READ) || - (operation == UNC_OP_READ_SIBLING) || - (operation == UNC_OP_READ_SIBLING_BEGIN) || - (operation == UNC_OP_READ_SIBLING_COUNT)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP) || - (dt_type == UPLL_DT_STATE))) { + (operation == UNC_OP_READ_SIBLING) || + (operation == UNC_OP_READ_SIBLING_BEGIN) || + (operation == UNC_OP_READ_SIBLING_COUNT)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { if (val_vtep_grp != NULL) { @@ -535,23 +540,23 @@ upll_rc_t VtepGrpMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION1; } } else if ((operation == UNC_OP_DELETE) || - (((operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP)))) { + (((operation == UNC_OP_READ_NEXT) || + (operation == UNC_OP_READ_BULK)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP)))) { UPLL_LOG_TRACE("Value structure is none for this operation:%d", operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_INFO("Invalid datatype(%d) or operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } return UPLL_RC_SUCCESS; } upll_rc_t VtepGrpMoMgr::ValidateVTepGrpValue(val_vtep_grp_t *val_vtep_grp, - uint32_t operation) { + uint32_t operation) { UPLL_FUNC_TRACE; bool ret_val =false; @@ -642,7 +647,7 @@ upll_rc_t VtepGrpMoMgr::ValidateVTepGrpValue(val_vtep_grp_t *val_vtep_grp, } upll_rc_t VtepGrpMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) { + ConfigKeyVal *okey) { UPLL_FUNC_TRACE; val_vtep_grp *vtepg_val = reinterpret_cast(GetVal(ikey)); val_vtep_grp *vtepg_val1 = reinterpret_cast(GetVal(okey)); @@ -657,11 +662,11 @@ upll_rc_t VtepGrpMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } upll_rc_t VtepGrpMoMgr::ValidateVTepGrpKey(key_vtep_grp_t *key_vtep_grp, - uint32_t operation) { + uint32_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey( - reinterpret_cast(key_vtep_grp->vtn_key.vtn_name), + reinterpret_cast(key_vtep_grp->vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Vtn Name syntax check failed." @@ -672,12 +677,12 @@ upll_rc_t VtepGrpMoMgr::ValidateVTepGrpKey(key_vtep_grp_t *key_vtep_grp, if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { UPLL_LOG_TRACE("UNC_KT_VTEP_GRP:vtepgrp_name (%s)", - key_vtep_grp->vtepgrp_name); + key_vtep_grp->vtepgrp_name); ret_val = ValidateKey(reinterpret_cast(key_vtep_grp->vtepgrp_name), - kMinLenVnodeName, kMaxLenVnodeName); + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. vtepgrp_name (%s)", - key_vtep_grp->vtepgrp_name); + key_vtep_grp->vtepgrp_name); return UPLL_RC_ERR_CFG_SYNTAX; } } else { @@ -705,7 +710,8 @@ upll_rc_t VtepGrpMoMgr::ValVTepGrpAttributeSupportCheck( return UPLL_RC_SUCCESS; } upll_rc_t VtepGrpMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char * ctrlr_name) { + ConfigKeyVal *ikey, + const char * ctrlr_name) { UPLL_FUNC_TRACE; if (!ikey || !req) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); @@ -714,7 +720,7 @@ upll_rc_t VtepGrpMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -722,7 +728,7 @@ upll_rc_t VtepGrpMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + ctrlr_name, req->operation); bool result_code = false; uint32_t max_instance_count = 0; @@ -731,25 +737,23 @@ upll_rc_t VtepGrpMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: result_code = GetCreateCapability(ctrlr_name, - ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - cur_instance_count >= max_instance_count) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); break; case UNC_OP_UPDATE: { - result_code = GetUpdateCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); - } + result_code = GetUpdateCapability(ctrlr_name, + ikey->get_key_type(), + &max_attrs, &attrs); + } break; case UNC_OP_READ: case UNC_OP_READ_SIBLING: case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: result_code = GetReadCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); + ikey->get_key_type(), &max_attrs, &attrs); break; default: @@ -759,15 +763,15 @@ upll_rc_t VtepGrpMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " - "for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + "for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_vtep_grp_t *val_vtep_grp = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepGrp)) { val_vtep_grp = - reinterpret_cast (ikey->get_cfg_val()->get_val()); + reinterpret_cast (ikey->get_cfg_val()->get_val()); } if (val_vtep_grp) { if (max_attrs > 0) { @@ -783,18 +787,18 @@ upll_rc_t VtepGrpMoMgr::ValidateCapability(IpcReqRespHeader *req, } upll_rc_t VtepGrpMoMgr::CreateVtunnelKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey) { + ConfigKeyVal *&okey) { upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigVal *tmp; if ( NULL == ikey) return UPLL_RC_ERR_GENERIC; key_vtep_grp *vtepgrp_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); val_vtunnel_t *val_vtunnel = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtunnel_t))); + (ConfigKeyVal::Malloc(sizeof(val_vtunnel_t))); key_vtunnel_t *key_vtunnel = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel_t))); + (ConfigKeyVal::Malloc(sizeof(key_vtunnel_t))); if (!val_vtunnel || !key_vtunnel) return UPLL_RC_ERR_GENERIC; @@ -811,10 +815,10 @@ upll_rc_t VtepGrpMoMgr::CreateVtunnelKey(ConfigKeyVal *ikey, uuu::upll_strncpy(val_vtunnel->vtn_name, vtepgrp_key->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + (kMaxLenVtnName+1)); uuu::upll_strncpy(val_vtunnel->vtep_grp_name, vtepgrp_key->vtepgrp_name, - (kMaxLenVnodeName+1)); + (kMaxLenVnodeName+1)); val_vtunnel->valid[UPLL_IDX_VTN_NAME_VTNL] = UNC_VF_VALID; val_vtunnel->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL] = UNC_VF_VALID; @@ -832,15 +836,17 @@ upll_rc_t VtepGrpMoMgr::CreateVtunnelKey(ConfigKeyVal *ikey, } upll_rc_t VtepGrpMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; if ( !ikey || !(ikey->get_key()) || !dmi) return UPLL_RC_ERR_GENERIC; result_code = CreateVtunnelKey(ikey, okey); - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTUNNEL))); + MoMgrImpl *mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VTUNNEL))); DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); @@ -850,12 +856,12 @@ upll_rc_t VtepGrpMoMgr::IsReferenced(ConfigKeyVal *ikey, result_code = UPLL_RC_ERR_CFG_SEMANTIC; } result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; DELETE_IF_NOT_NULL(okey); return result_code; } -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vtep_grp_momgr.hh b/coordinator/modules/upll/vtep_grp_momgr.hh index 68888b04..98f93fc4 100644 --- a/coordinator/modules/upll/vtep_grp_momgr.hh +++ b/coordinator/modules/upll/vtep_grp_momgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,289 +25,296 @@ enum VtepGrpMoMgrTables { class VtepGrpMoMgr : public VnodeChildMoMgr { - private: - static unc_key_type_t vtep_grp_child[]; - static BindInfo vtep_grp_bind_info[]; - // static BindInfo key_vtep_grp_maintbl_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { - UPLL_FUNC_TRACE; - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vtep_group::kDbiCtrlrName: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_CONTROLLER_ID_VTEPG]); - break; - case uudst::vtep_group::kDbiDesc: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_DESCRIPTION_VTEPG]); - break; - default: - return UPLL_RC_ERR_GENERIC; - } + private: + static unc_key_type_t vtep_grp_child[]; + static BindInfo vtep_grp_bind_info[]; + // static BindInfo key_vtep_grp_maintbl_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { + UPLL_FUNC_TRACE; + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vtep_group::kDbiCtrlrName: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_CONTROLLER_ID_VTEPG]); + break; + case uudst::vtep_group::kDbiDesc: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_DESCRIPTION_VTEPG]); + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; + } - upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - controller_domain *ctrlr_dom, - DalDmlIntf *dmi); + upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + controller_domain *ctrlr_dom, + DalDmlIntf *dmi); - upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtepgrp_key, - unc_keytype_operation_t op, - uint32_t result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtepgrp_key, + unc_keytype_operation_t op, + uint32_t result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - upll_rc_t ValidateMessage(ConfigKeyVal *kval, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op); + upll_rc_t ValidateMessage(ConfigKeyVal *kval, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op); - /** - * @brief Perform Semantic Check - * - * @param[in] ikey ConfigKeyVal - * @param[in] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - **/ - upll_rc_t ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + /** + * @brief Perform Semantic Check + * + * @param[in] ikey ConfigKeyVal + * @param[in] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success + **/ + upll_rc_t ValidateAttribute(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, void *val2, bool copy_to_running, - unc_keytype_operation_t op); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool copy_to_running); + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, void *val2, bool copy_to_running, + unc_keytype_operation_t op); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool copy_to_running); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VTEP_GRP keytype - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key struct is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VTEP_GRP keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key struct is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_VTEP_GRP keytype value structure. - * - * @param[in] val_vtep_grp KT_VTEP_GRP value structure. - * - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVTepGrpValue(val_vtep_grp_t *val_vtep_grp, - uint32_t operation = UNC_OP_INVALID); + /** + * @Brief Validates the syntax for KT_VTEP_GRP keytype value structure. + * + * @param[in] val_vtep_grp KT_VTEP_GRP value structure. + * + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVTepGrpValue(val_vtep_grp_t *val_vtep_grp, + uint32_t operation = UNC_OP_INVALID); - /** - * @Brief Checks if the specified key type(KT_VTEP_GRP) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * @param[in] crtlr_name Controller name. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + /** + * @Brief Checks if the specified key type(KT_VTEP_GRP) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * @param[in] crtlr_name Controller name. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_vtep_grp Value Structure. - * @param[in] attr pointer to controller attribute - * @param[in] operation Operation Name - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVTepGrpAttributeSupportCheck( - val_vtep_grp_t *val_vtep_grp, - const uint8_t* attrs, unc_keytype_operation_t operation); + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char * crtlr_name); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_vtep_grp Value Structure. + * @param[in] attr pointer to controller attribute + * @param[in] operation Operation Name + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVTepGrpAttributeSupportCheck( + val_vtep_grp_t *val_vtep_grp, + const uint8_t* attrs, unc_keytype_operation_t operation); - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - return UPLL_RC_SUCCESS; - } - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, - MoMgrTables tbl ) { - return true; - } - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_name ) { - return UPLL_RC_SUCCESS; - } - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id) { - return UPLL_RC_SUCCESS; - } - upll_rc_t CreateVtunnelKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); - upll_rc_t GetVnodeName(ConfigKeyVal *ikey, - uint8_t *&vtn_name, uint8_t *&vnode_name) { - return UPLL_RC_SUCCESS; - } + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; + } + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, + MoMgrTables tbl ) { + return true; + } + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_name ) { + return UPLL_RC_SUCCESS; + } + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { + return UPLL_RC_SUCCESS; + } + upll_rc_t CreateVtunnelKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + upll_rc_t GetVnodeName(ConfigKeyVal *ikey, + uint8_t *&vtn_name, uint8_t *&vnode_name) { + return UPLL_RC_SUCCESS; + } public: - VtepGrpMoMgr(); - virtual ~VtepGrpMoMgr() { - for (int i = VTEPGRPTBL; i < NVTEPGRPTABLES; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *tkey, uint64_t index); + VtepGrpMoMgr(); + virtual ~VtepGrpMoMgr() { + for (int i = VTEPGRPTBL; i < NVTEPGRPTABLES; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal + * referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *tkey, uint64_t index); - /** - * @Brief Validates the syntax for KT_VTEP_GRP keytype key structure. - * - * @param[in] key_vtep_grp KT_VTEP_GRP key structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVTepGrpKey(key_vtep_grp_t *key_vtep_grp, - uint32_t operation); - /** - * @Brief compares controller id and domain id before - * updating the value to DB. - * - * @param[in] ikey ikey contains key and value structure. - * @param[in] okey okey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - */ - upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey); + /** + * @Brief Validates the syntax for KT_VTEP_GRP keytype key structure. + * + * @param[in] key_vtep_grp KT_VTEP_GRP key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVTepGrpKey(key_vtep_grp_t *key_vtep_grp, + uint32_t operation); + /** + * @Brief compares controller id and domain id before + * updating the value to DB. + * + * @param[in] ikey ikey contains key and value structure. + * @param[in] okey okey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + */ + upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, + ConfigKeyVal *okey); }; -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc #endif diff --git a/coordinator/modules/upll/vtep_if_momgr.cc b/coordinator/modules/upll/vtep_if_momgr.cc index 3b1d6974..c521c75d 100644 --- a/coordinator/modules/upll/vtep_if_momgr.cc +++ b/coordinator/modules/upll/vtep_if_momgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,1342 +15,1391 @@ namespace unc { namespace upll { namespace kt_momgr { - BindInfo VtepIfMoMgr::vtep_if_bind_info[] = { - { uudst::vtep_interface::kDbiVtnName, CFG_KEY, - offsetof(key_vtep_if, vtep_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName+1 }, - { uudst::vtep_interface::kDbiVtepName, CFG_KEY, - offsetof(key_vtep_if, vtep_key.vtep_name), - uud::kDalChar, kMaxLenVnodeName+1 }, - { uudst::vtep_interface::kDbiIfName, CFG_KEY, - offsetof(key_vtep_if, if_name), - uud::kDalChar, kMaxLenInterfaceName+1}, - { uudst::vtep_interface::kDbiDesc, CFG_VAL, - offsetof(val_vtep_if, description), - uud::kDalChar, kMaxLenDescription+1}, - { uudst::vtep_interface::kDbiAdminStatus, CFG_VAL, - offsetof(val_vtep_if, admin_status), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiLogicalPortId, CFG_VAL, - offsetof(val_vtep_if, portmap.logical_port_id), - uud::kDalChar, 320}, - { uudst::vtep_interface::kDbiVlanId, CFG_VAL, - offsetof(val_vtep_if, portmap.vlan_id), uud::kDalUint16, 1}, - { uudst::vtep_interface::kDbiTagged, CFG_VAL, - offsetof(val_vtep_if, portmap.tagged), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiOperStatus, ST_VAL, - offsetof(val_db_vtep_if_st, vtep_if_val_st.oper_status), - uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiDownCount, ST_VAL, offsetof( - val_db_vtep_if_st, down_count), - uud::kDalUint32, 1 }, - { uudst::vtep_interface::kDbiCtrlrName, CK_VAL, - offsetof(key_user_data, ctrlr_id), uud::kDalChar, 32}, - { uudst::vtep_interface::kDbiDomainId, CK_VAL, - offsetof(key_user_data, domain_id), uud::kDalChar, 32}, - { uudst::vtep_interface::kDbiFlags, CK_VAL, - offsetof(key_user_data, flags), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiValidDesc, CFG_META_VAL, - offsetof(val_vtep_if, valid[UPLL_IDX_DESC_VTEPI]), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiValidAdminStatus, CFG_DEF_VAL, - offsetof(val_vtep_if, valid[UPLL_IDX_ADMIN_ST_VTEPI]), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiValidPortMap, CFG_META_VAL, - offsetof(val_vtep_if, valid[UPLL_IDX_PORT_MAP_VTEPI]), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiValidLogicalPortId, CFG_META_VAL, offsetof( - val_vtep_if, portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vtep_interface::kDbiValidVlanid, CFG_META_VAL, offsetof( - val_vtep_if, portmap.valid[UPLL_IDX_VLAN_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vtep_interface::kDbiValidTagged, CFG_META_VAL, offsetof( - val_vtep_if, portmap.valid[UPLL_IDX_TAGGED_PM]), - uud::kDalUint8, 1 }, - { uudst::vtep_interface::kDbiValidOperStatus, ST_META_VAL, - offsetof(val_db_vtep_if_st, - vtep_if_val_st.valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS]), - uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiCsRowstatus, CS_VAL, - offsetof(val_vtep_if, cs_row_status), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiCsDesc, CS_VAL, offsetof(val_vtep_if, - cs_attr[UPLL_IDX_DESC_VTEPI]), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiCsAdminStatus, CS_VAL, offsetof(val_vtep_if, - cs_attr[UPLL_IDX_ADMIN_ST_VTEPI]), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiCsPortMap, CS_VAL, offsetof(val_vtep_if, - cs_attr[UPLL_IDX_PORT_MAP_VTEPI]), uud::kDalUint8, 1}, - { uudst::vtep_interface::kDbiCsLogicalPortId, CS_VAL, offsetof( - val_vtep_if, portmap.cs_attr[UPLL_IDX_LOGICAL_PORT_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vtep_interface::kDbiCsVlanid, CS_VAL, offsetof( - val_vtep_if, portmap.cs_attr[UPLL_IDX_VLAN_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vtep_interface::kDbiCsTagged, CS_VAL, offsetof( - val_vtep_if, portmap.cs_attr[UPLL_IDX_TAGGED_PM]), - uud::kDalUint8, 1 } - }; +BindInfo VtepIfMoMgr::vtep_if_bind_info[] = { + { uudst::vtep_interface::kDbiVtnName, CFG_KEY, + offsetof(key_vtep_if, vtep_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName+1 }, + { uudst::vtep_interface::kDbiVtepName, CFG_KEY, + offsetof(key_vtep_if, vtep_key.vtep_name), + uud::kDalChar, kMaxLenVnodeName+1 }, + { uudst::vtep_interface::kDbiIfName, CFG_KEY, + offsetof(key_vtep_if, if_name), + uud::kDalChar, kMaxLenInterfaceName+1}, + { uudst::vtep_interface::kDbiDesc, CFG_VAL, + offsetof(val_vtep_if, description), + uud::kDalChar, kMaxLenDescription+1}, + { uudst::vtep_interface::kDbiAdminStatus, CFG_VAL, + offsetof(val_vtep_if, admin_status), uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiLogicalPortId, CFG_VAL, + offsetof(val_vtep_if, portmap.logical_port_id), + uud::kDalChar, 320}, + { uudst::vtep_interface::kDbiVlanId, CFG_VAL, + offsetof(val_vtep_if, portmap.vlan_id), uud::kDalUint16, 1}, + { uudst::vtep_interface::kDbiTagged, CFG_VAL, + offsetof(val_vtep_if, portmap.tagged), uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiOperStatus, ST_VAL, + offsetof(val_db_vtep_if_st, vtep_if_val_st.oper_status), + uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiDownCount, ST_VAL, offsetof( + val_db_vtep_if_st, down_count), + uud::kDalUint32, 1 }, + { uudst::vtep_interface::kDbiCtrlrName, CK_VAL, + offsetof(key_user_data, ctrlr_id), uud::kDalChar, 32}, + { uudst::vtep_interface::kDbiDomainId, CK_VAL, + offsetof(key_user_data, domain_id), uud::kDalChar, 32}, + { uudst::vtep_interface::kDbiFlags, CK_VAL, + offsetof(key_user_data, flags), uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiValidDesc, CFG_META_VAL, + offsetof(val_vtep_if, valid[UPLL_IDX_DESC_VTEPI]), uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiValidAdminStatus, CFG_DEF_VAL, + offsetof(val_vtep_if, valid[UPLL_IDX_ADMIN_ST_VTEPI]), uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiValidPortMap, CFG_META_VAL, + offsetof(val_vtep_if, valid[UPLL_IDX_PORT_MAP_VTEPI]), uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiValidLogicalPortId, CFG_META_VAL, offsetof( + val_vtep_if, portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vtep_interface::kDbiValidVlanid, CFG_META_VAL, offsetof( + val_vtep_if, portmap.valid[UPLL_IDX_VLAN_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vtep_interface::kDbiValidTagged, CFG_META_VAL, offsetof( + val_vtep_if, portmap.valid[UPLL_IDX_TAGGED_PM]), + uud::kDalUint8, 1 }, + { uudst::vtep_interface::kDbiValidOperStatus, ST_META_VAL, + offsetof(val_db_vtep_if_st, + vtep_if_val_st.valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS]), + uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiCsRowstatus, CS_VAL, + offsetof(val_vtep_if, cs_row_status), uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiCsDesc, CS_VAL, offsetof( + val_vtep_if, + cs_attr[UPLL_IDX_DESC_VTEPI]), + uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiCsAdminStatus, CS_VAL, offsetof( + val_vtep_if, + cs_attr[UPLL_IDX_ADMIN_ST_VTEPI]), + uud::kDalUint8, 1}, + { uudst::vtep_interface::kDbiCsPortMap, CS_VAL, offsetof( + val_vtep_if, + cs_attr[UPLL_IDX_PORT_MAP_VTEPI]), + uud::kDalUint8, + 1}, + { uudst::vtep_interface::kDbiCsLogicalPortId, CS_VAL, offsetof( + val_vtep_if, portmap.cs_attr[UPLL_IDX_LOGICAL_PORT_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vtep_interface::kDbiCsVlanid, CS_VAL, offsetof( + val_vtep_if, portmap.cs_attr[UPLL_IDX_VLAN_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vtep_interface::kDbiCsTagged, CS_VAL, offsetof( + val_vtep_if, portmap.cs_attr[UPLL_IDX_TAGGED_PM]), + uud::kDalUint8, 1 } +}; - VtepIfMoMgr::VtepIfMoMgr() { - UPLL_FUNC_TRACE; - Table *tbl = new Table(uudst::kDbiVtepIfTbl, UNC_KT_VTEP_IF, - vtep_if_bind_info, - IpctSt::kIpcStKeyVtepIf, IpctSt::kIpcStValVtepIf, - uudst::vtep_interface::kDbiVtepIfNumCols); - ntable = MAX_MOMGR_TBLS; - table = new Table *[ntable]; - table[MAINTBL] = tbl; - table[RENAMETBL] = NULL; - table[CTRLRTBL] = NULL; - nchild = 0; - child = NULL; +VtepIfMoMgr::VtepIfMoMgr() { + UPLL_FUNC_TRACE; + Table *tbl = new Table(uudst::kDbiVtepIfTbl, UNC_KT_VTEP_IF, + vtep_if_bind_info, + IpctSt::kIpcStKeyVtepIf, IpctSt::kIpcStValVtepIf, + uudst::vtep_interface::kDbiVtepIfNumCols); + ntable = MAX_MOMGR_TBLS; + table = new Table *[ntable]; + table[MAINTBL] = tbl; + table[RENAMETBL] = NULL; + table[CTRLRTBL] = NULL; + nchild = 0; + child = NULL; #ifdef _STANDALONE_ - SetMoManager(UNC_KT_VTEP_IF, reinterpret_cast(this)); + SetMoManager(UNC_KT_VTEP_IF, reinterpret_cast(this)); #endif - } +} - /* - * * Based on the key type the bind info will pass - * * - bool VtepIfMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, - MoMgrTables tbl ) { - if (MAINTBL == tbl) { - nattr = NUM_KEY_MAIN_TBL_; - binfo = key_vtep_if_maintbl_update_bind_info; - } - return PFC_TRUE; - }*/ +/* + * * Based on the key type the bind info will pass + * * + bool VtepIfMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, + MoMgrTables tbl ) { + if (MAINTBL == tbl) { + nattr = NUM_KEY_MAIN_TBL_; + binfo = key_vtep_if_maintbl_update_bind_info; + } + return PFC_TRUE; + }*/ - upll_rc_t VtepIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!ikey || (ikey->get_key_type() != UNC_KT_VTEP_IF) - || !(ikey->get_cfg_val())) - return UPLL_RC_ERR_CFG_SYNTAX; +upll_rc_t VtepIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey || (ikey->get_key_type() != UNC_KT_VTEP_IF) + || !(ikey->get_cfg_val())) + return UPLL_RC_ERR_CFG_SYNTAX; - val_vtep_if *vtepif_val = static_cast(GetVal(ikey)); - if (!vtepif_val) { + val_vtep_if *vtepif_val = static_cast(GetVal(ikey)); + if (!vtepif_val) { + if (req->operation == UNC_OP_CREATE) { + UPLL_LOG_DEBUG("Val Structure is Null"); + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_DEBUG("Val structure is must"); return UPLL_RC_ERR_GENERIC; } - if (vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) { - if (vtepif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == - UNC_VF_VALID && - vtepif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { - key_vtep_if *vtep_key_if = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_if))); - val_vtep_if *vtepif_val_filter = static_cast - (ConfigKeyVal::Malloc(sizeof(val_vtep_if))); - vtepif_val_filter->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_VALID; - vtepif_val_filter->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; - uuu::upll_strncpy(vtepif_val_filter->portmap.logical_port_id, - vtepif_val->portmap.logical_port_id, - kMaxLenLogicalPortId+1); - vtepif_val_filter->portmap.vlan_id = vtepif_val->portmap.vlan_id; - ConfigKeyVal *vtepif_ckv = new ConfigKeyVal(UNC_KT_VTEP_IF, - IpctSt::kIpcStKeyVtepIf, vtep_key_if, NULL); - vtepif_ckv->AppendCfgVal(IpctSt::kIpcStValVtepIf, vtepif_val_filter); + } + result_code = IsLogicalPortAndVlanIdInUse(ikey, dmi, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Returning error %d\n", result_code); + return result_code; + } + // PortMap Validation + uint32_t operation = req->operation; + if (operation == UNC_OP_UPDATE) { + result_code = UpdateConfigVal(ikey, UPLL_DT_CANDIDATE, dmi); + UPLL_LOG_TRACE("UpdateConfigVal returned %d", result_code); + } + return result_code; +} + +upll_rc_t VtepIfMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey || (ikey->get_key_type() != UNC_KT_VTEP_IF) + || !(ikey->get_cfg_val())) + return UPLL_RC_ERR_CFG_SYNTAX; - SET_USER_DATA(vtepif_ckv, ikey); - // Read from the DB - DbSubOp dbop = { kOpReadMultiple, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag}; - result_code = ReadConfigDB(vtepif_ckv, UPLL_DT_CANDIDATE, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code == UPLL_RC_SUCCESS) { + val_vtep_if *vtepif_val = static_cast(GetVal(ikey)); + if (!vtepif_val) { + return UPLL_RC_ERR_GENERIC; + } + if (vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) { + if (vtepif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == + UNC_VF_VALID && + vtepif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { + key_vtep_if *vtep_key_if = static_cast + (ConfigKeyVal::Malloc(sizeof(key_vtep_if))); + val_vtep_if *vtepif_val_filter = static_cast + (ConfigKeyVal::Malloc(sizeof(val_vtep_if))); + vtepif_val_filter->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = + UNC_VF_VALID; + vtepif_val_filter->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; + uuu::upll_strncpy(vtepif_val_filter->portmap.logical_port_id, + vtepif_val->portmap.logical_port_id, + kMaxLenLogicalPortId+1); + vtepif_val_filter->portmap.vlan_id = vtepif_val->portmap.vlan_id; + ConfigKeyVal *vtepif_ckv = new ConfigKeyVal(UNC_KT_VTEP_IF, + IpctSt::kIpcStKeyVtepIf, + vtep_key_if, NULL); + vtepif_ckv->AppendCfgVal(IpctSt::kIpcStValVtepIf, vtepif_val_filter); + + SET_USER_DATA(vtepif_ckv, ikey); + // Read from the DB + DbSubOp dbop = { kOpReadMultiple, kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag}; + result_code = ReadConfigDB(vtepif_ckv, UPLL_DT_CANDIDATE, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code == UPLL_RC_SUCCESS) { // check different interface has the same port and lan id - ConfigKeyVal *tmp = vtepif_ckv; - while (tmp) { - if (!memcmp((ikey->get_key()), (tmp->get_key()), - sizeof(key_vtep_if))) { - UPLL_LOG_TRACE("Looking on the Same key"); - } else { - UPLL_LOG_DEBUG("Same port Id and VlanId is used on different" - " Vtep Interface within same VTN/Controller"); - delete vtepif_ckv; - vtepif_ckv = tmp = NULL; - return UPLL_RC_ERR_CFG_SEMANTIC; - } - tmp = tmp->get_next_cfg_key_val(); + ConfigKeyVal *tmp = vtepif_ckv; + while (tmp) { + if (!memcmp((ikey->get_key()), (tmp->get_key()), + sizeof(key_vtep_if))) { + UPLL_LOG_TRACE("Looking on the Same key"); + } else { + UPLL_LOG_DEBUG("Same port Id and VlanId is used on different" + " Vtep Interface within same VTN/Controller"); + delete vtepif_ckv; + vtepif_ckv = tmp = NULL; + return UPLL_RC_ERR_CFG_SEMANTIC; } - } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UPLL_RC_SUCCESS; - } else if (result_code != UPLL_RC_SUCCESS) { - delete vtepif_ckv; - vtepif_ckv = NULL; - return result_code; + tmp = tmp->get_next_cfg_key_val(); } + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + } else if (result_code != UPLL_RC_SUCCESS) { delete vtepif_ckv; vtepif_ckv = NULL; + return result_code; } + delete vtepif_ckv; + vtepif_ckv = NULL; } - UPLL_LOG_TRACE("PortId and VlanId is not used on any Vtep Interface"); - // PortMap Validation - uint32_t operation = req->operation; - if (operation == UNC_OP_UPDATE) { - result_code = UpdateConfigVal(ikey, UPLL_DT_CANDIDATE, dmi); - UPLL_LOG_TRACE("UpdateConfigVal returned %d", result_code); - } - return result_code; } + UPLL_LOG_TRACE("PortId and VlanId is not used on any Vtunnel Interface"); + return result_code; +} - bool VtepIfMoMgr::IsValidKey(void *key, uint64_t index) { - UPLL_FUNC_TRACE; - key_vtep_if *if_key = reinterpret_cast(key); - upll_rc_t ret_val = UPLL_RC_SUCCESS; - switch (index) { - case uudst::vtep_interface::kDbiVtnName: - ret_val = ValidateKey(reinterpret_cast - (if_key->vtep_key.vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); - return false; - } - break; - case uudst::vtep_interface::kDbiVtepName: - ret_val = ValidateKey(reinterpret_cast - (if_key->vtep_key.vtep_name), - kMinLenVnodeName, kMaxLenVnodeName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Vtep Name is not valid(%d)", ret_val); - return false; - } - break; - case uudst::vtep_interface::kDbiIfName: - ret_val = ValidateKey(reinterpret_cast(if_key->if_name), - kMinLenInterfaceName, - kMaxLenInterfaceName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Vtep IF Name is not valid(%d)", ret_val); - return false; - } - break; - default: - UPLL_LOG_TRACE("Wrong Index"); +bool VtepIfMoMgr::IsValidKey(void *key, uint64_t index) { + UPLL_FUNC_TRACE; + key_vtep_if *if_key = reinterpret_cast(key); + upll_rc_t ret_val = UPLL_RC_SUCCESS; + switch (index) { + case uudst::vtep_interface::kDbiVtnName: + ret_val = ValidateKey(reinterpret_cast + (if_key->vtep_key.vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; - } - return true; + } + break; + case uudst::vtep_interface::kDbiVtepName: + ret_val = ValidateKey(reinterpret_cast + (if_key->vtep_key.vtep_name), + kMinLenVnodeName, kMaxLenVnodeName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Vtep Name is not valid(%d)", ret_val); + return false; + } + break; + case uudst::vtep_interface::kDbiIfName: + ret_val = ValidateKey(reinterpret_cast(if_key->if_name), + kMinLenInterfaceName, + kMaxLenInterfaceName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("Vtep IF Name is not valid(%d)", ret_val); + return false; + } + break; + default: + UPLL_LOG_TRACE("Wrong Index"); + return false; } + return true; +} - upll_rc_t VtepIfMoMgr::GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { - UPLL_FUNC_TRACE; - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vtep_interface::kDbiOperStatus: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS]; - break; - case uudst::vtep_interface::kDbiDownCount: - valid = NULL; - break; - case uudst::vtep_interface::kDbiAdminStatus: - valid = &(reinterpret_cast(val))-> +upll_rc_t VtepIfMoMgr::GetValid(void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl ) { + UPLL_FUNC_TRACE; + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vtep_interface::kDbiOperStatus: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS]; + break; + case uudst::vtep_interface::kDbiDownCount: + valid = NULL; + break; + case uudst::vtep_interface::kDbiAdminStatus: + valid = &(reinterpret_cast(val))-> valid[UPLL_IDX_ADMIN_ST_VTEPI]; - break; - case uudst::vtep_interface::kDbiDesc: - valid = &(reinterpret_cast(val))-> + break; + case uudst::vtep_interface::kDbiDesc: + valid = &(reinterpret_cast(val))-> valid[UPLL_IDX_DESC_VTEPI]; - break; - case uudst::vtep_interface::kDbiValidPortMap: - valid = &(reinterpret_cast(val))-> + break; + case uudst::vtep_interface::kDbiValidPortMap: + valid = &(reinterpret_cast(val))-> valid[UPLL_IDX_PORT_MAP_VTEPI]; - break; - case uudst::vtep_interface::kDbiLogicalPortId: - valid = &(reinterpret_cast(val))->portmap. + break; + case uudst::vtep_interface::kDbiLogicalPortId: + valid = &(reinterpret_cast(val))->portmap. valid[UPLL_IDX_LOGICAL_PORT_ID_PM]; - break; - case uudst::vtep_interface::kDbiVlanId: - valid = &(reinterpret_cast(val))->portmap. + break; + case uudst::vtep_interface::kDbiVlanId: + valid = &(reinterpret_cast(val))->portmap. valid[UPLL_IDX_VLAN_ID_PM]; - break; - case uudst::vtep_interface::kDbiTagged: - valid = &(reinterpret_cast(val))->portmap. + break; + case uudst::vtep_interface::kDbiTagged: + valid = &(reinterpret_cast(val))->portmap. valid[UPLL_IDX_TAGGED_PM]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; +} - upll_rc_t VtepIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { - UPLL_FUNC_TRACE; - bool cfgval_ctrlr = false; - upll_rc_t result_code = UPLL_RC_SUCCESS; - key_vtep_if *vtep_key_if = static_cast +upll_rc_t VtepIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key) { + UPLL_FUNC_TRACE; + bool cfgval_ctrlr = false; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_vtep_if *vtep_key_if = static_cast (ConfigKeyVal::Malloc(sizeof(key_vtep_if))); - if (vtep_key_if == NULL) return UPLL_RC_ERR_GENERIC; - void *pkey; - if (parent_key == NULL) { - if (okey) delete okey; - okey = new ConfigKeyVal(UNC_KT_VTEP_IF, - IpctSt::kIpcStKeyVtepIf, - vtep_key_if, NULL); - return UPLL_RC_SUCCESS; - } else { - pkey = parent_key->get_key(); - } - if (!pkey) { - FREE_IF_NOT_NULL(vtep_key_if); + if (vtep_key_if == NULL) return UPLL_RC_ERR_GENERIC; + void *pkey; + if (parent_key == NULL) { + if (okey) delete okey; + okey = new ConfigKeyVal(UNC_KT_VTEP_IF, + IpctSt::kIpcStKeyVtepIf, + vtep_key_if, NULL); + return UPLL_RC_SUCCESS; + } else { + pkey = parent_key->get_key(); + } + if (!pkey) { + FREE_IF_NOT_NULL(vtep_key_if); + return UPLL_RC_ERR_GENERIC; + } + if (okey && (okey->get_key())) { + FREE_IF_NOT_NULL(vtep_key_if); + if (okey->get_key_type() != UNC_KT_VTEP_IF) return UPLL_RC_ERR_GENERIC; - } - if (okey && (okey->get_key())) { + vtep_key_if = reinterpret_cast(okey->get_key()); + } else { + okey = new ConfigKeyVal(UNC_KT_VTEP_IF, IpctSt::kIpcStKeyVtepIf, + vtep_key_if, NULL); + if (okey == NULL) { FREE_IF_NOT_NULL(vtep_key_if); - if (okey->get_key_type() != UNC_KT_VTEP_IF) - return UPLL_RC_ERR_GENERIC; - vtep_key_if = reinterpret_cast(okey->get_key()); - } else { - okey = new ConfigKeyVal(UNC_KT_VTEP_IF, IpctSt::kIpcStKeyVtepIf, - vtep_key_if, NULL); - if (okey == NULL) { - FREE_IF_NOT_NULL(vtep_key_if); - return UPLL_RC_ERR_GENERIC; - } + return UPLL_RC_ERR_GENERIC; } - unc_key_type_t keytype = parent_key->get_key_type(); - switch (keytype) { - case UNC_KT_VTN: - uuu::upll_strncpy(vtep_key_if->vtep_key.vtn_key.vtn_name, - static_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); - *(vtep_key_if->vtep_key.vtep_name) = *""; - break; - case UNC_KT_VTEP: - uuu::upll_strncpy(vtep_key_if->vtep_key.vtn_key.vtn_name, - static_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); - uuu::upll_strncpy(vtep_key_if->vtep_key.vtep_name, - static_cast(pkey)->vtep_name, - (kMaxLenVnodeName+1)); - break; - case UNC_KT_VTEP_IF: + } + unc_key_type_t keytype = parent_key->get_key_type(); + switch (keytype) { + case UNC_KT_VTN: + uuu::upll_strncpy(vtep_key_if->vtep_key.vtn_key.vtn_name, + static_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); + *(vtep_key_if->vtep_key.vtep_name) = *""; + break; + case UNC_KT_VTEP: + uuu::upll_strncpy(vtep_key_if->vtep_key.vtn_key.vtn_name, + static_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); + uuu::upll_strncpy(vtep_key_if->vtep_key.vtep_name, + static_cast(pkey)->vtep_name, + (kMaxLenVnodeName+1)); + break; + case UNC_KT_VTEP_IF: + uuu::upll_strncpy(vtep_key_if->vtep_key.vtn_key.vtn_name, + static_cast + (pkey)->vtep_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); + uuu::upll_strncpy(vtep_key_if->vtep_key.vtep_name, + static_cast(pkey)->vtep_key.vtep_name, + (kMaxLenVnodeName+1)); + uuu::upll_strncpy(vtep_key_if->if_name, + static_cast(pkey)->if_name, + (kMaxLenInterfaceName+1)); + break; + case UNC_KT_VLINK: + { + uint8_t *vnode_name, *if_name; + val_vlink *vlink_val = reinterpret_cast + (GetVal(parent_key)); + if (!vlink_val) { + free(vtep_key_if); + return UPLL_RC_ERR_GENERIC; + } + uint8_t flags = 0; + GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); + flags &= VLINK_FLAG_NODE_POS; + UPLL_LOG_DEBUG("Vlink flag node position %d", flags); + if (flags == kVlinkVnode1) { + vnode_name = vlink_val->vnode1_name; + if_name = vlink_val->vnode1_ifname; + } else { + cfgval_ctrlr = true; + vnode_name = vlink_val->vnode2_name; + if_name = vlink_val->vnode2_ifname; + } uuu::upll_strncpy(vtep_key_if->vtep_key.vtn_key.vtn_name, - static_cast - (pkey)->vtep_key.vtn_key.vtn_name, + static_cast(pkey)->vtn_key.vtn_name, (kMaxLenVtnName+1)); - uuu::upll_strncpy(vtep_key_if->vtep_key.vtep_name, - static_cast(pkey)->vtep_key.vtep_name, - (kMaxLenVnodeName+1)); - uuu::upll_strncpy(vtep_key_if->if_name, - static_cast(pkey)->if_name, - (kMaxLenInterfaceName+1)); - break; - case UNC_KT_VLINK: - { - uint8_t *vnode_name, *if_name; - val_vlink *vlink_val = reinterpret_cast - (GetVal(parent_key)); - if (!vlink_val) { - free(vtep_key_if); - return UPLL_RC_ERR_GENERIC; - } - uint8_t flags = 0; - GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); - flags &= VLINK_FLAG_NODE_POS; - UPLL_LOG_DEBUG("Vlink flag node position %d", flags); - if (flags == kVlinkVnode1) { - vnode_name = vlink_val->vnode1_name; - if_name = vlink_val->vnode1_ifname; - } else { - cfgval_ctrlr = true; - vnode_name = vlink_val->vnode2_name; - if_name = vlink_val->vnode2_ifname; - } - uuu::upll_strncpy(vtep_key_if->vtep_key.vtn_key.vtn_name, - static_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); - if (vnode_name) - uuu::upll_strncpy(vtep_key_if->vtep_key.vtep_name, vnode_name, - (kMaxLenVnodeName+1)); - if (if_name) - uuu::upll_strncpy(vtep_key_if->if_name, if_name, - (kMaxLenInterfaceName+1)); - } - default: - break; - } - if (cfgval_ctrlr) { - SET_USER_DATA(okey, parent_key->get_cfg_val()); - } else { - SET_USER_DATA(okey, parent_key); - } - return result_code; + if (vnode_name) + uuu::upll_strncpy(vtep_key_if->vtep_key.vtep_name, vnode_name, + (kMaxLenVnodeName+1)); + if (if_name) + uuu::upll_strncpy(vtep_key_if->if_name, if_name, + (kMaxLenInterfaceName+1)); + } + default: + break; + } + if (cfgval_ctrlr) { + SET_USER_DATA(okey, parent_key->get_cfg_val()); + } else { + SET_USER_DATA(okey, parent_key); } + return result_code; +} - upll_rc_t VtepIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey ) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - key_vtep_if *pkey = reinterpret_cast - ((ikey)?ikey->get_key():NULL); - if (!pkey) return UPLL_RC_ERR_GENERIC; +upll_rc_t VtepIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey ) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_vtep_if *pkey = reinterpret_cast + ((ikey)?ikey->get_key():NULL); + if (!pkey) return UPLL_RC_ERR_GENERIC; - unc_key_type_t ikey_type = ikey->get_key_type(); - if (ikey_type != UNC_KT_VTEP_IF) - return UPLL_RC_ERR_GENERIC; - key_vtep *vtep_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep))); - if (!vtep_key) return UPLL_RC_ERR_GENERIC; - uuu::upll_strncpy(vtep_key->vtn_key.vtn_name, - static_cast(pkey)->vtep_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); - uuu::upll_strncpy(vtep_key->vtep_name, - static_cast(pkey)->vtep_key.vtep_name, - (kMaxLenVnodeName+1)); - if (okey) delete okey; - okey = new ConfigKeyVal(UNC_KT_VTEP, IpctSt::kIpcStKeyVtep, - vtep_key, NULL); - if (okey == NULL) { - FREE_IF_NOT_NULL(vtep_key); - result_code = UPLL_RC_ERR_GENERIC; - } else { - SET_USER_DATA(okey, ikey); - } - return result_code; + unc_key_type_t ikey_type = ikey->get_key_type(); + if (ikey_type != UNC_KT_VTEP_IF) + return UPLL_RC_ERR_GENERIC; + key_vtep *vtep_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtep))); + if (!vtep_key) return UPLL_RC_ERR_GENERIC; + uuu::upll_strncpy(vtep_key->vtn_key.vtn_name, + static_cast(pkey)-> + vtep_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); + uuu::upll_strncpy(vtep_key->vtep_name, + static_cast(pkey)->vtep_key.vtep_name, + (kMaxLenVnodeName+1)); + if (okey) delete okey; + okey = new ConfigKeyVal(UNC_KT_VTEP, IpctSt::kIpcStKeyVtep, + vtep_key, NULL); + if (okey == NULL) { + FREE_IF_NOT_NULL(vtep_key); + result_code = UPLL_RC_ERR_GENERIC; + } else { + SET_USER_DATA(okey, ikey); } + return result_code; +} - upll_rc_t VtepIfMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - UPLL_FUNC_TRACE; - void *val; - if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; - switch (tbl) { - case MAINTBL: +upll_rc_t VtepIfMoMgr::AllocVal(ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + void *val; + if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; + switch (tbl) { + case MAINTBL: + val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtep_if))); + if (!val) return UPLL_RC_ERR_GENERIC; + ck_val = new ConfigVal(IpctSt::kIpcStValVtepIf, val); + if (!ck_val) { + FREE_IF_NOT_NULL(reinterpret_cast(val)); + return UPLL_RC_ERR_GENERIC; + } + if (dt_type == UPLL_DT_STATE) { val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtep_if))); - if (!val) return UPLL_RC_ERR_GENERIC; - ck_val = new ConfigVal(IpctSt::kIpcStValVtepIf, val); - if (!ck_val) { - FREE_IF_NOT_NULL(reinterpret_cast(val)); + (ConfigKeyVal::Malloc(sizeof(val_db_vtep_if_st))); + if (!val) { + delete ck_val; return UPLL_RC_ERR_GENERIC; } - if (dt_type == UPLL_DT_STATE) { - val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtep_if_st))); - if (!val) { - delete ck_val; - return UPLL_RC_ERR_GENERIC; - } - ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVtepIfSt, val); - if (!ck_nxtval) { - delete ck_val; - FREE_IF_NOT_NULL(reinterpret_cast(val)); - return UPLL_RC_ERR_GENERIC; - } - ck_val->AppendCfgVal(ck_nxtval); + ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVtepIfSt, val); + if (!ck_nxtval) { + delete ck_val; + FREE_IF_NOT_NULL(reinterpret_cast(val)); + return UPLL_RC_ERR_GENERIC; } - break; - default: - val = NULL; - } - return UPLL_RC_SUCCESS; + ck_val->AppendCfgVal(ck_nxtval); + } + break; + default: + val = NULL; } + return UPLL_RC_SUCCESS; +} - upll_rc_t VtepIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (req == NULL) return UPLL_RC_ERR_GENERIC; - if (okey != NULL) return UPLL_RC_ERR_GENERIC; - if (req->get_key_type() != UNC_KT_VTEP_IF) - return UPLL_RC_ERR_GENERIC; - ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); +upll_rc_t VtepIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (req == NULL) return UPLL_RC_ERR_GENERIC; + if (okey != NULL) return UPLL_RC_ERR_GENERIC; + if (req->get_key_type() != UNC_KT_VTEP_IF) + return UPLL_RC_ERR_GENERIC; + ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); - if (tmp) { - if (tbl == MAINTBL) { - val_vtep_if *ival = static_cast(GetVal(req)); - val_vtep_if *vtep_val_if = static_cast - (ConfigKeyVal::Malloc(sizeof(val_vtep_if))); - if (!vtep_val_if) return UPLL_RC_ERR_GENERIC; - memcpy(vtep_val_if, ival, sizeof(val_vtep_if)); - tmp1 = new ConfigVal(IpctSt::kIpcStValVtepIf, vtep_val_if); - if (!tmp1) { - FREE_IF_NOT_NULL(vtep_val_if); - return UPLL_RC_ERR_GENERIC; - } + if (tmp) { + if (tbl == MAINTBL) { + val_vtep_if *ival = static_cast(GetVal(req)); + val_vtep_if *vtep_val_if = static_cast + (ConfigKeyVal::Malloc(sizeof(val_vtep_if))); + if (!vtep_val_if) return UPLL_RC_ERR_GENERIC; + memcpy(vtep_val_if, ival, sizeof(val_vtep_if)); + tmp1 = new ConfigVal(IpctSt::kIpcStValVtepIf, vtep_val_if); + if (!tmp1) { + FREE_IF_NOT_NULL(vtep_val_if); + return UPLL_RC_ERR_GENERIC; } - tmp = tmp->get_next_cfg_val(); - }; - if (tmp) { - if (tbl == MAINTBL) { - val_db_vtep_if_st *ival = static_cast + } + tmp = tmp->get_next_cfg_val(); + }; + if (tmp) { + if (tbl == MAINTBL) { + val_db_vtep_if_st *ival = static_cast (tmp->get_val()); - val_db_vtep_if_st *val_vtep_if = static_cast + val_db_vtep_if_st *val_vtep_if = static_cast (ConfigKeyVal::Malloc(sizeof(val_db_vtep_if_st))); - if (!val_vtep_if) { - delete tmp1; - return UPLL_RC_ERR_GENERIC; - } - memcpy(val_vtep_if, ival, sizeof(val_vtep_if_st)); - ConfigVal *tmp2 = new ConfigVal(IpctSt::kIpcStValVtepIfSt, val_vtep_if); - if (!tmp2) { - delete tmp1; - FREE_IF_NOT_NULL(val_vtep_if); - return UPLL_RC_ERR_GENERIC; - } - tmp1->AppendCfgVal(tmp2); + if (!val_vtep_if) { + delete tmp1; + return UPLL_RC_ERR_GENERIC; } - }; - void *tkey = (req != NULL)?(req)->get_key():NULL; - key_vtep_if *ikey = static_cast(tkey); - key_vtep_if *vtep_if_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_if))); - if (!vtep_if_key) { - if (tmp1) delete tmp1; - return UPLL_RC_ERR_GENERIC; - } - memcpy(vtep_if_key, ikey, sizeof(key_vtep_if)); - okey = new ConfigKeyVal(UNC_KT_VTEP_IF, IpctSt::kIpcStKeyVtepIf, - vtep_if_key, tmp1); - if (okey) { - SET_USER_DATA(okey, req); - } else { - if (tmp1) delete tmp1; - FREE_IF_NOT_NULL(vtep_if_key); - return UPLL_RC_ERR_GENERIC; + memcpy(val_vtep_if, ival, sizeof(val_vtep_if_st)); + ConfigVal *tmp2 = new ConfigVal(IpctSt::kIpcStValVtepIfSt, val_vtep_if); + if (!tmp2) { + delete tmp1; + FREE_IF_NOT_NULL(val_vtep_if); + return UPLL_RC_ERR_GENERIC; + } + tmp1->AppendCfgVal(tmp2); } - return UPLL_RC_SUCCESS; + }; + void *tkey = (req != NULL)?(req)->get_key():NULL; + key_vtep_if *ikey = static_cast(tkey); + key_vtep_if *vtep_if_key = static_cast + (ConfigKeyVal::Malloc(sizeof(key_vtep_if))); + if (!vtep_if_key) { + if (tmp1) delete tmp1; + return UPLL_RC_ERR_GENERIC; + } + memcpy(vtep_if_key, ikey, sizeof(key_vtep_if)); + okey = new ConfigKeyVal(UNC_KT_VTEP_IF, IpctSt::kIpcStKeyVtepIf, + vtep_if_key, tmp1); + if (okey) { + SET_USER_DATA(okey, req); + } else { + if (tmp1) delete tmp1; + FREE_IF_NOT_NULL(vtep_if_key); + return UPLL_RC_ERR_GENERIC; } + return UPLL_RC_SUCCESS; +} - upll_rc_t VtepIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, - upll_keytype_datatype_t datatype, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; - uint8_t flag = 0; - if (!ikey || !dmi) { - UPLL_LOG_DEBUG("Invalid Input"); - return UPLL_RC_ERR_GENERIC; - } - val_vtep_if *vtepif_val = static_cast(GetVal(ikey)); - if (!vtepif_val) { - UPLL_LOG_DEBUG("Value Structure is Null"); - return UPLL_RC_ERR_GENERIC; - } - result_code = GetChildConfigKey(okey, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failure %d", result_code); - return result_code; - } - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; - result_code = ReadConfigDB(okey, datatype, UNC_OP_READ, dbop, - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Read failed %d", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - GET_USER_DATA_FLAGS(okey, flag); - if (vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID || - vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID_NO_VALUE) { - if (flag & VIF_TYPE) { - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("Interface is linked/bounded with Vlink." - " Could not update Portmap"); - return UPLL_RC_ERR_CFG_SEMANTIC; - } - } - if (vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID_NO_VALUE) { - vtepif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_VALID_NO_VALUE; - vtepif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; - vtepif_val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID_NO_VALUE; - uuu::upll_strncpy(vtepif_val->portmap.logical_port_id, "\0", 1); - vtepif_val->portmap.vlan_id = 0; - vtepif_val->portmap.tagged = UPLL_VLAN_UNTAGGED; - } +upll_rc_t VtepIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, + upll_keytype_datatype_t datatype, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *okey = NULL; + uint8_t flag = 0; + if (!ikey || !dmi) { + UPLL_LOG_DEBUG("Invalid Input"); + return UPLL_RC_ERR_GENERIC; + } + val_vtep_if *vtepif_val = static_cast(GetVal(ikey)); + if (!vtepif_val) { + UPLL_LOG_DEBUG("Value Structure is Null"); + return UPLL_RC_ERR_GENERIC; + } + result_code = GetChildConfigKey(okey, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failure %d", result_code); + return result_code; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + result_code = ReadConfigDB(okey, datatype, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Read failed %d", result_code); DELETE_IF_NOT_NULL(okey); return result_code; } + GET_USER_DATA_FLAGS(okey, flag); + if (vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID || + vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID_NO_VALUE) { + if (flag & VIF_TYPE) { + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_DEBUG("Interface is linked/bounded with Vlink." + " Could not update Portmap"); + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } + if (vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID_NO_VALUE) { + vtepif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = + UNC_VF_VALID_NO_VALUE; + vtepif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; + vtepif_val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID_NO_VALUE; + uuu::upll_strncpy(vtepif_val->portmap.logical_port_id, "\0", 1); + vtepif_val->portmap.vlan_id = 0; + vtepif_val->portmap.tagged = UPLL_VLAN_UNTAGGED; + } + DELETE_IF_NOT_NULL(okey); + return result_code; +} - upll_rc_t VtepIfMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; - if (!ikey) { - UPLL_LOG_DEBUG("Invalid ikey"); +upll_rc_t VtepIfMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + if (!ikey) { + UPLL_LOG_DEBUG("Invalid ikey"); + return UPLL_RC_ERR_GENERIC; + } + while (ikey) { + ConfigVal *cval = ikey->get_cfg_val(); + if (!cval) { + UPLL_LOG_DEBUG("Config Val is Null"); return UPLL_RC_ERR_GENERIC; } - while (ikey) { - ConfigVal *cval = ikey->get_cfg_val(); - if (!cval) { - UPLL_LOG_DEBUG("Config Val is Null"); - return UPLL_RC_ERR_GENERIC; - } - while (cval) { - if (IpctSt::kIpcStValVtepIf == cval->get_st_num()) { - // set admin status to valid no value - val_vtep_if *vtepif_val = reinterpret_cast - (GetVal(ikey)); - if (vtepif_val->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_INVALID) - vtepif_val->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_VALID_NO_VALUE; + while (cval) { + if (IpctSt::kIpcStValVtepIf == cval->get_st_num()) { + // set admin status to valid no value + val_vtep_if *vtepif_val = reinterpret_cast + (GetVal(ikey)); + if (vtepif_val->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_INVALID) + vtepif_val->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_VALID_NO_VALUE; - uint8_t vlink_flag = 0; - GET_USER_DATA_FLAGS(ikey, vlink_flag); - UPLL_LOG_DEBUG("Interface type %d", vlink_flag); - if (vlink_flag & VIF_TYPE) - vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_INVALID; - } - if (IpctSt::kIpcStValVtepIfSt == cval->get_st_num()) { - val_vtep_if_st *vtepif_stval = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtep_if_st))); - val_db_vtep_if_st *db_vtepif_stval = - reinterpret_cast( - cval->get_val()); - memcpy(vtepif_stval, &db_vtepif_stval->vtep_if_val_st, - sizeof(val_vtep_if_st)); - cval->SetVal(IpctSt::kIpcStValVtepIfSt, vtepif_stval); - } - cval = cval->get_next_cfg_val(); + uint8_t vlink_flag = 0; + GET_USER_DATA_FLAGS(ikey, vlink_flag); + UPLL_LOG_DEBUG("Interface type %d", vlink_flag); + if (vlink_flag & VIF_TYPE) + vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_INVALID; + } + if (IpctSt::kIpcStValVtepIfSt == cval->get_st_num()) { + val_vtep_if_st *vtepif_stval = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtep_if_st))); + val_db_vtep_if_st *db_vtepif_stval = + reinterpret_cast( + cval->get_val()); + memcpy(vtepif_stval, &db_vtepif_stval->vtep_if_val_st, + sizeof(val_vtep_if_st)); + cval->SetVal(IpctSt::kIpcStValVtepIfSt, vtepif_stval); } - ikey = ikey->get_next_cfg_key_val(); + cval = cval->get_next_cfg_val(); } - return UPLL_RC_SUCCESS; + ikey = ikey->get_next_cfg_key_val(); } + return UPLL_RC_SUCCESS; +} - bool VtepIfMoMgr::FilterAttributes(void *&val1, void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { - UPLL_FUNC_TRACE; - val_vtep_if_t *val_vtep_if1 = reinterpret_cast(val1); - /* No need to configure description in controller. */ - val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; - if (op != UNC_OP_CREATE) - return CompareValidValue(val1, val2, copy_to_running); - return false; - } +bool VtepIfMoMgr::FilterAttributes(void *&val1, void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { + UPLL_FUNC_TRACE; + val_vtep_if_t *val_vtep_if1 = reinterpret_cast(val1); + /* No need to configure description in controller. */ + val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; + if (op != UNC_OP_CREATE) + return CompareValidValue(val1, val2, copy_to_running); + return false; +} - bool VtepIfMoMgr::CompareValidValue(void *&val1, void *val2, - bool copy_to_running) { - UPLL_FUNC_TRACE; - bool invalid_attr = true; - val_vtep_if_t *val_vtep_if1 = reinterpret_cast(val1); - val_vtep_if_t *val_vtep_if2 = reinterpret_cast(val2); - for (unsigned int loop = 0; - loop < sizeof(val_vtep_if1->valid)/sizeof(uint8_t); ++loop ) { - if ( UNC_VF_INVALID == val_vtep_if1->valid[loop] && - UNC_VF_VALID == val_vtep_if2->valid[loop]) - val_vtep_if1->valid[loop] = UNC_VF_VALID_NO_VALUE; - } - if (UNC_VF_VALID == val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] - && UNC_VF_VALID == val_vtep_if2->valid[UPLL_IDX_DESC_VTEPI]) { - if (!strcmp(reinterpret_cast(val_vtep_if1->description), - reinterpret_cast(val_vtep_if2->description))) - val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; - } - if (UNC_VF_INVALID != val_vtep_if1->valid[UPLL_IDX_ADMIN_ST_VTEPI] - && UNC_VF_INVALID != val_vtep_if2->valid[UPLL_IDX_ADMIN_ST_VTEPI]) { - if (val_vtep_if1->admin_status == val_vtep_if2->admin_status) - val_vtep_if1->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; - } - for (unsigned int loop = 0; - loop < sizeof(val_vtep_if1->portmap.valid)/sizeof(uint8_t); ++loop ) { - if (UNC_VF_INVALID == val_vtep_if1->portmap.valid[loop] - && UNC_VF_VALID == val_vtep_if2->portmap.valid[loop]) - val_vtep_if1->portmap.valid[loop] = UNC_VF_VALID_NO_VALUE; - } - if (val_vtep_if1->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID - && val_vtep_if2->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) { - if (memcmp(&(val_vtep_if1->portmap), &(val_vtep_if2->portmap), - sizeof(val_port_map_t))) { - if (val_vtep_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == - UNC_VF_VALID - && val_vtep_if2->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] - == UNC_VF_VALID) { - if (!strcmp(reinterpret_cast - (val_vtep_if1->portmap.logical_port_id), - reinterpret_cast(val_vtep_if2->portmap.logical_port_id))) - val_vtep_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = +bool VtepIfMoMgr::CompareValidValue(void *&val1, void *val2, + bool copy_to_running) { + UPLL_FUNC_TRACE; + bool invalid_attr = true; + val_vtep_if_t *val_vtep_if1 = reinterpret_cast(val1); + val_vtep_if_t *val_vtep_if2 = reinterpret_cast(val2); + for (unsigned int loop = 0; + loop < sizeof(val_vtep_if1->valid)/sizeof(uint8_t); ++loop ) { + if ( UNC_VF_INVALID == val_vtep_if1->valid[loop] && + UNC_VF_VALID == val_vtep_if2->valid[loop]) + val_vtep_if1->valid[loop] = UNC_VF_VALID_NO_VALUE; + } + if (UNC_VF_VALID == val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] + && UNC_VF_VALID == val_vtep_if2->valid[UPLL_IDX_DESC_VTEPI]) { + if (!strcmp(reinterpret_cast(val_vtep_if1->description), + reinterpret_cast(val_vtep_if2->description))) + val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; + } + if (UNC_VF_INVALID != val_vtep_if1->valid[UPLL_IDX_ADMIN_ST_VTEPI] + && UNC_VF_INVALID != val_vtep_if2->valid[UPLL_IDX_ADMIN_ST_VTEPI]) { + if (val_vtep_if1->admin_status == val_vtep_if2->admin_status) + val_vtep_if1->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; + } + for (unsigned int loop = 0; + loop < sizeof(val_vtep_if1->portmap.valid)/sizeof(uint8_t); ++loop ) { + if (UNC_VF_INVALID == val_vtep_if1->portmap.valid[loop] + && UNC_VF_VALID == val_vtep_if2->portmap.valid[loop]) + val_vtep_if1->portmap.valid[loop] = UNC_VF_VALID_NO_VALUE; + } + if (val_vtep_if1->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID + && val_vtep_if2->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) { + if (memcmp(&(val_vtep_if1->portmap), &(val_vtep_if2->portmap), + sizeof(val_port_map_t))) { + if (val_vtep_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == + UNC_VF_VALID + && val_vtep_if2->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] + == UNC_VF_VALID) { + if (!strcmp(reinterpret_cast + (val_vtep_if1->portmap.logical_port_id), + reinterpret_cast + (val_vtep_if2->portmap.logical_port_id))) + val_vtep_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_INVALID; - } - if ((val_vtep_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] == - val_vtep_if2->portmap.valid[UPLL_IDX_VLAN_ID_PM]) - && val_vtep_if2->portmap.valid[UPLL_IDX_VLAN_ID_PM] != - UNC_VF_INVALID) { - if (val_vtep_if1->portmap.vlan_id == val_vtep_if2->portmap.vlan_id) - val_vtep_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; - } - if ((val_vtep_if1->portmap.valid[UPLL_IDX_TAGGED_PM] == - val_vtep_if2->portmap.valid[UPLL_IDX_TAGGED_PM]) - && val_vtep_if2->portmap.valid[UPLL_IDX_TAGGED_PM] != - UNC_VF_INVALID) { - if (val_vtep_if1->portmap.tagged == val_vtep_if2->portmap.tagged) - val_vtep_if1->portmap.valid[UPLL_IDX_TAGGED_PM] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; - } - } else { - val_vtep_if1->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_INVALID; - val_vtep_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_INVALID; - val_vtep_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_INVALID; - val_vtep_if1->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_INVALID; } + if ((val_vtep_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] == + val_vtep_if2->portmap.valid[UPLL_IDX_VLAN_ID_PM]) + && val_vtep_if2->portmap.valid[UPLL_IDX_VLAN_ID_PM] != + UNC_VF_INVALID) { + if (val_vtep_if1->portmap.vlan_id == val_vtep_if2->portmap.vlan_id) + val_vtep_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + } + if ((val_vtep_if1->portmap.valid[UPLL_IDX_TAGGED_PM] == + val_vtep_if2->portmap.valid[UPLL_IDX_TAGGED_PM]) + && val_vtep_if2->portmap.valid[UPLL_IDX_TAGGED_PM] != + UNC_VF_INVALID) { + if (val_vtep_if1->portmap.tagged == val_vtep_if2->portmap.tagged) + val_vtep_if1->portmap.valid[UPLL_IDX_TAGGED_PM] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + } + } else { + val_vtep_if1->valid[UPLL_IDX_PORT_MAP_VTEPI] = UNC_VF_INVALID; + val_vtep_if1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = + UNC_VF_INVALID; + val_vtep_if1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_INVALID; + val_vtep_if1->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_INVALID; } - if (!copy_to_running) - val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; - for (unsigned int loop = 0; - loop < sizeof(val_vtep_if1->valid) / sizeof(uint8_t); ++loop) { - if ((UNC_VF_VALID == (uint8_t) val_vtep_if1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vtep_if1->valid[loop])) { - if (loop == UPLL_IDX_PORT_MAP_VTEPI) { - for (unsigned int i = 0; - i < sizeof(val_vtep_if1->portmap.valid) / sizeof(uint8_t); ++i) { - if ((UNC_VF_VALID == (uint8_t) val_vtep_if1->portmap.valid[i]) || - (UNC_VF_VALID_NO_VALUE == - (uint8_t) val_vtep_if1->portmap.valid[i])) { - invalid_attr = false; - break; - } + } + if (!copy_to_running) + val_vtep_if1->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; + for (unsigned int loop = 0; + loop < sizeof(val_vtep_if1->valid) / sizeof(uint8_t); ++loop) { + if ((UNC_VF_VALID == (uint8_t) val_vtep_if1->valid[loop]) || + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vtep_if1->valid[loop])) { + if (loop == UPLL_IDX_PORT_MAP_VTEPI) { + for (unsigned int i = 0; + i < sizeof(val_vtep_if1->portmap.valid) / sizeof(uint8_t); ++i) { + if ((UNC_VF_VALID == (uint8_t) val_vtep_if1->portmap.valid[i]) || + (UNC_VF_VALID_NO_VALUE == + (uint8_t) val_vtep_if1->portmap.valid[i])) { + invalid_attr = false; + break; } - } else { - invalid_attr = false; } - if (invalid_attr == false) break; + } else { + invalid_attr = false; } + if (invalid_attr == false) break; } - return invalid_attr; } + return invalid_attr; +} - upll_rc_t VtepIfMoMgr::UpdateConfigStatus(ConfigKeyVal *vtepif_keyval, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { - UPLL_FUNC_TRACE; - val_vtep_if_t *vtepif_val = static_cast - (GetVal(vtepif_keyval)); - if (vtepif_val == NULL) return UPLL_RC_ERR_GENERIC; - unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS)? - UNC_CS_APPLIED:UNC_CS_NOT_APPLIED; - UPLL_LOG_TRACE("DriverResult %d, " - "ConfigStatus %d", driver_result, cs_status); - UPLL_LOG_TRACE("%s", (vtepif_keyval->ToStrAll()).c_str()); - val_vtep_if_t *vtep_if_running = static_cast - (GetVal(upd_key)); - if (op == UNC_OP_CREATE) { - vtepif_val->cs_row_status = cs_status; - val_db_vtep_if_st *vtep_db_valst = static_cast +upll_rc_t VtepIfMoMgr::UpdateConfigStatus(ConfigKeyVal *vtepif_keyval, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { + UPLL_FUNC_TRACE; + val_vtep_if_t *vtepif_val = static_cast + (GetVal(vtepif_keyval)); + if (vtepif_val == NULL) return UPLL_RC_ERR_GENERIC; + unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS)? + UNC_CS_APPLIED:UNC_CS_NOT_APPLIED; + UPLL_LOG_TRACE("DriverResult %d, " + "ConfigStatus %d", driver_result, cs_status); + UPLL_LOG_TRACE("%s", (vtepif_keyval->ToStrAll()).c_str()); + val_vtep_if_t *vtep_if_running = static_cast + (GetVal(upd_key)); + if (op == UNC_OP_CREATE) { + vtepif_val->cs_row_status = cs_status; + val_db_vtep_if_st *vtep_db_valst = static_cast (ConfigKeyVal::Malloc(sizeof(val_db_vtep_if_st))); - if (vtep_db_valst == NULL) return UPLL_RC_ERR_GENERIC; - vtepif_keyval->AppendCfgVal(IpctSt::kIpcStValVtepIfSt, vtep_db_valst); + if (vtep_db_valst == NULL) return UPLL_RC_ERR_GENERIC; + vtepif_keyval->AppendCfgVal(IpctSt::kIpcStValVtepIfSt, vtep_db_valst); #if 0 - upll_rc_t result_code = InitOperStatus - (vtepif_keyval, - vtepif_val->valid[UPLL_IDX_ADMIN_ST_VTEPI], - vtepif_val->admin_status, - vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI], - &vtepif_val->portmap); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error settiing oper status"); - return UPLL_RC_ERR_GENERIC; - } + upll_rc_t result_code = InitOperStatus + (vtepif_keyval, + vtepif_val->valid[UPLL_IDX_ADMIN_ST_VTEPI], + vtepif_val->admin_status, + vtepif_val->valid[UPLL_IDX_PORT_MAP_VTEPI], + &vtepif_val->portmap); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error settiing oper status"); + return UPLL_RC_ERR_GENERIC; + } #else - val_vtep_if_st *vnif_st = &vtep_db_valst->vtep_if_val_st; - if (!vnif_st) { - UPLL_LOG_DEBUG("Returning error\n"); - return UPLL_RC_ERR_GENERIC; - } - vnif_st->oper_status = UPLL_OPER_STATUS_UP; - vnif_st->valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS] = UNC_VF_VALID; -#endif - vtep_db_valst->down_count = 0; - } else if (op == UNC_OP_UPDATE) { - void *val = reinterpret_cast(vtepif_val); - CompareValidValue(val, GetVal(upd_key), true); - UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); - vtepif_val->cs_row_status = - vtep_if_running->cs_row_status; - } else { + val_vtep_if_st *vnif_st = &vtep_db_valst->vtep_if_val_st; + if (!vnif_st) { + UPLL_LOG_DEBUG("Returning error\n"); return UPLL_RC_ERR_GENERIC; } - for (unsigned int loop = 0; loop < - sizeof(vtepif_val->valid) / sizeof(vtepif_val->valid[0]); - ++loop) { - if ((UNC_VF_VALID == (uint8_t) vtepif_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == (uint8_t) vtepif_val->valid[loop])) { - // Description is set to APPLIED - if (loop == UPLL_IDX_DESC_VTEPI) - vtepif_val->cs_attr[loop] = UNC_CS_APPLIED; - else - vtepif_val->cs_attr[loop] = cs_status; - } else if ((UNC_VF_INVALID == vtepif_val->valid[loop]) && - (UNC_OP_CREATE == op)) { + vnif_st->oper_status = UPLL_OPER_STATUS_UP; + vnif_st->valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS] = UNC_VF_VALID; +#endif + vtep_db_valst->down_count = 0; + } else if (op == UNC_OP_UPDATE) { + void *val = reinterpret_cast(vtepif_val); + CompareValidValue(val, GetVal(upd_key), true); + UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); + vtepif_val->cs_row_status = + vtep_if_running->cs_row_status; + } else { + return UPLL_RC_ERR_GENERIC; + } + for (unsigned int loop = 0; loop < + sizeof(vtepif_val->valid) / sizeof(vtepif_val->valid[0]); + ++loop) { + if ((UNC_VF_VALID == (uint8_t) vtepif_val->valid[loop]) + || (UNC_VF_VALID_NO_VALUE == (uint8_t) vtepif_val->valid[loop])) { + // Description is set to APPLIED + if (loop == UPLL_IDX_DESC_VTEPI) vtepif_val->cs_attr[loop] = UNC_CS_APPLIED; - } else if ((UNC_VF_INVALID == vtepif_val->valid[loop]) && - (UNC_OP_UPDATE == op)) { - vtepif_val->cs_attr[loop] = - vtep_if_running->cs_attr[loop]; - } + else + vtepif_val->cs_attr[loop] = cs_status; + } else if ((UNC_VF_INVALID == vtepif_val->valid[loop]) && + (UNC_OP_CREATE == op)) { + vtepif_val->cs_attr[loop] = UNC_CS_APPLIED; + } else if ((UNC_VF_INVALID == vtepif_val->valid[loop]) && + (UNC_OP_UPDATE == op)) { + vtepif_val->cs_attr[loop] = + vtep_if_running->cs_attr[loop]; } - for (unsigned int loop = 0; - loop < sizeof(vtepif_val->portmap.valid)/ - sizeof(vtepif_val->portmap.valid[0]); ++loop ) { - if ((UNC_VF_VALID == vtepif_val->portmap.valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vtepif_val->portmap.valid[loop])) - vtepif_val->portmap.cs_attr[loop] = cs_status; - else if ((UNC_VF_INVALID == vtepif_val->portmap.valid[loop]) && - (UNC_OP_CREATE == op)) - vtepif_val->portmap.cs_attr[loop] = UNC_CS_APPLIED; - else if ((UNC_VF_INVALID == vtepif_val->portmap.valid[loop]) && - (UNC_OP_UPDATE == op)) - vtepif_val->portmap.cs_attr[loop] = - vtep_if_running->portmap.cs_attr[loop]; - } - return UPLL_RC_SUCCESS; } + for (unsigned int loop = 0; + loop < sizeof(vtepif_val->portmap.valid)/ + sizeof(vtepif_val->portmap.valid[0]); ++loop ) { + if ((UNC_VF_VALID == vtepif_val->portmap.valid[loop]) + || (UNC_VF_VALID_NO_VALUE == vtepif_val->portmap.valid[loop])) + vtepif_val->portmap.cs_attr[loop] = cs_status; + else if ((UNC_VF_INVALID == vtepif_val->portmap.valid[loop]) && + (UNC_OP_CREATE == op)) + vtepif_val->portmap.cs_attr[loop] = UNC_CS_APPLIED; + else if ((UNC_VF_INVALID == vtepif_val->portmap.valid[loop]) && + (UNC_OP_UPDATE == op)) + vtepif_val->portmap.cs_attr[loop] = + vtep_if_running->portmap.cs_attr[loop]; + } + return UPLL_RC_SUCCESS; +} - upll_rc_t VtepIfMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { - upll_rc_t result_code = UPLL_RC_SUCCESS; - val_vtep_if_t *val; - val = (ckv_running != NULL)?reinterpret_cast - (GetVal(ckv_running)):NULL; - if (NULL == val) { - return UPLL_RC_ERR_GENERIC; - } - if (uuc::kUpllUcpCreate == phase ) - val->cs_row_status = cs_status; - if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) - val->cs_row_status = cs_status; - for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { - if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; - } - for (unsigned int loop = 0; - loop < sizeof(val->portmap.valid) / sizeof(uint8_t); ++loop) { - if ((cs_status == UNC_CS_INVALID && - UNC_VF_VALID == val->portmap.valid[loop]) - || cs_status == UNC_CS_APPLIED) - val->portmap.cs_attr[loop] = cs_status; - } - return result_code; +upll_rc_t VtepIfMoMgr::UpdateAuditConfigStatus( + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + val_vtep_if_t *val; + val = (ckv_running != NULL)?reinterpret_cast + (GetVal(ckv_running)):NULL; + if (NULL == val) { + return UPLL_RC_ERR_GENERIC; + } + if (uuc::kUpllUcpCreate == phase ) + val->cs_row_status = cs_status; + if ((uuc::kUpllUcpUpdate == phase) && + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) + val->cs_row_status = cs_status; + for ( unsigned int loop = 0; + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; + } + for (unsigned int loop = 0; + loop < sizeof(val->portmap.valid) / sizeof(uint8_t); ++loop) { + if ((cs_status == UNC_CS_INVALID && + UNC_VF_VALID == val->portmap.valid[loop]) + || cs_status == UNC_CS_APPLIED) + val->portmap.cs_attr[loop] = cs_status; } + return result_code; +} - upll_rc_t VtepIfMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_SUCCESS; - if (!ikey || !req || !(ikey->get_key())) { - UPLL_LOG_DEBUG("IpcReqRespHeader or ConfigKeyVal is Null"); - return UPLL_RC_ERR_BAD_REQUEST; - } - unc_key_type_t keytype = ikey->get_key_type(); - if (UNC_KT_VTEP_IF != keytype) { - UPLL_LOG_DEBUG("Invalid keytype. Keytype- %d", keytype); - return UPLL_RC_ERR_BAD_REQUEST; - } - if (ikey->get_st_num() != IpctSt::kIpcStKeyVtepIf) { - UPLL_LOG_DEBUG("Invalid struct received.Expected struct-kIpcStKeyVtepIf," - "received struct -%s ", reinterpret_cast - (IpctSt::GetIpcStdef(ikey->get_st_num()))); - return UPLL_RC_ERR_BAD_REQUEST; - } - key_vtep_if_t *key_vtep_if = reinterpret_cast +upll_rc_t VtepIfMoMgr::ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + if (!ikey || !req || !(ikey->get_key())) { + UPLL_LOG_DEBUG("IpcReqRespHeader or ConfigKeyVal is Null"); + return UPLL_RC_ERR_BAD_REQUEST; + } + unc_key_type_t keytype = ikey->get_key_type(); + if (UNC_KT_VTEP_IF != keytype) { + UPLL_LOG_DEBUG("Invalid keytype. Keytype- %d", keytype); + return UPLL_RC_ERR_BAD_REQUEST; + } + if (ikey->get_st_num() != IpctSt::kIpcStKeyVtepIf) { + UPLL_LOG_DEBUG("Invalid struct received.Expected struct-kIpcStKeyVtepIf," + "received struct -%s ", reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); + return UPLL_RC_ERR_BAD_REQUEST; + } + key_vtep_if_t *key_vtep_if = reinterpret_cast (ikey->get_key()); - uint32_t dt_type = req->datatype; - uint32_t operation = req->operation; - uint32_t option1 = req->option1; - uint32_t option2 = req->option2; + uint32_t dt_type = req->datatype; + uint32_t operation = req->operation; + uint32_t option1 = req->option1; + uint32_t option2 = req->option2; - ret_val = ValidateVTepIfKey(key_vtep_if, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key struct Validation failed for VTEP_IF"); - return UPLL_RC_ERR_CFG_SYNTAX; - } else { - if ((operation == UNC_OP_CREATE) && (dt_type == UPLL_DT_CANDIDATE)) { - val_vtep_if_t *val_vtep_if = NULL; - if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepIf)) { - val_vtep_if = reinterpret_cast + ret_val = ValidateVTepIfKey(key_vtep_if, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Key struct Validation failed for VTEP_IF"); + return UPLL_RC_ERR_CFG_SYNTAX; + } else { + if ((operation == UNC_OP_CREATE) && (dt_type == UPLL_DT_CANDIDATE)) { + val_vtep_if_t *val_vtep_if = NULL; + if ((ikey->get_cfg_val()) && + ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepIf)) { + val_vtep_if = reinterpret_cast (ikey->get_cfg_val()->get_val()); + } + if (val_vtep_if != NULL) { + ret_val = ValidateVTepIfValue(val_vtep_if, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failed for CREATE op"); + return UPLL_RC_ERR_CFG_SYNTAX; } - if (val_vtep_if != NULL) { - ret_val = ValidateVTepIfValue(val_vtep_if, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failed for CREATE op"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_TRACE("Value structure is an optional for CREATE op"); - return UPLL_RC_SUCCESS; - } - } else if ((operation == UNC_OP_UPDATE) && - (dt_type == UPLL_DT_CANDIDATE)) { - val_vtep_if_t *val_vtep_if = NULL; - if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepIf)) { - val_vtep_if = reinterpret_cast + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_TRACE("Value structure is an optional for CREATE op"); + return UPLL_RC_SUCCESS; + } + } else if ((operation == UNC_OP_UPDATE) && + (dt_type == UPLL_DT_CANDIDATE)) { + val_vtep_if_t *val_vtep_if = NULL; + if ((ikey->get_cfg_val()) && + ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepIf)) { + val_vtep_if = reinterpret_cast (ikey->get_cfg_val()->get_val()); + } + if (val_vtep_if != NULL) { + ret_val = ValidateVTepIfValue(val_vtep_if, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failed for UPDATE op"); + return UPLL_RC_ERR_CFG_SYNTAX; } - if (val_vtep_if != NULL) { - ret_val = ValidateVTepIfValue(val_vtep_if, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failed for UPDATE op"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_DEBUG("Value structure mandatory for UPDATE op"); - return UPLL_RC_ERR_BAD_REQUEST; - } - } else if (((operation == UNC_OP_READ) || - (operation == UNC_OP_READ_SIBLING) || - (operation == UNC_OP_READ_SIBLING_BEGIN) || - (operation == UNC_OP_READ_SIBLING_COUNT)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP) || - (dt_type == UPLL_DT_STATE))) { - if (option1 == UNC_OPT1_NORMAL) { - if (option2 == UNC_OPT2_NONE) { - val_vtep_if_t *val_vtep_if = NULL; - if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == - IpctSt::kIpcStValVtepIf)) { - val_vtep_if = reinterpret_cast + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_DEBUG("Value structure mandatory for UPDATE op"); + return UPLL_RC_ERR_BAD_REQUEST; + } + } else if (((operation == UNC_OP_READ) || + (operation == UNC_OP_READ_SIBLING) || + (operation == UNC_OP_READ_SIBLING_BEGIN) || + (operation == UNC_OP_READ_SIBLING_COUNT)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { + if (option1 == UNC_OPT1_NORMAL) { + if (option2 == UNC_OPT2_NONE) { + val_vtep_if_t *val_vtep_if = NULL; + if ((ikey->get_cfg_val()) && + ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStValVtepIf)) { + val_vtep_if = reinterpret_cast (ikey->get_cfg_val()->get_val()); + } + if (val_vtep_if != NULL) { + ret_val = ValidateVTepIfValue(val_vtep_if); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failed for READ op"); + return UPLL_RC_ERR_CFG_SYNTAX; } - if (val_vtep_if != NULL) { - ret_val = ValidateVTepIfValue(val_vtep_if); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failed for READ op"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_TRACE("Value structure is an optional for READ op"); - return UPLL_RC_SUCCESS; - } - } else if ((option2 == UNC_OPT2_NEIGHBOR) && - (dt_type == UPLL_DT_STATE) && - (operation == UNC_OP_READ)) { - val_vtn_neighbor_t *val_vtn_neighbor = NULL; - if ((ikey->get_cfg_val()) && - ((ikey->get_cfg_val())->get_st_num() == - IpctSt::kIpcStValVtnNeighbor)) { - val_vtn_neighbor = + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_TRACE("Value structure is an optional for READ op"); + return UPLL_RC_SUCCESS; + } + } else if ((option2 == UNC_OPT2_NEIGHBOR) && + (dt_type == UPLL_DT_STATE) && + (operation == UNC_OP_READ)) { + val_vtn_neighbor_t *val_vtn_neighbor = NULL; + if ((ikey->get_cfg_val()) && + ((ikey->get_cfg_val())->get_st_num() == + IpctSt::kIpcStValVtnNeighbor)) { + val_vtn_neighbor = reinterpret_cast (ikey->get_cfg_val()->get_val()); + } + if (val_vtn_neighbor != NULL) { + ret_val = ValidateVtnNeighborValue(val_vtn_neighbor); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Val struct Validation failed for READ op"); + return UPLL_RC_ERR_CFG_SYNTAX; } - if (val_vtn_neighbor != NULL) { - ret_val = ValidateVtnNeighborValue(val_vtn_neighbor); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Val struct Validation failed for READ op"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_TRACE("value structure is an optional for READ op"); - return UPLL_RC_SUCCESS; - } + return UPLL_RC_SUCCESS; } else { - UPLL_LOG_TRACE("option2 is not matching"); - return UPLL_RC_ERR_INVALID_OPTION2; + UPLL_LOG_TRACE("value structure is an optional for READ op"); + return UPLL_RC_SUCCESS; } } else { - UPLL_LOG_TRACE("option1 is not matching"); - return UPLL_RC_ERR_INVALID_OPTION1; + UPLL_LOG_TRACE("option2 is not matching"); + return UPLL_RC_ERR_INVALID_OPTION2; } - } else if ((operation == UNC_OP_DELETE) || - (((operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP)))) { - UPLL_LOG_TRACE("Value structure is none for operation type:%d", - operation); - return UPLL_RC_SUCCESS; } else { - UPLL_LOG_DEBUG("Invalid datatype(%d) or operation(%d)", dt_type, - operation); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + UPLL_LOG_TRACE("option1 is not matching"); + return UPLL_RC_ERR_INVALID_OPTION1; } + } else if ((operation == UNC_OP_DELETE) || + (((operation == UNC_OP_READ_NEXT) || + (operation == UNC_OP_READ_BULK)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP)))) { + UPLL_LOG_TRACE("Value structure is none for operation type:%d", + operation); + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_DEBUG("Invalid datatype(%d) or operation(%d)", dt_type, + operation); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } - return UPLL_RC_SUCCESS; } - upll_rc_t VtepIfMoMgr::ValidateVTepIfValue(val_vtep_if_t *val_vtep_if, - uint32_t operation) { - UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; +} +upll_rc_t VtepIfMoMgr::ValidateVTepIfValue(val_vtep_if_t *val_vtep_if, + uint32_t operation) { + UPLL_FUNC_TRACE; - if (val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == UNC_VF_VALID) { - if (!ValidateDesc(val_vtep_if->description, - kMinLenDescription, kMaxLenDescription)) { - UPLL_LOG_DEBUG("Syntax check failed. desc -%s", - val_vtep_if->description); + if (val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == UNC_VF_VALID) { + if (!ValidateDesc(val_vtep_if->description, + kMinLenDescription, kMaxLenDescription)) { + UPLL_LOG_DEBUG("Syntax check failed. desc -%s", + val_vtep_if->description); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else if ((val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == + UNC_VF_VALID_NO_VALUE) && + ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + val_vtep_if->description[0] = '\0'; + } + if (val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_VALID) { + if (!ValidateNumericRange(val_vtep_if->admin_status, + (uint8_t) UPLL_ADMIN_ENABLE, + (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { + UPLL_LOG_DEBUG("Syntax check failed. admin_status- %d", + val_vtep_if->admin_status); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else if ((val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == + UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { + val_vtep_if->admin_status = UPLL_ADMIN_ENABLE; + } else if ((val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_INVALID) + && (operation == UNC_OP_CREATE)) { + val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_VALID_NO_VALUE; + val_vtep_if->admin_status = UPLL_ADMIN_ENABLE; + } + if (val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) { + if (val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] + == UNC_VF_VALID) { + if (!ValidateLogicalPortId( + reinterpret_cast(val_vtep_if->portmap.logical_port_id), + kMinLenLogicalPortId, kMaxLenLogicalPortId)) { + UPLL_LOG_DEBUG("Logical Port id syntax check failed." + "Received Logical Port Id - %s", + val_vtep_if->portmap.logical_port_id); return UPLL_RC_ERR_CFG_SYNTAX; } - } else if ((val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == - UNC_VF_VALID_NO_VALUE) && - ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { - val_vtep_if->description[0] = '\0'; - } - if (val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_VALID) { - if (!ValidateNumericRange(val_vtep_if->admin_status, - (uint8_t) UPLL_ADMIN_ENABLE, - (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { - UPLL_LOG_DEBUG("Syntax check failed. admin_status- %d", - val_vtep_if->admin_status); + if (toupper(val_vtep_if->portmap.logical_port_id[0]) == 'S' + && toupper(val_vtep_if->portmap.logical_port_id[1]) == 'W') { + UPLL_LOG_DEBUG("Invalid logical_port_id - %s", + val_vtep_if->portmap.logical_port_id); return UPLL_RC_ERR_CFG_SYNTAX; } - } else if ((val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == - UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { - val_vtep_if->admin_status = UPLL_ADMIN_ENABLE; - } else if ((val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_INVALID) - && (operation == UNC_OP_CREATE)) { - val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_VALID_NO_VALUE; - val_vtep_if->admin_status = UPLL_ADMIN_ENABLE; + } else if (val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == + UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + uuu::upll_strncpy(val_vtep_if->portmap.logical_port_id, " ", + kMaxLenLogicalPortId+1); } - if (val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) { - if (val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] - == UNC_VF_VALID) { - if (!ValidateLogicalPortId( - reinterpret_cast(val_vtep_if->portmap.logical_port_id), - kMinLenLogicalPortId, kMaxLenLogicalPortId)) { - UPLL_LOG_DEBUG("Logical Port id syntax check failed." - "Received Logical Port Id - %s", - val_vtep_if->portmap.logical_port_id); - return UPLL_RC_ERR_CFG_SYNTAX; - } - if (toupper(val_vtep_if->portmap.logical_port_id[0]) == 'S' - && toupper(val_vtep_if->portmap.logical_port_id[1]) == 'W') { - UPLL_LOG_DEBUG("Invalid logical_port_id - %s", - val_vtep_if->portmap.logical_port_id); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else if (val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == - UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { - uuu::upll_strncpy(val_vtep_if->portmap.logical_port_id, " ", - kMaxLenLogicalPortId+1); + if (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { + if ((val_vtep_if->portmap.vlan_id != 0xFFFF) && + !ValidateNumericRange(val_vtep_if->portmap.vlan_id, + (uint16_t) kMinVlanId, (uint16_t) kMaxVlanId, + true, true)) { + UPLL_LOG_DEBUG("Vlan Id Number check failed." + "Received vlan_id - %d", + val_vtep_if->portmap.vlan_id); + return UPLL_RC_ERR_CFG_SYNTAX; } - if (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { - if ((val_vtep_if->portmap.vlan_id != 0xFFFF) && - !ValidateNumericRange(val_vtep_if->portmap.vlan_id, - (uint16_t) kMinVlanId, (uint16_t) kMaxVlanId, - true, true)) { - UPLL_LOG_DEBUG("Vlan Id Number check failed." - "Received vlan_id - %d", - val_vtep_if->portmap.vlan_id); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else if (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { - val_vtep_if->portmap.vlan_id = 0; + } else if (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + val_vtep_if->portmap.vlan_id = 0; + } + if (val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) { + if (!ValidateNumericRange((uint8_t) val_vtep_if->portmap.tagged, + (uint8_t) UPLL_VLAN_UNTAGGED, + (uint8_t) UPLL_VLAN_TAGGED, true, true)) { + UPLL_LOG_DEBUG("Tagged Numeric range check failed." + "Received Tag - %d", + val_vtep_if->portmap.tagged); + return UPLL_RC_ERR_CFG_SYNTAX; } - if (val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) { - if (!ValidateNumericRange((uint8_t) val_vtep_if->portmap.tagged, - (uint8_t) UPLL_VLAN_UNTAGGED, - (uint8_t) UPLL_VLAN_TAGGED, true, true)) { - UPLL_LOG_DEBUG("Tagged Numeric range check failed." - "Received Tag - %d", - val_vtep_if->portmap.tagged); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else if (((val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] - == UNC_VF_VALID_NO_VALUE) || + } else if (((val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] + == UNC_VF_VALID_NO_VALUE) || (val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] - == UNC_VF_INVALID)) - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { - if (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) - val_vtep_if->portmap.tagged = UPLL_VLAN_TAGGED; - else - val_vtep_if->portmap.tagged = UPLL_VLAN_UNTAGGED; - val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; - } - } else if ((val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == - UNC_VF_VALID_NO_VALUE) - && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { - memset(&(val_vtep_if->portmap), 0, sizeof(val_vtep_if->portmap)); + == UNC_VF_INVALID)) + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + if (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) + val_vtep_if->portmap.tagged = UPLL_VLAN_TAGGED; + else + val_vtep_if->portmap.tagged = UPLL_VLAN_UNTAGGED; + val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; } - return UPLL_RC_SUCCESS; + } else if ((val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == + UNC_VF_VALID_NO_VALUE) + && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { + memset(&(val_vtep_if->portmap), 0, sizeof(val_vtep_if->portmap)); } - upll_rc_t VtepIfMoMgr::ValidateVTepIfKey(key_vtep_if_t *key_vtep_if, - uint32_t operation) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_SUCCESS; - ret_val = ValidateKey( - reinterpret_cast(key_vtep_if->vtep_key.vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + return UPLL_RC_SUCCESS; +} +upll_rc_t VtepIfMoMgr::ValidateVTepIfKey(key_vtep_if_t *key_vtep_if, + uint32_t operation) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + ret_val = ValidateKey( + reinterpret_cast(key_vtep_if->vtep_key.vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Vtn Name syntax check failed." + "Received VTN Name - %s", + key_vtep_if->vtep_key.vtn_key.vtn_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + ret_val = ValidateKey( + reinterpret_cast(key_vtep_if->vtep_key.vtep_name), + kMinLenVnodeName, kMaxLenVnodeName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("VTEP Name syntax check failed." + "Received VTEP Name -%s", + key_vtep_if->vtep_key.vtep_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + if ((operation != UNC_OP_READ_SIBLING_BEGIN) && + (operation != UNC_OP_READ_SIBLING_COUNT)) { + ret_val = ValidateKey(reinterpret_cast (key_vtep_if->if_name), + kMinLenInterfaceName, kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Vtn Name syntax check failed." - "Received VTN Name - %s", - key_vtep_if->vtep_key.vtn_key.vtn_name); - return UPLL_RC_ERR_CFG_SYNTAX; + UPLL_LOG_DEBUG("Syntax check failed.if_name(%s)", key_vtep_if->if_name); + return ret_val; } + } else { + UPLL_LOG_TRACE("Operation is %d", operation); + StringReset(key_vtep_if->if_name); + } + return UPLL_RC_SUCCESS; +} + +upll_rc_t VtepIfMoMgr::ValidateVtnNeighborValue( + val_vtn_neighbor_t *val_vtn_neighbor) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + + if (val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] == UNC_VF_VALID) { ret_val = ValidateKey( - reinterpret_cast(key_vtep_if->vtep_key.vtep_name), + reinterpret_cast(val_vtn_neighbor->connected_vnode_name), kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("VTEP Name syntax check failed." - "Received VTEP Name -%s", - key_vtep_if->vtep_key.vtep_name); + UPLL_LOG_DEBUG("Syntax check failed.conn_vnode_name-(%s)", + val_vtn_neighbor->connected_vnode_name); return UPLL_RC_ERR_CFG_SYNTAX; } - if ((operation != UNC_OP_READ_SIBLING_BEGIN) && - (operation != UNC_OP_READ_SIBLING_COUNT)) { - ret_val = ValidateKey(reinterpret_cast (key_vtep_if->if_name), - kMinLenInterfaceName, kMaxLenInterfaceName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Syntax check failed.if_name(%s)", key_vtep_if->if_name); - return ret_val; - } - } else { - UPLL_LOG_TRACE("Operation is %d", operation); - StringReset(key_vtep_if->if_name); - } - return UPLL_RC_SUCCESS; } - - upll_rc_t VtepIfMoMgr::ValidateVtnNeighborValue( - val_vtn_neighbor_t *val_vtn_neighbor) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_SUCCESS; - - if (val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] == UNC_VF_VALID) { - ret_val = ValidateKey( - reinterpret_cast(val_vtn_neighbor->connected_vnode_name), - kMinLenVnodeName, kMaxLenVnodeName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Syntax check failed.conn_vnode_name-(%s)", - val_vtn_neighbor->connected_vnode_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } - if (val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_IF_NAME_VN] - == UNC_VF_VALID) { - ret_val = ValidateKey( - reinterpret_cast(val_vtn_neighbor->connected_if_name), - kMinLenInterfaceName, kMaxLenInterfaceName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Syntax check failed. connected_if_name-%s", - val_vtn_neighbor->connected_if_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } + if (val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_IF_NAME_VN] + == UNC_VF_VALID) { + ret_val = ValidateKey( + reinterpret_cast(val_vtn_neighbor->connected_if_name), + kMinLenInterfaceName, kMaxLenInterfaceName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Syntax check failed. connected_if_name-%s", + val_vtn_neighbor->connected_if_name); + return UPLL_RC_ERR_CFG_SYNTAX; } - if (val_vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] == UNC_VF_VALID) { - ret_val = ValidateKey( - reinterpret_cast(val_vtn_neighbor->connected_vlink_name), - kMinLenVlinkName, kMaxLenVlinkName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Syntax check failed.connected_vlink_name=%s", - val_vtn_neighbor->connected_vlink_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } + } + if (val_vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] == UNC_VF_VALID) { + ret_val = ValidateKey( + reinterpret_cast(val_vtn_neighbor->connected_vlink_name), + kMinLenVlinkName, kMaxLenVlinkName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Syntax check failed.connected_vlink_name=%s", + val_vtn_neighbor->connected_vlink_name); + return UPLL_RC_ERR_CFG_SYNTAX; } - return UPLL_RC_SUCCESS; } - upll_rc_t VtepIfMoMgr::ValVTepIfAttributeSupportCheck( - val_vtep_if_t *val_vtep_if, - const uint8_t* attrs, unc_keytype_operation_t operation) { - UPLL_FUNC_TRACE; - if ((val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == UNC_VF_VALID) - || (val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtep_if::kCapDesc] == 0) { - val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; - if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { - UPLL_LOG_DEBUG("Attribute Desc not supported in pfc controller"); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + return UPLL_RC_SUCCESS; +} +upll_rc_t VtepIfMoMgr::ValVTepIfAttributeSupportCheck( + val_vtep_if_t *val_vtep_if, + const uint8_t* attrs, unc_keytype_operation_t operation) { + UPLL_FUNC_TRACE; + if ((val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == UNC_VF_VALID) + || (val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] == UNC_VF_VALID_NO_VALUE)) { + if (attrs[unc::capa::vtep_if::kCapDesc] == 0) { + val_vtep_if->valid[UPLL_IDX_DESC_VTEPI] = UNC_VF_INVALID; + if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { + UPLL_LOG_DEBUG("Attribute Desc not supported in pfc controller"); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } + } - if ((val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_VALID) - || (val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] + if ((val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_VALID) + || (val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtep_if::kCapAdminStatus] == 0) { - val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; - if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { - UPLL_LOG_DEBUG("Attribute AdminStatus not supported in controller"); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + if (attrs[unc::capa::vtep_if::kCapAdminStatus] == 0) { + val_vtep_if->valid[UPLL_IDX_ADMIN_ST_VTEPI] = UNC_VF_INVALID; + if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { + UPLL_LOG_DEBUG("Attribute AdminStatus not supported in controller"); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } - if ((val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) - || (val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == + } + if ((val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID) + || (val_vtep_if->valid[UPLL_IDX_PORT_MAP_VTEPI] == UNC_VF_VALID_NO_VALUE)) { - if ((val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == - UNC_VF_VALID) - || (val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] + if ((val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == + UNC_VF_VALID) + || (val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtep_if::kCapLogicalPortId] == 0) { - val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = + if (attrs[unc::capa::vtep_if::kCapLogicalPortId] == 0) { + val_vtep_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_INVALID; - if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { - UPLL_LOG_DEBUG("portmap.swich_id attr is not supported by ctrlr "); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { + UPLL_LOG_DEBUG("portmap.swich_id attr is not supported by ctrlr "); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } - if ((val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) - || (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] + } + if ((val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) + || (val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtep_if::kCapVlanId] == 0) { - val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] = + if (attrs[unc::capa::vtep_if::kCapVlanId] == 0) { + val_vtep_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_INVALID; - if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { - UPLL_LOG_DEBUG("portmap.vlanid attr is not supported by ctrlr "); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { + UPLL_LOG_DEBUG("portmap.vlanid attr is not supported by ctrlr "); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } - if ((val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) - || (val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] + } + if ((val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) + || (val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtep_if::kCapTagged] == 0) { - val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_INVALID; - if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { - UPLL_LOG_DEBUG("portmap.Tagged attr is not supported by ctrlr "); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + if (attrs[unc::capa::vtep_if::kCapTagged] == 0) { + val_vtep_if->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_INVALID; + if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { + UPLL_LOG_DEBUG("portmap.Tagged attr is not supported by ctrlr "); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } } - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; +} - upll_rc_t VtepIfMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char * ctrlr_name) { - UPLL_FUNC_TRACE; - if (!ikey || !req) { - UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); - return UPLL_RC_ERR_GENERIC; - } +upll_rc_t VtepIfMoMgr::ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char * ctrlr_name) { + UPLL_FUNC_TRACE; + if (!ikey || !req) { + UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); + return UPLL_RC_ERR_GENERIC; + } - if (!ctrlr_name) { - ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); - if (!ctrlr_name || !strlen(ctrlr_name)) { - UPLL_LOG_DEBUG("Controller Name is NULL"); - return UPLL_RC_ERR_GENERIC; - } + if (!ctrlr_name) { + ctrlr_name = reinterpret_cast((reinterpret_cast + (ikey->get_user_data()))->ctrlr_id); + if (!ctrlr_name || !strlen(ctrlr_name)) { + UPLL_LOG_DEBUG("Controller Name is NULL"); + return UPLL_RC_ERR_GENERIC; } + } - UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", + ctrlr_name, req->operation); - bool result_code = false; - uint32_t max_instance_count = 0; - uint32_t max_attrs = 0; - const uint8_t *attrs = NULL; - switch (req->operation) { - case UNC_OP_CREATE: - result_code = GetCreateCapability(ctrlr_name, - ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - cur_instance_count >= max_instance_count) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } - break; + bool result_code = false; + uint32_t max_instance_count = 0; + uint32_t max_attrs = 0; + const uint8_t *attrs = NULL; + switch (req->operation) { + case UNC_OP_CREATE: + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); + break; - case UNC_OP_UPDATE: - result_code = GetUpdateCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); - break; + case UNC_OP_UPDATE: + result_code = GetUpdateCapability(ctrlr_name, + ikey->get_key_type(), + &max_attrs, &attrs); + break; - case UNC_OP_READ: - case UNC_OP_READ_SIBLING: - case UNC_OP_READ_SIBLING_BEGIN: - case UNC_OP_READ_SIBLING_COUNT: - result_code = GetReadCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); - break; + case UNC_OP_READ: + case UNC_OP_READ_SIBLING: + case UNC_OP_READ_SIBLING_BEGIN: + case UNC_OP_READ_SIBLING_COUNT: + result_code = GetReadCapability(ctrlr_name, + ikey->get_key_type(), + &max_attrs, + &attrs); + break; - default: - UPLL_LOG_DEBUG("Invalid operation"); - break; - } - if (!result_code) { - UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " - "for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } - val_vtep_if_t *val_vtep_if = NULL; - if ((ikey->get_cfg_val()) - && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepIf)) { - val_vtep_if = + default: + UPLL_LOG_DEBUG("Invalid operation"); + break; + } + if (!result_code) { + UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " + "for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } + val_vtep_if_t *val_vtep_if = NULL; + if ((ikey->get_cfg_val()) + && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtepIf)) { + val_vtep_if = reinterpret_cast (ikey->get_cfg_val()->get_val()); + } + if (val_vtep_if) { + if (max_attrs > 0) { + return ValVTepIfAttributeSupportCheck(val_vtep_if, attrs, + req->operation); + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - if (val_vtep_if) { - if (max_attrs > 0) { - return ValVTepIfAttributeSupportCheck(val_vtep_if, attrs, - req->operation); - } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", - req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } - } - return UPLL_RC_SUCCESS; } + return UPLL_RC_SUCCESS; +} - /* - upll_rc_t VtepIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { +/* + upll_rc_t VtepIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey) { - if ( !ikey || !(ikey->get_key()) ) - return UPLL_RC_ERR_GENERIC; + if ( !ikey || !(ikey->get_key()) ) + return UPLL_RC_ERR_GENERIC; - upll_rc_t result_code = UPLL_RC_SUCCESS; + upll_rc_t result_code = UPLL_RC_SUCCESS; - key_rename_vnode_info *key_rename = (key_rename_vnode_info *)ikey->get_key(); - key_vtep_if_t *vtep_key = (key_vtep_if_t *) malloc ( sizeof (key_vtep_if_t)); - if (!vtep_key) - return UPLL_RC_ERR_GENERIC; - if (!strlen ((char *)key_rename->old_unc_vtn_name)) - return UPLL_RC_ERR_GENERIC; - strcpy ((char *)vtep_key->vtep_key.vtn_key.vtn_name, (char *)key_rename->old_unc_vtn_name); + key_rename_vnode_info *key_rename = (key_rename_vnode_info *)ikey->get_key(); + key_vtep_if_t *vtep_key = (key_vtep_if_t *) malloc ( sizeof (key_vtep_if_t)); + if (!vtep_key) + return UPLL_RC_ERR_GENERIC; + if (!strlen ((char *)key_rename->old_unc_vtn_name)) + return UPLL_RC_ERR_GENERIC; + strcpy ((char *)vtep_key->vtep_key.vtn_key.vtn_name, + (char *)key_rename->old_unc_vtn_name); - okey = new ConfigKeyVal (UNC_KT_VTEP_IF, IpctSt::kIpcStKeyVtepIf, vtep_key, NULL); - if (!okey) { - FREE_IF_NOT_NULL(vtep_key); - return UPLL_RC_ERR_GENERIC; - } - return result_code; - } - */ + okey = new ConfigKeyVal (UNC_KT_VTEP_IF, IpctSt::kIpcStKeyVtepIf, + vtep_key, NULL); + if (!okey) { + FREE_IF_NOT_NULL(vtep_key); + return UPLL_RC_ERR_GENERIC; + } + return result_code; + } + */ - upll_rc_t VtepIfMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; - if (!ikey || !(ikey->get_key()) ||!dmi ) - return UPLL_RC_ERR_GENERIC; - GetChildConfigKey(okey, ikey); - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutFlag}; - result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(okey); - return result_code; - } - ConfigKeyVal *tkey = okey; - while (okey) { - uint8_t vlink_flag = 0; - GET_USER_DATA_FLAGS(okey, vlink_flag); - if (vlink_flag & VIF_TYPE) - return UPLL_RC_ERR_CFG_SEMANTIC; - okey = okey->get_next_cfg_key_val(); - } - DELETE_IF_NOT_NULL(tkey); +upll_rc_t VtepIfMoMgr::IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *okey = NULL; + if (!ikey || !(ikey->get_key()) ||!dmi ) + return UPLL_RC_ERR_GENERIC; + GetChildConfigKey(okey, ikey); + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutFlag}; + result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(okey); return result_code; } + ConfigKeyVal *tkey = okey; + while (okey) { + uint8_t vlink_flag = 0; + GET_USER_DATA_FLAGS(okey, vlink_flag); + if (vlink_flag & VIF_TYPE) + return UPLL_RC_ERR_CFG_SEMANTIC; + okey = okey->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(tkey); + return result_code; +} -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vtep_if_momgr.hh b/coordinator/modules/upll/vtep_if_momgr.hh index 7aa38b2b..1fa75d55 100644 --- a/coordinator/modules/upll/vtep_if_momgr.hh +++ b/coordinator/modules/upll/vtep_if_momgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,54 +28,54 @@ enum VtepIfMoMgrTables { class VtepIfMoMgr : public VnodeChildMoMgr { private: static BindInfo vtep_if_bind_info[]; - /* @brief Returns admin and portmap information if portmap is - * valid. Else returns NULL for portmap - * + /* @brief Returns admin and portmap information if portmap is + * valid. Else returns NULL for portmap + * * @param[in] ikey Pointer to ConfigKeyVal - * @param[out] valid_pm portmap is valid + * @param[out] valid_pm portmap is valid * @param[out] pm pointer to portmap informtation if valid_pm - * @param[out] valid_admin admin_status valid value + * @param[out] valid_admin admin_status valid value * @param[out] admin_status value of admin_status * * @retval UPLL_RC_SUCCESS Completed successfully. * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ + * + **/ virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, - val_port_map_t *&pm, - uint8_t &valid_admin, - uint8_t &admin_status) { - UPLL_FUNC_TRACE; - if (ikey == NULL) return UPLL_RC_ERR_GENERIC; - val_vtep_if *ifval = reinterpret_cast - (GetVal(ikey)); - if (!ifval) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - valid_pm = ifval->valid[UPLL_IDX_PORT_MAP_VTEPI]; - if (valid_pm == UNC_VF_VALID) - pm = &ifval->portmap; - else - pm = NULL; - valid_admin = ifval->valid[UPLL_IDX_ADMIN_ST_VTEPI]; - admin_status = ifval->admin_status; - return UPLL_RC_SUCCESS; + val_port_map_t *&pm, + uint8_t &valid_admin, + uint8_t &admin_status) { + UPLL_FUNC_TRACE; + if (ikey == NULL) return UPLL_RC_ERR_GENERIC; + val_vtep_if *ifval = reinterpret_cast + (GetVal(ikey)); + if (!ifval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + valid_pm = ifval->valid[UPLL_IDX_PORT_MAP_VTEPI]; + if (valid_pm == UNC_VF_VALID) + pm = &ifval->portmap; + else + pm = NULL; + valid_admin = ifval->valid[UPLL_IDX_ADMIN_ST_VTEPI]; + admin_status = ifval->admin_status; + return UPLL_RC_SUCCESS; } /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration * - * @param[in] val pointer to the value structure + * @param[in] val pointer to the value structure * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - + * @param[out] valid position of the variable in the valid array - * NULL if valid does not exist. * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value + * @param[in] tbl specifies the table containing the given value * **/ upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl); + upll_keytype_datatype_t dt_type, MoMgrTables tbl); /** * @brief Filters the attributes which need not be sent to controller * @@ -86,11 +86,11 @@ class VtepIfMoMgr : public VnodeChildMoMgr { * **/ bool FilterAttributes(void *&val1, void *val2, bool copy_to_running, - unc_keytype_operation_t op); - /** + unc_keytype_operation_t op); + /** * @brief Compares the valid value between two database records. * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. + * attribute as invalid in the first record. * * @param[in/out] val1 first record value instance. * @param[in] val2 second record value instance. @@ -100,8 +100,8 @@ class VtepIfMoMgr : public VnodeChildMoMgr { bool CompareValidValue(void *&val1, void *val2, bool copy_to_running); upll_rc_t ValidateMessage(ConfigKeyVal *kval, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op); + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op); upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtepif_keyval, unc_keytype_operation_t op, uint32_t result, @@ -109,32 +109,35 @@ class VtepIfMoMgr : public VnodeChildMoMgr { DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + upll_rc_t ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); + DalDmlIntf *dmi, + IpcReqRespHeader *req); /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); + ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); /* @brief To convert the value structure read from DB to * VTNService during READ operations @@ -147,43 +150,47 @@ class VtepIfMoMgr : public VnodeChildMoMgr { upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); -/** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); -/** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + upll_rc_t IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, + DalDmlIntf *dmi, + IpcReqRespHeader *req); + /** * @Brief Validates the syntax of the specified key and value structure * for KT_VTEP_IF keytype @@ -222,7 +229,7 @@ class VtepIfMoMgr : public VnodeChildMoMgr { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVTepIfValue(val_vtep_if_t *val_vtep_if, - uint32_t operation = UNC_OP_INVALID); + uint32_t operation = UNC_OP_INVALID); /** * @Brief Validates the syntax for KT_VTEP_IF keytype value structure. * @@ -251,7 +258,7 @@ class VtepIfMoMgr : public VnodeChildMoMgr { */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); + const char * crtlr_name); /** * @Brief Checks if the specified key type and * associated attributes are supported on the given controller, @@ -267,7 +274,7 @@ class VtepIfMoMgr : public VnodeChildMoMgr { */ upll_rc_t ValVTepIfAttributeSupportCheck( val_vtep_if_t *val_vtep_if, - const uint8_t* attrs, unc_keytype_operation_t operation); + const uint8_t* attrs, unc_keytype_operation_t operation); /** * @Brief Checks if the specified key type and * associated attributes are supported on the given controller, @@ -284,15 +291,16 @@ class VtepIfMoMgr : public VnodeChildMoMgr { const char * crtlr_name, ConfigKeyVal *ikey); bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, - MoMgrTables tbl ) { + int &nattr, + MoMgrTables tbl ) { return true; } upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - return UPLL_RC_SUCCESS; + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; } upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); public: VtepIfMoMgr(); @@ -304,14 +312,14 @@ class VtepIfMoMgr : public VnodeChildMoMgr { delete[] table; } /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ bool IsValidKey(void *tkey, uint64_t index); /* @brief Updates vtepif structure @@ -330,12 +338,12 @@ class VtepIfMoMgr : public VnodeChildMoMgr { DalDmlIntf *dmi); #if 0 upll_rc_t GetMappedVbridges(uint8_t *swid, DalDmlIntf *dmi, - set*sw_vbridge_set); + set*sw_vbridge_set); upll_rc_t GetMappedInterfaces(key_vbr_t *vbr_key, DalDmlIntf *dmi, - ConfigKeyVal *&ikey); + ConfigKeyVal *&ikey); #endif }; -} // namesapce vtn +} // namespace kt_momgr } // namespace upll } // namespace unc #endif diff --git a/coordinator/modules/upll/vtep_momgr.cc b/coordinator/modules/upll/vtep_momgr.cc index 7af8e90f..d02f2dc6 100644 --- a/coordinator/modules/upll/vtep_momgr.cc +++ b/coordinator/modules/upll/vtep_momgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,8 @@ BindInfo VtepMoMgr::vtep_bind_info[] = { offsetof(key_user_data_t, domain_id), uud::kDalChar, kMaxLenDomainId+1 }, { uudst::vtep::kDbiOperStatus, ST_VAL, offsetof(val_db_vtep_st, - vtep_val_st.oper_status), uud::kDalUint8, 1}, + vtep_val_st.oper_status), + uud::kDalUint8, 1}, { uudst::vtep::kDbiDownCount, ST_VAL, offsetof(val_db_vtep_st, down_count), uud::kDalUint32, 1}, { uudst::vtep::kDbiFlags, CK_VAL, offsetof(key_user_data_t, flags), @@ -55,7 +56,8 @@ BindInfo VtepMoMgr::vtep_bind_info[] = { { uudst::vtep::kDbiCsCtrlrName, CS_VAL, offsetof(val_vtep, cs_attr[1]), uud::kDalUint8, 1}, { uudst::vtep::kDbiCsDomainId, CS_VAL, offsetof(val_vtep, - cs_attr[2]), uud::kDalUint8, 1} + cs_attr[2]), + uud::kDalUint8, 1} }; unc_key_type_t VtepMoMgr::vtep_child[] = { @@ -65,8 +67,8 @@ unc_key_type_t VtepMoMgr::vtep_child[] = { VtepMoMgr::VtepMoMgr() { UPLL_FUNC_TRACE; Table *tbl = new Table(uudst::kDbiVtepTbl, UNC_KT_VTEP, vtep_bind_info, - IpctSt::kIpcStKeyVtep, IpctSt::kIpcStValVtep, - uudst::vtep::kDbiVtepNumCols+2); + IpctSt::kIpcStKeyVtep, IpctSt::kIpcStValVtep, + uudst::vtep::kDbiVtepNumCols+2); ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = tbl; @@ -102,7 +104,9 @@ bool VtepMoMgr::IsValidKey(void *key, uint64_t index) { switch (index) { case uudst::vtep::kDbiVtnName: ret_val = ValidateKey(reinterpret_cast - (vtep_key->vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); + (vtep_key->vtn_key.vtn_name), + kMinLenVtnName, + kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; @@ -110,7 +114,9 @@ bool VtepMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vtep::kDbiVtepName: ret_val = ValidateKey(reinterpret_cast - (vtep_key->vtep_name), kMinLenVnodeName, kMaxLenVnodeName); + (vtep_key->vtep_name), + kMinLenVnodeName, + kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Vtep Name is not valid(%d)", ret_val); return false; @@ -124,11 +130,11 @@ bool VtepMoMgr::IsValidKey(void *key, uint64_t index) { } upll_rc_t VtepMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { + ConfigKeyVal *parent_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtep *vtep_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep))); + (ConfigKeyVal::Malloc(sizeof(key_vtep))); void *pkey; if (parent_key == NULL) { if (okey) delete okey; @@ -154,7 +160,7 @@ upll_rc_t VtepMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, default: uuu::upll_strncpy(vtep_key->vtn_key.vtn_name, reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1) ); + (kMaxLenVtnName+1) ); *(vtep_key->vtep_name) = *""; } okey = new ConfigKeyVal(UNC_KT_VTEP, IpctSt::kIpcStKeyVtep, vtep_key, NULL); @@ -169,7 +175,7 @@ upll_rc_t VtepMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } upll_rc_t VtepMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey ) { + ConfigKeyVal *ikey ) { UPLL_FUNC_TRACE; if ((ikey == NULL) || (ikey->get_key() == NULL)) { UPLL_LOG_DEBUG("Null ikey param"); @@ -182,9 +188,9 @@ upll_rc_t VtepMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, if (ikey_type != UNC_KT_VTEP) return UPLL_RC_ERR_GENERIC; key_vtn *vtn_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn))); + (ConfigKeyVal::Malloc(sizeof(key_vtn))); uuu::upll_strncpy(vtn_key->vtn_name, vtep_key->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + (kMaxLenVtnName+1)); DELETE_IF_NOT_NULL(okey); okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); if (okey == NULL) { @@ -198,7 +204,8 @@ upll_rc_t VtepMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, upll_rc_t VtepMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; @@ -213,7 +220,7 @@ upll_rc_t VtepMoMgr::AllocVal(ConfigVal *&ck_val, } if (dt_type == UPLL_DT_STATE) { val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtep_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vtep_st))); ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVtepSt, val); if (!ck_nxtval) { delete ck_val; @@ -230,7 +237,7 @@ upll_rc_t VtepMoMgr::AllocVal(ConfigVal *&ck_val, } upll_rc_t VtepMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { + ConfigKeyVal *&req, MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) return UPLL_RC_ERR_GENERIC; if (okey != NULL) return UPLL_RC_ERR_GENERIC; @@ -241,7 +248,7 @@ upll_rc_t VtepMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tbl == MAINTBL) { val_vtep *ival = static_cast(GetVal(req)); val_vtep *vtep_val = static_cast - (ConfigKeyVal::Malloc(sizeof(val_vtep))); + (ConfigKeyVal::Malloc(sizeof(val_vtep))); memcpy(vtep_val, ival, sizeof(val_vtep)); tmp1 = new ConfigVal(IpctSt::kIpcStValVtep, vtep_val); if (!tmp1) { @@ -255,7 +262,7 @@ upll_rc_t VtepMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tbl == MAINTBL) { val_db_vtep_st *ival = static_cast(tmp->get_val()); val_db_vtep_st *vtep_st = static_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtep_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vtep_st))); if (!vtep_st) { delete tmp1; return UPLL_RC_ERR_GENERIC; @@ -273,7 +280,7 @@ upll_rc_t VtepMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, void *tkey = (req != NULL)?(req)->get_key():NULL; key_vtep *ikey = static_cast(tkey); key_vtep *vtep_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep))); + (ConfigKeyVal::Malloc(sizeof(key_vtep))); if (!vtep_key) { if (tmp1) delete tmp1; return UPLL_RC_ERR_GENERIC; @@ -291,15 +298,15 @@ upll_rc_t VtepMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } upll_rc_t VtepMoMgr::UpdateConfigStatus(ConfigKeyVal *vtep_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; unc_keytype_configstatus_t cs_status = - (driver_result == UPLL_RC_SUCCESS)? UNC_CS_APPLIED - : UNC_CS_NOT_APPLIED; + (driver_result == UPLL_RC_SUCCESS)? UNC_CS_APPLIED + : UNC_CS_NOT_APPLIED; val_vtep *vtep_val = static_cast(GetVal(vtep_key)); if (vtep_val == NULL) return UPLL_RC_ERR_GENERIC; val_vtep *val_running = static_cast(GetVal(upd_key)); @@ -307,7 +314,7 @@ upll_rc_t VtepMoMgr::UpdateConfigStatus(ConfigKeyVal *vtep_key, vtep_val->cs_row_status = cs_status; /* initialize entity/state information */ val_db_vtep_st *vtep_db_valst = static_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtep_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vtep_st))); val_vtep_st *vtepst_val = &vtep_db_valst->vtep_val_st; vtepst_val->oper_status = UPLL_OPER_STATUS_UP; vtepst_val->valid[UPLL_IDX_OPER_STATUS_VTEPS] = UNC_VF_VALID; @@ -323,8 +330,8 @@ upll_rc_t VtepMoMgr::UpdateConfigStatus(ConfigKeyVal *vtep_key, return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(vtep_val->valid)/sizeof(vtep_val->valid[0]); - ++loop ) { + loop < sizeof(vtep_val->valid)/sizeof(vtep_val->valid[0]); + ++loop ) { if ((UNC_VF_VALID == vtep_val->valid[loop]) || (UNC_VF_VALID_NO_VALUE == vtep_val->valid[loop])) { // Description is set to APPLIED @@ -337,7 +344,7 @@ upll_rc_t VtepMoMgr::UpdateConfigStatus(ConfigKeyVal *vtep_key, vtep_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((vtep_val->valid[loop] == UNC_VF_INVALID) && (UNC_OP_UPDATE == op)) { - vtep_val->cs_attr[loop] = val_running->cs_attr[loop]; + vtep_val->cs_attr[loop] = val_running->cs_attr[loop]; } } return UPLL_RC_SUCCESS; @@ -362,33 +369,33 @@ bool VtepMoMgr::CompareValidValue(void *&val1, void *val2, val_vtep_t *val_vtep1 = reinterpret_cast(val1); val_vtep_t *val_vtep2 = reinterpret_cast(val2); for (unsigned int loop = 0; - loop < sizeof(val_vtep1->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val_vtep1->valid)/sizeof(uint8_t); ++loop ) { if (UNC_VF_INVALID == val_vtep1->valid[loop] - && UNC_VF_VALID == val_vtep2->valid[loop]) + && UNC_VF_VALID == val_vtep2->valid[loop]) val_vtep1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_VALID == val_vtep1->valid[UPLL_IDX_DESC_VTEP] && UNC_VF_VALID == val_vtep2->valid[UPLL_IDX_DESC_VTEP]) { if (!strcmp(reinterpret_cast(val_vtep1->description), - reinterpret_cast(val_vtep2->description))) + reinterpret_cast(val_vtep2->description))) val_vtep1->valid[UPLL_IDX_DESC_VTEP] = UNC_VF_INVALID; } if (UNC_VF_VALID == val_vtep1->valid[UPLL_IDX_CONTROLLER_ID_VTEP] && UNC_VF_VALID == val_vtep2->valid[UPLL_IDX_CONTROLLER_ID_VTEP]) { if (!strcmp(reinterpret_cast(val_vtep1->controller_id), - reinterpret_cast(val_vtep2->controller_id))) + reinterpret_cast(val_vtep2->controller_id))) val_vtep1->valid[UPLL_IDX_CONTROLLER_ID_VTEP] = UNC_VF_INVALID; } if (UNC_VF_VALID == val_vtep1->valid[UPLL_IDX_DOMAIN_ID_VTEP] && UNC_VF_VALID == val_vtep2->valid[UPLL_IDX_DOMAIN_ID_VTEP]) { if (!strcmp(reinterpret_cast(val_vtep1->domain_id), - reinterpret_cast(val_vtep2->domain_id))) + reinterpret_cast(val_vtep2->domain_id))) val_vtep1->valid[UPLL_IDX_DOMAIN_ID_VTEP] = UNC_VF_INVALID; } if (!copy_to_running) val_vtep1->valid[UPLL_IDX_DESC_VTEP] = UNC_VF_INVALID; for (unsigned int loop = 0; - loop < sizeof(val_vtep1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vtep1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vtep1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vtep1->valid[loop])) { invalid_attr = false; @@ -401,21 +408,23 @@ bool VtepMoMgr::CompareValidValue(void *&val1, void *val2, upll_rc_t VtepMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtep_t *val = (ckv_running != NULL)?reinterpret_cast - (GetVal(ckv_running)):NULL; + (GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || cs_status == UNC_CS_APPLIED) val->cs_attr[loop] = cs_status; @@ -425,7 +434,7 @@ upll_rc_t VtepMoMgr::UpdateAuditConfigStatus( /* Pure Virtual functions from VnodeMoMgr */ upll_rc_t VtepMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, - controller_domain *ctrlr_dom) { + controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; if (!ikey || !ctrlr_dom) { UPLL_LOG_INFO("Illegal parameter"); @@ -456,7 +465,7 @@ upll_rc_t VtepMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, } upll_rc_t VtepMoMgr::GetVnodeName(ConfigKeyVal *ikey, uint8_t *&vtn_name, - uint8_t *&vnode_name) { + uint8_t *&vnode_name) { UPLL_FUNC_TRACE; if (ikey == NULL) { UPLL_LOG_DEBUG("ConfigKeyVal is NULL"); @@ -470,7 +479,7 @@ upll_rc_t VtepMoMgr::GetVnodeName(ConfigKeyVal *ikey, uint8_t *&vtn_name, } upll_rc_t VtepMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; if (!ikey || !req || !(ikey->get_key())) { @@ -484,8 +493,8 @@ upll_rc_t VtepMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (ikey->get_st_num() != IpctSt::kIpcStKeyVtep) { UPLL_LOG_DEBUG("Invalid structure received.Expected struct-kIpcStKeyVtep, " - "received struct -%s ", reinterpret_cast - (IpctSt::GetIpcStdef(ikey->get_st_num()))); + "received struct -%s ", reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vtep_t *key_vtep = reinterpret_cast(ikey->get_key()); @@ -493,7 +502,7 @@ upll_rc_t VtepMoMgr::ValidateMessage(IpcReqRespHeader *req, if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtep)) { val_vtep = - reinterpret_cast (ikey->get_cfg_val()->get_val()); + reinterpret_cast (ikey->get_cfg_val()->get_val()); } uint32_t dt_type = req->datatype; uint32_t operation = req->operation; @@ -505,7 +514,7 @@ upll_rc_t VtepMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_CFG_SYNTAX; } else { if (((operation == UNC_OP_CREATE) || (operation == UNC_OP_UPDATE)) && - (dt_type == UPLL_DT_CANDIDATE)) { + (dt_type == UPLL_DT_CANDIDATE)) { if (val_vtep != NULL) { ret_val = ValidateVTepValue(val_vtep, operation); if (ret_val != UPLL_RC_SUCCESS) { @@ -518,13 +527,13 @@ upll_rc_t VtepMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } } else if (((operation == UNC_OP_READ) || - (operation == UNC_OP_READ_SIBLING) || - (operation == UNC_OP_READ_SIBLING_BEGIN) || - (operation == UNC_OP_READ_SIBLING_COUNT)) - && ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP) || - (dt_type == UPLL_DT_STATE))) { + (operation == UNC_OP_READ_SIBLING) || + (operation == UNC_OP_READ_SIBLING_BEGIN) || + (operation == UNC_OP_READ_SIBLING_COUNT)) + && ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { if (val_vtep != NULL) { @@ -547,23 +556,23 @@ upll_rc_t VtepMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION1; } } else if ((operation == UNC_OP_DELETE) || - (((operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP)))) { + (((operation == UNC_OP_READ_NEXT) || + (operation == UNC_OP_READ_BULK)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP)))) { UPLL_LOG_TRACE("Value struct is none for operation type:%d", operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Invalid datatype(%d) or operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } return UPLL_RC_SUCCESS; } upll_rc_t VtepMoMgr::ValidateVTepValue(val_vtep_t *val_vtep, - uint32_t operation) { + uint32_t operation) { UPLL_FUNC_TRACE; bool ret_val =false; @@ -623,7 +632,7 @@ upll_rc_t VtepMoMgr::ValidateVTepValue(val_vtep_t *val_vtep, case UPLL_IDX_DOMAIN_ID_VTEP: if (flag == UNC_VF_VALID_NO_VALUE) { UPLL_LOG_DEBUG("controller_id or domain_id flag is" - " valid_no_value"); + " valid_no_value"); return UPLL_RC_ERR_CFG_SYNTAX; } break; @@ -663,7 +672,7 @@ upll_rc_t VtepMoMgr::ValidateVTepValue(val_vtep_t *val_vtep, } upll_rc_t VtepMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) { + ConfigKeyVal *okey) { UPLL_FUNC_TRACE; val_vtep *vtep_val = reinterpret_cast(GetVal(ikey)); val_vtep *vtep_val1 = reinterpret_cast(GetVal(okey)); @@ -686,11 +695,11 @@ upll_rc_t VtepMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } upll_rc_t VtepMoMgr::ValidateVTepKey(key_vtep_t *key_vtep, - uint32_t operation) { + uint32_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey( - reinterpret_cast(key_vtep->vtn_key.vtn_name), + reinterpret_cast(key_vtep->vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Vtn Name syntax check failed." @@ -702,7 +711,7 @@ upll_rc_t VtepMoMgr::ValidateVTepKey(key_vtep_t *key_vtep, (operation != UNC_OP_READ_SIBLING_COUNT)) { UPLL_LOG_TRACE("UNC_KT_VTEP: vtep_name (%s)", key_vtep->vtep_name); ret_val = ValidateKey(reinterpret_cast(key_vtep->vtep_name), - kMinLenVnodeName, kMaxLenVnodeName); + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed.vtep_name-(%s)", key_vtep->vtep_name); return ret_val; @@ -713,8 +722,10 @@ upll_rc_t VtepMoMgr::ValidateVTepKey(key_vtep_t *key_vtep, } return UPLL_RC_SUCCESS; } -upll_rc_t VtepMoMgr::ValVTepAttributeSupportCheck(val_vtep_t *val_vtep, - const uint8_t* attrs, unc_keytype_operation_t operation) { +upll_rc_t VtepMoMgr::ValVTepAttributeSupportCheck( + val_vtep_t *val_vtep, + const uint8_t* attrs, + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if ((val_vtep->valid[UPLL_IDX_DESC_VTEP] == UNC_VF_VALID) || (val_vtep->valid[UPLL_IDX_DESC_VTEP] == UNC_VF_VALID_NO_VALUE)) { @@ -728,8 +739,10 @@ upll_rc_t VtepMoMgr::ValVTepAttributeSupportCheck(val_vtep_t *val_vtep, } return UPLL_RC_SUCCESS; } -upll_rc_t VtepMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char * ctrlr_name) { +upll_rc_t VtepMoMgr::ValidateCapability( + IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char * ctrlr_name) { UPLL_FUNC_TRACE; if (!ikey || !req) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); @@ -737,14 +750,14 @@ upll_rc_t VtepMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; } } UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + ctrlr_name, req->operation); bool result_code = false; uint32_t max_instance_count = 0; uint32_t max_attrs = 0; @@ -753,18 +766,14 @@ upll_rc_t VtepMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - cur_instance_count >= max_instance_count) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &max_instance_count, + &max_attrs, + &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; case UNC_OP_READ: @@ -772,7 +781,7 @@ upll_rc_t VtepMoMgr::ValidateCapability(IpcReqRespHeader *req, case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; default: @@ -781,22 +790,22 @@ upll_rc_t VtepMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " - "for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + "for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_vtep_t *val_vtep = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtep)) { val_vtep = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } if (val_vtep) { if (max_attrs > 0) { return ValVTepAttributeSupportCheck(val_vtep, attrs, req->operation); } else { UPLL_LOG_DEBUG("Attribute list is empty for operation %d", - req->operation); + req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } @@ -804,21 +813,21 @@ upll_rc_t VtepMoMgr::ValidateCapability(IpcReqRespHeader *req, } upll_rc_t VtepMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey) { + ConfigKeyVal *&okey) { UPLL_FUNC_TRACE; if (ikey == NULL) return UPLL_RC_ERR_GENERIC; key_vtep *temp_key_vtep = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep))); + (ConfigKeyVal::Malloc(sizeof(key_vtep))); uuu::upll_strncpy(temp_key_vtep->vtn_key.vtn_name, - static_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + static_cast(ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(temp_key_vtep->vtep_name, - static_cast(ikey->get_key())->vtep_name, - (kMaxLenVnodeName+1)); + static_cast(ikey->get_key())->vtep_name, + (kMaxLenVnodeName+1)); okey = new ConfigKeyVal(UNC_KT_VTEP, IpctSt::kIpcStKeyVtep, - reinterpret_cast(temp_key_vtep), NULL); + reinterpret_cast(temp_key_vtep), NULL); return UPLL_RC_SUCCESS; } /* @@ -845,10 +854,10 @@ upll_rc_t VtepMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, } */ upll_rc_t VtepMoMgr::CreateVtepGrpConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; key_vtep_grp_member_t *vtep_grp_mem_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_grp_member_t))); + (ConfigKeyVal::Malloc(sizeof(key_vtep_grp_member_t))); key_vtep *vtep_key = static_cast(ikey->get_key()); if (!vtep_grp_mem_key) return UPLL_RC_ERR_GENERIC; @@ -857,17 +866,19 @@ upll_rc_t VtepMoMgr::CreateVtepGrpConfigKey(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vtep_grp_mem_key->vtepgrp_key.vtn_key.vtn_name, - reinterpret_cast(vtep_key->vtn_key.vtn_name), - (kMaxLenVtnName+1)); + reinterpret_cast(vtep_key->vtn_key.vtn_name), + (kMaxLenVtnName+1)); if (!strlen(reinterpret_cast(vtep_key->vtep_name))) { FREE_IF_NOT_NULL(vtep_grp_mem_key); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vtep_grp_mem_key->vtepmember_name, - reinterpret_cast(vtep_key->vtep_name), - (kMaxLenVnodeName+1)); + reinterpret_cast(vtep_key->vtep_name), + (kMaxLenVnodeName+1)); okey = new ConfigKeyVal(UNC_KT_VTEP_GRP_MEMBER, - IpctSt::kIpcStKeyVtepGrpMember, vtep_grp_mem_key, NULL); + IpctSt::kIpcStKeyVtepGrpMember, + vtep_grp_mem_key, + NULL); if (!okey) { FREE_IF_NOT_NULL(vtep_grp_mem_key); return UPLL_RC_ERR_GENERIC; @@ -877,19 +888,20 @@ upll_rc_t VtepMoMgr::CreateVtepGrpConfigKey(ConfigKeyVal *&okey, upll_rc_t VtepMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; if (!ikey || !(ikey->get_key()) || !dmi) return UPLL_RC_ERR_GENERIC; - MoMgrImpl *mgr1 = reinterpret_cast(const_cast + MoMgrImpl *mgr1 = reinterpret_cast( + const_cast (GetMoManager(UNC_KT_VTEP_IF))); if (!mgr1) return UPLL_RC_ERR_GENERIC; result_code = mgr1->IsReferenced(ikey, dt_type, dmi); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; UPLL_LOG_DEBUG("Interface IsReferenced returned: (%d)", result_code); if (UPLL_RC_SUCCESS != result_code) return result_code; @@ -897,7 +909,8 @@ upll_rc_t VtepMoMgr::IsReferenced(ConfigKeyVal *ikey, if (UPLL_RC_SUCCESS != result_code) { return result_code; } - MoMgrImpl *mgr2 = reinterpret_cast(const_cast + MoMgrImpl *mgr2 = reinterpret_cast( + const_cast (GetMoManager(UNC_KT_VTEP_GRP_MEMBER))); if (!mgr2) { DELETE_IF_NOT_NULL(okey); @@ -908,7 +921,7 @@ upll_rc_t VtepMoMgr::IsReferenced(ConfigKeyVal *ikey, return UPLL_RC_ERR_CFG_SEMANTIC; result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; DELETE_IF_NOT_NULL(okey); return result_code; } @@ -950,6 +963,6 @@ upll_rc_t VtepMoMgr::IsReferenced(ConfigKeyVal *ikey, } */ -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vtep_momgr.hh b/coordinator/modules/upll/vtep_momgr.hh index 663e43df..8d1cba20 100644 --- a/coordinator/modules/upll/vtep_momgr.hh +++ b/coordinator/modules/upll/vtep_momgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,50 +29,50 @@ class VtepMoMgr : public VnodeMoMgr { static unc_key_type_t vtep_child[]; static BindInfo vtep_bind_info[]; /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration * - * @param[in] val pointer to the value structure + * @param[in] val pointer to the value structure * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - + * @param[out] valid position of the variable in the valid array - * NULL if valid does not exist. * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value + * @param[in] tbl specifies the table containing the given value * **/ upll_rc_t GetValid(void *val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vtep::kDbiOperStatus: - valid = &(reinterpret_cast(val)-> - vtep_val_st.valid[UPLL_IDX_OPER_STATUS_VTEPS]); - break; - case uudst::vtep::kDbiDownCount: - valid = NULL; - break; - case uudst::vtep::kDbiDesc: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_DESC_VTEP]); - break; - case uudst::vtep::kDbiCtrlrName: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_CONTROLLER_ID_VTEP]); - break; - case uudst::vtep::kDbiDomainId: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_DOMAIN_ID_VTEP]); - break; - default: - return UPLL_RC_ERR_GENERIC; - } - } - return UPLL_RC_SUCCESS; + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vtep::kDbiOperStatus: + valid = &(reinterpret_cast(val)-> + vtep_val_st.valid[UPLL_IDX_OPER_STATUS_VTEPS]); + break; + case uudst::vtep::kDbiDownCount: + valid = NULL; + break; + case uudst::vtep::kDbiDesc: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_DESC_VTEP]); + break; + case uudst::vtep::kDbiCtrlrName: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_CONTROLLER_ID_VTEP]); + break; + case uudst::vtep::kDbiDomainId: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_DOMAIN_ID_VTEP]); + break; + default: + return UPLL_RC_ERR_GENERIC; + } + } + return UPLL_RC_SUCCESS; } upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtep_key, unc_keytype_operation_t op, @@ -82,63 +82,68 @@ class VtepMoMgr : public VnodeMoMgr { ConfigKeyVal *ctrlr_key = NULL); /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); -/** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); + ConfigKeyVal *parent_key); upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_name ) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_name ) { return UPLL_RC_SUCCESS; } upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { return UPLL_RC_SUCCESS; } @@ -146,7 +151,7 @@ class VtepMoMgr : public VnodeMoMgr { upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, controller_domain *ctrlr_dom); upll_rc_t GetVnodeName(ConfigKeyVal *ikey, - uint8_t *&vtn_name, uint8_t *&vnode_name); + uint8_t *&vtn_name, uint8_t *&vnode_name); /** * @brief Filters the attributes which need not be sent to controller @@ -163,7 +168,7 @@ class VtepMoMgr : public VnodeMoMgr { /** * @brief Compares the valid value between two database records. * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. + * attribute as invalid in the first record. * * @param[in/out] val1 first record value instance. * @param[in] val2 second record value instance. @@ -197,7 +202,7 @@ class VtepMoMgr : public VnodeMoMgr { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVTepValue(val_vtep_t *val_vtep, uint32_t operation = - UNC_OP_INVALID); + UNC_OP_INVALID); /** * @Brief Checks if the specified key type(KT_VTEP) and * associated attributes are supported on the given controller, @@ -215,7 +220,7 @@ class VtepMoMgr : public VnodeMoMgr { */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); + const char * crtlr_name); /** * @Brief Checks if the specified key type and * associated attributes are supported on the given controller, @@ -231,7 +236,7 @@ class VtepMoMgr : public VnodeMoMgr { */ upll_rc_t ValVTepAttributeSupportCheck( val_vtep_t *val_vtep, - const uint8_t* attrs, unc_keytype_operation_t operation); + const uint8_t* attrs, unc_keytype_operation_t operation); bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, MoMgrTables tbl) { @@ -243,11 +248,12 @@ class VtepMoMgr : public VnodeMoMgr { * */ upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - return UPLL_RC_SUCCESS; + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; } upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); public: VtepMoMgr(); @@ -259,7 +265,7 @@ class VtepMoMgr : public VnodeMoMgr { delete[] table; } /** - * @Brief compares controller id and domain id before + * @Brief compares controller id and domain id before * updating the value to DB. * * @param[in] ikey ikey contains key and value structure. @@ -271,14 +277,14 @@ class VtepMoMgr : public VnodeMoMgr { upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, ConfigKeyVal *okey); /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ bool IsValidKey(void *tkey, uint64_t index); /** * @Brief Validates the syntax for KT_VTEP keytype key structure. @@ -302,61 +308,61 @@ class VtepMoMgr : public VnodeMoMgr { */ upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); -/** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /* @brief This method invoke when the VTEP Delete operation - * thie function creates the configkey for vtepgrpmember - * - * - * @param[in/out] okey key and value structure - * @param[in] ikey key and value structure - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_SEMANTIC Semantic check error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ + /* @brief This method invoke when the VTEP Delete operation + * thie function creates the configkey for vtepgrpmember + * + * + * @param[in/out] okey key and value structure + * @param[in] ikey key and value structure + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_SEMANTIC Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ upll_rc_t CreateVtepGrpConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); /* @brief This method invoke when the VTN merge hapeening between - * Running and DT import. This will checks the vnode name - * unique or not. - * - * @param[in] keytype UNC KEY TYPE - * @param[in/out] ctrlr_id Controller ID - * @param[in] conflict_ckv key and value structure - * @param[in] dal Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ + * Running and DT import. This will checks the vnode name + * unique or not. + * + * @param[in] keytype UNC KEY TYPE + * @param[in/out] ctrlr_id Controller ID + * @param[in] conflict_ckv key and value structure + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + ConfigKeyVal *ikey, DalDmlIntf *dmi) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } }; -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc #endif diff --git a/coordinator/modules/upll/vtepgrp_mem_momgr.cc b/coordinator/modules/upll/vtepgrp_mem_momgr.cc index 7ed55985..f338c67d 100644 --- a/coordinator/modules/upll/vtepgrp_mem_momgr.cc +++ b/coordinator/modules/upll/vtepgrp_mem_momgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,9 +36,9 @@ BindInfo VtepGrpMemMoMgr::vtepgrp_mem_bind_info[] = { VtepGrpMemMoMgr::VtepGrpMemMoMgr() { UPLL_FUNC_TRACE; Table *tbl = new Table(uudst::kDbiVtepGrpMemTbl, UNC_KT_VTEP_GRP_MEMBER, - vtepgrp_mem_bind_info, IpctSt::kIpcStKeyVtepGrpMember, - IpctSt::kIpcStValVtepGrpMember, - uudst::vtep_groupmember::kDbiVtepGrpMemNumCols); + vtepgrp_mem_bind_info, IpctSt::kIpcStKeyVtepGrpMember, + IpctSt::kIpcStValVtepGrpMember, + uudst::vtep_groupmember::kDbiVtepGrpMemNumCols); ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = tbl; @@ -54,7 +54,7 @@ VtepGrpMemMoMgr::VtepGrpMemMoMgr() { /* * Based on the key type the bind info will pass * - bool VtepGrpMemMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, + bool VtepGrpMemMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, MoMgrTables tbl ) { if (MAINTBL == tbl) { @@ -67,13 +67,13 @@ VtepGrpMemMoMgr::VtepGrpMemMoMgr() { bool VtepGrpMemMoMgr::IsValidKey(void *key, uint64_t index) { UPLL_FUNC_TRACE; key_vtep_grp_member *vtep_grp_mem_key = reinterpret_cast - (key); + (key); upll_rc_t ret_val = UPLL_RC_SUCCESS; switch (index) { case uudst::vtep_groupmember::kDbiVtnName: ret_val = ValidateKey(reinterpret_cast - (vtep_grp_mem_key->vtepgrp_key.vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + (vtep_grp_mem_key->vtepgrp_key.vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; @@ -81,8 +81,8 @@ bool VtepGrpMemMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vtep_groupmember::kDbiVtepgrpName: ret_val = ValidateKey(reinterpret_cast - (vtep_grp_mem_key->vtepgrp_key.vtepgrp_name), - kMinLenVnodeName, kMaxLenVnodeName); + (vtep_grp_mem_key->vtepgrp_key.vtepgrp_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VtepGroup Name is not valid(%d)", ret_val); return false; @@ -90,8 +90,8 @@ bool VtepGrpMemMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vtep_groupmember::kDbiVtepgrpMemberName: ret_val = ValidateKey(reinterpret_cast - (vtep_grp_mem_key->vtepmember_name), - kMinLenVnodeName, kMaxLenVnodeName); + (vtep_grp_mem_key->vtepmember_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VtepGroup Name is not valid(%d)", ret_val); return false; @@ -105,12 +105,12 @@ bool VtepGrpMemMoMgr::IsValidKey(void *key, uint64_t index) { } upll_rc_t VtepGrpMemMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { + ConfigKeyVal *parent_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; void *pkey; key_vtep_grp_member *vtep_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_grp_member))); + (ConfigKeyVal::Malloc(sizeof(key_vtep_grp_member))); if (vtep_key == NULL) return UPLL_RC_ERR_GENERIC; if (parent_key == NULL) { okey = new ConfigKeyVal(UNC_KT_VTEP_GRP_MEMBER, @@ -140,46 +140,49 @@ upll_rc_t VtepGrpMemMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (parent_key->get_key_type()) { case UNC_KT_VTEP_GRP_MEMBER: uuu::upll_strncpy(vtep_key->vtepmember_name, - reinterpret_cast(pkey)->vtepmember_name, - (kMaxLenVnodeName+1)); + reinterpret_cast + (pkey)->vtepmember_name, + (kMaxLenVnodeName+1)); /* fall through intended */ case UNC_KT_VTEP_GRP: uuu::upll_strncpy(vtep_key->vtepgrp_key.vtepgrp_name, - reinterpret_cast(pkey)->vtepgrp_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)->vtepgrp_name, + (kMaxLenVnodeName+1)); uuu::upll_strncpy(vtep_key->vtepgrp_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VTN: default: uuu::upll_strncpy(vtep_key->vtepgrp_key.vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); } SET_USER_DATA(okey, parent_key); return result_code; } upll_rc_t VtepGrpMemMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey ) { + ConfigKeyVal *ikey ) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtep_grp_member *pkey = (ikey)? - static_cast(ikey->get_key()):NULL; + static_cast(ikey->get_key()):NULL; if (!pkey) return UPLL_RC_ERR_GENERIC; if (ikey->get_key_type() != UNC_KT_VTEP_GRP_MEMBER) return UPLL_RC_ERR_GENERIC; key_vtep_grp *vtepgrp_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); + (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); uuu::upll_strncpy(vtepgrp_key->vtn_key.vtn_name, - reinterpret_cast(pkey)-> - vtepgrp_key.vtn_key.vtn_name, (kMaxLenVtnName+1)); + reinterpret_cast(pkey)-> + vtepgrp_key.vtn_key.vtn_name, (kMaxLenVtnName+1)); uuu::upll_strncpy(vtepgrp_key->vtepgrp_name, - reinterpret_cast(pkey)-> - vtepgrp_key.vtepgrp_name, (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)-> + vtepgrp_key.vtepgrp_name, (kMaxLenVnodeName+1)); DELETE_IF_NOT_NULL(okey); okey = new ConfigKeyVal(UNC_KT_VTEP_GRP, IpctSt::kIpcStKeyVtepGrp, - vtepgrp_key, NULL); + vtepgrp_key, NULL); if (okey == NULL) { free(vtepgrp_key); result_code = UPLL_RC_ERR_GENERIC; @@ -191,7 +194,8 @@ upll_rc_t VtepGrpMemMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, upll_rc_t VtepGrpMemMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; @@ -213,7 +217,8 @@ upll_rc_t VtepGrpMemMoMgr::AllocVal(ConfigVal *&ck_val, } upll_rc_t VtepGrpMemMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { + ConfigKeyVal *&req, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) return UPLL_RC_ERR_GENERIC; if (okey != NULL) return UPLL_RC_ERR_GENERIC; @@ -223,7 +228,7 @@ upll_rc_t VtepGrpMemMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tmp) { if (tbl == MAINTBL) { val_vtep_grp_member *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); val_vtep_grp_member *vtep_val = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_vtep_grp_member))); if (!vtep_val) return UPLL_RC_ERR_GENERIC; @@ -238,7 +243,7 @@ upll_rc_t VtepGrpMemMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, void *tkey = (req != NULL)?(req)->get_key():NULL; key_vtep_grp_member *ikey = reinterpret_cast(tkey); key_vtep_grp_member *vtep_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_grp_member))); + (ConfigKeyVal::Malloc(sizeof(key_vtep_grp_member))); if (!vtep_key) { if (tmp1) delete tmp1; return UPLL_RC_ERR_GENERIC; @@ -266,20 +271,20 @@ upll_rc_t VtepGrpMemMoMgr::UpdateConfigStatus(ConfigKeyVal *vtepgrpmem_key, UPLL_FUNC_TRACE; val_vtep_grp_member *vtep_grp_member_val; unc_keytype_configstatus_t cs_status = - (driver_result == UPLL_RC_SUCCESS)?UNC_CS_APPLIED - :UNC_CS_NOT_APPLIED; + (driver_result == UPLL_RC_SUCCESS)?UNC_CS_APPLIED + :UNC_CS_NOT_APPLIED; vtep_grp_member_val = reinterpret_cast - (GetVal(vtepgrpmem_key)); + (GetVal(vtepgrpmem_key)); if (vtep_grp_member_val == NULL) return UPLL_RC_ERR_GENERIC; if (op == UNC_OP_CREATE) { vtep_grp_member_val->cs_row_status = cs_status; } else if (op == UNC_OP_UPDATE) { - val_vtep_grp_member *grp_mem_val_run = - reinterpret_cast - (GetVal(upd_key)); - UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); - vtep_grp_member_val->cs_row_status = - grp_mem_val_run->cs_row_status; + val_vtep_grp_member *grp_mem_val_run = + reinterpret_cast + (GetVal(upd_key)); + UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); + vtep_grp_member_val->cs_row_status = + grp_mem_val_run->cs_row_status; } return UPLL_RC_SUCCESS; } @@ -287,25 +292,26 @@ upll_rc_t VtepGrpMemMoMgr::UpdateConfigStatus(ConfigKeyVal *vtepgrpmem_key, upll_rc_t VtepGrpMemMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; val_vtep_grp_member_t *vtepgrpmem_val = (ckv_running != NULL)? - reinterpret_cast - (GetVal(ckv_running)):NULL; + reinterpret_cast + (GetVal(ckv_running)):NULL; if (NULL == vtepgrpmem_val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) vtepgrpmem_val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (vtepgrpmem_val->cs_row_status == UNC_CS_INVALID || - vtepgrpmem_val->cs_row_status == UNC_CS_NOT_APPLIED)) + (vtepgrpmem_val->cs_row_status == UNC_CS_INVALID || + vtepgrpmem_val->cs_row_status == UNC_CS_NOT_APPLIED)) vtepgrpmem_val->cs_row_status = cs_status; return UPLL_RC_SUCCESS; } upll_rc_t VtepGrpMemMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; if (!ikey || !req || !(ikey->get_key())) { @@ -324,13 +330,13 @@ upll_rc_t VtepGrpMemMoMgr::ValidateMessage(IpcReqRespHeader *req, if (ikey->get_st_num() != IpctSt::kIpcStKeyVtepGrpMember) { UPLL_LOG_DEBUG("Invalid structure received.Expected struct-" - "kIpcStKeyVtepGrpMember, received struct -%s ", - reinterpret_cast - (IpctSt::GetIpcStdef(ikey->get_st_num()))); + "kIpcStKeyVtepGrpMember, received struct -%s ", + reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vtep_grp_member_t *key_vtep_grp_member = - reinterpret_cast (ikey->get_key()); + reinterpret_cast (ikey->get_key()); ret_val = ValidateVTepGrpMemberKey(key_vtep_grp_member, operation); if (ret_val != UPLL_RC_SUCCESS) { @@ -339,31 +345,31 @@ upll_rc_t VtepGrpMemMoMgr::ValidateMessage(IpcReqRespHeader *req, } else { if (((operation == UNC_OP_CREATE) || (operation == UNC_OP_UPDATE) || (operation == UNC_OP_DELETE)) && - (dt_type == UPLL_DT_CANDIDATE)) { + (dt_type == UPLL_DT_CANDIDATE)) { UPLL_LOG_TRACE("Value structure validation is none"); return UPLL_RC_SUCCESS; } else if (((operation == UNC_OP_READ) || - (operation == UNC_OP_READ_SIBLING) || - (operation == UNC_OP_READ_SIBLING_BEGIN) || - (operation == UNC_OP_READ_SIBLING_COUNT) || - (operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) - && ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP) || - (dt_type == UPLL_DT_STATE))) { + (operation == UNC_OP_READ_SIBLING) || + (operation == UNC_OP_READ_SIBLING_BEGIN) || + (operation == UNC_OP_READ_SIBLING_COUNT) || + (operation == UNC_OP_READ_NEXT) || + (operation == UNC_OP_READ_BULK)) + && ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { - UPLL_LOG_TRACE("Value structure validation is none"); - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_DEBUG("option2 is not matching"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - } else { - UPLL_LOG_DEBUG("option1 is not matching"); - return UPLL_RC_ERR_INVALID_OPTION1; - } + UPLL_LOG_TRACE("Value structure validation is none"); + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_DEBUG("option2 is not matching"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + } else { + UPLL_LOG_DEBUG("option1 is not matching"); + return UPLL_RC_ERR_INVALID_OPTION1; + } } else { UPLL_LOG_DEBUG("Invalid datatype(%d) and operation(%d)", dt_type, operation); @@ -374,17 +380,17 @@ upll_rc_t VtepGrpMemMoMgr::ValidateMessage(IpcReqRespHeader *req, } upll_rc_t VtepGrpMemMoMgr::ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; ConfigKeyVal *ck_vtep = NULL; upll_rc_t result_code = GetVtepConfigValData(kval, ck_vtep, - UPLL_DT_CANDIDATE, dmi); + UPLL_DT_CANDIDATE, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in fetching the Vtep data from DB %d", result_code); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_ERR_CFG_SEMANTIC:result_code; + UPLL_RC_ERR_CFG_SEMANTIC:result_code; } DELETE_IF_NOT_NULL(ck_vtep); return result_code; @@ -411,7 +417,7 @@ upll_rc_t VtepGrpMemMoMgr::ValidateCapability( if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -424,23 +430,16 @@ upll_rc_t VtepGrpMemMoMgr::ValidateCapability( uint32_t option2 = req->option2; UPLL_LOG_DEBUG("dt_type : (%d)" - "operation : (%d)" - "option1 : (%d)" - "option2 : (%d)", - dt_type, operation, option1, option2); + "operation : (%d)" + "option1 : (%d)" + "option2 : (%d)", + dt_type, operation, option1, option2); switch (operation) { case UNC_OP_CREATE: { result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } break; } case UNC_OP_UPDATE: { @@ -477,7 +476,8 @@ upll_rc_t VtepGrpMemMoMgr::ValidateVTepGrpMemberKey( UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey( - reinterpret_cast(key_vtep_grp_member->vtepgrp_key.vtn_key.vtn_name), + reinterpret_cast(key_vtep_grp_member-> + vtepgrp_key.vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Vtn Name syntax check failed." @@ -490,18 +490,18 @@ upll_rc_t VtepGrpMemMoMgr::ValidateVTepGrpMemberKey( kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("VtepGrpName syntax check failed." - "Received VtepGrpName -%s", - key_vtep_grp_member->vtepgrp_key.vtepgrp_name); + "Received VtepGrpName -%s", + key_vtep_grp_member->vtepgrp_key.vtepgrp_name); return UPLL_RC_ERR_CFG_SYNTAX; } if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { ret_val = ValidateKey(reinterpret_cast - (key_vtep_grp_member->vtepmember_name), - kMinLenVnodeName, kMaxLenVnodeName); + (key_vtep_grp_member->vtepmember_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Syntax check failed. vtepmember_name-%s", - key_vtep_grp_member->vtepmember_name); + key_vtep_grp_member->vtepmember_name); return ret_val; } } else { @@ -511,23 +511,24 @@ upll_rc_t VtepGrpMemMoMgr::ValidateVTepGrpMemberKey( return UPLL_RC_SUCCESS; } -upll_rc_t VtepGrpMemMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - controller_domain_t *ctrlr_dom, - DalDmlIntf *dmi) { +upll_rc_t VtepGrpMemMoMgr::GetControllerDomainId( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + controller_domain_t *ctrlr_dom, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *ck_vtep = NULL; upll_rc_t result_code = GetVtepConfigValData(ikey, ck_vtep, - UPLL_DT_CANDIDATE, dmi); + UPLL_DT_CANDIDATE, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in fetching the Vtep data from DB %d", result_code); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_ERR_CFG_SEMANTIC:result_code; + UPLL_RC_ERR_CFG_SEMANTIC:result_code; return result_code; } MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTEP))); + (GetMoManager(UNC_KT_VTEP))); if (!mgr) return UPLL_RC_ERR_GENERIC; result_code = mgr->GetControllerDomainId(ck_vtep, ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) @@ -545,8 +546,8 @@ upll_rc_t VtepGrpMemMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, } upll_rc_t VtepGrpMemMoMgr::CompareControllers(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { ConfigKeyVal *parent_grp_key = NULL; controller_domain *ctrlr_dom[2] = { NULL, NULL }; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -578,23 +579,23 @@ upll_rc_t VtepGrpMemMoMgr::CompareControllers(ConfigKeyVal *ikey, } upll_rc_t VtepGrpMemMoMgr::GetVtepConfigValData(ConfigKeyVal *ikey, - ConfigKeyVal *&okey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *&okey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTEP))); + (GetMoManager(UNC_KT_VTEP))); if (!mgr) return UPLL_RC_ERR_GENERIC; key_vtep *vtep_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep))); + (ConfigKeyVal::Malloc(sizeof(key_vtep))); if (!vtep_key) return UPLL_RC_ERR_GENERIC; uuu::upll_strncpy(vtep_key->vtep_name, - reinterpret_cast - (ikey->get_key())->vtepmember_name, (kMaxLenVnodeName+1)); + reinterpret_cast + (ikey->get_key())->vtepmember_name, (kMaxLenVnodeName+1)); uuu::upll_strncpy(vtep_key->vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vtepgrp_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (ikey->get_key())->vtepgrp_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); okey = new ConfigKeyVal(UNC_KT_VTEP, IpctSt::kIpcStKeyVtep, vtep_key, NULL); if (okey == NULL) { @@ -602,7 +603,7 @@ upll_rc_t VtepGrpMemMoMgr::GetVtepConfigValData(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } else { DbSubOp dbop = {kOpReadSingle, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -637,6 +638,6 @@ upll_rc_t VtepGrpMemMoMgr::GetVtepConfigValData(ConfigKeyVal *ikey, } */ -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vtepgrp_mem_momgr.hh b/coordinator/modules/upll/vtepgrp_mem_momgr.hh index d65c0f96..99b29f42 100644 --- a/coordinator/modules/upll/vtepgrp_mem_momgr.hh +++ b/coordinator/modules/upll/vtepgrp_mem_momgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,21 +28,21 @@ enum VtepGrpMemMoMgrTables { class VtepGrpMemMoMgr : public VnodeChildMoMgr { private: static BindInfo vtepgrp_mem_bind_info[]; -// static BindInfo key_vtepgrp_mem_maintbl_update_bind_info[]; + // static BindInfo key_vtepgrp_mem_maintbl_update_bind_info[]; /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration * - * @param[in] val pointer to the value structure + * @param[in] val pointer to the value structure * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - + * @param[out] valid position of the variable in the valid array - * NULL if valid does not exist. * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value + * @param[in] tbl specifies the table containing the given value * **/ upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { + upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { UPLL_FUNC_TRACE; valid = NULL; return UPLL_RC_SUCCESS; @@ -53,10 +53,12 @@ class VtepGrpMemMoMgr : public VnodeChildMoMgr { ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); - upll_rc_t UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + bool CompareValidValue(void *&val1, void *val2, bool audit) { return true; } @@ -70,58 +72,58 @@ class VtepGrpMemMoMgr : public VnodeChildMoMgr { DalDmlIntf *dmi, IpcReqRespHeader *req = NULL); /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); + ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); -/** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); -/** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); /** - * @Brief Get the VtepConfigKeyVal from VtepTbl + * @Brief Get the VtepConfigKeyVal from VtepTbl * * @param[in] ikey ikey contains key and value structure. * @param[in] okey okey contains key and value structure. @@ -133,8 +135,8 @@ class VtepGrpMemMoMgr : public VnodeChildMoMgr { * @retval UPLL_RC_ERR_GENERIC Generic failure. */ upll_rc_t GetVtepConfigValData(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); /** * @Brief Validates the syntax of the specified key and value structure * for KT_VTEP_GRP_MEMBER keytype @@ -180,18 +182,19 @@ class VtepGrpMemMoMgr : public VnodeChildMoMgr { */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); + const char * crtlr_name); upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - return UPLL_RC_SUCCESS; + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; } bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, - MoMgrTables tbl ) { + int &nattr, + MoMgrTables tbl ) { return true; } upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { return UPLL_RC_SUCCESS; } @@ -205,14 +208,14 @@ class VtepGrpMemMoMgr : public VnodeChildMoMgr { delete[] table; } /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ bool IsValidKey(void *tkey, uint64_t index); /** @@ -229,12 +232,12 @@ class VtepGrpMemMoMgr : public VnodeChildMoMgr { * @retval UPLL_RC_ERR_GENERIC Generic failure. */ upll_rc_t CompareControllers(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); }; -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc #endif diff --git a/coordinator/modules/upll/vtn_dataflow_momgr.cc b/coordinator/modules/upll/vtn_dataflow_momgr.cc new file mode 100644 index 00000000..d59cc7aa --- /dev/null +++ b/coordinator/modules/upll/vtn_dataflow_momgr.cc @@ -0,0 +1,1288 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#include "vbr_if_momgr.hh" +#include "vtn_momgr.hh" +#include "vnode_child_momgr.hh" +#include "ipc_client_handler.hh" + +#include "vtn_dataflow_momgr.hh" + +using unc::upll::ipc_util::IpcUtil; +using unc::upll::ipc_util::IpcClientHandler; + +namespace unc { +namespace upll { +namespace kt_momgr { + + +upll_rc_t VtnDataflowMoMgr::ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + if (!req || !ikey || !(ikey->get_key())) { + UPLL_LOG_INFO("ConfigKeyVal / IpcReqRespHeader is Null"); + return UPLL_RC_ERR_BAD_REQUEST; + } + if (req->operation != UNC_OP_READ) { + UPLL_LOG_INFO("Unsupported Operation for VTN Dataflow - %d", + req->operation); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } + if (req->datatype != UPLL_DT_STATE) { + UPLL_LOG_INFO("Unsupported datatype for VTN Dataflow - %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + if (req->option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_INFO("Invalid option1 for VTN Dataflow - %d", req->option1); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (req->option2 != UNC_OPT2_NONE) { + UPLL_LOG_INFO("Invalid option2 for VTN Dataflow - %d", req->option2); + return UPLL_RC_ERR_INVALID_OPTION2; + } + if (UNC_KT_VTN_DATAFLOW != ikey->get_key_type()) { + UPLL_LOG_INFO("Invalid KeyType in the request (%d)", + ikey->get_key_type()); + return UPLL_RC_ERR_BAD_REQUEST; + } + if (ikey->get_st_num() != IpctSt::kIpcStKeyVtnDataflow) { + UPLL_LOG_INFO("Invalid Key structure received. received struct - %d", + (ikey->get_st_num())); + return UPLL_RC_ERR_BAD_REQUEST; + } + if (ikey->get_cfg_val()) { + UPLL_LOG_INFO("Value structure is not NULL for VTN Dataflow"); + return UPLL_RC_ERR_BAD_REQUEST; + } + key_vtn_dataflow *vtn_df_key = reinterpret_cast + (ikey->get_key()); + return(ValidateVtnDataflowKey(vtn_df_key)); +} + +upll_rc_t VtnDataflowMoMgr::ValidateVtnDataflowKey( + key_vtn_dataflow *vtn_df_key) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + ret_val = ValidateKey(reinterpret_cast(vtn_df_key->vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("vtn name syntax check failed for Vtn Dataflow." + "Received vtn name - %s", + vtn_df_key->vtn_key.vtn_name); + return ret_val; + } + ret_val = ValidateKey(reinterpret_cast(vtn_df_key->vnode_id), + kMinLenVnodeName, kMaxLenVnodeName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("vnode name syntax check failed for Vtn Dataflow." + "Received vnode name - %s", + vtn_df_key->vnode_id); + return ret_val; + } + if ((vtn_df_key->vlanid != 0xFFFF) && + !ValidateNumericRange(vtn_df_key->vlanid, + kMinVlanId, kMaxVlanId, + true, true)) { + UPLL_LOG_INFO("Vlan Id Number check failed for Vtn Dataflow." + "Received vlan_id - %d", + vtn_df_key->vlanid); + return UPLL_RC_ERR_CFG_SYNTAX; + } + // TODO(rev): What kind of MAC validation need to be done for VTN Dataflow? + if (!ValidateMacAddr(vtn_df_key->src_mac_address)) { + UPLL_LOG_INFO("Mac Address validation failure for Vtn Dataflow." + " Received mac_address is - %s", + vtn_df_key->src_mac_address); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; +} + +upll_rc_t VtnDataflowMoMgr::ValidateControllerCapability( + const char *ctrlr_name, bool is_first_ctrlr, + unc_keytype_ctrtype_t *ctrlr_type) { + UPLL_FUNC_TRACE; + + if (!is_first_ctrlr) { + if (!uuc::CtrlrMgr::GetInstance()->GetCtrlrType( + ctrlr_name, UPLL_DT_RUNNING, ctrlr_type)) { + UPLL_LOG_INFO("GetCtrlrType failed for ctrlr %s", ctrlr_name); + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_TRACE("Controller type is %d", *ctrlr_type); + if (*ctrlr_type != UNC_CT_PFC) { + return UPLL_RC_SUCCESS; + } + } + + uint32_t max_attrs = 0; + const uint8_t *attrs = NULL; + if (!GetReadCapability(ctrlr_name, UNC_KT_VTN_DATAFLOW, + &max_attrs, &attrs, UPLL_DT_RUNNING)) { + UPLL_LOG_DEBUG("Read vtn_dataflow is not supported by controller %s", + ctrlr_name); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } + + return UPLL_RC_SUCCESS; +} + +upll_rc_t VtnDataflowMoMgr::FillCtrlrDomCountMap(uint8_t *vtn_name, + uint32_t &ctrlr_dom_count, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *tmp_ckv = NULL; + VtnMoMgr *vtnmgr = static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + result_code = vtnmgr->GetChildConfigKey(tmp_ckv, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("GetChildConfigKey failed result_code %d", result_code); + return result_code; + } + uuu::upll_strncpy(reinterpret_cast( + tmp_ckv->get_key())->vtn_name, + vtn_name, (kMaxLenVtnName + 1)); + result_code = vtnmgr->GetInstanceCount(tmp_ckv, NULL, + UPLL_DT_RUNNING, + &ctrlr_dom_count, + dmi, + CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + delete tmp_ckv; + return result_code; + } + delete tmp_ckv; + return result_code; +} + +upll_rc_t VtnDataflowMoMgr::ConvertVexternaltoVbr(const uint8_t *vtn_name, + uint8_t *vex_name, + uint8_t *vex_if_name, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + MoMgrImpl *vbrif_mgr = static_cast( + (const_cast + (GetMoManager(UNC_KT_VBR_IF)))); + if (!vbrif_mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ckv_if = NULL; + result_code = vbrif_mgr->GetChildConfigKey(ckv_if, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + key_vbr_if *if_key = reinterpret_cast(ckv_if->get_key()); + val_drv_vbr_if *if_val = reinterpret_cast + (ConfigKeyVal:: + Malloc(sizeof(val_drv_vbr_if))); + if_val->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + ckv_if->SetCfgVal(new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, if_val)); + uuu::upll_strncpy(if_key->vbr_key.vtn_key.vtn_name, vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(if_val->vex_name, vex_name, (kMaxLenVnodeName+1)); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + result_code = vbrif_mgr->ReadConfigDB(ckv_if, UPLL_DT_RUNNING, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + delete ckv_if; + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { + uuu::upll_strncpy(vex_name, if_key->vbr_key.vbridge_name, + (kMaxLenVnodeName+1)); + uuu::upll_strncpy(vex_if_name, if_key->if_name, (kMaxLenInterfaceName+1)); + } + delete ckv_if; + return UPLL_RC_SUCCESS; +} + +upll_rc_t VtnDataflowMoMgr::MapCtrlrNameToUncName( + const uint8_t *vtn_name, + val_vtn_dataflow_path_info *path_info, + uint8_t *ctrlr_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + ConfigKeyVal *ckv_vn = NULL; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!path_info) { + return UPLL_RC_ERR_GENERIC; + } + MoMgrImpl *vbr_mgr = static_cast( + (const_cast + (GetMoManager(UNC_KT_VBRIDGE)))); + result_code = vbr_mgr->GetChildConfigKey(ckv_vn, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + key_vbr_t *vbr_key = reinterpret_cast(ckv_vn->get_key()); + + uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, + vtn_name, (kMaxLenVtnName + 1)); + + for (int iter = 0 ; iter < 2 ; iter++) { + uint32_t indx = (iter == 0)?UPLL_IDX_IN_VNODE_VVDPI: + UPLL_IDX_OUT_VNODE_VVDPI; + uint32_t if_indx = (iter == 0)?UPLL_IDX_IN_VIF_VVDPI: + UPLL_IDX_OUT_VIF_VVDPI; + uint8_t *node_name =(iter == 0)?path_info->in_vnode:path_info->out_vnode; + uint8_t *node_if_name =(iter == 0)?path_info->in_vif:path_info->out_vif; + + if (path_info->valid[indx] == UNC_VF_INVALID || + path_info->valid[if_indx] == UNC_VF_INVALID) { + UPLL_LOG_DEBUG("Vnode or Vnode interface is invalid in path" + "info %d", iter); + continue; + } + uuu::upll_strncpy(vbr_key->vbridge_name, + node_name, (kMaxLenVnodeName + 1)); + result_code = vbr_mgr->GetRenamedUncKey(ckv_vn, UPLL_DT_RUNNING, dmi, + ctrlr_id); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + // search in vbr_if table by node name in vex + result_code = UPLL_RC_SUCCESS; + if (!path_info->vlink_flag && + path_info->valid[UPLL_IDX_VLINK_FLAG_VVDPI] == UNC_VF_VALID) { + /* + * Converting redirect vexternal to vbr and interface + */ + result_code = ConvertVexternaltoVbr(vtn_name, + node_name, + node_if_name, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ConvertVexternalToVbr Failed %d", result_code); + delete ckv_vn; + return result_code; + } + } + + } else if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetRenamedUncKey Failed %d", result_code); + delete ckv_vn; + return result_code; + } else { + if (path_info->valid[indx] == UNC_VF_VALID) { + uuu::upll_strncpy(node_name, vbr_key->vbridge_name, + (kMaxLenVnodeName + 1)); + } + } + } + delete ckv_vn; + return result_code; +} + +upll_rc_t VtnDataflowMoMgr::UpdatePathInfoInterfaces( + DataflowCmn *df_cmn, + const uint8_t *vtn_name, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + uint32_t path_info_count; + // NULL check for df_cmn/df_segment done in calling functino + if ((path_info_count = + df_cmn->df_segment->vtn_df_common->path_info_count) == 0) { + UPLL_LOG_TRACE("Path count is zero"); + return UPLL_RC_SUCCESS; + } + if (path_info_count != df_cmn->df_segment->vtn_path_infos.size()) { + UPLL_LOG_INFO("Path info size not consistent vtn_cmn path count = %d " + "and path_info size = %" PFC_PFMT_SIZE_T "", + path_info_count, df_cmn->df_segment->vtn_path_infos.size()); + return UPLL_RC_ERR_GENERIC; + } + if (!vtn_name) { + UPLL_LOG_INFO("Invalid vtn name \n"); + return UPLL_RC_ERR_GENERIC; + } + // Convert ingress and egress vex/vexif if vlink_flag is reset (redirected). + val_vtn_dataflow_path_info *path_info = + df_cmn->df_segment->vtn_path_infos[0]; + uint32_t node_indx = UPLL_IDX_IN_VNODE_VVDPI; + uint32_t nodeif_indx = UPLL_IDX_IN_VIF_VVDPI; + bool dynamic = false; + int iter = 0; + // convert/rename first and last path_info + while (path_info) { + dynamic = false; + UPLL_LOG_TRACE("ConvertVexternaltoVbr "); + UPLL_LOG_TRACE("node:%s", + DataflowCmn::get_string(*path_info).c_str()); + uint8_t *node_name =(iter == 0)?path_info->in_vnode:path_info->out_vnode; + uint8_t *node_if_name =(iter == 0)?path_info->in_vif:path_info->out_vif; + uint8_t *df_node_name =(iter == 0)? + df_cmn->df_segment->vtn_df_common->ingress_vnode: + df_cmn->df_segment->vtn_df_common->egress_vnode; + uint8_t *df_node_if_name =(iter == 0)? + df_cmn->df_segment->vtn_df_common->ingress_vinterface: + df_cmn->df_segment->vtn_df_common->egress_vinterface; + UPLL_LOG_TRACE("vlink flag and dynamic %d:%d", path_info->vlink_flag, + dynamic); + if ((path_info->valid[node_indx] == UNC_VF_VALID) && + (path_info->valid[nodeif_indx] == UNC_VF_VALID)) { + // if the vnode name has not been translated, it is a dynamic interface. + if (!strcmp(reinterpret_cast(df_node_name), + reinterpret_cast(node_name))) { + dynamic = true; + } + if (!dynamic && !path_info->vlink_flag) { + uuu::upll_strncpy(node_name, df_node_name, + (kMaxLenVnodeName+1)); + uuu::upll_strncpy(node_if_name, df_node_if_name, + (kMaxLenInterfaceName+1)); + } else { + if ((!iter) || + ((df_cmn->df_segment->vtn_df_common-> + valid[UPLL_IDX_EGRESS_VNODE_VVDC] + == UNC_VF_VALID && df_cmn->df_segment->vtn_df_common-> + valid[UPLL_IDX_EGRESS_VINTERFACE_VVDC] == UNC_VF_VALID))) { + path_info->valid[node_indx] = UNC_VF_INVALID; + path_info->valid[nodeif_indx] = UNC_VF_INVALID; + } + } + } + if ((node_indx == UPLL_IDX_OUT_VNODE_VVDPI) || + (path_info_count == 1)) { + path_info = NULL; + } else { + node_indx = UPLL_IDX_OUT_VNODE_VVDPI; + nodeif_indx = UPLL_IDX_OUT_VIF_VVDPI; + path_info = df_cmn->df_segment->vtn_path_infos[path_info_count - 1]; + } + iter++; + } + + // rename intermediate nodes (they can be vexternal too) + for (unsigned int iter = 1; + iter < (df_cmn->df_segment->vtn_path_infos.size()-1); iter++) { + path_info = df_cmn->df_segment->vtn_path_infos[iter]; + result_code = MapCtrlrNameToUncName( + vtn_name, + path_info, + df_cmn->df_segment->vtn_df_common->controller_id, + dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("MapCtrlrNameToUncName failed %d", result_code); + return result_code; + } + } + return UPLL_RC_SUCCESS; +} + + +upll_rc_t VtnDataflowMoMgr::MapVexternalToVbridge( + const ConfigKeyVal *ckv_df, + DataflowCmn *df_cmn, + bool *is_vnode_match, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + const key_vtn_dataflow_t *vtn_df_key = reinterpret_cast + + (ckv_df->get_key()); + if (!vtn_df_key || !df_cmn) { + UPLL_LOG_DEBUG("Input key is NULL"); + return UPLL_RC_ERR_GENERIC; + } + controller_domain ctrlr_dom = {NULL, NULL}; + GET_USER_DATA_CTRLR_DOMAIN(ckv_df, ctrlr_dom); + UPLL_LOG_TRACE("In and Out Domain %s", ctrlr_dom.domain); + upll_rc_t result_code = UPLL_RC_SUCCESS; + VbrIfMoMgr *vbrif_mgr = static_cast( + (const_cast + (GetMoManager(UNC_KT_VBR_IF)))); + if (!vbrif_mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + if (df_cmn->df_segment->flow_traversed == 0) { + if (ctrlr_dom.domain && + strlen(reinterpret_cast(ctrlr_dom.domain))) { + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common->ingress_domain, + ctrlr_dom.domain, kMaxLenDomainId+1); + df_cmn->df_segment->vtn_df_common->valid[UPLL_IDX_INGRESS_DOMAIN_VVDC] = + UNC_VF_VALID; + if (df_cmn->df_segment->vtn_df_common-> + valid[UPLL_IDX_EGRESS_VINTERFACE_VVDC] + == UNC_VF_VALID) { + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common->egress_domain, + ctrlr_dom.domain, kMaxLenDomainId+1); + df_cmn->df_segment->vtn_df_common->valid[UPLL_IDX_EGRESS_DOMAIN_VVDC] = + UNC_VF_VALID; + } + } + const uint8_t *vtn_name = vtn_df_key->vtn_key.vtn_name; + UPLL_LOG_TRACE("node:%s", + DataflowCmn::get_string( + *df_cmn->df_segment->vtn_df_common).c_str()); + bool dynamic[2] = {false, false }; + ConfigKeyVal *ckv_vbrif[2] = {NULL, NULL}; + // Do the loop twice, once for ingress and once for egress + for (int iter = 0; iter < 2 ; ++iter) { + uint8_t *vnode = NULL, *vnode_if = NULL; + uint8_t valid[2]; + key_vbr_if_t *key_vbrif; + if (iter == 0) { + valid[0] = + df_cmn->df_segment->vtn_df_common-> + valid[UPLL_IDX_INGRESS_VNODE_VVDC]; + valid[1] = df_cmn->df_segment-> + vtn_df_common->valid[UPLL_IDX_INGRESS_VINTERFACE_VVDC]; + vnode = df_cmn->df_segment->vtn_df_common->ingress_vnode; + vnode_if = df_cmn->df_segment->vtn_df_common->ingress_vinterface; + } else { + valid[0] = + df_cmn->df_segment->vtn_df_common-> + valid[UPLL_IDX_EGRESS_VNODE_VVDC]; + valid[1] = df_cmn->df_segment-> + vtn_df_common->valid[UPLL_IDX_EGRESS_VINTERFACE_VVDC]; + vnode = df_cmn->df_segment->vtn_df_common->egress_vnode; + vnode_if = df_cmn->df_segment->vtn_df_common->egress_vinterface; + } + if (valid[0] != UNC_VF_VALID && valid[1] != UNC_VF_VALID) { + UPLL_LOG_INFO("Ingress/Egress vNode/vInterface is not valid"); + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + break; + } else { + result_code = vbrif_mgr->GetChildConfigKey(ckv_vbrif[iter], NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + key_vbrif = static_cast(ckv_vbrif[iter]->get_key()); + val_drv_vbr_if_t *drv_val_vbrif = static_cast + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if_t))); + ckv_vbrif[iter]->SetCfgVal( + new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, drv_val_vbrif)); + uuu::upll_strncpy(key_vbrif->vbr_key.vtn_key.vtn_name, + vtn_df_key->vtn_key.vtn_name, (kMaxLenVtnName + 1)); + uuu::upll_strncpy(drv_val_vbrif->vex_name, + vnode, (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(drv_val_vbrif->vex_if_name, + vnode_if, (kMaxLenInterfaceName + 1)); + drv_val_vbrif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; + drv_val_vbrif->valid[PFCDRV_IDX_VEXT_IF_NAME_VBRIF] = UNC_VF_VALID; + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | + kOpInOutDomain }; + result_code = vbrif_mgr->ReadConfigDB(ckv_vbrif[iter], UPLL_DT_RUNNING, + UNC_OP_READ, dbop, dmi, MAINTBL); + } + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("Dynamic interface result_code" + " %d", result_code); + dynamic[iter] = true; + result_code = UPLL_RC_SUCCESS; + } else if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("vbrif ReadConfigDB Failed err code - %d", + result_code); + DELETE_IF_NOT_NULL(ckv_vbrif[0]); + DELETE_IF_NOT_NULL(ckv_vbrif[1]); + return result_code; + } else { + key_vbrif = reinterpret_cast + (ckv_vbrif[iter]->get_key()); + uuu::upll_strncpy(vnode, key_vbrif->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(vnode_if, key_vbrif->if_name, + (kMaxLenInterfaceName + 1)); + } + if (iter == 1) + df_cmn->df_segment->ckv_egress = ckv_vbrif[iter]; + } + upll_rc_t upd_path_result_code = UpdatePathInfoInterfaces(df_cmn, + vtn_name, + dmi); + if (UPLL_RC_SUCCESS != upd_path_result_code) { + UPLL_LOG_TRACE("UpdatePathInfoInterface Failed %d", result_code); + DELETE_IF_NOT_NULL(ckv_vbrif[0]); + DELETE_IF_NOT_NULL(ckv_vbrif[1]); + result_code = upd_path_result_code; + } + if (dynamic[0]) { + UPLL_LOG_DEBUG("Ingress interface is dynamic"); + val_vtn_dataflow_path_info *path_info = + df_cmn->df_segment->vtn_path_infos[0]; + path_info->valid[UPLL_IDX_IN_VIF_VVDPI] = UNC_VF_INVALID; + path_info->valid[UPLL_IDX_OUT_VIF_VVDPI] = UNC_VF_INVALID; + df_cmn->df_segment->vtn_df_common-> + valid[UPLL_IDX_INGRESS_VINTERFACE_VVDC] + = UNC_VF_INVALID; + if (UNC_VF_VALID == path_info->valid[UPLL_IDX_OUT_VNODE_VVDPI]) { + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common->ingress_vnode, + path_info->out_vnode, kMaxLenVnodeName+1); + } + } + if (dynamic[1]) { + UPLL_LOG_DEBUG("Egress interface is dynamic"); + val_vtn_dataflow_path_info *last_path_info = + (df_cmn->df_segment->vtn_path_infos).back(); + last_path_info->valid[UPLL_IDX_IN_VIF_VVDPI] = UNC_VF_INVALID; + last_path_info->valid[UPLL_IDX_OUT_VIF_VVDPI] = UNC_VF_INVALID; + df_cmn->df_segment->vtn_df_common->valid[UPLL_IDX_EGRESS_VINTERFACE_VVDC] + = UNC_VF_INVALID; + if (UNC_VF_VALID == last_path_info->valid[UPLL_IDX_IN_VNODE_VVDPI]) { + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common->egress_vnode, + last_path_info->in_vnode, kMaxLenVnodeName+1); + } + } + DELETE_IF_NOT_NULL(ckv_vbrif[0]); + df_cmn->df_segment->flow_traversed++; + } + key_vtn_dataflow *key_df = reinterpret_cast + (ckv_df->get_key()); + *is_vnode_match = (0 == + strcmp(reinterpret_cast + (df_cmn->df_segment->vtn_df_common->ingress_vnode), + reinterpret_cast(key_df->vnode_id))); + // If the given dataflow ingress vnode does not match the given vnode, + // // we need to filter the dataflow. + UPLL_LOG_TRACE(" The Status of is_vnode_match %d", *is_vnode_match); + if (!(*is_vnode_match)) { + return UPLL_RC_SUCCESS; + } + return result_code; +} + +upll_rc_t VtnDataflowMoMgr::PopulateVnpOrVbypassBoundaryInfo( + ConfigKeyVal *&ckv_inif, + ConfigKeyVal *&ckv_egress, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + MoMgrImpl *mgr = reinterpret_cast( + const_cast(GetMoManager(ckv_inif->get_key_type()))); + if (!mgr) { + UPLL_LOG_INFO("Invalid mgr param"); + return UPLL_RC_ERR_GENERIC; + } + result_code = mgr->GetChildConfigKey(ckv_egress, ckv_inif); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Error in retrieving the Child ConfigKeyVal"); + return result_code; + } + uint8_t *ifname = reinterpret_cast + (ckv_egress->get_key())->vnode_if_name; + memset(ifname, 0, kMaxLenInterfaceName); + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr | + kOpInOutDomain | kOpInOutFlag}; + /* Get the list interfaces for given parent keytype */ + result_code = mgr->ReadConfigDB(ckv_egress, UPLL_DT_RUNNING, UNC_OP_READ, + dbop, dmi, MAINTBL); + /* Any other DB error */ + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_INFO("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(ckv_egress); + return result_code; + } + return result_code; +} + + +upll_rc_t +VtnDataflowMoMgr::ReadMo(IpcReqRespHeader *header, + ConfigKeyVal *ckv_in, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + DataflowUtil df_util; + upll_rc_t result_code = UPLL_RC_SUCCESS; + result_code = ValidateMessage(header, ckv_in); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("ValidateMessage failed result_code %d", + result_code); + return result_code; + } + pfc::core::ipc::ServerSession *sess = reinterpret_cast + (ckv_in->get_user_data()); + if (!sess) { + UPLL_LOG_INFO("Empty session"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ckv_req = NULL; + result_code = GetChildConfigKey(ckv_req, ckv_in); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("GetChildConfigKey failed result_code %d", + result_code); + return result_code; + } + key_vtn_dataflow_t *vtn_df_key = reinterpret_cast + (ckv_req->get_key()); + ConfigKeyVal *ckv_vbr = NULL; + VnodeMoMgr *vnmgr = static_cast( + (const_cast(GetMoManager(UNC_KT_VBRIDGE)))); + result_code = vnmgr->GetChildConfigKey(ckv_vbr, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("GetChildConfigKey failed result_code %d", result_code); + delete ckv_req; + return result_code; + } + key_vbr *vbr_key = reinterpret_cast(ckv_vbr->get_key()); + uuu::upll_strncpy(vbr_key->vtn_key.vtn_name, + vtn_df_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); + uuu::upll_strncpy(vbr_key->vbridge_name, vtn_df_key->vnode_id, + (kMaxLenVnodeName+1)); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutCtrlr + |kOpInOutDomain|kOpInOutFlag }; + /* Get the controller domain using this read operation */ + result_code = vnmgr->ReadConfigDB(ckv_vbr, UPLL_DT_RUNNING, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_INFO("ReadConfigDB failed %d", result_code); + delete ckv_vbr; + delete ckv_req; + return result_code; + } + /* Set the controller and domain name in ckv*/ + SET_USER_DATA(ckv_req, ckv_vbr); + delete ckv_vbr; + unc_keytype_ctrtype_t ctrlr_type = UNC_CT_UNKNOWN; + uint8_t *ctrlr_id = NULL; + GET_USER_DATA_CTRLR(ckv_req, ctrlr_id); + result_code = ValidateControllerCapability((const char *)(ctrlr_id), true, + &ctrlr_type); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("ValidateControllerCapability failed result_code %d", + result_code); + delete ckv_req; + return result_code; + } + uint32_t ctrlr_dom_count = 0; + result_code = FillCtrlrDomCountMap(vtn_df_key->vtn_key.vtn_name, + ctrlr_dom_count, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Unable to get max controller domain count\n"); + delete ckv_req; + return result_code; + } + df_util.ctrlr_dom_count_map["nvtnctrlrdom"] = ctrlr_dom_count; + result_code = TraversePFCController(ckv_req, header, NULL, NULL, + &df_util, dmi, true); + delete ckv_req; + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("TraversePFCController failed %d", result_code); + return result_code; + } else { + if (!IpcUtil::WriteKtResponse(sess, *header, ckv_in)) { + UPLL_LOG_INFO("Failed to send response to key tree request"); + return UPLL_RC_ERR_GENERIC; + } + df_util.sessOutDataflows(*sess); + } + return UPLL_RC_SUCCESS; +} + + +upll_rc_t +VtnDataflowMoMgr::TraversePFCController(ConfigKeyVal *ckv_df, + IpcReqRespHeader *header, + DataflowCmn *currentnode, + DataflowCmn *lastPfcNode, + DataflowUtil *df_util, + DalDmlIntf *dmi, + bool is_first_ctrlr) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_vtn_dataflow_t *vtn_df_key = reinterpret_cast + (ckv_df->get_key()); + if (!is_first_ctrlr) { + /** + * Reset the VlanID and Source Mac Address from the output matches + * in the key structure while + * retreiving flow segments + **/ + + map ::iterator output_matches_iter; + output_matches_iter = lastPfcNode->output_matches.find(UNC_MATCH_VLAN_ID); + if (output_matches_iter != lastPfcNode->output_matches.end()) { + val_df_flow_match_vlan_id_t *prev = + reinterpret_cast + ((*output_matches_iter).second); + vtn_df_key->vlanid = prev->vlan_id; + } + output_matches_iter = lastPfcNode->output_matches.find(UNC_MATCH_DL_SRC); + if (output_matches_iter != lastPfcNode->output_matches.end()) { + val_df_flow_match_dl_addr_t *prev = + reinterpret_cast + ((*output_matches_iter).second); + memcpy(vtn_df_key->src_mac_address, prev->dl_addr, + sizeof(vtn_df_key->src_mac_address)); + } + } + controller_domain ctrlr_dom = {NULL, NULL}; + GET_USER_DATA_CTRLR_DOMAIN(ckv_df, ctrlr_dom); + if (!ctrlr_dom.ctrlr || !ctrlr_dom.domain) { + UPLL_LOG_INFO("ctrlr_dom controller or domain is NULL"); + return UPLL_RC_ERR_GENERIC; + } + key_vtn_ctrlr_dataflow vtn_ctrlr_df_key(vtn_df_key, + ctrlr_dom.ctrlr, ctrlr_dom.domain); + vector pfc_flows; + std::map >::iterator iter = + df_util->upll_pfc_flows.begin(); + for (; iter != df_util->upll_pfc_flows.end(); iter ++) { + if (DataflowCmn::Compare((*iter).first, vtn_ctrlr_df_key)) { + UPLL_LOG_DEBUG("Maching the key"); + break; + } + } + if (iter == df_util->upll_pfc_flows.end()) { + ConfigKeyVal *ckv_dupdf = NULL; + result_code = GetChildConfigKey(ckv_dupdf, ckv_df); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_INFO("GetChildConfigKey failed"); + return result_code; + } + uint8_t rename_flag = 0; + GET_USER_DATA_FLAGS(ckv_df, rename_flag); + if (rename_flag & VTN_RENAME) { + ConfigKeyVal *ckv_vtn = NULL; + MoMgrImpl *vtn_mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VTN))); + if (!vtn_mgr) { + UPLL_LOG_INFO("Invalid Momgr"); + delete ckv_dupdf; + return UPLL_RC_ERR_GENERIC; + } + result_code = vtn_mgr->GetChildConfigKey(ckv_vtn, ckv_df); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_INFO("GetChildConfigKey failed"); + delete ckv_dupdf; + return result_code; + } + result_code = vtn_mgr->GetRenamedControllerKey(ckv_vtn, + UPLL_DT_RUNNING, + dmi, + &ctrlr_dom); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_INFO("GetRenamedControllerKey Failed %d", + result_code); + + delete ckv_vtn; + delete ckv_dupdf; + return result_code; + } + key_vtn_t *vtn_key = reinterpret_cast + (ckv_vtn->get_key()); + key_vtn_dataflow *dup_dfkey = + reinterpret_cast(ckv_dupdf->get_key()); + uuu::upll_strncpy(dup_dfkey->vtn_key.vtn_name, + vtn_key->vtn_name, (kMaxLenVtnName+1)); + delete ckv_vtn; + } + IpcClientHandler ipc_client; + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); + ipc_req.ckv_data = ckv_dupdf; + IpcResponse *ipc_resp = &(ipc_client.ipc_resp); + if (!ipc_client.SendReqToDriver(reinterpret_cast + (ctrlr_dom.ctrlr), + (reinterpret_cast + (ctrlr_dom.domain)), + &ipc_req)) { + UPLL_LOG_INFO("SendReqToDriver failed"); + delete ckv_dupdf; + return ipc_resp->header.result_code; + } + if (ipc_resp->header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Read from driver failed err code %d", + ipc_resp->header.result_code); + delete ckv_dupdf; + return ipc_resp->header.result_code; + } + uint32_t arg = ipc_client.arg; + UPLL_LOG_TRACE(" The Argument is %d", arg); + pfc::core::ipc::ClientSession *cl_sess = ipc_client.cl_sess; + uint32_t tot_flow_count = 0; + int err = 0; + if (0 != (err = cl_sess->getResponse(arg++, tot_flow_count))) { + UPLL_LOG_TRACE("Failed to get total flow count field #%u." + " Err=%d", arg, err); + if (is_first_ctrlr) { + UPLL_LOG_TRACE("Inside if (is_head_node) and returning"); + delete ckv_dupdf; + return UPLL_RC_ERR_GENERIC; + } else { + currentnode->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + UPLL_LOG_TRACE("Inside else and returning UNC_RC_SUCCESS"); + delete ckv_dupdf; + return UPLL_RC_SUCCESS; + } + } + UPLL_LOG_TRACE("Total flow count is %d", tot_flow_count); + for (uint32_t i = 0; i < tot_flow_count; i++) { + pfc_log_info("Reading flow %d from driver ", i); + DataflowDetail *df_segm = new DataflowDetail(kidx_val_vtn_dataflow_cmn); + df_segm->sessReadDataflow(*cl_sess, arg); + pfc_flows.push_back(df_segm); + } + df_util->upll_pfc_flows.insert(std::pair > + (vtn_ctrlr_df_key, pfc_flows)); + pfc_log_info("Got upll_pfc_flows from driver. flows.size=%" PFC_PFMT_SIZE_T + "", pfc_flows.size()); + delete ckv_dupdf; + } else { + pfc_flows = iter->second; + pfc_log_info("Got pfc_flows from map. flows.size=%" PFC_PFMT_SIZE_T "", + pfc_flows.size()); + } + for (uint32_t i = 0; i < pfc_flows.size(); i++) { + DataflowDetail *df_segm = pfc_flows[i]; + bool is_vnode_match = false; + DataflowCmn *df_cmn = new DataflowCmn(is_first_ctrlr, df_segm); + if (!is_first_ctrlr) { + bool match_result = df_cmn->check_match_condition + (lastPfcNode->output_matches); + if (!match_result) { + UPLL_LOG_DEBUG("2nd flow (id=%" PFC_PFMT_u64 + ") is not matching with 1st flow (id=%" PFC_PFMT_u64 + ") so ignoring", df_cmn->df_segment-> + vtn_df_common->flow_id, + currentnode->df_segment->vtn_df_common->flow_id); + delete df_cmn; + continue; + } + } + result_code = MapVexternalToVbridge(ckv_df, + df_cmn, &is_vnode_match, dmi); + if (result_code == UPLL_RC_SUCCESS && !is_vnode_match) { + UPLL_LOG_INFO("Ingress vnode does not match with filter vnode"); + delete df_cmn; + continue; + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("Either ingress/Egress is a dynamic interface"); + UpdateReason(df_cmn, result_code); + } else if (UPLL_RC_SUCCESS != result_code) { + delete df_cmn; + return result_code; + } + if (is_first_ctrlr) { + df_cmn->apply_action(); + uint32_t ret = df_util->appendFlow(df_cmn); + if (ret != 0) { + delete df_cmn; + UPLL_LOG_INFO("appendFlow failed"); + return UPLL_RC_ERR_GENERIC; + } + } else { + UPLL_LOG_DEBUG("2nd flow (id=%" PFC_PFMT_u64 + ") is matching with 1st flow (id=%" PFC_PFMT_u64 ")", + df_cmn->df_segment->vtn_df_common->flow_id, + currentnode->df_segment->vtn_df_common->flow_id); + df_cmn->apply_action(); + currentnode->appendFlow(df_cmn, *(df_util->get_ctrlr_dom_count_map())); + if (currentnode->addl_data->reason == UNC_DF_RES_EXCEEDS_HOP_LIMIT) { + UPLL_LOG_DEBUG("flow reached max hop limit"); + delete df_cmn; + continue; + } + } + } + vector* firstCtrlrFlows = df_util->get_firstCtrlrFlows(); + if (is_first_ctrlr) { + if (firstCtrlrFlows->size() == 0) { + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + } else { + if (currentnode->next.size() == 0 && currentnode->addl_data->reason == + UNC_DF_RES_SUCCESS) { // Preserving old reason + if (currentnode->df_segment->vtn_df_common->controller_type == + UNC_CT_PFC) { + // if parentnode is PFC type + currentnode->addl_data->reason = UNC_DF_RES_FLOW_NOT_FOUND; + } else { + currentnode->addl_data->reason = UNC_DF_RES_DST_NOT_REACHED; + } + return UPLL_RC_SUCCESS; + } + } + if (is_first_ctrlr) { + vector::iterator iter_flow = firstCtrlrFlows->begin(); + while (iter_flow != firstCtrlrFlows->end()) { + // Checking the particular flow is traversed + DataflowCmn *traverse_flow_cmn = + reinterpret_cast(*iter_flow); + UPLL_LOG_TRACE("node:%s", + DataflowCmn::get_string( + *traverse_flow_cmn-> + df_segment->vtn_df_common).c_str()); + if (traverse_flow_cmn->addl_data->reason != + UNC_DF_RES_EXCEEDS_FLOW_LIMIT) { + result_code = CheckBoundaryAndTraverse(ckv_df, header, + traverse_flow_cmn, + traverse_flow_cmn, + df_util, + dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_TRACE("CheckBoundaryAndTraverse Failed %d\n", + result_code); + return result_code; + } + vector::iterator match_flow = iter_flow + 1; + unsigned int no_of_dataflow = 1; + while (match_flow != firstCtrlrFlows->end()) { + DataflowCmn *traverse_match_flow_cmn = + reinterpret_cast(*match_flow); + if ((traverse_flow_cmn->next.size() > 0) && + (traverse_match_flow_cmn->addl_data->reason != + UNC_DF_RES_EXCEEDS_FLOW_LIMIT)) { + UPLL_LOG_DEBUG("Inside first ctrlr, if traversed == false"); + if (traverse_match_flow_cmn-> + CompareVtnDataflow(traverse_flow_cmn) == true) { + no_of_dataflow++; + UPLL_LOG_DEBUG("CompareVtnDataflow returns true, no of df =" + "%d max_dataflow_traverse_count %d", + no_of_dataflow, upll_max_dataflow_traversal_); + if (no_of_dataflow > upll_max_dataflow_traversal_) { + UPLL_LOG_DEBUG("Setting flow limit to %p", + traverse_match_flow_cmn); + traverse_match_flow_cmn->addl_data->reason = + UNC_DF_RES_EXCEEDS_FLOW_LIMIT; + traverse_match_flow_cmn->addl_data->controller_count = 1; + } + } + } + match_flow++; + } + } + iter_flow++; + bypass_dom_set.clear(); + } + } else { + vector::iterator iter_flow = currentnode->next.begin(); + while (iter_flow != currentnode->next.end()) { + // Checking the particular flow is traversed + DataflowCmn *traverse_flow_cmn = + reinterpret_cast(*iter_flow); + UPLL_LOG_TRACE("node:%s", + DataflowCmn::get_string(*traverse_flow_cmn-> + df_segment-> + vtn_df_common).c_str()); + if (traverse_flow_cmn->addl_data->reason != + UNC_DF_RES_EXCEEDS_FLOW_LIMIT) { + result_code = CheckBoundaryAndTraverse(ckv_df, + header, + *iter_flow, + *iter_flow, + df_util, + dmi); + UPLL_LOG_TRACE("CheckBoundaryAndTraverse nohead returned %d\n", + result_code); + vector::iterator match_flow = iter_flow + 1; + unsigned int no_of_dataflow = 1; + while (match_flow != currentnode->next.end()) { + DataflowCmn *traverse_match_flow_cmn = + reinterpret_cast(*match_flow); + if ((traverse_flow_cmn->next.size() > 0) && + (traverse_match_flow_cmn->addl_data->reason != + UNC_DF_RES_EXCEEDS_FLOW_LIMIT)) { + UPLL_LOG_DEBUG("Inside if traversed = false if headnode\n"); + if (traverse_match_flow_cmn->CompareVtnDataflow(traverse_flow_cmn) + == true) { + no_of_dataflow++; + UPLL_LOG_DEBUG("CompareVtndataflow returns true, node max_df " + "%d:%d\n", + no_of_dataflow, + upll_max_dataflow_traversal_); + if (no_of_dataflow > upll_max_dataflow_traversal_) { + traverse_match_flow_cmn->addl_data->reason = + UNC_DF_RES_EXCEEDS_FLOW_LIMIT; + } + } + } + match_flow++; + } + } + iter_flow++; + } + } + return UPLL_RC_SUCCESS; +} + +upll_rc_t VtnDataflowMoMgr::UpdateReason(DataflowCmn *source_node, + upll_rc_t result_code) { + UPLL_FUNC_TRACE; + if (result_code != UPLL_RC_SUCCESS) { + switch (result_code) { + case UPLL_RC_ERR_NO_SUCH_INSTANCE: + if (source_node->df_segment->vtn_df_common->controller_type == + UNC_CT_PFC) + source_node->addl_data->reason = UNC_DF_RES_FLOW_NOT_FOUND; + else + source_node->addl_data->reason = UNC_DF_RES_DST_NOT_REACHED; + break; + case UPLL_RC_ERR_RESOURCE_DISCONNECTED: + case UPLL_RC_ERR_CTR_DISCONNECTED: + source_node->addl_data->reason = UNC_DF_RES_CTRLR_DISCONNECTED; + break; + case UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR: + source_node->addl_data->reason = UNC_DF_RES_OPERATION_NOT_SUPPORTED; + break; + default: + source_node->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + } + } + return result_code; +} + +upll_rc_t +VtnDataflowMoMgr::CheckBoundaryAndTraverse(ConfigKeyVal *ckv_df, + IpcReqRespHeader *header, + DataflowCmn *source_node, + DataflowCmn *lastPfcNode, + DataflowUtil *df_util, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckv_remif = NULL; + if_type vnif_type; + if (!source_node || !lastPfcNode) { + UPLL_LOG_DEBUG("DataflowCmn is Null"); + return UPLL_RC_ERR_GENERIC; + } + key_vtn_dataflow *vtn_df_key = reinterpret_cast + (ckv_df->get_key()); + ConfigKeyVal *ckv_ingress = + reinterpret_cast(source_node->df_segment->ckv_egress); + if (!ckv_ingress) { + // source_node->addl_data->reason = UNC_DF_RES_SUCCESS; + UPLL_LOG_DEBUG("Egress interface not specified"); + return UPLL_RC_SUCCESS; + } + VnodeChildMoMgr *vnif_mgr = reinterpret_cast( + const_cast(GetMoManager(ckv_ingress->get_key_type()))); + if (!vnif_mgr) { + UPLL_LOG_ERROR("Invalid mgr\n"); + return UPLL_RC_ERR_GENERIC; + } + result_code = vnif_mgr->GetInterfaceType(ckv_ingress, + UNC_VF_INVALID, vnif_type); + if (result_code != UPLL_RC_SUCCESS) { + return result_code; + } + if (vnif_type == kBoundaryInterface) { + VlinkMoMgr *vlink_mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VLINK))); + if (!vlink_mgr) { + UPLL_LOG_ERROR("Invalid mgr\n"); + return UPLL_RC_ERR_GENERIC; + } + result_code = vlink_mgr->GetRemoteIf(ckv_ingress, ckv_remif, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UpdateReason(source_node, UPLL_RC_ERR_GENERIC); + DELETE_IF_NOT_NULL(ckv_remif); + return UPLL_RC_SUCCESS; + } + } else { + source_node->addl_data->reason = UNC_DF_RES_SUCCESS; + UPLL_LOG_DEBUG("Egress interface is not boundary mapped"); + return UPLL_RC_SUCCESS; + } + + uint8_t *ctrlr_id = NULL; + unc_keytype_ctrtype_t ctrlr_type = UNC_CT_UNKNOWN; + GET_USER_DATA_CTRLR(ckv_remif, ctrlr_id); + if (UNC_KT_VUNK_IF != ckv_remif->get_key_type()) { + result_code = ValidateControllerCapability((const char *)(ctrlr_id), + false, &ctrlr_type); + if (result_code != UPLL_RC_SUCCESS) { + UpdateReason(source_node, result_code); + delete ckv_remif; + return UPLL_RC_SUCCESS; + } + } + if (ctrlr_type == UNC_CT_PFC) { + uuu::upll_strncpy(vtn_df_key->vnode_id, + reinterpret_cast(ckv_remif->get_key())-> + vbr_key.vbridge_name, (kMaxLenVnodeName + 1)); + SET_USER_DATA(ckv_df, ckv_remif); + delete ckv_remif; + result_code = TraversePFCController(ckv_df, header, source_node, + lastPfcNode, df_util, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UpdateReason(source_node, result_code); + return UPLL_RC_SUCCESS; + } + } else { + // Get the egress interfaces of the boundary(ies) + // leading out of the vnp/vbypass domain + // into the next neighboring controller domain. + // (Karthi) The Lisf of vnp/vbypass boundary information + // available in the ckv_egress. + // the Ingress for the PFC to VNP/Vbypass availbe in + // ckv_remif first iteration. + ConfigKeyVal *ckv_egress = NULL; + bool found_inif = false; + if_type vnif_type = kUnboundInterface; + result_code = PopulateVnpOrVbypassBoundaryInfo(ckv_remif, + ckv_egress, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Retrieval of boundary info failed\n %d\n", result_code); + UpdateReason(source_node, UPLL_RC_ERR_GENERIC); + return UPLL_RC_SUCCESS; + } + ConfigKeyVal *nxt_ckv = NULL; + uint8_t *bypass_domain[2] = {NULL, NULL}; + std::pair::iterator, bool> ret; + GET_USER_DATA_DOMAIN(ckv_remif, bypass_domain[0]); + ConfigKeyVal *ckv_tmp_nxt_ckv = NULL; + nxt_ckv = ckv_egress; + while (nxt_ckv) { + ckv_tmp_nxt_ckv = nxt_ckv->get_next_cfg_key_val(); + nxt_ckv->set_next_cfg_key_val(NULL); + if (!found_inif && !strncmp(reinterpret_cast + (reinterpret_cast + (ckv_remif->get_key())->vnode_if_name), + reinterpret_cast + (reinterpret_cast + (nxt_ckv->get_key())->vnode_if_name), + kMaxLenInterfaceName + 1)) { + found_inif = true; + delete nxt_ckv; + nxt_ckv = ckv_tmp_nxt_ckv; + continue; + } + GET_USER_DATA_DOMAIN(nxt_ckv, bypass_domain[1]); + if (ctrlr_type == UNC_CT_UNKNOWN) { + ret = bypass_dom_set.insert( + (string(reinterpret_cast(bypass_domain[1])))); + UPLL_LOG_DEBUG("bypass egress domain %s", bypass_domain[1]); + if (ret.second == false) { + UPLL_LOG_INFO("bypass egress domain in loop %s", bypass_domain[1]); + source_node->addl_data->reason = UNC_DF_RES_EXCEEDS_HOP_LIMIT; + delete nxt_ckv; + delete ckv_tmp_nxt_ckv; + break; + } + } + DataflowDetail *df_segment = + new DataflowDetail(kidx_val_vtn_dataflow_cmn, ctrlr_type); + DataflowCmn *df_cmn = new DataflowCmn(false, df_segment); + uuu::upll_strncpy( + df_cmn->df_segment->vtn_df_common->ingress_domain, + bypass_domain[0], (kMaxLenDomainId + 1)); + uuu::upll_strncpy( + df_cmn->df_segment->vtn_df_common->egress_domain, + bypass_domain[1], (kMaxLenDomainId + 1)); + uuu::upll_strncpy( + df_cmn->df_segment->vtn_df_common->controller_id, + ctrlr_id, (kMaxLenCtrlrId + 1)); + df_cmn->df_segment->vtn_df_common->controller_type = ctrlr_type; + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common->ingress_vnode, + reinterpret_cast + (ckv_remif->get_key())->vnode_key.vnode_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common-> + ingress_vinterface, reinterpret_cast + (ckv_remif->get_key())->vnode_if_name, + (kMaxLenInterfaceName + 1)); + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common->egress_vnode, + reinterpret_cast + (nxt_ckv->get_key())->vnode_key.vnode_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(df_cmn->df_segment->vtn_df_common->egress_vinterface, + reinterpret_cast + (nxt_ckv->get_key())->vnode_if_name, + (kMaxLenInterfaceName + 1)); + source_node->appendFlow(df_cmn, *(df_util->get_ctrlr_dom_count_map())); + result_code = vnif_mgr->GetInterfaceType(nxt_ckv, + UNC_VF_INVALID, vnif_type); + if (vnif_type != kBoundaryInterface) { + delete nxt_ckv; + nxt_ckv = ckv_tmp_nxt_ckv; + continue; + } + df_cmn->df_segment->ckv_egress = nxt_ckv; + SET_USER_DATA(ckv_df, nxt_ckv); + // Traverse the VNP/Vbypass boundary nodes. + result_code = CheckBoundaryAndTraverse(ckv_df, + header, + df_cmn, + lastPfcNode, + df_util, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Retrieval of boundary info failed\n %d\n", + result_code); + UpdateReason(source_node, result_code); + DELETE_IF_NOT_NULL(ckv_remif); + DELETE_IF_NOT_NULL(ckv_tmp_nxt_ckv); + return UPLL_RC_SUCCESS; + } + nxt_ckv = ckv_tmp_nxt_ckv; + } + delete ckv_remif; + } + return result_code; +} + +upll_rc_t VtnDataflowMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_vtn_dataflow *vtn_dfkey = NULL; + if (okey && okey->get_key()) { + vtn_dfkey = reinterpret_cast( + okey->get_key()); + } else { + vtn_dfkey = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(key_vtn_dataflow))); + } + void *pkey; + if (parent_key == NULL) { + if (!okey) + okey = new ConfigKeyVal(UNC_KT_VTN_DATAFLOW, + IpctSt::kIpcStKeyVtnDataflow, vtn_dfkey, NULL); + else if (okey->get_key() != vtn_dfkey) + okey->SetKey(IpctSt::kIpcStKeyVtnDataflow, vtn_dfkey); + return UPLL_RC_SUCCESS; + } else { + pkey = parent_key->get_key(); + } + if (!pkey) { + if (!okey || !(okey->get_key())) + ConfigKeyVal::Free(vtn_dfkey); + return UPLL_RC_ERR_GENERIC; + } + switch (parent_key->get_key_type()) { + case UNC_KT_ROOT: + break; + case UNC_KT_VTN_DATAFLOW: + memcpy(vtn_dfkey, reinterpret_cast(pkey), + sizeof(key_vtn_dataflow)); + break; + case UNC_KT_VTN: + uuu::upll_strncpy(vtn_dfkey->vtn_key.vtn_name, + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); + break; + default: + if (!okey || !(okey->get_key())) { + ConfigKeyVal::Free(vtn_dfkey); + } + return UPLL_RC_ERR_GENERIC; + } + if (!okey) + okey = new ConfigKeyVal(UNC_KT_VTN_DATAFLOW, + IpctSt::kIpcStKeyVtnDataflow, vtn_dfkey, NULL); + else if (okey->get_key() != vtn_dfkey) + okey->SetKey(IpctSt::kIpcStKeyVtnDataflow, vtn_dfkey); + SET_USER_DATA(okey, parent_key); + return result_code; +} + +} // namespace kt_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/vtn_dataflow_momgr.hh b/coordinator/modules/upll/vtn_dataflow_momgr.hh new file mode 100644 index 00000000..41d4ee84 --- /dev/null +++ b/coordinator/modules/upll/vtn_dataflow_momgr.hh @@ -0,0 +1,282 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef UNC_UPLL_VTN_DATAFLOW_MOMGR_H +#define UNC_UPLL_VTN_DATAFLOW_MOMGR_H + +#include +#include +#include +#include "momgr_impl.hh" + + +namespace unc { +namespace upll { +namespace kt_momgr { + +// using unc::upll::config_momgr::CtrlrCommitStatus; +// using unc::upll::config_momgr::CtrlrVoteStatus; + +using namespace dataflow; + +// using unc::dataflow::DataflowCmn; +// using unc::dataflow::DataflowUtil; +// using unc::dataflow::IpctStructNum; +using unc::upll::dal::DalBindInfo; +using unc::upll::dal::DalDmlIntf; +using unc::upll::dal::DalCursor; +using unc::upll::dal::DalCDataType; +using unc::upll::ipc_util::IpctSt; + + +class VtnDataflowMoMgr : public MoMgrImpl { + public: + VtnDataflowMoMgr() { + upll_max_dataflow_traversal_ = 0; + max_dataflow_traverse_count_ = 0; + ReadConfigFile(); + } + virtual ~VtnDataflowMoMgr() { + } + upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + /** Variable to hold max dataflow traversal count to verify during dataflow + * traversal, dataflow traversal is limited by this count value + **/ + uint32_t upll_max_dataflow_traversal_; + + /* This function is used to convert the vexternal name to + * vbridge name in the path info structure. + */ + upll_rc_t ConvertVexternaltoVbr(const uint8_t *vtn_name, + uint8_t *vex_name, + uint8_t *vex_if_name, + DalDmlIntf *dmi); + + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + + private: + /** + * @Description : This function reads config from file + * @param[in] : + **/ + inline upll_rc_t ReadConfigFile() { + UPLL_FUNC_TRACE; + pfc::core::ModuleConfBlock ipcblock("vtn_dataflow"); + upll_max_dataflow_traversal_ = ipcblock.getUint32( + "upll_max_dataflowtraversal", 1000); + UPLL_LOG_DEBUG("upll_max_dataflow_traversal_ - red from upll.conf = %d", + upll_max_dataflow_traversal_); + return UPLL_RC_SUCCESS; + } + + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VTN keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of + * input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_BAD_REQUEST key/value struct is + * not valid. + * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT operation not allowed. + * @retval UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT Datatype not allowed. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + **/ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *kval); + + /** + * @Brief Validates the syntax for KT_VTN Keytype Key structure. + * + * @param[in] val_vtn KT_VTN key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + **/ + upll_rc_t ValidateVtnDataflowKey(key_vtn_dataflow *vtndataflow); + + /** + * @Brief Validates the controller capability for VTN dataflow + * + * @param[in] ctrlr_name controller name. + * @param[in] is_first_ctrlr flag to specify ingress controller or not. + * @param[out] ctrlr_type specifies the controller type. + * + * @retval UPLL_RC_SUCCESS Success. + * @retval UPLL_RC_ERR_GENERIC Generic Error. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR controller not supported. + * + **/ + upll_rc_t ValidateControllerCapability(const char *ctrlr_name, + bool is_first_ctrlr, + unc_keytype_ctrtype_t *ctrlr_type); + + /** + * @Brief Get the controller and domain id from the specified vtn and + * vnode id + * + * @param[in] vtn_id vtn name. + * @param[in] vnode_id vnode_name. + * @param[out] ctrlr_dom controller domain pointer. + * @param[out] dmi Dal interface pointer. + * + * @retval UPLL_RC_SUCCESS Success. + * @retval UPLL_RC_ERR_GENERIC Generic Error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE No specified instance in database. + * + **/ + upll_rc_t GetVnodeControllerDomain(uint8_t *vtn_id, uint8_t *vnode_id, + std::string &ctrlr, std::string &domain, + DalDmlIntf *dmi); + + upll_rc_t UpdatePathInfoInterfaces(DataflowCmn *df_cmn, + const uint8_t *vtn_name, + DalDmlIntf *dmi); + upll_rc_t MapVexternalToVbridge(const ConfigKeyVal *ckv_df, + DataflowCmn *df_cmn, + bool *is_vnode_match, + DalDmlIntf *dmi); + upll_rc_t FillCtrlrDomCountMap(uint8_t *vtn_name, + uint32_t &ctrlr_dom_count, + DalDmlIntf *dmi); + + upll_rc_t CheckBoundaryAndTraverse(ConfigKeyVal *ckv_df, + IpcReqRespHeader *header, + DataflowCmn *source_node, + DataflowCmn *lastPfcNode, + DataflowUtil *df_util, + DalDmlIntf *dmi); + + upll_rc_t GetNeighborInfo(uint8_t *vtn_name, + DataflowCmn *df_cmn, + ConfigKeyVal *&ckv_inif, + ConfigKeyVal *&ckv_remif, + DalDmlIntf *dmi); + + upll_rc_t TraversePFCController(ConfigKeyVal *ckv_df, + IpcReqRespHeader *header, + DataflowCmn *source_node, + DataflowCmn *lastPfcNode, + DataflowUtil *df_util, + DalDmlIntf *dmi, + bool is_first_ctrlr = false); + upll_rc_t PopulateVnpOrVbypassBoundaryInfo(ConfigKeyVal *&ckv_inif, + ConfigKeyVal *&ckv_remif, + DalDmlIntf *dmi); + + upll_rc_t MapCtrlrNameToUncName( + const uint8_t *vtn_name, + val_vtn_dataflow_path_info *out_path_info, + uint8_t *ctrlr_id, + DalDmlIntf *dmi); + upll_rc_t UpdateReason(DataflowCmn *source_node, upll_rc_t result_code); + + + upll_rc_t GetParentConfigKey(ConfigKeyVal*&okey, ConfigKeyVal *ikey) { + return UPLL_RC_SUCCESS; + } + upll_rc_t UpdateConfigStatus(ConfigKeyVal *ckv1, + unc_keytype_operation_t op, + uint32_t count, + ConfigKeyVal *ckv2, + DalDmlIntf *dmi, + ConfigKeyVal *ckv3) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t st, + uuc::UpdateCtrlrPhase up, + ConfigKeyVal*&ckv, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + upll_rc_t ValidateAttribute(ConfigKeyVal*ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *header) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + upll_rc_t GetValid(void *v1, + uint64_t u, + uint8_t*& ui, + upll_keytype_datatype_t dt, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + upll_rc_t ValidateCapability(IpcReqRespHeader *header, + ConfigKeyVal*ikey, + const char* ctrkr) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + upll_rc_t DupConfigKeyVal(ConfigKeyVal*&okey, + ConfigKeyVal*&ikey, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + bool IsValidKey(void*v , uint64_t t) { + UPLL_FUNC_TRACE; + return true; + } + bool CompareValidValue(void*&v1, void*v2, bool b) { + UPLL_FUNC_TRACE; + return true; + } + upll_rc_t GetRenamedUncKey(ConfigKeyVal* ikey, + upll_keytype_datatype_t dt, + DalDmlIntf *dmi, + uint8_t *ctrlr) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + bool GetRenameKeyBindInfo(unc_key_type_t dt, + BindInfo*& binfo, + int&count, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + return true; + } + upll_rc_t CopyToConfigKey(ConfigKeyVal*&okey, ConfigKeyVal*ikey) { + UPLL_FUNC_TRACE; + UPLL_LOG_INFO("Not implemented. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + upll_rc_t AllocVal(ConfigVal *&ckv1, + upll_keytype_datatype_t dt, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + return UPLL_RC_SUCCESS; + } + + uint32_t max_dataflow_traverse_count_; + std::set bypass_dom_set; +}; + + +} // namespace kt_momgr +} // namespace upll +} // namespace unc +#endif + diff --git a/coordinator/modules/upll/vtn_flowfilter_entry_momgr.cc b/coordinator/modules/upll/vtn_flowfilter_entry_momgr.cc index 21401cb9..4ec179a3 100644 --- a/coordinator/modules/upll/vtn_flowfilter_entry_momgr.cc +++ b/coordinator/modules/upll/vtn_flowfilter_entry_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -23,14 +23,14 @@ using std::set; using std::map; using unc::upll::ipc_util::IpcUtil; #define GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, en) \ - (tbl == MAINTBL) ? &(l_val_ff->valid[en]) : &(l_val_ctrl_ff->valid[en]) + (tbl == MAINTBL) ? &(l_val_ff->valid[en]) : &(l_val_ctrl_ff->valid[en]) namespace unc { namespace upll { namespace kt_momgr { #define FLOWLIST_RENAME 0x02 #define NO_FLOWLIST_RENAME ~FLOWLIST_RENAME -// VTN FlowFilter Entry Main Table +// VTN FlowFilter Entry Main Table BindInfo VtnFlowFilterEntryMoMgr::vtn_flowfilter_entry_bind_info[] = { { uudst::vtn_flowfilter_entry::kDbiVtnName, CFG_KEY, offsetof(key_vtn_flowfilter_entry_t, flowfilter_key.vtn_key.vtn_name), @@ -93,7 +93,7 @@ BindInfo VtnFlowFilterEntryMoMgr::vtn_flowfilter_entry_bind_info[] = { offsetof(val_vtn_flowfilter_entry_t, cs_attr[4]), uud::kDalUint8, 1 } }; -// VTN FlowFilter Entry Controller Table +// VTN FlowFilter Entry Controller Table BindInfo VtnFlowFilterEntryMoMgr::vtn_flowfilter_entry_ctrlr_bind_info[] = { { uudst::vtn_flowfilter_entry_ctrlr::kDbiVtnName, CFG_KEY, offsetof(key_vtn_flowfilter_entry_t, flowfilter_key.vtn_key.vtn_name), @@ -112,19 +112,19 @@ BindInfo VtnFlowFilterEntryMoMgr::vtn_flowfilter_entry_ctrlr_bind_info[] = { uud::kDalChar, (kMaxLenDomainId + 1) }, { uudst::vtn_flowfilter_entry_ctrlr::kDbiFlags, CK_VAL, offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::vtn_flowfilter_entry_ctrlr::kDbiValidFlowlistName, CFG_META_VAL, offsetof(val_vtn_flowfilter_entry_ctrlr, valid[0]), uud::kDalUint8, 1 }, { uudst::vtn_flowfilter_entry_ctrlr::kDbiValidAction, CFG_META_VAL, offsetof(val_vtn_flowfilter_entry_ctrlr, valid[1]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::vtn_flowfilter_entry_ctrlr::kDbiValidNwnName, CFG_META_VAL, offsetof(val_vtn_flowfilter_entry_ctrlr, valid[2]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::vtn_flowfilter_entry_ctrlr::kDbiValidDscp, CFG_META_VAL, offsetof(val_vtn_flowfilter_entry_ctrlr, valid[3]), - uud::kDalUint8, 1 }, + uud::kDalUint8, 1 }, { uudst::vtn_flowfilter_entry_ctrlr::kDbiValidPriority, CFG_META_VAL, offsetof(val_vtn_flowfilter_entry_ctrlr, valid[4]), uud::kDalUint8, 1 }, @@ -150,27 +150,26 @@ BindInfo VtnFlowFilterEntryMoMgr::vtn_flowfilter_entry_ctrlr_bind_info[] = { BindInfo VtnFlowFilterEntryMoMgr::vtnflowfilterentrymaintbl_bind_info[] = { {uudst::vtn_flowfilter_entry::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vtn_flowfilter_entry_t, flowfilter_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1}, + key_vtn_flowfilter_entry_t, flowfilter_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1}, {uudst::vtn_flowfilter_entry::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1}, + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1}, {uudst::vtn_flowfilter_entry::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1} + key_user_data_t, flags), + uud::kDalUint8, 1} }; BindInfo VtnFlowFilterEntryMoMgr::vtnflowfilterentryctrlrtbl_bind_info[] = { {uudst::vtn_flowfilter_entry_ctrlr::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vtn_flowfilter_t, vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1}, + key_vtn_flowfilter_t, vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1}, {uudst::vtn_flowfilter_entry_ctrlr::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1}, + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1}, {uudst::vtn_flowfilter_entry_ctrlr::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1} - + key_user_data_t, flags), + uud::kDalUint8, 1} }; VtnFlowFilterEntryMoMgr::VtnFlowFilterEntryMoMgr() :MoMgrImpl() { @@ -180,32 +179,37 @@ VtnFlowFilterEntryMoMgr::VtnFlowFilterEntryMoMgr() :MoMgrImpl() { ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; // Construct Main Table - table[MAINTBL] = new Table(uudst::kDbiVtnFlowFilterEntryTbl, - UNC_KT_VTN_FLOWFILTER_ENTRY, vtn_flowfilter_entry_bind_info, - IpctSt::kIpcStKeyVtnFlowfilterEntry, IpctSt::kIpcStValVtnFlowfilterEntry, + table[MAINTBL] = new Table( + uudst::kDbiVtnFlowFilterEntryTbl, + UNC_KT_VTN_FLOWFILTER_ENTRY, + vtn_flowfilter_entry_bind_info, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + IpctSt::kIpcStValVtnFlowfilterEntry, uudst::vtn_flowfilter_entry::kDbiVtnFlowFilterEntryNumCols); table[RENAMETBL] = NULL; // Construct CONTROLLER Table - table[CTRLRTBL] = new Table(uudst::kDbiVtnFlowFilterEntryCtrlrTbl, - UNC_KT_VTN_FLOWFILTER_ENTRY, vtn_flowfilter_entry_ctrlr_bind_info, - IpctSt::kIpcStKeyVtnFlowfilterEntry, IpctSt::kIpcInvalidStNum, + table[CTRLRTBL] = new Table( + uudst::kDbiVtnFlowFilterEntryCtrlrTbl, + UNC_KT_VTN_FLOWFILTER_ENTRY, + vtn_flowfilter_entry_ctrlr_bind_info, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + IpctSt::kIpcInvalidStNum, uudst::vtn_flowfilter_entry_ctrlr::kDbiVtnFlowFilterEntryCtrlrNumCols); - // VTN FlowFilter Entry Does not have any child + // VTN FlowFilter Entry Does not have any child nchild = 0; child = NULL; - cur_instance_count = 0; } upll_rc_t VtnFlowFilterEntryMoMgr::IsReferenced( - ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ikey) return UPLL_RC_ERR_GENERIC; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the exixtence in Maintable + // Check the exixtence in Maintable result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_READ, dmi, &dbop, MAINTBL); return result_code; } @@ -218,7 +222,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetControllerKeyval( ConfigVal *ctrlcv = NULL; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; key_vtn_flowfilter_entry_t *vtn_ff_ctrl_key = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); if (vtn_ff_ctrl_key == NULL) { return UPLL_RC_ERR_GENERIC; } @@ -228,8 +232,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetControllerKeyval( return result_code; } val_vtn_flowfilter_entry_t *val_vtn_ff_entry = - reinterpret_cast - (ikey->get_cfg_val()->get_val()); + reinterpret_cast + (ikey->get_cfg_val()->get_val()); if (val_vtn_ff_entry == NULL) { return UPLL_RC_ERR_GENERIC; } @@ -237,11 +241,11 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetControllerKeyval( reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_ctrlr))); for (unsigned int loop = 0; loop < - sizeof(val_vtn_ff_entry->valid) /sizeof(val_vtn_ff_entry->valid[0]); - loop++) { - if (val_vtn_ff_entry->valid[loop] == UNC_VF_VALID) { - val_ff_ctrl->valid[loop] = UNC_VF_VALID; - } + sizeof(val_vtn_ff_entry->valid) /sizeof(val_vtn_ff_entry->valid[0]); + loop++) { + if (val_vtn_ff_entry->valid[loop] == UNC_VF_VALID) { + val_ff_ctrl->valid[loop] = UNC_VF_VALID; + } } ctrlcv = new ConfigVal(IpctSt::kIpcInvalidStNum, val_ff_ctrl); ctrlckv->AppendCfgVal(ctrlcv); @@ -250,12 +254,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetControllerKeyval( } upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTableForVtn( - uint8_t* vtn_name, - controller_domain *ctrlr_dom, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t flag) { + uint8_t* vtn_name, + controller_domain *ctrlr_dom, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t flag) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ikey = NULL; @@ -275,12 +279,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTableForVtn( (ikey->get_key()); uuu::upll_strncpy(vtn_ff_key->flowfilter_key.vtn_key.vtn_name, vtn_name, (kMaxLenVtnName+1)); - // set this value so that the direction - // can be bound for output instead of match + // set this value so that the direction + // can be bound for output instead of match vtn_ff_key->flowfilter_key.input_direction = 0xFE; DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; - // Read the Configuration from the MainTable + // Read the Configuration from the MainTable result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -313,7 +317,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTableForVtn( UPLL_LOG_DEBUG("temp_flag in UpdateControllerTableForVtn %d", temp_flag); DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutCs | kOpInOutFlag}; result_code = UpdateConfigDB(flag_ikey, dt_type, UNC_OP_UPDATE, - dmi, &dbop1, MAINTBL); + dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(ikey); @@ -336,9 +340,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTableForVtn( if (result_code != UPLL_RC_SUCCESS) { if ((result_code == UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT) || (result_code == UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR)) { - UPLL_LOG_DEBUG("ValidateCapability failed"); - DELETE_IF_NOT_NULL(ikey); - return result_code; + UPLL_LOG_DEBUG("ValidateCapability failed"); + DELETE_IF_NOT_NULL(ikey); + return result_code; } if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("No instance in UpdateControllerTable"); @@ -348,12 +352,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTableForVtn( UPLL_LOG_DEBUG("create in ctrlr tbl failed: error code (%d)", result_code); } - // Notify the flowlistmomgr is flowlist is configured. + // Notify the flowlistmomgr is flowlist is configured. // val_vtn_flowfilter_entry_t *val_vtn_ffe = reinterpret_cast (GetVal(new_ikey)); - // if Flowlist name is configured in the flowfilter - // send controller add/delete request to flowlist momgr. + // if Flowlist name is configured in the flowfilter + // send controller add/delete request to flowlist momgr. if (UNC_VF_VALID == val_vtn_ffe->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(val_vtn_ffe->flowlist_name), dmi, @@ -374,9 +378,10 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTableForVtn( upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; - // ConfigKeyVal *okey = NULL; + // ConfigKeyVal *okey = NULL; if (ikey == NULL || req == NULL) { UPLL_LOG_TRACE( "Cannot perform create operation due to insufficient parameters"); @@ -384,11 +389,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t result_code = UPLL_RC_SUCCESS; upll_rc_t vtn_ctrlr_span_rt_code = UPLL_RC_SUCCESS; - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result code=%d", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed result code=%d", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); @@ -396,46 +403,52 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("ValidateAttribute failed: err code(%d)", result_code); return result_code; } - /* - result_code = ValidateCapability(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateCapability failed result code=%d", result_code); - return result_code; - } - */ - // Check if Object already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if ((result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) && - (result_code != UPLL_RC_ERR_INSTANCE_EXISTS)) { - UPLL_LOG_DEBUG(" UpdateConfigDB() error (%d)", result_code); - return result_code; - } - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Record already exists in Candidate DB: err code(%d)", - result_code); - return result_code; - } - // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - if (req->datatype == UPLL_DT_CANDIDATE) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if ((result_code != UPLL_RC_ERR_INSTANCE_EXISTS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" Is Exist check operation failed: err code(%d)", - result_code); - return result_code; - } - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restore Operation Failed, err %d", result_code); + + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); return result_code; } - return result_code; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } + std::list list_ctrlr_dom; - vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, req->datatype, dmi, list_ctrlr_dom); + vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, + req->datatype, + dmi, + list_ctrlr_dom); if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", @@ -447,12 +460,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, for (std::list::iterator it= list_ctrlr_dom.begin(); it != list_ctrlr_dom.end(); ++it) { /*result_code = ValidateCapability( - req, ikey, - reinterpret_cast(it->ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { + req, ikey, + reinterpret_cast(it->ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Key not supported by controller"); return result_code; - }*/ + }*/ } } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != vtn_ctrlr_span_rt_code) { UPLL_LOG_DEBUG(" GetVtnControllerSpan failed . Resultcode %d ", @@ -460,16 +473,16 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return vtn_ctrlr_span_rt_code; } - // create a record in CANDIDATE DB + // create a record in CANDIDATE DB result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_CREATE, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - // delete okey; + // delete okey; FREE_LIST_CTRLR(list_ctrlr_dom); return result_code; } -// create a record in CANDIDATE DB for controller Table + // create a record in CANDIDATE DB for controller Table if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UpdateControllerTable(ikey, UNC_OP_CREATE, req->datatype, dmi, @@ -478,8 +491,11 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("create in ctrlr tbl failed: error code (%d)", result_code); - upll_rc_t del_result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_DELETE, - dmi, MAINTBL); + upll_rc_t del_result_code = UpdateConfigDB(ikey, + req->datatype, + UNC_OP_DELETE, + dmi, + MAINTBL); if (del_result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("delete in CandidateDB failed: err code(%d) ", del_result_code); @@ -489,9 +505,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } } val_vtn_flowfilter_entry_t *val_vtn_ffe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (UNC_VF_VALID == val_vtn_ffe->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { - result_code = UpdateFlowListInCtrl(ikey, req->datatype, UNC_OP_CREATE, dmi); + result_code = UpdateFlowListInCtrl(ikey, + req->datatype, + UNC_OP_CREATE, + dmi); if (result_code != UPLL_RC_SUCCESS) { if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { FREE_LIST_CTRLR(list_ctrlr_dom); @@ -503,7 +522,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateCandidateMo(IpcReqRespHeader *req, if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { FREE_LIST_CTRLR(list_ctrlr_dom); } - // delete okey; + // delete okey; return result_code; } @@ -520,9 +539,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL || - (ikey->get_key_type() != UNC_KT_VTN_FLOWFILTER_ENTRY)) { + (ikey->get_key_type() != UNC_KT_VTN_FLOWFILTER_ENTRY)) { UPLL_LOG_DEBUG("Ignoring ktype/Table kt=%d, tbl=%d", - ikey->get_key_type(), tbl); + ikey->get_key_type(), tbl); return result_code; } val_vtn_flowfilter_entry_t *flowfilter_val = @@ -536,17 +555,17 @@ upll_rc_t VtnFlowFilterEntryMoMgr::RestorePOMInCtrlTbl( result_code = UpdateFlowListInCtrl(ikey, dt_type, UNC_OP_CREATE, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to update flowlist in ctrlr table, err %d", - result_code); + result_code); return result_code; } } return result_code; } upll_rc_t VtnFlowFilterEntryMoMgr::UpdateFlowListInCtrl( - ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op, - DalDmlIntf* dmi) { + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DalDmlIntf* dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *vtn_okey = NULL; uint8_t* ctrlr_id; @@ -554,24 +573,24 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateFlowListInCtrl( VtnMoMgr *vtnmgr = static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); + (GetMoManager(UNC_KT_VTN)))); result_code = vtnmgr->GetChildConfigKey(vtn_okey, NULL); if (result_code != UPLL_RC_SUCCESS) { return result_code; } FlowListMoMgr *flowlist_mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); val_vtn_flowfilter_entry_t *flowfilter_val = - reinterpret_cast (GetVal(ikey)); + reinterpret_cast (GetVal(ikey)); - // For Controllers in VTN Span - // Update the Flowlist details of the FlowlistController Table + // For Controllers in VTN Span + // Update the Flowlist details of the FlowlistController Table key_vtn_t *vtn_key = reinterpret_cast(vtn_okey->get_key()); key_vtn_flowfilter_entry_t *ff_entry_key = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(vtn_key->vtn_name, - ff_entry_key->flowfilter_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + ff_entry_key->flowfilter_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); result_code = vtnmgr->GetControllerDomainSpan(vtn_okey, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS && @@ -596,8 +615,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateFlowListInCtrl( DELETE_IF_NOT_NULL(vtn_okey); return UPLL_RC_ERR_GENERIC; } - UPLL_LOG_TRACE("flowlist name %s length %zu", flowfilter_val->flowlist_name, - strlen((const char *)flowfilter_val->flowlist_name)); + UPLL_LOG_TRACE("flowlist name %s length %zu", + flowfilter_val->flowlist_name, + strlen((const char *)flowfilter_val->flowlist_name)); if (UNC_OP_CREATE == op || UNC_OP_DELETE == op) { result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(flowfilter_val->flowlist_name), dmi, @@ -629,7 +649,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateFlowListInCtrl( (GetVal(tempckv)); if (UNC_VF_VALID == vtn_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && UNC_VF_VALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { + valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ffe_val->flowlist_name), dmi, reinterpret_cast (ctrlr_id), dt_type, UNC_OP_DELETE); @@ -649,8 +669,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateFlowListInCtrl( } else if (UNC_VF_VALID == vtn_ffe_val-> valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && (UNC_VF_INVALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || UNC_VF_VALID_NO_VALUE == - temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { + valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || + UNC_VF_VALID_NO_VALUE == + temp_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE])) { result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(vtn_ffe_val->flowlist_name), dmi, reinterpret_cast (ctrlr_id), dt_type, UNC_OP_CREATE); @@ -662,7 +683,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateFlowListInCtrl( } else if (UNC_VF_VALID_NO_VALUE == vtn_ffe_val-> valid[UPLL_IDX_FLOWLIST_NAME_VFFE] && UNC_VF_VALID == temp_ffe_val-> - valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { + valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { result_code = flowlist_mgr->AddFlowListToController( reinterpret_cast(temp_ffe_val->flowlist_name), dmi, reinterpret_cast (ctrlr_id), dt_type, UNC_OP_DELETE); @@ -687,19 +708,19 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == req) { - UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); - return result_code; + UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); + return result_code; } result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) - return result_code; + return result_code; #if 0 result_code = ValidateCapability(req, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateCapability failed resultcode=%d", - result_code); + result_code); return result_code; } #endif @@ -709,8 +730,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("Delete Operation Failed: No Record found in DB"); return result_code; } - // Read the DB get the flowlist value and send the delete request to - // flowlist momgr if flowlist is configured. + // Read the DB get the flowlist value and send the delete request to + // flowlist momgr if flowlist is configured. ConfigKeyVal *okey = NULL; result_code = GetChildConfigKey(okey, ikey); @@ -726,9 +747,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } val_vtn_flowfilter_entry_t *vtn_ffe_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (UNC_VF_VALID == vtn_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { - result_code = UpdateFlowListInCtrl(okey, req->datatype, UNC_OP_DELETE, dmi); + result_code = UpdateFlowListInCtrl(okey, + req->datatype, + UNC_OP_DELETE, + dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to update flowlist in ctrlr table"); DELETE_IF_NOT_NULL(okey); @@ -741,27 +765,27 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("Delete Operation Failed DB Error (%d)", result_code); return result_code; } -/* - delete okey; - okey = NULL; - - DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; - result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_DELETE, dmi, - &dbop, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Delete Operation Failed: err code (%d)", result_code); - return result_code; - } - result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_DELETE, dmi, - &dbop, CTRLRTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Delete : No matching record in ctrlrtbl:DB Error"); - return UPLL_RC_SUCCESS; - }else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Delete Operation Failed in ctrlrtbl:DB Error"); - return result_code; - } - */ + /* + delete okey; + okey = NULL; + + DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; + result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_DELETE, dmi, + &dbop, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Delete Operation Failed: err code (%d)", result_code); + return result_code; + } + result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_DELETE, dmi, + &dbop, CTRLRTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Delete : No matching record in ctrlrtbl:DB Error"); + return UPLL_RC_SUCCESS; + }else if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Delete Operation Failed in ctrlrtbl:DB Error"); + return result_code; + } + */ return UPLL_RC_SUCCESS; } @@ -795,31 +819,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } - /* - result_code = ValidateCapability(req, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Validation of Message failed in UpdateMo"); - return result_code; - } - */ - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi, MAINTBL); - - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("UpdateMo record not available (%d)", - result_code); - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("UpdateMo record available"); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateMo error accessing DB (%d)", - result_code); - return result_code; - } - val_vtn_flowfilter_entry_t *vtn_ffe_val = reinterpret_cast (GetVal(ikey)); std::list list_ctrlr_dom; - vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, req->datatype, dmi, list_ctrlr_dom); + vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, + req->datatype, + dmi, + list_ctrlr_dom); if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", @@ -843,7 +849,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, vtn_ctrlr_span_rt_code); return vtn_ctrlr_span_rt_code; } - /* TODO Is Reference and GetChildConfigKey APis of NWM are declared as private + /* TODO(upll) : Is Reference and GetChildConfigKey APis of NWM are + * declared as private * Commented the below code to avoid compilation error of access violation * nwm_momgr.cc code must be corrected */ #if 0 @@ -853,12 +860,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } #endif - // result_code = ValidateAttribute(ikey); + // result_code = ValidateAttribute(ikey); - // if (UPLL_RC_SUCCESS != result_code) return result_code; + // if (UPLL_RC_SUCCESS != result_code) return result_code; - // Check and update the flowlist reference count if the flowlist object - // is referred + // Check and update the flowlist reference count if the flowlist object + // is referred result_code = DupConfigKeyVal(ctrl_key, ikey, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -868,27 +875,34 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, free(it->ctrlr); free(it->domain); } + DELETE_IF_NOT_NULL(ctrl_key); return result_code; } if (UNC_VF_VALID == vtn_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] || - UNC_VF_VALID_NO_VALUE == vtn_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] ) { - result_code = UpdateFlowListInCtrl(ikey, req->datatype, UNC_OP_UPDATE, dmi); + UNC_VF_VALID_NO_VALUE == + vtn_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] ) { + result_code = UpdateFlowListInCtrl(ikey, + req->datatype, + UNC_OP_UPDATE, + dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to update flowlist in ctrlr table"); if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - for (std::list::iterator it= list_ctrlr_dom.begin(); - it != list_ctrlr_dom.end(); ++it) { + for (std::list::iterator it = + list_ctrlr_dom.begin(); + it != list_ctrlr_dom.end(); ++it) { free(it->ctrlr); free(it->domain); } } + DELETE_IF_NOT_NULL(ctrl_key); return result_code; } } DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; uint8_t temp_flag = 0; GET_USER_DATA_FLAGS(ikey, temp_flag); - UPLL_LOG_DEBUG("GET_USER_DATA_FLAGS in Update %d", temp_flag); + UPLL_LOG_DEBUG("GET_USER_DATA_FLAGS in Update %d", temp_flag); result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); @@ -896,14 +910,15 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("UpdateMo:Failed UpdateConfigDB "); if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { for (std::list::iterator it= list_ctrlr_dom.begin(); - it != list_ctrlr_dom.end(); ++it) { + it != list_ctrlr_dom.end(); ++it) { free(it->ctrlr); free(it->domain); } } + DELETE_IF_NOT_NULL(ctrl_key); return result_code; } - // Update a record in CANDIDATE DB for controller Table + // Update a record in CANDIDATE DB for controller Table if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UpdateControllerTable(ctrl_key, UNC_OP_UPDATE, req->datatype, dmi, @@ -933,18 +948,16 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMo(IpcReqRespHeader *req, return result_code; } -upll_rc_t VtnFlowFilterEntryMoMgr::MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_name, - DalDmlIntf *dmi) { +upll_rc_t VtnFlowFilterEntryMoMgr::MergeImportToCandidate( + unc_key_type_t keytype, + const char *ctrlr_name, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckval = NULL; - ConfigKeyVal *ckey = NULL; - - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; + ConfigKeyVal *ffe_imkey = NULL, *ffe_cdkey = NULL; + ConfigVal *ctrlcv = NULL; + ConfigKeyVal *ckv_import = NULL, *ckv_cand = NULL; uint8_t flag = 0; if (NULL == ctrlr_name) { @@ -952,124 +965,505 @@ upll_rc_t VtnFlowFilterEntryMoMgr::MergeImportToCandidate(unc_key_type_t keytype return UPLL_RC_ERR_GENERIC; } - result_code = GetChildConfigKey(ckval, NULL); + VtnMoMgr *vtnmgr = + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + result_code = vtnmgr->GetChildConfigKey(ckval, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); return result_code; } - if (!ckval) return UPLL_RC_ERR_GENERIC; - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - // Read vtn ff from import main - result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + /* Read all vtn from VTN main table in import database and check with + * Candidate database */ + result_code = vtnmgr->ReadConfigDB(ckval, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ckval); UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); - if(result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); - return result_code; + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("NO record in vtn tbl (%d)", result_code); + result_code = UPLL_RC_SUCCESS; } - return UPLL_RC_SUCCESS; + DELETE_IF_NOT_NULL(ckval); + return result_code; } - - UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); ConfigKeyVal *tmp_ckval = ckval; - while (NULL != ckval) { - // Check the VTN already configured in UNC - VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); - result_code = vtnmgr->GetChildConfigKey(ckey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey error (%d)", result_code); + while (ckval != NULL) { + /* Get the instance count from vtn ctrl table in candidate. + * If refcount is more than 1, + * which means that the imported vtn is already exists in candidate + * If refcount is zero or 1, + * which means that the imported vtn is not exists in candidate + */ + uint32_t imp_instance_count, cand_instance_count; + /* Get the instance count from vtn ctrl tbl from import db*/ + result_code = vtnmgr->GetChildConfigKey(ckv_import, ckval); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); - key_vtn_flowfilter_entry *vtn_ikey = reinterpret_cast(ckval->get_key()); - uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->flowfilter_key.vtn_key.vtn_name, - kMaxLenVtnName+1); - DbSubOp dbop1 = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the vtn already exist in vtn tbl - result_code = vtnmgr->UpdateConfigDB(ckey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - &dbop1, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("vtn already exists"); - DELETE_IF_NOT_NULL(ckey); - ckval = ckval->get_next_cfg_key_val(); - continue; - } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - DELETE_IF_NOT_NULL(ckey); + result_code = vtnmgr->GetInstanceCount(ckv_import, + NULL, + UPLL_DT_IMPORT, + &imp_instance_count, + dmi, + CTRLRTBL); + DELETE_IF_NOT_NULL(ckv_import); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - // If not same vtn, then merge the vtn ff to candidate tbl - result_code = UpdateConfigDB(ckval, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("create in CandidateDB failed: err code(%d) ", - result_code); - DELETE_IF_NOT_NULL(ckey); + /* Get the instance count from vtn ctrl tbl from candidate db*/ + result_code = vtnmgr->GetChildConfigKey(ckv_cand, ckval); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + result_code = vtnmgr->GetInstanceCount(ckv_cand, + NULL, + UPLL_DT_CANDIDATE, + &cand_instance_count, + dmi, + CTRLRTBL); + DELETE_IF_NOT_NULL(ckv_cand); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } + UPLL_LOG_TRACE("Import count (%d) Candidate count (%d)", + imp_instance_count, cand_instance_count); + if (imp_instance_count == cand_instance_count) { + /* If imported ctrlr's VTN not exists in Candidate, then check the + existence of imported ctrlr's VTN flow-filter entry + 1)If the imported ctrlr VTN does not have flow-filter entry, then + continue with the next VTN in imported db + 2)If the imported ctrlr VTN has flow-filter entry, then create this + flow-filter entry into candidate db + */ + UPLL_LOG_DEBUG("VTN not exists in candidate(%d)", result_code); + + // Get the imported ctrl VTN's flow-filter entry from Import database + key_vtn_t *vtn_ikey = reinterpret_cast(ckval->get_key()); + key_vtn_flowfilter_entry_t *vtn_ffe_imkey = reinterpret_cast + (ConfigKeyVal::Malloc + (sizeof(key_vtn_flowfilter_entry_t))); + uuu::upll_strncpy(vtn_ffe_imkey->flowfilter_key.vtn_key.vtn_name, + vtn_ikey->vtn_name, kMaxLenVtnName+1); + vtn_ffe_imkey->flowfilter_key.input_direction = 0xFE; + ffe_imkey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + vtn_ffe_imkey, NULL); + + upll_rc_t result_import = ReadConfigDB(ffe_imkey, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_import != UPLL_RC_SUCCESS && + result_import != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ffe_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + if (result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + /* If the imported ctrlr VTN does not have flow-filter entry, + * then continue + * with the next VTN in imported db */ + UPLL_LOG_DEBUG("FF_Entry not exists in import(%d)", result_code); + DELETE_IF_NOT_NULL(ffe_imkey); + ckval = ckval->get_next_cfg_key_val(); + continue; + } else if (result_import == UPLL_RC_SUCCESS) { + /* If imported ctrlr VTN has flow-filter entry, then create this + * flow-filter entry into candidate db */ + + /* Get the list of this VTN associated ctrlr and domain */ + std::list list_ctrlr_dom; + upll_rc_t vtn_ctrlr_span_rt_code = GetVtnControllerSpan( + ffe_imkey, + UPLL_DT_IMPORT, + dmi, + list_ctrlr_dom); + if (vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ffe_imkey); + if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetVtnControllerSpan error code (%d)", + vtn_ctrlr_span_rt_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + /* If ctrl and domain name not exist in VTN ctrl tbl, then + continue with the next VTN in import db */ + ckval = ckval->get_next_cfg_key_val(); + continue; + } + + ConfigKeyVal *tmp_ffe_imkey = ffe_imkey; + while (ffe_imkey != NULL) { + /* Create the record in flow-filter entry main tbl */ + result_code = UpdateConfigDB(ffe_imkey, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("create in CandidateDB failed (%d) ", result_code); + DELETE_IF_NOT_NULL(tmp_ffe_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + std::list::iterator it= list_ctrlr_dom.begin(); + while (it != list_ctrlr_dom.end()) { + /* Create the record in flow-filter entry ctrlr table with ctrlr + * and domain */ + ConfigKeyVal *ctrlckv = NULL; + GET_USER_DATA_FLAGS(ffe_imkey, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + key_vtn_flowfilter_entry_t *vtn_ffe_key = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); + memcpy(vtn_ffe_key, reinterpret_cast + (ffe_imkey->get_key()), sizeof(key_vtn_flowfilter_entry_t)); + + val_vtn_flowfilter_entry_t *vtn_ffe_val = reinterpret_cast + (GetVal(ffe_imkey)); + + val_vtn_flowfilter_entry_ctrlr_t *ctrlr_val = reinterpret_cast + ( + ConfigKeyVal::Malloc(sizeof + (val_vtn_flowfilter_entry_ctrlr_t))); + /* Get the VALID from main table record and update into ctrl tbl*/ + for (unsigned int loop = 0; + loop < (sizeof(ctrlr_val->valid)/sizeof(ctrlr_val->valid[0])); + loop++) { + if (UNC_VF_NOT_SUPPORTED == vtn_ffe_val->valid[loop]) { + ctrlr_val->valid[loop] = UNC_VF_INVALID; + } else { + ctrlr_val->valid[loop] = vtn_ffe_val->valid[loop]; + } + } + + ctrlcv = new ConfigVal(IpctSt::kIpcInvalidStNum, ctrlr_val); + ctrlckv = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + vtn_ffe_key, ctrlcv); + + SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, *it); + SET_USER_DATA_FLAGS(ctrlckv, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + // Create a record in ctrlr tbl in candidate db + result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, dmi, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err during inser the record in ctrlr table (%d)", + result_code); + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(tmp_ffe_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + DELETE_IF_NOT_NULL(ctrlckv); + ++it; + } + ffe_imkey = ffe_imkey->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(ffe_imkey); + FREE_LIST_CTRLR(list_ctrlr_dom); + } + } else if (imp_instance_count < cand_instance_count) { + /* If vtn exists in both db, then check the flow-filter entry existence + from import and candidate database */ + UPLL_LOG_DEBUG("VTN exists in candidate(%d)", result_code); + + FlowListMoMgr *flowlist_mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + if (NULL == flowlist_mgr) { + UPLL_LOG_DEBUG("flowlist_mgr is NULL"); + DELETE_IF_NOT_NULL(tmp_ckval); + return UPLL_RC_ERR_GENERIC; + } + + // Get the flow-filter entries from Import database + ffe_imkey = NULL; + key_vtn_t *vtn_ikey = reinterpret_cast(ckval->get_key()); + key_vtn_flowfilter_entry_t *vtn_ffe_imkey = reinterpret_cast + (ConfigKeyVal::Malloc + (sizeof(key_vtn_flowfilter_entry_t))); + uuu::upll_strncpy(vtn_ffe_imkey->flowfilter_key.vtn_key.vtn_name, + vtn_ikey->vtn_name, kMaxLenVtnName+1); + vtn_ffe_imkey->flowfilter_key.input_direction = 0xFE; + ffe_imkey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + vtn_ffe_imkey, NULL); + + upll_rc_t result_import = ReadConfigDB(ffe_imkey, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_import != UPLL_RC_SUCCESS && + result_import != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ffe_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + /* Get the flow-filter entry from candidate database */ + ffe_cdkey = NULL; + key_vtn_flowfilter_entry_t *vtn_ffe_cdkey = reinterpret_cast + (ConfigKeyVal::Malloc + (sizeof(key_vtn_flowfilter_entry_t))); + uuu::upll_strncpy(vtn_ffe_cdkey->flowfilter_key.vtn_key.vtn_name, + vtn_ikey->vtn_name, kMaxLenVtnName+1); + vtn_ffe_cdkey->flowfilter_key.input_direction = 0xFE; + ffe_cdkey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + vtn_ffe_cdkey, NULL); + + upll_rc_t result_cand = ReadConfigDB(ffe_cdkey, UPLL_DT_CANDIDATE, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_cand != UPLL_RC_SUCCESS && + result_cand != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ffe_imkey); + DELETE_IF_NOT_NULL(ffe_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + if ((result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE || + result_import == UPLL_RC_SUCCESS) && + result_cand == UPLL_RC_SUCCESS) { + /* If the UNC has flow-filter entries, then ignore the imported ctrlr's + * flowfilter entry if exists and apply the unc's flow-filter entries + * to imported ctrlr */ + + if (result_import == UPLL_RC_SUCCESS) { + /* If both VTN's are same, + * skip the imported ctrl's flow-filter entry, when UNC + * has flow-filter entry. + * Then get the flowlist name from incoming key and decremet the + * refcount in FLCTRL tbl in UNC candidate ff ctrl tbl. so that the + * imported ctrl's flowlist and entries will not be applied into + * PFC during Audit */ + ConfigKeyVal *tmp_ffe_imkey = ffe_imkey; + result_code = DecRefCountInFLCtrlTbl(ffe_imkey, dmi); + DELETE_IF_NOT_NULL(tmp_ffe_imkey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err in DecRefCountInFLCtrl (%d)", result_code); + DELETE_IF_NOT_NULL(ffe_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + } + + /* Get the list of this VTN associated ctrlr and domain */ + std::list list_ctrlr_dom; + upll_rc_t vtn_ctrlr_span_rt_code = GetVtnControllerSpan( + ffe_cdkey, + UPLL_DT_IMPORT, + dmi, + list_ctrlr_dom); + if (vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ffe_cdkey); + if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetVtnControllerSpan error code (%d)", + vtn_ctrlr_span_rt_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + /* If ctrl and domain name not exist in VTN ctrl tbl, then + continue with the next VTN in import db */ + ckval = ckval->get_next_cfg_key_val(); + continue; + } + + ConfigKeyVal *tmp_ffe_cdkey = ffe_cdkey; + while (ffe_cdkey != NULL) { + std::list::iterator it= list_ctrlr_dom.begin(); + while (it != list_ctrlr_dom.end()) { + // Create the entry in ctrlr table with as per the ctrlr and domain + ConfigKeyVal *ctrlckv = NULL; + GET_USER_DATA_FLAGS(ffe_cdkey, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + key_vtn_flowfilter_entry_t *vtn_ffe_key = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); + memcpy(vtn_ffe_key, reinterpret_cast + (ffe_cdkey->get_key()), sizeof(key_vtn_flowfilter_entry_t)); + + val_vtn_flowfilter_entry_t *vtn_ffe_val = reinterpret_cast + (GetVal(ffe_cdkey)); + + val_vtn_flowfilter_entry_ctrlr_t *ctrlr_val = reinterpret_cast + ( + ConfigKeyVal::Malloc(sizeof + (val_vtn_flowfilter_entry_ctrlr_t))); + + /* Get the VALID from main table record and update into ctrl tbl*/ + for (unsigned int loop = 0; + loop < (sizeof(ctrlr_val->valid)/sizeof(ctrlr_val->valid[0])); + loop++) { + if (UNC_VF_NOT_SUPPORTED == vtn_ffe_val->valid[loop]) { + ctrlr_val->valid[loop] = UNC_VF_INVALID; + } else { + ctrlr_val->valid[loop] = vtn_ffe_val->valid[loop]; + } + } + + ctrlcv = new ConfigVal(IpctSt::kIpcInvalidStNum, ctrlr_val); + ctrlckv = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + vtn_ffe_key, ctrlcv); + + SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, *it); + SET_USER_DATA_FLAGS(ctrlckv, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + /* When apply the UNC's flowfilter entry to imported ctrlr, + * create the record in flctrl tbl(with the flowlist which get + * it from incoming value structure, increment the refcount and + * controller name of imported ctrl). So that the flowlist will + * be apllied into imported ctrl during Audit. Domain name is not + * required in flctrl tbl */ + result_code = flowlist_mgr->AddFlowListToController( + reinterpret_cast(vtn_ffe_val->flowlist_name), dmi, + reinterpret_cast(it->ctrlr), UPLL_DT_CANDIDATE, + UNC_OP_CREATE); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("AddFlowListToController failed err code(%d)", + result_code); + DELETE_IF_NOT_NULL(tmp_ckval); + DELETE_IF_NOT_NULL(tmp_ffe_cdkey); + DELETE_IF_NOT_NULL(ctrlckv); + FREE_LIST_CTRLR(list_ctrlr_dom); + return result_code; + } + + // Create a record in vtn flow-filter entry ctrl tbl + result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, dmi, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err while inserting in ctrlr table(%d)", + result_code); + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(tmp_ffe_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + FREE_LIST_CTRLR(list_ctrlr_dom); + return result_code; + } + DELETE_IF_NOT_NULL(ctrlckv); + ++it; + } + // IsRecordCreatedInFLCtrlrTbl = false; + ffe_cdkey = ffe_cdkey->get_next_cfg_key_val(); + } + FREE_LIST_CTRLR(list_ctrlr_dom); + DELETE_IF_NOT_NULL(tmp_ffe_cdkey); + } else if (result_import == UPLL_RC_SUCCESS && + result_cand == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + /* If candidate does not have flow-filter entry, then skip the imported + ctrlr's flow-filter entries */ + + /* If both VTN's are same and the candidate not have the flow-filter entry, + * skip the imported ctrl's flow-filter entry + * Then get the flowlist name from incoming key and decremet the + * refcount in FLCTRL tbl. so that the imported ctrl's flowlist and entries will + * not be applied into PFC during Audit */ + ConfigKeyVal *tmp_ffe_imkey = ffe_imkey; + result_code = DecRefCountInFLCtrlTbl(ffe_imkey, dmi); + DELETE_IF_NOT_NULL(tmp_ffe_imkey); + DELETE_IF_NOT_NULL(ffe_cdkey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err in DecRefCountInFLCtrl (%d)", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + UPLL_LOG_DEBUG("DecRefCountInFLCtrlTbl success (%d)", result_code); + } else if (result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE && + result_cand == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ffe_imkey); + DELETE_IF_NOT_NULL(ffe_cdkey); + } + } + ckval = ckval->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(tmp_ckval); + return UPLL_RC_SUCCESS; +} + +upll_rc_t VtnFlowFilterEntryMoMgr::DecRefCountInFLCtrlTbl( + ConfigKeyVal *ffe_imkey, DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckval_dom = NULL; + uint8_t *ctrlr_id = NULL; - result_code = vtnmgr->GetControllerDomainSpan(ckey, UPLL_DT_IMPORT, dmi); + VtnMoMgr *vtnmgr = + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + + FlowListMoMgr *flowlist_mgr = reinterpret_cast + (const_cast (GetMoManager(UNC_KT_FLOWLIST))); + if ((NULL == vtnmgr) || (NULL == flowlist_mgr)) { + UPLL_LOG_DEBUG("vtnmgr/flowlist_mgr is NULL"); + return UPLL_RC_ERR_GENERIC; + } + /* Get the VTN associated ctrl name */ + result_code = vtnmgr->GetChildConfigKey(ckval_dom, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey ckval_dom NULL"); + return result_code; + } + + key_vtn_t *vtn_okey = reinterpret_cast + (ckval_dom->get_key()); + key_vtn_flowfilter_entry_t *vtn_ikey = reinterpret_cast + (ffe_imkey->get_key()); + uuu::upll_strncpy(vtn_okey->vtn_name, + vtn_ikey->flowfilter_key.vtn_key.vtn_name, + kMaxLenVtnName+1); + DbSubOp dbop2 = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr}; + result_code = vtnmgr->ReadConfigDB(ckval_dom, UPLL_DT_IMPORT, + UNC_OP_READ, dbop2, dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", result_code); - DELETE_IF_NOT_NULL(ckey); - continue; - } - } - ConfigKeyVal *tmp_ckey = ckey; - while (ckey != NULL) { - ConfigKeyVal *ctrlckv = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom); - GET_USER_DATA_FLAGS(ckval, flag); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - - UPLL_LOG_DEBUG("flag (%d)", flag); - - GetChildConfigKey(ctrlckv, ckval); - SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, ctrlr_dom); - SET_USER_DATA_FLAGS(ctrlckv, flag); - - UPLL_LOG_DEBUG("flag (%d)", flag); - - // Create/Update/Delete a record in CANDIDATE DB - result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, UNC_OP_CREATE, dmi, CTRLRTBL); + UPLL_LOG_DEBUG("VTN ctrltbl read failure (%d)", result_code); + DELETE_IF_NOT_NULL(ckval_dom); + return result_code; + } + + GET_USER_DATA_CTRLR(ckval_dom, ctrlr_id); + while (ffe_imkey != NULL) { + UPLL_LOG_DEBUG("flow-filter not exists in candidate"); + + val_vtn_flowfilter_entry_t *vtn_ffe_val = reinterpret_cast + (GetVal(ffe_imkey)); + + result_code = flowlist_mgr->AddFlowListToController( + reinterpret_cast(vtn_ffe_val->flowlist_name), dmi, + reinterpret_cast(ctrlr_id), UPLL_DT_CANDIDATE, UNC_OP_DELETE); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Err while inserting in ctrlr table for candidateDb(%d)", + UPLL_LOG_DEBUG("AddFlowListToController failed err code(%d)", result_code); - DELETE_IF_NOT_NULL(tmp_ckey); - DELETE_IF_NOT_NULL(tmp_ckval); - DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(ckval_dom); return result_code; } - DELETE_IF_NOT_NULL(ctrlckv); - ckey = ckey->get_next_cfg_key_val(); + ffe_imkey = ffe_imkey->get_next_cfg_key_val(); } - DELETE_IF_NOT_NULL(tmp_ckey); - ckval = ckval->get_next_cfg_key_val(); -} - DELETE_IF_NOT_NULL(tmp_ckval); + DELETE_IF_NOT_NULL(ckval_dom); return UPLL_RC_SUCCESS; } upll_rc_t VtnFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VTN_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("Invalid mgr param"); return UPLL_RC_ERR_GENERIC; @@ -1081,14 +1475,16 @@ upll_rc_t VtnFlowFilterEntryMoMgr::MergeValidate(unc_key_type_t keytype, } upll_rc_t VtnFlowFilterEntryMoMgr::RenameMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, const char *ctrlr_id) { UPLL_FUNC_TRACE; return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } -upll_rc_t VtnFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { +upll_rc_t VtnFlowFilterEntryMoMgr::GetChildConfigKey( + ConfigKeyVal *&okey, + ConfigKeyVal *parent_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtn_flowfilter_entry_t *vtn_ffe_key; @@ -1096,7 +1492,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, if (parent_key == NULL) { vtn_ffe_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); - // If no direction is specified , 0xFE is filled to bind output direction + // If no direction is specified , 0xFE is filled to bind output direction vtn_ffe_key->flowfilter_key.input_direction = 0xFE; okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, IpctSt::kIpcStKeyVtnFlowfilterEntry, @@ -1120,7 +1516,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } else { vtn_ffe_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); - // If no direction is specified , 0xFE is filled to bind output direction + // If no direction is specified , 0xFE is filled to bind output direction vtn_ffe_key->flowfilter_key.input_direction = 0xFE; } switch (parent_key->get_key_type()) { @@ -1161,7 +1557,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, if (vtn_ffe_key) free(vtn_ffe_key); return UPLL_RC_ERR_GENERIC; } - + if ((okey) && !(okey->get_key())) { UPLL_LOG_DEBUG("okey not null and flow list name updated"); okey->SetKey(IpctSt::kIpcStKeyVtnFlowfilterEntry, vtn_ffe_key); @@ -1184,12 +1580,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( upll_rc_t result_code; UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); UPLL_LOG_TRACE("Start Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); if (UNC_KT_VTN_FLOWFILTER_CONTROLLER == ikey->get_key_type()) { - UPLL_LOG_DEBUG("vtn_pm_ctrl vtn name renamed"); - MoMgrImpl *vtn_mgr = reinterpret_cast(const_cast + MoMgrImpl *vtn_mgr = reinterpret_cast( + const_cast (GetMoManager(UNC_KT_VTN))); if (NULL == vtn_mgr) { UPLL_LOG_DEBUG("mgr NULL"); @@ -1201,10 +1597,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); return result_code; } - if (!okey) return UPLL_RC_ERR_GENERIC; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag }; + kOpInOutFlag }; if (ctrlr_dom) { SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); @@ -1215,20 +1610,20 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( } UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name); + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name); result_code = vtn_mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey ReadConfigDB error"); @@ -1237,7 +1632,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( } if (UPLL_RC_SUCCESS == result_code) { val_rename_vtn *rename_val = - reinterpret_cast(GetVal(okey)); + reinterpret_cast(GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("rename_val NULL"); DELETE_IF_NOT_NULL(okey); @@ -1251,19 +1646,19 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( kMaxLenVtnName + 1); UPLL_LOG_DEBUG("renamed vtn_pm_ctrl vtn name (%s) (%s)", - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - rename_val->new_name); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + rename_val->new_name); } DELETE_IF_NOT_NULL(okey); vtn_mgr = NULL; return UPLL_RC_SUCCESS; } - // Check if VTN is renamed on the controller by getting VTN object + // Check if VTN is renamed on the controller by getting VTN object MoMgrImpl *mgr = static_cast - ((const_cast - (GetMoManager(UNC_KT_VTN)))); + ((const_cast + (GetMoManager(UNC_KT_VTN)))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey:GetChildConfigKey returns error"); @@ -1278,9 +1673,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); - // Copy the input VTN Name into the Okey and send it for rename check IN db + // Copy the input VTN Name into the Okey and send it for rename check IN db uuu::upll_strncpy( reinterpret_cast(okey->get_key())->vtn_name, reinterpret_cast @@ -1288,22 +1683,25 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( (kMaxLenVtnName + 1)); UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->flowfilter_key.vtn_key.vtn_name) + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->flowfilter_key.vtn_key.vtn_name) - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; result_code = mgr->ReadConfigDB(okey, - dt_type, - UNC_OP_READ, dbop, dmi, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + dt_type, + UNC_OP_READ, dbop, dmi, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("GetRenamedControllerKey:Read Configuration Error"); DELETE_IF_NOT_NULL(okey); return result_code; } if (UPLL_RC_SUCCESS == result_code) { val_rename_vtn *rename_val =reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("Rename structure for VTN is not available"); DELETE_IF_NOT_NULL(okey); @@ -1318,75 +1716,70 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedControllerKey( } DELETE_IF_NOT_NULL(okey); val_vtn_flowfilter_entry_t *val_vtn_flofilter_entry =reinterpret_cast - (GetVal(ikey)); - if (val_vtn_flofilter_entry) { - if (UNC_VF_VALID == val_vtn_flofilter_entry - ->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { - // Flowlist is Renamed - MoMgrImpl *mgr_flowlist = static_cast - ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); - - result_code = mgr_flowlist->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail"); - return result_code; - } + (GetVal(ikey)); - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + if (NULL == val_vtn_flofilter_entry) { + return UPLL_RC_SUCCESS; + } + if (strlen(reinterpret_cast + (val_vtn_flofilter_entry->flowlist_name)) == 0) { + return UPLL_RC_SUCCESS; + } + MoMgrImpl *mgr_flowlist = static_cast + ((const_cast (GetMoManager(UNC_KT_FLOWLIST)))); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); - if (!GetVal(ikey)) - return UPLL_RC_SUCCESS; - uuu::upll_strncpy( - reinterpret_cast - (okey->get_key())->flowlist_name, - reinterpret_cast (ikey->get_cfg_val()-> - get_val())->flowlist_name, - (kMaxLenFlowListName + 1)); - UPLL_LOG_DEBUG("flowlist name (%s) (%s)", - reinterpret_cast - (okey->get_key())->flowlist_name, - reinterpret_cast (ikey->get_cfg_val()-> - get_val())->flowlist_name); - DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = mgr_flowlist->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop1, dmi, - RENAMETBL); /* ctrlr_name */ - if (UPLL_RC_SUCCESS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("GetRenamedControllerKey:Read Configuration Error"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - if (UPLL_RC_SUCCESS == result_code) { - val_rename_flowlist *rename_val =reinterpret_cast - (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("flowlist is not valid"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + result_code = mgr_flowlist->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } - uuu::upll_strncpy( - reinterpret_cast - (ikey->get_cfg_val()->get_val())->flowlist_name, - rename_val->flowlist_newname, - (kMaxLenFlowListName + 1)); - //SET_USER_DATA_FLAGS(ikey, rename); - } + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); + + uuu::upll_strncpy( + reinterpret_cast + (okey->get_key())->flowlist_name, + reinterpret_cast (ikey->get_cfg_val()-> + get_val())->flowlist_name, + (kMaxLenFlowListName + 1)); + UPLL_LOG_DEBUG("flowlist name (%s) (%s)", + reinterpret_cast + (okey->get_key())->flowlist_name, + reinterpret_cast + (ikey->get_cfg_val()-> + get_val())->flowlist_name); + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; + result_code = mgr_flowlist->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop1, dmi, RENAMETBL); + /* ctrlr_name */ + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("GetRenamedControllerKey:Read Configuration Error"); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { + val_rename_flowlist *rename_val =reinterpret_cast + (GetVal(okey)); + if (!rename_val) { + UPLL_LOG_DEBUG("flowlist is not valid"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; } + + uuu::upll_strncpy( + reinterpret_cast + (ikey->get_cfg_val()->get_val())->flowlist_name, + rename_val->flowlist_newname, + (kMaxLenFlowListName + 1)); } DELETE_IF_NOT_NULL(okey); UPLL_LOG_TRACE("End Input ConfigKeyVal %s", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); return UPLL_RC_SUCCESS; } + upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id) { @@ -1395,13 +1788,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( ConfigKeyVal *unc_key = NULL; DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; UPLL_LOG_TRACE("%s GetRenamedUncKey vtnffentry start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if ((ikey == NULL) || (ctrlr_id == NULL) || (dmi == NULL)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); return UPLL_RC_ERR_GENERIC; } val_rename_vtn *rename_vtn_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); if (!rename_vtn_key) { UPLL_LOG_DEBUG("rename_vtn_key NULL"); @@ -1421,8 +1814,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( rename_vtn_key->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; MoMgrImpl *mgr = static_cast - ((const_cast - (GetMoManager(UNC_KT_VTN)))); + ((const_cast + (GetMoManager(UNC_KT_VTN)))); if (!mgr) { UPLL_LOG_TRACE("mgr failed"); if (rename_vtn_key) free(rename_vtn_key); @@ -1444,7 +1837,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn_key); result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, - dmi, RENAMETBL); + dmi, RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -1462,7 +1855,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( mgr = NULL; DELETE_IF_NOT_NULL(unc_key); val_rename_flowlist *rename_fl =reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist))); + (ConfigKeyVal::Malloc(sizeof(val_rename_flowlist))); if (!rename_fl) { UPLL_LOG_DEBUG("rename_fl NULL"); return UPLL_RC_ERR_GENERIC; @@ -1475,7 +1868,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( return UPLL_RC_SUCCESS; } if (UNC_VF_VALID != val_vtn_flofilter_entry - ->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { + ->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { UPLL_LOG_DEBUG("flowlist invalid"); free(rename_fl); return UPLL_RC_SUCCESS; @@ -1486,8 +1879,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( rename_fl->valid[UPLL_IDX_RENAME_FLOWLIST_RFL] = UNC_VF_VALID; mgr = static_cast - ((const_cast - (GetMoManager(UNC_KT_FLOWLIST)))); + ((const_cast + (GetMoManager(UNC_KT_FLOWLIST)))); if (!mgr) { UPLL_LOG_TRACE("mgr failed"); if (rename_fl) free(rename_fl); @@ -1519,14 +1912,14 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetRenamedUncKey( } if (result_code == UPLL_RC_SUCCESS) { - key_flowlist_t *key_flowlist = reinterpret_cast - (unc_key->get_key()); + key_flowlist_t *key_flowlist = reinterpret_cast + (unc_key->get_key()); uuu::upll_strncpy(val_vtn_flofilter_entry->flowlist_name, key_flowlist->flowlist_name, (kMaxLenFlowListName + 1)); } UPLL_LOG_TRACE("%s GetRenamedUncKey vtnffentry end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; return UPLL_RC_SUCCESS; @@ -1537,27 +1930,27 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) { - UPLL_LOG_DEBUG(" DupConfigKeyVal failed. Input ConfigKeyVal is NULL"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG(" DupConfigKeyVal failed. Input ConfigKeyVal is NULL"); + return UPLL_RC_ERR_GENERIC; } if (okey != NULL) { - UPLL_LOG_DEBUG(" DupConfigKeyVal failed. Output ConfigKeyVal is NULL"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG(" DupConfigKeyVal failed. Output ConfigKeyVal is NULL"); + return UPLL_RC_ERR_GENERIC; } if ((req->get_key_type() != UNC_KT_VTN_FLOWFILTER_ENTRY )&& - (req->get_key_type() != UNC_KT_VTN_FLOWFILTER_CONTROLLER)) { - UPLL_LOG_DEBUG("Invalid keytype"); - return UPLL_RC_ERR_GENERIC; + (req->get_key_type() != UNC_KT_VTN_FLOWFILTER_CONTROLLER)) { + UPLL_LOG_DEBUG("Invalid keytype"); + return UPLL_RC_ERR_GENERIC; } ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); if (tmp) { if (tbl == MAINTBL) { val_vtn_flowfilter_entry_t *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); if (NULL != ival) { val_vtn_flowfilter_entry_t *flowfilter_val =reinterpret_cast - + (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); memcpy(flowfilter_val, ival, sizeof(val_vtn_flowfilter_entry_t)); @@ -1567,11 +1960,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } if (tbl == CTRLRTBL) { val_vtn_flowfilter_entry_ctrlr_t *ival = reinterpret_cast - (GetVal(req)); + (GetVal(req)); if (NULL != ival) { val_vtn_flowfilter_entry_ctrlr_t *flowfilter_val =reinterpret_cast - (ConfigKeyVal::Malloc(sizeof - (val_vtn_flowfilter_entry_ctrlr_t))); + ( + ConfigKeyVal::Malloc(sizeof + (val_vtn_flowfilter_entry_ctrlr_t))); memcpy(flowfilter_val, ival, sizeof(val_vtn_flowfilter_entry_ctrlr_t)); tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, @@ -1581,7 +1975,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } if (tmp1) { tmp1->set_user_data(tmp->get_user_data()); - // tmp = tmp->get_next_cfg_val();// COV UNUSED + // tmp = tmp->get_next_cfg_val();// COV UNUSED } void *tkey = (req)->get_key(); if (!tkey) { @@ -1589,7 +1983,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } key_vtn_flowfilter_entry_t *ikey =reinterpret_cast - (tkey); + (tkey); key_vtn_flowfilter_entry_t *vtn_flowfilterentrykey =reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t(*ikey)))); @@ -1598,7 +1992,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, IpctSt::kIpcStKeyVtnFlowfilterEntry, vtn_flowfilterentrykey, tmp1); SET_USER_DATA(okey, req); - // delete okey; + // delete okey; return UPLL_RC_SUCCESS; } @@ -1612,7 +2006,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UNC_OP_UPDATE }; int nop = sizeof(op) / sizeof(op[0]); ConfigKeyVal *vtn_ffe_key = NULL, *req = NULL, *nreq = NULL , - *vtn_ffe_run_key = NULL , *vtn_ffe_run_ctrl_key = NULL, *vtn_ck_run= NULL; + *vtn_ffe_run_key = NULL , + *vtn_ffe_run_ctrl_key = NULL, + *vtn_ck_run= NULL; DalCursor *cfg1_cursor = NULL; uint8_t *ctrlr_id = NULL; @@ -1620,37 +2016,34 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( CtrlrCommitStatusList::iterator ccsListItr; CtrlrCommitStatus *ccStatusPtr; - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { - UPLL_LOG_DEBUG( - "TxCopy:ctrlr_commit_status is NULL"); - - return UPLL_RC_ERR_GENERIC; - } - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - // ctrlr_id = reinterpret_cast((const_cast + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { + ccStatusPtr = *ccsListItr; + // ctrlr_id = reinterpret_cast((const_cast // (ccStatusPtr->ctrlr_id.c_str()))); - ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; ck_err = - ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, - ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG( - "TxCopy:GetRenamedUncKey is failed, resultcode= %d", - result_code); + ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; + ck_err = + ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG( + "TxCopy:GetRenamedUncKey is failed, resultcode= %d", + result_code); - return result_code; + return result_code; + } } } } } - for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; if (op[i] != UNC_OP_UPDATE) { result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, nreq, &cfg1_cursor, dmi, NULL, MAINTBL, true); @@ -1659,7 +2052,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( result_code = DalToUpllResCode(db_result); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("No diff found for op %d", op[i]); + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); break; } result_code = UpdateMainTbl(req, op[i], UPLL_RC_SUCCESS, @@ -1667,7 +2060,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Updating Main table Error %d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -1683,6 +2076,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; MoMgrTables tbl = (op[i] == UNC_OP_UPDATE)?MAINTBL:CTRLRTBL; result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, nreq, &cfg1_cursor, dmi, NULL, tbl, true); @@ -1692,7 +2086,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( result_code = DalToUpllResCode(db_result); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("!!! No diff found for op %d", op[i]); + UPLL_LOG_DEBUG("No more diff found for operation %d", op[i]); break; } if (op[i] == UNC_OP_UPDATE) { @@ -1703,12 +2097,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; } - result_code = ReadConfigDB(vtn_ffe_ctrlr_key,UPLL_DT_CANDIDATE, + result_code = ReadConfigDB(vtn_ffe_ctrlr_key, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { delete vtn_ffe_ctrlr_key; @@ -1723,7 +2117,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( } } else { if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -1734,21 +2128,21 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( GET_USER_DATA_CTRLR(tmp, ctrlr_id); string controller(reinterpret_cast (ctrlr_id)); UPLL_LOG_DEBUG("Controller ID =%s", controller.c_str()); - DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, - kOpInOutFlag |kOpInOutCs }; + DbSubOp dbop_maintbl = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag |kOpInOutCs }; DbSubOp dbop_ctrtbl = { kOpReadSingle, kOpMatchCtrlr | - kOpMatchDomain, kOpInOutFlag | kOpInOutCs }; + kOpMatchDomain, kOpInOutFlag | kOpInOutCs }; result_code = GetChildConfigKey(vtn_ffe_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; } - result_code = ReadConfigDB(vtn_ffe_key,UPLL_DT_CANDIDATE , + result_code = ReadConfigDB(vtn_ffe_key, UPLL_DT_CANDIDATE , UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); @@ -1762,14 +2156,14 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( static_cast (GetVal(vtn_ffe_key))->cs_row_status = static_cast - (GetVal(nreq))->cs_row_status; - // For Reading The Main table for config status + (GetVal(nreq))->cs_row_status; + // For Reading The Main table for config status result_code = GetChildConfigKey(vtn_ffe_run_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -1778,21 +2172,21 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UNC_OP_READ, dbop_maintbl, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from RunningDB"); - DELETE_IF_NOT_NULL(vtn_ffe_key); + DELETE_IF_NOT_NULL(vtn_ffe_key); DELETE_IF_NOT_NULL(vtn_ffe_run_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; } - // For Reading The controller table for config status + // For Reading The controller table for config status result_code = GetChildConfigKey(vtn_ffe_run_ctrl_key, tmp); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -1801,8 +2195,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UNC_OP_READ, dbop_ctrtbl, dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read configuration from RunningDb"); - DELETE_IF_NOT_NULL(vtn_ffe_key); - DELETE_IF_NOT_NULL(vtn_ffe_run_key); + DELETE_IF_NOT_NULL(vtn_ffe_key); + DELETE_IF_NOT_NULL(vtn_ffe_run_key); DELETE_IF_NOT_NULL(vtn_ffe_run_ctrl_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -1811,35 +2205,42 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( return result_code; } val_vtn_flowfilter_entry_ctrlr *val_ctrlr_can = reinterpret_cast - (GetVal(tmp)); + (GetVal(tmp)); val_vtn_flowfilter_entry_ctrlr *val_ctrlr_run = reinterpret_cast - (GetVal(vtn_ffe_run_ctrl_key)); + (GetVal(vtn_ffe_run_ctrl_key)); val_ctrlr_can->cs_row_status =val_ctrlr_run->cs_row_status; for (unsigned int loop = 0; loop < sizeof(val_ctrlr_run->valid)/ - sizeof(val_ctrlr_run->valid[0]); ++loop) { - val_ctrlr_can->cs_attr[loop] = val_ctrlr_run->cs_attr[loop]; + sizeof(val_ctrlr_run->valid[0]); ++loop) { + val_ctrlr_can->cs_attr[loop] = val_ctrlr_run->cs_attr[loop]; } - // End Reading The controller table for config status + // End Reading The controller table for config status val_vtn_flowfilter_entry_t *val_main_can = reinterpret_cast - (GetVal(vtn_ffe_key)); + (GetVal(vtn_ffe_key)); val_vtn_flowfilter_entry_t *val_main = reinterpret_cast - (GetVal(vtn_ffe_run_key)); + (GetVal(vtn_ffe_run_key)); for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { + sizeof(val_main->valid[0]); ++loop) { val_main_can->cs_attr[loop] = val_main->cs_attr[loop]; } DELETE_IF_NOT_NULL(vtn_ffe_run_ctrl_key); - result_code = UpdateConfigStatus(vtn_ffe_key, op[i], - ctrlr_result[controller], - nreq, dmi, tmp); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + result_code = UpdateConfigStatus(vtn_ffe_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + nreq, dmi, tmp); + } else { + result_code = UpdateConfigStatus(vtn_ffe_key, op[i], + ctrlr_result[controller], + nreq, dmi, tmp); + } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigStatus failed, err %d", result_code); break; } - DELETE_IF_NOT_NULL(vtn_ffe_run_key); - DELETE_IF_NOT_NULL(vtn_ffe_run_ctrl_key); + DELETE_IF_NOT_NULL(vtn_ffe_run_key); + DELETE_IF_NOT_NULL(vtn_ffe_run_ctrl_key); void *vtnffe_ctrlval = GetVal(tmp); CompareValidVal(vtnffe_ctrlval, GetVal(nreq), GetVal(req), false); result_code = UpdateConfigDB(tmp, UPLL_DT_RUNNING, @@ -1867,12 +2268,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( } EnqueCfgNotification(op[i], UPLL_DT_RUNNING, vtn_ffe_key); - DELETE_IF_NOT_NULL(vtn_ffe_key); + DELETE_IF_NOT_NULL(vtn_ffe_key); } } else { - if (op[i] == UNC_OP_CREATE ) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag - | kOpInOutCs }; + if (op[i] == UNC_OP_CREATE) { + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag + | kOpInOutCs }; result_code = GetChildConfigKey(vtn_ffe_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", @@ -1885,8 +2286,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( } result_code = ReadConfigDB(vtn_ffe_key, UPLL_DT_RUNNING , UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE ) { + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE ) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -1897,7 +2298,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( result_code = DupConfigKeyVal(vtn_ffe_ctrlr_key, req, tbl); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to create duplicate ConfigKeyVal Err (%d)", - result_code); + result_code); delete vtn_ffe_key; if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -1905,23 +2306,31 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(nreq); return result_code; } - // set consolidated config status to UNKNOWN to init vtn cs_status - // to the cs_status of first controller + // set consolidated config status to UNKNOWN to init vtn cs_status + // to the cs_status of first controller uint32_t cur_instance_count; result_code = GetInstanceCount(vtn_ffe_key, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); + UPLL_DT_CANDIDATE, &cur_instance_count, + dmi, CTRLRTBL); if ((result_code == UPLL_RC_SUCCESS) && (cur_instance_count == 1)) reinterpret_cast - (GetVal(vtn_ffe_key))->cs_row_status = UNC_CS_UNKNOWN ; + (GetVal(vtn_ffe_key))->cs_row_status = UNC_CS_UNKNOWN; GET_USER_DATA_CTRLR(vtn_ffe_ctrlr_key, ctrlr_id); string controller(reinterpret_cast (ctrlr_id)); - result_code = UpdateConfigStatus(vtn_ffe_key, op[i], - ctrlr_result[controller], nreq , - dmi,vtn_ffe_ctrlr_key ); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + result_code = UpdateConfigStatus(vtn_ffe_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + nreq , + dmi, vtn_ffe_ctrlr_key); + } else { + result_code = UpdateConfigStatus(vtn_ffe_key, op[i], + ctrlr_result[controller], nreq , + dmi, vtn_ffe_ctrlr_key); + } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in updating configstatus, resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(vtn_ffe_ctrlr_key); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -1929,34 +2338,34 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( } } else if (op[i] == UNC_OP_DELETE) { - // Reading Main Running DB for delete op - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag - | kOpInOutCs }; - result_code = GetChildConfigKey(vtn_ck_run, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } - result_code = ReadConfigDB(vtn_ck_run, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); - DELETE_IF_NOT_NULL(vtn_ck_run); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - return result_code; - } + // Reading Main Running DB for delete op + DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag + | kOpInOutCs }; + result_code = GetChildConfigKey(vtn_ck_run, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", + result_code); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } + result_code = ReadConfigDB(vtn_ck_run, UPLL_DT_RUNNING, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); + DELETE_IF_NOT_NULL(vtn_ck_run); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + return result_code; + } GET_USER_DATA_CTRLR(req, ctrlr_id); if (result_code == UPLL_RC_SUCCESS) { - result_code = SetVtnFFEntryConsolidatedStatus(vtn_ck_run, + result_code = SetVtnFFEntryConsolidatedStatus(vtn_ck_run, ctrlr_id, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", - result_code); + UPLL_LOG_DEBUG("Could not set consolidated status %d", + result_code); DELETE_IF_NOT_NULL(vtn_ck_run); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -1964,8 +2373,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(nreq); return result_code; } - } - DELETE_IF_NOT_NULL(vtn_ck_run); + } + DELETE_IF_NOT_NULL(vtn_ck_run); result_code = GetChildConfigKey(vtn_ffe_ctrlr_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in getting the configkey, resultcode=%d", @@ -1984,7 +2393,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UPLL_LOG_DEBUG("DB Error while updating controller table. err:%d", result_code); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(vtn_ck_run); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); @@ -2009,7 +2418,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( EnqueCfgNotification(op[i], UPLL_DT_RUNNING, vtn_ffe_key); } - // delete vtn_flowfilter_entry_ctrlr_key; + // delete vtn_flowfilter_entry_ctrlr_key; if (vtn_ffe_key) delete vtn_ffe_key; DELETE_IF_NOT_NULL(vtn_ffe_ctrlr_key); vtn_ffe_key = vtn_ffe_ctrlr_key = NULL; @@ -2026,11 +2435,11 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UPLL_LOG_DEBUG("TxCopy returned with resultcode %d", result_code); return result_code; } - - upll_rc_t - VtnFlowFilterEntryMoMgr::SetVtnFFEntryConsolidatedStatus(ConfigKeyVal *ikey, - uint8_t *ctrlr_id, - DalDmlIntf *dmi) { + +upll_rc_t +VtnFlowFilterEntryMoMgr::SetVtnFFEntryConsolidatedStatus(ConfigKeyVal *ikey, + uint8_t *ctrlr_id, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ctrlr_ckv = NULL; @@ -2039,7 +2448,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( bool applied = false, not_applied = false, invalid = false; unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; if (!ikey || !dmi) { UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; @@ -2049,9 +2458,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", result_code); return result_code; } - result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, - CTRLRTBL); + result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, + UNC_OP_READ, dbop, dmi, + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB from ctrltbl failed err code %d", result_code); @@ -2060,10 +2469,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( } for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { - + tmp = tmp->get_next_cfg_key_val()) { ctrlr_val = reinterpret_cast - (GetVal(tmp)); + (GetVal(tmp)); if (!ctrlr_val) { UPLL_LOG_DEBUG("Controller Value is empty"); tmp = NULL; @@ -2074,22 +2482,22 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( UPLL_LOG_DEBUG("Controllername from DB %s", vtn_ffe_exist_on_ctrlr); if (!strcmp(reinterpret_cast(vtn_ffe_exist_on_ctrlr), reinterpret_cast(ctrlr_id))) - continue; // skipping entry of deleted controller + continue; // skipping entry of deleted controller switch (ctrlr_val->cs_row_status) { case UNC_CS_APPLIED: applied = true; - break; + break; case UNC_CS_NOT_APPLIED: not_applied = true; - break; + break; case UNC_CS_INVALID: invalid = true; - break; + break; default: UPLL_LOG_DEBUG("Invalid status"); DELETE_IF_NOT_NULL(ctrlr_ckv); - // return UPLL_RC_ERR_GENERIC; + // return UPLL_RC_ERR_GENERIC; } vtn_ffe_exist_on_ctrlr = NULL; } @@ -2105,51 +2513,52 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxCopyCandidateToRunning( c_status = UNC_CS_APPLIED; } applied = not_applied = false; - // Set cs_status - val_vtn_flowfilter_entry_t *vtn_ffe_val = - static_cast(GetVal(ikey)); + // Set cs_status + val_vtn_flowfilter_entry_t *vtn_ffe_val = + static_cast(GetVal(ikey)); vtn_ffe_val->cs_row_status = c_status; for (unsigned int loop = 0; loop < sizeof(vtn_ffe_val->valid)/ - sizeof(vtn_ffe_val->valid[0]); ++loop) { + sizeof(vtn_ffe_val->valid[0]); ++loop) { for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { - ctrlr_val = reinterpret_cast(GetVal(tmp)); + tmp = tmp->get_next_cfg_key_val()) { + ctrlr_val = reinterpret_cast + (GetVal(tmp)); GET_USER_DATA_CTRLR(tmp, vtn_ffe_exist_on_ctrlr); if (!strcmp(reinterpret_cast(vtn_ffe_exist_on_ctrlr), - reinterpret_cast(ctrlr_id))) - continue; // skipping entry of deleted controller - if (ctrlr_val->valid[loop] == UNC_VF_VALID) { + reinterpret_cast(ctrlr_id))) + continue; // skipping entry of deleted controller + if (ctrlr_val->valid[loop] == UNC_VF_VALID) { switch (ctrlr_val->cs_attr[loop]) { case UNC_CS_APPLIED: applied = true; - break; - case UNC_CS_NOT_APPLIED: - not_applied = true; - break; - case UNC_CS_INVALID: - invalid = true; - break; - default: - UPLL_LOG_DEBUG("Invalid status %d", ctrlr_val->cs_attr[loop]); + break; + case UNC_CS_NOT_APPLIED: + not_applied = true; + break; + case UNC_CS_INVALID: + invalid = true; + break; + default: + UPLL_LOG_DEBUG("Invalid status %d", ctrlr_val->cs_attr[loop]); } } } if (invalid) { c_status = UNC_CS_INVALID; } else if (applied && !not_applied) { - c_status = UNC_CS_APPLIED; + c_status = UNC_CS_APPLIED; } else if (!applied && not_applied) { - c_status = UNC_CS_NOT_APPLIED; + c_status = UNC_CS_NOT_APPLIED; } else if (applied && not_applied) { - c_status = UNC_CS_PARTIALLY_APPLIED; + c_status = UNC_CS_PARTIALLY_APPLIED; } else { - c_status = UNC_CS_APPLIED; + c_status = UNC_CS_APPLIED; } vtn_ffe_val->cs_attr[loop] = c_status; applied = not_applied =false; } - + DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, @@ -2170,20 +2579,20 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus( val_vtn_flowfilter_entry_t *vtn_ff_entry_val = reinterpret_cast (GetVal(vtn_flow_filter_entry_key)); val_vtn_flowfilter_entry_ctrlr *ctrlr_val_ff_entry = - reinterpret_cast (GetVal(ctrlr_key)); + reinterpret_cast (GetVal(ctrlr_key)); if ((vtn_ff_entry_val == NULL) || (ctrlr_val_ff_entry == NULL)) { - UPLL_LOG_DEBUG("Memory Allocation failed for Valstructure"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Memory Allocation failed for Valstructure"); + return UPLL_RC_ERR_GENERIC; } if (op == UNC_OP_CREATE) { - /* for (unsigned int ctrl_attr = 0; ctrl_attr < - sizeof(ctrlr_val_ff_entry->valid) / sizeof(ctrlr_val_ff_entry->valid[0]); - ++ctrl_attr) { - ctrlr_val_ff_entry->valid[ctrl_attr] = UNC_VF_INVALID; - } -*/ + /* for (unsigned int ctrl_attr = 0; ctrl_attr < + sizeof(ctrlr_val_ff_entry->valid) / sizeof(ctrlr_val_ff_entry->valid[0]); + ++ctrl_attr) { + ctrlr_val_ff_entry->valid[ctrl_attr] = UNC_VF_INVALID; + } + */ /* update the vtn status in main tbl */ switch (vtn_ff_entry_val->cs_row_status) { case UNC_CS_UNKNOWN: @@ -2192,7 +2601,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus( case UNC_CS_PARTIALLY_APPLIED: if (ctrlr_val_ff_entry->cs_row_status == UNC_CS_NOT_APPLIED) { - // if this vtn has caused it then to change to applied. + // if this vtn has caused it then to change to applied. } break; case UNC_CS_APPLIED: @@ -2205,8 +2614,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus( } vtn_ff_entry_val->cs_row_status = status; for (unsigned int loop = 0; loop < - sizeof(vtn_ff_entry_val->valid) /sizeof(vtn_ff_entry_val->valid[0]); - ++loop) { + sizeof(vtn_ff_entry_val->valid) /sizeof(vtn_ff_entry_val->valid[0]); + ++loop) { if (UNC_VF_NOT_SUPPORTED == vtn_ff_entry_val->valid[loop]) { vtn_ff_entry_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; continue; @@ -2216,11 +2625,11 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus( continue; } if ((UNC_VF_VALID == vtn_ff_entry_val->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == vtn_ff_entry_val->valid[loop])) + (UNC_VF_VALID_NO_VALUE == vtn_ff_entry_val->valid[loop])) if (ctrlr_val_ff_entry->valid[loop] != UNC_VF_NOT_SUPPORTED) { ctrlr_val_ff_entry->cs_attr[loop] = cs_status; vtn_ff_entry_val->cs_attr[loop] = - static_cast(vtn_ff_entry_val->cs_row_status); + static_cast(vtn_ff_entry_val->cs_row_status); } } } else if (op == UNC_OP_UPDATE) { @@ -2228,16 +2637,16 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus( CompareValidValue(vtnffval, GetVal(nreq), false); for (unsigned int loop = 0; - loop < sizeof(ctrlr_val_ff_entry->valid) / sizeof( - ctrlr_val_ff_entry->valid[0]); - ++loop) { + loop < sizeof(ctrlr_val_ff_entry->valid) / sizeof( + ctrlr_val_ff_entry->valid[0]); + ++loop) { if (ctrlr_val_ff_entry->valid[loop] != UNC_VF_NOT_SUPPORTED) { ctrlr_val_ff_entry->cs_attr[loop] = cs_status; } else { ctrlr_val_ff_entry->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; vtn_ff_entry_val->cs_attr[loop] = - static_cast(vtn_ff_entry_val->cs_row_status); - } + static_cast(vtn_ff_entry_val->cs_row_status); + } } } return result_code; @@ -2245,28 +2654,30 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus( #endif upll_rc_t VtnFlowFilterEntryMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtn_flowfilter_entry_ctrlr *val; val = (ckv_running != NULL)? - reinterpret_cast - (GetVal(ckv_running)):NULL; + reinterpret_cast + (GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } @@ -2292,28 +2703,28 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, std::list< unc_keytype_configstatus_t > list_cs_attr; val_vtn_flowfilter_entry_ctrlr *val; for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { + ++loop) { std::list< unc_keytype_configstatus_t > list_attr; vec_attr.push_back(list_attr); } ConfigKeyVal *temp_ckv = ckv; for (; temp_ckv != NULL; temp_ckv = temp_ckv->get_next_cfg_key_val()) { - val = reinterpret_cast - (GetVal(temp_ckv)); - list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); - for (unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { - vec_attr[loop].push_back( - (unc_keytype_configstatus_t)val->cs_attr[loop]); + val = reinterpret_cast + (GetVal(temp_ckv)); + list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); + for (unsigned int loop = 0; + loop < sizeof(val->valid)/sizeof(val->valid[0]); + ++loop) { + vec_attr[loop].push_back( + (unc_keytype_configstatus_t)val->cs_attr[loop]); } } DELETE_IF_NOT_NULL(ckv); val_vtn_flowfilter_entry_t *val_temp = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(val->valid[0]); - ++loop) { + ++loop) { val_temp->cs_attr[loop] = GetConsolidatedCsStatus(vec_attr[loop]); } result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, @@ -2334,46 +2745,15 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("input key is null"); return UPLL_RC_ERR_GENERIC; } - key_vtn_flowfilter_entry_t *key_vtn_ffe = - reinterpret_cast(ikey->get_key()); - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN_FLOWFILTER))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key not supported - %d", result_code); - return result_code; - } - - key_vtn_flowfilter_t *vtn_ff_key = - reinterpret_cast(okey->get_key()); - uuu::upll_strncpy(vtn_ff_key->vtn_key.vtn_name, - key_vtn_ffe->flowfilter_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); - vtn_ff_key->input_direction = key_vtn_ffe->flowfilter_key.input_direction; - - /* Checks the given vtn exists or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VTN flowfilter key does not exists"); - delete okey; - okey = NULL; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - okey = NULL; + MoMgrImpl *mgr = NULL; - // read val_vtn_flowfilter_entry from ikey + // read val_vtn_flowfilter_entry from ikey val_vtn_flowfilter_entry_t *val_vtn_flowfilter_entry = static_cast( ikey->get_cfg_val()->get_val()); if (val_vtn_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] == UNC_VF_VALID) { - // validate flowlist_name in in FLOWLIST table + // validate flowlist_name in in FLOWLIST table mgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_FLOWLIST))); @@ -2420,7 +2800,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, if (val_vtn_flowfilter_entry->valid[UPLL_IDX_NWN_NAME_VFFE] == UNC_VF_VALID) { - // validate nwm_name in KT_VBR_NWMONITOR table + // validate nwm_name in KT_VBR_NWMONITOR table mgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_VBR_NWMONITOR))); @@ -2471,12 +2851,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateAttribute(ConfigKeyVal *ikey, delete okey; okey = NULL; - } // nwm_name is valid - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } + } // nwm_name is valid UPLL_LOG_DEBUG("ValidateAttribute Successfull."); return result_code; } @@ -2485,7 +2860,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, MoMgrTables tbl) { UPLL_FUNC_TRACE; - void *val; // *ck_nxtval; + void *val; // *ck_nxtval; if (ck_val != NULL) { UPLL_LOG_DEBUG("Memory is already allocated for configval pointer"); return UPLL_RC_ERR_GENERIC; @@ -2497,9 +2872,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::AllocVal(ConfigVal *&ck_val, ck_val = new ConfigVal(IpctSt::kIpcStValVtnFlowfilterEntry, val); break; case CTRLRTBL: - val = ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_ctrlr_t)); - ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); - break; + val = ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_ctrlr_t)); + ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); + break; default: val = NULL; return UPLL_RC_ERR_GENERIC; @@ -2565,21 +2940,21 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadFlowFilterController( (kMaxLenVtnName +1)); key_vtn_ffe_ctrl->flowfilter_key.input_direction = 0xFE; - // vtn is not configured in vtn_ff_entry main tbl - // only vtn/vbr is configured and commited + // vtn is not configured in vtn_ff_entry main tbl + // only vtn/vbr is configured and commited result_code = UpdateConfigDB(dup_ckmain, req->datatype, UNC_OP_READ, dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { UPLL_LOG_DEBUG("Requested Vtn is Not Configured in" - "flowfilterEntryMain Table in Candidate %d", result_code); + "flowfilterEntryMain Table in Candidate %d", result_code); DELETE_IF_NOT_NULL(dup_ckmain); return result_code; } - // vtn is not configured in vtn_ff_entry ctrlr tbl - // vtn/ff/entry is configured but no vbr is configured + // vtn is not configured in vtn_ff_entry ctrlr tbl + // vtn/ff/entry is configured but no vbr is configured - // Setting direction again to 0XFE - // because it will be set to 0 in updateconfigDB + // Setting direction again to 0XFE + // because it will be set to 0 in updateconfigDB key_vtn_ffe_ctrl->flowfilter_key.input_direction = 0xFE; result_code = UpdateConfigDB(dup_ckmain, req->datatype, UNC_OP_READ, dmi, &dbop1, CTRLRTBL); @@ -2614,8 +2989,10 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadFlowFilterController( uuu::upll_strncpy(ctrlr_dom.domain, key_vtn_flowfilter_ctrl->domain_id, (kMaxLenDomainId + 1)); - result_code = ValidateCapability(req, ikey, - reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability( + req, + ikey, + reinterpret_cast(ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Key not supported by controller ReadMo "); FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); @@ -2645,38 +3022,38 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadFlowFilterController( UNC_KT_VTN_FLOWFILTER_CONTROLLER, IpctSt::kIpcStKeyVtnFlowfilterController, l_key_vtn_flowfilter_ctrl, tmp1); - // verifying given reuest is existing in vtn_ff_entry_tbl or not + // verifying given reuest is existing in vtn_ff_entry_tbl or not key_vtn_flowfilter_entry_t *key_ctrl = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); ConfigKeyVal *dup_ckmain = new ConfigKeyVal( - UNC_KT_VTN_FLOWFILTER_ENTRY, - IpctSt::kIpcStKeyVtnFlowfilterEntry, - key_ctrl, NULL); - uuu::upll_strncpy( - key_ctrl->flowfilter_key.vtn_key.vtn_name, - key_vtn_flowfilter_ctrl->vtn_key.vtn_name, - (kMaxLenVtnName +1)); - if ((ival->valid[UPLL_IDX_SEQ_NUM_FFC] == UNC_VF_VALID) || - (ival->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID)) { - if (ival->valid[UPLL_IDX_SEQ_NUM_FFC] == UNC_VF_VALID) { - key_ctrl->sequence_num = ival->sequence_num; - } - if (ival->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID) { - key_ctrl->flowfilter_key.input_direction = ival->direction; - } - result_code = UpdateConfigDB(dup_ckmain, req->datatype, - UNC_OP_READ, dmi, &dbop1, MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Requested Configuration is not Configured in" - "VtnflowfilterEntry Table %d", result_code); - DELETE_IF_NOT_NULL(dup_ckmain); - DELETE_IF_NOT_NULL(l_key); - FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); - FREE_IF_NOT_NULL(ctrlr_dom.domain); - return result_code; - } - } + UNC_KT_VTN_FLOWFILTER_ENTRY, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + key_ctrl, NULL); + uuu::upll_strncpy( + key_ctrl->flowfilter_key.vtn_key.vtn_name, + key_vtn_flowfilter_ctrl->vtn_key.vtn_name, + (kMaxLenVtnName +1)); + if ((ival->valid[UPLL_IDX_SEQ_NUM_FFC] == UNC_VF_VALID) || + (ival->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID)) { + if (ival->valid[UPLL_IDX_SEQ_NUM_FFC] == UNC_VF_VALID) { + key_ctrl->sequence_num = ival->sequence_num; + } + if (ival->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID) { + key_ctrl->flowfilter_key.input_direction = ival->direction; + } + result_code = UpdateConfigDB(dup_ckmain, req->datatype, + UNC_OP_READ, dmi, &dbop1, MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Requested Configuration is not Configured in" + "VtnflowfilterEntry Table %d", result_code); + DELETE_IF_NOT_NULL(dup_ckmain); + DELETE_IF_NOT_NULL(l_key); + FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); + FREE_IF_NOT_NULL(ctrlr_dom.domain); + return result_code; + } + } DELETE_IF_NOT_NULL(dup_ckmain); result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, &ctrlr_dom); @@ -2687,56 +3064,56 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadFlowFilterController( FREE_IF_NOT_NULL(ctrlr_dom.domain); return result_code; } - // Sending the request to driver - IpcResponse ipc_resp; - memset(&ipc_resp, 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(IpcRequest)); - ipc_req.header.clnt_sess_id = req->clnt_sess_id; - ipc_req.header.config_id = req->config_id; - ipc_req.header.operation = UNC_OP_READ; - ipc_req.header.option1 = req->option1; - ipc_req.header.datatype = req->datatype; - - ipc_req.ckv_data = l_key; - if (!IpcUtil::SendReqToDriver( - (const char *)ctrlr_dom.ctrlr, - reinterpret_cast(ctrlr_dom.domain), - PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, - &ipc_req, true, &ipc_resp)) { - UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", - l_key->get_key_type(), - reinterpret_cast(ctrlr_dom.ctrlr)); - DELETE_IF_NOT_NULL(l_key); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); - FREE_IF_NOT_NULL(ctrlr_dom.domain); - return UPLL_RC_ERR_GENERIC; - } + // Sending the request to driver + IpcResponse ipc_resp; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(IpcRequest)); + ipc_req.header.clnt_sess_id = req->clnt_sess_id; + ipc_req.header.config_id = req->config_id; + ipc_req.header.operation = UNC_OP_READ; + ipc_req.header.option1 = req->option1; + ipc_req.header.datatype = req->datatype; + + ipc_req.ckv_data = l_key; + if (!IpcUtil::SendReqToDriver( + (const char *)ctrlr_dom.ctrlr, + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, + &ipc_req, true, &ipc_resp)) { + UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", + l_key->get_key_type(), + reinterpret_cast(ctrlr_dom.ctrlr)); + DELETE_IF_NOT_NULL(l_key); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); + FREE_IF_NOT_NULL(ctrlr_dom.domain); + return UPLL_RC_ERR_GENERIC; + } - if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Request for Key %d failed in %s with error %d", - l_key->get_key_type(), ctrlr_dom.ctrlr, - ipc_resp.header.result_code); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(l_key); - FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); - FREE_IF_NOT_NULL(ctrlr_dom.domain); - return ipc_resp.header.result_code; - } - result_code = ReadControllerStateDetail(ikey, - ipc_resp.ckv_data, - &ctrlr_dom, &okey); - if (result_code!= UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadControllerStateDetail Fail err code (%d)", - result_code); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(l_key); - FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); - FREE_IF_NOT_NULL(ctrlr_dom.domain); - return result_code; - } + if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Request for Key %d failed in %s with error %d", + l_key->get_key_type(), ctrlr_dom.ctrlr, + ipc_resp.header.result_code); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(l_key); + FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); + FREE_IF_NOT_NULL(ctrlr_dom.domain); + return ipc_resp.header.result_code; + } + result_code = ReadControllerStateDetail(ikey, + ipc_resp.ckv_data, + &ctrlr_dom, &okey); + if (result_code!= UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadControllerStateDetail Fail err code (%d)", + result_code); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(l_key); + FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); + FREE_IF_NOT_NULL(ctrlr_dom.domain); + return result_code; + } if (okey != NULL) { ikey->ResetWith(okey); DELETE_IF_NOT_NULL(okey); @@ -2759,7 +3136,7 @@ bool VtnFlowFilterEntryMoMgr::IsValidKey(void *key, uint64_t index) { UPLL_FUNC_TRACE; key_vtn_flowfilter_entry_t *vtn_ff_key = - reinterpret_cast (key); + reinterpret_cast (key); upll_rc_t ret_val; switch (index) { case uudst::vtn_flowfilter_entry::kDbiVtnName: @@ -2771,16 +3148,16 @@ bool VtnFlowFilterEntryMoMgr::IsValidKey(void *key, UPLL_LOG_DEBUG("VTN Name is not valid(%d)", ret_val); return false; } - break; + break; case uudst::vtn_flowfilter_entry::kDbiInputDirection: if (vtn_ff_key->flowfilter_key.input_direction == 0xFE) { - // if operation is read sibling begin or - // read sibling count return false - // for output binding + // if operation is read sibling begin or + // read sibling count return false + // for output binding vtn_ff_key->flowfilter_key.input_direction = 0; return false; } else { - // do normal validation. + // do normal validation. if (!ValidateNumericRange(vtn_ff_key->flowfilter_key.input_direction, (uint8_t) UPLL_FLOWFILTER_DIR_IN, (uint8_t) UPLL_FLOWFILTER_DIR_OUT, @@ -2789,15 +3166,16 @@ bool VtnFlowFilterEntryMoMgr::IsValidKey(void *key, return false; } } - break; + break; case uudst::vtn_flowfilter_entry::kDbiSequenceNum: if (!ValidateNumericRange(vtn_ff_key->sequence_num, - kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, true, - true)) { - UPLL_LOG_DEBUG(" Sequence Number syntax validation failed "); - return false; - } - break; + kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, + true, + true)) { + UPLL_LOG_DEBUG(" Sequence Number syntax validation failed "); + return false; + } + break; } return true; } @@ -2809,34 +3187,37 @@ bool VtnFlowFilterEntryMoMgr::CompareKey(void *key1, void *key2) { key1_vtn_flowfilter = reinterpret_cast(key1); key2_vtn_flowfilter = reinterpret_cast(key2); if (key1_vtn_flowfilter == key2_vtn_flowfilter) { - match =true; + match =true; } if ((!key1_vtn_flowfilter) || (!key2_vtn_flowfilter)) { - match = false; - } else { // COV FORWARD NULL - if (strncmp(reinterpret_cast - (key1_vtn_flowfilter->flowfilter_key.vtn_key.vtn_name), - reinterpret_cast - (key2_vtn_flowfilter->flowfilter_key.vtn_key.vtn_name), - 32) == 0) { - match =true; + match = false; + } else { // COV FORWARD NULL + if (strncmp(reinterpret_cast + (key1_vtn_flowfilter->flowfilter_key.vtn_key.vtn_name), + reinterpret_cast + (key2_vtn_flowfilter->flowfilter_key.vtn_key.vtn_name), + 32) == 0) { + match =true; } } return match; } -upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, - unc_keytype_operation_t op, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { +upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateProcess( + ConfigKeyVal *ck_main, + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { UPLL_FUNC_TRACE; upll_rc_t result_code; -/* read from main table */ + /* read from main table */ ConfigKeyVal *dup_ckmain = NULL; UPLL_LOG_DEBUG("ctrlr : %s; domain : %s op = %d", ctrlr_dom->ctrlr, - ctrlr_dom->domain, op); + ctrlr_dom->domain, op); if (op == UNC_OP_CREATE) { result_code = GetChildConfigKey(dup_ckmain, ck_main); if (result_code != UPLL_RC_SUCCESS) { @@ -2848,28 +3229,27 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("%s Flowfilter entry read failed err %d", - dup_ckmain->ToStrAll().c_str(), result_code); + dup_ckmain->ToStrAll().c_str(), result_code); DELETE_IF_NOT_NULL(dup_ckmain); return result_code; } } else if (op == UNC_OP_UPDATE) { - - result_code = DupConfigKeyVal(dup_ckmain, ck_main, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigkeyval Failed, err %d", result_code); - return result_code; - } + result_code = DupConfigKeyVal(dup_ckmain, ck_main, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigkeyval Failed, err %d", result_code); + return result_code; + } } else { - dup_ckmain = ck_main; + dup_ckmain = ck_main; } /* Get renamed key if key is renamed */ if (op == UNC_OP_DELETE) result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_RUNNING, - dmi, ctrlr_dom); + dmi, ctrlr_dom); else result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_CANDIDATE, - dmi, ctrlr_dom); + dmi, ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed, err %d", result_code); if (op == UNC_OP_UPDATE || op == UNC_OP_CREATE) { @@ -2880,16 +3260,19 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, ipc_resp->header.config_id, op, UPLL_DT_CANDIDATE, dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG("Controller disconnected"); result_code = UPLL_RC_SUCCESS; } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + *driver_resp = true; } + affected_ctrlr_set->insert((const char *)ctrlr_dom->ctrlr); if (op == UNC_OP_UPDATE || op == UNC_OP_CREATE) { - DELETE_IF_NOT_NULL(dup_ckmain); + DELETE_IF_NOT_NULL(dup_ckmain); } + UPLL_LOG_TRACE("Driver response received %d", *driver_resp); return result_code; } @@ -2906,14 +3289,14 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateController( controller_domain ctrlr_dom; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; - DalCursor *dal_cursor_handle; + DalCursor *dal_cursor_handle = NULL; IpcResponse resp; memset(&resp, 0, sizeof(IpcResponse)); unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate) ? UNC_OP_CREATE : ((phase == uuc::kUpllUcpUpdate) ? UNC_OP_UPDATE : ((phase == uuc::kUpllUcpDelete) ?UNC_OP_DELETE:UNC_OP_INVALID)); - + switch (op) { case UNC_OP_CREATE: case UNC_OP_DELETE: @@ -2936,11 +3319,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateController( if (result_code != UPLL_RC_SUCCESS) break; ck_main = NULL; + bool driver_resp = false; if ((op == UNC_OP_CREATE) || (op == UNC_OP_DELETE)) { result_code = GetChildConfigKey(ck_main, req); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfiKey Failed, err %d", result_code); - return result_code; + UPLL_LOG_DEBUG("GetChildConfiKey Failed, err %d", result_code); + return result_code; } GET_USER_DATA_CTRLR_DOMAIN(req, ctrlr_dom); UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, @@ -2950,14 +3334,19 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateController( DELETE_IF_NOT_NULL(ck_main); return UPLL_RC_ERR_GENERIC; } - result_code = TxUpdateProcess(ck_main, &resp, - op, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { + result_code = TxUpdateProcess(ck_main, + &resp, + op, + dmi, + &ctrlr_dom, + affected_ctrlr_set, + &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdateProcess Returns error %d", result_code); upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); + ctrlr_dom.ctrlr); if (UPLL_RC_SUCCESS != local_rc && UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); @@ -2966,12 +3355,16 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateController( result_code = UPLL_RC_ERR_GENERIC; break; } + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = resp.ckv_data; DELETE_IF_NOT_NULL(ck_main); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(resp.ckv_data); + break; } DELETE_IF_NOT_NULL(resp.ckv_data); - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); } else if (op == UNC_OP_UPDATE) { ConfigKeyVal *ck_ctrlr = NULL; result_code = DupConfigKeyVal(ck_main, req, MAINTBL); @@ -2993,6 +3386,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateController( CompareValidValue(main, val_nrec, false); for (ConfigKeyVal *tmp = ck_ctrlr; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { + driver_resp = false; GET_USER_DATA_CTRLR_DOMAIN(tmp, ctrlr_dom); if (ctrlr_dom.ctrlr == NULL || (ctrlr_dom.domain == NULL)) { UPLL_LOG_DEBUG("Invalid controller"); @@ -3008,21 +3402,28 @@ upll_rc_t VtnFlowFilterEntryMoMgr::TxUpdateController( DELETE_IF_NOT_NULL(ck_main); return result_code; } - result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { + result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom, + affected_ctrlr_set, &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdate Process returns with %d", result_code); *err_ckv = temp_ck_main; DELETE_IF_NOT_NULL(resp.ckv_data); DELETE_IF_NOT_NULL(ck_main); DELETE_IF_NOT_NULL(ck_ctrlr); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(resp.ckv_data); + DELETE_IF_NOT_NULL(temp_ck_main); + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(ck_ctrlr); + break; } - affected_ctrlr_set->insert(reinterpret_cast - (ctrlr_dom.ctrlr)); DELETE_IF_NOT_NULL(temp_ck_main); DELETE_IF_NOT_NULL(resp.ckv_data); } DELETE_IF_NOT_NULL(ck_ctrlr); + if (driver_resp || result_code != UPLL_RC_SUCCESS) + break; } DELETE_IF_NOT_NULL(ck_main); } @@ -3044,42 +3445,42 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetValid(void *val, val_vtn_flowfilter_entry_t* l_val_ff = NULL; val_vtn_flowfilter_entry_ctrlr *l_val_ctrl_ff = NULL; if (val == NULL) { - UPLL_LOG_DEBUG("Value structure cannot be null"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_DEBUG("Value structure cannot be null"); + return UPLL_RC_ERR_GENERIC; } if (tbl != MAINTBL && tbl != CTRLRTBL) { valid = NULL; return UPLL_RC_ERR_GENERIC; } - l_val_ff = reinterpret_cast - (val); - l_val_ctrl_ff = reinterpret_cast - (val); - switch (indx) { - case uudst::vtn_flowfilter_entry::kDbiFlowlistName: + l_val_ff = reinterpret_cast + (val); + l_val_ctrl_ff = reinterpret_cast + (val); + switch (indx) { + case uudst::vtn_flowfilter_entry::kDbiFlowlistName: valid = GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, - UPLL_IDX_FLOWLIST_NAME_VFFE); - break; - case uudst::vtn_flowfilter_entry::kDbiNwnName: + UPLL_IDX_FLOWLIST_NAME_VFFE); + break; + case uudst::vtn_flowfilter_entry::kDbiNwnName: valid = GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, - UPLL_IDX_NWN_NAME_VFFE); - break; - case uudst::vtn_flowfilter_entry::kDbiAction: + UPLL_IDX_NWN_NAME_VFFE); + break; + case uudst::vtn_flowfilter_entry::kDbiAction: valid = GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, - UPLL_IDX_ACTION_VFFE); - break; - case uudst::vtn_flowfilter_entry::kDbiDscp: + UPLL_IDX_ACTION_VFFE); + break; + case uudst::vtn_flowfilter_entry::kDbiDscp: valid = GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, - UPLL_IDX_DSCP_VFFE); - break; - case uudst::vtn_flowfilter_entry::kDbiPriority: + UPLL_IDX_DSCP_VFFE); + break; + case uudst::vtn_flowfilter_entry::kDbiPriority: valid = GET_VALID_MAINCTRL(tbl, l_val_ctrl_ff, l_val_ff, - UPLL_IDX_PRIORITY_VFFE); - break; - default: - return UPLL_RC_ERR_GENERIC; - } + UPLL_IDX_PRIORITY_VFFE); + break; + default: + return UPLL_RC_ERR_GENERIC; + } return UPLL_RC_SUCCESS; } @@ -3091,7 +3492,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterEntryKey( upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; /** Validate vtn_key structure */ VtnMoMgr *mgrvtn = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VTN))); + const_cast(GetMoManager(UNC_KT_VTN))); if (NULL == mgrvtn) { UPLL_LOG_DEBUG("unable to get VtnMoMgr object to validate key_vtn"); @@ -3103,17 +3504,18 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterEntryKey( if (UPLL_RC_SUCCESS != rt_code) { UPLL_LOG_DEBUG(" Vtn name syntax validation failed :" - "Err Code - %d", - rt_code); + "Err Code - %d", + rt_code); return rt_code; } /* Validate inputdirection is in the range specified in - enum FlowFilter_Direction */ + enum FlowFilter_Direction */ if (!ValidateNumericRange( - key_vtn_flowfilter_entry->flowfilter_key.input_direction, - (uint8_t) UPLL_FLOWFILTER_DIR_IN, (uint8_t) UPLL_FLOWFILTER_DIR_OUT, true, - true)) { + key_vtn_flowfilter_entry->flowfilter_key.input_direction, + (uint8_t) UPLL_FLOWFILTER_DIR_IN, (uint8_t) UPLL_FLOWFILTER_DIR_OUT, + true, + true)) { UPLL_LOG_DEBUG(" input direction syntax validation failed "); return UPLL_RC_ERR_CFG_SYNTAX; } @@ -3122,8 +3524,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterEntryKey( (operation != UNC_OP_READ_SIBLING_BEGIN)) { /** validate seq_num */ if (!ValidateNumericRange(key_vtn_flowfilter_entry->sequence_num, - kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, true, - true)) { + kMinFlowFilterSeqNum, kMaxFlowFilterSeqNum, true, + true)) { UPLL_LOG_DEBUG(" Sequence Number syntax validation failed "); return UPLL_RC_ERR_CFG_SYNTAX; } @@ -3167,7 +3569,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterEntryValue( sizeof(val_vtn_flowfilter_entry->flowlist_name)); } -#if 0 // action_field_notconfigured is set, but not used +#if 0 // action_field_notconfigured is set, but not used bool action_field_notconfigured = true; #endif @@ -3178,7 +3580,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterEntryValue( val_vtn_flowfilter_entry->action); return UPLL_RC_ERR_CFG_SYNTAX; } -#if 0 // action_field_notconfigured is set, but not used +#if 0 // action_field_notconfigured is set, but not used action_field_notconfigured = false; #endif } else if ((val_vtn_flowfilter_entry->valid[UPLL_IDX_ACTION_VFFE] @@ -3234,7 +3636,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterEntryValue( if ((val_vtn_ffe->valid[UPLL_IDX_ACTION_VFFE] == UNC_VF_VALID) && (val_vtn_ffe->action == UPLL_FLOWFILTER_ACT_PASS)) { UPLL_LOG_TRACE("Action is configured in DB with value as PASS"); -#if 0 // action_field_notconfigured is set, but not used +#if 0 // action_field_notconfigured is set, but not used action_field_notconfigured = false; #endif } @@ -3302,7 +3704,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterEntryValue( UPLL_LOG_TRACE("Reset Prirority"); val_vtn_flowfilter_entry->priority = 0; } - } // end val_vtn_flowfilter_entry != NULL + } // end val_vtn_flowfilter_entry != NULL return UPLL_RC_SUCCESS; } @@ -3312,12 +3714,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValVtnFlowfilterEntryAttributeSupportCheck( UPLL_FUNC_TRACE; if ((val_vtn_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_vtn_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_flowfilter_entry::kCapFlowlistName] == 0) { val_vtn_flowfilter_entry->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("FlowlistName attr is not supported by ctrlr"); } @@ -3325,43 +3727,43 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValVtnFlowfilterEntryAttributeSupportCheck( if ((val_vtn_flowfilter_entry->valid[UPLL_IDX_ACTION_VFFE] == UNC_VF_VALID) || (val_vtn_flowfilter_entry->valid[UPLL_IDX_ACTION_VFFE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_flowfilter_entry::kCapAction] == 0) { val_vtn_flowfilter_entry->valid[UPLL_IDX_ACTION_VFFE] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("Action attr is not supported by ctrlr"); } } if ((val_vtn_flowfilter_entry->valid[UPLL_IDX_NWN_NAME_VFFE] == - UNC_VF_VALID) + UNC_VF_VALID) || (val_vtn_flowfilter_entry->valid[UPLL_IDX_NWN_NAME_VFFE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_flowfilter_entry::kCapNwnName] == 0) { val_vtn_flowfilter_entry->valid[UPLL_IDX_NWN_NAME_VFFE] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("Nwm name attr is not supported by ctrlr"); } } if ((val_vtn_flowfilter_entry->valid[UPLL_IDX_DSCP_VFFE] == UNC_VF_VALID) || (val_vtn_flowfilter_entry->valid[UPLL_IDX_DSCP_VFFE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_flowfilter_entry::kCapDscp] == 0) { val_vtn_flowfilter_entry->valid[UPLL_IDX_DSCP_VFFE] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("Dscp attr is not supported by ctrlr"); } } if ((val_vtn_flowfilter_entry->valid[UPLL_IDX_PRIORITY_VFFE] == - UNC_VF_VALID) + UNC_VF_VALID) || (val_vtn_flowfilter_entry->valid[UPLL_IDX_PRIORITY_VFFE] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_flowfilter_entry::kCapPriority] == 0) { val_vtn_flowfilter_entry->valid[UPLL_IDX_PRIORITY_VFFE] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("Priority attr is not supported by ctrlr"); } @@ -3376,17 +3778,17 @@ bool VtnFlowFilterEntryMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, /* Main Table only update */ if (MAINTBL == tbl) { nattr = sizeof(vtnflowfilterentrymaintbl_bind_info)/ - sizeof(vtnflowfilterentrymaintbl_bind_info[0]); + sizeof(vtnflowfilterentrymaintbl_bind_info[0]); binfo = vtnflowfilterentrymaintbl_bind_info; } else if (CTRLRTBL == tbl) { nattr = sizeof(vtnflowfilterentryctrlrtbl_bind_info)/ - sizeof(vtnflowfilterentryctrlrtbl_bind_info[0]); + sizeof(vtnflowfilterentryctrlrtbl_bind_info[0]); binfo = vtnflowfilterentryctrlrtbl_bind_info; } else { UPLL_LOG_DEBUG("Invalid Table, table type %d", tbl); return PFC_FALSE; } - + UPLL_LOG_DEBUG("Successful Completeion"); return PFC_TRUE; } @@ -3418,7 +3820,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_vtn->flowfilter_key.input_direction = 0xFE; okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, IpctSt:: - kIpcStKeyVtnFlowfilterEntry, key_vtn, NULL); + kIpcStKeyVtnFlowfilterEntry, key_vtn, NULL); if (!okey) { FREE_IF_NOT_NULL(key_vtn); return UPLL_RC_ERR_GENERIC; @@ -3426,29 +3828,30 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VtnFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t VtnFlowFilterEntryMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; ConfigKeyVal *ckey = NULL; ConfigKeyVal *ctrlr_val = NULL; - // key_vtn_flowfilter_entry_t *vtn_ffe_key = NULL; + // key_vtn_flowfilter_entry_t *vtn_ffe_key = NULL; controller_domain ctrlr_dom; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; uint8_t rename = 0; key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); - // Copy the old flowlist name in val_vtn_flowfilter_entry + // Copy the old flowlist name in val_vtn_flowfilter_entry val_vtn_flowfilter_entry_t *val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); if (!strlen(reinterpret_cast(key_rename->old_flowlist_name))) { if (val) free(val); return UPLL_RC_ERR_GENERIC; @@ -3464,23 +3867,25 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } uuu::upll_strncpy(val->flowlist_name, - key_rename->old_flowlist_name, - (kMaxLenFlowListName + 1)); + key_rename->old_flowlist_name, + (kMaxLenFlowListName + 1)); val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("FlowList name and valid (%d) (%s)", - val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE], val->flowlist_name); + val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE], val->flowlist_name); - // Construct ConfigKeyVal -// ConfigVal *cval = new ConfigVal(IpctSt::kIpcStKeyVtnFlowfilterEntry, val); - okey->SetCfgVal(new ConfigVal (IpctSt::kIpcStValVtnFlowfilterEntry, val)); + // Construct ConfigKeyVal + // ConfigVal *cval = new ConfigVal(IpctSt::kIpcStKeyVtnFlowfilterEntry, + // val); + okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValVtnFlowfilterEntry, val)); DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; #if 0 - vtn_ffe_key = reinterpret_cast(okey->get_key()); + vtn_ffe_key = reinterpret_cast + (okey->get_key()); vtn_ffe_key->flowfilter_key.input_direction = 0xFE; #endif - // Read the record of key structure and old Flowlist name in maintbl + // Read the record of key structure and old Flowlist name in maintbl result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -3490,7 +3895,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } ConfigKeyVal *tmp_okey = okey; while (okey != NULL) { - // Update the new flowlist name in MAINTBL + // Update the new flowlist name in MAINTBL result_code = GetChildConfigKey(kval, okey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey kval NULL"); @@ -3498,11 +3903,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, return result_code; } if (!kval) return UPLL_RC_ERR_GENERIC; - // Copy the new flowlist in val structure - val_vtn_flowfilter_entry_t *val1 = reinterpret_cast - (ConfigKeyVal::Malloc - (sizeof(val_vtn_flowfilter_entry_t))); - // New name null check + // Copy the new flowlist in val structure + val_vtn_flowfilter_entry_t *val1 = reinterpret_cast + + (ConfigKeyVal::Malloc + (sizeof(val_vtn_flowfilter_entry_t))); + // New name null check if (!strlen(reinterpret_cast(key_rename->new_flowlist_name))) { UPLL_LOG_DEBUG("new_flowlist_name NULL"); FREE_IF_NOT_NULL(val1); @@ -3510,18 +3916,20 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(kval); return UPLL_RC_ERR_GENERIC; } - // Copy the new flowlist name into val_vtn_flowfilter_entry + // Copy the new flowlist name into val_vtn_flowfilter_entry uuu::upll_strncpy(val1->flowlist_name, - key_rename->new_flowlist_name, - (kMaxLenPolicingProfileName + 1)); + key_rename->new_flowlist_name, + (kMaxLenPolicingProfileName + 1)); val1->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] = UNC_VF_VALID; UPLL_LOG_DEBUG("flowlist name and valid (%d) (%s)", - val1->valid[UPLL_IDX_FLOWLIST_NAME_VFFE], val1->flowlist_name); - ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValVtnFlowfilterEntry, val1); + val1->valid[UPLL_IDX_FLOWLIST_NAME_VFFE], + val1->flowlist_name); + ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValVtnFlowfilterEntry, + val1); kval->SetCfgVal(cval1); - //GET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + // GET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); GET_USER_DATA_FLAGS(okey, rename); if (!no_rename) @@ -3530,91 +3938,97 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, rename = rename & NO_FLOWLIST_RENAME; SET_USER_DATA_FLAGS(kval, rename); - //SET_USER_DATA_CTRLR_DOMAIN(kval, ctrlr_dom); - // Update the new flowlist name in MAINTBL - result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, - MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { + // SET_USER_DATA_CTRLR_DOMAIN(kval, ctrlr_dom); + // Update the new flowlist name in MAINTBL + result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Update record Err in vtnff entry tbl CANDIDATE DB(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(okey); DELETE_IF_NOT_NULL(kval); return result_code; } -// Get the momory alloctaed vtn key structure - VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); - result_code = vtnmgr->GetChildConfigKey(ckey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr GetChildConfigKey error (%d)", - result_code); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(kval); - return result_code; - } - if (!ckey) return UPLL_RC_ERR_GENERIC; - - key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); - key_vtn_flowfilter_entry *vtn_ikey = reinterpret_cast(okey->get_key()); - uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->flowfilter_key.vtn_key.vtn_name, - kMaxLenVtnName+1); - - UPLL_LOG_DEBUG("vtn name ckey (%s) okey (%s)", vtn_okey->vtn_name, vtn_ikey->flowfilter_key.vtn_key.vtn_name); - result_code = vtnmgr->GetControllerDomainSpan(ckey, data_type, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", result_code); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + // Get the momory alloctaed vtn key structure + VtnMoMgr *vtnmgr = + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + result_code = vtnmgr->GetChildConfigKey(ckey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr GetChildConfigKey error (%d)", + result_code); DELETE_IF_NOT_NULL(okey); DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(ckey); return result_code; } - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(ckey); - continue; - } - - //Update Rename flag in the controller span - ConfigKeyVal *tmp_ckey = ckey; - while (ckey != NULL) { - GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom); - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + if (!ckey) return UPLL_RC_ERR_GENERIC; - result_code = GetChildConfigKey(ctrlr_val, okey); - if (result_code != UPLL_RC_SUCCESS) - return result_code; + key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); + key_vtn_flowfilter_entry *vtn_ikey = reinterpret_cast + (okey->get_key()); + uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey-> + flowfilter_key.vtn_key.vtn_name, + kMaxLenVtnName+1); - val_vtn_flowfilter_entry_ctrlr *vtnffe_ctrlr_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_ctrlr))); - // Copy the new policer name into val_vtnpolicingmap_ctrl - vtnffe_ctrlr_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] = UNC_VF_VALID; - ConfigVal *cval2 = new ConfigVal(IpctSt::kIpcInvalidStNum, vtnffe_ctrlr_val); - ctrlr_val->SetCfgVal(cval2); - SET_USER_DATA_CTRLR_DOMAIN(ctrlr_val, ctrlr_dom); - SET_USER_DATA_FLAGS(ctrlr_val, rename); - // Update the new policer name in CTRLTBL - result_code = UpdateConfigDB(ctrlr_val, data_type, UNC_OP_UPDATE, dmi, - CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Update record Err in vtnff entry CANDIDATE DB(%d)", - result_code); - DELETE_IF_NOT_NULL(okey); + UPLL_LOG_DEBUG("vtn name ckey (%s) okey (%s)", + vtn_okey->vtn_name, + vtn_ikey->flowfilter_key.vtn_key.vtn_name); + result_code = vtnmgr->GetControllerDomainSpan(ckey, data_type, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", + result_code); + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(ckey); + return result_code; + } DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(ckey); + continue; + } + + // Update Rename flag in the controller span + ConfigKeyVal *tmp_ckey = ckey; + while (ckey != NULL) { + GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom); + + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + + result_code = GetChildConfigKey(ctrlr_val, okey); + if (result_code != UPLL_RC_SUCCESS) + return result_code; + + val_vtn_flowfilter_entry_ctrlr *vtnffe_ctrlr_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_ctrlr))); + // Copy the new policer name into val_vtnpolicingmap_ctrl + vtnffe_ctrlr_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] = UNC_VF_VALID; + ConfigVal *cval2 = new ConfigVal(IpctSt::kIpcInvalidStNum, + vtnffe_ctrlr_val); + ctrlr_val->SetCfgVal(cval2); + SET_USER_DATA_CTRLR_DOMAIN(ctrlr_val, ctrlr_dom); + SET_USER_DATA_FLAGS(ctrlr_val, rename); + // Update the new policer name in CTRLTBL + result_code = UpdateConfigDB(ctrlr_val, data_type, UNC_OP_UPDATE, dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Update record Err in vtnff entry CANDIDATE DB(%d)", + result_code); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(ckey); + DELETE_IF_NOT_NULL(ctrlr_val); + return result_code; + } DELETE_IF_NOT_NULL(ctrlr_val); - return result_code; + ckey = ckey->get_next_cfg_key_val(); } - DELETE_IF_NOT_NULL(ctrlr_val); - ckey = ckey->get_next_cfg_key_val(); - } - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(tmp_ckey); - okey = okey->get_next_cfg_key_val(); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(tmp_ckey); + okey = okey->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(tmp_okey); return result_code; @@ -3629,15 +4043,15 @@ bool VtnFlowFilterEntryMoMgr::CompareValidValue(void *&val1, val_vtn_flowfilter_entry_t *val_ff_entry2 = reinterpret_cast(val2); - // if (audit) { - for ( unsigned int loop = 0; - loop < sizeof(val_ff_entry1->valid)/sizeof(val_ff_entry1->valid[0]); - ++loop ) { - if ( UNC_VF_INVALID == val_ff_entry1->valid[loop] && - UNC_VF_VALID == val_ff_entry2->valid[loop]) - val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; - } - // } + // if (audit) { + for ( unsigned int loop = 0; + loop < sizeof(val_ff_entry1->valid)/sizeof(val_ff_entry1->valid[0]); + ++loop ) { + if ( UNC_VF_INVALID == val_ff_entry1->valid[loop] && + UNC_VF_VALID == val_ff_entry2->valid[loop]) + val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; + } + // } if (val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] == UNC_VF_VALID && val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] == UNC_VF_VALID) { @@ -3671,10 +4085,10 @@ bool VtnFlowFilterEntryMoMgr::CompareValidValue(void *&val1, val_ff_entry1->valid[UPLL_IDX_PRIORITY_VFFE] = UNC_VF_INVALID; } for (unsigned int loop = 0; - loop < sizeof(val_ff_entry1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_ff_entry1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_ff_entry1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_ff_entry1->valid[loop])) - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_ff_entry1->valid[loop])) + invalid_attr = false; } return invalid_attr; } @@ -3690,15 +4104,15 @@ bool VtnFlowFilterEntryMoMgr::CompareValidVal(void *&val1, void *val2, val_vtn_flowfilter_entry_t *val_ff_entry3 = reinterpret_cast(val3); - // if (audit) { - for ( unsigned int loop = 0; - loop < sizeof(val_ff_entry1->valid)/sizeof(val_ff_entry1->valid[0]); - ++loop ) { - if ( UNC_VF_INVALID == val_ff_entry1->valid[loop] && - UNC_VF_VALID == val_ff_entry2->valid[loop]) - val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; - } - // } + // if (audit) { + for ( unsigned int loop = 0; + loop < sizeof(val_ff_entry1->valid)/sizeof(val_ff_entry1->valid[0]); + ++loop ) { + if ( UNC_VF_INVALID == val_ff_entry1->valid[loop] && + UNC_VF_VALID == val_ff_entry2->valid[loop]) + val_ff_entry1->valid[loop] = UNC_VF_VALID_NO_VALUE; + } + // } if (val_ff_entry1->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] == UNC_VF_VALID && val_ff_entry2->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] == UNC_VF_VALID) { @@ -3732,10 +4146,10 @@ bool VtnFlowFilterEntryMoMgr::CompareValidVal(void *&val1, void *val2, val_ff_entry1->valid[UPLL_IDX_PRIORITY_VFFE] = UNC_VF_INVALID; } for (unsigned int loop = 0; - loop < sizeof(val_ff_entry1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_ff_entry1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_ff_entry1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_ff_entry1->valid[loop])) - invalid_attr = false; + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_ff_entry1->valid[loop])) + invalid_attr = false; } return invalid_attr; } @@ -3797,21 +4211,21 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingFlowFilterController( key_vtn_ff_ctrl->vtn_key.vtn_name, (kMaxLenVtnName +1)); key_ctrl->flowfilter_key.input_direction = 0xFE; - // vtn is not configured in vtn_ff_entry main tbl - // only vtn/vbr is configured and commited + // vtn is not configured in vtn_ff_entry main tbl + // only vtn/vbr is configured and commited result_code = UpdateConfigDB(dup_ckmain, req->datatype, UNC_OP_READ, dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { UPLL_LOG_DEBUG("Requested Vtn is Not Configured in" - "flowfilterEntryMain Table in Candidate %d", result_code); + "flowfilterEntryMain Table in Candidate %d", result_code); DELETE_IF_NOT_NULL(dup_ckmain); return result_code; } - // vtn is not configured in vtn_ff_entry ctrlr tbl - // vtn/ff/entry is configured but no vbr is configured + // vtn is not configured in vtn_ff_entry ctrlr tbl + // vtn/ff/entry is configured but no vbr is configured - // Setting direction again to 0XFE - // because it will be set to 0 in updateconfigDB + // Setting direction again to 0XFE + // because it will be set to 0 in updateconfigDB key_ctrl->flowfilter_key.input_direction = 0xFE; result_code = UpdateConfigDB(dup_ckmain, req->datatype, UNC_OP_READ, dmi, &dbop1, CTRLRTBL); @@ -3862,10 +4276,10 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( ConfigKeyVal *tctrl_key = NULL, *okey = NULL, *tmp_key = NULL; ConfigKeyVal* tmp_okey = NULL; controller_domain ctrlr_dom, tmp_ctrlr_dom; - // ReadSibling Operation Get The Multiple Key + // ReadSibling Operation Get The Multiple Key key_vtn_flowfilter_controller_t *key_vtn_ff_ctrl = reinterpret_cast(ikey->get_key()); - // Extracting The VAl of KT_VTN_FF_Ctrl + // Extracting The VAl of KT_VTN_FF_Ctrl val_flowfilter_controller_t* val_ff_ctrl = reinterpret_cast(GetVal(ikey)); @@ -3880,7 +4294,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( (kMaxLenVtnName +1)); uuu::upll_strncpy(ctrlr_dom.domain, key_vtn_ff_ctrl->domain_id, (kMaxLenVtnName +1)); - // Allocating The Key of KT_VTN_FF_Entry + // Allocating The Key of KT_VTN_FF_Entry if (req->operation == UNC_OP_READ_SIBLING) { std::list list_ctrlr_dom; vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, req->datatype, dmi, @@ -3898,16 +4312,16 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( reinterpret_cast(it->ctrlr)); int dom_len = strcmp((const char*)(ctrlr_dom.domain), reinterpret_cast(it->domain)); - if ((ctrl_len < 0) || ((ctrl_len == 0) && (dom_len < 0))) { - + if ((ctrl_len < 0) || ((ctrl_len == 0) && (dom_len < 0))) { key_vtn_flowfilter_entry_t *key_vtn_ffe_ctrl = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); - // Allocating CKV tctrl_key + // Allocating CKV tctrl_key tctrl_key = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, IpctSt::kIpcStKeyVtnFlowfilterEntry, key_vtn_ffe_ctrl, NULL); - // Copying The seqno, i/p dir, Vtn_Name to The Above Key of CKV tctrl_key + // Copying The seqno, i/p dir, Vtn_Name to The Above Key of + // CKV tctrl_key uuu::upll_strncpy(key_vtn_ffe_ctrl->flowfilter_key.vtn_key.vtn_name, key_vtn_ff_ctrl->vtn_key.vtn_name, (kMaxLenVtnName +1)); @@ -3917,15 +4331,24 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( key_vtn_ffe_ctrl->sequence_num = 0; } if (val_ff_ctrl->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID) { - key_vtn_ffe_ctrl->flowfilter_key.input_direction = val_ff_ctrl->direction; + key_vtn_ffe_ctrl->flowfilter_key.input_direction = + val_ff_ctrl->direction; } else { key_vtn_ffe_ctrl->flowfilter_key.input_direction = 0xFE; } - SET_USER_DATA_CTRLR(tctrl_key, reinterpret_cast(it->ctrlr)); - SET_USER_DATA_DOMAIN(tctrl_key, reinterpret_cast(it->domain)); - DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr|kOpMatchDomain, kOpInOutNone}; - result_code = ReadConfigDB(tctrl_key, UPLL_DT_STATE, UNC_OP_READ, - dbop, dmi, CTRLRTBL); + SET_USER_DATA_CTRLR(tctrl_key, + reinterpret_cast(it->ctrlr)); + SET_USER_DATA_DOMAIN(tctrl_key, + reinterpret_cast(it->domain)); + DbSubOp dbop = {kOpReadMultiple, + kOpMatchCtrlr|kOpMatchDomain, + kOpInOutNone}; + result_code = ReadConfigDB(tctrl_key, + UPLL_DT_STATE, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to read vtn configuration from CTRL DB %d", result_code); @@ -3971,7 +4394,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( tmp_key = tmp_key->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(tctrl_key); - if( okey == NULL) { + if (okey == NULL) { okey = tmp_okey; } else { okey->AppendCfgKeyVal(tmp_okey); @@ -3992,7 +4415,10 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( } } else if (req->operation == UNC_OP_READ_SIBLING_BEGIN) { std::list list_ctrlr_dom; - vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, req->datatype, dmi, list_ctrlr_dom); + vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, + req->datatype, + dmi, + list_ctrlr_dom); if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", @@ -4010,27 +4436,31 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( key_vtn_flowfilter_entry_t *key_vtn_ffe_ctrl = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); - // Allocating CKV tctrl_key + // Allocating CKV tctrl_key tctrl_key = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, IpctSt::kIpcStKeyVtnFlowfilterEntry, key_vtn_ffe_ctrl, NULL); - // Copying The seqno, i/p dir, Vtn_Name to The Above Key of CKV tctrl_key + // Copying The seqno, i/p dir, Vtn_Name to The Above Key of CKV tctrl_key uuu::upll_strncpy(key_vtn_ffe_ctrl->flowfilter_key.vtn_key.vtn_name, - key_vtn_ff_ctrl->vtn_key.vtn_name, (kMaxLenVtnName +1)); + key_vtn_ff_ctrl->vtn_key.vtn_name, + (kMaxLenVtnName +1)); if (val_ff_ctrl->valid[UPLL_IDX_SEQ_NUM_FFC] == UNC_VF_VALID) { key_vtn_ffe_ctrl->sequence_num = val_ff_ctrl->sequence_num; } else { key_vtn_ffe_ctrl->sequence_num = 0; } if (val_ff_ctrl->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID) { - key_vtn_ffe_ctrl->flowfilter_key.input_direction = val_ff_ctrl->direction; + key_vtn_ffe_ctrl->flowfilter_key.input_direction = + val_ff_ctrl->direction; } else { key_vtn_ffe_ctrl->flowfilter_key.input_direction = 0xFE; } - SET_USER_DATA_CTRLR(tctrl_key, reinterpret_cast(it->ctrlr)); - SET_USER_DATA_DOMAIN(tctrl_key, reinterpret_cast(it->domain)); + SET_USER_DATA_CTRLR(tctrl_key, + reinterpret_cast(it->ctrlr)); + SET_USER_DATA_DOMAIN(tctrl_key, + reinterpret_cast(it->domain)); DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr| - kOpInOutDomain,kOpInOutDomain}; + kOpInOutDomain, kOpInOutDomain}; result_code = ReadConfigDB(tctrl_key, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -4050,9 +4480,11 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( uuu::upll_strncpy(tmp_ff_ctrl->vtn_key.vtn_name, key_vtn_ffe->flowfilter_key.vtn_key.vtn_name, (kMaxLenVtnName +1)); - uuu::upll_strncpy(tmp_ff_ctrl->controller_name,reinterpret_cast(it->ctrlr), + uuu::upll_strncpy(tmp_ff_ctrl->controller_name, + reinterpret_cast(it->ctrlr), (kMaxLenCtrlrId +1)); - uuu::upll_strncpy(tmp_ff_ctrl->domain_id, reinterpret_cast(it->domain), + uuu::upll_strncpy(tmp_ff_ctrl->domain_id, + reinterpret_cast(it->domain), (kMaxLenDomainId +1)); tmp_okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_CONTROLLER, IpctSt::kIpcStKeyVtnFlowfilterController, @@ -4073,7 +4505,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateNormal( tmp_key = tmp_key->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(tctrl_key); - if( okey == NULL) { + if (okey == NULL) { okey = tmp_okey; } else { okey->AppendCfgKeyVal(tmp_okey); @@ -4105,7 +4537,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( key_vtn_flowfilter_controller_t *key_vtn_ff_ctrl = reinterpret_cast(ikey->get_key()); - // Extracting The VAl of KT_VTN_FF_Ctrl + // Extracting The VAl of KT_VTN_FF_Ctrl val_flowfilter_controller_t* val_ff_ctrl = reinterpret_cast(GetVal(ikey)); @@ -4154,7 +4586,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( l_key = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_CONTROLLER, IpctSt:: kIpcStKeyVtnFlowfilterController, l_key_vtn_ff_ctrl, tmp1); - // verifying given reuest is existing in vtn_ff_entry_tbl or not + // verifying given reuest is existing in vtn_ff_entry_tbl or not key_vtn_flowfilter_entry_t *key_ctrl = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); @@ -4168,7 +4600,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( key_vtn_ff_ctrl->vtn_key.vtn_name, (kMaxLenVtnName +1)); if ((val_ff_ctrl->valid[UPLL_IDX_SEQ_NUM_FFC] == UNC_VF_VALID) || - (val_ff_ctrl->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID)) { + (val_ff_ctrl->valid[UPLL_IDX_DIRECTION_FFC] == UNC_VF_VALID)) { if (val_ff_ctrl->valid[UPLL_IDX_SEQ_NUM_FFC] == UNC_VF_VALID) { key_ctrl->sequence_num = val_ff_ctrl->sequence_num; } @@ -4176,10 +4608,10 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( key_ctrl->flowfilter_key.input_direction = val_ff_ctrl->direction; } result_code = UpdateConfigDB(dup_ckmain, req->datatype, - UNC_OP_READ, dmi, &dbop1, MAINTBL); + UNC_OP_READ, dmi, &dbop1, MAINTBL); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Requested Configuration is not Configured in" - "VtnflowfilterEntry Table %d", result_code); + "VtnflowfilterEntry Table %d", result_code); DELETE_IF_NOT_NULL(dup_ckmain); DELETE_IF_NOT_NULL(l_key); ConfigKeyVal::Free(ctrlr_dom.ctrlr); @@ -4190,25 +4622,27 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( } } DELETE_IF_NOT_NULL(dup_ckmain); - // Extracting The Val from CKV tctrl_key + // Extracting The Val from CKV tctrl_key uint32_t tmp_sib_count = 0; if (req->operation == UNC_OP_READ_SIBLING) { -// ====Adding VtnControllerDomainSpan - std::list list_ctrlr_dom; - vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, - req->datatype, dmi, list_ctrlr_dom); - if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && - (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", - vtn_ctrlr_span_rt_code); - DELETE_IF_NOT_NULL(l_key); - FREE_LIST_CTRLR(list_ctrlr_dom); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return vtn_ctrlr_span_rt_code; - } + // ====Adding VtnControllerDomainSpan + std::list list_ctrlr_dom; + vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, + req->datatype, + dmi, + list_ctrlr_dom); + if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && + (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", + vtn_ctrlr_span_rt_code); + DELETE_IF_NOT_NULL(l_key); + FREE_LIST_CTRLR(list_ctrlr_dom); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return vtn_ctrlr_span_rt_code; + } for (std::list::iterator it= list_ctrlr_dom.begin(); it != list_ctrlr_dom.end(); ++it) { @@ -4219,7 +4653,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( reinterpret_cast(it->domain)); if ((ctrl_len < 0) || ((ctrl_len == 0) && (dom_len < 0))) { result_code = ValidateCapability(req, ikey, - reinterpret_cast(it->ctrlr)); + reinterpret_cast + (it->ctrlr)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Key not supported by controller IN ReadSibling"); FREE_LIST_CTRLR(list_ctrlr_dom); @@ -4232,116 +4667,116 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( return result_code; } - key_vtn_flowfilter_controller_t *tmp_ff_ctrl = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_controller_t))); - uuu::upll_strncpy(tmp_ff_ctrl->vtn_key.vtn_name, - key_vtn_ff_ctrl->vtn_key.vtn_name, - (kMaxLenVtnName +1)); - uuu::upll_strncpy(tmp_ff_ctrl->controller_name, - reinterpret_cast(it->ctrlr), - (kMaxLenCtrlrId +1)); - uuu::upll_strncpy(tmp_ff_ctrl->domain_id, - reinterpret_cast(it->domain), - (kMaxLenDomainId +1)); - tmp_okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_CONTROLLER, - IpctSt::kIpcStKeyVtnFlowfilterController, - tmp_ff_ctrl, NULL); - - val_flowfilter_controller_t* tmp_val_ff_ctrl = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); - memcpy(tmp_val_ff_ctrl, val_ff_ctrl, - sizeof(val_flowfilter_controller_t)); - tmp_okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterController, - tmp_val_ff_ctrl); - uuu::upll_strncpy(tmp_ctrlr_dom.ctrlr, - reinterpret_cast(it->ctrlr), - (kMaxLenCtrlrId +1)); - uuu::upll_strncpy(tmp_ctrlr_dom.domain, - reinterpret_cast(it->domain), - (kMaxLenDomainId +1)); - uuu::upll_strncpy(l_key_vtn_ff_ctrl->controller_name, + key_vtn_flowfilter_controller_t *tmp_ff_ctrl = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_controller_t))); + uuu::upll_strncpy(tmp_ff_ctrl->vtn_key.vtn_name, + key_vtn_ff_ctrl->vtn_key.vtn_name, + (kMaxLenVtnName +1)); + uuu::upll_strncpy(tmp_ff_ctrl->controller_name, + reinterpret_cast(it->ctrlr), + (kMaxLenCtrlrId +1)); + uuu::upll_strncpy(tmp_ff_ctrl->domain_id, + reinterpret_cast(it->domain), + (kMaxLenDomainId +1)); + tmp_okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_CONTROLLER, + IpctSt::kIpcStKeyVtnFlowfilterController, + tmp_ff_ctrl, NULL); + + val_flowfilter_controller_t* tmp_val_ff_ctrl = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); + memcpy(tmp_val_ff_ctrl, val_ff_ctrl, + sizeof(val_flowfilter_controller_t)); + tmp_okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterController, + tmp_val_ff_ctrl); + uuu::upll_strncpy(tmp_ctrlr_dom.ctrlr, + reinterpret_cast(it->ctrlr), + (kMaxLenCtrlrId +1)); + uuu::upll_strncpy(tmp_ctrlr_dom.domain, + reinterpret_cast(it->domain), + (kMaxLenDomainId +1)); + uuu::upll_strncpy(l_key_vtn_ff_ctrl->controller_name, tmp_ctrlr_dom.ctrlr, (kMaxLenCtrlrId +1)); - uuu::upll_strncpy(l_key_vtn_ff_ctrl->domain_id, + uuu::upll_strncpy(l_key_vtn_ff_ctrl->domain_id, tmp_ctrlr_dom.domain, (kMaxLenDomainId +1)); - IpcResponse ipc_resp; - memset(&ipc_resp, 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(IpcRequest)); - ipc_req.header.clnt_sess_id = req->clnt_sess_id; - ipc_req.header.config_id = req->config_id; - ipc_req.header.operation = UNC_OP_READ; - ipc_req.header.option1 = req->option1; - ipc_req.header.datatype = req->datatype; - // Added "GetRenamedControllerKey" - UPLL_LOG_DEBUG("Calling GetRenamedControllerKeyin ReadSibling"); - result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, - &tmp_ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey Failed %d", result_code); - FREE_LIST_CTRLR(list_ctrlr_dom); - DELETE_IF_NOT_NULL(l_key); - DELETE_IF_NOT_NULL(tmp_okey); - DELETE_IF_NOT_NULL(okey); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return result_code; - } - ipc_req.ckv_data = l_key; - if (!IpcUtil::SendReqToDriver( + IpcResponse ipc_resp; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(IpcRequest)); + ipc_req.header.clnt_sess_id = req->clnt_sess_id; + ipc_req.header.config_id = req->config_id; + ipc_req.header.operation = UNC_OP_READ; + ipc_req.header.option1 = req->option1; + ipc_req.header.datatype = req->datatype; + // Added "GetRenamedControllerKey" + UPLL_LOG_DEBUG("Calling GetRenamedControllerKeyin ReadSibling"); + result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, + &tmp_ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetRenamedControllerKey Failed %d", result_code); + FREE_LIST_CTRLR(list_ctrlr_dom); + DELETE_IF_NOT_NULL(l_key); + DELETE_IF_NOT_NULL(tmp_okey); + DELETE_IF_NOT_NULL(okey); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return result_code; + } + ipc_req.ckv_data = l_key; + if (!IpcUtil::SendReqToDriver( (const char *)tmp_ctrlr_dom.ctrlr, reinterpret_cast(tmp_ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { - UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", + UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(tmp_ctrlr_dom.ctrlr)); - DELETE_IF_NOT_NULL(tmp_okey); - FREE_LIST_CTRLR(list_ctrlr_dom); - DELETE_IF_NOT_NULL(l_key); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return UPLL_RC_ERR_GENERIC; - } - if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", + DELETE_IF_NOT_NULL(tmp_okey); + FREE_LIST_CTRLR(list_ctrlr_dom); + DELETE_IF_NOT_NULL(l_key); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return UPLL_RC_ERR_GENERIC; + } + if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", l_key->get_key_type(), tmp_ctrlr_dom.ctrlr, ipc_resp.header.result_code); - DELETE_IF_NOT_NULL(tmp_okey); - FREE_LIST_CTRLR(list_ctrlr_dom); - DELETE_IF_NOT_NULL(l_key); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return ipc_resp.header.result_code; - } + DELETE_IF_NOT_NULL(tmp_okey); + FREE_LIST_CTRLR(list_ctrlr_dom); + DELETE_IF_NOT_NULL(l_key); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return ipc_resp.header.result_code; + } - tmp_okey->AppendCfgVal((ipc_resp.ckv_data)->GetCfgValAndUnlink()); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - tmp_sib_count++; - if (okey == NULL) { - okey = tmp_okey; - } else { - okey->AppendCfgKeyVal(tmp_okey); - } - if (tmp_sib_count == req->rep_count) + tmp_okey->AppendCfgVal((ipc_resp.ckv_data)->GetCfgValAndUnlink()); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + tmp_sib_count++; + if (okey == NULL) { + okey = tmp_okey; + } else { + okey->AppendCfgKeyVal(tmp_okey); + } + if (tmp_sib_count == req->rep_count) break; } else { - result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - if (tmp_sib_count == req->rep_count) - break; + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + if (tmp_sib_count == req->rep_count) + break; } if ((okey != NULL) && (result_code == UPLL_RC_SUCCESS)) { ikey->ResetWith(okey); @@ -4352,11 +4787,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( } else if (req->operation == UNC_OP_READ_SIBLING_BEGIN) { std::list list_ctrlr_dom; vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, - req->datatype, dmi, list_ctrlr_dom); + req->datatype, + dmi, + list_ctrlr_dom); if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && - (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", - vtn_ctrlr_span_rt_code); + vtn_ctrlr_span_rt_code); DELETE_IF_NOT_NULL(l_key); FREE_LIST_CTRLR(list_ctrlr_dom); ConfigKeyVal::Free(ctrlr_dom.ctrlr); @@ -4367,126 +4804,128 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingControllerStateDetail( } for (std::list::iterator it= list_ctrlr_dom.begin(); it != list_ctrlr_dom.end(); ++it) { - result_code = ValidateCapability(req, ikey, - reinterpret_cast(it->ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key not supported by controller IN ReadSibling"); - DELETE_IF_NOT_NULL(l_key); - FREE_LIST_CTRLR(list_ctrlr_dom); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return result_code; - } - key_vtn_flowfilter_controller_t *tmp_ff_ctrl = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_controller_t))); - uuu::upll_strncpy(tmp_ff_ctrl->vtn_key.vtn_name, - key_vtn_ff_ctrl->vtn_key.vtn_name, - (kMaxLenVtnName +1)); - uuu::upll_strncpy(tmp_ff_ctrl->controller_name, - reinterpret_cast(it->ctrlr), - (kMaxLenCtrlrId +1)); - uuu::upll_strncpy(tmp_ff_ctrl->domain_id, - reinterpret_cast(it->domain), - (kMaxLenDomainId +1)); - tmp_okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_CONTROLLER, - IpctSt::kIpcStKeyVtnFlowfilterController, - tmp_ff_ctrl, NULL); + result_code = ValidateCapability(req, + ikey, + reinterpret_cast + (it->ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Key not supported by controller IN ReadSibling"); + DELETE_IF_NOT_NULL(l_key); + FREE_LIST_CTRLR(list_ctrlr_dom); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return result_code; + } + key_vtn_flowfilter_controller_t *tmp_ff_ctrl = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_controller_t))); + uuu::upll_strncpy(tmp_ff_ctrl->vtn_key.vtn_name, + key_vtn_ff_ctrl->vtn_key.vtn_name, + (kMaxLenVtnName +1)); + uuu::upll_strncpy(tmp_ff_ctrl->controller_name, + reinterpret_cast(it->ctrlr), + (kMaxLenCtrlrId +1)); + uuu::upll_strncpy(tmp_ff_ctrl->domain_id, + reinterpret_cast(it->domain), + (kMaxLenDomainId +1)); + tmp_okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_CONTROLLER, + IpctSt::kIpcStKeyVtnFlowfilterController, + tmp_ff_ctrl, NULL); - val_flowfilter_controller_t* tmp_val_ff_ctrl = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); - memcpy(tmp_val_ff_ctrl, val_ff_ctrl, sizeof(val_flowfilter_controller_t)); - tmp_okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterController, - tmp_val_ff_ctrl); - uuu::upll_strncpy(ctrlr_dom.ctrlr, - reinterpret_cast(it->ctrlr), - (kMaxLenCtrlrId +1)); - uuu::upll_strncpy(ctrlr_dom.domain, - reinterpret_cast(it->domain), - (kMaxLenDomainId +1)); - uuu::upll_strncpy(l_key_vtn_ff_ctrl->controller_name, + val_flowfilter_controller_t* tmp_val_ff_ctrl = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); + memcpy(tmp_val_ff_ctrl, val_ff_ctrl, sizeof(val_flowfilter_controller_t)); + tmp_okey->AppendCfgVal(IpctSt::kIpcStValFlowfilterController, + tmp_val_ff_ctrl); + uuu::upll_strncpy(ctrlr_dom.ctrlr, + reinterpret_cast(it->ctrlr), + (kMaxLenCtrlrId +1)); + uuu::upll_strncpy(ctrlr_dom.domain, + reinterpret_cast(it->domain), + (kMaxLenDomainId +1)); + uuu::upll_strncpy(l_key_vtn_ff_ctrl->controller_name, ctrlr_dom.ctrlr, (kMaxLenCtrlrId +1)); - uuu::upll_strncpy(l_key_vtn_ff_ctrl->domain_id, + uuu::upll_strncpy(l_key_vtn_ff_ctrl->domain_id, ctrlr_dom.domain, (kMaxLenDomainId +1)); - IpcResponse ipc_resp; - memset(&ipc_resp, 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(IpcRequest)); - ipc_req.header.clnt_sess_id = req->clnt_sess_id; - ipc_req.header.config_id = req->config_id; - ipc_req.header.operation = UNC_OP_READ; - ipc_req.header.option1 = req->option1; - ipc_req.header.datatype = req->datatype; - // Added "GetRenamedControllerKey" - UPLL_LOG_INFO("Calling GetRenamedControllerKeyin ReadSibling"); - result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, - &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey Failed %d", result_code); - DELETE_IF_NOT_NULL(l_key); - DELETE_IF_NOT_NULL(tmp_okey); - FREE_LIST_CTRLR(list_ctrlr_dom); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return result_code; - } - ipc_req.ckv_data = l_key; - if (!IpcUtil::SendReqToDriver( + IpcResponse ipc_resp; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(IpcRequest)); + ipc_req.header.clnt_sess_id = req->clnt_sess_id; + ipc_req.header.config_id = req->config_id; + ipc_req.header.operation = UNC_OP_READ; + ipc_req.header.option1 = req->option1; + ipc_req.header.datatype = req->datatype; + // Added "GetRenamedControllerKey" + UPLL_LOG_INFO("Calling GetRenamedControllerKeyin ReadSibling"); + result_code = GetRenamedControllerKey(l_key, req->datatype, dmi, + &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetRenamedControllerKey Failed %d", result_code); + DELETE_IF_NOT_NULL(l_key); + DELETE_IF_NOT_NULL(tmp_okey); + FREE_LIST_CTRLR(list_ctrlr_dom); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return result_code; + } + ipc_req.ckv_data = l_key; + if (!IpcUtil::SendReqToDriver( (const char *)ctrlr_dom.ctrlr, reinterpret_cast(ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { - UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", + UPLL_LOG_DEBUG("SendReqToDriver failed for Key %d controller %s", l_key->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); - DELETE_IF_NOT_NULL(l_key); - DELETE_IF_NOT_NULL(tmp_okey); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - FREE_LIST_CTRLR(list_ctrlr_dom); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return UPLL_RC_ERR_GENERIC; - } - if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", + DELETE_IF_NOT_NULL(l_key); + DELETE_IF_NOT_NULL(tmp_okey); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + FREE_LIST_CTRLR(list_ctrlr_dom); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return UPLL_RC_ERR_GENERIC; + } + if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Driver response for Key %d controller %s result %d", l_key->get_key_type(), ctrlr_dom.ctrlr, ipc_resp.header.result_code); - DELETE_IF_NOT_NULL(l_key); - DELETE_IF_NOT_NULL(tmp_okey); + DELETE_IF_NOT_NULL(l_key); + DELETE_IF_NOT_NULL(tmp_okey); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + FREE_LIST_CTRLR(list_ctrlr_dom); + ConfigKeyVal::Free(ctrlr_dom.ctrlr); + ConfigKeyVal::Free(ctrlr_dom.domain); + ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); + ConfigKeyVal::Free(tmp_ctrlr_dom.domain); + return ipc_resp.header.result_code; + } + tmp_okey->AppendCfgVal((ipc_resp.ckv_data)->GetCfgValAndUnlink()); DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - FREE_LIST_CTRLR(list_ctrlr_dom); - ConfigKeyVal::Free(ctrlr_dom.ctrlr); - ConfigKeyVal::Free(ctrlr_dom.domain); - ConfigKeyVal::Free(tmp_ctrlr_dom.ctrlr); - ConfigKeyVal::Free(tmp_ctrlr_dom.domain); - return ipc_resp.header.result_code; - } - tmp_okey->AppendCfgVal((ipc_resp.ckv_data)->GetCfgValAndUnlink()); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - if (okey == NULL) { - okey = tmp_okey; - } else { - okey->AppendCfgKeyVal(tmp_okey); - } + if (okey == NULL) { + okey = tmp_okey; + } else { + okey->AppendCfgKeyVal(tmp_okey); + } - tmp_sib_count++; - if (tmp_sib_count == req->rep_count) - break; + tmp_sib_count++; + if (tmp_sib_count == req->rep_count) + break; } if ((okey != NULL) && (result_code == UPLL_RC_SUCCESS)) { ikey->ResetWith(okey); req->rep_count = tmp_sib_count; DELETE_IF_NOT_NULL(okey); } - FREE_LIST_CTRLR(list_ctrlr_dom); + FREE_LIST_CTRLR(list_ctrlr_dom); } else { result_code = UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -4511,7 +4950,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadControllerStateDetail( reinterpret_cast (ikey->get_key()); val_flowfilter_controller_t *ival = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (*okey == NULL) { key_vtn_flowfilter_controller_t *tmp_ff_ctrl = @@ -4528,12 +4967,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadControllerStateDetail( IpctSt::kIpcStKeyVtnFlowfilterController, tmp_ff_ctrl, NULL); val_flowfilter_controller_t* tmp_val_ff_ctrl = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); memcpy(tmp_val_ff_ctrl, ival, sizeof(val_flowfilter_controller_t)); (*okey)->AppendCfgVal(IpctSt::kIpcStValFlowfilterController, - tmp_val_ff_ctrl); + tmp_val_ff_ctrl); } ConfigKeyVal *tmp_okey = *okey; tmp_okey->AppendCfgVal(drv_resp_ckv->GetCfgValAndUnlink()); @@ -4550,49 +4989,50 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ConstructReadSiblingNormalResponse( controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(controller_domain)); GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); - // Allocating The Key of KT_VTN_FF_Entry - // Allocating CKV tctrl_key - // Reading The Entry_Ctrl_Table - // Extracting The Val from CKV tctrl_key - - val_flowfilter_controller_t* l_val_ff_ctrl = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); - - val_vtn_flowfilter_entry_ctrlr_t* val_vtn_ffe_ctrlr = - reinterpret_cast(GetVal(ikey)); - - key_vtn_flowfilter_entry_t *l_key_vtn_ffe = - reinterpret_cast (ikey->get_key()); - l_val_ff_ctrl->valid[UPLL_IDX_DIRECTION_FFC] = UNC_VF_VALID; - l_val_ff_ctrl->direction = l_key_vtn_ffe->flowfilter_key.input_direction; - l_val_ff_ctrl->valid[UPLL_IDX_SEQ_NUM_FFC] = UNC_VF_VALID; - l_val_ff_ctrl->sequence_num = l_key_vtn_ffe->sequence_num; - - (*okey)->AppendCfgVal(IpctSt::kIpcStValFlowfilterController, - l_val_ff_ctrl); + // Allocating The Key of KT_VTN_FF_Entry + // Allocating CKV tctrl_key + // Reading The Entry_Ctrl_Table + // Extracting The Val from CKV tctrl_key - val_vtn_flowfilter_entry_t *op_val_vtn_ffe = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); + val_flowfilter_controller_t* l_val_ff_ctrl = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_controller_t))); - result_code = GetCtrlFlowFilterEntry(l_key_vtn_ffe, - val_vtn_ffe_ctrlr, - dt_type, - dmi, - op_val_vtn_ffe, - reinterpret_cast(ctrlr_dom.ctrlr)); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetCtrlFlowFilterEntry error code (%d)", result_code); - free(op_val_vtn_ffe); - return result_code; - } - (*okey)->AppendCfgVal(IpctSt::kIpcStValVtnFlowfilterEntry, op_val_vtn_ffe); + val_vtn_flowfilter_entry_ctrlr_t* val_vtn_ffe_ctrlr = + reinterpret_cast(GetVal(ikey)); + + key_vtn_flowfilter_entry_t *l_key_vtn_ffe = + reinterpret_cast (ikey->get_key()); + l_val_ff_ctrl->valid[UPLL_IDX_DIRECTION_FFC] = UNC_VF_VALID; + l_val_ff_ctrl->direction = l_key_vtn_ffe->flowfilter_key.input_direction; + l_val_ff_ctrl->valid[UPLL_IDX_SEQ_NUM_FFC] = UNC_VF_VALID; + l_val_ff_ctrl->sequence_num = l_key_vtn_ffe->sequence_num; + + (*okey)->AppendCfgVal(IpctSt::kIpcStValFlowfilterController, + l_val_ff_ctrl); + + val_vtn_flowfilter_entry_t *op_val_vtn_ffe = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); + + result_code = GetCtrlFlowFilterEntry(l_key_vtn_ffe, + val_vtn_ffe_ctrlr, + dt_type, + dmi, + op_val_vtn_ffe, + reinterpret_cast + (ctrlr_dom.ctrlr)); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetCtrlFlowFilterEntry error code (%d)", result_code); + free(op_val_vtn_ffe); + return result_code; + } + (*okey)->AppendCfgVal(IpctSt::kIpcStValVtnFlowfilterEntry, op_val_vtn_ffe); return UPLL_RC_SUCCESS; } -// Added +// Added upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key) { UPLL_FUNC_TRACE; @@ -4625,12 +5065,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_DEBUG(" Invalid keytype(%d)", key->get_key_type()); return UPLL_RC_ERR_BAD_REQUEST; } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } return rt_code; @@ -4707,9 +5148,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterEntry( return ValidateVtnFlowfilterEntryValue(key, req); } -upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterController - (IpcReqRespHeader *req, - ConfigKeyVal *key) { +upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterController( + IpcReqRespHeader *req, + ConfigKeyVal *key) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; @@ -4724,30 +5165,30 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterController return UPLL_RC_ERR_INVALID_OPTION2; } if ((req->operation == UNC_OP_READ_SIBLING_COUNT) && - (req->option1 != UNC_OPT1_NORMAL)) { + (req->option1 != UNC_OPT1_NORMAL)) { UPLL_LOG_DEBUG(" Invalid request(%d)", req->option1); return UPLL_RC_ERR_INVALID_OPTION1; } if (req->datatype != UPLL_DT_STATE) { - UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + UPLL_LOG_DEBUG(" Invalid Datatype(%d)", req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } if (key->get_st_num() != IpctSt::kIpcStKeyVtnFlowfilterController) { - UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", - key->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; + UPLL_LOG_DEBUG("Invalid key structure received. received struct num - %d", + key->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; } key_vtn_flowfilter_controller_t *key_vtn_flowfilter_controller = - reinterpret_cast(key->get_key()); + reinterpret_cast(key->get_key()); if (NULL == key_vtn_flowfilter_controller) { - UPLL_LOG_DEBUG("Key structure is empty!!"); - return UPLL_RC_ERR_BAD_REQUEST; + UPLL_LOG_DEBUG("Key structure is empty!!"); + return UPLL_RC_ERR_BAD_REQUEST; } VtnMoMgr *mgrvtn = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VTN))); + const_cast(GetMoManager(UNC_KT_VTN))); if (NULL == mgrvtn) { UPLL_LOG_DEBUG("Unable to get KT_VTN object for key_vtn syntax validation"); return UPLL_RC_ERR_GENERIC; @@ -4755,25 +5196,25 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterController rt_code = mgrvtn->ValidateVtnKey((&(key_vtn_flowfilter_controller->vtn_key))); if (UPLL_RC_SUCCESS != rt_code) { - UPLL_LOG_DEBUG(" Vtn name syntax validation failed :" - "Err Code - %d", - rt_code); - return rt_code; + UPLL_LOG_DEBUG(" Vtn name syntax validation failed :" + "Err Code - %d", + rt_code); + return rt_code; } if ((req->operation != UNC_OP_READ_SIBLING_COUNT) && (req->operation != UNC_OP_READ_SIBLING_BEGIN)) { rt_code = ValidateKey(reinterpret_cast( - key_vtn_flowfilter_controller->controller_name), + key_vtn_flowfilter_controller->controller_name), kMinLenCtrlrId, kMaxLenCtrlrId); if (rt_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Controllername syntax validation failed: Err code-%d", - rt_code); + rt_code); return rt_code; } if (!ValidateDefaultStr(key_vtn_flowfilter_controller->domain_id, - kMinLenDomainId, kMaxLenDomainId)) { + kMinLenDomainId, kMaxLenDomainId)) { UPLL_LOG_DEBUG("DomainId syntax validation failed:"); return UPLL_RC_ERR_CFG_SYNTAX; } @@ -4788,8 +5229,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterController if (!key->get_cfg_val()) { if (req->operation == UNC_OP_READ_SIBLING_COUNT) { - UPLL_LOG_TRACE("val stucture is optional"); - return UPLL_RC_SUCCESS; + UPLL_LOG_TRACE("val stucture is optional"); + return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG(" val structure is mandatory"); return UPLL_RC_ERR_BAD_REQUEST; @@ -4805,7 +5246,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterController val_flowfilter_controller_t *val_ff_ctrlr = static_cast( - key->get_cfg_val()->get_val()); + key->get_cfg_val()->get_val()); if (NULL == val_ff_ctrlr) { UPLL_LOG_DEBUG("KT_VTN_FLOWFILTER_CONTROLLER val structure is null"); @@ -4815,7 +5256,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateMessageForVtnFlowFilterController return ValidateVtnFlowfilterControllerValue( - val_ff_ctrlr, req->operation); + val_ff_ctrlr, req->operation); } upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterControllerValue( @@ -4857,15 +5298,15 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateVtnFlowfilterControllerValue( } upll_rc_t VtnFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name) { + ConfigKeyVal *ikey, + const char* ctrlr_name) { UPLL_FUNC_TRACE; - + upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; if ((NULL == req) || (NULL == ikey)) { - UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); + UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); return rt_code; } @@ -4874,15 +5315,15 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateCapability(IpcReqRespHeader *req, } else if (UNC_KT_VTN_FLOWFILTER_CONTROLLER == ikey->get_key_type()) { return ValidateCapabilityForVtnFlowFilterController(req, ikey, ctrlr_name); } else { - // Invalid key_type trace + // Invalid key_type trace return UPLL_RC_ERR_GENERIC; } } upll_rc_t VtnFlowFilterEntryMoMgr:: - ValidateCapabilityForVtnFlowFilterEntry(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name) { +ValidateCapabilityForVtnFlowFilterEntry(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char* ctrlr_name) { UPLL_FUNC_TRACE; if (!ctrlr_name) @@ -4898,18 +5339,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr:: switch (req->operation) { case UNC_OP_CREATE: { ret_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (ret_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &max_instance_count, &max_attrs, &attrs); break; } case UNC_OP_UPDATE: { ret_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } default: { @@ -4920,7 +5355,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr:: } else { UPLL_LOG_DEBUG("Calling the GetReadCapability"); ret_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } } } @@ -4936,13 +5371,14 @@ upll_rc_t VtnFlowFilterEntryMoMgr:: reinterpret_cast(GetVal(ikey)); if (val_vtn_flowfilter_entry) { - if (max_attrs > 0) { - return ValVtnFlowfilterEntryAttributeSupportCheck( - val_vtn_flowfilter_entry, attrs); - } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + if (max_attrs > 0) { + return ValVtnFlowfilterEntryAttributeSupportCheck( + val_vtn_flowfilter_entry, attrs); + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } } return UPLL_RC_SUCCESS; } @@ -4967,8 +5403,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateCapabilityForVtnFlowFilterController( if (req->datatype == UPLL_DT_STATE) { UPLL_LOG_DEBUG("Calling the GetStateCapability"); - result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), + &max_attrs, &attrs); } else { UPLL_LOG_DEBUG("Calling the GetReadCapability"); result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), @@ -4981,44 +5417,45 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ValidateCapabilityForVtnFlowFilterController( } val_flowfilter_controller_t *val_ff_ctrlr = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); - if (val_ff_ctrlr) { - if (max_attrs > 0) { - return ValVtnFlowfilterCtrlAttributeSupportCheck( - val_ff_ctrlr, attrs); - } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + if (val_ff_ctrlr) { + if (max_attrs > 0) { + return ValVtnFlowfilterCtrlAttributeSupportCheck( + val_ff_ctrlr, attrs); + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - return UPLL_RC_SUCCESS; + } + return UPLL_RC_SUCCESS; } upll_rc_t VtnFlowFilterEntryMoMgr::ValVtnFlowfilterCtrlAttributeSupportCheck( - val_flowfilter_controller_t *val_ff_ctrlr, - const uint8_t* attrs) { + val_flowfilter_controller_t *val_ff_ctrlr, + const uint8_t* attrs) { UPLL_FUNC_TRACE; if ((val_ff_ctrlr->valid[UPLL_IDX_DIRECTION_FFC] == - UNC_VF_VALID) || + UNC_VF_VALID) || (val_ff_ctrlr->valid[UPLL_IDX_DIRECTION_FFC] == - UNC_VF_VALID_NO_VALUE)) { + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_flowfilter_controller::kCapDirection]== 0) { val_ff_ctrlr->valid[UPLL_IDX_DIRECTION_FFC] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("Direction attr is not supported by ctrlr"); } } if ((val_ff_ctrlr->valid[UPLL_IDX_SEQ_NUM_FFC] == - UNC_VF_VALID) || + UNC_VF_VALID) || (val_ff_ctrlr->valid[UPLL_IDX_SEQ_NUM_FFC] == - UNC_VF_VALID_NO_VALUE)) { + UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_flowfilter_controller::kCapSeqNum]== 0) { val_ff_ctrlr->valid[UPLL_IDX_SEQ_NUM_FFC] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("SeqNum attr is not supported by ctrlr"); } @@ -5033,19 +5470,19 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadControllerStateNormal( DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - // Extracting The Key of KT_VTN_FF_Ctrl + // Extracting The Key of KT_VTN_FF_Ctrl key_vtn_flowfilter_controller_t *key_vtn_ff_ctrl = reinterpret_cast(ikey->get_key()); - // Extracting The VAl of KT_VTN_FF_Ctrl + // Extracting The VAl of KT_VTN_FF_Ctrl val_flowfilter_controller_t* val_ff_ctrl = reinterpret_cast(GetVal(ikey)); - // Allocating The Key of KT_VTN_FF_Entry + // Allocating The Key of KT_VTN_FF_Entry key_vtn_flowfilter_entry_t *key_vtn_ffe_ctrl = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); - // Copying The seqno, i/p dir, Vtn_Name to The Above Key of CKV tctrl_key + // Copying The seqno, i/p dir, Vtn_Name to The Above Key of CKV tctrl_key uuu::upll_strncpy( key_vtn_ffe_ctrl->flowfilter_key.vtn_key.vtn_name, key_vtn_ff_ctrl->vtn_key.vtn_name, @@ -5064,12 +5501,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadControllerStateNormal( ikey->DeleteCfgVal(); val_ff_ctrl = NULL; - // Allocating CKV tctrl_key - ConfigKeyVal *tctrl_key = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, - IpctSt::kIpcStKeyVtnFlowfilterEntry, - key_vtn_ffe_ctrl, NULL); + // Allocating CKV tctrl_key + ConfigKeyVal *tctrl_key = new ConfigKeyVal( + UNC_KT_VTN_FLOWFILTER_ENTRY, + IpctSt::kIpcStKeyVtnFlowfilterEntry, + key_vtn_ffe_ctrl, NULL); - // Reading The Entry_Ctrl_Table + // Reading The Entry_Ctrl_Table SET_USER_DATA_CTRLR(tctrl_key, key_vtn_ff_ctrl->controller_name); SET_USER_DATA_DOMAIN(tctrl_key, key_vtn_ff_ctrl->domain_id); DbSubOp dbop1 = { kOpReadMultiple, kOpMatchCtrlr|kOpMatchDomain, @@ -5082,7 +5520,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadControllerStateNormal( return result_code; } - // Extracting The Val from CKV tctrl_key + // Extracting The Val from CKV tctrl_key ConfigKeyVal *tmp_key = tctrl_key; while (tmp_key != NULL) { val_flowfilter_controller_t *l_val_ff_ctrl = @@ -5104,12 +5542,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadControllerStateNormal( reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_entry_t))); - result_code = GetCtrlFlowFilterEntry(l_key_vtn_ffe, - val_vtn_ffe_ctrlr, - dt_type, - dmi, - op_val_vtn_ffe, - reinterpret_cast(key_vtn_ff_ctrl->controller_name)); + result_code = GetCtrlFlowFilterEntry( + l_key_vtn_ffe, + val_vtn_ffe_ctrlr, + dt_type, + dmi, + op_val_vtn_ffe, + reinterpret_cast(key_vtn_ff_ctrl->controller_name)); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetCtrlFlowFilterEntry error code (%d)", result_code); return result_code; @@ -5127,8 +5566,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetCtrlFlowFilterEntry( upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, val_vtn_flowfilter_entry_t *&op_val_vtn_ffe, - const char* ctrlr_name, - unc_keytype_option1_t opt1) { + const char* ctrlr_name, + unc_keytype_option1_t opt1) { UPLL_FUNC_TRACE; const uint8_t *attrs = NULL; @@ -5142,7 +5581,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetCtrlFlowFilterEntry( tkey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, IpctSt::kIpcStKeyVtnFlowfilterEntry, key_vtn_ffe, NULL); - // Now Matching Seq NO, Dir, VTNNAME To KEY of CKV tkey + // Now Matching Seq NO, Dir, VTNNAME To KEY of CKV tkey memcpy(key_vtn_ffe, l_key_vtn_ffe, sizeof(key_vtn_flowfilter_entry_t)); @@ -5154,11 +5593,11 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetCtrlFlowFilterEntry( delete tkey; return result_code; } - // NOW Extract The Val From THe tkey Which Consist - // Value+CS+Valid Attr.of VTN_FF_ENTRY_TBL + // NOW Extract The Val From THe tkey Which Consist + // Value+CS+Valid Attr.of VTN_FF_ENTRY_TBL val_vtn_flowfilter_entry_t *temp_val_vtn_ffe = reinterpret_cast(GetVal(tkey)); - // Checking The Valid And Cs Attribute + // Checking The Valid And Cs Attribute size_t tmp_size = (sizeof(val_vtn_ffe_ctrlr->valid) / sizeof(val_vtn_ffe_ctrlr->valid[0])); @@ -5169,26 +5608,27 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetCtrlFlowFilterEntry( memcpy(temp_val_vtn_ffe->cs_attr, val_vtn_ffe_ctrlr->cs_attr, tmp_size); temp_val_vtn_ffe->cs_row_status = (uint8_t)val_vtn_ffe_ctrlr->cs_row_status; - //Adding capaCheck for controller + // Adding capaCheck for controller bool ret_code = false; if ((opt1 == UNC_OPT1_DETAIL) && (dt_type == UPLL_DT_STATE)) { ret_code = GetStateCapability(ctrlr_name, UNC_KT_VTN_FLOWFILTER_ENTRY, - &max_attrs, &attrs); - if(!ret_code ) { - UPLL_LOG_DEBUG("GetStateCapability Is failed in GetCtrlFlowFilterEntry %d", - ret_code); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + &max_attrs, &attrs); + if (!ret_code) { + UPLL_LOG_DEBUG("GetStateCapability Is failed in" + "GetCtrlFlowFilterEntry %d", + ret_code); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } - if(max_attrs>0) { - result_code = ValVtnFlowfilterEntryAttributeSupportCheck( - temp_val_vtn_ffe, attrs); - if(result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ERR result_code %d", result_code ); - return result_code; - } - } + if (max_attrs > 0) { + result_code = ValVtnFlowfilterEntryAttributeSupportCheck( + temp_val_vtn_ffe, attrs); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ERR result_code %d", result_code); + return result_code; + } + } } if (temp_val_vtn_ffe->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] != UNC_VF_VALID) { @@ -5225,30 +5665,28 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetVtnControllerSpan( ConfigKeyVal *okey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; VtnMoMgr *mgr = static_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager(UNC_KT_VTN))); result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Key not supported by controller"); return result_code; } key_vtn_t *vtn_key = reinterpret_cast(okey->get_key()); - if (ikey->get_key_type() == UNC_KT_VTN_FLOWFILTER_CONTROLLER) { - key_vtn_flowfilter_controller_t *key_vtn_ff_ctrl = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(vtn_key->vtn_name, - key_vtn_ff_ctrl->vtn_key.vtn_name, - (kMaxLenVtnName+1)); - + key_vtn_ff_ctrl->vtn_key.vtn_name, + (kMaxLenVtnName+1)); + } else { key_vtn_flowfilter_entry_t *ffe_key = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(vtn_key->vtn_name, - ffe_key->flowfilter_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); - } - + ffe_key->flowfilter_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); + } + result_code = mgr->GetControllerDomainSpan(okey, dt_type, dmi, list_ctrlr_dom); @@ -5263,8 +5701,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetVtnControllerSpan( } upll_rc_t VtnFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; if (ikey == NULL || dmi == NULL) { UPLL_LOG_TRACE( @@ -5274,45 +5712,175 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; upll_rc_t vtn_ctrlr_span_rt_code = UPLL_RC_SUCCESS; uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); + key_vtn_flowfilter_entry_t *vtn_ffe_key = + reinterpret_cast(ikey->get_key()); + if (!vtn_ffe_key) { + UPLL_LOG_DEBUG("vtn_ffe_key NULL"); + return UPLL_RC_ERR_GENERIC; + } + uint8_t old_vtn_name[kMaxLenVtnName + 1], new_vtn_name[kMaxLenVtnName + 1]; + memset(old_vtn_name, 0, sizeof(old_vtn_name)); + memset(new_vtn_name, 0, sizeof(new_vtn_name)); + uuu::upll_strncpy(old_vtn_name, vtn_ffe_key->flowfilter_key.vtn_key.vtn_name, + kMaxLenVtnName+1); + UPLL_LOG_TRACE("%s Vtn_FFE CreateAuditMoImpl ikey", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } + uuu::upll_strncpy(new_vtn_name, vtn_ffe_key->flowfilter_key.vtn_key.vtn_name, + kMaxLenVtnName+1); DbSubOp dbop1 = { kOpReadExist, kOpMatchNone, kOpInOutNone }; result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_READ, dmi, - &dbop1, MAINTBL); + &dbop1, MAINTBL); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Update record Err in vtnffentry MainTbl(%d)", - result_code); + result_code); return result_code; } if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, - dmi, MAINTBL); + dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Update record Err in vtnffentry MainTbl(%d)", - result_code); + result_code); return result_code; } } std::list list_ctrlr_dom; - vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, UPLL_DT_AUDIT, dmi, list_ctrlr_dom); - if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && - (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", - vtn_ctrlr_span_rt_code); - FREE_LIST_CTRLR(list_ctrlr_dom); - return result_code; + MoMgrImpl *mgr = static_cast((const_cast( + GetMoManager( + UNC_KT_VTN)))); + UPLL_LOG_DEBUG(" old vtn name (%s), new vtn name (%s)", old_vtn_name, + new_vtn_name); + if (!(strcmp(reinterpret_cast(old_vtn_name), + reinterpret_cast(new_vtn_name)))) { + std::list tmp_list_ctrlr_dom; + vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, + UPLL_DT_AUDIT, + dmi, + tmp_list_ctrlr_dom); + if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && + (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", + vtn_ctrlr_span_rt_code); + FREE_LIST_CTRLR(list_ctrlr_dom); + return vtn_ctrlr_span_rt_code; + } + if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + ConfigKeyVal *unc_key = NULL; + result_code = mgr->GetChildConfigKey(unc_key, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + val_rename_vtn *rename_vtn_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + if (!rename_vtn_key) { + UPLL_LOG_DEBUG("rename_vtn_key NULL"); + DELETE_IF_NOT_NULL(unc_key); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(rename_vtn_key->new_name, + old_vtn_name, + (kMaxLenVtnName + 1)); + rename_vtn_key->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn_key); + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr|kOpMatchDomain, + kOpInOutNone }; + std::list::iterator it; + for (it = tmp_list_ctrlr_dom.begin(); + it != tmp_list_ctrlr_dom.end(); it++) { + SET_USER_DATA_CTRLR_DOMAIN(unc_key, *it); + result_code = mgr->ReadConfigDB(unc_key, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(unc_key); + mgr = NULL; + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { + continue; + } + list_ctrlr_dom.push_back(*it); + tmp_list_ctrlr_dom.clear(); + break; + } + DELETE_IF_NOT_NULL(unc_key); + } + } else { + controller_domain_t tmp_ctrlr_dom, ctrlr_dom; + tmp_ctrlr_dom.ctrlr = NULL; + tmp_ctrlr_dom.domain = NULL; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + ConfigKeyVal *unc_key = NULL; + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr, + kOpInOutDomain|kOpInOutCtrlr }; + MoMgrImpl *mgr = static_cast + ((const_cast(GetMoManager( + UNC_KT_VTN)))); + result_code = mgr->GetChildConfigKey(unc_key, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + val_rename_vtn *rename_vtn_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + if (!rename_vtn_key) { + UPLL_LOG_DEBUG("rename_vtn_key NULL"); + DELETE_IF_NOT_NULL(unc_key); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(rename_vtn_key->new_name, + old_vtn_name, + (kMaxLenVtnName + 1)); + rename_vtn_key->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + + SET_USER_DATA_CTRLR(unc_key, ctrlr_id); + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn_key); + result_code = mgr->ReadConfigDB(unc_key, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(unc_key); + mgr = NULL; + return result_code; + } + + ctrlr_dom.ctrlr = reinterpret_cast + (ConfigKeyVal::Malloc((kMaxLenCtrlrId + 1))); + ctrlr_dom.domain = reinterpret_cast + (ConfigKeyVal::Malloc((kMaxLenDomainId + 1))); + + GET_USER_DATA_CTRLR_DOMAIN(unc_key, tmp_ctrlr_dom); + uuu::upll_strncpy(ctrlr_dom.ctrlr, tmp_ctrlr_dom.ctrlr, + (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(ctrlr_dom.domain, tmp_ctrlr_dom.domain, + (kMaxLenDomainId + 1)); + + UPLL_LOG_TRACE(" ctrlr = %s, dom = %s ", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + list_ctrlr_dom.push_back(ctrlr_dom); + vtn_ctrlr_span_rt_code = UPLL_RC_SUCCESS; + DELETE_IF_NOT_NULL(unc_key); } result_code = SetValidAudit(ikey); @@ -5320,7 +5888,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, FREE_LIST_CTRLR(list_ctrlr_dom); return result_code; } - // create a record in CANDIDATE DB for controller Table + // create a record in CANDIDATE DB for controller Table if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UpdateControllerTable(ikey, UNC_OP_CREATE, UPLL_DT_AUDIT, dmi, @@ -5332,9 +5900,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } } val_vtn_flowfilter_entry_t *val_vtn_ffe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (UNC_VF_VALID == val_vtn_ffe->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { - result_code = UpdateFlowListInCtrl(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi); + result_code = UpdateFlowListInCtrl(ikey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi); if (result_code != UPLL_RC_SUCCESS) { return result_code; } @@ -5366,61 +5937,39 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTable( (GetVal(ikey)); if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { - if (op == UNC_OP_CREATE) { - //capability check - - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - free(vtn_ffe_key); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, - reinterpret_cast(it->ctrlr), - UPLL_DT_CANDIDATE, - &cur_instance_count, - dmi, CTRLRTBL); - - if (UPLL_RC_SUCCESS != result_code) { - free(vtn_ffe_key); - DELETE_IF_NOT_NULL(temp_key); - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - DELETE_IF_NOT_NULL(temp_key); - } IpcReqRespHeader *req_header = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); req_header->operation = op; req_header->datatype = dt_type; - // Validate whether the attributes supported by controller or not + // Validate whether the attributes supported by controller or not result_code = ValidateCapability( - req_header, ikey, reinterpret_cast(it->ctrlr)); + req_header, ikey, reinterpret_cast(it->ctrlr)); free(req_header); if (result_code != UPLL_RC_SUCCESS) { - // VTN FlowfilterEntry is not supported for other than PFC Controller - // so skip adding entry for such sontroller in ctrlr table + // VTN FlowfilterEntry is not supported for other than PFC Controller + // so skip adding entry for such sontroller in ctrlr table free(vtn_ffe_key); if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(it->ctrlr), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - ++it; - continue; + dt_type, + &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + ++it; + continue; } UPLL_LOG_DEBUG("ValidateCapability Failed: result_code=%d", - result_code); + result_code); return result_code; - } + } } val_vtn_flowfilter_entry_ctrlr_t *ctrlr_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof - (val_vtn_flowfilter_entry_ctrlr_t))); + + (ConfigKeyVal::Malloc(sizeof + (val_vtn_flowfilter_entry_ctrlr_t))); for (unsigned int loop = 0; loop < (sizeof(ctrlr_val->valid)/sizeof(ctrlr_val->valid[0])); loop++) { @@ -5435,13 +5984,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTable( IpctSt::kIpcStKeyVtnFlowfilterEntry, vtn_ffe_key, ctrlcv); if (!ctrlckv) return UPLL_RC_ERR_GENERIC; - // ctrlckv->AppendCfgVal(IpctSt::kIpcInvalidStNum, ctrlr_val); + // ctrlckv->AppendCfgVal(IpctSt::kIpcInvalidStNum, ctrlr_val); SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, *it); if (UNC_OP_CREATE == op) { DbSubOp dbop1 = { kOpReadExist, kOpMatchCtrlr | kOpMatchDomain, kOpInOutNone }; result_code = UpdateConfigDB(ctrlckv, dt_type, UNC_OP_READ, dmi, &dbop1, - CTRLRTBL); + CTRLRTBL); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); @@ -5454,7 +6003,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTable( continue; } } - // Create/Update/Delete a record in CANDIDATE DB + // Create/Update/Delete a record in CANDIDATE DB result_code = UpdateConfigDB(ctrlckv, dt_type, op, dmi, CTRLRTBL); DELETE_IF_NOT_NULL(ctrlckv); if (result_code != UPLL_RC_SUCCESS) { @@ -5468,9 +6017,10 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateControllerTable( return UPLL_RC_SUCCESS; } -upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMainTbl(ConfigKeyVal *vtn_ffe_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { +upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMainTbl( + ConfigKeyVal *vtn_ffe_key, + unc_keytype_operation_t op, uint32_t driver_result, + ConfigKeyVal *nreq, DalDmlIntf *dmi) { ConfigKeyVal *ck_vtn_ffe = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtn_flowfilter_entry_t *vtn_ffe_val = NULL; @@ -5510,7 +6060,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMainTbl(ConfigKeyVal *vtn_ffe_key, } CompareValidValue(ffeval, nffeval, false); vtn_ffe_val->cs_row_status = - reinterpret_cast(GetVal(nreq))->cs_row_status; + reinterpret_cast + (GetVal(nreq))->cs_row_status; break; case UNC_OP_DELETE: break; @@ -5528,20 +6079,21 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateMainTbl(ConfigKeyVal *vtn_ffe_key, return result_code; } -upll_rc_t VtnFlowFilterEntryMoMgr::GetControllerDomainSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code; - DbSubOp dbop = {kOpReadExist|kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain}; - result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); - return result_code; - } +upll_rc_t VtnFlowFilterEntryMoMgr::GetControllerDomainSpan( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code; + DbSubOp dbop = {kOpReadExist|kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; + result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); + return result_code; +} upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; ConfigKeyVal *tempckv = NULL; @@ -5566,9 +6118,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildMo(IpcReqRespHeader *req, ConfigKeyVal *iter_ckv = tempckv; while (NULL != iter_ckv) { val_vtn_flowfilter_entry_t *vtn_ffe_val = reinterpret_cast - (GetVal(iter_ckv)); + (GetVal(iter_ckv)); if (UNC_VF_VALID == vtn_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { - result_code = UpdateFlowListInCtrl(iter_ckv, req->datatype, UNC_OP_DELETE, dmi); + result_code = UpdateFlowListInCtrl(iter_ckv, + req->datatype, + UNC_OP_DELETE, + dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Unable to update flowlist in ctrlr table"); DELETE_IF_NOT_NULL(tempckv); @@ -5579,17 +6134,17 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildMo(IpcReqRespHeader *req, } DELETE_IF_NOT_NULL(tempckv); result_code = UpdateConfigDB(ikey, req->datatype, req->operation, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); return result_code; } result_code = UpdateConfigDB(ikey, req->datatype, req->operation, dmi, - CTRLRTBL); + CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); return result_code; } return UPLL_RC_SUCCESS; @@ -5606,16 +6161,17 @@ upll_rc_t VtnFlowFilterEntryMoMgr::IsFlowListConfigured( } if (!ckv) return UPLL_RC_ERR_GENERIC; val_vtn_flowfilter_entry_t *ffe_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof - (val_vtn_flowfilter_entry_t))); + + (ConfigKeyVal::Malloc(sizeof + (val_vtn_flowfilter_entry_t))); uuu::upll_strncpy(ffe_val->flowlist_name, flowlist_name, - (kMaxLenFlowListName + 1)); + (kMaxLenFlowListName + 1)); ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE] = UNC_VF_VALID; ckv->AppendCfgVal(IpctSt::kIpcStValVtnFlowfilterEntry, ffe_val); DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; - // Read the Configuration from the MainTable + // Read the Configuration from the MainTable result_code = ReadConfigDB(ckv, UPLL_DT_CANDIDATE, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); delete ckv; return result_code; } @@ -5628,7 +6184,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VTN_FLOWFILTER_ENTRY) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -5650,7 +6206,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, (pkey)->flowfilter_key.vtn_key.vtn_name, (kMaxLenVtnName + 1)); vtn_ff_key->input_direction =reinterpret_cast - (pkey)->flowfilter_key.input_direction; + (pkey)->flowfilter_key.input_direction; okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, IpctSt::kIpcStKeyVtnFlowfilter, vtn_ff_key, NULL); SET_USER_DATA(okey, ikey); @@ -5672,25 +6228,25 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingCount( return result_code; } if (ikey->get_key_type() == UNC_KT_VTN_FLOWFILTER_ENTRY) { - if(req->datatype == UPLL_DT_STATE || - req->datatype == UPLL_DT_STARTUP || - req->datatype == UPLL_DT_RUNNING || - req->datatype == UPLL_DT_CANDIDATE ) { - result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); - return result_code; - } else { - UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", - req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } + if (req->datatype == UPLL_DT_STATE || + req->datatype == UPLL_DT_STARTUP || + req->datatype == UPLL_DT_RUNNING || + req->datatype == UPLL_DT_CANDIDATE ) { + result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); + return result_code; + } else { + UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } } else if (ikey->get_key_type() == UNC_KT_VTN_FLOWFILTER_CONTROLLER) { if ((req->datatype == UPLL_DT_STATE) && (req->option1 == UNC_OPT1_NORMAL) && (req->option2 == UNC_OPT2_NONE)) { - // ReadSibling Operation Get The Multiple Key + // ReadSibling Operation Get The Multiple Key key_vtn_flowfilter_controller_t *key_vtn_ff_ctrl = reinterpret_cast(ikey->get_key()); - // Extracting The VAl of KT_VTN_FF_Ctrl + // Extracting The VAl of KT_VTN_FF_Ctrl val_flowfilter_controller_t* val_ff_ctrl = reinterpret_cast(GetVal(ikey)); @@ -5705,15 +6261,15 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingCount( (kMaxLenVtnName +1)); uuu::upll_strncpy(ctrlr_dom.domain, key_vtn_ff_ctrl->domain_id, (kMaxLenVtnName +1)); - // Allocating The Key of KT_VTN_FF_Entry + // Allocating The Key of KT_VTN_FF_Entry key_vtn_flowfilter_entry_t *key_vtn_ffe_ctrl = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry_t))); - // Allocating CKV tctrl_key + // Allocating CKV tctrl_key tctrl_key = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, IpctSt::kIpcStKeyVtnFlowfilterEntry, key_vtn_ffe_ctrl, NULL); - // Copying The seqno, i/p dir, Vtn_Name to The Above Key of CKV tctrl_key + // Copying The seqno, i/p dir, Vtn_Name to The Above Key of CKV tctrl_key uuu::upll_strncpy(key_vtn_ffe_ctrl->flowfilter_key.vtn_key.vtn_name, key_vtn_ff_ctrl->vtn_key.vtn_name, (kMaxLenVtnName +1)); @@ -5723,7 +6279,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::ReadSiblingCount( key_vtn_ffe_ctrl->sequence_num = 0; } key_vtn_ffe_ctrl->flowfilter_key.input_direction = val_ff_ctrl->direction; - // Reading The Entry_Ctrl_Table + // Reading The Entry_Ctrl_Table DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(tctrl_key, UPLL_DT_STATE, UNC_OP_READ, @@ -5764,8 +6320,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildrenPOM( UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); return result_code; } - // Read the DB get the flowlist value and send the delete request to - // flowlist momgr if flowlist is configured. + // Read the DB get the flowlist value and send the delete request to + // flowlist momgr if flowlist is configured. ConfigKeyVal *okey = NULL; ConfigKeyVal *temp_okey = NULL; @@ -5775,12 +6331,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildrenPOM( } DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; result_code = ReadConfigDB(temp_okey, UPLL_DT_CANDIDATE, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("UPLL_RC_ERR_NO_SUCH_INSTANCE"); DELETE_IF_NOT_NULL(temp_okey); - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; } UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); DELETE_IF_NOT_NULL(temp_okey); @@ -5789,7 +6345,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildrenPOM( okey = temp_okey; while (NULL != okey) { val_vtn_flowfilter_entry_t *vtn_ffe_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (UNC_VF_VALID == vtn_ffe_val->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { result_code = UpdateFlowListInCtrl(okey, dt_type, UNC_OP_DELETE, dmi); if (result_code != UPLL_RC_SUCCESS) { @@ -5808,11 +6364,11 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildrenPOM( return result_code; } result_code = UpdateConfigDB(temp_ikey, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(temp_ikey); return result_code; } @@ -5825,12 +6381,12 @@ upll_rc_t VtnFlowFilterEntryMoMgr::DeleteChildrenPOM( } DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutNone}; result_code = UpdateConfigDB(ctrlr_ikey, dt_type, UNC_OP_DELETE, dmi, - &dbop1, CTRLRTBL); + &dbop1, CTRLRTBL); UPLL_LOG_DEBUG("UpdateConfigDB for entry ctrlr tbl %d", result_code); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(ctrlr_ikey); return result_code; } @@ -5847,8 +6403,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val->valid) / sizeof(val->valid[0]); - ++loop) { + loop < sizeof(val->valid) / sizeof(val->valid[0]); + ++loop) { val->cs_attr[loop] = UNC_CS_APPLIED; val->cs_attr[loop] = UNC_CS_NOT_APPLIED; } @@ -5867,75 +6423,79 @@ bool VtnFlowFilterEntryMoMgr::FilterAttributes(void *&val1, return false; } -upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *main_ckv, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { +upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus( + ConfigKeyVal *main_ckv, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_vtn_flowfilter_entry_ctrlr_t *ctrlr_val; val_vtn_flowfilter_entry_t *val_main = reinterpret_cast (GetVal(main_ckv)); unc_keytype_configstatus_t ctrlr_status; - uint8_t cs_status; - ctrlr_status = (driver_result == UPLL_RC_SUCCESS) ? - UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + uint8_t cs_status; + ctrlr_status = (driver_result == UPLL_RC_SUCCESS) ? + UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; ctrlr_val = reinterpret_cast - (GetVal(ctrlr_key)); + (GetVal(ctrlr_key)); if ((val_main == NULL) || (ctrlr_val == NULL)) return UPLL_RC_ERR_GENERIC; cs_status = (val_main->cs_row_status); UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); if (op == UNC_OP_CREATE) { ctrlr_val->cs_row_status = ctrlr_status; - if (val_main->cs_row_status == UNC_CS_UNKNOWN) { - /* first entry in ctrlr table */ - cs_status = ctrlr_status; + if (val_main->cs_row_status == UNC_CS_UNKNOWN) { + /* first entry in ctrlr table */ + cs_status = ctrlr_status; - } else if (val_main->cs_row_status == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; - } else if (val_main->cs_row_status == UNC_CS_APPLIED) { + } else if (val_main->cs_row_status == UNC_CS_INVALID) { + cs_status = UNC_CS_INVALID; + } else if (val_main->cs_row_status == UNC_CS_APPLIED) { if (ctrlr_status == UNC_CS_NOT_APPLIED) { cs_status = UNC_CS_PARTIALLY_APPLIED; } } else if (val_main->cs_row_status == UNC_CS_NOT_APPLIED) { - if (ctrlr_status == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } - } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + if (ctrlr_status == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } + } else { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } + + UPLL_LOG_TRACE("cs_status for main tbl %d\n", cs_status); val_main->cs_row_status = cs_status; } - // Updating the Controller cs_row_status - val_vtn_flowfilter_entry_ctrlr *run_ctrlr_val = - reinterpret_cast - (GetVal(upd_key)); + // Updating the Controller cs_row_status + val_vtn_flowfilter_entry_ctrlr *run_ctrlr_val = + reinterpret_cast + (GetVal(upd_key)); if ((op == UNC_OP_UPDATE) && (run_ctrlr_val != NULL)) { void *valmain = reinterpret_cast(val_main); CompareValidValue(valmain, (GetVal(upd_key)), true); for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { - if ((val_main->valid[loop] != UNC_VF_INVALID) && - (val_main->valid[loop]!= UNC_VF_VALID_NO_VALUE)) { + sizeof(val_main->valid[0]); ++loop) { + if ((val_main->valid[loop] != UNC_VF_INVALID) && + (val_main->valid[loop]!= UNC_VF_VALID_NO_VALUE)) { if (ctrlr_status == UNC_CS_APPLIED) { - if(ctrlr_val->valid[loop] == UNC_VF_VALID) { + if (ctrlr_val->valid[loop] == UNC_VF_VALID) { ctrlr_val->cs_attr[loop] = UNC_CS_APPLIED; } if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { cs_status = UNC_CS_APPLIED; } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED ; + cs_status = UNC_CS_PARTIALLY_APPLIED; } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { cs_status = UNC_CS_INVALID; } } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { ctrlr_val->cs_attr[loop] = UNC_CS_NOT_APPLIED; if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { - cs_status = UNC_CS_NOT_APPLIED; - } if (val_main->cs_attr[loop] == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED ; + cs_status = UNC_CS_NOT_APPLIED; + } + if (val_main->cs_attr[loop] == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { cs_status = UNC_CS_INVALID; } @@ -5947,70 +6507,75 @@ upll_rc_t VtnFlowFilterEntryMoMgr::UpdateConfigStatus(ConfigKeyVal *main_ckv, if (ctrlr_status == UNC_CS_APPLIED) { if (run_ctrlr_val->valid[loop] == UNC_VF_VALID) { if (val_main->cs_attr[loop] == UNC_CS_PARTIALLY_APPLIED) { - val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; + val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { val_main->cs_attr[loop] = UNC_CS_INVALID; } else { - val_main->cs_attr[loop] = ctrlr_status; + val_main->cs_attr[loop] = ctrlr_status; } } if (ctrlr_val->cs_attr[loop] == UNC_CS_APPLIED) { ctrlr_val->cs_attr[loop] = ctrlr_status; - } + } } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { if (run_ctrlr_val->valid[loop] == UNC_VF_VALID) { if (val_main->cs_attr[loop] == UNC_CS_PARTIALLY_APPLIED) { val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; + val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { val_main->cs_attr[loop] = UNC_CS_INVALID; + } else if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + val_main->cs_attr[loop] = UNC_CS_NOT_APPLIED; } else { - val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; - } + val_main->cs_attr[loop] = UNC_CS_PARTIALLY_APPLIED; + } } - } + } } - if (val_main->valid[loop] == UNC_VF_VALID_NO_VALUE) { + if (val_main->valid[loop] == UNC_VF_VALID_NO_VALUE) { ctrlr_val->cs_attr[loop] = UNC_CS_UNKNOWN; val_main->cs_attr[loop] = UNC_CS_UNKNOWN; } - } - } - if (op == UNC_OP_CREATE ) { - for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ - sizeof(val_main->valid[0]); ++loop) { - if (val_main->valid[loop] != UNC_VF_INVALID) { - if (ctrlr_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) - ctrlr_val->cs_attr[loop] = ctrlr_status; - else - ctrlr_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; - - if (val_main->cs_attr[loop] == ctrlr_status) { - cs_status = ctrlr_status; - } else if (ctrlr_status == UNC_CS_APPLIED) { - if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + } + } + if (op == UNC_OP_CREATE) { + for (unsigned int loop = 0; loop < sizeof(val_main->valid)/ + sizeof(val_main->valid[0]); ++loop) { + if (val_main->valid[loop] != UNC_VF_INVALID) { + if (ctrlr_val->cs_attr[loop] != UNC_CS_NOT_SUPPORTED) + ctrlr_val->cs_attr[loop] = ctrlr_status; + else + ctrlr_val->cs_attr[loop] = UNC_CS_NOT_SUPPORTED; + + if (val_main->cs_attr[loop] == ctrlr_status) { cs_status = ctrlr_status; - } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; - }else { - cs_status = val_main->cs_attr[loop]; - } - } else if(ctrlr_status == UNC_CS_NOT_APPLIED) { - if(val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_NOT_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { - cs_status = UNC_CS_INVALID; + } else if (ctrlr_status == UNC_CS_APPLIED) { + if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + cs_status = ctrlr_status; + } else if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { + cs_status = UNC_CS_INVALID; + } else { + cs_status = val_main->cs_attr[loop]; + } + } else if (ctrlr_status == UNC_CS_NOT_APPLIED) { + if (val_main->cs_attr[loop] == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_NOT_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } else if (val_main->cs_attr[loop] == UNC_CS_INVALID) { + cs_status = UNC_CS_INVALID; + } else if (val_main->cs_attr[loop] == UNC_CS_UNKNOWN) { + cs_status = UNC_CS_NOT_APPLIED; + } + } else { + cs_status = UNC_CS_PARTIALLY_APPLIED; } - } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + val_main->cs_attr[loop] = cs_status; UPLL_LOG_DEBUG("Main tbl cs_attr : %d", val_main->cs_attr[loop]); } @@ -6031,9 +6596,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::Get_Tx_Consolidated_Status( break; case UNC_CS_PARTIALLY_APPLIED: if (current_ctrlr_cs == UNC_CS_NOT_APPLIED) { - // Todo: if this vtn has caused it then to change to applied. + // Todo: if this vtn has caused it then to change to applied. status = (drv_result_status != UNC_CS_APPLIED) ? - UNC_CS_PARTIALLY_APPLIED : drv_result_status; + UNC_CS_PARTIALLY_APPLIED : drv_result_status; } break; case UNC_CS_APPLIED: @@ -6041,21 +6606,25 @@ upll_rc_t VtnFlowFilterEntryMoMgr::Get_Tx_Consolidated_Status( case UNC_CS_INVALID: default: status = (drv_result_status == UNC_CS_NOT_APPLIED)? - UNC_CS_PARTIALLY_APPLIED: - (status == UNC_CS_UNKNOWN)?drv_result_status:status; + UNC_CS_PARTIALLY_APPLIED: + (status == UNC_CS_UNKNOWN)?drv_result_status:status; break; } return UPLL_RC_SUCCESS; } upll_rc_t VtnFlowFilterEntryMoMgr::IsRenamed(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t &rename) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t &rename) { UPLL_FUNC_TRACE; - UPLL_LOG_DEBUG("VtnFlowFilterEntryMoMgr IsRenamed"); + if (ikey == NULL) { + UPLL_LOG_DEBUG("Input ConfigKey cannot be NULL"); + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; ConfigKeyVal *okey = NULL; upll_rc_t result_code; /* rename is set implies user wants the ikey @@ -6065,68 +6634,70 @@ upll_rc_t VtnFlowFilterEntryMoMgr::IsRenamed(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("UNC_KT_VTN_FLOWFILTER_ENTRY"); result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Returning error %d",result_code); + UPLL_LOG_TRACE("Returning error %d", result_code); return result_code; } } else if (UNC_KT_VTN_FLOWFILTER_CONTROLLER == ikey->get_key_type()) { UPLL_LOG_DEBUG("UNC_KT_VTN_FLOWFILTER_CONTROLLER"); key_vtn_flowfilter_entry *out_key = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_entry))); key_vtn_flowfilter_controller *in_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); val_flowfilter_controller_t *ival = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); uuu::upll_strncpy(out_key->flowfilter_key.vtn_key.vtn_name, - in_key->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + in_key->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); out_key->flowfilter_key.input_direction = ival->direction; out_key->sequence_num = ival->sequence_num; okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER_ENTRY, - IpctSt::kIpcStKeyVtnFlowfilterEntry, - out_key, NULL); - } + IpctSt::kIpcStKeyVtnFlowfilterEntry, + out_key, NULL); + } else { + return UPLL_RC_ERR_GENERIC; + } } else { okey = ikey; } result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Returning error code %d",result_code); + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("Returning error code %d", result_code); if (okey != ikey) delete okey; return UPLL_RC_ERR_GENERIC; } GET_USER_DATA_FLAGS(okey, rename); - UPLL_LOG_DEBUG("rename flag %d",rename); + UPLL_LOG_DEBUG("rename flag %d", rename); controller_domain_t ctrlr_dom; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ikey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA_CTRLR_DOMAIN(okey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA(ikey,okey); + SET_USER_DATA(ikey, okey); rename &= RENAME; if (okey != ikey) delete okey; return UPLL_RC_SUCCESS; } upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtn_flowfilter_entry_t *val_ffe = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_ffe) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -6139,8 +6710,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN_FLOWFILTER))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VTN_FLOWFILTER))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -6155,19 +6726,19 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } UPLL_LOG_DEBUG("Flag from parent : %d", rename); DELETE_IF_NOT_NULL(pkey); - // Check flowlist is renamed + // Check flowlist is renamed if ((UNC_VF_VALID == val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) && ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -6182,7 +6753,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (fl_rename & 0x01) { - rename |= FLOWLIST_RENAME; // TODO Check for correct flag value + rename |= FLOWLIST_RENAME; // TODO(upll): Check for correct flag value } DELETE_IF_NOT_NULL(fl_ckv); } @@ -6197,14 +6768,14 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, if (UNC_VF_VALID == val_ffe->valid[UPLL_IDX_FLOWLIST_NAME_VFFE]) { ConfigKeyVal *fl_ckv = NULL; result_code = GetFlowlistConfigKey(reinterpret_cast - (val_ffe->flowlist_name), fl_ckv, dmi); + (val_ffe->flowlist_name), fl_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetFlowlistConfigKey failed %d", result_code); return result_code; } MoMgrImpl *fl_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_FLOWLIST))); if (NULL == fl_mgr) { UPLL_LOG_DEBUG("fl_mgr is NULL"); DELETE_IF_NOT_NULL(fl_ckv); @@ -6219,7 +6790,7 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } if (fl_rename & 0x01) { UPLL_LOG_DEBUG("rename flag in flowlist %d", fl_rename); - rename |= FLOWLIST_RENAME; // TODO Check for correct flag value + rename |= FLOWLIST_RENAME; // TODO(upll): Check for correct flag value } else { rename &= NO_FLOWLIST_RENAME; /* reset flag*/ @@ -6227,7 +6798,9 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(fl_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_ffe->valid [UPLL_IDX_FLOWLIST_NAME_VFFE]) { - rename &= NO_FLOWLIST_RENAME; // TODO Check for correct flag value. No rename flowlist value should be set + rename &= NO_FLOWLIST_RENAME; // TODO(upll): Check for + // correct flag value. + // No rename flowlist value should be set } UPLL_LOG_DEBUG("Setting flag in update %d", rename); SET_USER_DATA_FLAGS(ikey, rename); @@ -6236,13 +6809,13 @@ upll_rc_t VtnFlowFilterEntryMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VtnFlowFilterEntryMoMgr::GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_FLOWLIST))); + UNC_KT_FLOWLIST))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -6251,8 +6824,8 @@ upll_rc_t VtnFlowFilterEntryMoMgr::GetFlowlistConfigKey( key_flowlist_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->flowlist_name, - flowlist_name, - (kMaxLenFlowListName+1)); + flowlist_name, + (kMaxLenFlowListName+1)); return UPLL_RC_SUCCESS; } } // namespace kt_momgr diff --git a/coordinator/modules/upll/vtn_flowfilter_entry_momgr.hh b/coordinator/modules/upll/vtn_flowfilter_entry_momgr.hh index bc0cbd67..2f62f7b1 100644 --- a/coordinator/modules/upll/vtn_flowfilter_entry_momgr.hh +++ b/coordinator/modules/upll/vtn_flowfilter_entry_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -27,204 +27,204 @@ namespace kt_momgr { #define FREE_LIST_CTRLR(list_ctrlr_dom) { \ for (std::list::iterator it= list_ctrlr_dom.begin(); \ - it != list_ctrlr_dom.end(); ++it) { \ + it != list_ctrlr_dom.end(); ++it) { \ FREE_IF_NOT_NULL(it->ctrlr); \ FREE_IF_NOT_NULL(it->domain); \ } \ } typedef struct val_vtn_flowfilter_entry_ctrlr { - uint8_t valid[5]; - unc_keytype_configstatus_t cs_row_status; - unc_keytype_configstatus_t cs_attr[5]; - uint8_t flags; + uint8_t valid[5]; + unc_keytype_configstatus_t cs_row_status; + unc_keytype_configstatus_t cs_attr[5]; + uint8_t flags; } val_vtn_flowfilter_entry_ctrlr_t; class VtnFlowFilterEntryMoMgr: public MoMgrImpl { /*Private Declaration Section*/ - private: - /* @brief Enumerator for VTN FlowFilter Entry Child(dependent) Objects */ - static unc_key_type_t Vtn_FlowFilter_entry_child[]; - /* @brief vtnflowfilter bindinfo Array, Binding to MAINTBL */ - static BindInfo vtn_flowfilter_entry_bind_info[]; - static BindInfo vtnflowfilterentrymaintbl_bind_info[]; - static BindInfo vtnflowfilterentryctrlrtbl_bind_info[]; - /* @brief vtnflowfilter controllerbindinfo array, Binding to CTRLRTBL */ - static BindInfo vtn_flowfilter_entry_ctrlr_bind_info[]; - - /** - * @brief Member Variable for FlowListRenameBindInfo. - */ - static BindInfo vtn_flowlist_rename_bind_info[]; + private: + /* @brief Enumerator for VTN FlowFilter Entry Child(dependent) Objects */ + static unc_key_type_t Vtn_FlowFilter_entry_child[]; + /* @brief vtnflowfilter bindinfo Array, Binding to MAINTBL */ + static BindInfo vtn_flowfilter_entry_bind_info[]; + static BindInfo vtnflowfilterentrymaintbl_bind_info[]; + static BindInfo vtnflowfilterentryctrlrtbl_bind_info[]; + /* @brief vtnflowfilter controllerbindinfo array, Binding to CTRLRTBL */ + static BindInfo vtn_flowfilter_entry_ctrlr_bind_info[]; + + /** + * @brief Member Variable for FlowListRenameBindInfo. + */ + static BindInfo vtn_flowlist_rename_bind_info[]; - uint32_t cur_instance_count; public: - /** - * @brief This API is used to verify the existance of - object in Candidate configuration - - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dt_type Configuration information - * @param[in] dmi Pointer to DalDmlIntf Class. - * for flowlist or NetworkMonitor - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR Specific Error code. - * */ - upll_rc_t IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - /** - * @brief Method to compare to keys - * - * @param[in] key1 Pointer to key structure for comparision - * @param[in] key2 Pointer to key for comparision - * - * @return TRUE Successfull completion. - */ - - bool CompareKey(void *key1, void *key2); - - - /** - * @brief Methods Used for Validating Attribute. - * @param[in] kval The pointer to the ConfigKeyVal class - * - * @param[in] dmi Pointer to the Database Interface. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * */ - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - - /** - * @brief Method to check validity of Key - * - * @param[in] ConfigKeyVal input COnfigKeyVal - * @param[out] index DB Column Index - * - * @return TRUE Success - * @retval FALSE Failure - **/ - bool IsValidKey(void *key, - uint64_t index); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VTN_FLOWFILTER_ENTRY keytype - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request structure - * @param[in] ConfigKeyVal key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn_flowfilter_entry is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); - - /** - * @Brief Validates the syntax for KT_VTN_FLOWFILTER_ENTRY keytype key structure. - * - * @param[in] key_vtn_flowfilter_entry KT_VTN_FLOWFILTER_ENTRY key structure. - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVtnFlowfilterEntryKey( + /** + * @brief This API is used to verify the existance of + object in Candidate configuration + + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dt_type Configuration information + * @param[in] dmi Pointer to DalDmlIntf Class. + * for flowlist or NetworkMonitor + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR Specific Error code. + * */ + upll_rc_t IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + /** + * @brief Method to compare to keys + * + * @param[in] key1 Pointer to key structure for comparision + * @param[in] key2 Pointer to key for comparision + * + * @return TRUE Successfull completion. + */ + + bool CompareKey(void *key1, void *key2); + + + /** + * @brief Methods Used for Validating Attribute. + * @param[in] kval The pointer to the ConfigKeyVal class + * + * @param[in] dmi Pointer to the Database Interface. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * */ + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + + /** + * @brief Method to check validity of Key + * + * @param[in] ConfigKeyVal input COnfigKeyVal + * @param[out] index DB Column Index + * + * @return TRUE Success + * @retval FALSE Failure + **/ + bool IsValidKey(void *key, + uint64_t index); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VTN_FLOWFILTER_ENTRY keytype + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request structure + * @param[in] ConfigKeyVal key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn_flowfilter_entry is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); + + /** + * @Brief Validates the syntax for KT_VTN_FLOWFILTER_ENTRY keytype key structure. + * + * @param[in] key_vtn_flowfilter_entry KT_VTN_FLOWFILTER_ENTRY key structure. + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVtnFlowfilterEntryKey( key_vtn_flowfilter_entry_t *key_vtn_flowfilter_entry, unc_keytype_operation_t operation); - /** - * @Brief Validates the syntax for KT_VTN_FLOWFILTER_ENTRY key structure. - * - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] IpcReqRespHeader contains first 8 fields of input. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVtnFlowfilterEntryValue(ConfigKeyVal *key, - IpcReqRespHeader *req, - DalDmlIntf *dmi = NULL); - - /** - * @Brief Checks if the specified key type(KT_VTN_FLOWFILTER_ENTRY) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input - * request structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] crtlr_name Controller name. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char* ctrlr_name = NULL); - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_vtn_flowfilter_entry_t KT_FLOWFILTER_ENTRY value structure. - * @param[in] attrs pointer to controller attribute - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVtnFlowfilterEntryAttributeSupportCheck( + /** + * @Brief Validates the syntax for KT_VTN_FLOWFILTER_ENTRY key structure. + * + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] IpcReqRespHeader contains first 8 fields of input. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVtnFlowfilterEntryValue(ConfigKeyVal *key, + IpcReqRespHeader *req, + DalDmlIntf *dmi = NULL); + + /** + * @Brief Checks if the specified key type(KT_VTN_FLOWFILTER_ENTRY) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input + * request structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] crtlr_name Controller name. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char* ctrlr_name = NULL); + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_vtn_flowfilter_entry_t KT_FLOWFILTER_ENTRY value structure. + * @param[in] attrs pointer to controller attribute + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVtnFlowfilterEntryAttributeSupportCheck( val_vtn_flowfilter_entry_t *val_vtn_flowfilter_entry, const uint8_t* attrs); - /** - * @Brief Method used to get the Bind Info Structure for Rename Purpose. - * - * @param[in] key_type Describes the KT Information. - * @param[in] nattr Describes the Tbl For which the Operation is - * Targeted. - * @param[in] tbl Describes the Table Information - * - * @retval pfc_true Successful Completion. - * @retval pfc_fasle Failure. - */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl); - /** - * @brief Method to Copy The ConfigkeyVal with the Input Key. - * - * @param[out] okey Pointer to ConfigKeyVal Class for which attributes - * have to be copied. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * - * @retval UPLL_RC_SUCCESS Successfull Completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - /** - * @brief Method To Compare the Valid Check of Attributes - * - * @param[out] val1 Pointer to ConfigKeyVal Class which - * contains only Valid Attributes - * @param[in] val2 Pointer to ConfigKeyVal Class. - * @param[in] audit If true,Audit Process - * - * @retval UPLL_RC_SUCCESS; - */ - bool CompareValidValue(void *&val1, void *val2, bool audit); - upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi); + /** + * @Brief Method used to get the Bind Info Structure for Rename Purpose. + * + * @param[in] key_type Describes the KT Information. + * @param[in] nattr Describes the Tbl For which the Operation is + * Targeted. + * @param[in] tbl Describes the Table Information + * + * @retval pfc_true Successful Completion. + * @retval pfc_fasle Failure. + */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl); + /** + * @brief Method to Copy The ConfigkeyVal with the Input Key. + * + * @param[out] okey Pointer to ConfigKeyVal Class for which attributes + * have to be copied. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * + * @retval UPLL_RC_SUCCESS Successfull Completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + /** + * @brief Method To Compare the Valid Check of Attributes + * + * @param[out] val1 Pointer to ConfigKeyVal Class which + * contains only Valid Attributes + * @param[in] val2 Pointer to ConfigKeyVal Class. + * @param[in] audit If true,Audit Process + * + * @retval UPLL_RC_SUCCESS; + */ + bool CompareValidValue(void *&val1, void *val2, bool audit); + upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi); public: /* @brief Constructor*/ @@ -240,309 +240,317 @@ class VtnFlowFilterEntryMoMgr: public MoMgrImpl { delete[] table; } - upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id); - /** - * @brief This API is used to retrive the configuration details. - * - * @param[in] req Pointer to IpcReqResponderHeader Class. - * @param[in,out] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure. - * * */ - - upll_rc_t ReadMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - /** - * @brief Method used for ReadSibling Operation. - * - * @param[in] req Describes RequestResponderHeaderClass. - * @param[in] key Pointer to ConfigKeyVal Class. - * @param[in] begin boolean variable to decide whether to - * retrieve siblings from the begin or not - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * **/ - - upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *key, - bool begin, DalDmlIntf *dmi); - /** - * @brief This API is used to create the record in Vtnflowfilterentry - * tableand also Increment the refcount or insert the record for - * flowlist based on the the availability in DB - * - * @param[in] req Pointer to the IpcRequestResponderHeaderClass. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf(DB) Interface . - * - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record Already Exists - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * **/ - upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi); - - /** - * @brief This API is used to delete the record from DB - * and decrement the refcount of Flowlist(if it is - * referred)based on the record availability in DB - * - * @param[in] req Pointer to IpcRequestResponderHeader Class. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * **/ - upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /** - * @brief This API used to Update the record in Db. - * - * @param[in] req Pointer to IpcRequestResponderHeader Class. - * @param[in] ikey Pointer to ConfigKeyVal Class. - * @param[in] dmi Pointer to DalDmlIntf Class(DB Interface). - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * **/ - - upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - /** - * @brief Method used for Validation before Merge. - * - * @param[in] ikey Pointer to the Class for which - * fields have to be Validated before the Merge. - * @param[in] keytype The keyType Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Controller Name. - * - * @return code UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Failure(Incase if same record - * exist in Candidate Configuration) - * **/ - upll_rc_t MergeValidate(unc_key_type_t keytype, + upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + const char *ctrlr_id); + /** + * @brief This API is used to retrive the configuration details. + * + * @param[in] req Pointer to IpcReqResponderHeader Class. + * @param[in,out] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure. + * * */ + + upll_rc_t ReadMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, DalDmlIntf *dmi); + /** + * @brief Method used for ReadSibling Operation. + * + * @param[in] req Describes RequestResponderHeaderClass. + * @param[in] key Pointer to ConfigKeyVal Class. + * @param[in] begin boolean variable to decide whether to + * retrieve siblings from the begin or not + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * **/ + + upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *key, + bool begin, DalDmlIntf *dmi); + /** + * @brief This API is used to create the record in Vtnflowfilterentry + * tableand also Increment the refcount or insert the record for + * flowlist based on the the availability in DB + * + * @param[in] req Pointer to the IpcRequestResponderHeaderClass. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf(DB) Interface . + * + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record Already Exists + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * **/ + upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag = false); + + /** + * @brief This API is used to delete the record from DB + * and decrement the refcount of Flowlist(if it is + * referred)based on the record availability in DB + * + * @param[in] req Pointer to IpcRequestResponderHeader Class. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Record Not available + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * **/ + upll_rc_t DeleteMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /** + * @brief This API used to Update the record in Db. + * + * @param[in] req Pointer to IpcRequestResponderHeader Class. + * @param[in] ikey Pointer to ConfigKeyVal Class. + * @param[in] dmi Pointer to DalDmlIntf Class(DB Interface). + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * **/ + + upll_rc_t UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + /** + * @brief Method used for Validation before Merge. + * + * @param[in] ikey Pointer to the Class for which + * fields have to be Validated before the Merge. + * @param[in] keytype The keyType Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Controller Name. + * + * @return code UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Failure(Incase if same record + * exist in Candidate Configuration) + * **/ + upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, ConfigKeyVal *ikey, DalDmlIntf *dmi); - upll_rc_t MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_name, - DalDmlIntf *dmi); - /* @brief The Rename Operation is not allowed for the Key type KT_VTN_FLOWFILTER_ENTRY - * + upll_rc_t MergeImportToCandidate(unc_key_type_t keytype, + const char *ctrlr_name, + DalDmlIntf *dmi); + /* @brief The Rename Operation is not allowed for the Key type KT_VTN_FLOWFILTER_ENTRY + * * @return code UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT. Rename operation is not allowed for * this keytype * * */ - upll_rc_t RenameMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi, const char *ctrlr_id); - /** - * @brief Populate the configKeyVal with the Parent Class - * Information. - * - * @param[out] okey This Contains the pointer to the ConfigKeyVal Class - * for which fields have to be updated with values - * from the parent Class. - * @param[in] parent_key This Contains the pointer to the ConfigKeyVal Class - * which is the Parent Key used to fill the details. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * **/ - - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); - /** - * @brief This Method is used to get the duplicate configkeyval - * - * @param[out] okey Pointer to the Class for which - * fields have to be updated with values from the Request. - * @param[in] req Pointer to the Class which is - * used for the generating the Duplicate KeyVal. - * @param[in] tbl Enumerator member for Table name - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * **/ - - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl); - /** - * @brief This API is used to get the renamed controller key - * for vtn and FlowList if it is renamed. - * - * @param[out] ikey The pointer to the ConfigKeyVal Class - * which contain the PFC NAME in the KEY Structure - * @param[in] data_type Upll Configuration information - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * **/ - - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_rc_t RenameMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi, const char *ctrlr_id); + /** + * @brief Populate the configKeyVal with the Parent Class + * Information. + * + * @param[out] okey This Contains the pointer to the ConfigKeyVal Class + * for which fields have to be updated with values + * from the parent Class. + * @param[in] parent_key This Contains the pointer to the ConfigKeyVal Class + * which is the Parent Key used to fill the details. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * **/ + + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); + /** + * @brief This Method is used to get the duplicate configkeyval + * + * @param[out] okey Pointer to the Class for which + * fields have to be updated with values from the Request. + * @param[in] req Pointer to the Class which is + * used for the generating the Duplicate KeyVal. + * @param[in] tbl Enumerator member for Table name + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * **/ + + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl); + /** + * @brief This API is used to get the renamed controller key + * for vtn and FlowList if it is renamed. + * + * @param[out] ikey The pointer to the ConfigKeyVal Class + * which contain the PFC NAME in the KEY Structure + * @param[in] data_type Upll Configuration information + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * **/ + + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, controller_domain *ctrlr_dom = NULL); - /** - * @brief This API is used to get the unc key name - * - * @param[in/out]] ikey Pointer to the Class for which fields have to be - * updated with values from the parent Class. - * @param[in] dt_type Configuration Information. - * @param[in] dmi Pointer to DalDmlIntf(DB Interface) - * @param[in] ctrlr_id Controller name. - * - * @retval UPLL_RC_SUCCESS Successful completion. - * @retval UPLL_RC_ERR_GENERIC Generic Errors. - * **/ - - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, uint8_t *ctrlr_id); - - /** - * @brief This API is used to Copy the configuration from Candidate - * DB to Running DB - * - * @param[in] keytype Defines the keytype for which operation - * has to be carried out. - * @param[in] ctrlr_commit_status List describes Commit Control Status - * Information. - * @param[in] dmi Pointer to DalDmlIntf(DB Interface). - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * * */ - upll_rc_t TxCopyCandidateToRunning(unc_key_type_t keytype, - CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf *dmi); - - /** - * @brief This method used to update the configstatus in Db during - * Trasaction Operation. - * - * @param[in] vtn_flowfilter_key Pointer to ConfigKeyVal Class. - * @param[in] op Upll Opeartion Type. - * @param[in] driver_result Result code from Driver. - * @param[in] nreq Pointer to ConfigKeyVal Class. - * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * **/ - - upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtn_flow_filter_entry_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *nreq, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key); - /** - * @brief Allocates Memory for the Incoming Pointer to the Class. - - * @param[out] ck_val This Contains the pointer to the Class for - which memory has to be allocated. - * @param[in] dt_type Describes Configiration Information. - * @param[in] tbl Describes the Destination table Information. - - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Return Generic Error - */ - - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl); - /** - * @brief This API updates the Configuration status for AuditConfigiration. - * - * @param[out] ckv_db Pointer to the Class for which - * ConfigStatus is Updated. - * @param[in] ctrlr_commit_status Pointer to Commit Control Status structure. - * @param[in] response_code Response Code. - * @param[in] dmi Pointer DalDmlIntf(DB) Interface. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - /** - * @brief Method for TxUpdateController for updating the controller . - * - * @param[in] keytype Contains respective keytype of Api. - * @param[in] session_id Describes session information id . - * @param[in] config_id Describes the configuartion id . - * @param[in] phase Describes the phase of controller. - * @param[in] affected_ctrlr_set Describes the resp controller list. - * @param[in] dmi Describes Pointer to DalDmlIntf class. - * - * @retval UPLL_RT_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure. - */ - - upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); - /** - * @brief Method TxUpdateProcess . - * - * @param[out] ck_main Contains the Pointer to ConfigkeyVal Class - * and contains the Pfc Name. - * @param[in] ipc_req Describes Pointer variable for IpcRequest Class. - * @param[in] ipc_resp Describes Pointer variable for IpcResponse Class. - * @param[in] op Decribes the resp operation . - * @param[in] dmi Describes Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Describes Controller name - * - * @retval UPLL_RT_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure. - */ + /** + * @brief This API is used to get the unc key name + * + * @param[in/out]] ikey Pointer to the Class for which fields have to be + * updated with values from the parent Class. + * @param[in] dt_type Configuration Information. + * @param[in] dmi Pointer to DalDmlIntf(DB Interface) + * @param[in] ctrlr_id Controller name. + * + * @retval UPLL_RC_SUCCESS Successful completion. + * @retval UPLL_RC_ERR_GENERIC Generic Errors. + * **/ + + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id); + + /** + * @brief This API is used to Copy the configuration from Candidate + * DB to Running DB + * + * @param[in] keytype Defines the keytype for which operation + * has to be carried out. + * @param[in] ctrlr_commit_status List describes Commit Control Status + * Information. + * @param[in] dmi Pointer to DalDmlIntf(DB Interface). + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * * */ + upll_rc_t TxCopyCandidateToRunning( + unc_key_type_t keytype, + CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi); - upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, - unc_keytype_operation_t op, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom); - - /** - * @brief This API is used to know the value availability of - * val structure attributes - * - * @param[out] valid This will contain the output of validity of the - * specified attribute - * @param[in] val This contains the value structure - * @param[in] indx Gives the index of attribute for validity - * @param[in] dt_type configuration for validity check - * @param[in] tbl Table name - * - * @retval[out] UPLL_RC_SUCCESS Successful completion. - * @retval[out] UPLL_RC_ERR_GENERIC Generic Errors. - ** */ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl); - /** - * @brief Method used for UpdateControllerTable Operation. - * - * @param[in,out] ikey Pointer to ConfigKeyVal Class. - * @param[in] op Describes the Type of Opeartion. - * @param[in] dt_type Describes Configiration Information. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ -/* - upll_rc_t UpdateControllerTable(ConfigKeyVal *ikey, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, + /** + * @brief This method used to update the configstatus in Db during + * Trasaction Operation. + * + * @param[in] vtn_flowfilter_key Pointer to ConfigKeyVal Class. + * @param[in] op Upll Opeartion Type. + * @param[in] driver_result Result code from Driver. + * @param[in] nreq Pointer to ConfigKeyVal Class. + * @param[in] ctrlr_key Pointer to ConfigKeyVal Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * **/ + + upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtn_flow_filter_entry_key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key); + /** + * @brief Allocates Memory for the Incoming Pointer to the Class. + + * @param[out] ck_val This Contains the pointer to the Class for + which memory has to be allocated. + * @param[in] dt_type Describes Configiration Information. + * @param[in] tbl Describes the Destination table Information. + + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Return Generic Error + */ + + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl); + /** + * @brief This API updates the Configuration status for AuditConfigiration. + * + * @param[out] ckv_db Pointer to the Class for which + * ConfigStatus is Updated. + * @param[in] ctrlr_commit_status Pointer to Commit Control Status structure. + * @param[in] response_code Response Code. + * @param[in] dmi Pointer DalDmlIntf(DB) Interface. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, DalDmlIntf *dmi); - */ /** + /** + * @brief Method for TxUpdateController for updating the controller . + * + * @param[in] keytype Contains respective keytype of Api. + * @param[in] session_id Describes session information id . + * @param[in] config_id Describes the configuartion id . + * @param[in] phase Describes the phase of controller. + * @param[in] affected_ctrlr_set Describes the resp controller list. + * @param[in] dmi Describes Pointer to DalDmlIntf class. + * + * @retval UPLL_RT_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure. + */ + + upll_rc_t TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); + /** + * @brief Method TxUpdateProcess . + * + * @param[out] ck_main Contains the Pointer to ConfigkeyVal Class + * and contains the Pfc Name. + * @param[in] ipc_req Describes Pointer variable for IpcRequest Class. + * @param[in] ipc_resp Describes Pointer variable for IpcResponse Class. + * @param[in] op Decribes the resp operation . + * @param[in] dmi Describes Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Describes Controller name + * + * @retval UPLL_RT_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure. + */ + + upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp); + + /** + * @brief This API is used to know the value availability of + * val structure attributes + * + * @param[out] valid This will contain the output of validity of the + * specified attribute + * @param[in] val This contains the value structure + * @param[in] indx Gives the index of attribute for validity + * @param[in] dt_type configuration for validity check + * @param[in] tbl Table name + * + * @retval[out] UPLL_RC_SUCCESS Successful completion. + * @retval[out] UPLL_RC_ERR_GENERIC Generic Errors. + ** */ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl); + /** + * @brief Method used for UpdateControllerTable Operation. + * + * @param[in,out] ikey Pointer to ConfigKeyVal Class. + * @param[in] op Describes the Type of Opeartion. + * @param[in] dt_type Describes Configiration Information. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + /* + upll_rc_t UpdateControllerTable(ConfigKeyVal *ikey, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + */ /** * @brief Method used for GetControllerKeyval Operation. * * @param[in] ctrlckv Pointer to ConfigKeyVal Class. @@ -553,109 +561,110 @@ class VtnFlowFilterEntryMoMgr: public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t GetControllerKeyval(ConfigKeyVal *&ctrlckv, - ConfigKeyVal *&ikey, - controller_domain *ctrlr_id); - /** - * @brief Method used for UpdateControllerTableForVtn Operation. - * - * @param[in] vtn_name Pointer to vtn_name - * @param[in] op Describes the Type of Opeartion. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Pointer to ctrlr_id. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - - upll_rc_t UpdateControllerTableForVtn( - uint8_t* vtn_name, - controller_domain *ctrlr_dom, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t flag); - /** - * @brief Method used for GetParentConfigKey Operation. - * - * @param[out] okey Pointer to ConfigKeyVal Class. - * @param[in] parent_key Pointer to ConfigKeyVal Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - /** - * @brief Method used for Restoring FlowList in the Controller Table - * - * @param[in] ikey Pointer to ConfigKeyVal Class - * @param[in] dt_type Describes Configiration Information. - * @param[in] tbl Describe the destination table - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists - * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. - */ - - upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl, - DalDmlIntf* dmi); + upll_rc_t GetControllerKeyval(ConfigKeyVal *&ctrlckv, + ConfigKeyVal *&ikey, + controller_domain *ctrlr_id); + /** + * @brief Method used for UpdateControllerTableForVtn Operation. + * + * @param[in] vtn_name Pointer to vtn_name + * @param[in] op Describes the Type of Opeartion. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Pointer to ctrlr_id. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + + upll_rc_t UpdateControllerTableForVtn( + uint8_t* vtn_name, + controller_domain *ctrlr_dom, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t flag); + /** + * @brief Method used for GetParentConfigKey Operation. + * + * @param[out] okey Pointer to ConfigKeyVal Class. + * @param[in] parent_key Pointer to ConfigKeyVal Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + /** + * @brief Method used for Restoring FlowList in the Controller Table + * + * @param[in] ikey Pointer to ConfigKeyVal Class + * @param[in] dt_type Describes Configiration Information. + * @param[in] tbl Describe the destination table + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists + * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. + */ + + upll_rc_t RestorePOMInCtrlTbl(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl, + DalDmlIntf* dmi); upll_rc_t UpdateFlowListInCtrl(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, unc_keytype_operation_t op, DalDmlIntf* dmi); upll_rc_t IsNWMReferenced(ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi); upll_rc_t GetControllerDomainSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); upll_rc_t ValidateMessageForVtnFlowFilterController - (IpcReqRespHeader *req, - ConfigKeyVal *key); + (IpcReqRespHeader *req, + ConfigKeyVal *key); upll_rc_t ValidateMessageForVtnFlowFilterEntry - (IpcReqRespHeader *req, - ConfigKeyVal *key); + (IpcReqRespHeader *req, + ConfigKeyVal *key); upll_rc_t - ValidateCapabilityForVtnFlowFilterEntry(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name); + ValidateCapabilityForVtnFlowFilterEntry(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char* ctrlr_name); upll_rc_t ValidateCapabilityForVtnFlowFilterController - (IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name); + (IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char* ctrlr_name); upll_rc_t ValVtnFlowfilterCtrlAttributeSupportCheck( - val_flowfilter_controller_t *val_flowfilter_controller, - const uint8_t* attrs); + val_flowfilter_controller_t *val_flowfilter_controller, + const uint8_t* attrs); upll_rc_t ValidateVtnFlowfilterControllerValue( - val_flowfilter_controller_t *val_flowfilter_controller, - uint32_t operation); + val_flowfilter_controller_t *val_flowfilter_controller, + uint32_t operation); upll_rc_t ReadFlowFilterController(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); upll_rc_t ReadControllerStateNormal(ConfigKeyVal *ikey , - upll_keytype_datatype_t dt_type, - unc_keytype_operation_t op, - DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DalDmlIntf *dmi); upll_rc_t ReadControllerStateDetail(ConfigKeyVal *ikey , ConfigKeyVal *drv_resp_ckv, controller_domain *ctrlr_dom, ConfigKeyVal **okey); upll_rc_t GetCtrlFlowFilterEntry( - key_vtn_flowfilter_entry *l_key_vtn_ffe, - val_vtn_flowfilter_entry_ctrlr_t *val_vtn_ffe_ctrlr, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - val_vtn_flowfilter_entry_t *&op_val_vtn_ffe, - const char* ctrlr_name, - unc_keytype_option1_t opt1 = UNC_OPT1_NORMAL); + key_vtn_flowfilter_entry *l_key_vtn_ffe, + val_vtn_flowfilter_entry_ctrlr_t *val_vtn_ffe_ctrlr, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + val_vtn_flowfilter_entry_t *&op_val_vtn_ffe, + const char* ctrlr_name, + unc_keytype_option1_t opt1 = UNC_OPT1_NORMAL); upll_rc_t ReadSiblingCount(IpcReqRespHeader *req, ConfigKeyVal *ikey, @@ -674,10 +683,10 @@ class VtnFlowFilterEntryMoMgr: public MoMgrImpl { DalDmlIntf *dmi); upll_rc_t ConstructReadSiblingNormalResponse( - ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - ConfigKeyVal **okey); + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + ConfigKeyVal **okey); upll_rc_t GetVtnControllerSpan( ConfigKeyVal *ikey, @@ -685,19 +694,19 @@ class VtnFlowFilterEntryMoMgr: public MoMgrImpl { DalDmlIntf *dmi, std::list &list_ctrlr_dom); -upll_rc_t UpdateControllerTable( - ConfigKeyVal *ikey, unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - std::list list_ctrlr_dom); + upll_rc_t UpdateControllerTable( + ConfigKeyVal *ikey, unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + std::list list_ctrlr_dom); -upll_rc_t UpdateMainTbl(ConfigKeyVal *vtn_ffe_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi); + upll_rc_t UpdateMainTbl(ConfigKeyVal *vtn_ffe_key, + unc_keytype_operation_t op, uint32_t driver_result, + ConfigKeyVal *nreq, DalDmlIntf *dmi); upll_rc_t DeleteChildMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey, + DalDmlIntf *dmi); upll_rc_t IsFlowListConfigured( const char* flowlist_name, DalDmlIntf *dmi); @@ -710,7 +719,7 @@ upll_rc_t UpdateMainTbl(ConfigKeyVal *vtn_ffe_key, upll_rc_t UpdateVnodeVal(ConfigKeyVal *ikey, DalDmlIntf *dmi, upll_keytype_datatype_t data_type, - bool &no_rename); + bool &no_rename); bool FilterAttributes(void *&val1, void *val2, @@ -723,25 +732,26 @@ upll_rc_t UpdateMainTbl(ConfigKeyVal *vtn_ffe_key, unc_keytype_configstatus_t current_cs, unc_keytype_configstatus_t current_ctrlr_cs); - upll_rc_t IsRenamed(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t &rename); - upll_rc_t - SetVtnFFEntryConsolidatedStatus(ConfigKeyVal *ikey, - uint8_t *ctrlr_id, - DalDmlIntf *dmi); - - upll_rc_t GetFlowlistConfigKey( - const char *flowlist_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); - - upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); - - bool CompareValidVal(void *&val1, void *val2, - void *val3, bool audit); + upll_rc_t IsRenamed(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t &rename); + upll_rc_t + SetVtnFFEntryConsolidatedStatus(ConfigKeyVal *ikey, + uint8_t *ctrlr_id, + DalDmlIntf *dmi); + + upll_rc_t GetFlowlistConfigKey( + const char *flowlist_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi); + + upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req); + + bool CompareValidVal(void *&val1, void *val2, + void *val3, bool audit); + upll_rc_t DecRefCountInFLCtrlTbl(ConfigKeyVal *ffe_imkey, DalDmlIntf *dmi); }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vtn_flowfilter_momgr.cc b/coordinator/modules/upll/vtn_flowfilter_momgr.cc index 3005a4e0..7b60cbec 100644 --- a/coordinator/modules/upll/vtn_flowfilter_momgr.cc +++ b/coordinator/modules/upll/vtn_flowfilter_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -64,30 +64,30 @@ BindInfo VtnFlowFilterMoMgr::vtn_flowfilter_ctrl_bind_info[] = { BindInfo VtnFlowFilterMoMgr::vtn_flowfilter_maintbl_rename_bindinfo[] = { { uudst::vtn_flowfilter::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vtn_flowfilter_t, vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, + key_vtn_flowfilter_t, vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, { uudst::vtn_flowfilter::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, { uudst::vtn_flowfilter::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } + key_user_data_t, flags), + uud::kDalUint8, 1 } }; BindInfo VtnFlowFilterMoMgr::vtn_flowfilter_ctrlrtbl_rename_bindinfo[] = { { uudst::vtn_flowfilter_ctrlr::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vtn_flowfilter_t, vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, + key_vtn_flowfilter_t, vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, { uudst::vtn_flowfilter_ctrlr::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, { uudst::vtn_flowfilter_ctrlr::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } + key_user_data_t, flags), + uud::kDalUint8, 1 } }; unc_key_type_t VtnFlowFilterMoMgr::vtn_flowfilter_child[] = { - UNC_KT_VTN_FLOWFILTER_ENTRY + UNC_KT_VTN_FLOWFILTER_ENTRY }; VtnFlowFilterMoMgr::VtnFlowFilterMoMgr() : MoMgrImpl() { @@ -99,27 +99,29 @@ VtnFlowFilterMoMgr::VtnFlowFilterMoMgr() : MoMgrImpl() { // For Main Table table[MAINTBL] = new Table(uudst::kDbiVtnFlowFilterTbl, - UNC_KT_VTN_FLOWFILTER, vtn_flowfilter_bind_info, - IpctSt::kIpcStKeyVtnFlowfilter, IpctSt::kIpcStValFlowfilter, - uudst::vtn_flowfilter::kDbiVtnFlowFilterNumCols); + UNC_KT_VTN_FLOWFILTER, + vtn_flowfilter_bind_info, + IpctSt::kIpcStKeyVtnFlowfilter, + IpctSt::kIpcStValFlowfilter, + uudst::vtn_flowfilter::kDbiVtnFlowFilterNumCols); table[RENAMETBL] = NULL; // for ctrlr table - table[CTRLRTBL] = new Table(uudst::kDbiVtnFlowFilterCtrlrTbl, - UNC_KT_VTN_FLOWFILTER, - vtn_flowfilter_ctrl_bind_info, - IpctSt::kIpcStKeyVtnFlowfilter, - IpctSt::kIpcInvalidStNum, - uudst::vtn_flowfilter_ctrlr::kDbiVtnFlowFilterCtrlrNumCols); + table[CTRLRTBL] = new Table( + uudst::kDbiVtnFlowFilterCtrlrTbl, + UNC_KT_VTN_FLOWFILTER, + vtn_flowfilter_ctrl_bind_info, + IpctSt::kIpcStKeyVtnFlowfilter, + IpctSt::kIpcInvalidStNum, + uudst::vtn_flowfilter_ctrlr::kDbiVtnFlowFilterCtrlrNumCols); nchild = sizeof(vtn_flowfilter_child) / sizeof(vtn_flowfilter_child[0]); child = vtn_flowfilter_child; - cur_instance_count = 0; } upll_rc_t VtnFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckval = NULL; @@ -141,7 +143,7 @@ upll_rc_t VtnFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -154,8 +156,8 @@ upll_rc_t VtnFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, while (NULL != ckval) { // Check the VTN already configured in UNC VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); result_code = vtnmgr->GetChildConfigKey(ckey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey error (%d)", result_code); @@ -165,13 +167,18 @@ upll_rc_t VtnFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, if (!ckey) return UPLL_RC_ERR_GENERIC; key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); - key_vtn_flowfilter_t *vtn_ikey = reinterpret_cast(ckval->get_key()); + key_vtn_flowfilter_t *vtn_ikey = reinterpret_cast + (ckval->get_key()); uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_key.vtn_name, - kMaxLenVtnName+1); + kMaxLenVtnName+1); DbSubOp dbop1 = { kOpReadExist, kOpMatchNone, kOpInOutNone }; // Check the vtn already exist in vtn tbl - result_code = vtnmgr->UpdateConfigDB(ckey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - &dbop1, MAINTBL); + result_code = vtnmgr->UpdateConfigDB(ckey, + UPLL_DT_RUNNING, + UNC_OP_READ, + dmi, + &dbop1, + MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { UPLL_LOG_DEBUG("vtn already exists"); DELETE_IF_NOT_NULL(ckey); @@ -180,10 +187,10 @@ upll_rc_t VtnFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, } DELETE_IF_NOT_NULL(ckey); - // If already vtn not configured, then do merge validation + // If already vtn not configured, then do merge validation DbSubOp dbop2 = { kOpReadExist, kOpMatchNone, kOpInOutNone }; result_code = UpdateConfigDB(ckval, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - &dbop2, MAINTBL); + &dbop2, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { UPLL_LOG_DEBUG("Merge Conflict"); result_code = DupConfigKeyVal(ikey, ckval, MAINTBL); @@ -206,17 +213,13 @@ upll_rc_t VtnFlowFilterMoMgr::MergeValidate(unc_key_type_t keytype, } upll_rc_t VtnFlowFilterMoMgr::MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_name, - DalDmlIntf *dmi) { + const char *ctrlr_name, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckval = NULL; - ConfigKeyVal *ckey = NULL; - - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; + ConfigKeyVal *ff_imkey = NULL, *ff_cdkey = NULL; + ConfigKeyVal *ckv_import = NULL, *ckv_cand = NULL; uint8_t flag = 0; if (NULL == ctrlr_name) { @@ -224,208 +227,347 @@ upll_rc_t VtnFlowFilterMoMgr::MergeImportToCandidate(unc_key_type_t keytype, return UPLL_RC_ERR_GENERIC; } - result_code = GetChildConfigKey(ckval, NULL); + VtnMoMgr *vtnmgr = + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + result_code = vtnmgr->GetChildConfigKey(ckval, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); return result_code; } - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - // Read vtn ff from import main - result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + /* Read all vtn from VTN main table in import database and check with + * Candidate database */ + result_code = vtnmgr->ReadConfigDB(ckval, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ckval); UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); - if(result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); - return result_code; + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("NO record in vtn tbl (%d)", result_code); + result_code = UPLL_RC_SUCCESS; } - return UPLL_RC_SUCCESS; + DELETE_IF_NOT_NULL(ckval); + return result_code; } - - UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); - ConfigKeyVal *tmp_ckval1 = ckval; - while (NULL != ckval) { - // Check the VTN already configured in UNC - VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); - result_code = vtnmgr->GetChildConfigKey(ckey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey error (%d)", result_code); - DELETE_IF_NOT_NULL(ckval); + ConfigKeyVal *tmp_ckval = ckval; + while (ckval != NULL) { + /* Get the instance count from vtn ctrl table in candidate. + * If refcount is more than 1, + * which means that the vtn is already exists in candidate + * If refcount is zero or 1, + * which means that the imported vtn is not exists in candidate + */ + uint32_t imp_instance_count, cand_instance_count; + /* Get the instance count from vtn ctrl tbl from import db*/ + result_code = vtnmgr->GetChildConfigKey(ckv_import, ckval); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - if (!ckey) return UPLL_RC_ERR_GENERIC; - - key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); - key_vtn_flowfilter *vtn_ikey = reinterpret_cast(ckval->get_key()); - uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_key.vtn_name, - kMaxLenVtnName+1); - DbSubOp dbop1 = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the vtn already exist in vtn tbl - result_code = vtnmgr->UpdateConfigDB(ckey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - &dbop1, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("vtn already exists"); - DELETE_IF_NOT_NULL(ckey); - ckval = ckval->get_next_cfg_key_val(); - continue; - } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - DELETE_IF_NOT_NULL(ckey); - DELETE_IF_NOT_NULL(ckval); + result_code = vtnmgr->GetInstanceCount(ckv_import, NULL, + UPLL_DT_IMPORT, + &imp_instance_count, + dmi, + CTRLRTBL); + DELETE_IF_NOT_NULL(ckv_import); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - // If not same vtn, then merge the vtn ff to candidate tbl - result_code = UpdateConfigDB(ckval, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("create in CandidateDB failed: err code(%d) ", - result_code); - DELETE_IF_NOT_NULL(ckey); - DELETE_IF_NOT_NULL(ckval); + /* Get the instance count from vtn ctrl tbl from candidate db*/ + result_code = vtnmgr->GetChildConfigKey(ckv_cand, ckval); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - - result_code = vtnmgr->GetControllerDomainSpan(ckey, UPLL_DT_IMPORT, dmi); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", result_code); - DELETE_IF_NOT_NULL(ckey); - continue; - } - } - ConfigKeyVal *tmp_ckey1 = ckey; - while (ckey != NULL) { - ConfigKeyVal *ctrlckv = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom); - GET_USER_DATA_FLAGS(ckval, flag); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - - UPLL_LOG_DEBUG("flag (%d)", flag); - - key_vtn_flowfilter_t *vtn_ff_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); - memcpy(vtn_ff_key, reinterpret_cast(ckval->get_key()), - sizeof(key_vtn_flowfilter_t)); - - ctrlckv = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, IpctSt::kIpcInvalidStNum, - vtn_ff_key, NULL); - SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, ctrlr_dom); - SET_USER_DATA_FLAGS(ctrlckv, flag); - - UPLL_LOG_DEBUG("flag (%d)", flag); - - // Create/Update/Delete a record in CANDIDATE DB - result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, UNC_OP_CREATE, dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Err while inserting in ctrlr table for candidateDb(%d)", - result_code); - DELETE_IF_NOT_NULL(ckey); - DELETE_IF_NOT_NULL(ckval); - DELETE_IF_NOT_NULL(ctrlckv); + result_code = vtnmgr->GetInstanceCount(ckv_cand, NULL, + UPLL_DT_CANDIDATE, + &cand_instance_count, + dmi, + CTRLRTBL); + DELETE_IF_NOT_NULL(ckv_cand); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - DELETE_IF_NOT_NULL(ctrlckv); - ckey = ckey->get_next_cfg_key_val(); - } - DELETE_IF_NOT_NULL(tmp_ckey1); - ckval = ckval->get_next_cfg_key_val(); -} + UPLL_LOG_TRACE("Import count (%d) Candidate count (%d)", + imp_instance_count, cand_instance_count); + if (imp_instance_count == cand_instance_count) { + /* If imported ctrlr's VTN not exists in Candidate, + * then check the existence + of imported ctrlr's VTN flow-filter + 1)If the imported ctrlr VTN does not have flow-filter, then continue + with the next VTN in imported db + 2)If the imported ctrlr VTN has flow-filter, + then merge this flow-filter + into candidate db + */ + UPLL_LOG_DEBUG("VTN not exists in candidate(%d)", result_code); + + // Check the imported ctrl VTN's flow-filter existence in Import db + key_vtn_t *vtn_ikey = reinterpret_cast(ckval->get_key()); + key_vtn_flowfilter_t *vtn_ff_imkey = reinterpret_cast + (ConfigKeyVal::Malloc + (sizeof(key_vtn_flowfilter_t))); + uuu::upll_strncpy(vtn_ff_imkey->vtn_key.vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + vtn_ff_imkey->input_direction = 0xFE; + ff_imkey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, + IpctSt::kIpcStKeyVtnFlowfilter, + vtn_ff_imkey, NULL); + + upll_rc_t result_import = ReadConfigDB(ff_imkey, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_import != UPLL_RC_SUCCESS && + result_import != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ff_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } - DELETE_IF_NOT_NULL(tmp_ckval1); - return UPLL_RC_SUCCESS; -#if 0 - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ctrlr_key = NULL, *req = NULL, *nreq = NULL; - DalCursor *cfg1_cursor = NULL; - DalResultCode db_result; + if (result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + /* If the imported ctrlr VTN does not have flow-filter, then continue + with the next VTN in imported db */ + UPLL_LOG_DEBUG("flow-filter not exists in import(%d)", result_code); + DELETE_IF_NOT_NULL(ff_imkey); + ckval = ckval->get_next_cfg_key_val(); + continue; + } else if (result_import == UPLL_RC_SUCCESS) { + // If imported ctrlr's VTN has flow-filter, then merge this flow-filter + // into candidate db + + /* Get the list of this VTN associated ctrlr and domain */ + std::list list_ctrlr_dom; + upll_rc_t vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ff_imkey, + UPLL_DT_IMPORT, + dmi, + list_ctrlr_dom); + if (vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ff_imkey); + if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetVtnControllerSpan error code (%d)", + vtn_ctrlr_span_rt_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + /* If ctrl and domain name not exist in VTN ctrl tbl, then + continue with the next VTN in import db */ + ckval = ckval->get_next_cfg_key_val(); + continue; + } - //Get the created records on import configuration which are not available - // at running configuration of UNC - result_code = DiffConfigDB(UPLL_DT_IMPORT, UPLL_DT_RUNNING, UNC_OP_CREATE, req, - nreq, &cfg1_cursor, dmi, MAINTBL); - while (result_code == UPLL_RC_SUCCESS) { - db_result = dmi->GetNextRecord(cfg1_cursor); - result_code = DalToUpllResCode(db_result); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UPLL_RC_SUCCESS; - break; - } - - // Update the record in the main table - result_code = UpdateConfigDB(req, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to update the main tbl,DB err %d", result_code); - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; + ConfigKeyVal *tmp_ff_imkey = ff_imkey; + while (ff_imkey != NULL) { + // Create the flow-filter in main tbl + result_code = UpdateConfigDB(ff_imkey, + UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("create in CandidateDB failed (%d) ", result_code); + DELETE_IF_NOT_NULL(tmp_ff_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + std::list::iterator it= list_ctrlr_dom.begin(); + while (it != list_ctrlr_dom.end()) { + // Create the entry in ctrlr table with as per the ctrlr and domain + ConfigKeyVal *ctrlckv = NULL; + GET_USER_DATA_FLAGS(ff_imkey, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + key_vtn_flowfilter_t *vtn_ff_key = reinterpret_cast + (ConfigKeyVal::Malloc + (sizeof(key_vtn_flowfilter_t))); + memcpy(vtn_ff_key, reinterpret_cast + (ff_imkey->get_key()), sizeof(key_vtn_flowfilter_t)); + + ctrlckv = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, + IpctSt::kIpcInvalidStNum, + vtn_ff_key, + NULL); + SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, *it); + SET_USER_DATA_FLAGS(ctrlckv, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + // Create a record in ctrlr tbl in candidate db + result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, dmi, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err while inserting in ctrlr table (%d)", + result_code); + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(tmp_ff_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + DELETE_IF_NOT_NULL(ctrlckv); + ++it; + } + ff_imkey = ff_imkey->get_next_cfg_key_val(); + } + FREE_LIST_CTRLR(list_ctrlr_dom); + DELETE_IF_NOT_NULL(ff_imkey); + } + } else if (imp_instance_count < cand_instance_count) { + // If vtn exists in both db, then check the flow-filter existence + // from import and candidate database + UPLL_LOG_DEBUG("VTN exists in candidate(%d)", result_code); + + // Check the flow-filter existence in Import db + key_vtn_t *vtn_ikey = reinterpret_cast(ckval->get_key()); + key_vtn_flowfilter_t *vtn_ff_imkey = reinterpret_cast + (ConfigKeyVal::Malloc + (sizeof(key_vtn_flowfilter_t))); + uuu::upll_strncpy(vtn_ff_imkey->vtn_key.vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + vtn_ff_imkey->input_direction = 0xFE; + ff_imkey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, + IpctSt::kIpcStKeyVtnFlowfilter, + vtn_ff_imkey, NULL); + + upll_rc_t result_import = ReadConfigDB(ff_imkey, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_import != UPLL_RC_SUCCESS && + result_import != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ff_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; } - delete req; - req = NULL; - return result_code; - } - //Update Controller Table - DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr, - kOpInOutCtrlr|kOpInOutDomain}; - result_code = DupConfigKeyVal(ctrlr_key, req, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal is failed result_code = %d", - result_code); - return result_code; - } - SET_USER_DATA_CTRLR(ctrlr_key, ctrlr_name); - result_code = ReadConfigDB(ctrlr_key, UPLL_DT_IMPORT, UNC_OP_READ, - dbop, dmi, CTRLRTBL); - if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Error in ReadConfigDb (%d)", result_code); - return result_code; - } - // create a record in CANDIDATE DB - result_code = UpdateConfigDB(ctrlr_key, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to update ctrl table, DB err %d", result_code); - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; + // Check the flow-filter existence in candidate db + key_vtn_flowfilter_t *vtn_ff_cdkey = reinterpret_cast + + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); + uuu::upll_strncpy(vtn_ff_cdkey->vtn_key.vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + vtn_ff_cdkey->input_direction = 0xFE; + ff_cdkey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, + IpctSt::kIpcStKeyVtnFlowfilter, + vtn_ff_cdkey, NULL); + + upll_rc_t result_cand = ReadConfigDB(ff_cdkey, UPLL_DT_CANDIDATE, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_cand != UPLL_RC_SUCCESS && + result_cand != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ff_imkey); + DELETE_IF_NOT_NULL(ff_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + if ((result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE || + result_import == UPLL_RC_SUCCESS) && + result_cand == UPLL_RC_SUCCESS) { + /* If the imported ctrr's vtn does not have the flow-filter and if the UNC + * has flow-filter, then apply this flow-filter(in/out) to imported + * ctrlr's VTN */ + /* If the imported ctrr's vtn hsa the flow-filter and if the UNC + * has flow-filter, then skip the imported ctrl vtn's flow-filter and + * apply the UNC flow-filter(in/out) to imported ctrlr's VTN */ + + /* Get the list of this VTN associated ctrlr and domain */ + std::list list_ctrlr_dom; + upll_rc_t vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ff_cdkey, + UPLL_DT_IMPORT, + dmi, + list_ctrlr_dom); + if (vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ff_imkey); + DELETE_IF_NOT_NULL(ff_cdkey); + if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetVtnControllerSpan error code (%d)", + vtn_ctrlr_span_rt_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + /* If ctrl and domain name not exist in VTN ctrl tbl, then + continue with the next VTN in import db */ + ckval = ckval->get_next_cfg_key_val(); + continue; + } + + ConfigKeyVal *tmp_ff_cdkey = ff_cdkey; + while (ff_cdkey != NULL) { + std::list::iterator it= list_ctrlr_dom.begin(); + while (it != list_ctrlr_dom.end()) { + // Create the entry in ctrlr table with as per the ctrlr and domain + ConfigKeyVal *ctrlckv = NULL; + GET_USER_DATA_FLAGS(ff_cdkey, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + key_vtn_flowfilter_t *vtn_ff_key = reinterpret_cast + + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); + memcpy(vtn_ff_key, reinterpret_cast + (ff_cdkey->get_key()), sizeof(key_vtn_flowfilter_t)); + + ctrlckv = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, + IpctSt::kIpcInvalidStNum, + vtn_ff_key, + NULL); + SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, *it); + SET_USER_DATA_FLAGS(ctrlckv, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + + // Create a record in CANDIDATE DB + result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, dmi, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err while inserting in ctrlr table (%d)", + result_code); + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(ff_imkey); + DELETE_IF_NOT_NULL(tmp_ff_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + DELETE_IF_NOT_NULL(ctrlckv); + ++it; + } + ff_cdkey = ff_cdkey->get_next_cfg_key_val(); + } + FREE_LIST_CTRLR(list_ctrlr_dom); + DELETE_IF_NOT_NULL(tmp_ff_cdkey); + } else if (result_import == UPLL_RC_SUCCESS && + result_cand == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + /* If candidate does not have flow-filter, then skip the imported + ctrlr's flow-filter */ + UPLL_LOG_DEBUG("flow-filter not exists in candidate"); + DELETE_IF_NOT_NULL(ff_imkey); + DELETE_IF_NOT_NULL(ff_cdkey); + } else if (result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE && + result_cand == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Import and candidate does not have flow-filter"); + DELETE_IF_NOT_NULL(ff_imkey); + DELETE_IF_NOT_NULL(ff_cdkey); } - delete req; - req = NULL; - return result_code; } - delete ctrlr_key; - ctrlr_key = NULL; - } - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; - } - if (req) { - delete req; - req = NULL; + ckval = ckval->get_next_cfg_key_val(); } - return result_code; -#endif + DELETE_IF_NOT_NULL(tmp_ckval); + return UPLL_RC_SUCCESS; } upll_rc_t VtnFlowFilterMoMgr::UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; - UPLL_LOG_DEBUG(" UpdateMo Success "); + UPLL_LOG_DEBUG(" Update operation not allowed "); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } upll_rc_t VtnFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; if (ikey == NULL && req == NULL) { UPLL_LOG_DEBUG("Insufficient parameters"); @@ -433,11 +575,13 @@ upll_rc_t VtnFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t result_code = UPLL_RC_SUCCESS; upll_rc_t vtn_ctrlr_span_rt_code = UPLL_RC_SUCCESS; - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed: err code(%d)", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed: err code(%d)", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); @@ -446,46 +590,57 @@ upll_rc_t VtnFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } - // Check if VTN Flowfilter already exists in CANDIDATE DB - result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_READ, dmi); - if ((result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) && - (result_code != UPLL_RC_ERR_INSTANCE_EXISTS)) { - UPLL_LOG_DEBUG(" UpdateConfigDB() error (%d)", result_code); - return result_code; - } - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Record already exists in Candidate DB: err code(%d)", - result_code); - return result_code; - } - // Check if VTN flowfilter exists in RUNNING DB and move it to CANDIDATE DB - if (UPLL_DT_CANDIDATE == req->datatype) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, - dmi, MAINTBL); - if ((result_code != UPLL_RC_ERR_INSTANCE_EXISTS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" Is Exist check operation failed: err code(%d)", - result_code); - return result_code; - } - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Failed to Restore the configuration: err code(%d)", - result_code); - return UPLL_RC_ERR_GENERIC; + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; + } } - return result_code; - } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } std::list list_ctrlr_dom; - vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, req->datatype, dmi, list_ctrlr_dom); + vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, + req->datatype, + dmi, + list_ctrlr_dom); if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", vtn_ctrlr_span_rt_code); - return result_code; + FREE_LIST_CTRLR(list_ctrlr_dom); + return vtn_ctrlr_span_rt_code; } // create a record in CANDIDATE DB for Main Table @@ -494,6 +649,7 @@ upll_rc_t VtnFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("create in CandidateDB failed: err code(%d) ", result_code); + FREE_LIST_CTRLR(list_ctrlr_dom); return result_code; } // create a record in CANDIDATE DB for controller Table @@ -505,22 +661,18 @@ upll_rc_t VtnFlowFilterMoMgr::CreateCandidateMo(IpcReqRespHeader *req, if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("create in ctrlr tbl failed: error code (%d)", result_code); - #if 0 +#if 0 result_code = UpdateConfigDB(ikey, req->datatype, UNC_OP_DELETE, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("delete in CandidateDB failed: err code(%d) ", result_code); } - #endif +#endif } } + FREE_LIST_CTRLR(list_ctrlr_dom); - for (std::list::iterator it= list_ctrlr_dom.begin(); - it != list_ctrlr_dom.end(); ++it) { - free(it->ctrlr); - free(it->domain); - } return result_code; } @@ -537,29 +689,8 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTable( std::list::iterator it= list_ctrlr_dom.begin(); while (it != list_ctrlr_dom.end()) { if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { - if (op == UNC_OP_CREATE) { - //capability check - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, reinterpret_cast(it->ctrlr), - UPLL_DT_CANDIDATE, - &cur_instance_count, - dmi, CTRLRTBL); - - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(temp_key); - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - DELETE_IF_NOT_NULL(temp_key); - } IpcReqRespHeader *req_header = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); req_header->operation = op; req_header->datatype = dt_type; @@ -572,21 +703,22 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTable( if (result_code != UPLL_RC_SUCCESS) { if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(it->ctrlr), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - result_code = UPLL_RC_SUCCESS; - ++it; - continue; + dt_type, &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + result_code = UPLL_RC_SUCCESS; + ++it; + continue; } UPLL_LOG_DEBUG("ValidateCapability Failed: result_code=%d", - result_code); + result_code); return result_code; } } key_vtn_flowfilter_t *vtn_ff_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); - memcpy(vtn_ff_key, reinterpret_cast(ikey->get_key()), + memcpy(vtn_ff_key, reinterpret_cast + (ikey->get_key()), sizeof(key_vtn_flowfilter_t)); ctrlckv = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, IpctSt::kIpcInvalidStNum, vtn_ff_key, NULL); @@ -596,7 +728,7 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTable( DbSubOp dbop1 = { kOpReadExist, kOpMatchCtrlr | kOpMatchDomain, kOpInOutNone }; result_code = UpdateConfigDB(ctrlckv, dt_type, UNC_OP_READ, dmi, &dbop1, - CTRLRTBL); + CTRLRTBL); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { DELETE_IF_NOT_NULL(ctrlckv); @@ -622,12 +754,13 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTable( return UPLL_RC_SUCCESS; } -upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTableForVtn(uint8_t* vtn_name, - controller_domain *ctrlr_dom, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t flag) { +upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTableForVtn( + uint8_t* vtn_name, + controller_domain *ctrlr_dom, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t flag) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ctrlckv = NULL, *ikey = NULL; @@ -643,7 +776,7 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTableForVtn(uint8_t* vtn_name, ctrlr_dom->domain); key_vtn_flowfilter *vtn_ff_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uuu::upll_strncpy(vtn_ff_key->vtn_key.vtn_name, vtn_name, (kMaxLenVtnName+1)); // set this value so that the direction @@ -683,7 +816,7 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTableForVtn(uint8_t* vtn_name, SET_USER_DATA_FLAGS(flag_ikey, flag); DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutCs | kOpInOutFlag}; result_code = UpdateConfigDB(flag_ikey, dt_type, UNC_OP_UPDATE, - dmi, &dbop1, MAINTBL); + dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(ikey); @@ -702,69 +835,42 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTableForVtn(uint8_t* vtn_name, DELETE_IF_NOT_NULL(ikey); return UPLL_RC_ERR_GENERIC; } - - if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { - if (op == UNC_OP_CREATE) { - //capability check - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ikey); - DELETE_IF_NOT_NULL(ctrlckv); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - key_vtn_flowfilter *vtn_ff_capakey = reinterpret_cast - (temp_key->get_key()); - vtn_ff_capakey->input_direction = 0xFE; - - result_code = GetInstanceCount(temp_key, reinterpret_cast(ctrlr_dom->ctrlr), - UPLL_DT_CANDIDATE, - &cur_instance_count, - dmi, CTRLRTBL); - - DELETE_IF_NOT_NULL(temp_key); - - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ikey); - DELETE_IF_NOT_NULL(ctrlckv); - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - } + if ((op == UNC_OP_CREATE) || (op == UNC_OP_UPDATE)) { IpcReqRespHeader *req_header = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); - req_header->operation = op; + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + req_header->operation = op; req_header->datatype = dt_type; // Validate whether the attributes supported by controller or not result_code = ValidateCapability( - req_header, temp_ikey, - reinterpret_cast(ctrlr_dom->ctrlr)); + req_header, temp_ikey, + reinterpret_cast(ctrlr_dom->ctrlr)); free(req_header); if (result_code != UPLL_RC_SUCCESS) { // VTN Flowfilter is not supported for other than PFC Controller // so skip adding entry for such sontroller in ctrlr table - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_dom->ctrlr), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - temp_ikey = temp_ikey->get_next_cfg_key_val(); - DELETE_IF_NOT_NULL(ctrlckv); - continue; + if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast + (ctrlr_dom->ctrlr), + dt_type, &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + temp_ikey = temp_ikey->get_next_cfg_key_val(); + DELETE_IF_NOT_NULL(ctrlckv); + continue; } UPLL_LOG_DEBUG("ValidateCapability Failed: result_code=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(ikey); DELETE_IF_NOT_NULL(ctrlckv); return result_code; - } + } } if (UPLL_DT_AUDIT == dt_type) { - val_vtn_flowfilter_ctrlr_t *val = reinterpret_cast + val_vtn_flowfilter_ctrlr_t *val = + reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_ctrlr_t))); val->cs_row_status = UNC_CS_APPLIED; ctrlckv->AppendCfgVal(IpctSt::kIpcInvalidStNum, val); @@ -772,11 +878,11 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTableForVtn(uint8_t* vtn_name, // Create/Update/Delete a record in CANDIDATE DB result_code = UpdateConfigDB(ctrlckv, dt_type, op, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Err while updating in ctrlr table for candidateDb(%d)", - result_code); - DELETE_IF_NOT_NULL(ikey); - DELETE_IF_NOT_NULL(ctrlckv); - return result_code; + UPLL_LOG_DEBUG("Err while updating in ctrlr table for candidateDb(%d)", + result_code); + DELETE_IF_NOT_NULL(ikey); + DELETE_IF_NOT_NULL(ctrlckv); + return result_code; } else { DELETE_IF_NOT_NULL(ctrlckv); } @@ -788,8 +894,8 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateControllerTableForVtn(uint8_t* vtn_name, } upll_rc_t VtnFlowFilterMoMgr::GetControllerKeyval(ConfigKeyVal *&ctrlckv, - ConfigKeyVal *&ikey, - controller_domain *ctrlrdom) { + ConfigKeyVal *&ikey, + controller_domain *ctrlrdom) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; result_code = GetChildConfigKey(ctrlckv, ikey); @@ -803,8 +909,8 @@ upll_rc_t VtnFlowFilterMoMgr::GetControllerKeyval(ConfigKeyVal *&ctrlckv, } upll_rc_t VtnFlowFilterMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; // no reference check is required for this function return UPLL_RC_SUCCESS; @@ -813,51 +919,8 @@ upll_rc_t VtnFlowFilterMoMgr::IsReferenced(ConfigKeyVal *ikey, upll_rc_t VtnFlowFilterMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_DEBUG("input key is null"); - return UPLL_RC_ERR_GENERIC; - } - key_vtn_flowfilter_t *key_vtn_ff = - reinterpret_cast(ikey->get_key()); - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key not supported result - %d", result_code); - return result_code; - } - - key_vtn_t *vtn_key = reinterpret_cast(okey->get_key()); - uuu::upll_strncpy(vtn_key->vtn_name, key_vtn_ff->vtn_key.vtn_name, - (kMaxLenVtnName+1)); - - /* Checks the given vtn exists or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VTN key does not exists"); - delete okey; - return UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - - delete okey; - - if (UNC_OP_CREATE == req->operation) { - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetRenameFlag failed %d", result_code); - return result_code; - } - } - - UPLL_LOG_DEBUG("ValidateAttribute Successfull."); - return result_code; + // No operation + return UPLL_RC_SUCCESS; } upll_rc_t VtnFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, @@ -872,8 +935,8 @@ upll_rc_t VtnFlowFilterMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -984,38 +1047,38 @@ upll_rc_t VtnFlowFilterMoMgr::GetRenamedControllerKey( UPLL_LOG_TRACE("Start... Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); MoMgrImpl *mgr = static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); + (GetMoManager(UNC_KT_VTN)))); result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey fail"); return result_code; } if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); } else { UPLL_LOG_DEBUG("ctrlr_dom null"); DELETE_IF_NOT_NULL(okey); return result_code; } - + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); - // Copy the input VTN Name into the Okey and send it for rename check IN db - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | + // Copy the input VTN Name into the Okey and send it for rename check IN db + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + UPLL_LOG_DEBUG("vtn name (%s) (%s)", + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name); + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; /* ctrlr_name */ result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, RENAMETBL); + dbop, dmi, RENAMETBL); if (result_code != UPLL_RC_SUCCESS && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("ReadConfigDB null"); @@ -1025,17 +1088,17 @@ upll_rc_t VtnFlowFilterMoMgr::GetRenamedControllerKey( // NULL Checks Missing if (result_code == UPLL_RC_SUCCESS) { val_rename_vtn *rename_val = reinterpret_cast - (GetVal(okey)); + (GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("Vtn Name is not Valid."); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - rename_val->new_name, - (kMaxLenVtnName + 1)); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + rename_val->new_name, + (kMaxLenVtnName + 1)); } DELETE_IF_NOT_NULL(okey); UPLL_LOG_TRACE("End... Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); @@ -1051,7 +1114,7 @@ upll_rc_t VtnFlowFilterMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, ConfigKeyVal *unc_key = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE("%s GetRenamedUncKey vtnff start", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); if ((ikey == NULL) || (ctrlr_id == NULL) || (dmi == NULL)) { UPLL_LOG_DEBUG("ikey/ctrlr_id dmi NULL"); return UPLL_RC_ERR_GENERIC; @@ -1076,7 +1139,7 @@ upll_rc_t VtnFlowFilterMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, rename_vtn_key->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; MoMgrImpl *mgr = static_cast((const_cast(GetMoManager( - UNC_KT_VTN)))); + UNC_KT_VTN)))); result_code = mgr->GetChildConfigKey(unc_key, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey fail"); @@ -1092,7 +1155,7 @@ upll_rc_t VtnFlowFilterMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, SET_USER_DATA_CTRLR(unc_key, ctrlr_id); unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn_key); result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, - dmi, RENAMETBL); + dmi, RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -1108,7 +1171,7 @@ upll_rc_t VtnFlowFilterMoMgr::GetRenamedUncKey(ConfigKeyVal *ikey, (kMaxLenVtnName + 1)); } UPLL_LOG_TRACE("%s GetRenamedUncKey vtnff end", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); mgr = NULL; return UPLL_RC_SUCCESS; @@ -1129,17 +1192,18 @@ upll_rc_t VtnFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } if (req->get_key_type() != UNC_KT_VTN_FLOWFILTER) { UPLL_LOG_DEBUG(" Invalid KeyType."); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); if (tmp) { if (tbl == MAINTBL) { - val_flowfilter_t *ival = reinterpret_cast(GetVal(req)); + val_flowfilter_t *ival = reinterpret_cast + (GetVal(req)); if (NULL != ival) { - flowfilter_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); + flowfilter_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); memcpy(flowfilter_val, ival, sizeof(val_flowfilter_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValFlowfilter, flowfilter_val); } @@ -1149,8 +1213,8 @@ upll_rc_t VtnFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (NULL != ival) { val_vtn_flowfilter_ctrlr_t *flowfilter_ctrlr_val = NULL; flowfilter_ctrlr_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_ctrlr_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_ctrlr_t))); memcpy(flowfilter_ctrlr_val, ival, sizeof(val_vtn_flowfilter_ctrlr_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValFlowfilter, flowfilter_ctrlr_val); @@ -1166,10 +1230,11 @@ upll_rc_t VtnFlowFilterMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, key_vtn_flowfilter_t *ikey = reinterpret_cast(tkey); key_vtn_flowfilter_t *vtn_flowfilterkey = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); memcpy(vtn_flowfilterkey, ikey, sizeof(key_vtn_flowfilter_t)); - okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, IpctSt::kIpcStKeyVtnFlowfilter, + okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, + IpctSt::kIpcStKeyVtnFlowfilter, vtn_flowfilterkey, tmp1); SET_USER_DATA(okey, req); UPLL_LOG_DEBUG(" Creation of Duplicate ConfigKeyVal is Successful "); @@ -1198,12 +1263,12 @@ upll_rc_t VtnFlowFilterMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, val_vtn_flowfilter_ctrlr_t *val; ConfigKeyVal *temp_ckv = ckv; for ( ; temp_ckv != NULL ; temp_ckv = temp_ckv->get_next_cfg_key_val()) { - val = reinterpret_cast(GetVal(temp_ckv)); - list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); + val = reinterpret_cast(GetVal(temp_ckv)); + list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); } DELETE_IF_NOT_NULL(ckv); val_flowfilter_t *val_temp = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, MAINTBL); @@ -1213,22 +1278,23 @@ upll_rc_t VtnFlowFilterMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, return result_code; } upll_rc_t VtnFlowFilterMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtn_flowfilter_ctrlr *val; val = (ckv_running != NULL)? - reinterpret_cast(GetVal(ckv_running)):NULL; + reinterpret_cast(GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; return result_code; } @@ -1239,10 +1305,10 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateConfigStatus( ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - unc_keytype_configstatus_t ctrlr_status ; - uint8_t cs_status ; + unc_keytype_configstatus_t ctrlr_status; + uint8_t cs_status; ctrlr_status = (driver_result == UPLL_RC_SUCCESS) ? - UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; val_flowfilter_t *vtn_flowfilter_val = reinterpret_cast(GetVal(vtn_flow_filter_key)); val_vtn_flowfilter_ctrlr *ctrlr_val_vtn_flowfilter = @@ -1250,43 +1316,43 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateConfigStatus( if ((vtn_flowfilter_val == NULL) || (ctrlr_val_vtn_flowfilter == NULL)) { UPLL_LOG_DEBUG("vtn_flowfilter &" - "ctrlr_val_vtn_flowfilter is Null"); - return UPLL_RC_ERR_GENERIC; + "ctrlr_val_vtn_flowfilter is Null"); + return UPLL_RC_ERR_GENERIC; } cs_status = vtn_flowfilter_val->cs_row_status; UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); if (op == UNC_OP_CREATE) { ctrlr_val_vtn_flowfilter->cs_row_status = ctrlr_status; - /* update the vtn status in main tbl */ + /* update the vtn status in main tbl */ if (vtn_flowfilter_val->cs_row_status == UNC_CS_UNKNOWN) { - /* first entry in ctrlr table */ + /* first entry in ctrlr table */ cs_status = ctrlr_status; } else if (vtn_flowfilter_val->cs_row_status == UNC_CS_INVALID) { cs_status = UNC_CS_INVALID; } else if (vtn_flowfilter_val->cs_row_status == UNC_CS_APPLIED) { - if (ctrlr_status == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + if (ctrlr_status == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } } else if (vtn_flowfilter_val->cs_row_status == UNC_CS_NOT_APPLIED) { - if (ctrlr_status == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + if (ctrlr_status == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; + cs_status = UNC_CS_PARTIALLY_APPLIED; } vtn_flowfilter_val->cs_row_status = cs_status; } // Updating the Controller cs_row_status if ((op == UNC_OP_UPDATE) && (nreq != NULL)) { - val_vtn_flowfilter_ctrlr *run_ctrlr_val = - reinterpret_cast - (GetVal(nreq)); - if (run_ctrlr_val != NULL) - ctrlr_val_vtn_flowfilter->cs_row_status = run_ctrlr_val->cs_row_status; - } - UPLL_LOG_DEBUG("UpdateConfigStatus is Successfull"); - return result_code; + val_vtn_flowfilter_ctrlr *run_ctrlr_val = + reinterpret_cast + (GetVal(nreq)); + if (run_ctrlr_val != NULL) + ctrlr_val_vtn_flowfilter->cs_row_status = run_ctrlr_val->cs_row_status; + } + UPLL_LOG_DEBUG("UpdateConfigStatus is Successfull"); + return result_code; } upll_rc_t VtnFlowFilterMoMgr::SetVtnFFConsolidatedStatus(ConfigKeyVal *ikey, @@ -1300,7 +1366,7 @@ VtnFlowFilterMoMgr::SetVtnFFConsolidatedStatus(ConfigKeyVal *ikey, bool applied = false, not_applied = false, invalid = false; unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; if (!ikey || !dmi) { UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; @@ -1310,7 +1376,7 @@ VtnFlowFilterMoMgr::SetVtnFFConsolidatedStatus(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", result_code); return result_code; } - result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, + result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { @@ -1321,7 +1387,7 @@ VtnFlowFilterMoMgr::SetVtnFFConsolidatedStatus(ConfigKeyVal *ikey, } for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { + tmp = tmp->get_next_cfg_key_val()) { ctrlr_val = reinterpret_cast(GetVal(tmp)); if (!ctrlr_val) { UPLL_LOG_DEBUG("Controller Value is empty"); @@ -1337,17 +1403,17 @@ VtnFlowFilterMoMgr::SetVtnFFConsolidatedStatus(ConfigKeyVal *ikey, switch (ctrlr_val->cs_row_status) { case UNC_CS_APPLIED: applied = true; - break; + break; case UNC_CS_NOT_APPLIED: not_applied = true; - break; + break; case UNC_CS_INVALID: invalid = true; - break; + break; default: UPLL_LOG_DEBUG("Invalid status"); DELETE_IF_NOT_NULL(ctrlr_ckv); - // return UPLL_RC_ERR_GENERIC; + // return UPLL_RC_ERR_GENERIC; } vtn_exist_on_ctrlr = NULL; } @@ -1373,11 +1439,12 @@ VtnFlowFilterMoMgr::SetVtnFFConsolidatedStatus(ConfigKeyVal *ikey, } upll_rc_t VtnFlowFilterMoMgr::GetDiffRecord(ConfigKeyVal *ckv_running, - ConfigKeyVal *ckv_audit, - uuc::UpdateCtrlrPhase phase, MoMgrTables tbl, - ConfigKeyVal *&okey, - DalDmlIntf *dmi, - bool &invalid_attr) { + ConfigKeyVal *ckv_audit, + uuc::UpdateCtrlrPhase phase, + MoMgrTables tbl, + ConfigKeyVal *&okey, + DalDmlIntf *dmi, + bool &invalid_attr) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckv_dup = NULL; @@ -1385,99 +1452,100 @@ upll_rc_t VtnFlowFilterMoMgr::GetDiffRecord(ConfigKeyVal *ckv_running, DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCs}; switch (phase) { case uuc::kUpllUcpDelete: - UPLL_LOG_TRACE("Deleted record is %s ",ckv_running->ToStrAll().c_str()); + UPLL_LOG_TRACE("Deleted record is %s ", ckv_running->ToStrAll().c_str()); result_code = GetChildConfigKey(okey, ckv_running); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); - return result_code; + UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", + result_code, phase); + return result_code; } - break; + break; case uuc::kUpllUcpCreate: if (tbl == CTRLRTBL) { UPLL_LOG_TRACE("Created record fot ctrlr_tbl is %s ", - ckv_running->ToStrAll().c_str()); + ckv_running->ToStrAll().c_str()); result_code = GetChildConfigKey(okey, ckv_running); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); return result_code; } result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ReadConfigDB failed. err_code & phase %d %d", - result_code, phase); + result_code, phase); return result_code; } } else { - UPLL_LOG_TRACE("Created record is %s ",ckv_running->ToStrAll().c_str()); - result_code = DupConfigKeyVal(okey, ckv_running, tbl); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", - result_code, phase); - return result_code; - } + UPLL_LOG_TRACE("Created record is %s ", + ckv_running->ToStrAll().c_str()); + result_code = DupConfigKeyVal(okey, ckv_running, tbl); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed. err_code & phase %d %d", + result_code, phase); + return result_code; + } } - break; + break; case uuc::kUpllUcpUpdate: if (tbl == CTRLRTBL) { UPLL_LOG_TRACE("UpdateRecord record for Ctrlr_tbl is %s ", - ckv_running->ToStrAll().c_str()); + ckv_running->ToStrAll().c_str()); UPLL_LOG_TRACE("UpdateRecord record for Ctrlr_tbl is %s ", - ckv_audit->ToStrAll().c_str()); + ckv_audit->ToStrAll().c_str()); result_code = GetChildConfigKey(okey, ckv_running); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey for running record failed. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("GetChildConfigKey for running record failed." + "err_code & phase %d %d", result_code, phase); return result_code; } result_code = ReadConfigDB(okey, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from running failed. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("ReadConfigDB from running failed. " + "err_code & phase %d %d", result_code, phase); return result_code; } result_code = GetChildConfigKey(ckv_dup, ckv_audit); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey for audit record failed. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("GetChildConfigKey for audit record failed. " + "err_code & phase %d %d", result_code, phase); return result_code; } result_code = ReadConfigDB(ckv_dup, UPLL_DT_AUDIT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB from audit failed. \ - err_code & phase %d %d", result_code, phase); + UPLL_LOG_DEBUG("ReadConfigDB from audit failed. " + "err_code & phase %d %d", result_code, phase); return result_code; } } else { - UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_running->ToStrAll().c_str()); - UPLL_LOG_TRACE("UpdateRecord record is %s ", - ckv_audit->ToStrAll().c_str()); - result_code = DupConfigKeyVal(okey, ckv_running, tbl); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. \ - err_code & phase %d %d", result_code, phase); - return result_code; - } - result_code = DupConfigKeyVal(ckv_dup, ckv_audit, tbl); - if (!ckv_dup || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. \ - err_code & phase %d %d", result_code, phase); - DELETE_IF_NOT_NULL(ckv_dup); - return result_code; - } + UPLL_LOG_TRACE("UpdateRecord record is %s ", + ckv_running->ToStrAll().c_str()); + UPLL_LOG_TRACE("UpdateRecord record is %s ", + ckv_audit->ToStrAll().c_str()); + result_code = DupConfigKeyVal(okey, ckv_running, tbl); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for running record. " + "err_code & phase %d %d", result_code, phase); + return result_code; + } + result_code = DupConfigKeyVal(ckv_dup, ckv_audit, tbl); + if (!ckv_dup || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyVal failed for audit record. " + "err_code & phase %d %d", result_code, phase); + DELETE_IF_NOT_NULL(ckv_dup); + return result_code; + } } if (GetVal(okey) != NULL && GetVal(ckv_dup) != NULL) { void *val1 = GetVal(okey); invalid_attr = FilterAttributes(val1, GetVal(ckv_dup), true, - UNC_OP_UPDATE); + UNC_OP_UPDATE); } - break; + break; default: UPLL_LOG_DEBUG("Invalid operation %d", phase); return UPLL_RC_ERR_NO_SUCH_OPERATION; @@ -1487,13 +1555,14 @@ upll_rc_t VtnFlowFilterMoMgr::GetDiffRecord(ConfigKeyVal *ckv_running, return result_code; } -upll_rc_t VtnFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { +upll_rc_t VtnFlowFilterMoMgr::TxUpdateController( + unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode dal_result = uud::kDalRcSuccess; @@ -1548,15 +1617,15 @@ upll_rc_t VtnFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, DELETE_IF_NOT_NULL(ck_main); break; } - result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom); - if (result_code == UPLL_RC_SUCCESS) { - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); - } else { + bool driver_resp = false; + result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom, + affected_ctrlr_set, &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdateProcess error %d", result_code); upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); + ctrlr_dom.ctrlr); if (UPLL_RC_SUCCESS != local_rc && UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); @@ -1565,9 +1634,14 @@ upll_rc_t VtnFlowFilterMoMgr::TxUpdateController(unc_key_type_t keytype, result_code = UPLL_RC_ERR_GENERIC; break; } + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = resp.ckv_data; DELETE_IF_NOT_NULL(ck_main); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(resp.ckv_data); + break; } DELETE_IF_NOT_NULL(resp.ckv_data); } @@ -1588,7 +1662,9 @@ upll_rc_t VtnFlowFilterMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, IpcResponse *ipc_resp, unc_keytype_operation_t op, DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { UPLL_FUNC_TRACE; upll_rc_t result_code; /* read from main table */ @@ -1614,10 +1690,10 @@ upll_rc_t VtnFlowFilterMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, /* Get renamed key if key is renamed */ if (op == UNC_OP_DELETE) result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_RUNNING, - dmi, ctrlr_dom); + dmi, ctrlr_dom); else result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_CANDIDATE, - dmi, ctrlr_dom); + dmi, ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Failed to get the Renamed ControllerKey"); return result_code; @@ -1627,17 +1703,20 @@ upll_rc_t VtnFlowFilterMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, UPLL_DT_CANDIDATE, dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { result_code = UPLL_RC_SUCCESS; UPLL_LOG_DEBUG("controller disconnected error proceed with commit"); } if (result_code != UPLL_RC_SUCCESS) { + *driver_resp = true; UPLL_LOG_DEBUG("IpcSend failed %d", result_code); } + affected_ctrlr_set->insert((const char *)ctrlr_dom->ctrlr); if ((op == UNC_OP_CREATE) && dup_ckmain) { delete dup_ckmain; dup_ckmain = NULL; } + UPLL_LOG_TRACE("Driver response received %d", *driver_resp); return result_code; } @@ -1652,44 +1731,50 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( unc_keytype_operation_t op[] = { UNC_OP_DELETE, UNC_OP_CREATE }; int nop = sizeof(op) / sizeof(op[0]); - ConfigKeyVal *vtn_flowfilter_key = NULL, *req = NULL, - *nreq = NULL, *vtn_ck_run = NULL; + ConfigKeyVal *vtn_flowfilter_key = NULL, *req = NULL, + *nreq = NULL, *vtn_ck_run = NULL; DalCursor *cfg1_cursor; uint8_t *ctrlr_id =NULL; map ctrlr_result; CtrlrCommitStatusList::iterator ccsListItr; CtrlrCommitStatus *ccStatusPtr; - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { - result_code = UPLL_RC_ERR_GENERIC; - UPLL_LOG_DEBUG("Insufficient inputs:result_code %d", result_code); - return result_code; - } - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = reinterpret_cast(const_cast - (ccStatusPtr->ctrlr_id.c_str())); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; - ck_err = ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, - ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to get the Renamed Unc Key, resultcode=%d", - result_code); - return result_code; + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { + ccStatusPtr = *ccsListItr; + ctrlr_id = reinterpret_cast(const_cast + (ccStatusPtr->ctrlr_id.c_str())); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; + ck_err = ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Unable to get the Renamed Unc Key, resultcode=%d", + result_code); + return result_code; + } } } } } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; // Update the Main table - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], - req, nreq, &cfg1_cursor, dmi,NULL, MAINTBL,true); + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + MAINTBL, + true); while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); @@ -1701,8 +1786,8 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( nreq, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Updating Main table Error %d", result_code); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; @@ -1720,9 +1805,10 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; // Update the controller table result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, - nreq, &cfg1_cursor, dmi, NULL, CTRLRTBL, true); + nreq, &cfg1_cursor, dmi, NULL, CTRLRTBL, true); ConfigKeyVal *vtn_ff_ctrlr_key = NULL; while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); @@ -1732,13 +1818,13 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( break; } if (op[i] == UNC_OP_CREATE) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag - | kOpInOutCs }; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag + | kOpInOutCs }; result_code = GetChildConfigKey(vtn_flowfilter_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", result_code); - if (cfg1_cursor) + if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); @@ -1746,10 +1832,10 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( } result_code = ReadConfigDB(vtn_flowfilter_key, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); - if (cfg1_cursor) + if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(vtn_flowfilter_key); DELETE_IF_NOT_NULL(req); @@ -1773,18 +1859,24 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( // to the cs_status of first controller uint32_t cur_instance_count; result_code = GetInstanceCount(vtn_flowfilter_key, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); + UPLL_DT_CANDIDATE, &cur_instance_count, + dmi, CTRLRTBL); if ((result_code == UPLL_RC_SUCCESS) && (cur_instance_count == 1)) - reinterpret_cast(GetVal(vtn_flowfilter_key))->\ - cs_row_status = UNC_CS_UNKNOWN ; + reinterpret_cast(GetVal(vtn_flowfilter_key))->\ + cs_row_status = UNC_CS_UNKNOWN; GET_USER_DATA_CTRLR(vtn_ff_ctrlr_key, ctrlr_id); string controller(reinterpret_cast (ctrlr_id)); - - result_code = UpdateConfigStatus(vtn_flowfilter_key, op[i], - ctrlr_result[controller], nreq, - dmi, vtn_ff_ctrlr_key); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + result_code = UpdateConfigStatus(vtn_flowfilter_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, nreq, + dmi, vtn_ff_ctrlr_key); + } else { + result_code = UpdateConfigStatus(vtn_flowfilter_key, op[i], + ctrlr_result[controller], nreq, + dmi, vtn_ff_ctrlr_key); + } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in updating configstatus, resultcode=%d", result_code); @@ -1794,8 +1886,8 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( } } else if (op[i] == UNC_OP_DELETE) { // Reading Main Running DB for delete op - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag - | kOpInOutCs }; + DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag + | kOpInOutCs }; result_code = GetChildConfigKey(vtn_ck_run, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", @@ -1808,8 +1900,8 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( } result_code = ReadConfigDB(vtn_ck_run, UPLL_DT_RUNNING, UNC_OP_READ, dbop1, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE ) { + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE ) { UPLL_LOG_DEBUG("Unable to read configuration from CandidateDb"); DELETE_IF_NOT_NULL(vtn_ck_run); if (cfg1_cursor) @@ -1817,12 +1909,12 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; - } + } if (result_code == UPLL_RC_SUCCESS) { result_code = SetVtnFFConsolidatedStatus(vtn_ck_run, ctrlr_id, dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", - result_code); + UPLL_LOG_DEBUG("Could not set consolidated status %d", + result_code); DELETE_IF_NOT_NULL(vtn_ck_run); if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -1830,7 +1922,7 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(nreq); return result_code; } - } + } DELETE_IF_NOT_NULL(vtn_ck_run); result_code = GetChildConfigKey(vtn_ff_ctrlr_key, req); if (result_code != UPLL_RC_SUCCESS) { @@ -1848,18 +1940,18 @@ upll_rc_t VtnFlowFilterMoMgr::TxCopyCandidateToRunning( op[i], dmi, CTRLRTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("DB Error while updating controller table. err code:%d", - result_code); + result_code); DELETE_IF_NOT_NULL(vtn_ff_ctrlr_key); if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); + dmi->CloseCursor(cfg1_cursor, true); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); return result_code; } // update the consolidated config status in the Main Table if (op[i] != UNC_OP_DELETE) { - result_code = UpdateConfigDB(vtn_flowfilter_key, UPLL_DT_RUNNING, - UNC_OP_UPDATE, dmi, MAINTBL); + result_code = UpdateConfigDB(vtn_flowfilter_key, UPLL_DT_RUNNING, + UNC_OP_UPDATE, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { if (cfg1_cursor) dmi->CloseCursor(cfg1_cursor, true); @@ -1923,9 +2015,9 @@ upll_rc_t VtnFlowFilterMoMgr::ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, controller_domain ctrlr_dom; result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; } result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -1988,9 +2080,9 @@ upll_rc_t VtnFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, controller_domain ctrlr_dom; result_code = ValidateMessage(req, key); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; } result_code = ReadInfoFromDB(req, key, dmi, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { @@ -2003,19 +2095,19 @@ upll_rc_t VtnFlowFilterMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } bool VtnFlowFilterMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&bindinfo, - int &nattr, - MoMgrTables tbl ) { + BindInfo *&bindinfo, + int &nattr, + MoMgrTables tbl ) { /* Main Table only update */ UPLL_FUNC_TRACE; if (MAINTBL == tbl) { nattr = sizeof(vtn_flowfilter_maintbl_rename_bindinfo)/ - sizeof(vtn_flowfilter_maintbl_rename_bindinfo[0]); + sizeof(vtn_flowfilter_maintbl_rename_bindinfo[0]); bindinfo = vtn_flowfilter_maintbl_rename_bindinfo; } else if (CTRLRTBL ==tbl) { nattr = sizeof(vtn_flowfilter_ctrlrtbl_rename_bindinfo)/ - sizeof(vtn_flowfilter_ctrlrtbl_rename_bindinfo[0]); - bindinfo = vtn_flowfilter_ctrlrtbl_rename_bindinfo; + sizeof(vtn_flowfilter_ctrlrtbl_rename_bindinfo[0]); + bindinfo = vtn_flowfilter_ctrlrtbl_rename_bindinfo; } UPLL_LOG_DEBUG("Successful Completeion"); return PFC_TRUE; @@ -2024,7 +2116,7 @@ bool VtnFlowFilterMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, bool VtnFlowFilterMoMgr::IsValidKey(void *key, uint64_t index) { UPLL_FUNC_TRACE; key_vtn_flowfilter_t *vtn_ff_key = - reinterpret_cast (key); + reinterpret_cast (key); upll_rc_t ret_val; switch (index) { case uudst::vtn_flowfilter::kDbiVtnName: @@ -2036,7 +2128,7 @@ bool VtnFlowFilterMoMgr::IsValidKey(void *key, uint64_t index) { UPLL_LOG_DEBUG("VTN Name is not valid(%d)", ret_val); return false; } - break; + break; case uudst::vtn_flowfilter::kDbiInputDirection: if (vtn_ff_key->input_direction == 0xFE) { // if operation is read sibling begin or @@ -2054,14 +2146,14 @@ bool VtnFlowFilterMoMgr::IsValidKey(void *key, uint64_t index) { return false; } } - break; + break; default: - break; + break; } return true; } upll_rc_t VtnFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; if (!ikey || !(ikey->get_key())) { UPLL_LOG_DEBUG("Input Key Not Valid"); @@ -2071,10 +2163,10 @@ upll_rc_t VtnFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vtn_flowfilter_t *key_vtn = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { UPLL_LOG_DEBUG("String Length not Valid to Perform the Operation"); @@ -2087,7 +2179,7 @@ upll_rc_t VtnFlowFilterMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, key_vtn->input_direction = 0xFE; okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, IpctSt:: - kIpcStKeyVtnFlowfilter, key_vtn, NULL); + kIpcStKeyVtnFlowfilter, key_vtn, NULL); if (!okey) return UPLL_RC_ERR_GENERIC; return result_code; @@ -2116,12 +2208,13 @@ upll_rc_t VtnFlowFilterMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_DEBUG(" invalid option2(%d)", req->option2); return UPLL_RC_ERR_INVALID_OPTION2; } - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -2171,8 +2264,8 @@ upll_rc_t VtnFlowFilterMoMgr::ValidateMessage(IpcReqRespHeader *req, } upll_rc_t VtnFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char* ctrlr_name) { + ConfigKeyVal *ikey, + const char* ctrlr_name) { UPLL_FUNC_TRACE; if ((NULL == req) || (NULL == ikey)) { UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); @@ -2195,13 +2288,7 @@ upll_rc_t VtnFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: { ret_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - if (ret_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + &max_instance_count, &max_attrs, &attrs); break; } default: { @@ -2210,7 +2297,7 @@ upll_rc_t VtnFlowFilterMoMgr::ValidateCapability(IpcReqRespHeader *req, &max_attrs, &attrs); else ret_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); } break; } @@ -2230,10 +2317,14 @@ upll_rc_t VtnFlowFilterMoMgr::GetVtnControllerSpan( DalDmlIntf *dmi, std::list &list_ctrlr_dom) { UPLL_FUNC_TRACE; + if (NULL == ikey) { + UPLL_LOG_DEBUG("iKey NULL"); + return UPLL_RC_ERR_GENERIC; + } ConfigKeyVal *okey = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; VtnMoMgr *mgr = static_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager(UNC_KT_VTN))); result_code = mgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Key not supported by controller"); @@ -2258,8 +2349,10 @@ upll_rc_t VtnFlowFilterMoMgr::GetVtnControllerSpan( } upll_rc_t VtnFlowFilterMoMgr::UpdateMainTbl(ConfigKeyVal *vtn_ff_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *ck_vtn_ff = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -2288,27 +2381,27 @@ upll_rc_t VtnFlowFilterMoMgr::UpdateMainTbl(ConfigKeyVal *vtn_ff_key, } break; default: - UPLL_LOG_DEBUG("Inalid operation"); + UPLL_LOG_DEBUG("Inalid operation"); return UPLL_RC_ERR_GENERIC; } DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; dbop.inoutop = kOpInOutCs | kOpInOutFlag; result_code = UpdateConfigDB(ck_vtn_ff, UPLL_DT_STATE, op, dmi, &dbop, - MAINTBL); + MAINTBL); EnqueCfgNotification(op, UPLL_DT_RUNNING, vtn_ff_key); delete ck_vtn_ff; return result_code; } upll_rc_t VtnFlowFilterMoMgr::DeleteMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == req) { - UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); - return result_code; + UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); + return result_code; } result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, UNC_OP_READ, dmi); @@ -2318,7 +2411,7 @@ upll_rc_t VtnFlowFilterMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } VtnFlowFilterEntryMoMgr *mgr = reinterpret_cast - (const_cast (GetMoManager(UNC_KT_VTN_FLOWFILTER_ENTRY))); + (const_cast (GetMoManager(UNC_KT_VTN_FLOWFILTER_ENTRY))); if (NULL == mgr) { UPLL_LOG_DEBUG("VtnFlowFilterEntryMoMgr mgr is NULL"); return result_code; @@ -2329,13 +2422,13 @@ upll_rc_t VtnFlowFilterMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } key_vtn_flowfilter_t *vtn_ff_key = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_vtn_flowfilter_entry_t *vtn_ffe_key = - reinterpret_cast(vtn_ffe_ckv->get_key()); + reinterpret_cast(vtn_ffe_ckv->get_key()); uuu::upll_strncpy(vtn_ffe_key->flowfilter_key.vtn_key.vtn_name, - vtn_ff_key->vtn_key.vtn_name, kMaxLenVtnName+1); + vtn_ff_key->vtn_key.vtn_name, kMaxLenVtnName+1); vtn_ffe_key->flowfilter_key.input_direction = - vtn_ff_key->input_direction; + vtn_ff_key->input_direction; result_code = mgr->DeleteChildMo(req, vtn_ffe_ckv, dmi); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { result_code = UPLL_RC_SUCCESS; @@ -2347,22 +2440,22 @@ upll_rc_t VtnFlowFilterMoMgr::DeleteMo(IpcReqRespHeader *req, } DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, - UNC_OP_DELETE, dmi, &dbop, MAINTBL); + UNC_OP_DELETE, dmi, &dbop, MAINTBL); // result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? // UPLL_RC_SUCCESS:result_code; if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Delete Operation fails with %d", result_code); - DELETE_IF_NOT_NULL(vtn_ffe_ckv); - return result_code; + UPLL_LOG_ERROR("Delete Operation fails with %d", result_code); + DELETE_IF_NOT_NULL(vtn_ffe_ckv); + return result_code; } result_code = UpdateConfigDB(ikey, UPLL_DT_CANDIDATE, - UNC_OP_DELETE, dmi, &dbop, CTRLRTBL); + UNC_OP_DELETE, dmi, &dbop, CTRLRTBL); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_ERROR("Delete Operation fails with %d", result_code); - DELETE_IF_NOT_NULL(vtn_ffe_ckv); - return result_code; + UPLL_LOG_ERROR("Delete Operation fails with %d", result_code); + DELETE_IF_NOT_NULL(vtn_ffe_ckv); + return result_code; } DELETE_IF_NOT_NULL(vtn_ffe_ckv); @@ -2377,7 +2470,7 @@ upll_rc_t VtnFlowFilterMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VTN_FLOWFILTER) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -2404,40 +2497,31 @@ upll_rc_t VtnFlowFilterMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, } upll_rc_t VtnFlowFilterMoMgr::DeleteChildrenPOM( - ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; if (NULL == ikey || NULL == dmi) { - UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); - return result_code; + UPLL_LOG_DEBUG("Delete Operation failed:Bad request"); + return result_code; } // Read the DB get the flowlist value and send the delete request to // flowlist momgr if flowlist is configured. - - ConfigKeyVal *tempckv = NULL; - result_code = GetChildConfigKey(tempckv, ikey); - if (!tempckv || UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(tempckv); - return result_code; - } ConfigKeyVal *temp_ikey = NULL; result_code = GetChildConfigKey(temp_ikey, ikey); if (!temp_ikey || UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed"); - DELETE_IF_NOT_NULL(tempckv); DELETE_IF_NOT_NULL(temp_ikey); return result_code; } result_code = UpdateConfigDB(temp_ikey, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(temp_ikey); - DELETE_IF_NOT_NULL(tempckv); return result_code; } ConfigKeyVal *ctrlr_ikey = NULL; @@ -2446,21 +2530,18 @@ upll_rc_t VtnFlowFilterMoMgr::DeleteChildrenPOM( UPLL_LOG_DEBUG("GetChildConfigKey failed"); DELETE_IF_NOT_NULL(temp_ikey); return result_code; - } + } DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutNone}; result_code = UpdateConfigDB(ctrlr_ikey, dt_type, UNC_OP_DELETE, dmi, - &dbop, CTRLRTBL); + &dbop, CTRLRTBL); UPLL_LOG_DEBUG("UpdateConfigDB failed for ctrlrtbl %d", result_code); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(temp_ikey); return result_code; } - if (tempckv) - delete tempckv; - tempckv = NULL; if (temp_ikey) delete temp_ikey; temp_ikey = NULL; @@ -2474,7 +2555,7 @@ upll_rc_t VtnFlowFilterMoMgr::DeleteChildrenPOM( upll_rc_t VtnFlowFilterMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { UPLL_FUNC_TRACE; val_flowfilter_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); + (ConfigKeyVal::Malloc(sizeof(val_flowfilter_t))); val->cs_row_status = UNC_CS_APPLIED; ikey->AppendCfgVal(IpctSt::kIpcStValFlowfilter, val); return UPLL_RC_SUCCESS; @@ -2497,7 +2578,18 @@ upll_rc_t VtnFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; UPLL_LOG_TRACE(" ikey is %s", ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); + key_vtn_flowfilter_t *vtn_ff_key = + reinterpret_cast(ikey->get_key()); + if (!vtn_ff_key) { + UPLL_LOG_DEBUG("vtn_ff_key NULL"); + return UPLL_RC_ERR_GENERIC; + } + uint8_t old_vtn_name[kMaxLenVtnName + 1], new_vtn_name[kMaxLenVtnName + 1]; + memset(old_vtn_name, 0, sizeof(old_vtn_name)); + memset(new_vtn_name, 0, sizeof(new_vtn_name)); + uuu::upll_strncpy(old_vtn_name, vtn_ff_key->vtn_key.vtn_name, + kMaxLenVtnName+1); /* check if object is renamed in the corresponding Rename Tbl * if "renamed" create the object by the UNC name. @@ -2510,6 +2602,8 @@ upll_rc_t VtnFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return result_code; } UPLL_LOG_TRACE("ikey After GetRenamedUncKey %s", ikey->ToStrAll().c_str()); + uuu::upll_strncpy(new_vtn_name, vtn_ff_key->vtn_key.vtn_name, + kMaxLenVtnName+1); result_code = SetValidAudit(ikey); if (UPLL_RC_SUCCESS != result_code) { @@ -2522,13 +2616,17 @@ upll_rc_t VtnFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Update record Err in vtnff MainTbl(%d)", - result_code); + UPLL_LOG_DEBUG("Update record Err in vtnff MainTbl(%d)", + result_code); return result_code; } if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, MAINTBL); + result_code = UpdateConfigDB(ikey, + UPLL_DT_AUDIT, + UNC_OP_CREATE, + dmi, + MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB Failed err_code %d", result_code); return result_code; @@ -2536,64 +2634,180 @@ upll_rc_t VtnFlowFilterMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, } std::list list_ctrlr_dom; - upll_rc_t vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, UPLL_DT_AUDIT, dmi, list_ctrlr_dom); - if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && - (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", - vtn_ctrlr_span_rt_code); - for (std::list::iterator it= list_ctrlr_dom.begin(); - it != list_ctrlr_dom.end(); ++it) { - free(it->ctrlr); - free(it->domain); + upll_rc_t vtn_ctrlr_span_rt_code; + MoMgrImpl *mgr = static_cast((const_cast(GetMoManager( + UNC_KT_VTN)))); + UPLL_LOG_DEBUG(" old vtn name (%s), new vtn name (%s)", old_vtn_name, + new_vtn_name); + if (!(strcmp(reinterpret_cast(old_vtn_name), + reinterpret_cast(new_vtn_name)))) { + std::list tmp_list_ctrlr_dom; + vtn_ctrlr_span_rt_code = GetVtnControllerSpan(ikey, + UPLL_DT_AUDIT, + dmi, + tmp_list_ctrlr_dom); + if ((vtn_ctrlr_span_rt_code != UPLL_RC_SUCCESS) && + (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG(" GetVtnControllerSpan error code (%d)", + vtn_ctrlr_span_rt_code); + FREE_LIST_CTRLR(list_ctrlr_dom); + return vtn_ctrlr_span_rt_code; + } + if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + ConfigKeyVal *unc_key = NULL; + result_code = mgr->GetChildConfigKey(unc_key, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + val_rename_vtn *rename_vtn_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + if (!rename_vtn_key) { + UPLL_LOG_DEBUG("rename_vtn_key NULL"); + DELETE_IF_NOT_NULL(unc_key); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(rename_vtn_key->new_name, + old_vtn_name, + (kMaxLenVtnName + 1)); + rename_vtn_key->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn_key); + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr|kOpMatchDomain, + kOpInOutNone }; + std::list::iterator it; + + for (it = tmp_list_ctrlr_dom.begin(); + it != tmp_list_ctrlr_dom.end(); it++) { + SET_USER_DATA_CTRLR_DOMAIN(unc_key, *it); + result_code = mgr->ReadConfigDB(unc_key, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(unc_key); + mgr = NULL; + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { + continue; + } + list_ctrlr_dom.push_back(*it); + tmp_list_ctrlr_dom.clear(); + break; + } + DELETE_IF_NOT_NULL(unc_key); + } + } else { + controller_domain_t tmp_ctrlr_dom, ctrlr_dom; + tmp_ctrlr_dom.ctrlr = NULL; + tmp_ctrlr_dom.domain = NULL; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + ConfigKeyVal *unc_key = NULL; + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr, + kOpInOutDomain|kOpInOutCtrlr }; + MoMgrImpl *mgr = static_cast + ((const_cast(GetMoManager( + UNC_KT_VTN)))); + result_code = mgr->GetChildConfigKey(unc_key, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail"); + return result_code; + } + val_rename_vtn *rename_vtn_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + if (!rename_vtn_key) { + UPLL_LOG_DEBUG("rename_vtn_key NULL"); + DELETE_IF_NOT_NULL(unc_key); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(rename_vtn_key->new_name, + old_vtn_name, + (kMaxLenVtnName + 1)); + rename_vtn_key->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + + SET_USER_DATA_CTRLR(unc_key, ctrlr_id); + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn_key); + result_code = mgr->ReadConfigDB(unc_key, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(unc_key); + mgr = NULL; + return result_code; } - return vtn_ctrlr_span_rt_code; - } + ctrlr_dom.ctrlr = reinterpret_cast + (ConfigKeyVal::Malloc((kMaxLenCtrlrId + 1))); + ctrlr_dom.domain = reinterpret_cast + (ConfigKeyVal::Malloc((kMaxLenDomainId + 1))); + + GET_USER_DATA_CTRLR_DOMAIN(unc_key, tmp_ctrlr_dom); + uuu::upll_strncpy(ctrlr_dom.ctrlr, tmp_ctrlr_dom.ctrlr, + (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(ctrlr_dom.domain, tmp_ctrlr_dom.domain, + (kMaxLenDomainId + 1)); + + UPLL_LOG_TRACE(" ctrlr = %s, dom = %s ", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + list_ctrlr_dom.push_back(ctrlr_dom); + vtn_ctrlr_span_rt_code = UPLL_RC_SUCCESS; + DELETE_IF_NOT_NULL(unc_key); + } // create a record in CANDIDATE DB for controller Table if (vtn_ctrlr_span_rt_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { result_code = UpdateControllerTable(ikey, UNC_OP_CREATE, UPLL_DT_AUDIT, dmi, list_ctrlr_dom); - - } - for (std::list::iterator it= list_ctrlr_dom.begin(); - it != list_ctrlr_dom.end(); ++it) { - free(it->ctrlr); - free(it->domain); } - + FREE_LIST_CTRLR(list_ctrlr_dom); return result_code; } -upll_rc_t VtnFlowFilterMoMgr::CopyVtnFlowFilterControllerCkv(ConfigKeyVal *ikey, - ConfigKeyVal *&okey) { +upll_rc_t VtnFlowFilterMoMgr::CopyVtnFlowFilterControllerCkv( + ConfigKeyVal *ikey, + ConfigKeyVal *&okey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; // controller_domain ctrlr_dom; key_vtn_flowfilter_t *key_tmp = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); if (!key_tmp) - return result_code; + return result_code; key_vtn_flowfilter_t *vtn_flowfilterkey = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_flowfilter_t))); memcpy(vtn_flowfilterkey, key_tmp, sizeof(key_vtn_flowfilter_t)); ConfigVal *tmp1 = NULL; - val_vtn_flowfilter_ctrlr_t *ival = reinterpret_cast - (GetVal(ikey)); - if (!ival) - return UPLL_RC_SUCCESS; - - val_vtn_flowfilter_ctrlr_t *val_tmp = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_ctrlr_t))); + val_vtn_flowfilter_ctrlr_t *ival = reinterpret_cast + + (GetVal(ikey)); + if (!ival) { + FREE_IF_NOT_NULL(vtn_flowfilterkey); // Addressed coverity RESOURCE_LEAK + return UPLL_RC_SUCCESS; + } + val_vtn_flowfilter_ctrlr_t *val_tmp = reinterpret_cast + + (ConfigKeyVal::Malloc(sizeof(val_vtn_flowfilter_ctrlr_t))); memcpy(val_tmp, ival, sizeof(val_vtn_flowfilter_ctrlr_t)); tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, val_tmp); - okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, IpctSt::kIpcStKeyVtnFlowfilter, - vtn_flowfilterkey, tmp1); + okey = new ConfigKeyVal(UNC_KT_VTN_FLOWFILTER, + IpctSt::kIpcStKeyVtnFlowfilter, + vtn_flowfilterkey, tmp1); SET_USER_DATA(okey, ikey); return UPLL_RC_SUCCESS; diff --git a/coordinator/modules/upll/vtn_flowfilter_momgr.hh b/coordinator/modules/upll/vtn_flowfilter_momgr.hh index 5722e137..5a0fbb5c 100644 --- a/coordinator/modules/upll/vtn_flowfilter_momgr.hh +++ b/coordinator/modules/upll/vtn_flowfilter_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,77 +20,77 @@ namespace upll { namespace kt_momgr { /* This file declares interfaces for keyType KT_VRT_IF_FLOWFILTER */ -/** - * @brief VrtIfFlowFilterMoMgr class handles all the request - * received from service. - */ + /** + * @brief VrtIfFlowFilterMoMgr class handles all the request + * received from service. + */ -class VtnFlowFilterMoMgr : public MoMgrImpl { - private: - uint32_t cur_instance_count; + class VtnFlowFilterMoMgr : public MoMgrImpl { + private: static unc_key_type_t vtn_flowfilter_child[]; static BindInfo vtn_flowfilter_bind_info[]; static BindInfo vtn_flowfilter_ctrl_bind_info[]; static BindInfo vtn_flowfilter_maintbl_rename_bindinfo[]; static BindInfo vtn_flowfilter_ctrlrtbl_rename_bindinfo[]; /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VTN_FLOWFILTER/KT_VTN_FLOWFILTER_CONTROLLER keytype - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request - * structure - * @param[in] ConfigKeyVal key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn_flowfilter is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ + * @Brief Validates the syntax of the specified key and value structure + * for KT_VTN_FLOWFILTER/KT_VTN_FLOWFILTER_CONTROLLER keytype + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request + * structure + * @param[in] ConfigKeyVal key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn_flowfilter is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *key); /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] val_flowfilter_controller KT_FLOWFILTER_CONTROLLER value structure. - * @param[in] attrs pointer to controller attribute - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] val_flowfilter_controller KT_FLOWFILTER_CONTROLLER value structure. + * @param[in] attrs pointer to controller attribute + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute NOT_SUPPORTED. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ upll_rc_t ValVtnFlowfilterAttributeSupportCheck( val_flowfilter_controller_t *val_flowfilter_controller, const uint8_t* attrs); /** - * @Brief Checks if the specified key type(KT_VTN_FLOWFILTER_CONTROLLER) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] IpcReqRespHeader contains first 8 fields of input request - * structure - * @param[in] ConfigKeyVal contains key and value structure. - * @param[in] ctrlr_name controller_name - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ + * @Brief Checks if the specified key type(KT_VTN_FLOWFILTER_CONTROLLER) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] IpcReqRespHeader contains first 8 fields of input request + * structure + * @param[in] ConfigKeyVal contains key and value structure. + * @param[in] ctrlr_name controller_name + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char* ctrlr_name = NULL); + const char* ctrlr_name = NULL); /** - * @Brief Validates the syntax for KT_VTN_FLOWFILTER_CONTROLLER key structure. - * - * @param[in] key_vtn_flowfilter_controller - * KT_VTN_FLOWFILTER_CONTROLLER key structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ + * @Brief Validates the syntax for KT_VTN_FLOWFILTER_CONTROLLER key structure. + * + * @param[in] key_vtn_flowfilter_controller + * KT_VTN_FLOWFILTER_CONTROLLER key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ upll_rc_t ValidateVtnFlowfilterControllerValue( - val_flowfilter_controller_t *val_flowfilter_controller, uint32_t operation); + val_flowfilter_controller_t *val_flowfilter_controller, + uint32_t operation); upll_rc_t UpdateMainTbl(ConfigKeyVal *vtn_ff_key, unc_keytype_operation_t op, @@ -98,7 +98,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { ConfigKeyVal *nreq, DalDmlIntf *dmi); - public: + public: VtnFlowFilterMoMgr(); ~VtnFlowFilterMoMgr() { @@ -125,7 +125,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); - /** + /** * @brief Method used for ReadSiblingMo. * * @param[in] req Describes RequestResponderHeaderClass. @@ -144,7 +144,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @brief Method used for Validation before Merge. * * @param[in] ikey This Contains the pointer to the Class for which - fields have to be Validated before the Merge. + fields have to be Validated before the Merge. * @param[in] keytype Describes the keyType Information. * @param[in] dmi Pointer to DalDmlIntf Class. * @param[in] ctrlr_id Describes the Controller Name. @@ -176,8 +176,9 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { **/ upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi); + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag = false); /** * @brief Method used for Update Operation. @@ -230,9 +231,9 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @brief Method used to Duplicate the ConfigkeyVal. * * @param[out] okey This Contains the pointer to the Class for which - fields have to be updated with values from the Request. + fields have to be updated with values from the Request. * @param[in] req This Contains the pointer to the Class which is - used for the Duplication . + used for the Duplication . * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_GENERIC Failure @@ -250,7 +251,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @retval UPLL_RC_SUCCESS Validation succeeded. * @retval UPLL_RC_ERR_GENERIC Validation failure. * */ - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, DalDmlIntf *dmi, IpcReqRespHeader *req = NULL); @@ -269,22 +270,22 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * * @retval UPLL_RC_SUCCESS Successful Completion **/ - upll_rc_t GetValid(void*val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - // no valid parameter - valid = NULL; - return UPLL_RC_SUCCESS; - } + upll_rc_t GetValid(void*val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + // no valid parameter + valid = NULL; + return UPLL_RC_SUCCESS; + } /** * @brief Method used for RenamedControllerkey(PfcName). * * @param[out] ikey Contains the Pointer to ConfigkeyVal - Class and contains the Pfc Name. + Class and contains the Pfc Name. * @param[in] dt_type Describes Configiration Information. * @param[in] dmi Pointer to DalDmlIntf Class. * @param[in] ctrlr__name Describes the Controller Name. @@ -304,9 +305,9 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @brief Method used to get the RenamedUncKey. * * @param[out] ikey This Contains the pointer to - the Class for which fields have - to be updated with values from - the parent Class. + the Class for which fields have + to be updated with values from + the parent Class. * @param[in] dt_type Describes Configiration Information. * @param[in] dmi Pointer to DalDmlIntf Class. * @param[in] ctrlr_id Describes the Controller Name. @@ -327,17 +328,18 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @param[in/out] ckv_running ConfigKeyVal instance. * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_GENERIC Returned Generic Error. **/ - upll_rc_t UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi); + upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, + DalDmlIntf *dmi); /** * @brief Method used for Trasaction Vote Operation. * @@ -371,7 +373,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { upll_rc_t TxCopyCandidateToRunning( unc_key_type_t keytype, CtrlrCommitStatusList *ctrlr_commit_status, DalDmlIntf *dmi); - /** + /** * @brief Method to Update the controller details . * * @param[out] ck_main Contains the Pointer to ConfigkeyVal Class @@ -390,7 +392,9 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { IpcResponse *ipc_resp, unc_keytype_operation_t op, DalDmlIntf *dmi, - controller_domain *ctrlr_dom); + controller_domain *ctrlr_domi, + set *affected_ctrlr_set, + bool *driver_resp); /** * @brief Update controller with the new created / updated / deleted * configuration between the Candidate and the Running @@ -424,7 +428,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @brief Allocates Memory for the Incoming Pointer to the Class. * * @param[out] ck_val This Contains the pointer to the Class for - which memory has to be allocated. + which memory has to be allocated. * @param[in] dt_type Describes Configiration Information. * @param[in] tbl Describes the Destination table Information. * @@ -451,7 +455,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { upll_rc_t ReadRecord(IpcReqRespHeader *req, ConfigKeyVal *ikey, DalDmlIntf *dmi); - /** + /** * @Brief Method used to get the Bind Info Structure for Rename Purpose. * * @param[in] key_type Describes the KT Information. @@ -462,7 +466,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @retval true Successful Completion. * @retval false Failure. */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, MoMgrTables tbl); @@ -476,7 +480,7 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * @retval UPLL_RC_SUCCESS Successfull Completion. * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); /** @@ -533,12 +537,12 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { * */ upll_rc_t UpdateControllerTableForVtn( - uint8_t* vtn_name, - controller_domain *ctrlr_dom, - unc_keytype_operation_t op, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t flag); + uint8_t* vtn_name, + controller_domain *ctrlr_dom, + unc_keytype_operation_t op, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t flag); upll_rc_t UpdateControllerTable( ConfigKeyVal *ikey, @@ -564,18 +568,18 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { DalDmlIntf *dmi); upll_rc_t GetDiffRecord(ConfigKeyVal *ckv_running, - ConfigKeyVal *ckv_audit, - uuc::UpdateCtrlrPhase phase, MoMgrTables tbl, - ConfigKeyVal *&ckv_driver_req, - DalDmlIntf *dmi, - bool &invalid_attr); + ConfigKeyVal *ckv_audit, + uuc::UpdateCtrlrPhase phase, MoMgrTables tbl, + ConfigKeyVal *&ckv_driver_req, + DalDmlIntf *dmi, + bool &invalid_attr); upll_rc_t DeleteChildrenPOM(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, DalDmlIntf *dmi); upll_rc_t SetVtnFFConsolidatedStatus(ConfigKeyVal *ikey, uint8_t *ctrlr_id, - DalDmlIntf *dmi); + DalDmlIntf *dmi); upll_rc_t SetValidAudit(ConfigKeyVal *&ikey); bool FilterAttributes(void *&val1, @@ -584,23 +588,23 @@ class VtnFlowFilterMoMgr : public MoMgrImpl { unc_keytype_operation_t op); upll_rc_t CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id); + DalDmlIntf *dmi, + const char *ctrlr_id); upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req); + DalDmlIntf *dmi, + IpcReqRespHeader *req); upll_rc_t CopyVtnFlowFilterControllerCkv(ConfigKeyVal *ikey, - ConfigKeyVal *&okey); -}; + ConfigKeyVal *&okey); + }; -typedef struct val_vtn_flowfilter_ctrlr { + typedef struct val_vtn_flowfilter_ctrlr { uint8_t valid[1]; -// uint8_t input_direction; + // uint8_t input_direction; unc_keytype_configstatus_t cs_row_status; uint8_t flags; -} val_vtn_flowfilter_ctrlr_t; + } val_vtn_flowfilter_ctrlr_t; } // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vtn_momgr.cc b/coordinator/modules/upll/vtn_momgr.cc index 48d4ae9f..f7ac642b 100644 --- a/coordinator/modules/upll/vtn_momgr.cc +++ b/coordinator/modules/upll/vtn_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -11,6 +11,7 @@ #include "vbr_if_momgr.hh" #include "vnode_momgr.hh" #include "vlink_momgr.hh" +#include "vlanmap_momgr.hh" #define NUM_KEY_COL 3 @@ -21,4609 +22,5821 @@ namespace upll { namespace kt_momgr { BindInfo VtnMoMgr::vtn_bind_info[] = { { uudst::vtn::kDbiVtnName, CFG_KEY, - offsetof(key_vtn_t, vtn_name), - uud::kDalChar, 32 }, - { uudst::vtn::kDbiVtnDesc, CFG_VAL, - offsetof(val_vtn, description), - uud::kDalChar, 128 }, - { uudst::vtn::kDbiVtnOperStatus, ST_VAL, - offsetof(val_vtn_st, oper_status), - uud::kDalUint8, 1 }, - { uudst::vtn::kDbiVtnAlarmStatus, ST_VAL, - offsetof(val_vtn_st, alarm_status), - uud::kDalUint8, 1 }, - { uudst::vtn::kDbiDownCount, ST_VAL, - offsetof(val_db_vtn_st, down_count), - uud::kDalUint32, 1 }, - { uudst::vtn::kDbiVtnCreationTime, - ST_VAL, - offsetof(val_vtn_st, creation_time), - uud::kDalUint64, 1 }, - { uudst::vtn::kDbiVtnLastUpdatedTime, - ST_VAL, offsetof(val_vtn_st, - last_updated_time), - uud::kDalUint64, 1 }, - { uudst::vtn::kDbiVtnFlags, CK_VAL, - offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 }, - { uudst::vtn::kDbiValidVtnDesc, - CFG_META_VAL, offsetof(val_vtn, - valid[0]), - uud::kDalUint8, 1 }, - { uudst::vtn::kDbiValidVtnOperStatus, - ST_META_VAL, offsetof(val_vtn_st, - valid[0]), - uud::kDalUint8, 1 }, - { uudst::vtn::kDbiValidVtnAlarmStatus, - ST_META_VAL, offsetof(val_vtn_st, - valid[1]), - uud::kDalUint8, 1 }, - { uudst::vtn::kDbiValidVtnCreationTime, - ST_META_VAL, offsetof(val_vtn_st, - valid[2]), - uud::kDalUint8, 1 }, - { uudst::vtn:: - kDbiValidVtnLastUpdatedTime, - ST_META_VAL, offsetof(val_vtn_st, - valid[3]), - uud::kDalUint8, 1 }, - { uudst::vtn::kDbiVtnCsRowStatus, CS_VAL, - offsetof(val_vtn, cs_row_status), - uud::kDalChar, 1 }, - { uudst::vtn::kDbiVtnCsDesc, CS_VAL, - offsetof(val_vtn, cs_attr), - uud::kDalUint8, 1 } }; + offsetof(key_vtn_t, vtn_name), + uud::kDalChar, 32 }, + { uudst::vtn::kDbiVtnDesc, CFG_VAL, + offsetof(val_vtn, description), + uud::kDalChar, 128 }, + { uudst::vtn::kDbiVtnOperStatus, ST_VAL, + offsetof(val_vtn_st, oper_status), + uud::kDalUint8, 1 }, + { uudst::vtn::kDbiVtnAlarmStatus, ST_VAL, + offsetof(val_vtn_st, alarm_status), + uud::kDalUint8, 1 }, + { uudst::vtn::kDbiDownCount, ST_VAL, + offsetof(val_db_vtn_st, down_count), + uud::kDalUint32, 1 }, + { uudst::vtn::kDbiVtnCreationTime, + ST_VAL, + offsetof(val_vtn_st, creation_time), + uud::kDalUint64, 1 }, + { uudst::vtn::kDbiVtnLastUpdatedTime, + ST_VAL, offsetof(val_vtn_st, + last_updated_time), + uud::kDalUint64, 1 }, + { uudst::vtn::kDbiVtnFlags, CK_VAL, + offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 }, + { uudst::vtn::kDbiValidVtnDesc, + CFG_META_VAL, offsetof(val_vtn, + valid[0]), + uud::kDalUint8, 1 }, + { uudst::vtn::kDbiValidVtnOperStatus, + ST_META_VAL, offsetof(val_vtn_st, + valid[0]), + uud::kDalUint8, 1 }, + { uudst::vtn::kDbiValidVtnAlarmStatus, + ST_META_VAL, offsetof(val_vtn_st, + valid[1]), + uud::kDalUint8, 1 }, + { uudst::vtn::kDbiValidVtnCreationTime, + ST_META_VAL, offsetof(val_vtn_st, + valid[2]), + uud::kDalUint8, 1 }, + { uudst::vtn:: + kDbiValidVtnLastUpdatedTime, + ST_META_VAL, offsetof(val_vtn_st, + valid[3]), + uud::kDalUint8, 1 }, + { uudst::vtn::kDbiVtnCsRowStatus, CS_VAL, + offsetof(val_vtn, cs_row_status), + uud::kDalChar, 1 }, + { uudst::vtn::kDbiVtnCsDesc, CS_VAL, + offsetof(val_vtn, cs_attr), + uud::kDalUint8, 1 } }; BindInfo VtnMoMgr::vtn_rename_bind_info[] = { { uudst::vtn_rename:: - kDbiUncVtnName, - CFG_KEY, offsetof(key_vtn, - vtn_name), - uud::kDalChar, 32 }, - { uudst::vtn_rename:: - kDbiControllerName, - CK_VAL, offsetof( - key_user_data_t, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vtn_rename::kDbiDomainId, - CK_VAL, offsetof( - key_user_data_t, domain_id), - uud::kDalChar, 32 }, - { uudst::vtn_rename:: - kDbiCtrlrVtnName, - CFG_VAL, offsetof( - val_rename_vtn, new_name), - uud::kDalChar, 32 } }; - -BindInfo VtnMoMgr::vtn_controller_bind_info[] = { - { uudst::vtn_controller::kDbiVtnName, CFG_KEY, offsetof(key_vtn, vtn_name), + kDbiUncVtnName, + CFG_KEY, offsetof(key_vtn, + vtn_name), uud::kDalChar, 32 }, - { uudst::vtn_controller::kDbiControllerName, CK_VAL, - offsetof(key_user_data_t, ctrlr_id), - uud::kDalChar, 32 }, - { uudst::vtn_controller::kDbiDomainId, CK_VAL, offsetof(key_user_data_t, - domain_id), - uud::kDalChar, 32 }, - { uudst::vtn_controller::kDbiOperStatus, CFG_ST_VAL, offsetof(val_vtn_ctrlr, - oper_status), - uud::kDalUint8, 1 }, - { uudst::vtn_controller::kDbiAlarmStatus, CFG_ST_VAL, - offsetof(val_vtn_ctrlr, alarm_status), - uud::kDalUint8, 1 }, - { uudst::vtn_controller::kDbiDownCount, CFG_ST_VAL, offsetof(val_vtn_ctrlr, - down_count), - uud::kDalUint32, 1 }, - { uudst::vtn_controller::kDbiRefCount, CFG_VAL, offsetof(val_vtn_ctrlr, - ref_count), uud::kDalUint32, 1 }, - { uudst::vtn_controller::kDbiValidOperStatus, CFG_ST_META_VAL, - offsetof(val_vtn_ctrlr, valid[0]), - uud::kDalUint8, 1 }, - { uudst::vtn_controller::kDbiValidAlarmStatus, CFG_ST_META_VAL, offsetof( - val_vtn_ctrlr, valid[1]), - uud::kDalUint8, 1 }, - { uudst::vtn_controller::kDbiCsDesc, CS_VAL, offsetof(val_vtn_ctrlr, - cs_attr[0]), - uud::kDalUint8, 1 }, - { uudst::vtn_controller::kDbiCsRowstatus, CS_VAL, offsetof(val_vtn_ctrlr, - cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vtn_controller::kDbiVtnCtrlrFlags, CK_VAL, - offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } }; - -BindInfo VtnMoMgr::key_vtn_maintbl_bind_info[] = { - { uudst::vtn::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vtn_t, vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vtn::kDbiVtnName, CFG_INPUT_KEY, offsetof(key_rename_vnode_info_t, - new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vtn::kDbiVtnFlags, CK_VAL, offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } -}; - -BindInfo VtnMoMgr::key_vtn_ctrlrtbl_bind_info[] = { - { uudst::vtn_controller::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vtn_t, - vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vtn_controller::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vtn_controller::kDbiVtnCtrlrFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } }; -BindInfo VtnMoMgr::key_vtn_renametbl_bind_info[] = { - { uudst::vtn_rename::kDbiUncVtnName, CFG_MATCH_KEY, offsetof(key_vtn_t, - vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vtn_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, }; - -unc_key_type_t VtnMoMgr::vtn_child[] = { UNC_KT_VLINK, UNC_KT_VBRIDGE, - UNC_KT_VROUTER, UNC_KT_VUNKNOWN, - UNC_KT_VTEP_GRP, - UNC_KT_VTEP, UNC_KT_VTUNNEL, - UNC_KT_VTN_FLOWFILTER, - UNC_KT_VTN_POLICINGMAP }; - VtnMoMgr::VtnMoMgr() : MoMgrImpl() { - UPLL_FUNC_TRACE; - ntable = MAX_MOMGR_TBLS; - table = new Table *[ntable]; - table[MAINTBL] = new Table(uudst::kDbiVtnTbl, UNC_KT_VTN, vtn_bind_info, - IpctSt::kIpcStKeyVtn, IpctSt::kIpcStValVtn, - uudst::vtn::kDbiVtnNumCols); - table[RENAMETBL] = new Table(uudst::kDbiVtnRenameTbl, UNC_KT_VTN, - vtn_rename_bind_info, IpctSt::kIpcStKeyVtn, IpctSt::kIpcStValRenameVtn, - uudst::vtn_rename::kDbiVtnRenameNumCols); - table[CTRLRTBL] = new Table(uudst::kDbiVtnCtrlrTbl, UNC_KT_VTN, - vtn_controller_bind_info, IpctSt::kIpcStKeyVtn, IpctSt::kIpcInvalidStNum, - uudst::vtn_controller::kDbiVtnCtrlrNumCols); - nchild = sizeof(vtn_child) / sizeof(*vtn_child); - child = vtn_child; -} - - -/* - * Based on the key type the bind info will pass - */ - -bool VtnMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - nattr = NUM_KEY_COL; - if (MAINTBL == tbl) - binfo = key_vtn_maintbl_bind_info; - if (CTRLRTBL == tbl) - binfo = key_vtn_ctrlrtbl_bind_info; - if (RENAMETBL == tbl) { - nattr = 2; - binfo = key_vtn_renametbl_bind_info; - } - return PFC_TRUE; -} - - -upll_rc_t VtnMoMgr::ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - if (ikey == NULL) return UPLL_RC_ERR_GENERIC; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (ikey->get_key_type() != UNC_KT_VTN) return UPLL_RC_ERR_GENERIC; - return result_code; -} - -bool VtnMoMgr::IsValidKey(void *key, - uint64_t index) { - UPLL_FUNC_TRACE; - key_vtn *vtn_key = reinterpret_cast(key); - upll_rc_t ret_val = UPLL_RC_SUCCESS; - - ret_val = ValidateKey(reinterpret_cast(vtn_key->vtn_name), - kMinLenVtnName, kMaxLenVtnName); - - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); - return false; - } - return true; -} - -upll_rc_t VtnMoMgr::GetValid(void *val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vtn::kDbiVtnOperStatus: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_OPER_STATUS_VS]; - break; - case uudst::vtn::kDbiVtnAlarmStatus: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_ALARM_STATUS_VS]; - break; - case uudst::vtn::kDbiDownCount: - valid = NULL; - break; - case uudst::vtn::kDbiVtnCreationTime: - UPLL_LOG_DEBUG("Valid calling fro VtnCreation time "); - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_CREATION_TIME_VS]; - break; - case uudst::vtn::kDbiVtnLastUpdatedTime: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_LAST_UPDATE_TIME_VS]; - break; - case uudst::vtn::kDbiVtnDesc: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_DESC_VTN]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } - } else if (tbl == RENAMETBL) { - switch (indx) { - case uudst::vtn_rename::kDbiCtrlrVtnName: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_NEW_NAME_RVTN]; - break; - default: - break; - } - } else if (tbl == CTRLRTBL) { - valid = (reinterpret_cast(val))->valid; - switch (indx) { - case uudst::vtn_controller::kDbiAlarmStatus: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_ALARM_STATUS_VS]; - break; - case uudst::vtn_controller::kDbiOperStatus: - valid = &(reinterpret_cast - (val))->valid[UPLL_IDX_OPER_STATUS_VS]; - break; - case uudst::vtn_controller::kDbiDownCount: - case uudst::vtn_controller::kDbiRefCount: - valid = NULL; - break; - default: - return UPLL_RC_ERR_GENERIC; - } - } else { - valid = NULL; - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - void *val; // *ck_nxtval; - if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; - switch (tbl) { - case MAINTBL: - val = ConfigKeyVal::Malloc(sizeof(val_vtn)); - ck_val = new ConfigVal(IpctSt::kIpcStValVtn, val); - if (dt_type == UPLL_DT_STATE) { - val = ConfigKeyVal::Malloc(sizeof(val_db_vtn_st)); - ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ck_val->AppendCfgVal(ck_nxtval); - } - break; - case RENAMETBL: - val = ConfigKeyVal::Malloc(sizeof(val_rename_vtn)); - ck_val = new ConfigVal(IpctSt::kIpcStValRenameVtn, val); - break; - case CTRLRTBL: - val = ConfigKeyVal::Malloc(sizeof(val_vtn_ctrlr)); - ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); - break; - default: - val = NULL; - break; - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::DupConfigKeyValVtnMapping(ConfigKeyVal *&okey, - ConfigKeyVal *req) { - UPLL_FUNC_TRACE; - void *tkey = req ? (req)->get_key() : NULL; - if (tkey == NULL) { - UPLL_LOG_INFO("Input Configkeyval or key is Null"); - return UPLL_RC_ERR_GENERIC; - } - if (okey != NULL) { - UPLL_LOG_INFO("okey is Not Null"); - return UPLL_RC_ERR_GENERIC; - } - ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); - val_vtn_mapping_controller_st_t *vtn_map = NULL; - if (tmp) { - val_vtn_mapping_controller_st_t *ival = - reinterpret_cast(GetVal(req)); - vtn_map = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_vtn_mapping_controller_st_t))); - memcpy(reinterpret_cast(vtn_map), reinterpret_cast(ival), - sizeof(val_vtn_mapping_controller_st_t)); - tmp1 = new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, vtn_map); - } - key_vtn_controller *ikey = reinterpret_cast(tkey); - key_vtn_controller *key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_vtn_controller))); - memcpy(reinterpret_cast(key), reinterpret_cast(ikey), - sizeof(key_vtn_controller)); - okey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, - IpctSt::kIpcStKeyVtnController, key, tmp1); - SET_USER_DATA(okey, req) - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::DupConfigKeyValVtnStation(ConfigKeyVal *&okey, - ConfigKeyVal *req) { - UPLL_FUNC_TRACE; - void *tkey = req ? (req)->get_key() : NULL; - if (tkey == NULL) { - UPLL_LOG_INFO("Input Configkeyval or key is Null"); - return UPLL_RC_ERR_GENERIC; - } - if (okey != NULL) { - UPLL_LOG_INFO("okey is Not Null"); - return UPLL_RC_ERR_GENERIC; - } - ConfigVal *tmp1 = NULL, *tmp = req->get_cfg_val(); - val_vtnstation_controller_st *vtnstation = NULL; - void *val_nxt = NULL; - for (; tmp ; tmp = tmp->get_next_cfg_val()) { - if (tmp->get_st_num() == IpctSt::kIpcStValVtnstationControllerSt) { - val_vtnstation_controller_st *ival = - reinterpret_cast(GetVal(req)); - vtnstation = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_vtnstation_controller_st))); - memcpy(reinterpret_cast(vtnstation), reinterpret_cast - (ival), sizeof(val_vtnstation_controller_st)); - if (!tmp1) - tmp1 = new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, vtnstation); - } else if (tmp->get_st_num() == IpctSt::kIpcStIpv4) { - val_nxt = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(struct in_addr))); - memcpy(val_nxt, reinterpret_cast(tmp->get_val()), - sizeof(struct in_addr)); - if (!tmp1) { - UPLL_LOG_ERROR("val_vtnstation_controller_st is Null"); - ConfigKeyVal::Free(val_nxt); - return UPLL_RC_ERR_BAD_REQUEST; - } - tmp1->AppendCfgVal(new ConfigVal(IpctSt::kIpcStIpv4, val_nxt)); - } else if (tmp->get_st_num() == IpctSt::kIpcStIpv6) { - val_nxt = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(struct in6_addr))); - memcpy(val_nxt, reinterpret_cast(tmp->get_val()), - sizeof(struct in6_addr)); - if (!tmp1) { - UPLL_LOG_ERROR("val_vtnstation_controller_st is Null"); - ConfigKeyVal::Free(val_nxt); - return UPLL_RC_ERR_BAD_REQUEST; - } - tmp1->AppendCfgVal(new ConfigVal(IpctSt::kIpcStIpv6, val_nxt)); - } - } - key_vtnstation_controller *ikey = + { uudst::vtn_rename:: + kDbiControllerName, + CK_VAL, offsetof( + key_user_data_t, ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vtn_rename::kDbiDomainId, + CK_VAL, offsetof( + key_user_data_t, domain_id), + uud::kDalChar, 32 }, + { uudst::vtn_rename:: + kDbiCtrlrVtnName, + CFG_VAL, offsetof( + val_rename_vtn, new_name), + uud::kDalChar, 32 } }; + + BindInfo VtnMoMgr::vtn_controller_bind_info[] = { + { uudst::vtn_controller::kDbiVtnName, + CFG_KEY, + offsetof(key_vtn, vtn_name), + uud::kDalChar, 32 }, + { uudst::vtn_controller::kDbiControllerName, CK_VAL, + offsetof(key_user_data_t, ctrlr_id), + uud::kDalChar, 32 }, + { uudst::vtn_controller::kDbiDomainId, + CK_VAL, + offsetof(key_user_data_t, + domain_id), + uud::kDalChar, 32 }, + { uudst::vtn_controller::kDbiOperStatus, + CFG_ST_VAL, offsetof(val_vtn_ctrlr, + oper_status), + uud::kDalUint8, 1 }, + { uudst::vtn_controller::kDbiAlarmStatus, CFG_ST_VAL, + offsetof(val_vtn_ctrlr, alarm_status), + uud::kDalUint8, 1 }, + { uudst::vtn_controller::kDbiDownCount, + CFG_ST_VAL, offsetof(val_vtn_ctrlr, + down_count), + uud::kDalUint32, 1 }, + { uudst::vtn_controller::kDbiRefCount, + CFG_VAL, offsetof(val_vtn_ctrlr, + ref_count), + uud::kDalUint32, 1 }, + { uudst::vtn_controller::kDbiValidOperStatus, + CFG_ST_META_VAL, + offsetof(val_vtn_ctrlr, valid[0]), + uud::kDalUint8, 1 }, + { uudst::vtn_controller::kDbiValidAlarmStatus, + CFG_ST_META_VAL, + offsetof( + val_vtn_ctrlr, + valid[1]), + uud::kDalUint8, 1 }, + { uudst::vtn_controller::kDbiCsDesc, + CS_VAL, offsetof(val_vtn_ctrlr, + cs_attr[0]), + uud::kDalUint8, 1 }, + { uudst::vtn_controller::kDbiCsRowstatus, + CS_VAL, offsetof(val_vtn_ctrlr, + cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vtn_controller::kDbiVtnCtrlrFlags, + CK_VAL, + offsetof(key_user_data_t, + flags), + uud::kDalUint8, 1 } }; + + BindInfo VtnMoMgr::key_vtn_maintbl_bind_info[] = { + { uudst::vtn::kDbiVtnName, + CFG_MATCH_KEY, + offsetof(key_vtn_t, + vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vtn::kDbiVtnName, + CFG_INPUT_KEY, + offsetof(key_rename_vnode_info_t, + new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vtn::kDbiVtnFlags, + CK_VAL, + offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 } + }; + + BindInfo VtnMoMgr::key_vtn_ctrlrtbl_bind_info[] = { + { uudst::vtn_controller::kDbiVtnName, + CFG_MATCH_KEY, + offsetof(key_vtn_t, + vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vtn_controller::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vtn_controller::kDbiVtnCtrlrFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 } }; + BindInfo VtnMoMgr::key_vtn_renametbl_bind_info[] = { + { uudst::vtn_rename::kDbiUncVtnName, + CFG_MATCH_KEY, offsetof(key_vtn_t, + vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vtn_rename::kDbiUncVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, }; + + unc_key_type_t VtnMoMgr::vtn_child[] = { UNC_KT_VBRIDGE, + UNC_KT_VROUTER, UNC_KT_VUNKNOWN, + /* For restore case: keeping VTEP before VTEP_GRP */ + UNC_KT_VTEP, UNC_KT_VTEP_GRP, + UNC_KT_VTUNNEL, + UNC_KT_VLINK, + UNC_KT_VTN_FLOWFILTER, + UNC_KT_VTN_POLICINGMAP }; + VtnMoMgr::VtnMoMgr() : MoMgrImpl() { + UPLL_FUNC_TRACE; + ntable = MAX_MOMGR_TBLS; + table = new Table *[ntable]; + table[MAINTBL] = new Table(uudst::kDbiVtnTbl, + UNC_KT_VTN, + vtn_bind_info, + IpctSt::kIpcStKeyVtn, + IpctSt::kIpcStValVtn, + uudst::vtn::kDbiVtnNumCols); + table[RENAMETBL] = new Table( + uudst::kDbiVtnRenameTbl, + UNC_KT_VTN, + vtn_rename_bind_info, + IpctSt::kIpcStKeyVtn, + IpctSt::kIpcStValRenameVtn, + uudst::vtn_rename::kDbiVtnRenameNumCols); + table[CTRLRTBL] = new Table( + uudst::kDbiVtnCtrlrTbl, UNC_KT_VTN, + vtn_controller_bind_info, + IpctSt::kIpcStKeyVtn, + IpctSt::kIpcInvalidStNum, + uudst::vtn_controller::kDbiVtnCtrlrNumCols); + nchild = sizeof(vtn_child) / sizeof(*vtn_child); + child = vtn_child; + } + + + /* + * Based on the key type the bind info will pass + */ + + bool VtnMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + nattr = NUM_KEY_COL; + if (MAINTBL == tbl) + binfo = key_vtn_maintbl_bind_info; + if (CTRLRTBL == tbl) + binfo = key_vtn_ctrlrtbl_bind_info; + if (RENAMETBL == tbl) { + nattr = 2; + binfo = key_vtn_renametbl_bind_info; + } + return PFC_TRUE; + } + + + upll_rc_t VtnMoMgr::ValidateAttribute(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req) { + UPLL_FUNC_TRACE; + if (ikey == NULL) return UPLL_RC_ERR_GENERIC; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (ikey->get_key_type() != UNC_KT_VTN) return UPLL_RC_ERR_GENERIC; + return result_code; + } + + bool VtnMoMgr::IsValidKey(void *key, + uint64_t index) { + UPLL_FUNC_TRACE; + key_vtn *vtn_key = reinterpret_cast(key); + upll_rc_t ret_val = UPLL_RC_SUCCESS; + + switch (index) { + case uudst::vtn::kDbiVtnName: + case uudst::vtn_rename::kDbiUncVtnName: + ret_val = ValidateKey( + reinterpret_cast(vtn_key->vtn_name), + kMinLenVtnName, kMaxLenVtnName); + break; + default: + ret_val = UPLL_RC_ERR_GENERIC; + } + + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_TRACE("index %"PFC_PFMT_u64" is not valid(%d)", + index, + ret_val); + return false; + } + return true; + } + + upll_rc_t VtnMoMgr::GetValid(void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vtn::kDbiVtnOperStatus: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_OPER_STATUS_VS]; + break; + case uudst::vtn::kDbiVtnAlarmStatus: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_ALARM_STATUS_VS]; + break; + case uudst::vtn::kDbiDownCount: + valid = NULL; + break; + case uudst::vtn::kDbiVtnCreationTime: + UPLL_LOG_DEBUG("Valid calling fro VtnCreation time "); + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_CREATION_TIME_VS]; + break; + case uudst::vtn::kDbiVtnLastUpdatedTime: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_LAST_UPDATE_TIME_VS]; + break; + case uudst::vtn::kDbiVtnDesc: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_DESC_VTN]; + break; + default: + return UPLL_RC_ERR_GENERIC; + } + } else if (tbl == RENAMETBL) { + switch (indx) { + case uudst::vtn_rename::kDbiCtrlrVtnName: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_NEW_NAME_RVTN]; + break; + default: + break; + } + } else if (tbl == CTRLRTBL) { + valid = (reinterpret_cast(val))->valid; + switch (indx) { + case uudst::vtn_controller::kDbiAlarmStatus: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_ALARM_STATUS_VS]; + break; + case uudst::vtn_controller::kDbiOperStatus: + valid = &(reinterpret_cast + (val))->valid[UPLL_IDX_OPER_STATUS_VS]; + break; + case uudst::vtn_controller::kDbiDownCount: + case uudst::vtn_controller::kDbiRefCount: + valid = NULL; + break; + default: + return UPLL_RC_ERR_GENERIC; + } + } else { + valid = NULL; + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::AllocVal(ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + void *val; // *ck_nxtval; + if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; + switch (tbl) { + case MAINTBL: + val = ConfigKeyVal::Malloc(sizeof(val_vtn)); + ck_val = new ConfigVal(IpctSt::kIpcStValVtn, val); + if (dt_type == UPLL_DT_STATE) { + val = ConfigKeyVal::Malloc(sizeof(val_db_vtn_st)); + ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVtnSt, + val); + ck_val->AppendCfgVal(ck_nxtval); + } + break; + case RENAMETBL: + val = ConfigKeyVal::Malloc(sizeof(val_rename_vtn)); + ck_val = new ConfigVal(IpctSt::kIpcStValRenameVtn, val); + break; + case CTRLRTBL: + val = ConfigKeyVal::Malloc(sizeof(val_vtn_ctrlr)); + ck_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val); + break; + default: + val = NULL; + break; + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::DupConfigKeyValVtnMapping(ConfigKeyVal *&okey, + ConfigKeyVal *req) { + UPLL_FUNC_TRACE; + void *tkey = req ? (req)->get_key() : NULL; + if (tkey == NULL) { + UPLL_LOG_INFO("Input Configkeyval or key is Null"); + return UPLL_RC_ERR_GENERIC; + } + if (okey != NULL) { + UPLL_LOG_INFO("okey is Not Null"); + return UPLL_RC_ERR_GENERIC; + } + ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); + val_vtn_mapping_controller_st_t *vtn_map = NULL; + if (tmp) { + val_vtn_mapping_controller_st_t *ival = + reinterpret_cast + (GetVal(req)); + vtn_map = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof + (val_vtn_mapping_controller_st_t))); + memcpy(reinterpret_cast(vtn_map), + reinterpret_cast(ival), + sizeof(val_vtn_mapping_controller_st_t)); + tmp1 = new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, + vtn_map); + } + key_vtn_controller *ikey = + reinterpret_cast(tkey); + key_vtn_controller *key = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(key_vtn_controller))); + memcpy(reinterpret_cast(key), + reinterpret_cast(ikey), + sizeof(key_vtn_controller)); + okey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, + key, + tmp1); + SET_USER_DATA(okey, req) + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::DupConfigKeyValVtnStation(ConfigKeyVal *&okey, + ConfigKeyVal *req) { + UPLL_FUNC_TRACE; + void *tkey = req ? (req)->get_key() : NULL; + if (tkey == NULL) { + UPLL_LOG_INFO("Input Configkeyval or key is Null"); + return UPLL_RC_ERR_GENERIC; + } + if (okey != NULL) { + UPLL_LOG_INFO("okey is Not Null"); + return UPLL_RC_ERR_GENERIC; + } + ConfigVal *tmp1 = NULL, *tmp = req->get_cfg_val(); + val_vtnstation_controller_st *vtnstation = NULL; + void *val_nxt = NULL; + for (; tmp ; tmp = tmp->get_next_cfg_val()) { + if (tmp->get_st_num() == + IpctSt::kIpcStValVtnstationControllerSt) { + val_vtnstation_controller_st *ival = + reinterpret_cast + (GetVal(req)); + vtnstation = reinterpret_cast + ( + ConfigKeyVal::Malloc(sizeof + (val_vtnstation_controller_st))); + memcpy(reinterpret_cast(vtnstation), + reinterpret_cast + (ival), sizeof(val_vtnstation_controller_st)); + if (!tmp1) { + tmp1 = new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, + vtnstation); + } else { + UPLL_LOG_ERROR("val_vtnstation_controller_st is not Null"); + ConfigKeyVal::Free(vtnstation); + delete tmp1; + return UPLL_RC_ERR_BAD_REQUEST; + } + } else if (tmp->get_st_num() == IpctSt::kIpcStIpv4) { + val_nxt = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(struct in_addr))); + memcpy(val_nxt, reinterpret_cast + (tmp->get_val()), + sizeof(struct in_addr)); + if (!tmp1) { + UPLL_LOG_ERROR("val_vtnstation_controller_st is Null"); + ConfigKeyVal::Free(val_nxt); + return UPLL_RC_ERR_BAD_REQUEST; + } + tmp1->AppendCfgVal(new ConfigVal(IpctSt::kIpcStIpv4, + val_nxt)); + } else if (tmp->get_st_num() == IpctSt::kIpcStIpv6) { + val_nxt = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(struct in6_addr))); + memcpy(val_nxt, reinterpret_cast + (tmp->get_val()), + sizeof(struct in6_addr)); + if (!tmp1) { + UPLL_LOG_ERROR("val_vtnstation_controller_st is Null"); + ConfigKeyVal::Free(val_nxt); + return UPLL_RC_ERR_BAD_REQUEST; + } + tmp1->AppendCfgVal(new ConfigVal(IpctSt::kIpcStIpv6, val_nxt)); + } + } + key_vtnstation_controller *ikey = reinterpret_cast(tkey); - key_vtnstation_controller *key = + key_vtnstation_controller *key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtnstation_controller))); - memcpy(reinterpret_cast(key), reinterpret_cast(ikey), - sizeof(key_vtnstation_controller)); - okey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, - IpctSt::kIpcStKeyVtnstationController, key, tmp1); - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (req == NULL) return UPLL_RC_ERR_GENERIC; - if (okey != NULL) return UPLL_RC_ERR_GENERIC; - if (req->get_key_type() != UNC_KT_VTN) return UPLL_RC_ERR_GENERIC; - ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); - val_vtn *vtn_val = NULL; - val_rename_vtn *rename_val = NULL; - val_vtn_ctrlr *ctrlr_val = NULL; - - if (tmp) { - if (tbl == MAINTBL) { - val_vtn *ival = reinterpret_cast(GetVal(req)); - - vtn_val = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_vtn))); - memcpy(reinterpret_cast(vtn_val), reinterpret_cast(ival), - sizeof(val_vtn)); - tmp1 = new ConfigVal(IpctSt::kIpcStValVtn, vtn_val); - } else if (tbl == RENAMETBL) { - val_rename_vtn *ival = reinterpret_cast(GetVal(req)); - rename_val = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); - memcpy(reinterpret_cast(rename_val), - reinterpret_cast(ival), sizeof(val_rename_vtn)); - tmp1 = new ConfigVal(IpctSt::kIpcStValRenameVtn, rename_val); - } else if (tbl == CTRLRTBL) { - val_vtn_ctrlr *ival = reinterpret_cast(GetVal(req)); - ctrlr_val = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_vtn_ctrlr))); - memcpy(reinterpret_cast(ctrlr_val), - reinterpret_cast(ival), sizeof(val_vtn_ctrlr)); - tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, ctrlr_val); - } - if (!tmp1) { - UPLL_LOG_ERROR("Memory Allocation failed for tmp1"); - FREE_IF_NOT_NULL(vtn_val); - FREE_IF_NOT_NULL(rename_val); - FREE_IF_NOT_NULL(ctrlr_val); - return UPLL_RC_ERR_GENERIC; - } - // error user data nneds to be copied - SET_USER_DATA(tmp1, tmp) - tmp = tmp->get_next_cfg_val(); - }; - if (tmp) { - if (tbl == MAINTBL) { - val_db_vtn_st *ival = reinterpret_cast(tmp->get_val()); - val_db_vtn_st *val_vtn = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_db_vtn_st))); - memset(reinterpret_cast(val_vtn), 0, sizeof(val_db_vtn_st)); - memcpy(reinterpret_cast(val_vtn), reinterpret_cast(ival), - sizeof(val_db_vtn_st)); - ConfigVal *tmp2 = new ConfigVal(IpctSt::kIpcStValVtnSt, val_vtn); - tmp1->AppendCfgVal(tmp2); - } - }; - void *tkey = (req != NULL) ? (req)->get_key() : NULL; - key_vtn *ikey = reinterpret_cast(tkey); - key_vtn *vtn_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_vtn))); - memcpy(reinterpret_cast(vtn_key), reinterpret_cast(ikey), - sizeof(key_vtn)); - okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, tmp1); - SET_USER_DATA(okey, req) - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; - if (!ikey) { - UPLL_LOG_DEBUG("Invalid ikey"); - return UPLL_RC_ERR_GENERIC; - } - while (ikey) { - ConfigVal *cval = ikey->get_cfg_val(); - if (!cval) { - UPLL_LOG_DEBUG("Config Val is Null"); - return UPLL_RC_ERR_GENERIC; - } - while (cval) { - if (IpctSt::kIpcStValVtnSt == cval->get_st_num()) { - val_vtn_st *vtn_val_st = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_st))); - val_db_vtn_st *db_vtn_val_st = reinterpret_cast - (cval->get_val()); - if (!db_vtn_val_st) { - FREE_IF_NOT_NULL(vtn_val_st); - return UPLL_RC_ERR_GENERIC; - } - memcpy(vtn_val_st, &(db_vtn_val_st->vtn_val_st), - sizeof(val_vtn_st)); - cval->SetVal(IpctSt::kIpcStValVtnSt, vtn_val_st); - } - cval = cval->get_next_cfg_val(); - } - ikey = ikey->get_next_cfg_key_val(); - } - UPLL_LOG_DEBUG("Exiting VtnMoMgr::AdaptValToVtnService"); - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - key_vtn_t *vtn_key = NULL; - if (okey && okey->get_key()) { - vtn_key = reinterpret_cast( - okey->get_key()); - } else { - vtn_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_vtn))); - } - void *pkey; - if (parent_key == NULL) { - if (!okey) - okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); - else if (okey->get_key() != vtn_key) - okey->SetKey(IpctSt::kIpcStKeyVtn,vtn_key); - return UPLL_RC_SUCCESS; - } else { - pkey = parent_key->get_key(); - } - if (!pkey) { - if (!okey || !(okey->get_key())) - ConfigKeyVal::Free(vtn_key); - return UPLL_RC_ERR_GENERIC; - } - switch (parent_key->get_key_type()) { - case UNC_KT_ROOT: - break; - case UNC_KT_VTN: - uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); - break; - case UNC_KT_VTN_MAPPING_CONTROLLER: - uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); - break; - default: - if (!okey || !(okey->get_key())) { - ConfigKeyVal::Free(vtn_key); - } - return UPLL_RC_ERR_GENERIC; - } - if (!okey) - okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); - else if (okey->get_key() != vtn_key) - okey->SetKey(IpctSt::kIpcStKeyVtn, vtn_key); - SET_USER_DATA(okey, parent_key); - return result_code; -} - -upll_rc_t VtnMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t *ctrlr_id) { - UPLL_FUNC_TRACE; - if (!ctrlr_key || !(ctrlr_key->get_key()) ) return UPLL_RC_ERR_GENERIC; - upll_rc_t result_code = UPLL_RC_SUCCESS; - key_vtn *ctrlr_vtn_key = reinterpret_cast(ctrlr_key->get_key()); - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; - ConfigKeyVal *unc_key = NULL; - val_rename_vtn *rename_vtn = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); - uuu::upll_strncpy(reinterpret_cast(rename_vtn->new_name), - reinterpret_cast(ctrlr_vtn_key->vtn_name), - kMaxLenVtnName+1); - rename_vtn->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - result_code = GetChildConfigKey(unc_key, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" GetChildConfigKey Failed with result_code %d", - result_code); - ConfigKeyVal::Free(rename_vtn); - return UPLL_RC_ERR_GENERIC; - } - unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn); - if (ctrlr_id) { - SET_USER_DATA_CTRLR(unc_key, ctrlr_id); - } else { - dbop.matchop = kOpMatchNone; - } - result_code = ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code == UPLL_RC_SUCCESS) { - key_vtn *vtn_key = reinterpret_cast(unc_key->get_key()); - if (strcmp(reinterpret_cast(ctrlr_vtn_key->vtn_name), - reinterpret_cast(vtn_key->vtn_name))) { - uuu::upll_strncpy(ctrlr_vtn_key->vtn_name, - vtn_key->vtn_name, - (kMaxLenVtnName+ 1)); - SET_USER_DATA_FLAGS(ctrlr_key, VTN_RENAME); - } - } - delete unc_key; - return result_code; -} - -upll_rc_t VtnMoMgr::GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; - uint8_t rename = 0; - key_vtn *ctrlr_key = NULL; - result_code = IsRenamed(ikey, dt_type, dmi, rename); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("IsRenamed failed. Result : %d", result_code); - return result_code; - } - if (!rename) return UPLL_RC_SUCCESS; - - /* vtn renamed */ - if (rename & 0x01) { - GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); - if (!ctrlr_dom->ctrlr || !ctrlr_dom->domain) { - UPLL_LOG_ERROR("Illegal controller domain"); - return UPLL_RC_ERR_GENERIC; - } - result_code = GetChildConfigKey(okey, ikey); - if (result_code != UPLL_RC_SUCCESS || !okey) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); - return result_code; - } - // SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag}; - result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", - result_code); - return result_code; - } - val_rename_vtn *rename_val = reinterpret_cast - (GetVal(okey)); - if (!rename_val) { - UPLL_LOG_DEBUG("Rename Val is Empty"); - return UPLL_RC_ERR_GENERIC; - } - ctrlr_key = reinterpret_cast(ikey->get_key()); - if (!ctrlr_key) return UPLL_RC_ERR_GENERIC; - memset(ctrlr_key, 0, sizeof(key_vtn)); - uuu::upll_strncpy(ctrlr_key->vtn_name, rename_val->new_name, - (kMaxLenVtnName + 1)); - SET_USER_DATA_FLAGS(ikey, VTN_RENAME); - delete okey; - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t -VtnMoMgr::GetControllerDomainSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code; - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain}; - result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); - return result_code; -} - -upll_rc_t -VtnMoMgr::GetControllerDomainSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - std::list &list_ctrlr_dom) { - UPLL_FUNC_TRACE; - upll_rc_t result_code; - ConfigKeyVal *tmp_ikey = NULL; - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain}; - result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); - if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Error in ReadConfigDb (%d)", result_code); - return result_code; - } - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG(" Vtn not yet associated with controller "); - return result_code; - } - - tmp_ikey = ikey; - while (NULL != tmp_ikey) { - ctrlr_dom.ctrlr = reinterpret_cast - (ConfigKeyVal::Malloc((kMaxLenCtrlrId + 1))); - ctrlr_dom.domain = reinterpret_cast - (ConfigKeyVal::Malloc((kMaxLenDomainId + 1))); - controller_domain_t tmp_ctrlr_dom; - tmp_ctrlr_dom.ctrlr = NULL; - tmp_ctrlr_dom.domain = NULL; - GET_USER_DATA_CTRLR_DOMAIN(tmp_ikey, tmp_ctrlr_dom); - UPLL_LOG_TRACE(" ctrlr = %s, dom = %s ", tmp_ctrlr_dom.ctrlr, - tmp_ctrlr_dom.domain); - uuu::upll_strncpy(ctrlr_dom.ctrlr, tmp_ctrlr_dom.ctrlr, - (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(ctrlr_dom.domain, tmp_ctrlr_dom.domain, - (kMaxLenDomainId + 1)); - list_ctrlr_dom.push_back(ctrlr_dom); - tmp_ikey = tmp_ikey->get_next_cfg_key_val(); - } - return result_code; -} - -upll_rc_t -VtnMoMgr::UpdateVtnConfigStatus(ConfigKeyVal *vtn_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { - ConfigKeyVal *ck_vtn = NULL; - upll_rc_t result_code = UPLL_RC_SUCCESS; - val_vtn_t *vtn_val = NULL; - val_vtn_st *val_vtnst= NULL; - void *vtnval = NULL; - void *nvtnval = NULL; - val_db_vtn_st *vtn_val_db_st = NULL, *nreq_vtnst = NULL; - - UPLL_FUNC_TRACE; - if (op != UNC_OP_DELETE) { - result_code = DupConfigKeyVal(ck_vtn, vtn_key, MAINTBL); - if (!ck_vtn || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - return UPLL_RC_ERR_GENERIC; - } - vtn_val = reinterpret_cast(GetVal(ck_vtn)); - if (!vtn_val) { - UPLL_LOG_DEBUG("invalid val "); - return UPLL_RC_ERR_GENERIC; - } - vtn_val_db_st = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(val_db_vtn_st))); - val_vtnst = &(vtn_val_db_st->vtn_val_st); - } else { - result_code = GetChildConfigKey(ck_vtn, vtn_key); - if (!ck_vtn || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - return UPLL_RC_ERR_GENERIC; - } - } - switch (op) { - case UNC_OP_CREATE: - vtn_val->cs_row_status = UNC_CS_APPLIED; - val_vtnst->creation_time = time(NULL); - val_vtnst->last_updated_time = val_vtnst->creation_time; - val_vtnst->valid[UPLL_IDX_CREATION_TIME_VS] = UNC_VF_VALID; - val_vtnst->valid[UPLL_IDX_LAST_UPDATE_TIME_VS] = UNC_VF_VALID; - val_vtnst->oper_status = UPLL_OPER_STATUS_DOWN; - val_vtnst->alarm_status = UPLL_ALARM_CLEAR; - val_vtnst->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; - val_vtnst->valid[UPLL_IDX_ALARM_STATUS_VS] = UNC_VF_VALID; - vtn_val_db_st->down_count = 0; - ck_vtn->AppendCfgVal(IpctSt::kIpcStValVtnSt, vtn_val_db_st); - break; - case UNC_OP_UPDATE: - vtnval = reinterpret_cast(vtn_val); - nvtnval = (nreq)?GetVal(nreq):NULL; - if (!nvtnval) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - CompareValidValue(vtnval, nvtnval, true); - - vtn_val->cs_row_status = - reinterpret_cast(GetVal(nreq))->cs_row_status; - - val_vtnst->last_updated_time = time(NULL); - val_vtnst->valid[UPLL_IDX_LAST_UPDATE_TIME_VS] = UNC_VF_VALID; - val_vtnst->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_INVALID; - val_vtnst->valid[UPLL_IDX_ALARM_STATUS_VS] = UNC_VF_INVALID; - nreq_vtnst = reinterpret_cast(GetStateVal(nreq)); - if (!nreq_vtnst) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - vtn_val_db_st->down_count = nreq_vtnst->down_count; - ck_vtn->AppendCfgVal(IpctSt::kIpcStValVtnSt, val_vtnst); - break; - case UNC_OP_DELETE: + memcpy(reinterpret_cast(key), + reinterpret_cast(ikey), + sizeof(key_vtnstation_controller)); + okey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, + key, + tmp1); + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, + MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (req == NULL) return UPLL_RC_ERR_GENERIC; + if (okey != NULL) return UPLL_RC_ERR_GENERIC; + if (req->get_key_type() != UNC_KT_VTN) return UPLL_RC_ERR_GENERIC; + ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); + val_vtn *vtn_val = NULL; + val_rename_vtn *rename_val = NULL; + val_vtn_ctrlr *ctrlr_val = NULL; + + if (tmp) { + if (tbl == MAINTBL) { + val_vtn *ival = reinterpret_cast(GetVal(req)); + + vtn_val = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_vtn))); + memcpy(reinterpret_cast(vtn_val), + reinterpret_cast(ival), + sizeof(val_vtn)); + tmp1 = new ConfigVal(IpctSt::kIpcStValVtn, vtn_val); + } else if (tbl == RENAMETBL) { + val_rename_vtn *ival = reinterpret_cast + (GetVal(req)); + rename_val = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + memcpy(reinterpret_cast(rename_val), + reinterpret_cast(ival), sizeof(val_rename_vtn)); + tmp1 = new ConfigVal(IpctSt::kIpcStValRenameVtn, rename_val); + } else if (tbl == CTRLRTBL) { + val_vtn_ctrlr *ival = reinterpret_cast + (GetVal(req)); + ctrlr_val = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_vtn_ctrlr))); + memcpy(reinterpret_cast(ctrlr_val), + reinterpret_cast(ival), sizeof(val_vtn_ctrlr)); + tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, ctrlr_val); + } + if (!tmp1) { + UPLL_LOG_ERROR("Memory Allocation failed for tmp1"); + FREE_IF_NOT_NULL(vtn_val); + FREE_IF_NOT_NULL(rename_val); + FREE_IF_NOT_NULL(ctrlr_val); + return UPLL_RC_ERR_GENERIC; + } + // error user data nneds to be copied + SET_USER_DATA(tmp1, tmp) + tmp = tmp->get_next_cfg_val(); + }; + if (tmp) { + if (tbl == MAINTBL) { + val_db_vtn_st *ival = reinterpret_cast + (tmp->get_val()); + val_db_vtn_st *val_vtn = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_db_vtn_st))); + memset(reinterpret_cast(val_vtn), 0, + sizeof(val_db_vtn_st)); + memcpy(reinterpret_cast(val_vtn), + reinterpret_cast(ival), + sizeof(val_db_vtn_st)); + ConfigVal *tmp2 = new ConfigVal(IpctSt::kIpcStValVtnSt, + val_vtn); + tmp1->AppendCfgVal(tmp2); + } + }; + void *tkey = (req != NULL) ? (req)->get_key() : NULL; + key_vtn *ikey = reinterpret_cast(tkey); + key_vtn *vtn_key = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(key_vtn))); + memcpy(reinterpret_cast(vtn_key), + reinterpret_cast(ikey), + sizeof(key_vtn)); + okey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtn_key, + tmp1); + SET_USER_DATA(okey, req) + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { + UPLL_FUNC_TRACE; + if (!ikey) { + UPLL_LOG_DEBUG("Invalid ikey"); + return UPLL_RC_ERR_GENERIC; + } + while (ikey) { + ConfigVal *cval = ikey->get_cfg_val(); + if (!cval) { + UPLL_LOG_DEBUG("Config Val is Null"); + return UPLL_RC_ERR_GENERIC; + } + while (cval) { + if (IpctSt::kIpcStValVtnSt == cval->get_st_num()) { + val_vtn_st *vtn_val_st = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtn_st))); + val_db_vtn_st *db_vtn_val_st = + reinterpret_cast + (cval->get_val()); + if (!db_vtn_val_st) { + FREE_IF_NOT_NULL(vtn_val_st); + return UPLL_RC_ERR_GENERIC; + } + memcpy(vtn_val_st, &(db_vtn_val_st->vtn_val_st), + sizeof(val_vtn_st)); + cval->SetVal(IpctSt::kIpcStValVtnSt, vtn_val_st); + } + cval = cval->get_next_cfg_val(); + } + ikey = ikey->get_next_cfg_key_val(); + } + UPLL_LOG_DEBUG("Exiting VtnMoMgr::AdaptValToVtnService"); + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_vtn_t *vtn_key = NULL; + if (okey && okey->get_key()) { + vtn_key = reinterpret_cast( + okey->get_key()); + } else { + vtn_key = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(key_vtn))); + } + void *pkey; + if (parent_key == NULL) { + if (!okey) + okey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtn_key, + NULL); + else if (okey->get_key() != vtn_key) + okey->SetKey(IpctSt::kIpcStKeyVtn, vtn_key); + return UPLL_RC_SUCCESS; + } else { + pkey = parent_key->get_key(); + } + if (!pkey) { + if (!okey || !(okey->get_key())) + ConfigKeyVal::Free(vtn_key); + return UPLL_RC_ERR_GENERIC; + } + switch (parent_key->get_key_type()) { + case UNC_KT_ROOT: + break; + case UNC_KT_VTN_DATAFLOW: + uuu::upll_strncpy(vtn_key->vtn_name, + reinterpret_cast + (pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); + break; + case UNC_KT_VTN: + uuu::upll_strncpy(vtn_key->vtn_name, + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); + break; + case UNC_KT_VTN_MAPPING_CONTROLLER: + uuu::upll_strncpy(vtn_key->vtn_name, + reinterpret_cast + (pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); + break; + default: + if (!okey || !(okey->get_key())) { + ConfigKeyVal::Free(vtn_key); + } + return UPLL_RC_ERR_GENERIC; + } + if (!okey) + okey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtn_key, + NULL); + else if (okey->get_key() != vtn_key) + okey->SetKey(IpctSt::kIpcStKeyVtn, vtn_key); + SET_USER_DATA(okey, parent_key); + return result_code; + } + + upll_rc_t VtnMoMgr::GetRenamedUncKey( + ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { + UPLL_FUNC_TRACE; + if (!ctrlr_key || !(ctrlr_key->get_key()) ) + return UPLL_RC_ERR_GENERIC; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_vtn *ctrlr_vtn_key = reinterpret_cast + (ctrlr_key->get_key()); + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; + ConfigKeyVal *unc_key = NULL; + val_rename_vtn *rename_vtn = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + uuu::upll_strncpy(reinterpret_cast(rename_vtn->new_name), + reinterpret_cast + (ctrlr_vtn_key->vtn_name), + kMaxLenVtnName+1); + rename_vtn->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + result_code = GetChildConfigKey(unc_key, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" GetChildConfigKey Failed with result_code %d", + result_code); + ConfigKeyVal::Free(rename_vtn); + return UPLL_RC_ERR_GENERIC; + } + unc_key->AppendCfgVal(IpctSt::kIpcStValRenameVtn, rename_vtn); + if (ctrlr_id) { + SET_USER_DATA_CTRLR(unc_key, ctrlr_id); + } else { + dbop.matchop = kOpMatchNone; + } + result_code = ReadConfigDB(unc_key, + dt_type, + UNC_OP_READ, + dbop, + dmi, + RENAMETBL); + if (result_code == UPLL_RC_SUCCESS) { + key_vtn *vtn_key = reinterpret_cast + (unc_key->get_key()); + if (strcmp(reinterpret_cast(ctrlr_vtn_key->vtn_name), + reinterpret_cast(vtn_key->vtn_name))) { + uuu::upll_strncpy(ctrlr_vtn_key->vtn_name, + vtn_key->vtn_name, + (kMaxLenVtnName+ 1)); + SET_USER_DATA_FLAGS(ctrlr_key, VTN_RENAME); + } + } + delete unc_key; + return result_code; + } + + upll_rc_t VtnMoMgr::GetRenamedControllerKey( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *okey = NULL; + uint8_t rename = 0; + key_vtn *ctrlr_key = NULL; + result_code = IsRenamed(ikey, dt_type, dmi, rename); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("IsRenamed failed. Result : %d", result_code); + return result_code; + } + if (!rename) return UPLL_RC_SUCCESS; + + /* vtn renamed */ + if (rename & 0x01) { + // GET_USER_DATA_CTRLR_DOMAIN(ikey, *ctrlr_dom); + if (!ctrlr_dom->ctrlr || !ctrlr_dom->domain) { + UPLL_LOG_ERROR("Illegal controller domain"); + return UPLL_RC_ERR_GENERIC; + } + result_code = GetChildConfigKey(okey, ikey); + if (result_code != UPLL_RC_SUCCESS || !okey) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + return result_code; + } + // SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag}; + result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", + result_code); + return result_code; + } + val_rename_vtn *rename_val = reinterpret_cast + (GetVal(okey)); + if (!rename_val) { + UPLL_LOG_DEBUG("Rename Val is Empty"); + return UPLL_RC_ERR_GENERIC; + } + ctrlr_key = reinterpret_cast(ikey->get_key()); + if (!ctrlr_key) return UPLL_RC_ERR_GENERIC; + memset(ctrlr_key, 0, sizeof(key_vtn)); + uuu::upll_strncpy(ctrlr_key->vtn_name, rename_val->new_name, + (kMaxLenVtnName + 1)); + SET_USER_DATA_FLAGS(ikey, VTN_RENAME); + delete okey; + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t + VtnMoMgr::GetControllerDomainSpan( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code; + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; + result_code = ReadConfigDB(ikey, + dt_type, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + return result_code; + } + + upll_rc_t + VtnMoMgr::GetControllerDomainSpan( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + std::list &list_ctrlr_dom) { + UPLL_FUNC_TRACE; + upll_rc_t result_code; + ConfigKeyVal *tmp_ikey = NULL; + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain}; + result_code = ReadConfigDB(ikey, + dt_type, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if ((result_code != UPLL_RC_SUCCESS) && + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("Error in ReadConfigDb (%d)", result_code); + return result_code; + } + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG(" Vtn not yet associated with controller "); + return result_code; + } + + tmp_ikey = ikey; + while (NULL != tmp_ikey) { + ctrlr_dom.ctrlr = reinterpret_cast + (ConfigKeyVal::Malloc((kMaxLenCtrlrId + 1))); + ctrlr_dom.domain = reinterpret_cast + (ConfigKeyVal::Malloc((kMaxLenDomainId + 1))); + controller_domain_t tmp_ctrlr_dom; + tmp_ctrlr_dom.ctrlr = NULL; + tmp_ctrlr_dom.domain = NULL; + GET_USER_DATA_CTRLR_DOMAIN(tmp_ikey, tmp_ctrlr_dom); + UPLL_LOG_TRACE(" ctrlr = %s, dom = %s ", tmp_ctrlr_dom.ctrlr, + tmp_ctrlr_dom.domain); + uuu::upll_strncpy(ctrlr_dom.ctrlr, tmp_ctrlr_dom.ctrlr, + (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(ctrlr_dom.domain, tmp_ctrlr_dom.domain, + (kMaxLenDomainId + 1)); + list_ctrlr_dom.push_back(ctrlr_dom); + tmp_ikey = tmp_ikey->get_next_cfg_key_val(); + } + return result_code; + } + + upll_rc_t + VtnMoMgr::UpdateVtnConfigStatus(ConfigKeyVal *vtn_key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi) { + ConfigKeyVal *ck_vtn = NULL; + upll_rc_t result_code = UPLL_RC_SUCCESS; + val_vtn_t *vtn_val = NULL; + val_vtn_st *val_vtnst= NULL; + void *vtnval = NULL; + void *nvtnval = NULL; + val_db_vtn_st *vtn_val_db_st = NULL, *nreq_vtnst = NULL; + + UPLL_FUNC_TRACE; + if (op != UNC_OP_DELETE) { + result_code = DupConfigKeyVal(ck_vtn, vtn_key, MAINTBL); + if (!ck_vtn || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + return UPLL_RC_ERR_GENERIC; + } + vtn_val = reinterpret_cast(GetVal(ck_vtn)); + if (!vtn_val) { + UPLL_LOG_DEBUG("invalid val "); + return UPLL_RC_ERR_GENERIC; + } + vtn_val_db_st = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(val_db_vtn_st))); + val_vtnst = &(vtn_val_db_st->vtn_val_st); + } else { + result_code = GetChildConfigKey(ck_vtn, vtn_key); + if (!ck_vtn || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + return UPLL_RC_ERR_GENERIC; + } + } + switch (op) { + case UNC_OP_CREATE: + vtn_val->cs_row_status = UNC_CS_APPLIED; + val_vtnst->creation_time = time(NULL); + val_vtnst->last_updated_time = val_vtnst->creation_time; + val_vtnst->valid[UPLL_IDX_CREATION_TIME_VS] = + UNC_VF_VALID; + val_vtnst->valid[UPLL_IDX_LAST_UPDATE_TIME_VS] = + UNC_VF_VALID; + val_vtnst->oper_status = UPLL_OPER_STATUS_DOWN; + val_vtnst->alarm_status = UPLL_ALARM_CLEAR; + val_vtnst->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; + val_vtnst->valid[UPLL_IDX_ALARM_STATUS_VS] = UNC_VF_VALID; + vtn_val_db_st->down_count = 0; + ck_vtn->AppendCfgVal(IpctSt::kIpcStValVtnSt, + vtn_val_db_st); + break; + case UNC_OP_UPDATE: + vtnval = reinterpret_cast(vtn_val); + nvtnval = (nreq)?GetVal(nreq):NULL; + if (!nvtnval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + CompareValidValue(vtnval, nvtnval, true); + + vtn_val->cs_row_status = + reinterpret_cast + (GetVal(nreq))->cs_row_status; + + val_vtnst->last_updated_time = time(NULL); + val_vtnst->valid[UPLL_IDX_LAST_UPDATE_TIME_VS] = + UNC_VF_VALID; + val_vtnst->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_INVALID; + val_vtnst->valid[UPLL_IDX_ALARM_STATUS_VS] = + UNC_VF_INVALID; + nreq_vtnst = reinterpret_cast + (GetStateVal(nreq)); + if (!nreq_vtnst) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + vtn_val_db_st->down_count = nreq_vtnst->down_count; + ck_vtn->AppendCfgVal(IpctSt::kIpcStValVtnSt, val_vtnst); + break; + case UNC_OP_DELETE: #if 0 - result_code = UpdateConfigDB(ck_vtn, UPLL_DT_CANDIDATE, UNC_OP_READ, - dmi, CTRLRTBL); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - string s(ck_vtn->ToStr()); - UPLL_LOG_DEBUG("Instance exists in ctrlr table - not deleted %s", - s.c_str()); - delete ck_vtn; - return UPLL_RC_SUCCESS; - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - string s(ck_vtn->ToStr()); - UPLL_LOG_DEBUG("Ctrlr table exists read failed- %s", s.c_str()); - delete ck_vtn; - return result_code; - } + result_code = UpdateConfigDB(ck_vtn, + UPLL_DT_CANDIDATE, + UNC_OP_READ, + dmi, CTRLRTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + string s(ck_vtn->ToStr()); + UPLL_LOG_DEBUG("Instance exists in ctrlr table -" + "not deleted %s", + s.c_str()); + delete ck_vtn; + return UPLL_RC_SUCCESS; + } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + string s(ck_vtn->ToStr()); + UPLL_LOG_DEBUG("Ctrlr table exists read failed- %s", + s.c_str()); + delete ck_vtn; + return result_code; + } #endif - break; - default: - UPLL_LOG_DEBUG("Invalid operation"); - return UPLL_RC_ERR_GENERIC; - } - if ((op != UNC_OP_DELETE) && - (vtn_val->valid[UPLL_IDX_DESC_VTN] != UNC_VF_INVALID)) { - vtn_val->cs_attr[UPLL_IDX_DESC_VTN] = UNC_CS_APPLIED; - } - DbSubOp dbop = {kOpNotRead, kOpMatchNone, kOpInOutFlag | kOpInOutCs}; - result_code = UpdateConfigDB(ck_vtn, UPLL_DT_STATE, op, dmi, &dbop, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); - return result_code; - } - result_code = EnqueCfgNotification(op, UPLL_DT_RUNNING, ck_vtn); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("EnqueCfgNotification Failed %d", result_code); - return result_code; - } - delete ck_vtn; - return result_code; -} - -upll_rc_t -VtnMoMgr::UpdateConfigStatus(ConfigKeyVal *vtn_run, - unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *ctrlr_can, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_run) { - UPLL_FUNC_TRACE; - unc_keytype_configstatus_t ctrlr_status; - uint8_t cs_status; - bool attribute_change = false; - ctrlr_status = (driver_result == UPLL_RC_SUCCESS)? - UNC_CS_APPLIED: UNC_CS_NOT_APPLIED; - val_vtn_t *vtn_val = reinterpret_cast(GetVal(vtn_run)); - val_vtn_ctrlr *ctrlr_val_vtn = NULL; - if (ctrlr_can == NULL) { - attribute_change = true; - } else { - ctrlr_val_vtn = reinterpret_cast - (GetVal(ctrlr_can)); - } - if (vtn_val == NULL) - return UPLL_RC_ERR_GENERIC; - cs_status = vtn_val->cs_row_status; - UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", cs_status, ctrlr_status); - uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); - unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; - if (ctrlr_can && ctrlr_mgr) { - uint8_t *ctrlr_id = NULL; - GET_USER_DATA_CTRLR(ctrlr_can, ctrlr_id); - if (!ctrlr_id) { - UPLL_LOG_DEBUG("Returning error\n"); - return UPLL_RC_ERR_GENERIC; - } - ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_id), - UPLL_DT_CANDIDATE, &ctrlrtype); - } - if (op == UNC_OP_CREATE) { - if (ctrlr_val_vtn == NULL) return UPLL_RC_ERR_GENERIC; - ctrlr_val_vtn->oper_status = UPLL_OPER_STATUS_UP; - ctrlr_val_vtn->alarm_status = UPLL_ALARM_CLEAR; - ctrlr_val_vtn->valid[0] = UNC_VF_VALID; - ctrlr_val_vtn->valid[1] = UNC_VF_VALID; - ctrlr_val_vtn->down_count = 0; - if (ctrlrtype == UNC_CT_PFC) { - ctrlr_val_vtn->oper_status = UPLL_OPER_STATUS_DOWN; - ctrlr_val_vtn->down_count = ctrlr_val_vtn->ref_count; - } - ctrlr_val_vtn->cs_row_status = ctrlr_status; - - /* update the vtn status in main tbl */ - switch (vtn_val->cs_row_status) { - case UNC_CS_APPLIED: { - cs_status = (ctrlr_status == UNC_CS_NOT_APPLIED) ? - UNC_CS_PARTIALLY_APPLIED : ctrlr_status; - } - break; - case UNC_CS_NOT_APPLIED: { - cs_status = (ctrlr_status == UNC_CS_APPLIED) ? - UNC_CS_PARTIALLY_APPLIED : ctrlr_status; - } - break; - case UNC_CS_PARTIALLY_APPLIED: - cs_status = UNC_CS_PARTIALLY_APPLIED; - break; - case UNC_CS_INVALID: - cs_status = UNC_CS_INVALID; - break; - case UNC_CS_UNKNOWN: - default: - /* first entry in ctrlr table */ - cs_status = ctrlr_status; - } - vtn_val->cs_row_status = cs_status; - } - // description is always applied - vtn_val->cs_attr[UPLL_IDX_DESC_VTN] = UNC_CS_APPLIED; - - // Updating the Controller cs_row_status - // Main tbl update, pass ctrlr_run = NULL - val_vtn_ctrlr *run_ctrlr_val = reinterpret_cast - (GetVal(ctrlr_run)); - if ((op == UNC_OP_UPDATE) && (run_ctrlr_val != NULL)) { - if (attribute_change) { - cs_status = run_ctrlr_val->cs_row_status; - run_ctrlr_val->cs_row_status = unc_keytype_configstatus_t(cs_status); - if (vtn_val->valid[UPLL_IDX_DESC_VTN] != UNC_VF_INVALID) { - if (run_ctrlr_val->cs_attr[UPLL_IDX_DESC_VTN] != UNC_CS_NOT_SUPPORTED) - run_ctrlr_val->cs_attr[UPLL_IDX_DESC_VTN] = UNC_CS_APPLIED; - else - run_ctrlr_val->cs_attr[UPLL_IDX_DESC_VTN] = UNC_CS_NOT_SUPPORTED; - } - return UPLL_RC_SUCCESS; - } else { - ctrlr_val_vtn->cs_row_status = run_ctrlr_val->cs_row_status; - ctrlr_val_vtn->down_count = 0; - ctrlr_val_vtn->oper_status = UPLL_OPER_STATUS_UP; - ctrlr_val_vtn->valid[0] = UNC_VF_VALID; - // down count incremented only for create of vnode - // down count decrement handled during deletion of vnode, if needed. - if (ctrlrtype == UNC_CT_PFC) { - int diff = ctrlr_val_vtn->ref_count - run_ctrlr_val->ref_count; - if (diff > 0) - ctrlr_val_vtn->down_count = (run_ctrlr_val->down_count + diff); - else if (diff == 0) - ctrlr_val_vtn->down_count = (run_ctrlr_val->down_count + 1); - ctrlr_val_vtn->oper_status = UPLL_OPER_STATUS_DOWN; - } - } - } - val_db_vtn_st *vtn_val_db_st = reinterpret_cast - (GetStateVal(vtn_run)); - if (!vtn_val_db_st) { - UPLL_LOG_DEBUG("Returning error %d\n",UPLL_RC_ERR_GENERIC); - return UPLL_RC_ERR_GENERIC; - } - // initialize the main table vtn oper status to be recomputed. - val_vtn_st *val_vtnst = &(vtn_val_db_st->vtn_val_st); - val_vtnst->oper_status = UPLL_OPER_STATUS_UNINIT; - val_vtnst->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; - if (vtn_val->valid[UPLL_IDX_DESC_VTN] != UNC_VF_INVALID) { - if (ctrlr_val_vtn->cs_attr[UPLL_IDX_DESC_VTN] != UNC_CS_NOT_SUPPORTED) - ctrlr_val_vtn->cs_attr[UPLL_IDX_DESC_VTN] = - (ctrlr_status == UNC_CS_UNKNOWN)?UNC_CS_APPLIED:ctrlr_status; - else - ctrlr_val_vtn->cs_attr[UPLL_IDX_DESC_VTN] = UNC_CS_NOT_SUPPORTED; - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t -VtnMoMgr::TxCopyCandidateToRunning(unc_key_type_t keytype, - CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode db_result; - unc_keytype_operation_t op[] = {UNC_OP_DELETE, - UNC_OP_CREATE, - UNC_OP_UPDATE }; - int nop = sizeof(op) / sizeof(op[0]); - ConfigKeyVal *vtn_ck_run = NULL, *req = NULL, *nreq = NULL; - DalCursor *cfg1_cursor; - uint8_t *ctrlr_id = NULL; - map ctrlr_result; - CtrlrCommitStatusList::iterator ccsListItr; - CtrlrCommitStatus *ccStatusPtr; - - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) - return UPLL_RC_ERR_GENERIC; - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = reinterpret_cast - (const_cast(ccStatusPtr->ctrlr_id.c_str())); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; - ck_err = ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, - dmi, ctrlr_id); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("GetRenamedUncKey failed. Result : %d", - result_code); - return result_code; - } - } - } - } - - for (int i = 0; i < nop; i++) { - cfg1_cursor = NULL; - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], - req, nreq, &cfg1_cursor, dmi, NULL, MAINTBL, true); - if (result_code != UPLL_RC_SUCCESS || cfg1_cursor == NULL) { - UPLL_LOG_DEBUG("Cursor not populated"); - return result_code; - } - ConfigKeyVal *vtn_ctrlr_key = NULL; - while (result_code == UPLL_RC_SUCCESS) { - vtn_ctrlr_key = NULL; - bool upd_ctrlr = false; - db_result = dmi->GetNextRecord(cfg1_cursor); - result_code = DalToUpllResCode(db_result); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UPLL_RC_SUCCESS; - break; - } - if (op[i] == UNC_OP_UPDATE) { - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; - result_code = GetChildConfigKey(vtn_ctrlr_key, req); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - return result_code; - } - result_code = ReadConfigDB(vtn_ctrlr_key, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, CTRLRTBL); - if (result_code == UPLL_RC_SUCCESS) { - upd_ctrlr = true; - } else { - DELETE_IF_NOT_NULL(vtn_ctrlr_key); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - delete nreq; - return result_code; - } - } - } - result_code = UpdateVtnConfigStatus(req, op[i], UPLL_RC_SUCCESS, - nreq, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error updating vtn config status %d", - result_code); - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - DELETE_IF_NOT_NULL(vtn_ctrlr_key); - if (nreq) delete nreq; - return result_code; - } - if (upd_ctrlr) { - result_code = DupConfigKeyVal(vtn_ck_run, req, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - delete nreq; - DELETE_IF_NOT_NULL(vtn_ctrlr_key); - return result_code; - } - // Assigning cs_row_status from existing controller - static_cast(GetVal(vtn_ck_run))->cs_row_status = - static_cast(GetVal(nreq))->cs_row_status; - for (ConfigKeyVal *tmp = vtn_ctrlr_key, *tmp_nxt; tmp!= NULL; - tmp = tmp_nxt) { - tmp_nxt = tmp->get_next_cfg_key_val(); - tmp->set_next_cfg_key_val(NULL); - GET_USER_DATA_CTRLR(tmp, ctrlr_id); - string controller(reinterpret_cast(ctrlr_id)); - result_code = UpdateConfigStatus(vtn_ck_run, op[i], - ctrlr_result[controller], NULL, dmi, tmp); - if (result_code != UPLL_RC_SUCCESS) - break; - result_code = UpdateConfigDB(tmp, UPLL_DT_RUNNING, op[i], - dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - delete nreq; - delete tmp; - delete tmp_nxt; - DELETE_IF_NOT_NULL(vtn_ck_run); - return result_code; - } - delete tmp; - } - vtn_ctrlr_key = NULL; - result_code = UpdateConfigDB(vtn_ck_run, UPLL_DT_RUNNING, op[i], - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - delete nreq; - DELETE_IF_NOT_NULL(vtn_ck_run); - return result_code; - } - DELETE_IF_NOT_NULL(vtn_ck_run); - } - } - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - if (req) - delete req; - if (nreq) delete nreq; - req = nreq = NULL; - } - for (int i = 0; i < nop; i++) { - cfg1_cursor = NULL; - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, - nreq, &cfg1_cursor, dmi, NULL, CTRLRTBL, true); - if (result_code != UPLL_RC_SUCCESS || cfg1_cursor == NULL) { - UPLL_LOG_DEBUG("Cursor not populated"); - return result_code; - } - ConfigKeyVal *vtn_ctrlr_key = NULL; - while (result_code == UPLL_RC_SUCCESS) { - db_result = dmi->GetNextRecord(cfg1_cursor); - result_code = DalToUpllResCode(db_result); - if (result_code != UPLL_RC_SUCCESS) { - break; - } - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCs}; - result_code = GetChildConfigKey(vtn_ck_run, req); - result_code = ReadConfigDB(vtn_ck_run, UPLL_DT_STATE, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - if ((op[i] != UNC_OP_DELETE) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - return result_code; - } - } - if (op[i] == UNC_OP_CREATE) { - /* set consolidated config status to UNKNOWN to init vtn cs_status - * to the cs_status of first controller - */ - uint32_t cur_instance_count; - result_code = GetInstanceCount(vtn_ck_run, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); - if ((result_code == UPLL_RC_SUCCESS) && (cur_instance_count == 1)) - reinterpret_cast(GetVal(vtn_ck_run))->cs_row_status = - UNC_CS_UNKNOWN; - } - if ((op[i] == UNC_OP_CREATE) || (op[i] == UNC_OP_UPDATE)) { - result_code = DupConfigKeyVal(vtn_ctrlr_key, req, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS || vtn_ctrlr_key == NULL) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - return result_code; - } - GET_USER_DATA_CTRLR(vtn_ctrlr_key, ctrlr_id); - string controller(reinterpret_cast(ctrlr_id)); - // Passing vtn_ck_run instead of nreq - result_code = UpdateConfigStatus(vtn_ck_run, op[i], - ctrlr_result[controller], vtn_ctrlr_key, dmi, nreq); - } else if (op[i] == UNC_OP_DELETE) { - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - GET_USER_DATA_CTRLR(req, ctrlr_id); - result_code = SetVtnConsolidatedStatus(vtn_ck_run, ctrlr_id, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", result_code); - return result_code; - } - } - result_code = GetChildConfigKey(vtn_ctrlr_key, req); - } - if (result_code != UPLL_RC_SUCCESS) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - return result_code; - } - result_code = UpdateConfigDB(vtn_ctrlr_key, UPLL_DT_STATE, op[i], - dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - return result_code; - } - if (op[i] != UNC_OP_DELETE) { - DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; - result_code = UpdateConfigDB(vtn_ck_run, UPLL_DT_STATE, - UNC_OP_UPDATE, dmi, &dbop_update, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - delete req; - return result_code; - } - } - EnqueCfgNotification(op[i], UPLL_DT_RUNNING, vtn_ck_run); + break; + default: + UPLL_LOG_DEBUG("Invalid operation"); + return UPLL_RC_ERR_GENERIC; + } + if ((op != UNC_OP_DELETE) && + (vtn_val->valid[UPLL_IDX_DESC_VTN] != UNC_VF_INVALID)) { + vtn_val->cs_attr[UPLL_IDX_DESC_VTN] = UNC_CS_APPLIED; + } + DbSubOp dbop = {kOpNotRead, + kOpMatchNone, + kOpInOutFlag | kOpInOutCs}; + result_code = UpdateConfigDB(ck_vtn, + UPLL_DT_STATE, + op, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); + return result_code; + } + result_code = EnqueCfgNotification(op, + UPLL_DT_RUNNING, + ck_vtn); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("EnqueCfgNotification Failed %d", + result_code); + return result_code; + } + delete ck_vtn; + return result_code; + } + + upll_rc_t + VtnMoMgr::UpdateConfigStatus(ConfigKeyVal *vtn_run, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *ctrlr_can, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_run) { + UPLL_FUNC_TRACE; + unc_keytype_configstatus_t ctrlr_status; + uint8_t cs_status; + bool attribute_change = false; + ctrlr_status = (driver_result == UPLL_RC_SUCCESS)? + UNC_CS_APPLIED: UNC_CS_NOT_APPLIED; + val_vtn_t *vtn_val = reinterpret_cast + (GetVal(vtn_run)); + val_vtn_ctrlr *ctrlr_val_vtn = NULL; + if (ctrlr_can == NULL) { + attribute_change = true; + } else { + ctrlr_val_vtn = reinterpret_cast + (GetVal(ctrlr_can)); + } + if (vtn_val == NULL) + return UPLL_RC_ERR_GENERIC; + cs_status = vtn_val->cs_row_status; + UPLL_LOG_TRACE("cs_status %d ctrlr_status %d\n", + cs_status, + ctrlr_status); + uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); + unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; + if (ctrlr_can && ctrlr_mgr) { + uint8_t *ctrlr_id = NULL; + GET_USER_DATA_CTRLR(ctrlr_can, ctrlr_id); + if (!ctrlr_id) { + UPLL_LOG_DEBUG("Returning error\n"); + return UPLL_RC_ERR_GENERIC; + } + bool return_value = ctrlr_mgr->GetCtrlrType( + reinterpret_cast(ctrlr_id), + UPLL_DT_CANDIDATE, &ctrlrtype); + if (false == return_value) { + UPLL_LOG_DEBUG("Unknown Controller Type\n"); + return UPLL_RC_ERR_GENERIC; + } + } + if (op == UNC_OP_CREATE) { + if (ctrlr_val_vtn == NULL) return UPLL_RC_ERR_GENERIC; + ctrlr_val_vtn->oper_status = + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_UP; + ctrlr_val_vtn->alarm_status = UPLL_ALARM_CLEAR; + ctrlr_val_vtn->valid[0] = UNC_VF_VALID; + ctrlr_val_vtn->valid[1] = UNC_VF_VALID; + ctrlr_val_vtn->down_count = 0; + if (ctrlrtype == UNC_CT_PFC) { + ctrlr_val_vtn->oper_status = + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_DOWN; + ctrlr_val_vtn->down_count = ctrlr_val_vtn->ref_count; + } + ctrlr_val_vtn->cs_row_status = ctrlr_status; + + /* update the vtn status in main tbl */ + switch (vtn_val->cs_row_status) { + case UNC_CS_APPLIED: { + cs_status = (ctrlr_status == UNC_CS_NOT_APPLIED) ? + UNC_CS_PARTIALLY_APPLIED : ctrlr_status; + } + break; + case UNC_CS_NOT_APPLIED: { + cs_status = (ctrlr_status == UNC_CS_APPLIED) ? + UNC_CS_PARTIALLY_APPLIED : ctrlr_status; + } + break; + case UNC_CS_PARTIALLY_APPLIED: + cs_status = UNC_CS_PARTIALLY_APPLIED; + break; + case UNC_CS_INVALID: + cs_status = UNC_CS_INVALID; + break; + case UNC_CS_UNKNOWN: + default: + /* first entry in ctrlr table */ + cs_status = ctrlr_status; + } + vtn_val->cs_row_status = cs_status; + } + // description is always applied + vtn_val->cs_attr[UPLL_IDX_DESC_VTN] = UNC_CS_APPLIED; + + // Updating the Controller cs_row_status + // Main tbl update, pass ctrlr_run = NULL + val_vtn_ctrlr *run_ctrlr_val = + reinterpret_cast + (GetVal(ctrlr_run)); + if ((op == UNC_OP_UPDATE) && (run_ctrlr_val != NULL)) { + if (attribute_change) { + cs_status = run_ctrlr_val->cs_row_status; + run_ctrlr_val->cs_row_status = + unc_keytype_configstatus_t(cs_status); + if (vtn_val->valid[UPLL_IDX_DESC_VTN] != UNC_VF_INVALID) { + if (run_ctrlr_val->cs_attr[UPLL_IDX_DESC_VTN] != + UNC_CS_NOT_SUPPORTED) + run_ctrlr_val->cs_attr[UPLL_IDX_DESC_VTN] = + UNC_CS_APPLIED; + else + run_ctrlr_val->cs_attr[UPLL_IDX_DESC_VTN] = + UNC_CS_NOT_SUPPORTED; + } + return UPLL_RC_SUCCESS; + } else { + ctrlr_val_vtn->cs_row_status = + run_ctrlr_val->cs_row_status; + ctrlr_val_vtn->oper_status = + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_UP; + ctrlr_val_vtn->valid[0] = UNC_VF_VALID; + ctrlr_val_vtn->down_count = run_ctrlr_val->down_count; + // down count incremented only for create of vnode + // down count decrement handled during deletion of + // vnode, if needed. + if (ctrlrtype == UNC_CT_PFC) { + int diff = + ctrlr_val_vtn->ref_count - run_ctrlr_val->ref_count; + if (diff > 0) + ctrlr_val_vtn->down_count = + (run_ctrlr_val->down_count + diff); + else if (diff == 0) + ctrlr_val_vtn->down_count = + (run_ctrlr_val->down_count + 1); + ctrlr_val_vtn->oper_status = + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_DOWN; + } + } + } + val_db_vtn_st *vtn_val_db_st = + reinterpret_cast + (GetStateVal(vtn_run)); + if (!vtn_val_db_st) { + UPLL_LOG_DEBUG("Returning error %d\n", UPLL_RC_ERR_GENERIC); + return UPLL_RC_ERR_GENERIC; + } + // initialize the main table vtn oper status to be recomputed. + val_vtn_st *val_vtnst = &(vtn_val_db_st->vtn_val_st); + val_vtnst->oper_status = + (driver_result == UPLL_RC_ERR_CTR_DISCONNECTED)? + UPLL_OPER_STATUS_UNKNOWN:UPLL_OPER_STATUS_UNINIT; + val_vtnst->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; + if (ctrlr_val_vtn && (vtn_val->valid[UPLL_IDX_DESC_VTN] != + UNC_VF_INVALID)) { + if (ctrlr_val_vtn->cs_attr[UPLL_IDX_DESC_VTN] != + UNC_CS_NOT_SUPPORTED) + ctrlr_val_vtn->cs_attr[UPLL_IDX_DESC_VTN] = ctrlr_status; + else + ctrlr_val_vtn->cs_attr[UPLL_IDX_DESC_VTN] = + UNC_CS_NOT_SUPPORTED; + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t + VtnMoMgr::TxCopyCandidateToRunning( + unc_key_type_t keytype, + CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DalResultCode db_result; + unc_keytype_operation_t op[] = {UNC_OP_DELETE, + UNC_OP_CREATE, + UNC_OP_UPDATE }; + int nop = sizeof(op) / sizeof(op[0]); + ConfigKeyVal *vtn_ck_run = NULL, *req = NULL, *nreq = NULL; + DalCursor *cfg1_cursor; + uint8_t *ctrlr_id = NULL; + map ctrlr_result; + CtrlrCommitStatusList::iterator ccsListItr; + CtrlrCommitStatus *ccStatusPtr; + + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); + ++ccsListItr) { + ccStatusPtr = *ccsListItr; + ctrlr_id = reinterpret_cast + (const_cast(ccStatusPtr->ctrlr_id.c_str())); + ctrlr_result[ccStatusPtr->ctrlr_id] = + ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; + ck_err != NULL; + ck_err = ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, + UPLL_DT_CANDIDATE, + dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetRenamedUncKey failed." + "Result : %d", + result_code); + return result_code; + } + } + } + } + } + + for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + MAINTBL, + true); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Diff Skipped for op %d", op[i]); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + continue; + } + if (result_code != UPLL_RC_SUCCESS || cfg1_cursor == NULL) { + UPLL_LOG_DEBUG("Cursor not populated"); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + return result_code; + } + ConfigKeyVal *vtn_ctrlr_key = NULL; + while (result_code == UPLL_RC_SUCCESS) { + vtn_ctrlr_key = NULL; + bool upd_ctrlr = false; + db_result = dmi->GetNextRecord(cfg1_cursor); + result_code = DalToUpllResCode(db_result); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + break; + } + if (op[i] == UNC_OP_UPDATE) { + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; + result_code = GetChildConfigKey(vtn_ctrlr_key, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + result_code = ReadConfigDB(vtn_ctrlr_key, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (result_code == UPLL_RC_SUCCESS) { + upd_ctrlr = true; + } else { + DELETE_IF_NOT_NULL(vtn_ctrlr_key); + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + delete nreq; + return result_code; + } + } + } + result_code = UpdateVtnConfigStatus(req, op[i], + UPLL_RC_SUCCESS, + nreq, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error updating vtn config status %d", + result_code); + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + DELETE_IF_NOT_NULL(vtn_ctrlr_key); + if (nreq) delete nreq; + return result_code; + } + if (upd_ctrlr) { + result_code = DupConfigKeyVal(vtn_ck_run, req, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + delete nreq; + DELETE_IF_NOT_NULL(vtn_ctrlr_key); + return result_code; + } + // Assigning cs_row_status from existing controller + static_cast( + GetVal(vtn_ck_run))->cs_row_status = + static_cast(GetVal(nreq))->cs_row_status; + for (ConfigKeyVal *tmp = vtn_ctrlr_key, *tmp_nxt; + tmp!= NULL; + tmp = tmp_nxt) { + tmp_nxt = tmp->get_next_cfg_key_val(); + tmp->set_next_cfg_key_val(NULL); + GET_USER_DATA_CTRLR(tmp, ctrlr_id); + string controller(reinterpret_cast(ctrlr_id)); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL."); + result_code = UpdateConfigStatus( + vtn_ck_run, + op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + NULL, + dmi, + tmp); + if (result_code != UPLL_RC_SUCCESS) + break; + } else { + result_code = UpdateConfigStatus( + vtn_ck_run, + op[i], + ctrlr_result[controller], + NULL, + dmi, + tmp); + if (result_code != UPLL_RC_SUCCESS) + break; + } + DbSubOp dbop_update = {kOpNotRead, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutCs}; + result_code = UpdateConfigDB(tmp, + UPLL_DT_RUNNING, + op[i], + dmi, + &dbop_update, + CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + delete nreq; + delete tmp; + delete tmp_nxt; + DELETE_IF_NOT_NULL(vtn_ck_run); + return result_code; + } + delete tmp; + } + vtn_ctrlr_key = NULL; + result_code = UpdateConfigDB(vtn_ck_run, + UPLL_DT_RUNNING, + op[i], + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + delete nreq; + DELETE_IF_NOT_NULL(vtn_ck_run); + return result_code; + } + DELETE_IF_NOT_NULL(vtn_ck_run); + } + } + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + if (req) + delete req; + if (nreq) delete nreq; + req = nreq = NULL; + } + for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op[i], + req, + nreq, + &cfg1_cursor, + dmi, + NULL, + CTRLRTBL, + true); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Diff Skipped for op %d", op[i]); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + continue; + } + if (result_code != UPLL_RC_SUCCESS || cfg1_cursor == NULL) { + UPLL_LOG_DEBUG("Cursor not populated"); + return result_code; + } + ConfigKeyVal *vtn_ctrlr_key = NULL; + while (result_code == UPLL_RC_SUCCESS) { + db_result = dmi->GetNextRecord(cfg1_cursor); + result_code = DalToUpllResCode(db_result); + if (result_code != UPLL_RC_SUCCESS) { + break; + } + DbSubOp dbop = {kOpReadSingle, + kOpMatchNone, + kOpInOutFlag | kOpInOutCs}; + result_code = GetChildConfigKey(vtn_ck_run, req); + result_code = ReadConfigDB(vtn_ck_run, + UPLL_DT_STATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + if ((op[i] != UNC_OP_DELETE) && + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + return result_code; + } + } + if (op[i] == UNC_OP_CREATE) { + /* set consolidated config status to UNKNOWN + * to init vtn cs_status + * to the cs_status of first controller + */ + uint32_t cur_instance_count; + result_code = GetInstanceCount(vtn_ck_run, NULL, + UPLL_DT_CANDIDATE, + &cur_instance_count, + dmi, CTRLRTBL); + if ((result_code == UPLL_RC_SUCCESS) && + (cur_instance_count == 1)) + reinterpret_cast(GetVal(vtn_ck_run))-> + cs_row_status = + UNC_CS_UNKNOWN; + } + if ((op[i] == UNC_OP_CREATE) || + (op[i] == UNC_OP_UPDATE)) { + result_code = DupConfigKeyVal(vtn_ctrlr_key, + req, + CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS || + vtn_ctrlr_key == NULL) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + return result_code; + } + GET_USER_DATA_CTRLR(vtn_ctrlr_key, ctrlr_id); + string controller(reinterpret_cast(ctrlr_id)); + // Passing vtn_ck_run instead of nreq + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL."); + result_code = UpdateConfigStatus( + vtn_ck_run, + op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + vtn_ctrlr_key, + dmi, + nreq); + } else { + result_code = UpdateConfigStatus( + vtn_ck_run, + op[i], + ctrlr_result[controller], + vtn_ctrlr_key, + dmi, + nreq); + } + } else if (op[i] == UNC_OP_DELETE) { + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + GET_USER_DATA_CTRLR(req, ctrlr_id); + result_code = SetVtnConsolidatedStatus(vtn_ck_run, + ctrlr_id, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Could not set consolidated" + "status %d", + result_code); + return result_code; + } + } + result_code = GetChildConfigKey(vtn_ctrlr_key, req); + } + if (result_code != UPLL_RC_SUCCESS) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + return result_code; + } + result_code = UpdateConfigDB(vtn_ctrlr_key, + UPLL_DT_STATE, + op[i], + dmi, + CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + return result_code; + } + if (op[i] != UNC_OP_DELETE) { + DbSubOp dbop_update = {kOpNotRead, + kOpMatchNone, + kOpInOutCs}; + result_code = UpdateConfigDB(vtn_ck_run, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop_update, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + delete req; + return result_code; + } + } + EnqueCfgNotification(op[i], UPLL_DT_RUNNING, vtn_ck_run); #if 1 - if (vtn_ctrlr_key) - delete vtn_ctrlr_key; + if (vtn_ctrlr_key) + delete vtn_ctrlr_key; #endif - if (vtn_ck_run) - delete vtn_ck_run; - vtn_ck_run = vtn_ctrlr_key = NULL; - result_code = DalToUpllResCode(db_result); - } - if (cfg1_cursor) - dmi->CloseCursor(cfg1_cursor, true); - if (req) - delete req; - if (nreq) delete nreq; - req = nreq = NULL; - // Copying Rename Table to Running - UPLL_LOG_DEBUG("keytype is %d", keytype); - result_code = TxCopyRenameTableFromCandidateToRunning(keytype, - op[i], dmi); - UPLL_LOG_DEBUG("TxCopyRenameTableFromCandidateToRunning returned %d", - result_code); - } - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; - return result_code; -} - - -upll_rc_t VtnMoMgr::ReadSingleCtlrlVtnMapping(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - uint32_t *ckv_count) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - if (*ckv_count >= header->rep_count) { - return result_code; - } - controller_domain ctrlr_dom_in; - ctrlr_dom_in.ctrlr = NULL; - ctrlr_dom_in.domain = NULL; - - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(ipc_req)); - memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); - ipc_req.header.operation = UNC_OP_READ; - - ConfigKeyVal *ckv_domain = NULL, *ckv_all_domain = NULL; - ConfigKeyVal *ckv_drv = NULL; - DbSubOp op = {kOpReadMultiple, kOpMatchCtrlr, kOpInOutCtrlr | kOpInOutDomain}; - - GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom_in); - key_vtn_t *vtnkey = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); - uuu::upll_strncpy(vtnkey->vtn_name, reinterpret_cast( - ikey->get_key())->vtn_key.vtn_name, (kMaxLenVtnName + 1)); - ckv_all_domain = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, - vtnkey, NULL); - SET_USER_DATA_CTRLR(ckv_all_domain, ctrlr_dom_in.ctrlr); - result_code = ReadConfigDB(ckv_all_domain, UPLL_DT_RUNNING, - UNC_OP_READ, op, dmi, CTRLRTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - DELETE_IF_NOT_NULL(ckv_all_domain); - return result_code; - } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("ReadConfigDB from rename tbl failed. Error code : %d", - result_code); - DELETE_IF_NOT_NULL(ckv_all_domain); - return result_code; - } - - ConfigKeyVal *result_ckv = NULL; - for (ckv_domain = ckv_all_domain; ckv_domain; - ckv_domain = ckv_domain->get_next_cfg_key_val()) { - controller_domain ctrlr_dom_db; - ctrlr_dom_db.ctrlr = NULL; - ctrlr_dom_db.domain = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ckv_domain, ctrlr_dom_db); - if (strncmp(reinterpret_cast(ctrlr_dom_in.domain), - reinterpret_cast(ctrlr_dom_db.domain), - kMaxLenDomainId +1) >= 0) { - UPLL_LOG_TRACE("ctrlr_dom_in.domain %s > ctrlr_dom_db.domain %s", - ctrlr_dom_in.domain, ctrlr_dom_db.domain); - continue; - } - UPLL_LOG_TRACE("ckv_domain in loop is \n %s", - ckv_domain->ToStrAll().c_str()); - result_code = DupConfigKeyValVtnMapping(ckv_drv, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed err code %d", - result_code); - delete ckv_all_domain; - return result_code; - } - ckv_domain->SetCfgVal(NULL); - key_vtn_t *vtn_key = &(reinterpret_cast - (ckv_drv->get_key())->vtn_key); - result_code = GetRenamedControllerKey(ckv_domain, UPLL_DT_RUNNING, - dmi, &ctrlr_dom_db); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_INFO("GetRenamedControllerKey failed err code %d", result_code); - delete ckv_all_domain; - delete ckv_drv; - return result_code; - } - uuu::upll_strncpy(vtn_key->vtn_name, reinterpret_cast - (ckv_domain->get_key())->vtn_name, - (kMaxLenVtnName + 1)); - UPLL_LOG_TRACE("Controller id and domain id are %s %s", ctrlr_dom_db.ctrlr, - ctrlr_dom_db.domain); - uuu::upll_strncpy(reinterpret_cast - (ckv_drv->get_key())->domain_id, - ctrlr_dom_db.domain, kMaxLenDomainId+1); - ipc_req.ckv_data = ckv_drv; - IpcResponse ipc_resp; - memset(&ipc_resp, 0, sizeof(IpcResponse)); - if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom_db.ctrlr), - reinterpret_cast(ctrlr_dom_db.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { - UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ikey->get_key_type(), - reinterpret_cast(ctrlr_dom_db.ctrlr)); - delete ckv_all_domain; - delete ckv_drv; - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - return ipc_resp.header.result_code; - } - if (ipc_resp.header.result_code != UPLL_RC_SUCCESS - && ipc_resp.header.result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_INFO("Read from driver failed err code %d", - ipc_resp.header.result_code); - delete ckv_all_domain; - delete ckv_drv; - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - return ipc_resp.header.result_code; - } else if (ipc_resp.header.result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Record Not found for domain %s", ctrlr_dom_db.domain); - delete ckv_drv; - ckv_drv = NULL; - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - continue; - } else if (ipc_resp.header.result_code == UPLL_RC_SUCCESS) { - if (ipc_resp.ckv_data == NULL) { - // NOTE: Is this still happening: ipc is successfull and no ckv_data? - delete ckv_all_domain; - delete ckv_drv; - UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", - ipc_resp.header.result_code); - return UPLL_RC_ERR_GENERIC; - } - ckv_drv->ResetWith(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - uint32_t rec_count_dummy = 0; - uint32_t *rcd = &rec_count_dummy; - result_code = MappingvExtTovBr(ckv_drv, header, dmi, rcd); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("MappingvExtTovBr failed result_code - %d", result_code); - DELETE_IF_NOT_NULL(ckv_drv); - return UPLL_RC_ERR_GENERIC; - } - if (result_ckv == NULL) { - result_ckv = ckv_drv; - } else { - result_ckv->AppendCfgKeyVal(ckv_drv); - } - (*ckv_count)++; - ckv_drv = NULL; - } - if (*ckv_count >= header->rep_count) { - break; - } - } - delete ckv_all_domain; - if (result_ckv) { - ikey->ResetWith(result_ckv); - DELETE_IF_NOT_NULL(result_ckv); - result_code = UPLL_RC_SUCCESS; - } else { - result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - - return result_code; -} - -upll_rc_t VtnMoMgr::ReadSingleCtlrlStation(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - uint32_t *rec_count) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - DbSubOp op = {kOpNotRead, kOpMatchCtrlr, kOpInOutCtrlr | kOpInOutDomain}; - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(ipc_req)); - memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); - ipc_req.header.operation = UNC_OP_READ; - val_vtnstation_controller_st_t *in_valst = NULL; - val_vtnstation_controller_st_t *valst = NULL; - val_rename_vtn *rename_valst = NULL; - ConfigKeyVal *ckv_drv = NULL; - ConfigKeyVal *ckv_rename = NULL; - ConfigKeyVal *okey = NULL; - ConfigKeyVal *ckv_vbrif = NULL; - bool renamed = false; - IpcResponse ipc_resp; - UPLL_LOG_DEBUG("Input ikey is %s", ikey->ToStrAll().c_str()); - result_code = DupConfigKeyValVtnStation(okey, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed err code %d", result_code); - return result_code; - } - ikey->SetCfgVal(NULL); - ctrlr_dom.ctrlr = reinterpret_cast - (okey->get_key())->controller_name; - ckv_rename = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, NULL, NULL); - if (!(okey->get_cfg_val())) { - UPLL_LOG_TRACE("val_vtnstation_controller_st is NULL"); - } else if (okey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValVtnstationControllerSt) { - in_valst = reinterpret_cast(GetVal(okey)); - if (!in_valst) { - UPLL_LOG_INFO("Input val_vtnstation_controller_st in Null"); - DELETE_IF_NOT_NULL(ckv_rename); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - if ((in_valst->valid[UPLL_IDX_VTN_NAME_VSCS] == UNC_VF_VALID) && - (in_valst->valid[UPLL_IDX_VBR_NAME_VSCS] == UNC_VF_VALID) && - (in_valst->valid[UPLL_IDX_VBR_IF_NAME_VSCS] == UNC_VF_VALID)) { - key_vbr_if_t *vbrif_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); - uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, - in_valst->vtn_name, (kMaxLenVtnName + 1)); - uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, in_valst->vbr_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(vbrif_key->if_name, in_valst->vbrif_name, - (kMaxLenInterfaceName + 1)); - ckv_vbrif = new ConfigKeyVal(UNC_KT_VBR_IF, - IpctSt::kIpcStKeyVbrIf, - vbrif_key, NULL); - SET_USER_DATA_CTRLR(ckv_vbrif, ctrlr_dom.ctrlr); - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VBR_IF))); - - DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, - kOpInOutCtrlr | kOpInOutDomain}; - result_code = mgr->ReadConfigDB(ckv_vbrif, UPLL_DT_RUNNING, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("ReadConfigDB from VbrIf tbl failed errcode %d", - result_code); - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(ckv_rename); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - val_drv_vbr_if_t *val = reinterpret_cast - (GetVal(ckv_vbrif)); - if (val && (val->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] == UNC_VF_VALID)) { - uuu::upll_strncpy(in_valst->vbrif_name, val->vex_name, - (kMaxLenInterfaceName + 1)); - } else { - UPLL_LOG_INFO("Port Map not configured"); - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(ckv_rename); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - GET_USER_DATA_DOMAIN(ckv_vbrif, ctrlr_dom.domain); - ckv_vbrif->SetCfgVal(NULL); - result_code = mgr->GetRenamedControllerKey(ckv_vbrif, UPLL_DT_RUNNING, - dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", - result_code); - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(ckv_rename); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - uuu::upll_strncpy(in_valst->vtn_name, - vbrif_key->vbr_key.vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - uuu::upll_strncpy(in_valst->vbr_name, vbrif_key->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - } else if (in_valst->valid[UPLL_IDX_VTN_NAME_VSCS] == UNC_VF_VALID) { - key_vtn_t *vtn_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn))); - uuu::upll_strncpy(vtn_key->vtn_name, in_valst->vtn_name, - (kMaxLenVtnName + 1)); - op.readop = kOpReadMultiple; - if (in_valst->valid[UPLL_IDX_DOMAIN_ID_VSCS] == UNC_VF_VALID) { - ctrlr_dom.domain = in_valst->domain_id; - op.matchop = kOpMatchCtrlr | kOpMatchDomain; - op.readop = kOpReadSingle; - } - ckv_rename->SetKey(IpctSt::kIpcStKeyVtn, vtn_key); - SET_USER_DATA_CTRLR_DOMAIN(ckv_rename, ctrlr_dom); - result_code = ReadConfigDB(ckv_rename, UPLL_DT_RUNNING, - UNC_OP_READ, op, dmi, RENAMETBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_INFO("ReadConfigDB from rename tbl failed err code %d", - result_code); - DELETE_IF_NOT_NULL(ckv_rename); - DELETE_IF_NOT_NULL(okey); - return result_code; - } else if (result_code == UPLL_RC_SUCCESS) { - renamed = true; - } - } - } - ConfigKeyVal *temp = ckv_rename; - for (; ckv_rename; ckv_rename = ckv_rename->get_next_cfg_key_val()) { - UPLL_LOG_TRACE("ckv_rename in loop is \n %s", - ckv_rename->ToStrAll().c_str()); - memset(&(ipc_resp), 0, sizeof(IpcResponse)); - result_code = DupConfigKeyValVtnStation(ckv_drv, okey); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(temp); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ckv_vbrif); - UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed. err : %d", result_code); - return result_code; - } - valst = reinterpret_cast(GetVal(ckv_drv)); - rename_valst = reinterpret_cast(GetVal(ckv_rename)); - if (renamed && (valst != NULL) && (rename_valst != NULL)) { - uuu::upll_strncpy(valst->vtn_name, rename_valst->new_name, - (kMaxLenVtnName + 1)); - } - ipc_req.ckv_data = ckv_drv; - UPLL_LOG_DEBUG("Controller id and domain id are %s %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), - reinterpret_cast(ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { - UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ikey->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); - DELETE_IF_NOT_NULL(ckv_drv); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(temp); - return ipc_resp.header.result_code; - } - if (ipc_resp.header.result_code != UPLL_RC_SUCCESS - && ipc_resp.header.result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_INFO("Read from driver failed err code %d", - ipc_resp.header.result_code); - DELETE_IF_NOT_NULL(ckv_drv); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(temp); - return ipc_resp.header.result_code; - } else if (ipc_resp.header.result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Record Not found for domain %s", ctrlr_dom.domain); - result_code = ipc_resp.header.result_code; - DELETE_IF_NOT_NULL(ckv_drv); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - continue; - } else if (ipc_resp.header.result_code == UPLL_RC_SUCCESS) { - if (ipc_resp.ckv_data == NULL) { - UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", - ipc_resp.header.result_code); - DELETE_IF_NOT_NULL(ckv_drv); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(temp); - return UPLL_RC_ERR_GENERIC; - } - ckv_drv->ResetWith(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - result_code = MappingvExtTovBr(ckv_drv, header, dmi, rec_count); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("MappingvExtTovBr failed result_code - %d", result_code); - DELETE_IF_NOT_NULL(ckv_drv); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(temp); - return result_code; - } - UPLL_LOG_TRACE("record count is %d", *rec_count); - ikey->AppendCfgVal(ckv_drv->GetCfgValAndUnlink()); - } - DELETE_IF_NOT_NULL(ckv_drv); - } - DELETE_IF_NOT_NULL(ckv_vbrif); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(temp); - return result_code; -} - -bool -VtnMoMgr::IsAllInvalidAttributes(const val_vtnstation_controller_st *val_stn) { - for (uint16_t iter = 0; - iter < sizeof(val_stn->valid)/sizeof(val_stn->valid[0]); - iter++) { - if (val_stn->valid[iter] != UNC_VF_INVALID) { - return false; - } - } - return true; -} - -upll_rc_t -VtnMoMgr::ReadMo(IpcReqRespHeader * header, - ConfigKeyVal * ikey, - DalDmlIntf * dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - key_vtn_controller *mkey = NULL; - ConfigKeyVal *ck_ctrlr = NULL; - DbSubOp op = {kOpReadMultiple, kOpMatchCtrlr, - kOpInOutCtrlr | kOpInOutDomain}; - if ((ikey->get_key_type() == UNC_KT_VTN_MAPPING_CONTROLLER) || - (ikey->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER)) { - result_code = ValidateMessage(header, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; - } - } - uint32_t rec_count = 0; - uint32_t *tmp_count; - switch (ikey->get_key_type()) { - case UNC_KT_VTN: - result_code = MoMgrImpl::ReadMo(header, ikey, dmi); - return result_code; - break; - case UNC_KT_VTNSTATION_CONTROLLER: - if (header->option1 == UNC_OPT1_NORMAL || - header->option1 == UNC_OPT1_DETAIL) { - result_code = ReadSingleCtlrlStation(header, ikey, - dmi, &rec_count); - } else if (header->option1 == UNC_OPT1_COUNT && - (GetVal(ikey) != NULL) && !IsAllInvalidAttributes( - reinterpret_cast - (const_cast(GetVal(ikey))))) { - header->option1 = UNC_OPT1_NORMAL; - result_code = ReadSingleCtlrlStation(header, ikey, - dmi, &rec_count); - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? - UPLL_RC_SUCCESS : result_code; - header->option1 = UNC_OPT1_COUNT; - uint32_t *count = - reinterpret_cast(ConfigKeyVal::Malloc(sizeof(uint32_t))); - *count = rec_count; - ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStUint32, count)); - } else if (header->option1 == UNC_OPT1_COUNT) { - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(ipc_req)); - memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); - IpcResponse ipc_resp; - memset(&ipc_resp, 0, sizeof(IpcResponse)); - ipc_req.ckv_data = ikey; - ctrlr_dom.ctrlr = reinterpret_cast - (ikey->get_key())->controller_name; - if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), - reinterpret_cast(ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { - UPLL_LOG_INFO("Request to driver for Key %d on controller %s failed", - ikey->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); - return ipc_resp.header.result_code; - } - if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Read from driver failed err code %d", - ipc_resp.header.result_code); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - return ipc_resp.header.result_code; - } - if (ipc_resp.ckv_data == NULL) { - UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", - ipc_resp.header.result_code); - return UPLL_RC_ERR_GENERIC; - } - ikey->ResetWith(ipc_resp.ckv_data); - DELETE_IF_NOT_NULL(ipc_resp.ckv_data); - } - break; - case UNC_KT_VTN_MAPPING_CONTROLLER: - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(ipc_req)); - memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); - IpcResponse ipc_resp; - memset(&ipc_resp, 0, sizeof(IpcResponse)); - mkey = reinterpret_cast(ikey->get_key()); - ctrlr_dom.ctrlr = mkey->controller_name; - ctrlr_dom.domain = mkey->domain_id; - result_code = GetChildConfigKey(ck_ctrlr, ikey); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ck_ctrlr); - UPLL_LOG_INFO("GetChildConfigKey failed err code %d", result_code); - return result_code; - } - SET_USER_DATA_CTRLR_DOMAIN(ck_ctrlr, ctrlr_dom); - result_code = UpdateConfigDB(ck_ctrlr, UPLL_DT_RUNNING, - UNC_OP_READ, dmi, &op, CTRLRTBL); - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("ReadConfigDB Failed result_code - %d", result_code); - DELETE_IF_NOT_NULL(ck_ctrlr); - return result_code; - } - result_code = GetRenamedControllerKey(ck_ctrlr, UPLL_DT_RUNNING, dmi, - &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey Failed result_code - %d", - result_code); - DELETE_IF_NOT_NULL(ck_ctrlr); - return result_code; - } - uuu::upll_strncpy(mkey->vtn_key.vtn_name, - reinterpret_cast(ck_ctrlr->get_key())->vtn_name, - (kMaxLenVtnName + 1)); - ipc_req.ckv_data = ikey; - if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), - reinterpret_cast(ctrlr_dom.domain), PFCDRIVER_SERVICE_NAME, - PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { - UPLL_LOG_INFO("Request to driver for Key %d for controller %s failed ", - ikey->get_key_type(), reinterpret_cast(ctrlr_dom.ctrlr)); - return ipc_resp.header.result_code; - } - if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Read from driver failed err code %d", - ipc_resp.header.result_code); - return ipc_resp.header.result_code; - } - if (ipc_resp.ckv_data == NULL) { - UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", - ipc_resp.header.result_code); - DELETE_IF_NOT_NULL(ck_ctrlr); - return UPLL_RC_ERR_GENERIC; - } - ikey->ResetWith(ipc_resp.ckv_data); - tmp_count = &rec_count; - result_code = MappingvExtTovBr(ikey, header, dmi, tmp_count); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("MappingvExtTovBr failed result_code - %d", result_code); - return result_code; - } - // header->rep_count = *tmp_count; - break; - default: - UPLL_LOG_INFO("Invalid KeyType %d", ikey->get_key_type()); - DELETE_IF_NOT_NULL(ck_ctrlr); - return UPLL_RC_ERR_GENERIC; - } - return result_code; -} - -upll_rc_t VtnMoMgr::ReadSiblingCount(IpcReqRespHeader *header, - ConfigKeyVal* ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - uint32_t *count; - switch (ikey->get_key_type()) { - case UNC_KT_VTN: - result_code = MoMgrImpl::ReadSiblingCount(header, ikey, dmi); - return result_code; - break; - case UNC_KT_VTNSTATION_CONTROLLER: - header->operation = UNC_OP_READ_SIBLING; - header->rep_count = UINT32_MAX; - result_code = ReadSiblingMo(header, ikey, false, dmi); - header->operation = UNC_OP_READ_SIBLING_COUNT; - count = - reinterpret_cast(ConfigKeyVal::Malloc(sizeof(uint32_t))); - *count = header->rep_count; - ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStUint32, count)); - break; - default: - break; - } - return result_code; -} -upll_rc_t -VtnMoMgr::ReadSiblingMo(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - bool begin, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - controller_domain ctrlr_dom; - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - ConfigKeyVal *next_ckv = NULL; - if ((ikey->get_key_type() == UNC_KT_VTN_MAPPING_CONTROLLER) || - (ikey->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER)) { - result_code = ValidateMessage(header, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; - } - } - key_vtn_controller *mkey = NULL; - ConfigKeyVal *ck_ctrlr = NULL; - uint32_t rec_count = 0; - uint32_t count = 0; - IpcResponse ipc_resp; - memset(&ipc_resp, 0, sizeof(IpcResponse)); - IpcRequest ipc_req; - memset(&ipc_req, 0, sizeof(ipc_req)); - memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); - ipc_req.ckv_data = ikey; - uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); - string ctrlr_id; - unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; - ConfigKeyVal *okey = NULL; - key_vtnstation_controller *vtn_stkey = NULL; - key_vtn_controller *vtnkey = NULL; - DbSubOp op = {kOpReadExist, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; - switch (ikey->get_key_type()) { - case UNC_KT_VTN: - result_code = MoMgrImpl::ReadSiblingMo(header, ikey, false, dmi); - return result_code; - break; - case UNC_KT_VTNSTATION_CONTROLLER: - result_code = DupConfigKeyValVtnStation(okey, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed err code %d", - result_code); - return result_code; - } - if (header->operation == UNC_OP_READ_SIBLING_BEGIN) { - result_code = ctrlr_mgr->GetFirstCtrlrName(UPLL_DT_RUNNING, - &ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetFirstCtrlrName failed err code %d", result_code); - return result_code; - } - ctrlr_dom.ctrlr = reinterpret_cast( - const_cast(ctrlr_id.c_str())); - UPLL_LOG_DEBUG("ControllerId and DomainId are %s %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast - (ctrlr_dom.ctrlr), UPLL_DT_RUNNING, &ctrlrtype)) || - (ctrlrtype != UNC_CT_PFC)) { - UPLL_LOG_INFO("Controller type is %d", ctrlrtype); - } else { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->controller_name, ctrlr_dom.ctrlr, - (kMaxLenCtrlrId + 1)); - result_code = ReadSingleCtlrlStation(header, okey, - dmi, &rec_count); - if (result_code == UPLL_RC_SUCCESS) - count++; - } - } else { - ctrlr_id = reinterpret_cast - (reinterpret_cast - (okey->get_key())->controller_name); - } - UPLL_LOG_DEBUG("Input Controller Id is %s", ctrlr_id.c_str()); - while ((UPLL_RC_SUCCESS == ctrlr_mgr->GetNextCtrlrName(ctrlr_id, - UPLL_DT_RUNNING, &ctrlr_id)) && - (count <= header->rep_count)) { - UPLL_LOG_DEBUG("sibling Controller Id is %s", ctrlr_id.c_str()); - ctrlr_dom.ctrlr = reinterpret_cast( - const_cast(ctrlr_id.c_str())); - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast - (ctrlr_dom.ctrlr), UPLL_DT_RUNNING, &ctrlrtype)) || - (ctrlrtype != UNC_CT_PFC)) { - UPLL_LOG_INFO("Controller type is %d", ctrlrtype); - continue; - } - result_code = DupConfigKeyValVtnStation(next_ckv, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed err code %d", - result_code); - return result_code; - } - vtn_stkey = reinterpret_cast - (next_ckv->get_key()); - uuu::upll_strncpy(vtn_stkey->controller_name, ctrlr_dom.ctrlr, - (kMaxLenCtrlrId + 1)); - result_code = ReadSingleCtlrlStation(header, next_ckv, - dmi, &rec_count); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - next_ckv = NULL; - continue; - } - count++; - okey->AppendCfgKeyVal(next_ckv); - next_ckv = NULL; - } - header->rep_count = count; - ikey->ResetWith(okey); - break; - case UNC_KT_VTN_MAPPING_CONTROLLER: - { - mkey = reinterpret_cast(ikey->get_key()); - ctrlr_dom.ctrlr = mkey->controller_name; - ctrlr_dom.domain = mkey->domain_id; - result_code = GetChildConfigKey(ck_ctrlr, ikey); - - /* Addressed coverity REVERSE_INULL issue */ - if (!ck_ctrlr || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetChildConfigKey failed err code %d", result_code); - DELETE_IF_NOT_NULL(ck_ctrlr); - return result_code; - } - SET_USER_DATA_CTRLR_DOMAIN(ck_ctrlr, ctrlr_dom); - #if 0 - if (header->operation == UNC_OP_READ_SIBLING_BEGIN) - op.matchop = kOpMatchNone; - #endif - result_code = UpdateConfigDB(ck_ctrlr, UPLL_DT_RUNNING, - UNC_OP_READ, dmi, &op, CTRLRTBL); - if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("ReadConfigDB Failed result_code - %d", result_code); - DELETE_IF_NOT_NULL(ck_ctrlr); - return result_code; - } - DELETE_IF_NOT_NULL(ck_ctrlr); - // SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); - result_code = DupConfigKeyValVtnMapping(okey, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyValVtnMapping failed err code %d", - result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - bool okey_mapped = false; - if (header->operation == UNC_OP_READ_SIBLING_BEGIN) { - result_code = ctrlr_mgr->GetFirstCtrlrName( - UPLL_DT_RUNNING, &ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("GetFirstCtrlrName failed err code %d", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } - ctrlr_dom.ctrlr = reinterpret_cast( - const_cast(ctrlr_id.c_str())); - ctrlr_dom.domain = reinterpret_cast - (const_cast(" ")); - SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); - UPLL_LOG_TRACE("ControllerId and DomainId are %s %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - if ((ctrlr_mgr->GetCtrlrType(reinterpret_cast - (ctrlr_dom.ctrlr), UPLL_DT_RUNNING, &ctrlrtype)) && - (ctrlrtype == UNC_CT_PFC)) { - uuu::upll_strncpy(reinterpret_cast - (okey->get_key())->controller_name, ctrlr_dom.ctrlr, - (kMaxLenCtrlrId + 1)); - result_code = ReadSingleCtlrlVtnMapping(header, okey, - dmi, &rec_count); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE && - result_code != UPLL_RC_SUCCESS) { - delete okey; - return result_code; - } else if (result_code == UPLL_RC_SUCCESS) { - okey_mapped = true; - } - } - } else { - // check if user given controller can be used. - ctrlr_id = reinterpret_cast - (reinterpret_cast - (okey->get_key())->controller_name); - UPLL_LOG_TRACE("Controller Name is %s", ctrlr_id.c_str()); - ctrlr_dom.ctrlr = reinterpret_cast( - const_cast(ctrlr_id.c_str())); - - if ((ctrlr_mgr->GetCtrlrType(reinterpret_cast - (ctrlr_dom.ctrlr), UPLL_DT_RUNNING, &ctrlrtype)) && - (ctrlrtype == UNC_CT_PFC)) { - UPLL_LOG_INFO("Controller type is %d", ctrlrtype); - // return UPLL_RC_ERR_GENERIC; - ctrlr_dom.domain = reinterpret_cast - (okey->get_key())->domain_id; - UPLL_LOG_TRACE("Domain name is %s", ctrlr_dom.domain); - SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); - - result_code = ReadSingleCtlrlVtnMapping(header, okey, - dmi, &rec_count); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE && - result_code != UPLL_RC_SUCCESS) { - delete okey; - return result_code; - } else if (result_code == UPLL_RC_SUCCESS) { - okey_mapped = true; - } - } - } - UPLL_LOG_DEBUG("Input controller id is %s", ctrlr_id.c_str()); - while ((UPLL_RC_SUCCESS == ctrlr_mgr->GetNextCtrlrName(ctrlr_id, - UPLL_DT_RUNNING, &ctrlr_id)) && - (rec_count < header->rep_count)) { - UPLL_LOG_DEBUG("Sibling controller id is %s", ctrlr_id.c_str()); - ctrlr_dom.ctrlr = reinterpret_cast( - const_cast(ctrlr_id.c_str())); - if (!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_dom.ctrlr), - UPLL_DT_RUNNING, &ctrlrtype)) { - continue; - } - if (ctrlrtype != UNC_CT_PFC) { - UPLL_LOG_INFO("Controller type is %d", ctrlrtype); - continue; - } - ctrlr_dom.domain = reinterpret_cast - (const_cast(" ")); - SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); - result_code = DupConfigKeyValVtnMapping(next_ckv, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed" - " err code %d", result_code); - delete okey; - DELETE_IF_NOT_NULL(next_ckv); - return result_code; - } - vtnkey = reinterpret_cast(next_ckv->get_key()); - uuu::upll_strncpy(vtnkey->controller_name, ctrlr_dom.ctrlr, - (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(vtnkey->domain_id, ctrlr_dom.domain, - (kMaxLenDomainId + 1)); - result_code = ReadSingleCtlrlVtnMapping(header, next_ckv, dmi, - &rec_count); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - delete okey; - DELETE_IF_NOT_NULL(next_ckv); - return result_code; - } else if (result_code == UPLL_RC_SUCCESS) { - if (!okey_mapped) { - /* This recent ReadSingleCtlrlVtnMapping gave result, - ** but not the previous ones - */ + if (vtn_ck_run) + delete vtn_ck_run; + vtn_ck_run = vtn_ctrlr_key = NULL; + result_code = DalToUpllResCode(db_result); + } + if (cfg1_cursor) + dmi->CloseCursor(cfg1_cursor, true); + if (req) + delete req; + if (nreq) delete nreq; + req = nreq = NULL; + // Copying Rename Table to Running + UPLL_LOG_DEBUG("keytype is %d", keytype); + result_code = TxCopyRenameTableFromCandidateToRunning( + keytype, + op[i], + dmi); + UPLL_LOG_DEBUG("TxCopyRenameTableFromCandidateToRunning" + "returned %d", + result_code); + } + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS:result_code; + return result_code; + } + + + upll_rc_t VtnMoMgr::ReadSingleCtlrlVtnMapping( + IpcReqRespHeader *header, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + uint32_t *ckv_count) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + + if (*ckv_count >= header->rep_count) { + return result_code; + } + controller_domain ctrlr_dom_in; + ctrlr_dom_in.ctrlr = NULL; + ctrlr_dom_in.domain = NULL; + + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); + ipc_req.header.operation = UNC_OP_READ; + + ConfigKeyVal *ckv_domain = NULL, *ckv_all_domain = NULL; + ConfigKeyVal *ckv_drv = NULL; + DbSubOp op = {kOpReadMultiple, + kOpMatchCtrlr, + kOpInOutCtrlr | kOpInOutDomain}; + + GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom_in); + key_vtn_t *vtnkey = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + uuu::upll_strncpy(vtnkey->vtn_name, reinterpret_cast + ( + ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + ckv_all_domain = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtnkey, NULL); + SET_USER_DATA_CTRLR(ckv_all_domain, ctrlr_dom_in.ctrlr); + result_code = ReadConfigDB(ckv_all_domain, UPLL_DT_RUNNING, + UNC_OP_READ, op, dmi, CTRLRTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(ckv_all_domain); + return result_code; + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("ReadConfigDB from rename tbl failed." + "Error code : %d", + result_code); + DELETE_IF_NOT_NULL(ckv_all_domain); + return result_code; + } + + ConfigKeyVal *result_ckv = NULL; + for (ckv_domain = ckv_all_domain; ckv_domain; + ckv_domain = ckv_domain->get_next_cfg_key_val()) { + controller_domain ctrlr_dom_db; + ctrlr_dom_db.ctrlr = NULL; + ctrlr_dom_db.domain = NULL; + GET_USER_DATA_CTRLR_DOMAIN(ckv_domain, ctrlr_dom_db); + if (strncmp(reinterpret_cast(ctrlr_dom_in.domain), + reinterpret_cast(ctrlr_dom_db.domain), + kMaxLenDomainId +1) >= 0) { + UPLL_LOG_TRACE("ctrlr_dom_in.domain %s > ctrlr" + "_dom_db.domain %s", + ctrlr_dom_in.domain, ctrlr_dom_db.domain); + continue; + } + UPLL_LOG_TRACE("ckv_domain in loop is \n %s", + ckv_domain->ToStrAll().c_str()); + result_code = DupConfigKeyValVtnMapping(ckv_drv, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed err code %d", + result_code); + delete ckv_all_domain; + return result_code; + } + ckv_domain->SetCfgVal(NULL); + key_vtn_t *vtn_key = &(reinterpret_cast + (ckv_drv->get_key())->vtn_key); + result_code = GetRenamedControllerKey(ckv_domain, + UPLL_DT_RUNNING, + dmi, &ctrlr_dom_db); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("GetRenamedControllerKey failed err code %d", + result_code); + delete ckv_all_domain; + delete ckv_drv; + return result_code; + } + uuu::upll_strncpy(vtn_key->vtn_name, reinterpret_cast + + (ckv_domain->get_key())->vtn_name, + (kMaxLenVtnName + 1)); + UPLL_LOG_TRACE("Controller id and domain id are %s %s", + ctrlr_dom_db.ctrlr, + ctrlr_dom_db.domain); + uuu::upll_strncpy(reinterpret_cast + (ckv_drv->get_key())->domain_id, + ctrlr_dom_db.domain, kMaxLenDomainId+1); + ipc_req.ckv_data = ckv_drv; + IpcResponse ipc_resp; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + if (!IpcUtil::SendReqToDriver( + (const char *)(ctrlr_dom_db.ctrlr), + reinterpret_cast(ctrlr_dom_db.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, &ipc_req, true, &ipc_resp)) { + UPLL_LOG_INFO("Request to driver for Key %d for" + "controller %s failed ", + ikey->get_key_type(), + reinterpret_cast(ctrlr_dom_db.ctrlr)); + delete ckv_all_domain; + delete ckv_drv; + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + return ipc_resp.header.result_code; + } + if (ipc_resp.header.result_code != UPLL_RC_SUCCESS + && ipc_resp.header.result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("Read from driver failed err code %d", + ipc_resp.header.result_code); + DELETE_IF_NOT_NULL(result_ckv); + DELETE_IF_NOT_NULL(ckv_all_domain); + DELETE_IF_NOT_NULL(ckv_drv); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + if (ipc_resp.header.result_code == + UPLL_RC_ERR_CTR_DISCONNECTED) { + ipc_resp.header.result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + return ipc_resp.header.result_code; + } else if (ipc_resp.header.result_code == + UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Record Not found for domain %s", + ctrlr_dom_db.domain); + delete ckv_drv; + ckv_drv = NULL; + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + continue; + } else if (ipc_resp.header.result_code == UPLL_RC_SUCCESS) { + if (ipc_resp.ckv_data == NULL) { + // NOTE: Is this still happening: ipc is + // successfull and no ckv_data? + delete ckv_all_domain; + delete ckv_drv; + UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", + ipc_resp.header.result_code); + return UPLL_RC_ERR_GENERIC; + } + ckv_drv->ResetWith(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + uint32_t rec_count_dummy = 0; + uint32_t *rcd = &rec_count_dummy; + result_code = MappingvExtTovBr(ckv_drv, header, dmi, rcd); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("MappingvExtTovBr failed result_code - %d", + result_code); + DELETE_IF_NOT_NULL(ckv_drv); + return UPLL_RC_ERR_GENERIC; + } + if (result_ckv == NULL) { + result_ckv = ckv_drv; + } else { + result_ckv->AppendCfgKeyVal(ckv_drv); + } + (*ckv_count)++; + ckv_drv = NULL; + } + if (*ckv_count >= header->rep_count) { + break; + } + } + delete ckv_all_domain; + if (result_ckv) { + ikey->ResetWith(result_ckv); + DELETE_IF_NOT_NULL(result_ckv); + result_code = UPLL_RC_SUCCESS; + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + + return result_code; + } + + upll_rc_t VtnMoMgr::ReadSingleCtlrlStation(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + uint32_t *rec_count) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + DbSubOp op = {kOpNotRead, + kOpMatchCtrlr, + kOpInOutCtrlr | kOpInOutDomain}; + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); + ipc_req.header.operation = UNC_OP_READ; + val_vtnstation_controller_st_t *in_valst = NULL; + val_vtnstation_controller_st_t *valst = NULL; + val_rename_vtn *rename_valst = NULL; + ConfigKeyVal *ckv_drv = NULL; + ConfigKeyVal *ckv_rename = NULL; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ckv_vbrif = NULL; + bool renamed = false; + IpcResponse ipc_resp; + UPLL_LOG_DEBUG("Input ikey is %s", ikey->ToStrAll().c_str()); + result_code = DupConfigKeyValVtnStation(okey, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed err code %d", + result_code); + return result_code; + } + ikey->SetCfgVal(NULL); + ctrlr_dom.ctrlr = reinterpret_cast + (okey->get_key())->controller_name; + ckv_rename = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + NULL, + NULL); + if (!(okey->get_cfg_val())) { + UPLL_LOG_TRACE("val_vtnstation_controller_st is NULL"); + } else if (okey->get_cfg_val()->get_st_num() == + IpctSt::kIpcStValVtnstationControllerSt) { + in_valst = reinterpret_cast + (GetVal(okey)); + if (!in_valst) { + UPLL_LOG_INFO("Input val_vtnstation_controller_st in Null"); + DELETE_IF_NOT_NULL(ckv_rename); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } + if ((in_valst->valid[UPLL_IDX_VTN_NAME_VSCS] == UNC_VF_VALID) && + (in_valst->valid[UPLL_IDX_VBR_NAME_VSCS] == UNC_VF_VALID) && + (in_valst->valid[UPLL_IDX_VBR_IF_NAME_VSCS] == + UNC_VF_VALID)) { + key_vbr_if_t *vbrif_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); + uuu::upll_strncpy(vbrif_key->vbr_key.vtn_key.vtn_name, + in_valst->vtn_name, (kMaxLenVtnName + 1)); + uuu::upll_strncpy(vbrif_key->vbr_key.vbridge_name, + in_valst->vbr_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(vbrif_key->if_name, in_valst->vbrif_name, + (kMaxLenInterfaceName + 1)); + ckv_vbrif = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVbrIf, + vbrif_key, NULL); + SET_USER_DATA_CTRLR(ckv_vbrif, ctrlr_dom.ctrlr); + MoMgrImpl *mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VBR_IF))); + + DbSubOp dbop = {kOpReadSingle, kOpMatchCtrlr, + kOpInOutCtrlr | kOpInOutDomain}; + result_code = mgr->ReadConfigDB(ckv_vbrif, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("ReadConfigDB from VbrIf tbl failed" + "errcode %d", + result_code); + DELETE_IF_NOT_NULL(ckv_vbrif); + DELETE_IF_NOT_NULL(ckv_rename); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + val_drv_vbr_if_t *val = reinterpret_cast + (GetVal(ckv_vbrif)); + if (val && (val->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] == + UNC_VF_VALID)) { + uuu::upll_strncpy(in_valst->vbrif_name, val->vex_name, + (kMaxLenInterfaceName + 1)); + } else { + UPLL_LOG_INFO("Port Map not configured"); + DELETE_IF_NOT_NULL(ckv_vbrif); + DELETE_IF_NOT_NULL(ckv_rename); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + GET_USER_DATA_DOMAIN(ckv_vbrif, ctrlr_dom.domain); + ckv_vbrif->SetCfgVal(NULL); + result_code = mgr->GetRenamedControllerKey(ckv_vbrif, + UPLL_DT_RUNNING, + dmi, + &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", + result_code); + DELETE_IF_NOT_NULL(ckv_vbrif); + DELETE_IF_NOT_NULL(ckv_rename); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + uuu::upll_strncpy(in_valst->vtn_name, + vbrif_key->vbr_key.vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(in_valst->vbr_name, vbrif_key-> + vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + } else if (in_valst->valid[UPLL_IDX_VTN_NAME_VSCS] == + UNC_VF_VALID) { + key_vtn_t *vtn_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn))); + uuu::upll_strncpy(vtn_key->vtn_name, in_valst->vtn_name, + (kMaxLenVtnName + 1)); + op.readop = kOpReadMultiple; + if (in_valst->valid[UPLL_IDX_DOMAIN_ID_VSCS] == + UNC_VF_VALID) { + ctrlr_dom.domain = in_valst->domain_id; + op.matchop = kOpMatchCtrlr | kOpMatchDomain; + op.readop = kOpReadSingle; + } + ckv_rename->SetKey(IpctSt::kIpcStKeyVtn, vtn_key); + SET_USER_DATA_CTRLR_DOMAIN(ckv_rename, ctrlr_dom); + result_code = ReadConfigDB(ckv_rename, UPLL_DT_RUNNING, + UNC_OP_READ, op, dmi, RENAMETBL); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("ReadConfigDB from rename tbl failed" + "err code %d", + result_code); + DELETE_IF_NOT_NULL(ckv_rename); + DELETE_IF_NOT_NULL(okey); + return result_code; + } else if (result_code == UPLL_RC_SUCCESS) { + renamed = true; + } + } + } + ConfigKeyVal *temp = ckv_rename; + for (; ckv_rename; ckv_rename = ckv_rename-> + get_next_cfg_key_val()) { + UPLL_LOG_TRACE("ckv_rename in loop is \n %s", + ckv_rename->ToStrAll().c_str()); + memset(&(ipc_resp), 0, sizeof(IpcResponse)); + result_code = DupConfigKeyValVtnStation(ckv_drv, okey); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(temp); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ckv_vbrif); + UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed. err : %d", + result_code); + return result_code; + } + valst = reinterpret_cast + (GetVal(ckv_drv)); + rename_valst = reinterpret_cast + (GetVal(ckv_rename)); + if (renamed && (valst != NULL) && (rename_valst != NULL)) { + uuu::upll_strncpy(valst->vtn_name, rename_valst->new_name, + (kMaxLenVtnName + 1)); + } + ipc_req.ckv_data = ckv_drv; + UPLL_LOG_DEBUG("Controller id and domain id are %s %s", + ctrlr_dom.ctrlr, + ctrlr_dom.domain); + if (!IpcUtil::SendReqToDriver((const char *)(ctrlr_dom.ctrlr), + reinterpret_cast + (ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_resp)) { + UPLL_LOG_INFO("Request to driver for Key %d for" + "controller %s failed ", + ikey->get_key_type(), + reinterpret_cast(ctrlr_dom.ctrlr)); + DELETE_IF_NOT_NULL(ckv_drv); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ckv_vbrif); + DELETE_IF_NOT_NULL(temp); + return ipc_resp.header.result_code; + } + if (ipc_resp.header.result_code != UPLL_RC_SUCCESS + && ipc_resp.header.result_code != + UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("Read from driver failed err code %d", + ipc_resp.header.result_code); + DELETE_IF_NOT_NULL(ckv_drv); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ckv_vbrif); + DELETE_IF_NOT_NULL(temp); + return ipc_resp.header.result_code; + } else if (ipc_resp.header.result_code == + UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Record Not found for domain %s", + ctrlr_dom.domain); + result_code = ipc_resp.header.result_code; + DELETE_IF_NOT_NULL(ckv_drv); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + continue; + } else if (ipc_resp.header.result_code == + UPLL_RC_SUCCESS) { + if (ipc_resp.ckv_data == NULL) { + UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", + ipc_resp.header.result_code); + DELETE_IF_NOT_NULL(ckv_drv); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ckv_vbrif); + DELETE_IF_NOT_NULL(temp); + return UPLL_RC_ERR_GENERIC; + } + ckv_drv->ResetWith(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + result_code = MappingvExtTovBr(ckv_drv, + header, + dmi, + rec_count); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("MappingvExtTovBr failed result_code - %d", + result_code); + DELETE_IF_NOT_NULL(ckv_drv); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ckv_vbrif); + DELETE_IF_NOT_NULL(temp); + return result_code; + } + UPLL_LOG_TRACE("record count is %d", *rec_count); + ikey->AppendCfgVal(ckv_drv->GetCfgValAndUnlink()); + } + DELETE_IF_NOT_NULL(ckv_drv); + } + DELETE_IF_NOT_NULL(ckv_vbrif); DELETE_IF_NOT_NULL(okey); - okey = next_ckv; - okey_mapped = true; - } else { - okey->AppendCfgKeyVal(next_ckv); - } - } - next_ckv = NULL; - } - if (rec_count != 0) { - header->rep_count = rec_count; - ikey->ResetWith(okey); - DELETE_IF_NOT_NULL(okey); - result_code = UPLL_RC_SUCCESS; - } else { - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(next_ckv); - if (result_code == UPLL_RC_SUCCESS || - result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - } - break; - } - default: - return UPLL_RC_ERR_GENERIC; - break; - } - - return result_code; -} - -upll_rc_t -VtnMoMgr::MappingvExtTovBr(ConfigKeyVal * ikey, - IpcReqRespHeader * req, - DalDmlIntf * dmi, uint32_t *&rec_count) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VBR_IF))); - val_vtnstation_controller_st *valst = NULL; - val_vtn_mapping_controller_st *val_map = NULL; - key_vbr_if_t *key_vbrif = NULL; - ConfigKeyVal *tmpckv = NULL; - if ((GetVal(ikey)) == NULL) { - UPLL_LOG_DEBUG("Val struct is not present from driver response"); - return UPLL_RC_ERR_GENERIC; - } - ConfigVal *tmp_cval = NULL; - UPLL_LOG_DEBUG("ikey in MappingvExtTovBr is %s", ikey->ToStrAll().c_str()); - for (tmp_cval = ikey->get_cfg_val(); tmp_cval; - tmp_cval = tmp_cval->get_next_cfg_val()) { - if (UNC_KT_VTNSTATION_CONTROLLER == ikey->get_key_type()) { - UPLL_LOG_DEBUG("KetType Matched %d", ikey->get_key_type()); - if (IpctSt::kIpcStValVtnstationControllerSt == - tmp_cval->get_st_num()) { - (*rec_count)++; - UPLL_LOG_DEBUG("record count is %d", *rec_count); - valst = reinterpret_cast( - tmp_cval->get_val()); - if (!valst) { - UPLL_LOG_DEBUG("val_vtnstation_controller_st is NULL"); - ConfigKeyVal::Free(key_vbrif); - return UPLL_RC_ERR_GENERIC; - } - if (valst->map_type == UPLL_IF_VLAN_MAP) - continue; - if ((valst->valid[UPLL_IDX_VTN_NAME_VSCS] != UNC_VF_VALID) && - (valst->valid[UPLL_IDX_VBR_IF_NAME_VSCS] != UNC_VF_VALID)) { - UPLL_LOG_DEBUG("valid flag of vtn_name/vbrif_name is invalid"); - ConfigKeyVal::Free(key_vbrif); - return UPLL_RC_ERR_GENERIC; - } - uint8_t *ctrlr_id = reinterpret_cast + DELETE_IF_NOT_NULL(temp); + return result_code; + } + + bool + VtnMoMgr::IsAllInvalidAttributes( + const val_vtnstation_controller_st *val_stn) { + for (uint16_t iter = 0; + iter < sizeof(val_stn->valid)/sizeof(val_stn->valid[0]); + iter++) { + if (val_stn->valid[iter] != UNC_VF_INVALID) { + return false; + } + } + return true; + } + + upll_rc_t + VtnMoMgr::ReadMo(IpcReqRespHeader * header, + ConfigKeyVal * ikey, + DalDmlIntf * dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + key_vtn_controller *mkey = NULL; + ConfigKeyVal *ck_ctrlr = NULL; + DbSubOp op = {kOpReadMultiple, kOpMatchCtrlr, + kOpInOutCtrlr | kOpInOutDomain}; + if ((ikey->get_key_type() == UNC_KT_VTN_MAPPING_CONTROLLER) || + (ikey->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER)) { + result_code = ValidateMessage(header, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; + } + } + uint32_t rec_count = 0; + uint32_t *tmp_count; + switch (ikey->get_key_type()) { + case UNC_KT_VTN: + result_code = MoMgrImpl::ReadMo(header, ikey, dmi); + return result_code; + break; + case UNC_KT_VTNSTATION_CONTROLLER: + if (header->option1 == UNC_OPT1_NORMAL || + header->option1 == UNC_OPT1_DETAIL) { + result_code = ReadSingleCtlrlStation(header, ikey, + dmi, &rec_count); + } else if (header->option1 == UNC_OPT1_COUNT && + (GetVal(ikey) != NULL) && + !IsAllInvalidAttributes( + reinterpret_cast + + (const_cast(GetVal(ikey))))) { + header->option1 = UNC_OPT1_NORMAL; + result_code = ReadSingleCtlrlStation(header, ikey, + dmi, &rec_count); + result_code = (result_code == + UPLL_RC_ERR_NO_SUCH_INSTANCE) ? + UPLL_RC_SUCCESS : result_code; + header->option1 = UNC_OPT1_COUNT; + uint32_t *count = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(uint32_t))); + *count = rec_count; + ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStUint32, + count)); + } else if (header->option1 == UNC_OPT1_COUNT) { + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + memcpy(&(ipc_req.header), + header, + sizeof(IpcReqRespHeader)); + IpcResponse ipc_resp; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + ipc_req.ckv_data = ikey; + ctrlr_dom.ctrlr = + reinterpret_cast (ikey->get_key())->controller_name; - key_vtn_t *vtnkey = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); - uuu::upll_strncpy(vtnkey->vtn_name, - valst->vtn_name, (kMaxLenVtnName + 1)); - ConfigKeyVal *ckv_rename = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, vtnkey, NULL); - result_code = GetRenamedUncKey(ckv_rename, UPLL_DT_RUNNING, - dmi, ctrlr_id); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_INFO("GetRenamedUncKey failed error code %d", result_code); - if (ckv_rename) delete ckv_rename; - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(valst->vtn_name, reinterpret_cast - (ckv_rename->get_key())->vtn_name, - (kMaxLenVtnName + 1)); - key_vbrif = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); - uuu::upll_strncpy(key_vbrif->vbr_key.vtn_key.vtn_name, - valst->vtn_name, (kMaxLenVtnName + 1)); - val_drv_vbr_if_t *drv_val_vbrif = static_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if_t))); - drv_val_vbrif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(drv_val_vbrif->vex_name, - valst->vbrif_name, (kMaxLenInterfaceName + 1)); - tmpckv = new - ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key_vbrif, - new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, drv_val_vbrif)); - UPLL_LOG_DEBUG("tmpckv is %s", tmpckv->ToStrAll().c_str()); - result_code = mgr->ReadConfigDB(tmpckv, req->datatype, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("vbrif ReadConfigDB Failed result_code - %d", - result_code); - delete tmpckv; - delete ckv_rename; - return UPLL_RC_ERR_GENERIC; - } - key_vbr_if_t *vbrif_key = reinterpret_cast - (tmpckv->get_key()); - if (vbrif_key) { - valst->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; - uuu::upll_strncpy(valst->vbr_name, vbrif_key->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(valst->vbrif_name, vbrif_key->if_name, - (kMaxLenInterfaceName + 1)); - } - delete tmpckv; - delete ckv_rename; - key_vbrif = NULL; - tmpckv = NULL; - } - } else if (UNC_KT_VTN_MAPPING_CONTROLLER == ikey->get_key_type()) { - UPLL_LOG_DEBUG("KetType Matched %d", ikey->get_key_type()); - if (IpctSt::kIpcStValVtnMappingControllerSt == - tmp_cval->get_st_num()) { - val_map = reinterpret_cast - (tmp_cval->get_val()); - if (!val_map) { - UPLL_LOG_DEBUG("val_vtn_mapping_controller_st is NULL"); - ConfigKeyVal::Free(key_vbrif); - return UPLL_RC_ERR_GENERIC; - } - if (val_map->map_type == UPLL_IF_VLAN_MAP) - continue; - // Valid flag check before accessing the driver reponse val - if (val_map->valid[UPLL_IDX_VBR_IF_NAME_VMCS] != UNC_VF_VALID) { - UPLL_LOG_DEBUG("valid flag of vbrif_name is invalid"); - ConfigKeyVal::Free(key_vbrif); - return UPLL_RC_ERR_GENERIC; - } - (*rec_count)++; - UPLL_LOG_DEBUG("record count is %d", *rec_count); - key_vbrif = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); - uint8_t *ctrlr_id = reinterpret_cast - (ikey->get_key())->controller_name; - key_vtn_t *vtnkey = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); - uuu::upll_strncpy(vtnkey->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - ConfigKeyVal *ckv_rename = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, vtnkey, NULL); - result_code = GetRenamedUncKey(ckv_rename, UPLL_DT_RUNNING, - dmi, ctrlr_id); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_INFO("GetRenamedUncKey failed. Error : %d", result_code); - if (ckv_rename) delete ckv_rename; - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - reinterpret_cast - (ckv_rename->get_key())->vtn_name, - (kMaxLenVtnName + 1)); - uuu::upll_strncpy(key_vbrif->vbr_key.vtn_key.vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); - val_drv_vbr_if_t *drv_val_vbrif = static_cast - (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if_t))); - drv_val_vbrif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = UNC_VF_VALID; - uuu::upll_strncpy(drv_val_vbrif->vex_name, - val_map->vbrif_name, (kMaxLenInterfaceName + 1)); - tmpckv = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, - key_vbrif, - new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, - drv_val_vbrif)); - result_code = mgr->ReadConfigDB(tmpckv, req->datatype, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("vbrif ReadConfigDB Failed result_code - %d", - result_code); - delete ckv_rename; - delete tmpckv; - return UPLL_RC_ERR_GENERIC; - } - UPLL_LOG_DEBUG("tmpckv value is %s", tmpckv->ToStrAll().c_str()); - key_vbr_if_t *vbrif_key = reinterpret_cast - (tmpckv->get_key()); - if (vbrif_key) { - val_map->valid[UPLL_IDX_VBR_NAME_VMCS] = UNC_VF_VALID; - uuu::upll_strncpy(val_map->vbr_name, - vbrif_key->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); - uuu::upll_strncpy(val_map->vbrif_name, vbrif_key->if_name, - (kMaxLenInterfaceName + 1)); - } - delete tmpckv; - delete ckv_rename; - key_vbrif = NULL; - tmpckv = NULL; - } - } - } - return result_code; -} - -/* Semantic check for the VTN Delete operation */ -upll_rc_t -VtnMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; - if (NULL == ikey || !dmi) - return UPLL_RC_ERR_GENERIC; - /* Create the Vtunnel Configkey for checking vtn is underlay vtn or not */ - result_code = CreateVtunnelKey(ikey, okey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not Create VtunnelKey %d", result_code); - return result_code; - } - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTUNNEL))); - if (!mgr) { - UPLL_LOG_DEBUG("Instance is Null"); - delete okey; - return UPLL_RC_ERR_GENERIC; - } - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; - /* Checks the given vtn is exists or not */ - result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (UPLL_RC_SUCCESS == result_code) { - UPLL_LOG_DEBUG("Could not delete an Underlay Vtn referenced to " - " an Overlay Vtn"); - delete okey; - return UPLL_RC_ERR_CFG_SEMANTIC; - } - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; - DELETE_IF_NOT_NULL(okey); - return result_code; -} - -/* This function creates the configkey for the vtunnel - * This funciton take the vtn name and addit into the Vtunnel - * value structure - */ -upll_rc_t -VtnMoMgr::CreateVtunnelKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigVal *tmp; - if (!ikey || !(ikey->get_key())) - return UPLL_RC_ERR_GENERIC; - - key_vtunnel_t *vtunnel_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel_t))); - val_vtunnel_t *vtn_val_vtunnel = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtunnel_t))); - /* validate message taken care of vtn lengh checking*/ - uuu::upll_strncpy( - vtn_val_vtunnel->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_name, (kMaxLenVtnName+1)); - vtn_val_vtunnel->valid[UPLL_IDX_VTN_NAME_VTNL] = UNC_VF_VALID; - - tmp = new ConfigVal(IpctSt::kIpcStValVtunnel, vtn_val_vtunnel); - if (!tmp) { - UPLL_LOG_ERROR("Memory Allocation failed for tmp1"); - FREE_IF_NOT_NULL(vtunnel_key); - FREE_IF_NOT_NULL(vtn_val_vtunnel); - return UPLL_RC_ERR_GENERIC; - } - okey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVtunnel, - vtunnel_key, tmp); - if (!okey) { - delete tmp; - FREE_IF_NOT_NULL(vtunnel_key); - return UPLL_RC_ERR_GENERIC; - } - SET_USER_DATA(okey, ikey); - return result_code; -} - -upll_rc_t -VtnMoMgr::SwapKeyVal(ConfigKeyVal *ikey, - ConfigKeyVal *&okey, - DalDmlIntf *dmi, - uint8_t *ctrlr, - bool &no_rename) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - // ConfigVal *tmp1; - okey = NULL; - if (!ikey || !(ikey->get_key()) || !(strlen(reinterpret_cast - (ctrlr)))) { - UPLL_LOG_DEBUG("Input is NULL"); - return UPLL_RC_ERR_GENERIC; - } - if (ikey->get_key_type() != UNC_KT_VTN) { - UPLL_LOG_DEBUG("Bad Request"); - return UPLL_RC_ERR_BAD_REQUEST; - } - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (cfg_val == NULL) { - UPLL_LOG_DEBUG("Configval is NULL"); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_rename_vtn_t *tval = reinterpret_cast - (cfg_val->get_val()); - if (!tval) { - UPLL_LOG_DEBUG("Val is NULL"); - return UPLL_RC_ERR_GENERIC; - } - key_vtn_t *key_vtn = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); - /* No rename */ - if (tval->valid[UPLL_IDX_NEW_NAME_RVTN] == UNC_VF_VALID_NO_VALUE) { - no_rename = true; - uuu::upll_strncpy(key_vtn->vtn_name, - ((reinterpret_cast(ikey->get_key()))->vtn_name), - (kMaxLenVtnName + 1)); - UPLL_LOG_DEBUG("No Rename Operation %d", no_rename); - } else { - if ( tval->valid[UPLL_IDX_NEW_NAME_RVTN] == UNC_VF_VALID ) { - // checking the string is empty or not - if (!strlen(reinterpret_cast(tval->new_name))) { - ConfigKeyVal::Free(key_vtn); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(key_vtn->vtn_name, tval->new_name, - (kMaxLenVtnName + 1)); - // copy the new UNC name to KeyVtn - /* The New Name and PFC name should not be same name */ - if (!strcmp(reinterpret_cast - ((reinterpret_cast(ikey->get_key()))->vtn_name), - reinterpret_cast(tval->new_name))) { - ConfigKeyVal::Free(key_vtn); - return UPLL_RC_ERR_GENERIC; - } - } else { - UPLL_LOG_DEBUG("Invalid Input"); - ConfigKeyVal::Free(key_vtn); - return UPLL_RC_ERR_GENERIC; - } - } - okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key_vtn, NULL); - return result_code; -} - -bool VtnMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { - val_vtn_t *val_vtn1 = reinterpret_cast(val1); - val_vtn1->valid[UPLL_IDX_DESC_VTN] = UNC_VF_INVALID; - // to be uncommented when vtn supports other attributes - // other than description + if (!IpcUtil::SendReqToDriver( + (const char *)(ctrlr_dom.ctrlr), + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_resp)) { + UPLL_LOG_INFO("Request to driver for Key %d on" + "controller %s failed", + ikey->get_key_type(), + reinterpret_cast + (ctrlr_dom.ctrlr)); + return ipc_resp.header.result_code; + } + if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Read from driver failed err code %d", + ipc_resp.header.result_code); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + return ipc_resp.header.result_code; + } + if (ipc_resp.ckv_data == NULL) { + UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", + ipc_resp.header.result_code); + return UPLL_RC_ERR_GENERIC; + } + ikey->ResetWith(ipc_resp.ckv_data); + DELETE_IF_NOT_NULL(ipc_resp.ckv_data); + } + break; + case UNC_KT_VTN_MAPPING_CONTROLLER: + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + memcpy(&(ipc_req.header), + header, + sizeof(IpcReqRespHeader)); + IpcResponse ipc_resp; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + mkey = reinterpret_cast + (ikey->get_key()); + ctrlr_dom.ctrlr = mkey->controller_name; + ctrlr_dom.domain = mkey->domain_id; + result_code = GetChildConfigKey(ck_ctrlr, ikey); + if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_ctrlr); + UPLL_LOG_INFO("GetChildConfigKey failed err code %d", + result_code); + return result_code; + } + SET_USER_DATA_CTRLR_DOMAIN(ck_ctrlr, ctrlr_dom); + result_code = UpdateConfigDB(ck_ctrlr, UPLL_DT_RUNNING, + UNC_OP_READ, + dmi, + &op, + CTRLRTBL); + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("ReadConfigDB Failed result_code - %d", + result_code); + DELETE_IF_NOT_NULL(ck_ctrlr); + return result_code; + } + result_code = GetRenamedControllerKey(ck_ctrlr, + UPLL_DT_RUNNING, + dmi, + &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetRenamedControllerKey Failed" + "result_code - %d", + result_code); + DELETE_IF_NOT_NULL(ck_ctrlr); + return result_code; + } + uuu::upll_strncpy(mkey->vtn_key.vtn_name, + reinterpret_cast + (ck_ctrlr->get_key())->vtn_name, + (kMaxLenVtnName + 1)); + ipc_req.ckv_data = ikey; + if (!IpcUtil::SendReqToDriver( + (const char *)(ctrlr_dom.ctrlr), + reinterpret_cast(ctrlr_dom.domain), + PFCDRIVER_SERVICE_NAME, + PFCDRIVER_SVID_LOGICAL, + &ipc_req, + true, + &ipc_resp)) { + UPLL_LOG_INFO("Request to driver for Key %d for" + "controller %s failed ", + ikey->get_key_type(), + reinterpret_cast + (ctrlr_dom.ctrlr)); + return ipc_resp.header.result_code; + } + if (ipc_resp.header.result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Read from driver failed err code %d", + ipc_resp.header.result_code); + return ipc_resp.header.result_code; + } + if (ipc_resp.ckv_data == NULL) { + UPLL_LOG_DEBUG("Ipc Response ckv_data is NUll %d", + ipc_resp.header.result_code); + DELETE_IF_NOT_NULL(ck_ctrlr); + return UPLL_RC_ERR_GENERIC; + } + ikey->ResetWith(ipc_resp.ckv_data); + tmp_count = &rec_count; + result_code = MappingvExtTovBr(ikey, + header, + dmi, + tmp_count); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("MappingvExtTovBr failed result" + "_code - %d", + result_code); + return result_code; + } + // header->rep_count = *tmp_count; + break; + default: + UPLL_LOG_INFO("Invalid KeyType %d", ikey->get_key_type()); + DELETE_IF_NOT_NULL(ck_ctrlr); + return UPLL_RC_ERR_GENERIC; + } + return result_code; + } + + upll_rc_t VtnMoMgr::ReadSiblingCount(IpcReqRespHeader *header, + ConfigKeyVal* ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + uint32_t *count; + switch (ikey->get_key_type()) { + case UNC_KT_VTN: + result_code = MoMgrImpl::ReadSiblingCount(header, ikey, dmi); + return result_code; + break; + case UNC_KT_VTNSTATION_CONTROLLER: + header->operation = UNC_OP_READ_SIBLING; + header->rep_count = UINT32_MAX; + result_code = ReadSiblingMo(header, ikey, false, dmi); + header->operation = UNC_OP_READ_SIBLING_COUNT; + count = + reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(uint32_t))); + *count = header->rep_count; + ikey->SetCfgVal(new ConfigVal(IpctSt::kIpcStUint32, count)); + break; + default: + break; + } + return result_code; + } + upll_rc_t + VtnMoMgr::ReadSiblingMo(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + bool begin, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + controller_domain ctrlr_dom; + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + ConfigKeyVal *next_ckv = NULL; + if ((ikey->get_key_type() == UNC_KT_VTN_MAPPING_CONTROLLER) || + (ikey->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER)) { + result_code = ValidateMessage(header, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; + } + } + key_vtn_controller *mkey = NULL; + ConfigKeyVal *ck_ctrlr = NULL; + uint32_t rec_count = 0; + uint32_t count = 0; + IpcResponse ipc_resp; + memset(&ipc_resp, 0, sizeof(IpcResponse)); + IpcRequest ipc_req; + memset(&ipc_req, 0, sizeof(ipc_req)); + memcpy(&(ipc_req.header), header, sizeof(IpcReqRespHeader)); + ipc_req.ckv_data = ikey; + uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); + string ctrlr_id; + unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; + ConfigKeyVal *okey = NULL; + key_vtnstation_controller *vtn_stkey = NULL; + key_vtn_controller *vtnkey = NULL; + DbSubOp op = {kOpReadExist, + kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain}; + switch (ikey->get_key_type()) { + case UNC_KT_VTN: + result_code = MoMgrImpl::ReadSiblingMo(header, + ikey, + false, + dmi); + return result_code; + break; + case UNC_KT_VTNSTATION_CONTROLLER: + result_code = DupConfigKeyValVtnStation(okey, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed" + "err code %d", + result_code); + return result_code; + } + if (header->operation == UNC_OP_READ_SIBLING_BEGIN) { + result_code = ctrlr_mgr->GetFirstCtrlrName( + UPLL_DT_RUNNING, + &ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("GetFirstCtrlrName failed err code %d", + result_code); + return result_code; + } + ctrlr_dom.ctrlr = reinterpret_cast( + const_cast(ctrlr_id.c_str())); + UPLL_LOG_DEBUG("ControllerId and DomainId are %s %s", + ctrlr_dom.ctrlr, + ctrlr_dom.domain); + if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast + (ctrlr_dom.ctrlr), + UPLL_DT_RUNNING, + &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { + UPLL_LOG_INFO("Controller type is %d", ctrlrtype); + } else { + uuu::upll_strncpy( + reinterpret_cast + (okey->get_key())->controller_name, + ctrlr_dom.ctrlr, + (kMaxLenCtrlrId + 1)); + result_code = ReadSingleCtlrlStation(header, okey, + dmi, &rec_count); + if (result_code == UPLL_RC_SUCCESS) + count++; + } + } else { + ctrlr_id = reinterpret_cast + (reinterpret_cast + (okey->get_key())->controller_name); + } + UPLL_LOG_DEBUG("Input Controller Id is %s", + ctrlr_id.c_str()); + while ((UPLL_RC_SUCCESS == ctrlr_mgr->GetNextCtrlrName( + ctrlr_id, + UPLL_DT_RUNNING, + &ctrlr_id)) && + (count <= header->rep_count)) { + UPLL_LOG_DEBUG("sibling Controller Id is %s", + ctrlr_id.c_str()); + ctrlr_dom.ctrlr = reinterpret_cast( + const_cast(ctrlr_id.c_str())); + if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast + (ctrlr_dom.ctrlr), + UPLL_DT_RUNNING, + &ctrlrtype)) || + (ctrlrtype != UNC_CT_PFC)) { + UPLL_LOG_INFO("Controller type is %d", ctrlrtype); + continue; + } + result_code = DupConfigKeyValVtnStation(next_ckv, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed" + "err code %d", + result_code); + return result_code; + } + vtn_stkey = reinterpret_cast + (next_ckv->get_key()); + uuu::upll_strncpy(vtn_stkey->controller_name, + ctrlr_dom.ctrlr, + (kMaxLenCtrlrId + 1)); + result_code = ReadSingleCtlrlStation(header, next_ckv, + dmi, &rec_count); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + next_ckv = NULL; + continue; + } + count++; + okey->AppendCfgKeyVal(next_ckv); + next_ckv = NULL; + } + header->rep_count = count; + ikey->ResetWith(okey); + break; + case UNC_KT_VTN_MAPPING_CONTROLLER: + { + mkey = reinterpret_cast + (ikey->get_key()); + ctrlr_dom.ctrlr = mkey->controller_name; + ctrlr_dom.domain = mkey->domain_id; + result_code = GetChildConfigKey(ck_ctrlr, ikey); + + /* Addressed coverity REVERSE_INULL issue */ + if (!ck_ctrlr || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("GetChildConfigKey failed err code %d", + result_code); + DELETE_IF_NOT_NULL(ck_ctrlr); + return result_code; + } + SET_USER_DATA_CTRLR_DOMAIN(ck_ctrlr, ctrlr_dom); #if 0 - val_vtn_ctrlr *ctrlr_val = reinterpret_cast(val2); - for (unsigned int loop = 0; - loop < sizeof(val_vtn1->valid)/sizeof(val_vtn1->valid[0]); - ++loop) { - if (ctrlr_val->cs_attr[loop] == UNC_CS_NOT_SUPPORTED) - val_vtn1->valid[loop] = UNC_VF_INVALID; - } - if (op != UNC_OP_CREATE) - return CompareValidValue(val1, val2, copy_to_running); + if (header->operation == UNC_OP_READ_SIBLING_BEGIN) + op.matchop = kOpMatchNone; #endif - return false; -} - -bool VtnMoMgr::CompareValidValue(void *&val1, void *val2, - bool copy_to_running) { - UPLL_FUNC_TRACE; - bool invalid_attr = true; - val_vtn_t *val_vtn1 = reinterpret_cast(val1); - val_vtn_t *val_vtn2 = reinterpret_cast(val2); - val_vtn_index vtn_description = UPLL_IDX_DESC_VTN; - if (UNC_VF_INVALID == val_vtn1->valid[vtn_description] && - UNC_VF_VALID == val_vtn2->valid[vtn_description]) - val_vtn1->valid[vtn_description] = UNC_VF_VALID_NO_VALUE; - if (UNC_VF_INVALID != val_vtn1->valid[vtn_description]) { - if (!copy_to_running || - ((UNC_VF_VALID == val_vtn1->valid[vtn_description]) && - (!strcmp(reinterpret_cast(val_vtn1->description), - reinterpret_cast(val_vtn2->description)) ))) - val_vtn1->valid[vtn_description] = UNC_VF_INVALID; - } - /* filters the attributes from being sent to the controller */ - for (unsigned int loop = 0; - loop < sizeof(val_vtn1->valid)/sizeof(val_vtn1->valid[0]); - ++loop) { - if ((UNC_VF_VALID == val_vtn1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == val_vtn1->valid[loop])) { - invalid_attr = false; - break; - } - } - return invalid_attr; -} - -upll_rc_t VtnMoMgr::UpdateCtrlrConfigStatus( - unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - val_vtn_ctrlr_t *val; - val = (ckv_running != NULL)? - reinterpret_cast(GetVal(ckv_running)):NULL; - if (NULL == val) { - return UPLL_RC_ERR_GENERIC; - } - if (uuc::kUpllUcpCreate == phase ) - val->cs_row_status = cs_status; - if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) - val->cs_row_status = cs_status; - if ((cs_status == UNC_CS_INVALID && - UNC_VF_VALID == val->valid[UPLL_IDX_DESC_VTN]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[UPLL_IDX_DESC_VTN] = cs_status; - return result_code; -} - -upll_rc_t -VtnMoMgr::UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - val_vtn_t *val; - val = (ckv_running != NULL)? - reinterpret_cast(GetVal(ckv_running)):NULL; - if (NULL == val) { - return UPLL_RC_ERR_GENERIC; - } - if (uuc::kUpllUcpCreate == phase ) - val->cs_row_status = cs_status; - for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { - if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; - } - return result_code; -} - -upll_rc_t -VtnMoMgr::SetVtnConsolidatedStatus(ConfigKeyVal *ikey, - uint8_t *ctrlr_id, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ctrlr_ckv = NULL; - val_vtn_ctrlr *ctrlr_val = NULL; - uint8_t *vtn_exist_on_ctrlr = NULL; - bool applied = false, not_applied = false, invalid = false; - unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; - if (!ikey || !dmi || !ctrlr_id) { - UPLL_LOG_DEBUG("Invalid Input"); - return UPLL_RC_ERR_GENERIC; - } - result_code = GetChildConfigKey(ctrlr_ckv, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", result_code); - return result_code; - } - result_code = ReadConfigDB(ctrlr_ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, - CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB from ctrltbl failed err code %d", - result_code); - delete ctrlr_ckv; - return result_code; - } - - for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { - ctrlr_val = reinterpret_cast(GetVal(tmp)); - if (!ctrlr_val) { - UPLL_LOG_DEBUG("Controller Value is empty"); - tmp = NULL; - delete ctrlr_ckv; - return UPLL_RC_ERR_GENERIC; - } - GET_USER_DATA_CTRLR(tmp, vtn_exist_on_ctrlr); - if (!strcmp(reinterpret_cast(vtn_exist_on_ctrlr), - reinterpret_cast(ctrlr_id))) - continue; // skipping entry of deleted controller - - switch (ctrlr_val->cs_row_status) { - case UNC_CS_APPLIED: - applied = true; - break; - case UNC_CS_NOT_APPLIED: - case UNC_CS_NOT_SUPPORTED: - not_applied = true; - break; - case UNC_CS_INVALID: - invalid = true; - break; - default: - UPLL_LOG_DEBUG("Invalid status"); - } - vtn_exist_on_ctrlr = NULL; - } - if (invalid) - c_status = UNC_CS_INVALID; - else if (applied && !not_applied) - c_status = UNC_CS_APPLIED; - else if (!applied && not_applied) - c_status = UNC_CS_NOT_APPLIED; - else if (applied && not_applied) - c_status = UNC_CS_PARTIALLY_APPLIED; - else - c_status = UNC_CS_APPLIED; - // Set cs_status - val_vtn_t *vtnval = static_cast(GetVal(ikey)); - vtnval->cs_row_status = c_status; - vtnval->cs_attr[0] = UNC_CS_APPLIED; - DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, - &dbop_update, MAINTBL); - delete ctrlr_ckv; - return result_code; -} - -upll_rc_t -VtnMoMgr::SetConsolidatedStatus(ConfigKeyVal * ikey, - DalDmlIntf * dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckv = NULL; - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCs }; - result_code = GetChildConfigKey(ckv, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_INFO("GetChildConfigKey failed err code %d", result_code); - return result_code; - } - result_code = ReadConfigDB(ckv, UPLL_DT_RUNNING, UNC_OP_READ, dbop, dmi, - CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_INFO("ReadConfigDB from ctrltbl failed err code %d", - result_code); - delete(ckv); - return result_code; - } - list < unc_keytype_configstatus_t > list_cs_row; - val_vtn_ctrlr *val; - ConfigKeyVal *tmp = ckv; - for (; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { - val = reinterpret_cast(GetVal(tmp)); - list_cs_row.push_back(static_cast(val->cs_row_status)); - } - DELETE_IF_NOT_NULL(ckv); - val_vtn_t *val_temp = reinterpret_cast(GetVal(ikey)); - val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_UPDATE, dmi, - MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SetConsolidatedStatus failed. UpdateConfigDB Failed" - " Result Code - %d", result_code); - } - return result_code; -} - -upll_rc_t -VtnMoMgr::MergeValidateChildren(ConfigKeyVal *import_ckval, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!import_ckval || !(import_ckval->get_key())) { - UPLL_LOG_DEBUG("Invalid Input"); - return UPLL_RC_ERR_GENERIC; - } - ConfigKeyVal *ckval = NULL; - unc_key_type_t child_key[]= { - UNC_KT_VBRIDGE, UNC_KT_VROUTER, - UNC_KT_VRT_IF, UNC_KT_VLINK - }; - while (import_ckval) { - for (unsigned int i = 0; - i < sizeof(child_key)/sizeof(child_key[0]); i++) { - const unc_key_type_t ktype = child_key[i]; - MoMgrImpl *mgr = reinterpret_cast( - const_cast(GetMoManager(ktype))); - if (!mgr) { - UPLL_LOG_DEBUG("Instance is NULL"); - return UPLL_RC_ERR_GENERIC; - } - result_code = mgr->GetChildConfigKey(ckval, import_ckval); - if (UPLL_RC_SUCCESS != result_code) { - if (ckval) { - delete ckval; - ckval = NULL; - } - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); - return result_code; - } - result_code = mgr->MergeValidate(child_key[i], ctrlr_id, ckval, dmi); - UPLL_LOG_TRACE("Result code is %d key type %d", result_code, ktype); - - if (UPLL_RC_SUCCESS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - if (UPLL_RC_ERR_MERGE_CONFLICT == result_code) { - UPLL_LOG_DEBUG(" Merge Conflict %d", result_code); - ikey->ResetWith(ckval); - if (ikey) - UPLL_LOG_DEBUG("Conflict detail %s", ikey->ToStrAll().c_str()); - } else { - UPLL_LOG_DEBUG("Merge Validate Failed %d", result_code); - } - if (NULL != ckval) { - delete ckval; - ckval = NULL; - } - return result_code; - } - if (ckval) - delete ckval; - ckval = NULL; - } - import_ckval = import_ckval->get_next_cfg_key_val(); - } - result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) ? - UPLL_RC_SUCCESS : result_code; - return result_code; -} - -upll_rc_t -VtnMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - // Import Controller Name Not needed so checks is missing. - ConfigKeyVal *import_ckval = NULL; - result_code = GetChildConfigKey(import_ckval, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfig Failed "); - return result_code; - } - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(import_ckval, UPLL_DT_IMPORT, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("No Records in the Import DB"); - DELETE_IF_NOT_NULL(import_ckval); - return UPLL_RC_SUCCESS; - } - - /* Other than UPLL_RC_ERR_NO_SUCH_INSTANCE AND UPLL_RC_SUCCESS */ - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" ReadConfigDB Failed %d", result_code); - DELETE_IF_NOT_NULL(import_ckval); - return result_code; - } - ConfigKeyVal *start_ckv = import_ckval; - result_code = MergeValidateChildren(import_ckval, ctrlr_id, ikey, dmi); - DELETE_IF_NOT_NULL(start_ckv); // check with Karthik - - if (UPLL_RC_SUCCESS == result_code) { - ConfigKeyVal *req = NULL; - ConfigKeyVal *nreq = NULL; - DalCursor *dal_cursor_handle = NULL; - UPLL_LOG_TRACE("Create Entry in candidate"); - result_code = DiffConfigDB(UPLL_DT_IMPORT, UPLL_DT_CANDIDATE, - UNC_OP_CREATE, req, nreq, &dal_cursor_handle, dmi, MAINTBL); - while (UPLL_RC_SUCCESS == result_code) { - result_code = DalToUpllResCode(dmi->GetNextRecord(dal_cursor_handle)); - if (UPLL_RC_SUCCESS != result_code - && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("GetNextRecord Failed "); - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - if (dal_cursor_handle) - dmi->CloseCursor(dal_cursor_handle, true); - return result_code; - } - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - if (dal_cursor_handle) - dmi->CloseCursor(dal_cursor_handle, true); - return UPLL_RC_SUCCESS; - } - dbop.inoutop = kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain; - result_code = UpdateConfigDB(req, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, &dbop, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - if (dal_cursor_handle) - dmi->CloseCursor(dal_cursor_handle, true); - UPLL_LOG_DEBUG("UpdateConfigDB Failed"); - return result_code; - } - } - DELETE_IF_NOT_NULL(req); - DELETE_IF_NOT_NULL(nreq); - if (dal_cursor_handle) - dmi->CloseCursor(dal_cursor_handle, true); - } - result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? - UPLL_RC_SUCCESS : result_code; - return result_code; -} - -upll_rc_t -VtnMoMgr::TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DalResultCode dal_result = uud::kDalRcSuccess; - ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; - controller_domain ctrlr_dom; - DalCursor *dal_cursor_handle; - IpcResponse resp; - memset(&resp, 0, sizeof(resp)); - unc_keytype_operation_t op = (phase == uuc::kUpllUcpCreate)?UNC_OP_CREATE: - ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: - ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE:UNC_OP_INVALID)); - ctrlr_dom.ctrlr = NULL; - ctrlr_dom.domain = NULL; - MoMgrTables tbl = (op != UNC_OP_UPDATE)?CTRLRTBL:MAINTBL; - result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, - op, req, nreq, &dal_cursor_handle, dmi, tbl); - resp.header.clnt_sess_id = session_id; - resp.header.config_id = config_id; - while (result_code == UPLL_RC_SUCCESS) { - // Get Next Record - dal_result = dmi->GetNextRecord(dal_cursor_handle); - result_code = DalToUpllResCode(dal_result); - if (result_code != UPLL_RC_SUCCESS) - break; - ck_main = NULL; - if (op != UNC_OP_UPDATE) { - if (op == UNC_OP_CREATE) - result_code = DupConfigKeyVal(ck_main, req, tbl); - else - result_code = GetChildConfigKey(ck_main, req); - if (!ck_main || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - if (ck_main) - delete ck_main; - return result_code; - } - GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - if ((ctrlr_dom.ctrlr == NULL) || (ctrlr_dom.domain == NULL)) { - UPLL_LOG_INFO("Invalid controller/domain"); - delete ck_main; - return UPLL_RC_ERR_GENERIC; - } - result_code = TxUpdateProcess(ck_main, &resp, - op, dmi, &ctrlr_dom); - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returns error %d", result_code); - *err_ckv = resp.ckv_data; - break; - } - DELETE_IF_NOT_NULL(resp.ckv_data); - } else { - ConfigKeyVal *ck_ctrlr = NULL; - result_code = DupConfigKeyVal(ck_main, req, tbl); - if (!ck_main || result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ck_main); - return result_code; - } + result_code = UpdateConfigDB(ck_ctrlr, + UPLL_DT_RUNNING, + UNC_OP_READ, + dmi, + &op, + CTRLRTBL); + if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("ReadConfigDB Failed result_code - %d", + result_code); + DELETE_IF_NOT_NULL(ck_ctrlr); + return result_code; + } + DELETE_IF_NOT_NULL(ck_ctrlr); + // SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + result_code = DupConfigKeyValVtnMapping(okey, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyValVtnMapping failed" + "err code %d", + result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + bool okey_mapped = false; + if (header->operation == UNC_OP_READ_SIBLING_BEGIN) { + result_code = ctrlr_mgr->GetFirstCtrlrName( + UPLL_DT_RUNNING, &ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("GetFirstCtrlrName failed err code %d", + result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + ctrlr_dom.ctrlr = reinterpret_cast( + const_cast(ctrlr_id.c_str())); + ctrlr_dom.domain = reinterpret_cast + (const_cast(" ")); + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + UPLL_LOG_TRACE("ControllerId and DomainId are %s %s", + ctrlr_dom.ctrlr, + ctrlr_dom.domain); + if ((ctrlr_mgr->GetCtrlrType(reinterpret_cast + (ctrlr_dom.ctrlr), + UPLL_DT_RUNNING, + &ctrlrtype)) && + (ctrlrtype == UNC_CT_PFC)) { + uuu::upll_strncpy( + reinterpret_cast + (okey->get_key())->controller_name, + ctrlr_dom.ctrlr, + (kMaxLenCtrlrId + 1)); + result_code = ReadSingleCtlrlVtnMapping(header, + okey, + dmi, + &rec_count); + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE && + result_code != UPLL_RC_SUCCESS) { + delete okey; + return result_code; + } else if (result_code == UPLL_RC_SUCCESS) { + okey_mapped = true; + } + } + } else { + // check if user given controller can be used. + ctrlr_id = reinterpret_cast + (reinterpret_cast + (okey->get_key())->controller_name); + UPLL_LOG_TRACE("Controller Name is %s", + ctrlr_id.c_str()); + ctrlr_dom.ctrlr = reinterpret_cast( + const_cast(ctrlr_id.c_str())); + + if ((ctrlr_mgr->GetCtrlrType( + reinterpret_cast + (ctrlr_dom.ctrlr), + UPLL_DT_RUNNING, + &ctrlrtype)) && + (ctrlrtype == UNC_CT_PFC)) { + UPLL_LOG_INFO("Controller type is %d", ctrlrtype); + // return UPLL_RC_ERR_GENERIC; + ctrlr_dom.domain = + reinterpret_cast + (okey->get_key())->domain_id; + UPLL_LOG_TRACE("Domain name is %s", + ctrlr_dom.domain); + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + + result_code = ReadSingleCtlrlVtnMapping(header, + okey, + dmi, + &rec_count); + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE && + result_code != UPLL_RC_SUCCESS) { + delete okey; + return result_code; + } else if (result_code == UPLL_RC_SUCCESS) { + okey_mapped = true; + } + } + } + UPLL_LOG_DEBUG("Input controller id is %s", + ctrlr_id.c_str()); + while ((UPLL_RC_SUCCESS == ctrlr_mgr->GetNextCtrlrName( + ctrlr_id, + UPLL_DT_RUNNING, &ctrlr_id)) && + (rec_count < header->rep_count)) { + UPLL_LOG_DEBUG("Sibling controller id is %s", + ctrlr_id.c_str()); + ctrlr_dom.ctrlr = reinterpret_cast( + const_cast(ctrlr_id.c_str())); + if (!ctrlr_mgr->GetCtrlrType( + reinterpret_cast(ctrlr_dom.ctrlr), + UPLL_DT_RUNNING, &ctrlrtype)) { + continue; + } + if (ctrlrtype != UNC_CT_PFC) { + UPLL_LOG_INFO("Controller type is %d", ctrlrtype); + continue; + } + ctrlr_dom.domain = reinterpret_cast + (const_cast(" ")); + SET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + next_ckv = NULL; + result_code = DupConfigKeyValVtnMapping(next_ckv, + ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("DupConfigKeyValVtnStation failed" + " err code %d", result_code); + delete okey; + DELETE_IF_NOT_NULL(next_ckv); + return result_code; + } + vtnkey = reinterpret_cast + (next_ckv->get_key()); + uuu::upll_strncpy(vtnkey->controller_name, + ctrlr_dom.ctrlr, + (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(vtnkey->domain_id, ctrlr_dom.domain, + (kMaxLenDomainId + 1)); + result_code = ReadSingleCtlrlVtnMapping(header, + next_ckv, + dmi, + &rec_count); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + delete okey; + DELETE_IF_NOT_NULL(next_ckv); + return result_code; + } else if (result_code == UPLL_RC_SUCCESS) { + if (!okey_mapped) { + /* This recent ReadSingleCtlrlVtnMapping gave result, + ** but not the previous ones + */ + DELETE_IF_NOT_NULL(okey); + okey = next_ckv; + okey_mapped = true; + } else { + okey->AppendCfgKeyVal(next_ckv); + } + } else { + DELETE_IF_NOT_NULL(next_ckv); + } + } + if (rec_count != 0) { + header->rep_count = rec_count; + ikey->ResetWith(okey); + DELETE_IF_NOT_NULL(okey); + result_code = UPLL_RC_SUCCESS; + } else { + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(next_ckv); + if (result_code == UPLL_RC_SUCCESS || + result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + } + break; + } + default: + return UPLL_RC_ERR_GENERIC; + break; + } + + return result_code; + } + + upll_rc_t + VtnMoMgr::MappingvExtTovBr(ConfigKeyVal * ikey, + IpcReqRespHeader * req, + DalDmlIntf * dmi, + uint32_t *&rec_count) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; + MoMgrImpl *mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VBR_IF))); + val_vtnstation_controller_st *valst = NULL; + val_vtn_mapping_controller_st *val_map = NULL; + key_vbr_if_t *key_vbrif = NULL; + ConfigKeyVal *tmpckv = NULL; + if ((GetVal(ikey)) == NULL) { + UPLL_LOG_DEBUG("Val struct is not present" + "from driver response"); + return UPLL_RC_ERR_GENERIC; + } + ConfigVal *tmp_cval = NULL; + UPLL_LOG_DEBUG("ikey in MappingvExtTovBr is %s", + ikey->ToStrAll().c_str()); + for (tmp_cval = ikey->get_cfg_val(); tmp_cval; + tmp_cval = tmp_cval->get_next_cfg_val()) { + if (UNC_KT_VTNSTATION_CONTROLLER == ikey->get_key_type()) { + UPLL_LOG_DEBUG("KetType Matched %d", + ikey->get_key_type()); + if (IpctSt::kIpcStValVtnstationControllerSt == + tmp_cval->get_st_num()) { + (*rec_count)++; + UPLL_LOG_DEBUG("record count is %d", *rec_count); + valst = + reinterpret_cast( + tmp_cval->get_val()); + if (!valst) { + UPLL_LOG_DEBUG("val_vtnstation_controller" + "_st is NULL"); + ConfigKeyVal::Free(key_vbrif); + return UPLL_RC_ERR_GENERIC; + } + if (valst->map_type == UPLL_IF_VLAN_MAP) + continue; + if ((valst->valid[UPLL_IDX_VTN_NAME_VSCS] != + UNC_VF_VALID) && + (valst->valid[UPLL_IDX_VBR_IF_NAME_VSCS] != + UNC_VF_VALID)) { + UPLL_LOG_DEBUG("valid flag of vtn_name/vbrif_name" + "is invalid"); + ConfigKeyVal::Free(key_vbrif); + return UPLL_RC_ERR_GENERIC; + } + uint8_t *ctrlr_id = + reinterpret_cast + (ikey->get_key())->controller_name; + key_vtn_t *vtnkey = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + uuu::upll_strncpy(vtnkey->vtn_name, + valst->vtn_name, + (kMaxLenVtnName + 1)); + ConfigKeyVal *ckv_rename = new ConfigKeyVal( + UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, vtnkey, NULL); + result_code = GetRenamedUncKey(ckv_rename, + UPLL_DT_RUNNING, + dmi, ctrlr_id); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("GetRenamedUncKey failed error code %d", + result_code); + if (ckv_rename) delete ckv_rename; + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(valst->vtn_name, + reinterpret_cast + (ckv_rename->get_key())->vtn_name, + (kMaxLenVtnName + 1)); + key_vbrif = static_cast + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); + uuu::upll_strncpy(key_vbrif->vbr_key.vtn_key.vtn_name, + valst->vtn_name, + (kMaxLenVtnName + 1)); + val_drv_vbr_if_t *drv_val_vbrif = + static_cast + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if_t))); + drv_val_vbrif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = + UNC_VF_VALID; + uuu::upll_strncpy(drv_val_vbrif->vex_name, + valst->vbrif_name, + (kMaxLenInterfaceName + 1)); + tmpckv = new + ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVbrIf, + key_vbrif, + new ConfigVal( + IpctSt::kIpcStPfcdrvValVbrIf, + drv_val_vbrif)); + UPLL_LOG_DEBUG("tmpckv is %s", + tmpckv->ToStrAll().c_str()); + result_code = mgr->ReadConfigDB(tmpckv, + req->datatype, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("vbrif ReadConfigDB Failed" + "result_code - %d", + result_code); + delete tmpckv; + delete ckv_rename; + return UPLL_RC_ERR_GENERIC; + } + key_vbr_if_t *vbrif_key = + reinterpret_cast + (tmpckv->get_key()); + if (vbrif_key) { + valst->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; + uuu::upll_strncpy(valst->vbr_name, + vbrif_key->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(valst->vbrif_name, + vbrif_key->if_name, + (kMaxLenInterfaceName + 1)); + } + delete tmpckv; + delete ckv_rename; + key_vbrif = NULL; + tmpckv = NULL; + } + } else if (UNC_KT_VTN_MAPPING_CONTROLLER == + ikey->get_key_type()) { + UPLL_LOG_DEBUG("KetType Matched %d", + ikey->get_key_type()); + if (IpctSt::kIpcStValVtnMappingControllerSt == + tmp_cval->get_st_num()) { + val_map = + reinterpret_cast + (tmp_cval->get_val()); + if (!val_map) { + UPLL_LOG_DEBUG("val_vtn_mapping_controller" + "_st is NULL"); + ConfigKeyVal::Free(key_vbrif); + return UPLL_RC_ERR_GENERIC; + } + if (val_map->map_type == UPLL_IF_VLAN_MAP) + continue; + // Valid flag check before accessing + // the driver reponse val + if (val_map->valid[UPLL_IDX_VBR_IF_NAME_VMCS] != + UNC_VF_VALID) { + UPLL_LOG_DEBUG("valid flag of vbrif_name is invalid"); + ConfigKeyVal::Free(key_vbrif); + return UPLL_RC_ERR_GENERIC; + } + (*rec_count)++; + UPLL_LOG_DEBUG("record count is %d", *rec_count); + key_vbrif = static_cast + (ConfigKeyVal::Malloc(sizeof(key_vbr_if_t))); + uint8_t *ctrlr_id = + reinterpret_cast + (ikey->get_key())->controller_name; + key_vtn_t *vtnkey = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + uuu::upll_strncpy(vtnkey->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + ConfigKeyVal *ckv_rename = new ConfigKeyVal( + UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtnkey, + NULL); + result_code = GetRenamedUncKey(ckv_rename, + UPLL_DT_RUNNING, + dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_INFO("GetRenamedUncKey failed. Error : %d", + result_code); + if (ckv_rename) delete ckv_rename; + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + reinterpret_cast + (ckv_rename->get_key())->vtn_name, + (kMaxLenVtnName + 1)); + uuu::upll_strncpy(key_vbrif->vbr_key.vtn_key.vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); + val_drv_vbr_if_t *drv_val_vbrif = + static_cast + (ConfigKeyVal::Malloc(sizeof(val_drv_vbr_if_t))); + drv_val_vbrif->valid[PFCDRV_IDX_VEXT_NAME_VBRIF] = + UNC_VF_VALID; + uuu::upll_strncpy(drv_val_vbrif->vex_name, + val_map->vbrif_name, + (kMaxLenInterfaceName + 1)); + tmpckv = new ConfigKeyVal( + UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVbrIf, + key_vbrif, + new ConfigVal( + IpctSt::kIpcStPfcdrvValVbrIf, + drv_val_vbrif)); + result_code = mgr->ReadConfigDB(tmpckv, + req->datatype, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("vbrif ReadConfigDB Failed" + "result_code - %d", + result_code); + delete ckv_rename; + delete tmpckv; + return UPLL_RC_ERR_GENERIC; + } + UPLL_LOG_DEBUG("tmpckv value is %s", + tmpckv->ToStrAll().c_str()); + key_vbr_if_t *vbrif_key = + reinterpret_cast + (tmpckv->get_key()); + if (vbrif_key) { + val_map->valid[UPLL_IDX_VBR_NAME_VMCS] = UNC_VF_VALID; + uuu::upll_strncpy(val_map->vbr_name, + vbrif_key->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); + uuu::upll_strncpy(val_map->vbrif_name, + vbrif_key->if_name, + (kMaxLenInterfaceName + 1)); + } + delete tmpckv; + delete ckv_rename; + key_vbrif = NULL; + tmpckv = NULL; + } + } + } + return result_code; + } + + /* Semantic check for the VTN Delete operation */ + upll_rc_t + VtnMoMgr::IsReferenced(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *okey = NULL; + if (NULL == ikey || !dmi) + return UPLL_RC_ERR_GENERIC; + /* Create the Vtunnel Configkey for + * checking vtn is underlay vtn or not */ + result_code = CreateVtunnelKey(ikey, okey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Could not Create VtunnelKey %d", + result_code); + return result_code; + } + MoMgrImpl *mgr = reinterpret_cast + (const_cast(GetMoManager(UNC_KT_VTUNNEL))); + if (!mgr) { + UPLL_LOG_DEBUG("Instance is Null"); + delete okey; + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; + /* Checks the given vtn is exists or not */ + result_code = mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, + dbop, dmi, MAINTBL); + if (UPLL_RC_SUCCESS == result_code) { + UPLL_LOG_DEBUG("Could not delete an Underlay" + "Vtn referenced to " + " an Overlay Vtn"); + delete okey; + return UPLL_RC_ERR_CFG_SEMANTIC; + } + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS:result_code; + DELETE_IF_NOT_NULL(okey); + return result_code; + } + + /* This function creates the configkey for the vtunnel + * This funciton take the vtn name and addit into the Vtunnel + * value structure + */ + upll_rc_t + VtnMoMgr::CreateVtunnelKey(ConfigKeyVal *ikey, + ConfigKeyVal *&okey) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigVal *tmp; + if (!ikey || !(ikey->get_key())) + return UPLL_RC_ERR_GENERIC; + + key_vtunnel_t *vtunnel_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtunnel_t))); + val_vtunnel_t *vtn_val_vtunnel = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtunnel_t))); + /* validate message taken care of vtn lengh checking*/ + uuu::upll_strncpy( + vtn_val_vtunnel->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_name, (kMaxLenVtnName+1)); + vtn_val_vtunnel->valid[UPLL_IDX_VTN_NAME_VTNL] = UNC_VF_VALID; + + tmp = new ConfigVal(IpctSt::kIpcStValVtunnel, vtn_val_vtunnel); + if (!tmp) { + UPLL_LOG_ERROR("Memory Allocation failed for tmp1"); + FREE_IF_NOT_NULL(vtunnel_key); + FREE_IF_NOT_NULL(vtn_val_vtunnel); + return UPLL_RC_ERR_GENERIC; + } + okey = new ConfigKeyVal(UNC_KT_VTUNNEL, + IpctSt::kIpcStKeyVtunnel, + vtunnel_key, + tmp); + if (!okey) { + delete tmp; + FREE_IF_NOT_NULL(vtunnel_key); + return UPLL_RC_ERR_GENERIC; + } + SET_USER_DATA(okey, ikey); + return result_code; + } + + upll_rc_t + VtnMoMgr::SwapKeyVal(ConfigKeyVal *ikey, + ConfigKeyVal *&okey, + DalDmlIntf *dmi, + uint8_t *ctrlr, + bool &no_rename) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + // ConfigVal *tmp1; + okey = NULL; + if (!ikey || !(ikey->get_key()) || + !(strlen(reinterpret_cast + (ctrlr)))) { + UPLL_LOG_DEBUG("Input is NULL"); + return UPLL_RC_ERR_GENERIC; + } + if (ikey->get_key_type() != UNC_KT_VTN) { + UPLL_LOG_DEBUG("Bad Request"); + return UPLL_RC_ERR_BAD_REQUEST; + } + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (cfg_val == NULL) { + UPLL_LOG_DEBUG("Configval is NULL"); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_rename_vtn_t *tval = reinterpret_cast + (cfg_val->get_val()); + if (!tval) { + UPLL_LOG_DEBUG("Val is NULL"); + return UPLL_RC_ERR_GENERIC; + } + key_vtn_t *key_vtn = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + /* No rename */ + if (tval->valid[UPLL_IDX_NEW_NAME_RVTN] == + UNC_VF_VALID_NO_VALUE) { + no_rename = true; + uuu::upll_strncpy(key_vtn->vtn_name, + ((reinterpret_cast + (ikey->get_key()))->vtn_name), + (kMaxLenVtnName + 1)); + UPLL_LOG_DEBUG("No Rename Operation %d", no_rename); + } else { + if ( tval->valid[UPLL_IDX_NEW_NAME_RVTN] == UNC_VF_VALID ) { + // checking the string is empty or not + if (!strlen(reinterpret_cast(tval->new_name))) { + ConfigKeyVal::Free(key_vtn); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(key_vtn->vtn_name, tval->new_name, + (kMaxLenVtnName + 1)); + // copy the new UNC name to KeyVtn + /* The New Name and PFC name should not be same name */ + if (!strcmp(reinterpret_cast + ((reinterpret_cast + (ikey->get_key()))->vtn_name), + reinterpret_cast(tval->new_name))) { + ConfigKeyVal::Free(key_vtn); + return UPLL_RC_ERR_GENERIC; + } + } else { + UPLL_LOG_DEBUG("Invalid Input"); + ConfigKeyVal::Free(key_vtn); + return UPLL_RC_ERR_GENERIC; + } + } + okey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + key_vtn, + NULL); + return result_code; + } + + bool VtnMoMgr::FilterAttributes(void *&val1, + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { + val_vtn_t *val_vtn1 = reinterpret_cast(val1); + val_vtn1->valid[UPLL_IDX_DESC_VTN] = UNC_VF_INVALID; + // to be uncommented when vtn supports other attributes + // other than description #if 0 - result_code = ValidateCapability(&(ipc_req.header), ck_main); - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ck_main); - return result_code; - } + val_vtn_ctrlr *ctrlr_val = + reinterpret_cast(val2); + for (unsigned int loop = 0; + loop < sizeof(val_vtn1->valid)/sizeof(val_vtn1->valid[0]); + ++loop) { + if (ctrlr_val->cs_attr[loop] == UNC_CS_NOT_SUPPORTED) + val_vtn1->valid[loop] = UNC_VF_INVALID; + } + if (op != UNC_OP_CREATE) + return CompareValidValue(val1, val2, copy_to_running); #endif - result_code = GetChildConfigKey(ck_ctrlr, ck_main); - if (!ck_ctrlr || result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ck_main); - DELETE_IF_NOT_NULL(ck_ctrlr); - return result_code; - } - if (GetControllerDomainSpan(ck_ctrlr, UPLL_DT_CANDIDATE, dmi) == - UPLL_RC_ERR_NO_SUCH_INSTANCE) { - delete ck_ctrlr; - ck_ctrlr = NULL; - delete ck_main; - ck_main = NULL; - continue; - } - void *main = GetVal(ck_main); - void *val_nrec = (nreq) ? GetVal(nreq) : NULL; - if (FilterAttributes(main, val_nrec, false, op)) { - delete ck_ctrlr; - ck_ctrlr = NULL; - continue; - } - for (ConfigKeyVal *tmp = ck_ctrlr; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { - GET_USER_DATA_CTRLR_DOMAIN(tmp, ctrlr_dom); - if ((ctrlr_dom.ctrlr == NULL) || (ctrlr_dom.domain == NULL)) { - DELETE_IF_NOT_NULL(ck_main); - UPLL_LOG_INFO("Invalid controller/domain"); - return UPLL_RC_ERR_GENERIC; - } - result_code = TxUpdateProcess(ck_main, &resp, - op, dmi, &ctrlr_dom); - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("TxUpdate Process returns with %d", result_code); - *err_ckv = resp.ckv_data; - break; - } - DELETE_IF_NOT_NULL(resp.ckv_data); - } - delete ck_ctrlr; - } - delete ck_main; - } - if (nreq) - delete nreq; - if (req) - delete req; - if (dal_cursor_handle) - dmi->CloseCursor(dal_cursor_handle, true); - result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; - return result_code; -} - -upll_rc_t -VtnMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, - unc_keytype_operation_t op, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { - UPLL_FUNC_TRACE; - upll_rc_t result_code; - controller_domain ctrlr_dom_dup; - ctrlr_dom_dup.ctrlr = NULL; - ctrlr_dom_dup.domain = NULL; - /* read from main table */ - ConfigKeyVal *dup_ckmain = ck_main; - if (op == UNC_OP_CREATE) { - dup_ckmain = NULL; - result_code = GetChildConfigKey(dup_ckmain, ck_main); - if (result_code != UPLL_RC_SUCCESS || dup_ckmain == NULL) { - UPLL_LOG_DEBUG("Returning error %d", result_code); - delete dup_ckmain; - return result_code; - } - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; - result_code = ReadConfigDB(dup_ckmain, UPLL_DT_CANDIDATE, - UNC_OP_READ, dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("%s Vtn read failed %d", (dup_ckmain->ToStrAll()).c_str(), - result_code); - if (dup_ckmain) delete dup_ckmain; - return result_code; - } - /* To filter the attributes to be sent to controller */ - void *val = (ck_main) ? GetVal(ck_main) : NULL; - void *dup_val = (dup_ckmain) ? GetVal(dup_ckmain) : NULL; - if (FilterAttributes(dup_val, val, false, op)) { - if (dup_ckmain) delete dup_ckmain; - return UPLL_RC_SUCCESS; - } - } else if (op == UNC_OP_UPDATE) { - UPLL_LOG_INFO("UPDATE to VTN is not supported at driver. so return.."); - return UPLL_RC_SUCCESS; - } - /* Get renamed key if key is renamed */ - /* For Delete operation we have to get info - * from running db - */ - if (op == UNC_OP_DELETE) - result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_RUNNING, - dmi, ctrlr_dom); - else { - if (op == UNC_OP_CREATE) { - ctrlr_dom_dup.ctrlr = NULL; - ctrlr_dom_dup.domain = NULL; - GET_USER_DATA_CTRLR_DOMAIN(dup_ckmain, ctrlr_dom_dup); - } - result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_CANDIDATE, - dmi, &ctrlr_dom_dup); - } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", - result_code); - if ((op == UNC_OP_CREATE) && dup_ckmain) - delete dup_ckmain; - return result_code; - } - // ipc_req->ckv_data = ck_main; - result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, - ipc_resp->header.config_id, op, UPLL_DT_CANDIDATE, - dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { - UPLL_LOG_DEBUG("Controller disconnected"); - result_code = UPLL_RC_SUCCESS; - } - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("IpcSend failed %d", result_code); - } - if ((op == UNC_OP_CREATE) && dup_ckmain) - delete dup_ckmain; - return result_code; -} - -upll_rc_t -VtnMoMgr::CopyToConfigKey(ConfigKeyVal * &okey, - ConfigKeyVal * ikey) { - if (!ikey || !(ikey->get_key())) return UPLL_RC_ERR_GENERIC; - - key_vtn_t *key_vtn = reinterpret_cast + return false; + } + + bool VtnMoMgr::CompareValidValue(void *&val1, void *val2, + bool copy_to_running) { + UPLL_FUNC_TRACE; + bool invalid_attr = true; + val_vtn_t *val_vtn1 = reinterpret_cast(val1); + val_vtn_t *val_vtn2 = reinterpret_cast(val2); + val_vtn_index vtn_description = UPLL_IDX_DESC_VTN; + if (UNC_VF_INVALID == val_vtn1->valid[vtn_description] && + UNC_VF_VALID == val_vtn2->valid[vtn_description]) + val_vtn1->valid[vtn_description] = UNC_VF_VALID_NO_VALUE; + if (UNC_VF_INVALID != val_vtn1->valid[vtn_description]) { + if (!copy_to_running || + ((UNC_VF_VALID == val_vtn1->valid[vtn_description]) && + (!strcmp(reinterpret_cast(val_vtn1->description), + reinterpret_cast + (val_vtn2->description)) ))) + val_vtn1->valid[vtn_description] = UNC_VF_INVALID; + } + /* filters the attributes from being sent to the controller */ + for (unsigned int loop = 0; + loop < sizeof(val_vtn1->valid)/sizeof(val_vtn1->valid[0]); + ++loop) { + if ((UNC_VF_VALID == val_vtn1->valid[loop]) || + (UNC_VF_VALID_NO_VALUE == val_vtn1->valid[loop])) { + invalid_attr = false; + break; + } + } + return invalid_attr; + } + + upll_rc_t VtnMoMgr::UpdateCtrlrConfigStatus( + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + val_vtn_ctrlr_t *val; + val = (ckv_running != NULL)? + reinterpret_cast(GetVal(ckv_running)):NULL; + if (NULL == val) { + return UPLL_RC_ERR_GENERIC; + } + if (uuc::kUpllUcpCreate == phase ) + val->cs_row_status = cs_status; + if ((uuc::kUpllUcpUpdate == phase) && + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) + val->cs_row_status = cs_status; + if ((cs_status == UNC_CS_INVALID && + UNC_VF_VALID == val->valid[UPLL_IDX_DESC_VTN]) || + cs_status == UNC_CS_APPLIED) + val->cs_attr[UPLL_IDX_DESC_VTN] = cs_status; + return result_code; + } + + upll_rc_t + VtnMoMgr::UpdateAuditConfigStatus( + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + val_vtn_t *val; + val = (ckv_running != NULL)? + reinterpret_cast(GetVal(ckv_running)):NULL; + if (NULL == val) { + return UPLL_RC_ERR_GENERIC; + } + if (uuc::kUpllUcpCreate == phase ) + val->cs_row_status = cs_status; + for ( unsigned int loop = 0; + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + if ((cs_status == UNC_CS_INVALID && + UNC_VF_VALID == val->valid[loop]) || + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; + } + return result_code; + } + + upll_rc_t + VtnMoMgr::SetVtnConsolidatedStatus(ConfigKeyVal *ikey, + uint8_t *ctrlr_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ctrlr_ckv = NULL; + val_vtn_ctrlr *ctrlr_val = NULL; + uint8_t *vtn_exist_on_ctrlr = NULL; + bool applied = false, not_applied = false, invalid = false; + unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; + if (!ikey || !dmi || !ctrlr_id) { + UPLL_LOG_DEBUG("Invalid Input"); + return UPLL_RC_ERR_GENERIC; + } + result_code = GetChildConfigKey(ctrlr_ckv, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed err code %d", + result_code); + return result_code; + } + result_code = ReadConfigDB(ctrlr_ckv, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB from ctrltbl failed" + "err code %d", + result_code); + delete ctrlr_ckv; + return result_code; + } + + for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; + tmp = tmp->get_next_cfg_key_val()) { + ctrlr_val = reinterpret_cast(GetVal(tmp)); + if (!ctrlr_val) { + UPLL_LOG_DEBUG("Controller Value is empty"); + tmp = NULL; + delete ctrlr_ckv; + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_CTRLR(tmp, vtn_exist_on_ctrlr); + if (!strcmp(reinterpret_cast(vtn_exist_on_ctrlr), + reinterpret_cast(ctrlr_id))) + continue; // skipping entry of deleted controller + + switch (ctrlr_val->cs_row_status) { + case UNC_CS_APPLIED: + applied = true; + break; + case UNC_CS_NOT_APPLIED: + case UNC_CS_NOT_SUPPORTED: + not_applied = true; + break; + case UNC_CS_INVALID: + invalid = true; + break; + default: + UPLL_LOG_DEBUG("Invalid status"); + } + vtn_exist_on_ctrlr = NULL; + } + if (invalid) + c_status = UNC_CS_INVALID; + else if (applied && !not_applied) + c_status = UNC_CS_APPLIED; + else if (!applied && not_applied) + c_status = UNC_CS_NOT_APPLIED; + else if (applied && not_applied) + c_status = UNC_CS_PARTIALLY_APPLIED; + else + c_status = UNC_CS_APPLIED; + // Set cs_status + val_vtn_t *vtnval = static_cast(GetVal(ikey)); + vtnval->cs_row_status = c_status; + vtnval->cs_attr[0] = UNC_CS_APPLIED; + // initialize the main table vtn oper status to be recomputed. + val_db_vtn_st *val_vtnst = reinterpret_cast + (GetStateVal(ikey)); + if (!val_vtnst) { + UPLL_LOG_DEBUG("Returning error %d\n", UPLL_RC_ERR_GENERIC); + return UPLL_RC_ERR_GENERIC; + } + val_vtnst->vtn_val_st.oper_status = UPLL_OPER_STATUS_UNINIT; + val_vtnst->vtn_val_st.valid[UPLL_IDX_OPER_STATUS_VS] = + UNC_VF_VALID; + DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; + result_code = UpdateConfigDB(ikey, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop_update, + MAINTBL); + delete ctrlr_ckv; + return result_code; + } + + upll_rc_t + VtnMoMgr::SetConsolidatedStatus(ConfigKeyVal * ikey, + DalDmlIntf * dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckv = NULL; + DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCs }; + result_code = GetChildConfigKey(ckv, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_INFO("GetChildConfigKey failed err code %d", + result_code); + return result_code; + } + result_code = ReadConfigDB(ckv, + UPLL_DT_RUNNING, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_INFO("ReadConfigDB from ctrltbl failed" + "err code %d", + result_code); + delete(ckv); + return result_code; + } + list < unc_keytype_configstatus_t > list_cs_row; + val_vtn_ctrlr *val; + ConfigKeyVal *tmp = ckv; + for (; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { + val = reinterpret_cast(GetVal(tmp)); + list_cs_row.push_back( + static_cast( + val->cs_row_status)); + } + DELETE_IF_NOT_NULL(ckv); + val_vtn_t *val_temp = reinterpret_cast + (GetVal(ikey)); + val_temp->cs_row_status = GetConsolidatedCsStatus( + list_cs_row); + result_code = UpdateConfigDB(ikey, + UPLL_DT_RUNNING, + UNC_OP_UPDATE, + dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("SetConsolidatedStatus failed." + "UpdateConfigDB Failed" + " Result Code - %d", result_code); + } + return result_code; + } + + upll_rc_t + VtnMoMgr::MergeValidateChildren(ConfigKeyVal *import_ckval, + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!import_ckval || !(import_ckval->get_key())) { + UPLL_LOG_DEBUG("Invalid Input"); + return UPLL_RC_ERR_GENERIC; + } + ConfigKeyVal *ckval = NULL; + unc_key_type_t child_key[]= { + UNC_KT_VBRIDGE, UNC_KT_VBR_NWMONITOR, UNC_KT_VROUTER, + UNC_KT_VRT_IF, UNC_KT_VLINK + }; + while (import_ckval) { + for (unsigned int i = 0; + i < sizeof(child_key)/sizeof(child_key[0]); i++) { + const unc_key_type_t ktype = child_key[i]; + MoMgrImpl *mgr = reinterpret_cast( + const_cast(GetMoManager(ktype))); + if (!mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + result_code = mgr->GetChildConfigKey(ckval, import_ckval); + if (UPLL_RC_SUCCESS != result_code) { + if (ckval) { + delete ckval; + ckval = NULL; + } + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", + result_code); + return result_code; + } + result_code = mgr->MergeValidate(child_key[i], + ctrlr_id, + ckval, + dmi); + UPLL_LOG_TRACE("Result code is %d key type %d", + result_code, + ktype); + + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + if (UPLL_RC_ERR_MERGE_CONFLICT == result_code) { + UPLL_LOG_DEBUG(" Merge Conflict %d", result_code); + if (ikey) { + ikey->ResetWith(ckval); + UPLL_LOG_DEBUG("Conflict detail %s", + ikey->ToStrAll().c_str()); + } + } else { + UPLL_LOG_DEBUG("Merge Validate Failed %d", + result_code); + } + if (NULL != ckval) { + delete ckval; + ckval = NULL; + } + return result_code; + } + if (ckval) + delete ckval; + ckval = NULL; + } + import_ckval = import_ckval->get_next_cfg_key_val(); + } + result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) ? + UPLL_RC_SUCCESS : result_code; + return result_code; + } + + upll_rc_t + VtnMoMgr::MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_ERR_GENERIC; + // Import Controller Name Not needed so checks is missing. + ConfigKeyVal *import_ckval = NULL; + result_code = GetChildConfigKey(import_ckval, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfig Failed "); + return result_code; + } + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; + result_code = ReadConfigDB(import_ckval, + UPLL_DT_IMPORT, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("No Records in the Import DB"); + DELETE_IF_NOT_NULL(import_ckval); + return UPLL_RC_SUCCESS; + } + + /* Other than UPLL_RC_ERR_NO_SUCH_INSTANCE AND + * UPLL_RC_SUCCESS */ + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG(" ReadConfigDB Failed %d", result_code); + DELETE_IF_NOT_NULL(import_ckval); + return result_code; + } + ConfigKeyVal *start_ckv = import_ckval; + result_code = MergeValidateChildren(import_ckval, + ctrlr_id, + ikey, + dmi); + DELETE_IF_NOT_NULL(start_ckv); + if (UPLL_RC_SUCCESS == result_code) { + ConfigKeyVal *req = NULL; + ConfigKeyVal *nreq = NULL; + DalCursor *dal_cursor_handle = NULL; + UPLL_LOG_TRACE("Create Entry in candidate"); + result_code = DiffConfigDB(UPLL_DT_IMPORT, + UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + req, nreq, + &dal_cursor_handle, + dmi, + MAINTBL); + while (UPLL_RC_SUCCESS == result_code) { + result_code = DalToUpllResCode(dmi-> + GetNextRecord( + dal_cursor_handle)); + if (UPLL_RC_SUCCESS != result_code + && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("GetNextRecord Failed "); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + return UPLL_RC_SUCCESS; + } + dbop.inoutop = + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain; + result_code = UpdateConfigDB(req, + UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + UPLL_LOG_DEBUG("UpdateConfigDB Failed"); + return result_code; + } + } + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + } + result_code = (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code)? + UPLL_RC_SUCCESS : result_code; + return result_code; + } + + // Not used anywhere currently in the source + upll_rc_t + VtnMoMgr::MergeVtnMainTable(DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *req = NULL; + ConfigKeyVal *nreq = NULL; + DalCursor *dal_cursor_handle = NULL; + UPLL_LOG_TRACE("Create Entry in candidate"); + result_code = DiffConfigDB(UPLL_DT_IMPORT, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + req, + nreq, + &dal_cursor_handle, + dmi, + MAINTBL); + while (UPLL_RC_SUCCESS == result_code) { + result_code = DalToUpllResCode(dmi-> + GetNextRecord( + dal_cursor_handle)); + if (UPLL_RC_SUCCESS != result_code + && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("GetNextRecord Failed "); + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + return result_code; + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + return UPLL_RC_SUCCESS; + } + DbSubOp dbop = {kOpReadMultiple, + kOpMatchNone, + kOpInOutFlag}; + result_code = UpdateConfigDB(req, + UPLL_DT_CANDIDATE, + UNC_OP_CREATE, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + UPLL_LOG_DEBUG("UpdateConfigDB Failed"); + return result_code; + } + } + DELETE_IF_NOT_NULL(req); + DELETE_IF_NOT_NULL(nreq); + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + return result_code; + } + + upll_rc_t + VtnMoMgr::TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DalResultCode dal_result = uud::kDalRcSuccess; + ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; + controller_domain ctrlr_dom; + DalCursor *dal_cursor_handle = NULL; + unc_keytype_operation_t op = + (phase == + uuc::kUpllUcpCreate)?UNC_OP_CREATE: + ((phase == uuc::kUpllUcpUpdate)?UNC_OP_UPDATE: + ((phase == uuc::kUpllUcpDelete)?UNC_OP_DELETE: + UNC_OP_INVALID)); + ctrlr_dom.ctrlr = NULL; + ctrlr_dom.domain = NULL; + MoMgrTables tbl = (op != UNC_OP_UPDATE)?CTRLRTBL:MAINTBL; + result_code = DiffConfigDB(UPLL_DT_CANDIDATE, + UPLL_DT_RUNNING, + op, + req, + nreq, + &dal_cursor_handle, + dmi, + tbl); + while (result_code == UPLL_RC_SUCCESS) { + // Get Next Record + dal_result = dmi->GetNextRecord(dal_cursor_handle); + result_code = DalToUpllResCode(dal_result); + if (result_code != UPLL_RC_SUCCESS) + break; + ck_main = NULL; + IpcResponse resp; + memset(&resp, 0, sizeof(resp)); + + resp.header.clnt_sess_id = session_id; + resp.header.config_id = config_id; + if (op != UNC_OP_UPDATE) { + if (op == UNC_OP_CREATE) + result_code = DupConfigKeyVal(ck_main, req, tbl); + else + result_code = GetChildConfigKey(ck_main, req); + if (!ck_main || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + DELETE_IF_NOT_NULL(ck_main); + break; + } + GET_USER_DATA_CTRLR_DOMAIN(ck_main, ctrlr_dom); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + if ((ctrlr_dom.ctrlr == NULL) || + (ctrlr_dom.domain == NULL)) { + UPLL_LOG_INFO("Invalid controller/domain"); + DELETE_IF_NOT_NULL(ck_main); + result_code = UPLL_RC_ERR_GENERIC; + break; + } + + bool driver_resp = false; + result_code = TxUpdateProcess(ck_main, + &resp, + op, + dmi, + &ctrlr_dom, + affected_ctrlr_set, + &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { + UPLL_LOG_DEBUG("Returns error %d", result_code); + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); + *err_ckv = resp.ckv_data; + DELETE_IF_NOT_NULL(ck_main); + break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(resp.ckv_data); + DELETE_IF_NOT_NULL(ck_main); + break; + } + DELETE_IF_NOT_NULL(resp.ckv_data); + } + DELETE_IF_NOT_NULL(ck_main); + } + DELETE_IF_NOT_NULL(nreq); + DELETE_IF_NOT_NULL(req); + + if (dal_cursor_handle) + dmi->CloseCursor(dal_cursor_handle, true); + + result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? + UPLL_RC_SUCCESS:result_code; + return result_code; + } + + upll_rc_t + VtnMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { + UPLL_FUNC_TRACE; + upll_rc_t result_code; + controller_domain ctrlr_dom_dup; + ctrlr_dom_dup.ctrlr = NULL; + ctrlr_dom_dup.domain = NULL; + /* read from main table */ + ConfigKeyVal *dup_ckmain = ck_main; + if (op == UNC_OP_CREATE) { + dup_ckmain = NULL; + result_code = GetChildConfigKey(dup_ckmain, ck_main); + if (result_code != UPLL_RC_SUCCESS || dup_ckmain == NULL) { + UPLL_LOG_DEBUG("Returning error %d", result_code); + delete dup_ckmain; + return result_code; + } + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutNone}; + result_code = ReadConfigDB(dup_ckmain, UPLL_DT_CANDIDATE, + UNC_OP_READ, dbop, dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("%s Vtn read failed %d", + (dup_ckmain->ToStrAll()).c_str(), + result_code); + if (dup_ckmain) delete dup_ckmain; + return result_code; + } + /* To filter the attributes to be sent to controller */ + void *val = (ck_main) ? GetVal(ck_main) : NULL; + void *dup_val = (dup_ckmain) ? GetVal(dup_ckmain) : NULL; + if (FilterAttributes(dup_val, val, false, op)) { + if (dup_ckmain) delete dup_ckmain; + return UPLL_RC_SUCCESS; + } + } else if (op == UNC_OP_UPDATE) { + UPLL_LOG_INFO("UPDATE to VTN is not supported" + "at driver. so return.."); + return UPLL_RC_SUCCESS; + } + /* Get renamed key if key is renamed */ + /* For Delete operation we have to get info + * from running db + */ + if (op == UNC_OP_DELETE) { + result_code = GetRenamedControllerKey(dup_ckmain, + UPLL_DT_RUNNING, + dmi, + ctrlr_dom); + } else { + if (op == UNC_OP_CREATE) { + ctrlr_dom_dup.ctrlr = NULL; + ctrlr_dom_dup.domain = NULL; + GET_USER_DATA_CTRLR_DOMAIN(dup_ckmain, ctrlr_dom_dup); + } + result_code = GetRenamedControllerKey(dup_ckmain, + UPLL_DT_CANDIDATE, + dmi, + &ctrlr_dom_dup); + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetRenamedControllerKey failed. Result : %d", + result_code); + if ((op == UNC_OP_CREATE) && dup_ckmain) + delete dup_ckmain; + return result_code; + } + // ipc_req->ckv_data = ck_main; + result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, + ipc_resp->header.config_id, + op, + UPLL_DT_CANDIDATE, + dup_ckmain, + ctrlr_dom, + ipc_resp); + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { + UPLL_LOG_DEBUG("Controller disconnected"); + result_code = UPLL_RC_SUCCESS; + } + if (result_code != UPLL_RC_SUCCESS) { + *driver_resp = true; + UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + } + + affected_ctrlr_set->insert((const char *)ctrlr_dom->ctrlr); + if ((op == UNC_OP_CREATE) && dup_ckmain) + delete dup_ckmain; + UPLL_LOG_TRACE("Driver response received %d", *driver_resp); + return result_code; + } + + upll_rc_t + VtnMoMgr::CopyToConfigKey(ConfigKeyVal * &okey, + ConfigKeyVal * ikey) { + if (!ikey || !(ikey->get_key())) return UPLL_RC_ERR_GENERIC; + + key_vtn_t *key_vtn = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); - key_rename_vnode_info *key_rename = - reinterpret_cast(ikey->get_key()); - - if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { - ConfigKeyVal::Free(key_vtn); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(key_vtn->vtn_name, key_rename->old_unc_vtn_name, - (kMaxLenVtnName + 1)); - - okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key_vtn, NULL); - SET_USER_DATA(okey, ikey); - return UPLL_RC_SUCCESS; -} - -/* This function will call doing the Rename Operation - * This functions gets the Old Unc, New Unc and controller - * names from the ikey, okey and store it in local structure - * and creates the rename_info configkeyval - */ - -upll_rc_t -VtnMoMgr:: GetRenameInfo(ConfigKeyVal *ikey, - ConfigKeyVal *okey, - ConfigKeyVal *&rename_info, - DalDmlIntf *dmi, - const char *ctrlr_id, - bool &renamed) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!ikey || !okey || NULL != rename_info - || !(ikey->get_key()) || !(okey->get_key())) { - UPLL_LOG_DEBUG("Input is NULL"); - return UPLL_RC_ERR_GENERIC; - } - /* allocate memory for struct to store all the details */ - key_rename_vnode_info *vtn_rename_info = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info))); - - key_vtn_t *vtn_key = NULL; - vtn_key = reinterpret_cast(ikey->get_key()); - if (vtn_key == NULL) { - UPLL_LOG_DEBUG("No VTN Key"); - ConfigKeyVal::Free(vtn_rename_info); - return UPLL_RC_ERR_GENERIC; - } - /* Checks the vtn is already renamed or not */ - if (renamed) { - /* if already renamed store the controller name */ - if (!strlen(reinterpret_cast( - (reinterpret_cast(GetVal(ikey)))->new_name))) { - ConfigKeyVal::Free(vtn_rename_info); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(vtn_rename_info->ctrlr_vtn_name, - reinterpret_cast(GetVal(ikey))->new_name, - (kMaxLenVtnName + 1)); - } else { - /* if not renamed the ikey contains the controller name */ - if (!strlen(reinterpret_cast(vtn_key->vtn_name))) { - ConfigKeyVal::Free(vtn_rename_info); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(vtn_rename_info->ctrlr_vtn_name, vtn_key->vtn_name, - (kMaxLenVtnName + 1)); - } - /* Store the old UNC VTN name */ - if (!strlen(reinterpret_cast(vtn_key->vtn_name))) { - ConfigKeyVal::Free(vtn_rename_info); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(vtn_rename_info->old_unc_vtn_name, vtn_key->vtn_name, - (kMaxLenVtnName + 1)); - - vtn_key = reinterpret_cast(okey->get_key()); - /* store the new UNC VTN NAME */ - if (!strlen(reinterpret_cast(vtn_key->vtn_name))) { - ConfigKeyVal::Free(vtn_rename_info); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(vtn_rename_info->new_unc_vtn_name, vtn_key->vtn_name, - (kMaxLenVtnName + 1)); - - rename_info = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcInvalidStNum, - vtn_rename_info, NULL); - DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr|kOpInOutDomain}; - result_code = ReadConfigDB(ikey, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB Error"); - return result_code; - } - SET_USER_DATA(rename_info, ikey); - if (!rename_info) { - ConfigKeyVal::Free(vtn_rename_info); - return UPLL_RC_ERR_GENERIC; - } + key_rename_vnode_info *key_rename = + reinterpret_cast + (ikey->get_key()); + + if (!strlen(reinterpret_cast + (key_rename->old_unc_vtn_name))) { + ConfigKeyVal::Free(key_vtn); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(key_vtn->vtn_name, + key_rename->old_unc_vtn_name, + (kMaxLenVtnName + 1)); + + okey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + key_vtn, + NULL); + SET_USER_DATA(okey, ikey); + return UPLL_RC_SUCCESS; + } + + /* This function will call doing the Rename Operation + * This functions gets the Old Unc, New Unc and controller + * names from the ikey, okey and store it in local structure + * and creates the rename_info configkeyval + */ + + upll_rc_t + VtnMoMgr:: GetRenameInfo(ConfigKeyVal *ikey, + ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, + DalDmlIntf *dmi, + const char *ctrlr_id, + bool &renamed) { + UPLL_FUNC_TRACE; + uint8_t no_rename = false; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey || !okey || NULL != rename_info + || !(ikey->get_key()) || !(okey->get_key())) { + UPLL_LOG_DEBUG("Input is NULL"); + return UPLL_RC_ERR_GENERIC; + } + /* allocate memory for struct to store all the details */ + key_rename_vnode_info *vtn_rename_info = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_rename_vnode_info))); + + key_vtn_t *vtn_key = NULL; + vtn_key = reinterpret_cast(ikey->get_key()); + if (vtn_key == NULL) { + UPLL_LOG_DEBUG("No VTN Key"); + ConfigKeyVal::Free(vtn_rename_info); + return UPLL_RC_ERR_GENERIC; + } + GET_USER_DATA_FLAGS(okey, no_rename); + /* Checks the vtn is already renamed or not */ + if (renamed) { + /* if already renamed store the controller name */ + if (!strlen(reinterpret_cast( + (reinterpret_cast + (GetVal(ikey)))->new_name))) { + ConfigKeyVal::Free(vtn_rename_info); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(vtn_rename_info->ctrlr_vtn_name, + reinterpret_cast + (GetVal(ikey))->new_name, + (kMaxLenVtnName + 1)); + } else { + /* if not renamed the ikey contains the controller name */ + if (!strlen(reinterpret_cast(vtn_key->vtn_name))) { + ConfigKeyVal::Free(vtn_rename_info); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(vtn_rename_info->ctrlr_vtn_name, + vtn_key->vtn_name, + (kMaxLenVtnName + 1)); + } + /* Store the old UNC VTN name */ + if (!strlen(reinterpret_cast(vtn_key->vtn_name))) { + ConfigKeyVal::Free(vtn_rename_info); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(vtn_rename_info->old_unc_vtn_name, + vtn_key->vtn_name, + (kMaxLenVtnName + 1)); + + vtn_key = reinterpret_cast(okey->get_key()); + /* store the new UNC VTN NAME */ + if (!strlen(reinterpret_cast(vtn_key->vtn_name))) { + ConfigKeyVal::Free(vtn_rename_info); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(vtn_rename_info->new_unc_vtn_name, + vtn_key->vtn_name, + (kMaxLenVtnName + 1)); + + rename_info = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcInvalidStNum, + vtn_rename_info, + NULL); + DbSubOp dbop = {kOpReadMultiple, + kOpMatchNone, + kOpInOutCtrlr|kOpInOutDomain|kOpInOutFlag}; + result_code = ReadConfigDB(ikey, + UPLL_DT_IMPORT, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Error"); + return result_code; + } + SET_USER_DATA(rename_info, ikey); + if (!rename_info) { + ConfigKeyVal::Free(vtn_rename_info); + return UPLL_RC_ERR_GENERIC; + } + /* Vtn Merge with Existing VTN name in + * IMPORT Table + */ + ConfigKeyVal *temp_key = NULL; + result_code = GetChildConfigKey(temp_key, okey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + result_code = UpdateConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { + /* Invoked VtnRenameMerge function during vtn renamed to existing + * vtn name for validation/Merge of POM key type from renamed VTN + */ + result_code = VtnRenameMerge(ikey, okey, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("RenameMerge failed %d", result_code); + return result_code; + } + SET_USER_DATA_FLAGS(temp_key, VTN_RENAME); + /* New Name available in the IMPORT, then + * we have to update the rename flag in Main Table */ + result_code = UpdateConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_UPDATE, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + DELETE_IF_NOT_NULL(temp_key); + + result_code = GetChildConfigKey(temp_key, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + /* Remove the Current VTN name from the Main table*/ + result_code = UpdateConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_DELETE, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + } + /* The new name not available then create an + * entry in main table */ + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == + result_code && !no_rename) { + result_code = GetChildConfigKey(temp_key, okey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); + return result_code; + } + SET_USER_DATA_FLAGS(temp_key, VTN_RENAME); + /*Create an entry in main table */ + result_code = UpdateConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_CREATE, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + DELETE_IF_NOT_NULL(temp_key); + result_code = GetChildConfigKey(temp_key, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", + result_code); + return result_code; + } + /* Remove the current name from the main table */ + result_code = UpdateConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_DELETE, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + } + DELETE_IF_NOT_NULL(temp_key); + if (no_rename) { + /* This is called during no rename function */ + UPLL_LOG_TRACE("Calling No Rename"); + UPLL_LOG_TRACE("Ikey is %s", ikey->ToStrAll().c_str()); + UPLL_LOG_TRACE("Okey is %s", okey->ToStrAll().c_str()); + uint32_t ref_count = 0; + SET_USER_DATA_FLAGS(okey, NO_RENAME); + result_code = GetChildConfigKey(temp_key, okey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); + return result_code; + } + /* Create an entry with old name */ + result_code = UpdateConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_CREATE, + dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + DELETE_IF_NOT_NULL(temp_key); + result_code = GetChildConfigKey(temp_key, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", + result_code); + return result_code; + } + /* Check the count for the Renamed UNC name */ + result_code = GetInstanceCount(temp_key, + const_cast(ctrlr_id), + UPLL_DT_IMPORT, + &ref_count, + dmi, + RENAMETBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetInstanceCoutn is Failed %d", + result_code); + return result_code; + } + if (ref_count == 1) { + temp_key->SetCfgVal(NULL); + /* if the count is one then remove the Renamed UNC name + * from the MAIN TABLE + */ + SET_USER_DATA_FLAGS(temp_key, NO_RENAME); + result_code = UpdateConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_DELETE, + dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + } + } + DELETE_IF_NOT_NULL(temp_key); + /* Set the Controller Id*/ + SET_USER_DATA_CTRLR(rename_info, ctrlr_id); + if (!renamed) { + val_rename_vtn_t *vtn = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); + uuu::upll_strncpy(vtn->new_name, vtn_rename_info-> + ctrlr_vtn_name, + (kMaxLenCtrlrId + 1)); + ConfigVal *cfg_val = new ConfigVal( + IpctSt::kIpcStValRenameVtn, + vtn); + vtn->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; + okey->SetCfgVal(cfg_val); + SET_USER_DATA(okey, ikey); + dbop.readop = kOpNotRead; + result_code = UpdateConfigDB(okey, + UPLL_DT_IMPORT, + UNC_OP_CREATE, + dmi, + &dbop, + RENAMETBL); + } + return result_code; + } + + upll_rc_t + VtnMoMgr::ValidateVtnKey(key_vtn * vtn_key) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + ret_val = ValidateKey(reinterpret_cast + (vtn_key->vtn_name), + kMinLenVtnName, kMaxLenVtnName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("vtn name syntax check failed." + "Received vtn name - %s", + vtn_key->vtn_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t + VtnMoMgr::ValidateVtnValue(val_vtn *vtn_val, + uint32_t operation) { + UPLL_FUNC_TRACE; + if (vtn_val->valid[UPLL_IDX_DESC_VTN] == UNC_VF_VALID) { + if (!ValidateDesc(vtn_val->description, + kMinLenDescription, kMaxLenDescription)) { + UPLL_LOG_INFO("Description syntax check failed." + "Received Description - %s", + vtn_val->description); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else if (vtn_val->valid[UPLL_IDX_DESC_VTN] == + UNC_VF_VALID_NO_VALUE && + (operation == UNC_OP_UPDATE || + operation == UNC_OP_CREATE)) { + uuu::upll_strncpy(reinterpret_cast + (vtn_val->description), " ", 2); + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t + VtnMoMgr::ValidateVtnRenameValue(val_rename_vtn * vtn_rename) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + if (vtn_rename->valid[UPLL_IDX_NEW_NAME_RVTN] == + UNC_VF_VALID) { + ret_val = ValidateKey(reinterpret_cast + (vtn_rename->new_name), + kMinLenVtnName, kMaxLenVtnName); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Rename syntax check failed." + "Received vtn_rename - %s", + vtn_rename->new_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t + VtnMoMgr::ValidateMessage(IpcReqRespHeader * req, + ConfigKeyVal * ikey) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + if (!ikey || !req || !(ikey->get_key())) { + UPLL_LOG_INFO("ConfigKeyVal / IpcReqRespHeader is Null"); + return UPLL_RC_ERR_GENERIC; + } + if (ikey->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER) + return (ValidateMessageForVtnStnCtrlr(req, ikey)); + + if (ikey->get_key_type() == UNC_KT_VTN_MAPPING_CONTROLLER) + return (ValidateMessageForVtnMapCtrlr(req, ikey)); + + if (ikey->get_st_num() != IpctSt::kIpcStKeyVtn) { + UPLL_LOG_INFO("Invalid Key structure received." + "received struct - %d", + (ikey->get_st_num())); + return UPLL_RC_ERR_BAD_REQUEST; + } + key_vtn *vtn_key = reinterpret_cast + (ikey->get_key()); + + unc_key_type_t ktype = ikey->get_key_type(); + if (UNC_KT_VTN != ktype) { + UPLL_LOG_INFO("Invalid keytype received." + "received keytype - %d", ktype); + return UPLL_RC_ERR_BAD_REQUEST; + } + upll_keytype_datatype_t dt_type = req->datatype; + unc_keytype_operation_t operation = req->operation; + unc_keytype_option1_t option1 = req->option1; + unc_keytype_option2_t option2 = req->option2; + if ((operation != UNC_OP_READ_SIBLING_COUNT) && + (operation != UNC_OP_READ_SIBLING_BEGIN)) { + ret_val = ValidateVtnKey(vtn_key); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("syntax check failed for key_vtn struct"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else { + UPLL_LOG_TRACE("Operation is %d", operation); + StringReset(vtn_key->vtn_name); + } + if ((operation == UNC_OP_CREATE || + operation == UNC_OP_UPDATE) && + (dt_type == UPLL_DT_CANDIDATE|| UPLL_DT_IMPORT == + dt_type)) { + ConfigVal *cfg_val = ikey->get_cfg_val(); + switch (operation) { + case UNC_OP_CREATE: + if (cfg_val == NULL) + return UPLL_RC_SUCCESS; + /* fall through intended */ + case UNC_OP_UPDATE: + { + if (!cfg_val) + return UPLL_RC_ERR_CFG_SYNTAX; + if (cfg_val->get_st_num() != IpctSt::kIpcStValVtn) { + UPLL_LOG_INFO( + "Invalid Value structure received." + "received struct - %d", + (ikey->get_st_num())); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_vtn *vtn_val = reinterpret_cast( + GetVal(ikey)); + if (vtn_val == NULL) { + UPLL_LOG_INFO("syntax check for" + "vtn_val struct is an optional"); + return UPLL_RC_SUCCESS; + } + ret_val = ValidateVtnValue(vtn_val, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("syntax check failure for" + "val_vtn structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } + default: + UPLL_LOG_INFO("Invalid operation "); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else if ((operation == UNC_OP_RENAME || + operation == UNC_OP_READ || + operation == UNC_OP_READ_SIBLING || + operation == UNC_OP_READ_SIBLING_BEGIN) && + (dt_type == UPLL_DT_IMPORT)) { + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_INFO("Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_INFO("Error: option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + ConfigVal *cfg_val = ikey->get_cfg_val(); + switch (operation) { + case UNC_OP_READ: + case UNC_OP_READ_SIBLING: + case UNC_OP_READ_SIBLING_BEGIN: + if (cfg_val == NULL) + return UPLL_RC_SUCCESS; + case UNC_OP_RENAME: + { + if (!cfg_val) + return UPLL_RC_ERR_CFG_SYNTAX; + if (cfg_val->get_st_num() != + IpctSt::kIpcStValRenameVtn) { + UPLL_LOG_INFO( + "Invalid val_rename structure received." + "received struct - %d", + (ikey->get_cfg_val())->get_st_num()); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_rename_vtn *vtn_rename = + reinterpret_cast + (ikey->get_cfg_val()->get_val()); + + if (vtn_rename == NULL && operation == + UNC_OP_RENAME) { + UPLL_LOG_INFO( + "val_rename_vtn struct is" + "Mandatory for Rename operation"); + return UPLL_RC_ERR_BAD_REQUEST; + } else if (vtn_rename == NULL) { + UPLL_LOG_DEBUG( + "syntax check for val_rename" + "_vtn struct is optional"); + return UPLL_RC_SUCCESS; + } + ret_val = ValidateVtnRenameValue(vtn_rename); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("syntax check failure for" + "val_rename_vtn structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } + default: + UPLL_LOG_INFO("Invalid operation "); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else if ((operation == UNC_OP_READ || + operation == UNC_OP_READ_SIBLING || + operation == UNC_OP_READ_SIBLING_BEGIN || + operation == UNC_OP_READ_SIBLING_COUNT) && + (dt_type == UPLL_DT_CANDIDATE || + dt_type == UPLL_DT_RUNNING || + dt_type == UPLL_DT_STARTUP || + dt_type == UPLL_DT_STATE)) { + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_INFO("Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_INFO("Error: option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + ConfigVal *cfg_val = ikey->get_cfg_val(); + if (cfg_val == NULL) + return UPLL_RC_SUCCESS; + if (cfg_val->get_st_num() != IpctSt::kIpcStValVtn) { + UPLL_LOG_INFO( + "Invalid Value structure received." + "received struct - %d", + (cfg_val->get_st_num())); + return UPLL_RC_ERR_BAD_REQUEST; + } + val_vtn *vtn_val = reinterpret_cast + (ikey->get_cfg_val()->get_val()); + if (vtn_val == NULL) { + UPLL_LOG_DEBUG("syntax check for vtn struct" + "is an optional"); + return UPLL_RC_SUCCESS; + } + ret_val = ValidateVtnValue(vtn_val, operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("Base Validation failure for" + "val_vtn structure"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } else if ((operation == UNC_OP_READ_NEXT || + operation == UNC_OP_READ_BULK) && + (dt_type == UPLL_DT_CANDIDATE + || dt_type == UPLL_DT_STARTUP || + dt_type == UPLL_DT_RUNNING || + dt_type == UPLL_DT_IMPORT)) { + UPLL_LOG_TRACE("Value structure is none for" + "operation type:%d", + operation); + return UPLL_RC_SUCCESS; + } else if ((operation == UNC_OP_DELETE) && + (dt_type == UPLL_DT_CANDIDATE || + UPLL_DT_IMPORT == dt_type)) { + UPLL_LOG_TRACE("Value structure is none for" + "operation type:%d", + operation); + return UPLL_RC_SUCCESS; + } + UPLL_LOG_INFO("Error Unsupported datatype(%d)" + "or operation(%d)", + dt_type, operation); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } + + upll_rc_t + VtnMoMgr::ValVtnAttributeSupportCheck(val_vtn_t *vtn_val, + const uint8_t *attrs, + uint32_t operation) { + UPLL_FUNC_TRACE; + + if (NULL != vtn_val) { + if ((vtn_val->valid[UPLL_IDX_DESC_VTN] == UNC_VF_VALID) || + (vtn_val->valid[UPLL_IDX_DESC_VTN] == + UNC_VF_VALID_NO_VALUE)) { + if (attrs[unc::capa::vtn::kCapDesc] == 0) { + vtn_val->valid[UPLL_IDX_DESC_VTN] = UNC_VF_INVALID; + if (operation == UNC_OP_CREATE || + operation == UNC_OP_UPDATE) { + UPLL_LOG_INFO("Description attr is not" + "supported by ctrlr"); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } + } + } + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t + VtnMoMgr::ValidateCapability(IpcReqRespHeader * req, + ConfigKeyVal * ikey, + const char *ctrlr_name) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; + if (!ikey || !req) { + UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); + return ret_val; + } + + if (!ctrlr_name) { + ctrlr_name = reinterpret_cast( + (reinterpret_cast + (ikey->get_user_data()))->ctrlr_id); + if (!ctrlr_name || !strlen(ctrlr_name)) { + UPLL_LOG_DEBUG("Controller Name is NULL"); + return UPLL_RC_ERR_GENERIC; + } + } + + bool result_code = false; + uint32_t max_attrs = 0; + uint32_t max_instance_count = 0; + const uint8_t *attrs = NULL; + switch (req->operation) { + case UNC_OP_CREATE: + result_code = GetCreateCapability( + ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); + break; + + case UNC_OP_UPDATE: + result_code = GetUpdateCapability( + ctrlr_name, + ikey->get_key_type(), + &max_attrs, + &attrs); + break; + case UNC_OP_READ: + case UNC_OP_READ_SIBLING: + case UNC_OP_READ_SIBLING_BEGIN: + case UNC_OP_READ_SIBLING_COUNT: + result_code = GetReadCapability(ctrlr_name, + ikey->get_key_type(), + &max_attrs, + &attrs); + break; + default: + UPLL_LOG_INFO("Invalid operation code(%d)", + req->operation); + return UPLL_RC_ERR_GENERIC; + } + if (!result_code) { + UPLL_LOG_INFO("key_type - %d is not supported by" + "controller - %s", + ikey->get_key_type(), + ctrlr_name); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } + val_vtn *vtn_val = NULL; + if (ikey->get_cfg_val() && (ikey->get_cfg_val()-> + get_st_num() == + IpctSt::kIpcStValVtn)) { + vtn_val = + reinterpret_cast + (ikey->get_cfg_val()->get_val()); + } + if (vtn_val) { + if (max_attrs > 0) { + ret_val = ValVtnAttributeSupportCheck(vtn_val, + attrs, + req->operation); + return ret_val; + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", + req->operation); + return UPLL_RC_ERR_GENERIC; + } + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, + const ConfigKeyVal *ckv, + bool *in_use, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + ConfigKeyVal *ck_ctrlr = NULL; + upll_rc_t result_code = UPLL_RC_SUCCESS; + DbSubOp dbop = {kOpReadExist, kOpMatchCtrlr, kOpInOutNone}; + key_ctr *ctr = reinterpret_cast(ckv->get_key()); + + if (!ctr || !strlen(reinterpret_cast + (ctr->controller_name))) { + UPLL_LOG_DEBUG("Controller Name invalid"); + return UPLL_RC_ERR_GENERIC; + } + uint8_t *controllerName = reinterpret_cast( + new char[kMaxLenCtrlrId+1]); + uuu::upll_strncpy(controllerName, ctr->controller_name, + (kMaxLenCtrlrId + 1)); + result_code = GetChildConfigKey(ck_ctrlr, NULL); + if (!ck_ctrlr || result_code != UPLL_RC_SUCCESS) { + delete[] controllerName; + UPLL_LOG_DEBUG("Controller key allocation failed"); + return UPLL_RC_ERR_GENERIC; + } + SET_USER_DATA_CTRLR(ck_ctrlr, controllerName); + + // result_code = ReadConfigDB(ck_ctrlr, UPLL_DT_RUNNING, + // UNC_OP_READ, dbop, dmi, CTRLRTBL); + result_code = UpdateConfigDB(ck_ctrlr, dt_type, UNC_OP_READ, + dmi, &dbop, CTRLRTBL); + *in_use = (result_code == + UPLL_RC_ERR_INSTANCE_EXISTS) ? true : false; + delete ck_ctrlr; + delete []controllerName; + UPLL_LOG_DEBUG("Returning %d", result_code); + return ((result_code == UPLL_RC_ERR_INSTANCE_EXISTS || + result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) + ? UPLL_RC_SUCCESS : result_code); + } + + upll_rc_t + VtnMoMgr::ValidateMessageForVtnStnCtrlr( + IpcReqRespHeader * req, + ConfigKeyVal * ikey) { + UPLL_FUNC_TRACE; + upll_rc_t ret_val = UPLL_RC_SUCCESS; + if (!req || !ikey || !(ikey->get_key())) { + UPLL_LOG_INFO("ConfigKeyVal / IpcReqRespHeader is Null"); + return UPLL_RC_ERR_GENERIC; + } + if (ikey->get_st_num() != + IpctSt::kIpcStKeyVtnstationController) { + UPLL_LOG_INFO("Invalid Key structure received." + "received struct - %d", + (ikey->get_st_num())); + return UPLL_RC_ERR_CFG_SYNTAX; + } + key_vtnstation_controller *vtn_ctrlr_key = + reinterpret_cast + (ikey->get_key()); + + if ((req->operation == UNC_OP_READ) || + (req->operation == UNC_OP_READ_SIBLING) || + (req->operation == UNC_OP_READ_SIBLING_BEGIN) || + (req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if (req->datatype == UPLL_DT_STATE) { + if ((req->option1 != UNC_OPT1_NORMAL) && + (req->option1 != UNC_OPT1_DETAIL) && + (req->option1 != UNC_OPT1_COUNT)) { + UPLL_LOG_INFO(" Error: option1 is invalid"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (req->option2 != UNC_OPT2_NONE) { + UPLL_LOG_INFO(" Error: option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + ret_val = ValidateVtnStnCtrlrKey(vtn_ctrlr_key, + req->operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("vtn_stn_ctrlr_key syntax check failed."); + return UPLL_RC_ERR_CFG_SYNTAX; + } + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_INFO("Error Unsupported datatype (%d)", + req->datatype); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + } + UPLL_LOG_INFO("Error Unsupported Operation (%d)", + req->operation); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + + upll_rc_t + VtnMoMgr::ValidateMessageForVtnMapCtrlr(IpcReqRespHeader * req, + ConfigKeyVal * ikey) { + UPLL_FUNC_TRACE; + if (!req || !ikey || !(ikey->get_key())) { + UPLL_LOG_INFO("ConfigKeyVal / IpcReqRespHeader is Null"); + return UPLL_RC_ERR_GENERIC; + } + upll_keytype_datatype_t dt_type = req->datatype; + unc_keytype_operation_t operation = req->operation; + unc_keytype_option1_t option1 = req->option1; + unc_keytype_option2_t option2 = req->option2; + + upll_rc_t ret_val = UPLL_RC_SUCCESS; + if (ikey->get_st_num() != IpctSt::kIpcStKeyVtnController) { + UPLL_LOG_INFO("Invalid key structure received." + "received struct - %d", + (ikey->get_st_num())); + return UPLL_RC_ERR_CFG_SYNTAX; + } + key_vtn_controller *vtn_ctrlr_key = + reinterpret_cast + (ikey->get_key()); + + if (operation == UNC_OP_READ || operation == + UNC_OP_READ_SIBLING + || operation == UNC_OP_READ_SIBLING_BEGIN) { + if (dt_type == UPLL_DT_STATE) { + if (option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_INFO(" Error: option1 is not NORMAL"); + return UPLL_RC_ERR_INVALID_OPTION1; + } + if (option2 != UNC_OPT2_NONE) { + UPLL_LOG_INFO(" Error: option2 is not NONE"); + return UPLL_RC_ERR_INVALID_OPTION2; + } + ret_val = ValidateVtnMapCtrlrKey(vtn_ctrlr_key, + operation); + if (ret_val != UPLL_RC_SUCCESS) { + UPLL_LOG_INFO("syntax check for key_vtn" + "_ctrlr struct is failed"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + UPLL_LOG_TRACE("value struct validation is none" + "for this keytype"); + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_INFO("Error Unsupported datatype (%d)", dt_type); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + } + UPLL_LOG_INFO("Error Unsupported operation(%d)", operation); + return UPLL_RC_ERR_NO_SUCH_INSTANCE; + } + + upll_rc_t + VtnMoMgr::ValidateVtnMapCtrlrKey( + key_vtn_controller * vtn_ctrlr_key, + unc_keytype_operation_t operation) { + UPLL_FUNC_TRACE; + + if (!ValidateString( + vtn_ctrlr_key->vtn_key.vtn_name, + kMinLenVtnName, kMaxLenVtnName)) { + UPLL_LOG_INFO("vtn name syntax check failed." + "Received vtn_Name - %s", + vtn_ctrlr_key->vtn_key.vtn_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + if ((operation != UNC_OP_READ_SIBLING_COUNT) && + (operation != UNC_OP_READ_SIBLING_BEGIN)) { + if (!ValidateString( + vtn_ctrlr_key->controller_name, + kMinLenCtrlrId, kMaxLenCtrlrId)) { + UPLL_LOG_INFO("controller_name syntax check failed." + "Received controller_name - %s", + vtn_ctrlr_key->controller_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + if (!ValidateDefaultStr(vtn_ctrlr_key->domain_id, + kMinLenDomainId, kMaxLenDomainId)) { + UPLL_LOG_INFO("Domain_id syntax check failed." + "Received Domain_id - %s", + vtn_ctrlr_key->domain_id); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else { + UPLL_LOG_TRACE("Operation is %d", operation); + StringReset(vtn_ctrlr_key->controller_name); + StringReset(vtn_ctrlr_key->domain_id); + } + return UPLL_RC_SUCCESS; + } + upll_rc_t + VtnMoMgr::ValidateVtnStnCtrlrKey( + key_vtnstation_controller * vtn_ctrlr_key, + unc_keytype_operation_t operation) { + UPLL_FUNC_TRACE; + if ((operation != UNC_OP_READ_SIBLING_COUNT) && + (operation != UNC_OP_READ_SIBLING_BEGIN)) { + if (!ValidateString(vtn_ctrlr_key->controller_name, + kMinLenCtrlrId, kMaxLenCtrlrId)) { + UPLL_LOG_INFO("controller_name syntax check failed." + "Received controller_name - %s", + vtn_ctrlr_key->controller_name); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else { + UPLL_LOG_TRACE("Operation is %d", operation); + StringReset(vtn_ctrlr_key->controller_name); + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::SetOperStatus(ConfigKeyVal *ikey, + state_notification notification, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + ConfigVal *tmp = (ikey->get_cfg_val()) ? + ikey->get_cfg_val()->get_next_cfg_val() : NULL; + val_db_vtn_st_t *vtn_valst = reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vtn_valst == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + val_vtn_st_t *vtn_val = reinterpret_cast + (vtn_valst); + + /* Update oper status based on notification */ #if 0 - /* Vtn Merge with Existing VTN name in - * IMPORT Table - */ - ConfigKeyVal *temp_key = NULL; - result_code = GetChildConfigKey(temp_key, okey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - return result_code; - } - result_code = UpdateConfigDB(temp_key, UPLL_DT_IMPORT, UNC_OP_READ, dmi, - &dbop, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && - UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; - } - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - SET_USER_DATA_FLAGS(temp_key, VTN_RENAME); - /* New Name available in the IMPORT, then - * we have to update the rename flag in Main Table */ - result_code = UpdateConfigDB(temp_key, UPLL_DT_IMPORT, - UNC_OP_UPDATE, dmi, &dbop, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; - } - DELETE_IF_NOT_NULL(temp_key); - - result_code = GetChildConfigKey(temp_key, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed"); - return result_code; - } - /* Remove the Current VTN name from the Main table*/ - result_code = UpdateConfigDB(temp_key, UPLL_DT_IMPORT, - UNC_OP_DELETE, dmi, &dbop, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; - } - } - /* The new name not available then create an entry in main table */ - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code && !no_rename) { - result_code = GetChildConfigKey(temp_key, okey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); - return result_code; - } - SET_USER_DATA_FLAGS(temp_key, VTN_RENAME); - /*Create an entry in main table */ - result_code = UpdateConfigDB(temp_key, UPLL_DT_IMPORT, - UNC_OP_CREATE, dmi, &dbop, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; - } - DELETE_IF_NOT_NULL(temp_key); - result_code = GetChildConfigKey(temp_key, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); - return result_code; - } - /* Remove the current name from the main table */ - result_code = UpdateConfigDB(temp_key, UPLL_DT_IMPORT, - UNC_OP_DELETE, dmi, &dbop, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; - } - } - DELETE_IF_NOT_NULL(temp_key); - if (no_rename) { - /* This is called during no rename function */ - UPLL_LOG_TRACE("Calling No Rename"); - UPLL_LOG_TRACE("Ikey is %s", ikey->ToStrAll().c_str()); - UPLL_LOG_TRACE("Okey is %s", okey->ToStrAll().c_str()); - uint32_t ref_count = 0; - SET_USER_DATA_FLAGS(okey, NO_RENAME); - result_code = GetChildConfigKey(temp_key, okey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); - return result_code; - } - /* Create an entry with old name */ - result_code = UpdateConfigDB(temp_key, UPLL_DT_IMPORT, UNC_OP_CREATE, dmi, - MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; - } - DELETE_IF_NOT_NULL(temp_key); - result_code = GetChildConfigKey(temp_key, ikey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey Failed %d", result_code); - return result_code; - } - /* Check the count for the Renamed UNC name */ - result_code = GetInstanceCount(temp_key, const_cast(ctrlr_id), - UPLL_DT_IMPORT, &ref_count, dmi, RENAMETBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetInstanceCoutn is Failed %d", result_code); - return result_code; - } - if (ref_count == 1) { - temp_key->SetCfgVal(NULL); - /* if the count is one then remove the Renamed UNC name - * from the MAIN TABLE - */ - SET_USER_DATA_FLAGS(temp_key, NO_RENAME); - result_code = UpdateConfigDB(temp_key, UPLL_DT_IMPORT, UNC_OP_DELETE, dmi, - MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_key); - return result_code; - } - } - } - DELETE_IF_NOT_NULL(temp_key); + if ((notification == kAdminStatusDisabled) && + (vtn_val->oper_status == UPLL_OPER_STATUS_UNKNOWN)) { + return result_code; + } #endif - /* Set the Controller Id*/ - SET_USER_DATA_CTRLR(rename_info, ctrlr_id); - if (!renamed) { - val_rename_vtn_t *vtn = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_vtn))); - uuu::upll_strncpy(vtn->new_name, vtn_rename_info->ctrlr_vtn_name, - (kMaxLenCtrlrId + 1)); - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValRenameVtn, vtn); - vtn->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - okey->SetCfgVal(cfg_val); - SET_USER_DATA(okey, ikey); - dbop.readop = kOpNotRead; - result_code = UpdateConfigDB(okey, UPLL_DT_IMPORT, UNC_OP_CREATE, - dmi, &dbop, RENAMETBL); - } - return result_code; -} - -upll_rc_t -VtnMoMgr::ValidateVtnKey(key_vtn * vtn_key) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_SUCCESS; - ret_val = ValidateKey(reinterpret_cast(vtn_key->vtn_name), - kMinLenVtnName, kMaxLenVtnName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("vtn name syntax check failed." - "Received vtn name - %s", - vtn_key->vtn_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t -VtnMoMgr::ValidateVtnValue(val_vtn *vtn_val, - uint32_t operation) { - UPLL_FUNC_TRACE; - if (vtn_val->valid[UPLL_IDX_DESC_VTN] == UNC_VF_VALID) { - if (!ValidateDesc(vtn_val->description, - kMinLenDescription, kMaxLenDescription)) { - UPLL_LOG_INFO("Description syntax check failed." - "Received Description - %s", vtn_val->description); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else if (vtn_val->valid[UPLL_IDX_DESC_VTN] == UNC_VF_VALID_NO_VALUE && - (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { - uuu::upll_strncpy(reinterpret_cast(vtn_val->description), " ", 2); - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t -VtnMoMgr::ValidateVtnRenameValue(val_rename_vtn * vtn_rename) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_SUCCESS; - if (vtn_rename->valid[UPLL_IDX_NEW_NAME_RVTN] == UNC_VF_VALID) { - ret_val = ValidateKey(reinterpret_cast(vtn_rename->new_name), - kMinLenVtnName, kMaxLenVtnName); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Rename syntax check failed." - "Received vtn_rename - %s", - vtn_rename->new_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t -VtnMoMgr::ValidateMessage(IpcReqRespHeader * req, - ConfigKeyVal * ikey) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_SUCCESS; - if (!ikey || !req || !(ikey->get_key())) { - UPLL_LOG_INFO("ConfigKeyVal / IpcReqRespHeader is Null"); - return UPLL_RC_ERR_GENERIC; - } - if (ikey->get_key_type() == UNC_KT_VTNSTATION_CONTROLLER) - return (ValidateMessageForVtnStnCtrlr(req, ikey)); - - if (ikey->get_key_type() == UNC_KT_VTN_MAPPING_CONTROLLER) - return (ValidateMessageForVtnMapCtrlr(req, ikey)); - - if (ikey->get_st_num() != IpctSt::kIpcStKeyVtn) { - UPLL_LOG_INFO("Invalid Key structure received. received struct - %d", - (ikey->get_st_num())); - return UPLL_RC_ERR_BAD_REQUEST; - } - key_vtn *vtn_key = reinterpret_cast(ikey->get_key()); - - unc_key_type_t ktype = ikey->get_key_type(); - if (UNC_KT_VTN != ktype) { - UPLL_LOG_INFO("Invalid keytype received. received keytype - %d", ktype); - return UPLL_RC_ERR_BAD_REQUEST; - } - upll_keytype_datatype_t dt_type = req->datatype; - unc_keytype_operation_t operation = req->operation; - unc_keytype_option1_t option1 = req->option1; - unc_keytype_option2_t option2 = req->option2; - if ((operation != UNC_OP_READ_SIBLING_COUNT) && - (operation != UNC_OP_READ_SIBLING_BEGIN)) { - ret_val = ValidateVtnKey(vtn_key); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("syntax check failed for key_vtn struct"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else { - UPLL_LOG_TRACE("Operation is %d", operation); - StringReset(vtn_key->vtn_name); - } - if ((operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) && - (dt_type == UPLL_DT_CANDIDATE|| UPLL_DT_IMPORT == dt_type)) { - ConfigVal *cfg_val = ikey->get_cfg_val(); - switch (operation) { - case UNC_OP_CREATE: - if (cfg_val == NULL) - return UPLL_RC_SUCCESS; - /* fall through intended */ - case UNC_OP_UPDATE: - { - if (!cfg_val) - return UPLL_RC_ERR_CFG_SYNTAX; - if (cfg_val->get_st_num() != IpctSt::kIpcStValVtn) { - UPLL_LOG_INFO( - "Invalid Value structure received. received struct - %d", - (ikey->get_st_num())); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_vtn *vtn_val = reinterpret_cast(GetVal(ikey)); - if (vtn_val == NULL) { - UPLL_LOG_INFO("syntax check for vtn_val struct is an optional"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVtnValue(vtn_val, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("syntax check failure for val_vtn structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } - default: - UPLL_LOG_INFO("Invalid operation "); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else if ((operation == UNC_OP_RENAME || operation == UNC_OP_READ || - operation == UNC_OP_READ_SIBLING || - operation == UNC_OP_READ_SIBLING_BEGIN) && - (dt_type == UPLL_DT_IMPORT)) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_INFO("Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_INFO("Error: option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - ConfigVal *cfg_val = ikey->get_cfg_val(); - switch (operation) { - case UNC_OP_READ: - case UNC_OP_READ_SIBLING: - case UNC_OP_READ_SIBLING_BEGIN: - if (cfg_val == NULL) - return UPLL_RC_SUCCESS; - case UNC_OP_RENAME: - { - if (!cfg_val) - return UPLL_RC_ERR_CFG_SYNTAX; - if (cfg_val->get_st_num() != IpctSt::kIpcStValRenameVtn) { - UPLL_LOG_INFO( - "Invalid val_rename structure received. received struct - %d", - (ikey->get_cfg_val())->get_st_num()); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_rename_vtn *vtn_rename = - reinterpret_cast(ikey->get_cfg_val()->get_val()); - - if (vtn_rename == NULL && operation == UNC_OP_RENAME) { - UPLL_LOG_INFO( - "val_rename_vtn struct is Mandatory for Rename operation"); - return UPLL_RC_ERR_BAD_REQUEST; - } else if (vtn_rename == NULL) { - UPLL_LOG_DEBUG( - "syntax check for val_rename_vtn struct is optional"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVtnRenameValue(vtn_rename); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("syntax check failure for val_rename_vtn structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } - default: - UPLL_LOG_INFO("Invalid operation "); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else if ((operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING || - operation == UNC_OP_READ_SIBLING_BEGIN || - operation == UNC_OP_READ_SIBLING_COUNT) && - (dt_type == UPLL_DT_CANDIDATE || dt_type == UPLL_DT_RUNNING || - dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_STATE)) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_INFO("Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_INFO("Error: option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - ConfigVal *cfg_val = ikey->get_cfg_val(); - if (cfg_val == NULL) - return UPLL_RC_SUCCESS; - if (cfg_val->get_st_num() != IpctSt::kIpcStValVtn) { - UPLL_LOG_INFO( - "Invalid Value structure received. received struct - %d", - (cfg_val->get_st_num())); - return UPLL_RC_ERR_BAD_REQUEST; - } - val_vtn *vtn_val = reinterpret_cast - (ikey->get_cfg_val()->get_val()); - if (vtn_val == NULL) { - UPLL_LOG_DEBUG("syntax check for vtn struct is an optional"); - return UPLL_RC_SUCCESS; - } - ret_val = ValidateVtnValue(vtn_val, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("Base Validation failure for val_vtn structure"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } else if ((operation == UNC_OP_READ_NEXT || - operation == UNC_OP_READ_BULK) && (dt_type == UPLL_DT_CANDIDATE - || dt_type == UPLL_DT_STARTUP || dt_type == UPLL_DT_RUNNING || - dt_type == UPLL_DT_IMPORT)) { - UPLL_LOG_TRACE("Value structure is none for operation type:%d", - operation); - return UPLL_RC_SUCCESS; - } else if ((operation == UNC_OP_DELETE) && - (dt_type == UPLL_DT_CANDIDATE || UPLL_DT_IMPORT == dt_type)) { - UPLL_LOG_TRACE("Value structure is none for operation type:%d", - operation); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_INFO("Error Unsupported datatype(%d) or operation(%d)", - dt_type, operation); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; -} - -upll_rc_t -VtnMoMgr::ValVtnAttributeSupportCheck(val_vtn_t *vtn_val, - const uint8_t *attrs, - uint32_t operation) { - UPLL_FUNC_TRACE; - - if (NULL != vtn_val) { - if ((vtn_val->valid[UPLL_IDX_DESC_VTN] == UNC_VF_VALID) || - (vtn_val->valid[UPLL_IDX_DESC_VTN] == UNC_VF_VALID_NO_VALUE)) { - if (attrs[unc::capa::vtn::kCapDesc] == 0) { - vtn_val->valid[UPLL_IDX_DESC_VTN] = UNC_VF_INVALID; - if (operation == UNC_OP_CREATE || - operation == UNC_OP_UPDATE) { - UPLL_LOG_INFO("Description attr is not supported by ctrlr"); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } - } - } - } - return UPLL_RC_SUCCESS; -} - - -upll_rc_t -VtnMoMgr::ValidateCapability(IpcReqRespHeader * req, - ConfigKeyVal * ikey, - const char *ctrlr_name) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; - if (!ikey || !req ) { - UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); - return ret_val; - } - - if (!ctrlr_name) { - ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); - if (!ctrlr_name || !strlen(ctrlr_name)) { - UPLL_LOG_DEBUG("Controller Name is NULL"); - return UPLL_RC_ERR_GENERIC; - } - } - - bool result_code = false; - uint32_t max_attrs = 0; - uint32_t max_instance_count = 0; - const uint8_t *attrs = NULL; - switch (req->operation) { - case UNC_OP_CREATE: - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, - &attrs); - if (result_code && (max_instance_count != 0) && - (cur_instance_count > max_instance_count)) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } - break; - - case UNC_OP_UPDATE: - result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); - break; - case UNC_OP_READ: - case UNC_OP_READ_SIBLING: - case UNC_OP_READ_SIBLING_BEGIN: - case UNC_OP_READ_SIBLING_COUNT: - result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); - break; - default: - UPLL_LOG_INFO("Invalid operation code(%d)", req->operation); - return UPLL_RC_ERR_GENERIC; - } - if (!result_code) { - UPLL_LOG_INFO("key_type - %d is not supported by controller - %s", - ikey->get_key_type(), ctrlr_name); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } - val_vtn *vtn_val = NULL; - if (ikey->get_cfg_val() && (ikey->get_cfg_val()->get_st_num() == - IpctSt::kIpcStValVtn)) { - vtn_val = - reinterpret_cast(ikey->get_cfg_val()->get_val()); - } - if (vtn_val) { - if (max_attrs > 0) { - ret_val = ValVtnAttributeSupportCheck(vtn_val, attrs, req->operation); - return ret_val; - } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_GENERIC; - } - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, - const ConfigKeyVal *ckv, - bool *in_use, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - ConfigKeyVal *ck_ctrlr = NULL; - upll_rc_t result_code = UPLL_RC_SUCCESS; - DbSubOp dbop = {kOpReadExist, kOpMatchCtrlr, kOpInOutNone}; - key_ctr *ctr = reinterpret_cast(ckv->get_key()); - - if (!ctr || !strlen(reinterpret_cast(ctr->controller_name))) { - UPLL_LOG_DEBUG("Controller Name invalid"); - return UPLL_RC_ERR_GENERIC; - } - uint8_t *controllerName = reinterpret_cast( - new char[kMaxLenCtrlrId+1]); - uuu::upll_strncpy(controllerName, ctr->controller_name, - (kMaxLenCtrlrId + 1)); - result_code = GetChildConfigKey(ck_ctrlr, NULL); - if (!ck_ctrlr || result_code != UPLL_RC_SUCCESS) { - delete[] controllerName; - UPLL_LOG_DEBUG("Controller key allocation failed"); - return UPLL_RC_ERR_GENERIC; - } - SET_USER_DATA_CTRLR(ck_ctrlr, controllerName); - - // result_code = ReadConfigDB(ck_ctrlr, UPLL_DT_RUNNING, - // UNC_OP_READ, dbop, dmi, CTRLRTBL); - result_code = UpdateConfigDB(ck_ctrlr, dt_type, UNC_OP_READ, - dmi, &dbop, CTRLRTBL); - *in_use = (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) ? true : false; - delete ck_ctrlr; - delete []controllerName; - UPLL_LOG_DEBUG("Returning %d", result_code); - return ((result_code == UPLL_RC_ERR_INSTANCE_EXISTS || - result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) - ? UPLL_RC_SUCCESS : result_code); -} - -upll_rc_t -VtnMoMgr::ValidateMessageForVtnStnCtrlr(IpcReqRespHeader * req, - ConfigKeyVal * ikey) { - UPLL_FUNC_TRACE; - upll_rc_t ret_val = UPLL_RC_SUCCESS; - if (!req || !ikey || !(ikey->get_key())) { - UPLL_LOG_INFO("ConfigKeyVal / IpcReqRespHeader is Null"); - return UPLL_RC_ERR_GENERIC; - } - if (ikey->get_st_num() != IpctSt::kIpcStKeyVtnstationController) { - UPLL_LOG_INFO("Invalid Key structure received. received struct - %d", - (ikey->get_st_num())); - return UPLL_RC_ERR_CFG_SYNTAX; - } - key_vtnstation_controller *vtn_ctrlr_key = - reinterpret_cast (ikey->get_key()); - - if ((req->operation == UNC_OP_READ) || - (req->operation == UNC_OP_READ_SIBLING) || - (req->operation == UNC_OP_READ_SIBLING_BEGIN) || - (req->operation == UNC_OP_READ_SIBLING_COUNT)) { - if (req->datatype == UPLL_DT_STATE) { - if ((req->option1 != UNC_OPT1_NORMAL) && - (req->option1 != UNC_OPT1_DETAIL) && - (req->option1 != UNC_OPT1_COUNT)) { - UPLL_LOG_INFO(" Error: option1 is invalid"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (req->option2 != UNC_OPT2_NONE) { - UPLL_LOG_INFO(" Error: option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - ret_val = ValidateVtnStnCtrlrKey(vtn_ctrlr_key, req->operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("vtn_stn_ctrlr_key syntax check failed."); - return UPLL_RC_ERR_CFG_SYNTAX; - } - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_INFO("Error Unsupported datatype (%d)", req->datatype); - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - } - UPLL_LOG_INFO("Error Unsupported Operation (%d)", req->operation); - return UPLL_RC_ERR_NO_SUCH_INSTANCE; -} - -upll_rc_t -VtnMoMgr::ValidateMessageForVtnMapCtrlr(IpcReqRespHeader * req, - ConfigKeyVal * ikey) { - UPLL_FUNC_TRACE; - if (!req || !ikey || !(ikey->get_key())) { - UPLL_LOG_INFO("ConfigKeyVal / IpcReqRespHeader is Null"); - return UPLL_RC_ERR_GENERIC; - } - upll_keytype_datatype_t dt_type = req->datatype; - unc_keytype_operation_t operation = req->operation; - unc_keytype_option1_t option1 = req->option1; - unc_keytype_option2_t option2 = req->option2; - - upll_rc_t ret_val = UPLL_RC_SUCCESS; - if (ikey->get_st_num() != IpctSt::kIpcStKeyVtnController) { - UPLL_LOG_INFO("Invalid key structure received. received struct - %d", - (ikey->get_st_num())); - return UPLL_RC_ERR_CFG_SYNTAX; - } - key_vtn_controller *vtn_ctrlr_key = - reinterpret_cast (ikey->get_key()); - - if (operation == UNC_OP_READ || operation == UNC_OP_READ_SIBLING - || operation == UNC_OP_READ_SIBLING_BEGIN) { - if (dt_type == UPLL_DT_STATE) { - if (option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_INFO(" Error: option1 is not NORMAL"); - return UPLL_RC_ERR_INVALID_OPTION1; - } - if (option2 != UNC_OPT2_NONE) { - UPLL_LOG_INFO(" Error: option2 is not NONE"); - return UPLL_RC_ERR_INVALID_OPTION2; - } - ret_val = ValidateVtnMapCtrlrKey(vtn_ctrlr_key, operation); - if (ret_val != UPLL_RC_SUCCESS) { - UPLL_LOG_INFO("syntax check for key_vtn_ctrlr struct is failed"); - return UPLL_RC_ERR_CFG_SYNTAX; - } - UPLL_LOG_TRACE("value struct validation is none for this keytype"); - return UPLL_RC_SUCCESS; - } else { - UPLL_LOG_INFO("Error Unsupported datatype (%d)", dt_type); - return UPLL_RC_ERR_NO_SUCH_INSTANCE; - } - } - UPLL_LOG_INFO("Error Unsupported operation(%d)", operation); - return UPLL_RC_ERR_NO_SUCH_INSTANCE; -} - -upll_rc_t -VtnMoMgr::ValidateVtnMapCtrlrKey(key_vtn_controller * vtn_ctrlr_key, - unc_keytype_operation_t operation) { - UPLL_FUNC_TRACE; - - if (!ValidateString( - vtn_ctrlr_key->vtn_key.vtn_name, - kMinLenVtnName, kMaxLenVtnName)) { - UPLL_LOG_INFO("vtn name syntax check failed." - "Received vtn_Name - %s", - vtn_ctrlr_key->vtn_key.vtn_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } - if ((operation != UNC_OP_READ_SIBLING_COUNT) && - (operation != UNC_OP_READ_SIBLING_BEGIN)) { - if (!ValidateString( - vtn_ctrlr_key->controller_name, - kMinLenCtrlrId, kMaxLenCtrlrId)) { - UPLL_LOG_INFO("controller_name syntax check failed." - "Received controller_name - %s", - vtn_ctrlr_key->controller_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } - if (!ValidateDefaultStr(vtn_ctrlr_key->domain_id, - kMinLenDomainId, kMaxLenDomainId)) { - UPLL_LOG_INFO("Domain_id syntax check failed." - "Received Domain_id - %s", - vtn_ctrlr_key->domain_id); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else { - UPLL_LOG_TRACE("Operation is %d", operation); - StringReset(vtn_ctrlr_key->controller_name); - StringReset(vtn_ctrlr_key->domain_id); - } - return UPLL_RC_SUCCESS; -} -upll_rc_t -VtnMoMgr::ValidateVtnStnCtrlrKey(key_vtnstation_controller * vtn_ctrlr_key, - unc_keytype_operation_t operation) { - UPLL_FUNC_TRACE; - if ((operation != UNC_OP_READ_SIBLING_COUNT) && - (operation != UNC_OP_READ_SIBLING_BEGIN)) { - if (!ValidateString(vtn_ctrlr_key->controller_name, - kMinLenCtrlrId, kMaxLenCtrlrId)) { - UPLL_LOG_INFO("controller_name syntax check failed." - "Received controller_name - %s", - vtn_ctrlr_key->controller_name); - return UPLL_RC_ERR_CFG_SYNTAX; - } - } else { - UPLL_LOG_TRACE("Operation is %d", operation); - StringReset(vtn_ctrlr_key->controller_name); - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::SetOperStatus(ConfigKeyVal *ikey, - state_notification notification, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!ikey) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - ConfigVal *tmp = (ikey->get_cfg_val()) ? - ikey->get_cfg_val()->get_next_cfg_val() : NULL; - val_db_vtn_st_t *vtn_valst = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vtn_valst == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - val_vtn_st_t *vtn_val = reinterpret_cast(vtn_valst); - - /* Update oper status based on notification */ - if (((notification != kCtrlrReconnectIfUp) && - (notification != kCtrlrReconnectIfDown) && - (notification != kCtrlrReconnect)) && - (vtn_val->oper_status == UPLL_OPER_STATUS_UNKNOWN)) { - return result_code; - } - vtn_val->valid[0] = UNC_VF_VALID; - switch (notification) { - case kCtrlrReconnectIfUp: - if (vtn_val->oper_status == UPLL_OPER_STATUS_DOWN) { - return UPLL_RC_SUCCESS; - } - vtn_val->oper_status = UPLL_OPER_STATUS_UP; - break; - case kCtrlrReconnectIfDown: - vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; - break; - case kCtrlrReconnect: - vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; - break; - case kAdminStatusEnabled: - if (vtn_valst->down_count == 0) { - vtn_val->oper_status = UPLL_OPER_STATUS_UNINIT; - // reset alarm - } else - vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; - break; - case kAdminStatusDisabled: - vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; - break; - case kCtrlrDisconnect: - vtn_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; - break; - case kPortFault: - case kPathFault: - case kBoundaryFault: - vtn_valst->down_count = (vtn_valst->down_count + 1); - if (vtn_valst->down_count == 1) { - vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; - // generate alarm - } - break; - case kPortFaultReset: - case kPathFaultReset: - case kBoundaryFaultReset: - vtn_valst->down_count = (vtn_valst->down_count > 0) ? - (vtn_valst->down_count - 1) : 0; - if (vtn_valst->down_count == 0) { - vtn_val->oper_status = UPLL_OPER_STATUS_UNINIT; - // reset alarm - } - break; - } - - DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; - result_code = UpdateConfigDB(ikey, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); - UPLL_LOG_DEBUG("SetOperstatus for VTN after Update is \n %s", - ikey->ToStrAll().c_str()); - return result_code; -} - -upll_rc_t VtnMoMgr::SetCtrlrOperStatus(ConfigKeyVal *ikey, - state_notification notification, - DalDmlIntf *dmi, bool &oper_change) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!ikey) { - UPLL_LOG_DEBUG("ikey is NULL"); - return UPLL_RC_ERR_GENERIC; - } - val_vtn_ctrlr *ctrlr_val = reinterpret_cast(GetVal(ikey)); - if (!ctrlr_val) { - UPLL_LOG_DEBUG("val_vtn_ctrlr struct is NULL"); - return UPLL_RC_ERR_GENERIC; - } - - /* Update oper status based on notification */ - switch (notification) { - case kCtrlrReconnectIfUp: - if (ctrlr_val->oper_status == UPLL_OPER_STATUS_DOWN) { - return UPLL_RC_SUCCESS; - } - oper_change = (ctrlr_val->oper_status != UPLL_OPER_STATUS_UP)? - true:false; - ctrlr_val->oper_status = UPLL_OPER_STATUS_UP; - break; - case kCtrlrReconnectIfDown: - oper_change = (ctrlr_val->oper_status != UPLL_OPER_STATUS_DOWN)? - true:false; - ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; - break; - case kCtrlrReconnect: - oper_change = (ctrlr_val->oper_status != UPLL_OPER_STATUS_DOWN)? - true:false; - ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; - break; - case kCtrlrDisconnect: - oper_change = (ctrlr_val->oper_status != UPLL_OPER_STATUS_UNKNOWN)? - true:false; - ctrlr_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; - ctrlr_val->down_count = 0; - break; - case kAdminStatusDisabled: - case kPortFault: - case kPathFault: - case kBoundaryFault: - ctrlr_val->down_count = (ctrlr_val->down_count + 1); - oper_change = (ctrlr_val->oper_status != UPLL_OPER_STATUS_DOWN)? - true:false; - if (ctrlr_val->down_count == 1) { - ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; - // generate alarm - } - break; - case kAdminStatusEnabled: - case kPortFaultReset: - case kPathFaultReset: - case kBoundaryFaultReset: - if (ctrlr_val->oper_status == UPLL_OPER_STATUS_UP) { - oper_change = false; - UPLL_LOG_DEBUG("SetCtrlrOperstatus status already up\n %s", - ikey->ToStrAll().c_str()); - return UPLL_RC_SUCCESS; - } - ctrlr_val->down_count = (ctrlr_val->down_count > 0) ? - (ctrlr_val->down_count - 1) : 0; - if (ctrlr_val->down_count == 0) { - oper_change = (ctrlr_val->oper_status != UPLL_OPER_STATUS_UP)? + vtn_val->valid[0] = UNC_VF_VALID; + switch (notification) { + case kCtrlrReconnectIfUp: + if (vtn_val->oper_status == UPLL_OPER_STATUS_DOWN) { + return UPLL_RC_SUCCESS; + } + vtn_val->oper_status = UPLL_OPER_STATUS_UP; + break; + case kCtrlrReconnectIfDown: + if (vtn_val->oper_status == UPLL_OPER_STATUS_DOWN) { + return UPLL_RC_SUCCESS; + } + vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; + break; + case kCtrlrReconnect: + vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; + break; + case kCtrlrDisconnect: + case kPortUnknown: + vtn_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; + vtn_valst->down_count = 0; + break; + case kAdminStatusDisabled: + case kPortFault: + case kPathFault: + case kBoundaryFault: + vtn_valst->down_count = (vtn_valst->down_count + 1); + if (vtn_valst->down_count == 1) { + vtn_val->oper_status = UPLL_OPER_STATUS_DOWN; + // generate alarm + } + break; + case kAdminStatusEnabled: + case kPortFaultReset: + case kPathFaultReset: + case kBoundaryFaultReset: + case kBoundaryFaultResetWithAdminDisabled: + vtn_valst->down_count = (vtn_valst->down_count > 0) ? + (vtn_valst->down_count - 1) : 0; + if (notification != kBoundaryFaultResetWithAdminDisabled && + vtn_valst->down_count == 0) { + vtn_val->oper_status = UPLL_OPER_STATUS_UNINIT; + // reset alarm + } + break; + default: + UPLL_LOG_TRACE("Received unexpected notification %d\n", + notification); + break; + } + + DbSubOp dbop = { kOpNotRead, kOpMatchNone, kOpInOutNone }; + result_code = UpdateConfigDB(ikey, UPLL_DT_STATE, UNC_OP_UPDATE, + dmi, &dbop, MAINTBL); + UPLL_LOG_DEBUG("SetOperstatus for VTN after Update is \n %s", + ikey->ToStrAll().c_str()); + return result_code; + } + + upll_rc_t VtnMoMgr::SetCtrlrOperStatus( + ConfigKeyVal *ikey, + state_notification notification, + DalDmlIntf *dmi, + bool &oper_change) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey) { + UPLL_LOG_DEBUG("ikey is NULL"); + return UPLL_RC_ERR_GENERIC; + } + val_vtn_ctrlr *ctrlr_val = reinterpret_cast + (GetVal(ikey)); + if (!ctrlr_val) { + UPLL_LOG_DEBUG("val_vtn_ctrlr struct is NULL"); + return UPLL_RC_ERR_GENERIC; + } + + /* Update oper status based on notification */ + switch (notification) { + case kCtrlrReconnectIfUp: + if (ctrlr_val->oper_status == UPLL_OPER_STATUS_DOWN) { + return UPLL_RC_SUCCESS; + } + oper_change = (ctrlr_val->oper_status != UPLL_OPER_STATUS_UP)? true:false; - ctrlr_val->oper_status = UPLL_OPER_STATUS_UP; - // reset alarm - } else - ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; - break; - } - DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr | kOpMatchDomain, kOpInOutNone }; - if (notification == kCtrlrDisconnect || - notification == kCtrlrReconnectIfUp || - notification == kCtrlrReconnectIfDown) - dbop.matchop = kOpMatchCtrlr; - result_code = UpdateConfigDB(ikey, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop, CTRLRTBL); - UPLL_LOG_DEBUG("SetCtrlrOperstatus for VTN after Update is \n %s", - ikey->ToStrAll().c_str()); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in update oper status %d", result_code); - } - return result_code; -} - -upll_rc_t VtnMoMgr::UpdateOperStatus(ConfigKeyVal *ck_vtn, - DalDmlIntf *dmi, - state_notification notification, - bool skip) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - if (!skip) { - DbSubOp dbop = { kOpReadMultiple, - kOpMatchCtrlr | kOpMatchDomain, kOpInOutNone }; - if (notification == kCtrlrDisconnect || - notification == kCtrlrReconnectIfUp || - notification == kCtrlrReconnectIfDown ) - dbop.matchop = kOpMatchCtrlr; - - result_code = ReadConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_READ, dbop, - dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in reading: %d", result_code); - return result_code; - } - } - ConfigKeyVal *tkey = ck_vtn; - ConfigKeyVal *ck_vtn_main = NULL; - while (tkey != NULL) { - bool oper_change = false; - result_code = SetCtrlrOperStatus(tkey, notification, dmi, oper_change); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("SetCtrlrOperStatus failed.Result code : %d", result_code); - return result_code; - } - if (oper_change) { - result_code = GetChildConfigKey(ck_vtn_main, tkey); - if (!ck_vtn_main || result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_vtn_main); - return result_code; - } - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; - result_code = ReadConfigDB(ck_vtn_main, UPLL_DT_STATE, UNC_OP_READ, - dbop, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in reading: %d", result_code); - DELETE_IF_NOT_NULL(ck_vtn_main); - return result_code; - } - SetOperStatus(ck_vtn_main, notification, dmi); - if (ck_vtn_main) - delete ck_vtn_main; - ck_vtn_main = NULL; - } - if ( skip ) break; - tkey = tkey->get_next_cfg_key_val(); - } - return result_code; -} - - -/* SetOperStatus of VTN to unknown on a controller disconnect */ -bool VtnMoMgr::VtnSetOperStatus(uint8_t *vtn_name_o, - DalDmlIntf *dmi, - state_notification notification) { - UPLL_FUNC_TRACE; - bool res = false; - upll_rc_t result_code = UPLL_RC_SUCCESS; - key_vtn_t *vtn_key = reinterpret_cast( - ConfigKeyVal::Malloc(sizeof(key_vtn_t))); - ConfigKeyVal *ck_vtn = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, vtn_key, NULL); - result_code = UpdateOperStatus(ck_vtn, dmi, notification, false); - - if (result_code != UPLL_RC_SUCCESS) { - delete ck_vtn; - UPLL_LOG_DEBUG("Returning error : %d", result_code); - return false; - } - delete ck_vtn; - return res; -} - -upll_rc_t VtnMoMgr::TxUpdateDtState(unc_key_type_t ktype, - uint32_t session_id, - uint32_t config_id, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ck_vtn = NULL; - - /* Create Vnode If key */ - switch (ktype) { - case UNC_KT_VTN: - result_code = GetUninitOperState(ck_vtn, dmi); - break; - default: - UPLL_LOG_DEBUG("Unsupported operation on keytype %d", ktype); - return UPLL_RC_ERR_GENERIC; - } - if (UPLL_RC_SUCCESS != result_code) { - return result_code; - } - ConfigKeyVal *tkey = ck_vtn, *ck_ctrlr; - DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; - while (ck_vtn) { - ck_ctrlr = NULL; - tkey = ck_vtn; - ck_vtn = tkey->get_next_cfg_key_val(); - tkey->set_next_cfg_key_val(NULL); - - val_db_vtn_st *vtn_st = reinterpret_cast - (GetStateVal(tkey)); - // get count of vnodes down - uint32_t cur_instance_count = 0; - result_code = GetChildConfigKey(ck_ctrlr, tkey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - return result_code; - } - val_vtn_ctrlr *ctrlr_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtn_ctrlr))); - ctrlr_val->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; - ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; - ck_ctrlr->AppendCfgVal(IpctSt::kIpcInvalidStNum, ctrlr_val); - result_code = GetInstanceCount(ck_ctrlr, NULL, UPLL_DT_STATE, - &cur_instance_count, dmi, CTRLRTBL); - if (result_code == UPLL_RC_SUCCESS) { - if (cur_instance_count == 0) { - vtn_st->vtn_val_st.oper_status = UPLL_OPER_STATUS_UP; - } else - vtn_st->vtn_val_st.oper_status = UPLL_OPER_STATUS_DOWN; - } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - vtn_st->vtn_val_st.oper_status = UPLL_OPER_STATUS_DOWN; - } else { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - delete tkey; - delete ck_vtn; - delete ck_ctrlr; - return result_code; - } - vtn_st->vtn_val_st.valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; - result_code = UpdateConfigDB(tkey, UPLL_DT_STATE, - UNC_OP_UPDATE, dmi, &dbop1, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateConfigDB Executed %d", result_code); - delete tkey; - delete ck_vtn; - delete ck_ctrlr; - break; - } - delete tkey; - delete ck_ctrlr; - } - return result_code; -} - -upll_rc_t VtnMoMgr::ControllerStatusHandler(uint8_t *ctrlr_id, + ctrlr_val->oper_status = UPLL_OPER_STATUS_UP; + break; + case kCtrlrReconnectIfDown: + oper_change = (ctrlr_val->oper_status != + UPLL_OPER_STATUS_DOWN)? + true:false; + ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; + break; + case kCtrlrReconnect: + oper_change = (ctrlr_val->oper_status != + UPLL_OPER_STATUS_DOWN)? + true:false; + ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; + break; + case kCtrlrDisconnect: + case kPortUnknown: + oper_change = (ctrlr_val->oper_status != + UPLL_OPER_STATUS_UNKNOWN)? + true:false; + ctrlr_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; + ctrlr_val->down_count = 0; + break; + case kAdminStatusDisabled: + case kPortFault: + case kPathFault: + case kBoundaryFault: + ctrlr_val->down_count = (ctrlr_val->down_count + 1); + oper_change = (ctrlr_val->oper_status != + UPLL_OPER_STATUS_DOWN)? + true:false; + if (ctrlr_val->down_count == 1) { + ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; + // generate alarm + } + break; + case kAdminStatusEnabled: + case kPortFaultReset: + case kPathFaultReset: + case kBoundaryFaultReset: + if (ctrlr_val->oper_status == UPLL_OPER_STATUS_UP) { + oper_change = false; + UPLL_LOG_DEBUG("SetCtrlrOperstatus status already up\n %s", + ikey->ToStrAll().c_str()); + return UPLL_RC_SUCCESS; + } + ctrlr_val->down_count = (ctrlr_val->down_count > 0) ? + (ctrlr_val->down_count - 1) : 0; + if (ctrlr_val->down_count == 0) { + oper_change = (ctrlr_val->oper_status != + UPLL_OPER_STATUS_UP)? + true:false; + ctrlr_val->oper_status = UPLL_OPER_STATUS_UP; + // reset alarm + } else { + ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; + } + break; + default: + UPLL_LOG_TRACE("Received unexpected notification %d\n", + notification); + break; + } + DbSubOp dbop = { kOpNotRead, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutNone }; + if (notification == kCtrlrDisconnect || + notification == kCtrlrReconnectIfUp || + notification == kCtrlrReconnectIfDown) + dbop.matchop = kOpMatchCtrlr; + result_code = UpdateConfigDB(ikey, UPLL_DT_STATE, UNC_OP_UPDATE, + dmi, &dbop, CTRLRTBL); + UPLL_LOG_DEBUG("SetCtrlrOperstatus for VTN after Update is \n %s", + ikey->ToStrAll().c_str()); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in update oper status %d", result_code); + } + return result_code; + } + + upll_rc_t VtnMoMgr::UpdateOperStatus(ConfigKeyVal *ck_vtn, DalDmlIntf *dmi, - bool operstatus) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - state_notification notification = kCtrlrDisconnect; - if (operstatus) { - notification = kCtrlrReconnect; - } - if (notification == kCtrlrDisconnect) { - result_code = RestoreVtnCtrlrOperStatus(ctrlr_id, dmi, notification); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("vtn controller operstatus disconnect update failed"); - return result_code; - } - result_code = UpdateVnodeOperStatus(ctrlr_id, dmi, notification, false); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Error in updating node operstatus"); - return result_code; - } - VlinkMoMgr *vlink_mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(UNC_KT_VLINK)))); - vlink_mgr->UpdateVlinkOperStatus(ctrlr_id, dmi, notification, false); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("vlink operstatus update failed"); - return result_code; - } - } else { - result_code = RestoreVnodeOperStatus(ctrlr_id, dmi, notification, false); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in Updating Operstatus on Controller ReConnect"); - return result_code; - } - } - return result_code; -} - -upll_rc_t VtnMoMgr::UpdateVnodeOperStatus(uint8_t *ctrlr_id, - DalDmlIntf *dmi, - state_notification notification, - bool skip) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - unc_key_type_t node_key_type[]= {UNC_KT_VBRIDGE, UNC_KT_VROUTER, - UNC_KT_VTEP, UNC_KT_VTUNNEL}; - ConfigKeyVal *ck_val = NULL; - for (int vnode_count = 0; - vnode_count < static_cast - (sizeof(node_key_type)/sizeof(unc_key_type_t)); - vnode_count++) { - const unc_key_type_t ktype = node_key_type[vnode_count]; - - VnodeMoMgr *mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(ktype)))); - - result_code = mgr->GetChildConfigKey(ck_val, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Invalid param"); - return result_code; - } - - SET_USER_DATA_CTRLR(ck_val, ctrlr_id); - ConfigVal *cfg_val = NULL; - mgr->AllocVal(cfg_val, UPLL_DT_STATE, MAINTBL); - ck_val->SetCfgVal(cfg_val); - switch (ktype) { - case UNC_KT_VBRIDGE: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vbr_st* vbr_dt_val = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vbr_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vbr_dt_val->vbr_val_st.valid[0] = UNC_VF_VALID; - vbr_dt_val->vbr_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - case UNC_KT_VROUTER: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vrt_st* vrt_dt_val = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vrt_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vrt_dt_val->vrt_val_st.valid[0] = UNC_VF_VALID; - vrt_dt_val->vrt_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - case UNC_KT_VTEP: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vtep_st* vtep_dt_val = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vtep_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vtep_dt_val->vtep_val_st.valid[0] = UNC_VF_VALID; - vtep_dt_val->vtep_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - case UNC_KT_VTUNNEL: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vtunnel_st* vtunnel_dt_val = - reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vtunnel_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vtunnel_dt_val->vtunnel_val_st.valid[0] = UNC_VF_VALID; - vtunnel_dt_val->vtunnel_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - default: - UPLL_LOG_DEBUG("OperStatus not supported for this data type"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - break; - } - - if (notification == kCtrlrDisconnect) { - DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; - result_code = mgr->UpdateConfigDB(ck_val, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); - if (result_code == UPLL_RC_SUCCESS) { - result_code = UpdateVnodeIfOperStatus(ck_val, dmi, notification, - false, vnode_count); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Error in Updating operstatus"); - DELETE_IF_NOT_NULL(ck_val); - return result_code; - } - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Error in Updating operstatus"); - DELETE_IF_NOT_NULL(ck_val); - return result_code; - } - } - DELETE_IF_NOT_NULL(ck_val); - } - return UPLL_RC_SUCCESS; -} - -upll_rc_t VtnMoMgr::UpdateVnodeIfOperStatus(ConfigKeyVal *ck_vtn, - DalDmlIntf *dmi, - state_notification notification, - bool skip, int if_type) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - unc_key_type_t if_node_key_type[]= {UNC_KT_VBR_IF, UNC_KT_VRT_IF, - UNC_KT_VTEP_IF, UNC_KT_VTUNNEL_IF}; - ConfigKeyVal *ck_val = NULL; - /* Populating vtnset with vtn names connected to given controller name */ - const unc_key_type_t ktype = if_node_key_type[if_type]; - - VnodeChildMoMgr *mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(ktype)))); - - result_code = mgr->GetChildConfigKey(ck_val, ck_vtn); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKEy failed"); - return UPLL_RC_ERR_GENERIC; - } - ConfigVal *cfg_val = NULL; - mgr->AllocVal(cfg_val, UPLL_DT_STATE, MAINTBL); - ck_val->SetCfgVal(cfg_val); - - switch (ktype) { - case UNC_KT_VBR_IF: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vbr_if_st* vbr_if_dt_val = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vbr_if_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vbr_if_dt_val->vbr_if_val_st.valid[0] = UNC_VF_VALID; - vbr_if_dt_val->vbr_if_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - case UNC_KT_VRT_IF: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vrt_if_st* vrt_if_dt_val = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vrt_if_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vrt_if_dt_val->vrt_if_val_st.valid[0] = UNC_VF_VALID; - vrt_if_dt_val->vrt_if_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - case UNC_KT_VTEP_IF: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vtep_if_st* vtep_if_dt_val = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vtep_if_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vtep_if_dt_val->vtep_if_val_st.valid[0] = UNC_VF_VALID; - vtep_if_dt_val->vtep_if_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - case UNC_KT_VTUNNEL_IF: { - ConfigVal *tmp = - (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()->get_next_cfg_val() : - NULL; - val_db_vtunnel_if_st* vtunnel_if_dt_val = - reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vtunnel_if_dt_val == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - } - vtunnel_if_dt_val->vtunnel_if_val_st.valid[0] = UNC_VF_VALID; - vtunnel_if_dt_val->vtunnel_if_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } - break; - default: - UPLL_LOG_DEBUG("OperStatus not supported for this data type"); - DELETE_IF_NOT_NULL(ck_val); - return UPLL_RC_ERR_GENERIC; - break; - } - DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; - result_code = mgr->UpdateConfigDB(ck_val, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop, MAINTBL); - if (result_code != UPLL_RC_SUCCESS && - result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Error in Updating interface operstatus"); - DELETE_IF_NOT_NULL(ck_val); - return result_code; - } - DELETE_IF_NOT_NULL(ck_val); - return result_code; -} - -upll_rc_t VtnMoMgr::RestoreVtnOperStatus(ConfigKeyVal *ck_val, - DalDmlIntf *dmi, - state_notification notification) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - - ConfigKeyVal *ck_vtn = NULL; - result_code = GetChildConfigKey(ck_vtn, ck_val); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKEy failed"); - return UPLL_RC_ERR_GENERIC; - } - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, - kOpInOutNone}; - result_code = ReadConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, - MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", - result_code); - DELETE_IF_NOT_NULL(ck_vtn); - return result_code; - } - ConfigVal *tmp = (ck_vtn->get_cfg_val()) ? - ck_vtn->get_cfg_val()->get_next_cfg_val() : NULL; - val_db_vtn_st_t *vtn_valst = reinterpret_cast - ((tmp != NULL) ? tmp->get_val() : NULL); - if (vtn_valst == NULL) { - UPLL_LOG_DEBUG("Invalid param"); - DELETE_IF_NOT_NULL(ck_vtn); - return UPLL_RC_ERR_GENERIC; - } - if (notification == kCtrlrDisconnect) { - vtn_valst->vtn_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; - } else { - if (vtn_valst->vtn_val_st.oper_status != UPLL_OPER_STATUS_UP) { - vtn_valst->vtn_val_st.oper_status = UPLL_OPER_STATUS_DOWN; - } - } - result_code = UpdateConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in Updating VTN entries"); - DELETE_IF_NOT_NULL(ck_vtn); - return result_code; - } - DELETE_IF_NOT_NULL(ck_vtn); - return result_code; -} - -upll_rc_t VtnMoMgr::RestoreVtnCtrlrOperStatus(uint8_t *ctrlr_name, - DalDmlIntf *dmi, - state_notification notification) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ck_vtn = NULL; - result_code = GetChildConfigKey(ck_vtn, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); - return UPLL_RC_ERR_GENERIC; - } - SET_USER_DATA_CTRLR(ck_vtn, ctrlr_name); - DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr, - kOpInOutNone}; - result_code = ReadConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, - CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", - result_code); - DELETE_IF_NOT_NULL(ck_vtn); - return result_code; - } - ConfigKeyVal *tmp = ck_vtn; - while (ck_vtn != NULL) { - val_vtn_ctrlr *ctrlr_val = reinterpret_cast - (GetVal(ck_vtn)); - if (!ctrlr_val) { - UPLL_LOG_DEBUG("val_vtn_ctrlr struct is NULL"); - DELETE_IF_NOT_NULL(tmp); - return UPLL_RC_ERR_GENERIC; - } - if (notification == kCtrlrDisconnect) { - ctrlr_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; - ctrlr_val->down_count = 0; - } else { - if (ctrlr_val->oper_status != UPLL_OPER_STATUS_UP) { - ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; - } - } - DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; - result_code = UpdateConfigDB(ck_vtn, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in Updating VTN entries"); - DELETE_IF_NOT_NULL(tmp); - return result_code; - } - RestoreVtnOperStatus(ck_vtn, dmi, notification); - ck_vtn = ck_vtn->get_next_cfg_key_val(); - } - DELETE_IF_NOT_NULL(tmp); - return result_code; -} - -upll_rc_t VtnMoMgr::RestoreVnodeOperStatus(uint8_t *ctrlr_id, + state_notification notification, + bool skip) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!skip) { + DbSubOp dbop = { kOpReadMultiple, + kOpMatchCtrlr | kOpMatchDomain, kOpInOutNone }; + if (notification == kCtrlrDisconnect || + notification == kCtrlrReconnectIfUp || + notification == kCtrlrReconnectIfDown ) + dbop.matchop = kOpMatchCtrlr; + + result_code = ReadConfigDB(ck_vtn, + UPLL_DT_STATE, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in reading: %d", result_code); + return result_code; + } + } + ConfigKeyVal *tkey = ck_vtn; + ConfigKeyVal *ck_vtn_main = NULL; + while (tkey != NULL) { + bool oper_change = false; + result_code = SetCtrlrOperStatus(tkey, + notification, + dmi, + oper_change); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("SetCtrlrOperStatus failed.Result code : %d", + result_code); + return result_code; + } + if (oper_change) { + result_code = GetChildConfigKey(ck_vtn_main, tkey); + if (!ck_vtn_main || result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_vtn_main); + return result_code; + } + DbSubOp dbop = { kOpReadMultiple, + kOpMatchNone, + kOpInOutNone }; + result_code = ReadConfigDB(ck_vtn_main, + UPLL_DT_STATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in reading: %d", result_code); + DELETE_IF_NOT_NULL(ck_vtn_main); + return result_code; + } + SetOperStatus(ck_vtn_main, notification, dmi); + if (ck_vtn_main) + delete ck_vtn_main; + ck_vtn_main = NULL; + } + if ( skip ) break; + tkey = tkey->get_next_cfg_key_val(); + } + return result_code; + } + + + /* SetOperStatus of VTN to unknown on a controller disconnect */ + bool VtnMoMgr::VtnSetOperStatus(uint8_t *vtn_name_o, DalDmlIntf *dmi, - state_notification notification, - bool skip) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - uint32_t down_count = 0; - result_code = RestoreVnodeIfAndVtnCtrlr(ctrlr_id, dmi, notification, - down_count); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in Updating OperStatus"); - return result_code; - } - ConfigKeyVal *ck_vtn_ctrlr = NULL; - result_code = GetChildConfigKey(ck_vtn_ctrlr, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); - return result_code; - } - SET_USER_DATA_CTRLR(ck_vtn_ctrlr, ctrlr_id); - ConfigVal *cv_ctrlr = NULL; - AllocVal(cv_ctrlr, UPLL_DT_RUNNING, CTRLRTBL); - ck_vtn_ctrlr->SetCfgVal(cv_ctrlr); - val_vtn_ctrlr *tmp_ctrlr = reinterpret_cast - (GetVal(ck_vtn_ctrlr)); - if (tmp_ctrlr == NULL) { - UPLL_LOG_DEBUG("Error in retrieving ctrlr val struct"); - DELETE_IF_NOT_NULL(ck_vtn_ctrlr); - return UPLL_RC_ERR_GENERIC; - } - tmp_ctrlr->down_count = down_count; - DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; - result_code = UpdateConfigDB(ck_vtn_ctrlr, UPLL_DT_STATE, UNC_OP_UPDATE, - dmi, &dbop, CTRLRTBL); - DELETE_IF_NOT_NULL(ck_vtn_ctrlr); - return result_code; -} - -upll_rc_t VtnMoMgr::RestoreVnodeIfAndVtnCtrlr(uint8_t *ctrlr_id, - DalDmlIntf *dmi, - state_notification notification, - uint32_t &down_count) { - upll_rc_t result_code = UPLL_RC_SUCCESS; - unc_key_type_t node_key_type[]= {UNC_KT_VBRIDGE, UNC_KT_VROUTER}; - for (int node_count = 0; - node_count < static_cast - (sizeof(node_key_type)/sizeof(unc_key_type_t)); - node_count++) { - const unc_key_type_t ktype = node_key_type[node_count]; - ConfigKeyVal *ck_vnode = NULL; - - VnodeMoMgr *mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(ktype)))); - - result_code = mgr->GetChildConfigKey(ck_vnode, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); - return UPLL_RC_ERR_GENERIC; - } - SET_USER_DATA_CTRLR(ck_vnode, ctrlr_id); - DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr, - kOpInOutNone}; - result_code = mgr->ReadConfigDB(ck_vnode, UPLL_DT_STATE, UNC_OP_READ, dbop, dmi, - MAINTBL); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - DELETE_IF_NOT_NULL(ck_vnode); - continue; - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", - result_code); - DELETE_IF_NOT_NULL(ck_vnode); - return result_code; - } - unc_key_type_t node_key_type[]= {UNC_KT_VBR_IF, UNC_KT_VRT_IF}; - while (ck_vnode != NULL) { - ConfigKeyVal *ckv_tmp = ck_vnode->get_next_cfg_key_val(); - ck_vnode->set_next_cfg_key_val(NULL); - ConfigKeyVal *ck_if = NULL; - VnodeChildMoMgr *if_mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(node_key_type[node_count])))); - result_code = if_mgr->GetChildConfigKey(ck_if, ck_vnode); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey failed"); - DELETE_IF_NOT_NULL(ckv_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - return UPLL_RC_ERR_GENERIC; - } - VnodeMoMgr *node_mgr = - reinterpret_cast(const_cast - (const_cast(GetMoManager(ck_vnode->get_key_type())))); - result_code = if_mgr->UpdateVnodeIf(ck_if, dmi, notification); - DELETE_IF_NOT_NULL(ck_if); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = node_mgr->UpdateOperStatus(ck_vnode, dmi, kCtrlrReconnectIfDown, true, true); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Error in Upodating OperStatus"); - DELETE_IF_NOT_NULL(ckv_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - return result_code; - } - DELETE_IF_NOT_NULL(ckv_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - down_count = down_count + 1; - return UPLL_RC_SUCCESS; - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", - result_code); - DELETE_IF_NOT_NULL(ckv_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - return result_code; - } - uint32_t cur_instance_count = 0; - ConfigKeyVal *ck_vnode_tmp = NULL; - - result_code = node_mgr->GetCkvUninit(ck_vnode_tmp, ck_vnode, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Returning error %d\n",result_code); - DELETE_IF_NOT_NULL(ckv_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - return result_code; - } - val_db_vbr_st *vnode_stval = reinterpret_cast - (GetStateVal(ck_vnode_tmp)); - if (vnode_stval == NULL) { - UPLL_LOG_DEBUG("Error in fetching in state structure"); - DELETE_IF_NOT_NULL(ck_vnode_tmp); - DELETE_IF_NOT_NULL(ckv_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - return UPLL_RC_ERR_GENERIC; - } - vnode_stval->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; - vnode_stval->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = UNC_VF_VALID; - - result_code = node_mgr->GetInstanceCount(ck_vnode_tmp, NULL, UPLL_DT_STATE, - &cur_instance_count, dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetInstanceCount failed : %d\n",result_code); - DELETE_IF_NOT_NULL(ck_vnode_tmp); - DELETE_IF_NOT_NULL(ckv_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - return result_code; - } - down_count += cur_instance_count; - DELETE_IF_NOT_NULL(ck_vnode_tmp); - DELETE_IF_NOT_NULL(ck_vnode); - ck_vnode = ckv_tmp; - } - } - return result_code; -} + state_notification notification) { + UPLL_FUNC_TRACE; + bool res = false; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_vtn_t *vtn_key = reinterpret_cast( + ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + ConfigKeyVal *ck_vtn = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtn_key, + NULL); + result_code = UpdateOperStatus(ck_vtn, + dmi, + notification, + false); + + if (result_code != UPLL_RC_SUCCESS) { + delete ck_vtn; + UPLL_LOG_DEBUG("Returning error : %d", result_code); + return false; + } + delete ck_vtn; + return res; + } + + upll_rc_t VtnMoMgr::TxUpdateDtState(unc_key_type_t ktype, + uint32_t session_id, + uint32_t config_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ck_vtn = NULL; + + /* Create Vnode If key */ + switch (ktype) { + case UNC_KT_VTN: + result_code = GetUninitOperState(ck_vtn, dmi); + break; + default: + UPLL_LOG_DEBUG("Unsupported operation on keytype %d", ktype); + return UPLL_RC_ERR_GENERIC; + } + if (UPLL_RC_SUCCESS != result_code) { + return result_code; + } + ConfigKeyVal *tkey = ck_vtn, *ck_ctrlr; + DbSubOp dbop1 = { kOpNotRead, kOpMatchNone, kOpInOutNone }; + while (ck_vtn) { + ck_ctrlr = NULL; + tkey = ck_vtn; + ck_vtn = tkey->get_next_cfg_key_val(); + tkey->set_next_cfg_key_val(NULL); + + val_db_vtn_st *vtn_st = reinterpret_cast + (GetStateVal(tkey)); + result_code = GetChildConfigKey(ck_ctrlr, tkey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; + } + val_vtn_ctrlr *ctrlr_val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtn_ctrlr))); + ctrlr_val->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; + ctrlr_val->oper_status = UPLL_OPER_STATUS_DOWN; + ck_ctrlr->AppendCfgVal(IpctSt::kIpcInvalidStNum, ctrlr_val); + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr + | kOpInOutDomain }; + result_code = ReadConfigDB(ck_ctrlr, UPLL_DT_STATE, UNC_OP_READ, + dbop, dmi, CTRLRTBL); + if (result_code == UPLL_RC_SUCCESS) { + vtn_st->vtn_val_st.oper_status = UPLL_OPER_STATUS_DOWN; + result_code = UPLL_RC_SUCCESS; + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + // no instance with oper down + ck_ctrlr->SetCfgVal(NULL); + result_code = UpdateConfigDB(ck_ctrlr, UPLL_DT_STATE, + UNC_OP_READ, + dmi, &dbop, CTRLRTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + vtn_st->vtn_val_st.oper_status = UPLL_OPER_STATUS_UP; + result_code = UPLL_RC_SUCCESS; + } else if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + vtn_st->vtn_val_st.oper_status = UPLL_OPER_STATUS_DOWN; + result_code = UPLL_RC_SUCCESS; + } + } + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + delete tkey; + delete ck_vtn; + delete ck_ctrlr; + return result_code; + } + vtn_st->vtn_val_st.valid[UPLL_IDX_OPER_STATUS_VS] = + UNC_VF_VALID; + result_code = UpdateConfigDB(tkey, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop1, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateConfigDB Executed %d", + result_code); + delete tkey; + delete ck_vtn; + delete ck_ctrlr; + break; + } + delete tkey; + delete ck_ctrlr; + } + return result_code; + } + + upll_rc_t VtnMoMgr::ControllerStatusHandler(uint8_t *ctrlr_id, + DalDmlIntf *dmi, + bool operstatus) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + state_notification notification = kCtrlrDisconnect; + if (operstatus) { + notification = kCtrlrReconnect; + } + if (notification == kCtrlrDisconnect) { + result_code = RestoreVtnCtrlrOperStatus(ctrlr_id, + dmi, + notification); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("vtn controller operstatus disconnect" + "update failed"); + return result_code; + } + result_code = UpdateVnodeOperStatus(ctrlr_id, + dmi, + notification, + false); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error in updating node operstatus"); + return result_code; + } + VlinkMoMgr *vlink_mgr = + reinterpret_cast(const_cast + (const_cast( + GetMoManager( + UNC_KT_VLINK)))); + vlink_mgr->UpdateVlinkOperStatus(ctrlr_id, + dmi, + notification, + false); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("vlink operstatus update failed"); + return result_code; + } + } else { + result_code = RestoreVtnCtrlrOperStatus(ctrlr_id, + dmi, + notification); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error in Updating Operstatus on" + "Controller ReConnect"); + return result_code; + } + } + return result_code; + } + + upll_rc_t VtnMoMgr::UpdateVnodeOperStatus( + uint8_t *ctrlr_id, + DalDmlIntf *dmi, + state_notification notification, + bool skip) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + unc_key_type_t node_key_type[]= {UNC_KT_VBRIDGE, UNC_KT_VROUTER, + UNC_KT_VTEP, UNC_KT_VTUNNEL}; + ConfigKeyVal *ck_val = NULL; + for (int vnode_count = 0; + vnode_count < static_cast + (sizeof(node_key_type)/sizeof(unc_key_type_t)); + vnode_count++) { + const unc_key_type_t ktype = node_key_type[vnode_count]; + + VnodeMoMgr *mgr = + reinterpret_cast( + const_cast + (const_cast(GetMoManager(ktype)))); + + result_code = mgr->GetChildConfigKey(ck_val, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Invalid param"); + return result_code; + } + + SET_USER_DATA_CTRLR(ck_val, ctrlr_id); + ConfigVal *cfg_val = NULL; + mgr->AllocVal(cfg_val, UPLL_DT_STATE, MAINTBL); + ck_val->SetCfgVal(cfg_val); + switch (ktype) { + case UNC_KT_VBRIDGE: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vbr_st* vbr_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vbr_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vbr_dt_val->vbr_val_st.valid[0] = UNC_VF_VALID; + vbr_dt_val->vbr_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + case UNC_KT_VROUTER: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vrt_st* vrt_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vrt_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vrt_dt_val->vrt_val_st.valid[0] = UNC_VF_VALID; + vrt_dt_val->vrt_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + case UNC_KT_VTEP: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vtep_st* vtep_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vtep_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vtep_dt_val->vtep_val_st.valid[0] = UNC_VF_VALID; + vtep_dt_val->vtep_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + case UNC_KT_VTUNNEL: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vtunnel_st* vtunnel_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vtunnel_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vtunnel_dt_val->vtunnel_val_st.valid[0] = UNC_VF_VALID; + vtunnel_dt_val->vtunnel_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + default: + UPLL_LOG_DEBUG("OperStatus not supported for this data type"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + break; + } + + if (notification == kCtrlrDisconnect) { + DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; + result_code = mgr->UpdateConfigDB(ck_val, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop, + MAINTBL); + if (result_code == UPLL_RC_SUCCESS) { + result_code = UpdateVnodeIfOperStatus(ck_val, + dmi, + notification, + false, + vnode_count); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error in Updating operstatus"); + DELETE_IF_NOT_NULL(ck_val); + return result_code; + } + } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error in Updating operstatus"); + DELETE_IF_NOT_NULL(ck_val); + return result_code; + } + } + DELETE_IF_NOT_NULL(ck_val); + } + return UPLL_RC_SUCCESS; + } + + upll_rc_t VtnMoMgr::UpdateVnodeIfOperStatus( + ConfigKeyVal *ck_vtn, + DalDmlIntf *dmi, + state_notification notification, + bool skip, int if_type) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + unc_key_type_t if_node_key_type[]= {UNC_KT_VBR_IF, UNC_KT_VRT_IF, + UNC_KT_VTEP_IF, UNC_KT_VTUNNEL_IF}; + ConfigKeyVal *ck_val = NULL; + /* Populating vtnset with vtn names connected + * to given controller name */ + const unc_key_type_t ktype = if_node_key_type[if_type]; + + VnodeChildMoMgr *mgr = + reinterpret_cast( + const_cast + (const_cast(GetMoManager(ktype)))); + + result_code = mgr->GetChildConfigKey(ck_val, ck_vtn); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKEy failed"); + return UPLL_RC_ERR_GENERIC; + } + ConfigVal *cfg_val = NULL; + mgr->AllocVal(cfg_val, UPLL_DT_STATE, MAINTBL); + ck_val->SetCfgVal(cfg_val); + + switch (ktype) { + case UNC_KT_VBR_IF: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vbr_if_st* vbr_if_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vbr_if_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vbr_if_dt_val->vbr_if_val_st.valid[0] = UNC_VF_VALID; + vbr_if_dt_val->vbr_if_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + case UNC_KT_VRT_IF: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vrt_if_st* vrt_if_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vrt_if_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vrt_if_dt_val->vrt_if_val_st.valid[0] = UNC_VF_VALID; + vrt_if_dt_val->vrt_if_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + case UNC_KT_VTEP_IF: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vtep_if_st* vtep_if_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vtep_if_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vtep_if_dt_val->vtep_if_val_st.valid[0] = + UNC_VF_VALID; + vtep_if_dt_val->vtep_if_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + case UNC_KT_VTUNNEL_IF: { + ConfigVal *tmp = + (ck_val->get_cfg_val()) ? ck_val->get_cfg_val()-> + get_next_cfg_val() : + NULL; + val_db_vtunnel_if_st* vtunnel_if_dt_val = + reinterpret_cast + ((tmp != NULL) ? tmp->get_val() : NULL); + if (vtunnel_if_dt_val == NULL) { + UPLL_LOG_DEBUG("Invalid param"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + } + vtunnel_if_dt_val->vtunnel_if_val_st.valid[0] = + UNC_VF_VALID; + vtunnel_if_dt_val->vtunnel_if_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + } + break; + default: + UPLL_LOG_DEBUG("OperStatus not supported for this data type"); + DELETE_IF_NOT_NULL(ck_val); + return UPLL_RC_ERR_GENERIC; + break; + } + DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; + result_code = mgr->UpdateConfigDB(ck_val, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS && + result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error in Updating interface operstatus"); + DELETE_IF_NOT_NULL(ck_val); + return result_code; + } + DELETE_IF_NOT_NULL(ck_val); + return result_code; + } + + upll_rc_t VtnMoMgr::RestoreVtnOperStatus( + ConfigKeyVal *ck_val, + DalDmlIntf *dmi, + state_notification notification) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + + ConfigKeyVal *ck_vtn = NULL; + result_code = GetChildConfigKey(ck_vtn, ck_val); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKEy failed"); + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = {kOpReadSingle, kOpMatchNone, + kOpInOutNone}; + result_code = ReadConfigDB(ck_vtn, + UPLL_DT_STATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", + result_code); + DELETE_IF_NOT_NULL(ck_vtn); + return result_code; + } + result_code = SetOperStatus(ck_vtn, notification, dmi); + DELETE_IF_NOT_NULL(ck_vtn); + return result_code; + } + + upll_rc_t VtnMoMgr::RestoreVtnCtrlrOperStatus( + uint8_t *ctrlr_name, + DalDmlIntf *dmi, + state_notification notification) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ck_vtn = NULL; + result_code = GetChildConfigKey(ck_vtn, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + return UPLL_RC_ERR_GENERIC; + } + SET_USER_DATA_CTRLR(ck_vtn, ctrlr_name); + DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr, + kOpInOutDomain}; + result_code = ReadConfigDB(ck_vtn, + UPLL_DT_STATE, + UNC_OP_READ, + dbop, + dmi, + CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", + result_code); + DELETE_IF_NOT_NULL(ck_vtn); + return result_code; + } + while (ck_vtn != NULL) { + ConfigKeyVal *ck_vtn1 = ck_vtn->get_next_cfg_key_val(); + ck_vtn->set_next_cfg_key_val(NULL); + val_vtn_ctrlr *ctrlr_val = reinterpret_cast + (GetVal(ck_vtn)); + if (!ctrlr_val) { + UPLL_LOG_DEBUG("val_vtn_ctrlr struct is NULL"); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn1); + return UPLL_RC_ERR_GENERIC; + } + if (notification == kCtrlrDisconnect) { + ctrlr_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; + ctrlr_val->down_count = 0; + } else { + if (ctrlr_val->oper_status != UPLL_OPER_STATUS_UNKNOWN) { + DELETE_IF_NOT_NULL(ck_vtn); + ck_vtn = ck_vtn1; + continue; + } + result_code = RestoreVnodeOperStatus(ctrlr_name, + ck_vtn, + dmi, + notification, + false); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in Updating Operstatus on" + "Controller ReConnect"); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn1); + return result_code; + } + result_code = GetVbridgeUnKnownInstance(ck_vtn, + ctrlr_name , + dmi); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + ctrlr_val->oper_status = UPLL_OPER_STATUS_UNKNOWN; + } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error in GetVbridgeUnKnownInstance"); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn1); + return result_code; + } + switch (ctrlr_val->oper_status) { + case UPLL_OPER_STATUS_UNKNOWN: + notification = kCtrlrDisconnect; + break; + case UPLL_OPER_STATUS_DOWN: + notification = kCtrlrReconnectIfDown; + break; + case UPLL_OPER_STATUS_UP: + notification = kCtrlrReconnectIfUp; + break; + default: + UPLL_LOG_DEBUG("Unexpected OperStatus"); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn1); + return UPLL_RC_ERR_GENERIC; + } + } + UPLL_LOG_DEBUG("ck_vtn %s\n", ck_vtn->ToStrAll().c_str()); + DbSubOp dbop = { kOpNotRead, + kOpMatchCtrlr | kOpMatchDomain , + kOpInOutNone }; + result_code = UpdateConfigDB(ck_vtn, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop, + CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in Updating VTN entries"); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn1); + return result_code; + } + UPLL_LOG_DEBUG("ck_vtn %s\n", ck_vtn->ToStrAll().c_str()); + result_code = RestoreVtnOperStatus(ck_vtn, dmi, notification); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + DELETE_IF_NOT_NULL(ck_vtn); + DELETE_IF_NOT_NULL(ck_vtn1); + break; + } + DELETE_IF_NOT_NULL(ck_vtn); + ck_vtn = ck_vtn1; + } + return result_code; + } + + upll_rc_t VtnMoMgr::RestoreVnodeOperStatus( + uint8_t *ctrlr_id, + ConfigKeyVal *ck_vtn_ctrlr, + DalDmlIntf *dmi, + state_notification notification, + bool skip) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + uint32_t down_count = 0; + + result_code = RestoreVnodeIfAndVtnCtrlr(ctrlr_id, + ck_vtn_ctrlr, + dmi, + notification, + down_count); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in Updating OperStatus"); + return result_code; + } + val_vtn_ctrlr *tmp_ctrlr = reinterpret_cast + (GetVal(ck_vtn_ctrlr)); + if (tmp_ctrlr == NULL) { + UPLL_LOG_DEBUG("Error in retrieving ctrlr val struct"); + return UPLL_RC_ERR_GENERIC; + } + tmp_ctrlr->down_count = down_count; + tmp_ctrlr->oper_status = (down_count > 0)?UPLL_OPER_STATUS_DOWN: + UPLL_OPER_STATUS_UP; +#if 0 + DbSubOp dbop = { kOpNotRead, kOpMatchCtrlr, kOpInOutNone }; + result_code = UpdateConfigDB(ck_vtn_ctrlr, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop, + CTRLRTBL); + DELETE_IF_NOT_NULL(ck_vtn_ctrlr); +#endif + return result_code; + } + + upll_rc_t VtnMoMgr::RestoreVnodeIfAndVtnCtrlr( + uint8_t *ctrlr_id, + ConfigKeyVal *ck_vtn, + DalDmlIntf *dmi, + state_notification notifn, + uint32_t &down_count) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + unc_key_type_t node_key_type[]= {UNC_KT_VBRIDGE, UNC_KT_VROUTER}; + for (int node_count = 0; + node_count < static_cast + (sizeof(node_key_type)/sizeof(unc_key_type_t)); + node_count++) { + const unc_key_type_t ktype = node_key_type[node_count]; + ConfigKeyVal *ck_vnode = NULL; + + VnodeMoMgr *mgr = + reinterpret_cast( + const_cast + (const_cast(GetMoManager(ktype)))); + + result_code = mgr->GetChildConfigKey(ck_vnode, ck_vtn); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + return UPLL_RC_ERR_GENERIC; + } + SET_USER_DATA_CTRLR(ck_vnode, ctrlr_id); + DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr, + kOpInOutNone}; + result_code = mgr->ReadConfigDB(ck_vnode, + UPLL_DT_STATE, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + result_code = UPLL_RC_SUCCESS; + DELETE_IF_NOT_NULL(ck_vnode); + continue; + } else if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ReadConfigDB failed with result_code %d", + result_code); + DELETE_IF_NOT_NULL(ck_vnode); + return result_code; + } + unc_key_type_t node_key_type[]= {UNC_KT_VBR_IF, UNC_KT_VRT_IF}; + while (ck_vnode != NULL) { + ConfigKeyVal *ckv_tmp = ck_vnode->get_next_cfg_key_val(); + ck_vnode->set_next_cfg_key_val(NULL); + VnodeMoMgr *node_mgr = + reinterpret_cast( + const_cast + (const_cast( + GetMoManager(ck_vnode->get_key_type())))); + VnodeChildMoMgr *if_mgr = + reinterpret_cast( + const_cast + (const_cast( + GetMoManager(node_key_type[node_count])))); +#if 0 + result_code = if_mgr->GetChildConfigKey(ck_if, ck_vnode); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey failed"); + DELETE_IF_NOT_NULL(ckv_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + return UPLL_RC_ERR_GENERIC; + } + result_code = if_mgr->UpdateVnodeIfOperStatus(ck_if, + dmi, + notifn); + DELETE_IF_NOT_NULL(ck_if); +#else + result_code = if_mgr->UpdateVnodeIfOperStatus(ck_vnode, + dmi, + notifn); +#endif + if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + /* if key_type is VBRIDGE and it is a stand alone vbridge, + * then check if that VBRIDGE has default + * vlanmap configured under it */ + state_notification notification = kCtrlrReconnectIfDown; + if (ck_vnode->get_key_type() == UNC_KT_VBRIDGE) { + VlanMapMoMgr *vlan_mgr = + reinterpret_cast( + const_cast + (const_cast( + GetMoManager(UNC_KT_VBR_VLANMAP)))); + result_code = vlan_mgr->CheckIfVnodeisVlanmapped(ck_vnode, + dmi); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + // if stand alone VBRIDGE has default vlan configured, + // then operstatus of that VBRIDGE is UP + notification = kCtrlrReconnectIfUp; + } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("Error in Reading VlanMap DB"); + DELETE_IF_NOT_NULL(ck_vnode); + DELETE_IF_NOT_NULL(ckv_tmp); + return result_code; + } + } + result_code = node_mgr->UpdateOperStatus(ck_vnode, + dmi, + notification, + true, + true); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in Updating OperStatus"); + DELETE_IF_NOT_NULL(ckv_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + return result_code; + } + DELETE_IF_NOT_NULL(ck_vnode); + ck_vnode = ckv_tmp; + down_count = down_count + 1; + result_code = UPLL_RC_SUCCESS; + continue; + } else if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateVnodeIfOperStatus failed " + "with result_code %d", + result_code); + DELETE_IF_NOT_NULL(ckv_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + return result_code; + } + uint32_t cur_instance_count = 0; + ConfigKeyVal *ck_vnode_tmp = NULL; + + result_code = node_mgr->GetCkvUninit(ck_vnode_tmp, + ck_vnode, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + DELETE_IF_NOT_NULL(ckv_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + return result_code; + } + val_db_vbr_st *vnode_stval = + reinterpret_cast + (GetStateVal(ck_vnode_tmp)); + if (vnode_stval == NULL) { + UPLL_LOG_DEBUG("Error in fetching in state structure"); + DELETE_IF_NOT_NULL(ck_vnode_tmp); + DELETE_IF_NOT_NULL(ckv_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + return UPLL_RC_ERR_GENERIC; + } + vnode_stval->vbr_val_st.oper_status = UPLL_OPER_STATUS_DOWN; + vnode_stval->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = + UNC_VF_VALID; + + result_code = node_mgr->GetInstanceCount(ck_vnode_tmp, NULL, + UPLL_DT_STATE, + &cur_instance_count, + dmi, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetInstanceCount failed : %d\n", + result_code); + DELETE_IF_NOT_NULL(ck_vnode_tmp); + DELETE_IF_NOT_NULL(ckv_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + return result_code; + } + down_count += cur_instance_count; + if (ck_vnode->get_key_type() == UNC_KT_VBRIDGE) { + result_code = UpdateVbridgeIfUnKnownInstance(ck_vnode, + ctrlr_id, + dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in UpdateVbridgeIfUnKnownInstance"); + DELETE_IF_NOT_NULL(ck_vnode_tmp); + DELETE_IF_NOT_NULL(ckv_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + return result_code; + } + } + DELETE_IF_NOT_NULL(ck_vnode_tmp); + DELETE_IF_NOT_NULL(ck_vnode); + ck_vnode = ckv_tmp; + } + } + return result_code; + } + + upll_rc_t + VtnMoMgr:: VtnRenameMerge(ConfigKeyVal *ikey, + ConfigKeyVal *okey, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *temp_key = NULL; + ConfigKeyVal *tkey = NULL; + if (!ikey || !okey + || !(ikey->get_key()) || !(okey->get_key())) { + UPLL_LOG_DEBUG("Input is NULL"); + return UPLL_RC_ERR_GENERIC; + } + DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutNone}; + unc_key_type_t key[]= {UNC_KT_VTN_FLOWFILTER, + UNC_KT_VTN_FLOWFILTER_ENTRY, + UNC_KT_VTN_POLICINGMAP }; + /* Remove flow filter and + * policing map from renaming VTN + */ + for (unsigned int index = 0; + index < sizeof(key)/sizeof(key[0]); index++) { + const unc_key_type_t ktype = key[index]; + MoMgrImpl *mgr = reinterpret_cast( + const_cast(GetMoManager(ktype))); + if (!mgr) { + UPLL_LOG_DEBUG("Instance is NULL"); + return UPLL_RC_ERR_GENERIC; + } + result_code = mgr->GetChildConfigKey(temp_key, ikey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + return result_code; + } + result_code = mgr->ReadConfigDB(temp_key, + UPLL_DT_IMPORT, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("ReadConfigDB fail (%d)", result_code); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } else { + DELETE_IF_NOT_NULL(temp_key); + continue; + } + } + ConfigKeyVal *start_ptr = temp_key; + while (start_ptr) { + if (ktype == UNC_KT_VTN_POLICINGMAP) { + UPLL_LOG_DEBUG("Renamed VTN has policingmap" + ":RenameMerge Failed"); + DELETE_IF_NOT_NULL(temp_key); + return UPLL_RC_ERR_MERGE_CONFLICT; + } + result_code = mgr->GetChildConfigKey(tkey, start_ptr); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey Failed"); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + /* Remove the old VTN name matching entry from vtn + * flowfilter or vtn policingmap Main table + */ + result_code = mgr->UpdateConfigDB(tkey, + UPLL_DT_IMPORT, + UNC_OP_DELETE, + dmi, + &dbop, + MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); + DELETE_IF_NOT_NULL(tkey); + DELETE_IF_NOT_NULL(temp_key); + return result_code; + } + DELETE_IF_NOT_NULL(tkey); + start_ptr = start_ptr->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(temp_key); + } + return UPLL_RC_SUCCESS; + } + upll_rc_t VtnMoMgr::UpdateVbridgeIfUnKnownInstance( + ConfigKeyVal *ck_vnode, + uint8_t *ctrlr_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + ConfigKeyVal *ck_vnode_if = NULL; + upll_rc_t result_code = UPLL_RC_SUCCESS; + VnodeChildMoMgr *node_if_mgr = + reinterpret_cast( + const_cast + (const_cast( + GetMoManager(UNC_KT_VBR_IF)))); + result_code = node_if_mgr->GetCkvUninit(ck_vnode_if, + ck_vnode, + dmi); + SET_USER_DATA_CTRLR(ck_vnode_if, ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; + } + val_db_vbr_if_st *vnode_if_stval = + reinterpret_cast + (GetStateVal(ck_vnode_if)); + if (vnode_if_stval == NULL) { + UPLL_LOG_DEBUG("Error in fetching in state structure"); + DELETE_IF_NOT_NULL(ck_vnode_if); + return UPLL_RC_ERR_GENERIC; + } + vnode_if_stval->vbr_if_val_st.oper_status = + UPLL_OPER_STATUS_UNKNOWN; + vnode_if_stval->vbr_if_val_st.valid[UPLL_IDX_OPER_STATUS_VBRIS] = + UNC_VF_VALID; + + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; + result_code = node_if_mgr->UpdateConfigDB(ck_vnode_if, + UPLL_DT_STATE, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); + DELETE_IF_NOT_NULL(ck_vnode_if); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + VnodeMoMgr *node_mgr = + reinterpret_cast( + const_cast + (const_cast( + GetMoManager(UNC_KT_VBRIDGE)))); + val_db_vbr_st *vnode_stval = reinterpret_cast + (GetStateVal(ck_vnode)); + if (vnode_stval == NULL) { + UPLL_LOG_DEBUG("Error in fetching in state structure"); + return UPLL_RC_ERR_GENERIC; + } + vnode_stval->vbr_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; + vnode_stval->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = + UNC_VF_VALID; + + result_code = node_mgr->UpdateConfigDB(ck_vnode, + UPLL_DT_STATE, + UNC_OP_UPDATE, + dmi, + &dbop, + MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Error in Updating Vbridge DB"); + return result_code; + } + } + return (result_code == + UPLL_RC_ERR_NO_SUCH_INSTANCE? UPLL_RC_SUCCESS: + result_code); + } + upll_rc_t VtnMoMgr::GetVbridgeUnKnownInstance( + ConfigKeyVal *ck_vtn, + uint8_t *ctrlr_id, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + ConfigKeyVal *ck_vnode = NULL; + upll_rc_t result_code = UPLL_RC_SUCCESS; + VnodeMoMgr *node_mgr = + reinterpret_cast( + const_cast + (const_cast( + GetMoManager(UNC_KT_VBRIDGE)))); + result_code = node_mgr->GetCkvUninit(ck_vnode, ck_vtn, dmi); + SET_USER_DATA_CTRLR(ck_vnode, ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Returning error %d\n", result_code); + return result_code; + } + val_db_vbr_st *vnode_stval = reinterpret_cast + (GetStateVal(ck_vnode)); + if (vnode_stval == NULL) { + UPLL_LOG_DEBUG("Error in fetching in state structure"); + DELETE_IF_NOT_NULL(ck_vnode); + return UPLL_RC_ERR_GENERIC; + } + vnode_stval->vbr_val_st.oper_status = UPLL_OPER_STATUS_UNKNOWN; + vnode_stval->vbr_val_st.valid[UPLL_IDX_OPER_STATUS_VBRS] = + UNC_VF_VALID; + + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr, kOpInOutNone }; + result_code = node_mgr->UpdateConfigDB(ck_vnode, + UPLL_DT_STATE, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); + DELETE_IF_NOT_NULL(ck_vnode); + return result_code; + } } // namespace kt_momgr } // namespace upll diff --git a/coordinator/modules/upll/vtn_momgr.hh b/coordinator/modules/upll/vtn_momgr.hh index 24dd7075..f7e68738 100644 --- a/coordinator/modules/upll/vtn_momgr.hh +++ b/coordinator/modules/upll/vtn_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -12,6 +12,7 @@ #include #include +#include #include "momgr_impl.hh" namespace unc { @@ -28,597 +29,615 @@ using unc::upll::ipc_util::IpctSt; class VtnMoMgr : public MoMgrImpl { - private: - static unc_key_type_t vtn_child[]; - static BindInfo vtn_bind_info[]; - static BindInfo vtn_rename_bind_info[]; - static BindInfo vtn_controller_bind_info[]; - static BindInfo key_vtn_ctrlrtbl_bind_info[]; - static BindInfo key_vtn_maintbl_bind_info[]; - static BindInfo key_vtn_renametbl_bind_info[]; - - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *key, uint64_t index); - - /** - * @brief Filters the attributes which need not be sent to controller - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit Not used for VTN - * @param[in] op Operation to be performed - * - **/ - bool FilterAttributes(void *&val1, void *val2, bool audit_status, - unc_keytype_operation_t op); - bool IsAllInvalidAttributes(const val_vtnstation_controller_st *val); - - /** Not used for VTN **/ - bool CompareValidValue(void *&val1, void *val2, bool audit); - /* - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] pkey pointer to parent ConfigKeyVal - * @param[in] ck_vtn pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&pkey, ConfigKeyVal *ck_vtn) { - return UPLL_RC_ERR_GENERIC; - } - upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - DalDmlIntf *dmi, uint8_t *ctrlr, bool &no_rename); - upll_rc_t UpdateVtnConfigStatus(ConfigKeyVal *vtn_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq,DalDmlIntf *dmi); - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, - uint32_t driver_result, ConfigKeyVal *upd_key, - DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - upll_rc_t UpdateCtrlrConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); - upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, IpcResponse *resp, - unc_keytype_operation_t op, - DalDmlIntf *dmi, controller_domain *ctrlr_dom); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - upll_rc_t MappingvExtTovBr(ConfigKeyVal *ikey, IpcReqRespHeader *req, - DalDmlIntf *dmi, uint32_t *&count); - - upll_rc_t ReadSingleCtlrlStation(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - uint32_t *count); - upll_rc_t ReadSingleCtlrlVtnMapping(IpcReqRespHeader *header, - ConfigKeyVal *ikey, - DalDmlIntf *dmi, - uint32_t *count); - /** - * @brief Method used in Delete opertaion. Its semantic checks - * for the VTN key. - * - * @param[in] ikey key and value structure. - * @param[in] dt_type key type. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - * @retval UPLL_RC_ERR_CFG_SEMANTIC Failue dueto Semantic. - */ - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - /** - * @brief Method used in Delete opertaion. Its Create the Vtunnel - * Configkey and copy the VTN name from the ikey to Vtunnel - * Value structure. - * - * @param[in] ikey key and value structure. - * @param[in] dt_type key type. - * @param[in] dmi Pointer to DalDmlIntf Class. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - * @retval UPLL_RC_ERR_CFG_SEMANTIC Failue dueto Semantic. - */ - - upll_rc_t CreateVtunnelKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); - - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VTN keytype - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of - * input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *kval); - - /** - * @Brief Checks if the specified key type(KT_VTN) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute not supported. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char *cntrl_id = NULL); - - /** - * @Brief Checks if the specified key type and - * associated attributes are supported on the given controller, - * based on the valid flag. - * - * @param[in] vtn_val KEY_VTN value structure. - * @param[in] attrs List of supported attribute from CAPA API. - * @param[in] operation Operation name. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute not supported. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - */ - upll_rc_t ValVtnAttributeSupportCheck(val_vtn_t *vtn_val, - const uint8_t *attrs, - uint32_t operation); - - /** - * @Brief Validates the syntax for KT_VTN keytype value structure. - * - * @param[in] val_vtn KT_VTN value structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVtnValue(val_vtn_t *vtn_val, uint32_t operation); - - /** - * @Brief Validates the syntax for KT_VTN Rename structure. - * - * @param[in] val_vtn KT_VTN Rename structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVtnRenameValue(val_rename_vtn *vtn_rename); - - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VTNSTATION_CONTROLLER keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtnstation_controller - * is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - **/ - upll_rc_t ValidateMessageForVtnStnCtrlr(IpcReqRespHeader *req, - ConfigKeyVal *ikey); - - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VTN_MAPPING_CONTROLLER keytype - * - * @param[in] req This structure contains IpcReqRespHeader - * (first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn_mapping_controller - * is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - **/ - upll_rc_t ValidateMessageForVtnMapCtrlr(IpcReqRespHeader *req, - ConfigKeyVal *ikey); - - /* - * @Brief Validates the syntax for KT_VTNSTATION_CONTROLLER - * Keytype Key structure. - * - * @param[in] val_vtn KT_VTN key structure. - * @param[in] operation operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - **/ - upll_rc_t ValidateVtnStnCtrlrKey(key_vtnstation_controller *vtn_ctrlr_key, - unc_keytype_operation_t operation); - - /* - * @Brief Validates the syntax for KT_VTN_MAPPING_CONTROLLER Keytype Key structure. - * - * @param[in] val_vtn KT_VTN_MAPPING_CONTROLLER key structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - **/ - upll_rc_t ValidateVtnMapCtrlrKey(key_vtn_controller *vtn_ctrlr_key, - unc_keytype_operation_t operation); - - protected: - /* @brief This method invoke when the VTN merge hapeening between - * Running and DT import. This will checks the vnode name - * unique or not and semantic checks like IP Address, Mac - * Address and network host address. - * - * @param[in] keytype UNC KEY TYPE - * @param[in/out] ctrlr_id Controller ID - * @param[in] conflict_ckv key and value structure - * @param[in] dal Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t MergeValidateChildren(ConfigKeyVal *import_ckval, + private: + static unc_key_type_t vtn_child[]; + static BindInfo vtn_bind_info[]; + static BindInfo vtn_rename_bind_info[]; + static BindInfo vtn_controller_bind_info[]; + static BindInfo key_vtn_ctrlrtbl_bind_info[]; + static BindInfo key_vtn_maintbl_bind_info[]; + static BindInfo key_vtn_renametbl_bind_info[]; + + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *key, uint64_t index); + + /** + * @brief Filters the attributes which need not be sent to controller + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit Not used for VTN + * @param[in] op Operation to be performed + * + **/ + bool FilterAttributes(void *&val1, void *val2, bool audit_status, + unc_keytype_operation_t op); + bool IsAllInvalidAttributes(const val_vtnstation_controller_st *val); + + /** Not used for VTN **/ + bool CompareValidValue(void *&val1, void *val2, bool audit); + /* + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] pkey pointer to parent ConfigKeyVal + * @param[in] ck_vtn pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&pkey, ConfigKeyVal *ck_vtn) { + return UPLL_RC_ERR_GENERIC; + } + upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + DalDmlIntf *dmi, uint8_t *ctrlr, bool &no_rename); + upll_rc_t UpdateVtnConfigStatus(ConfigKeyVal *vtn_key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, DalDmlIntf *dmi); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + uint32_t driver_result, ConfigKeyVal *upd_key, + DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + upll_rc_t UpdateCtrlrConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running); + upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, IpcResponse *resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, controller_domain *ctrlr_dom, + set *affected_ctrlr_set, bool *driver_resp); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + upll_rc_t MappingvExtTovBr(ConfigKeyVal *ikey, IpcReqRespHeader *req, + DalDmlIntf *dmi, uint32_t *&count); + + upll_rc_t ReadSingleCtlrlStation(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + uint32_t *count); + upll_rc_t ReadSingleCtlrlVtnMapping(IpcReqRespHeader *header, + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + uint32_t *count); + /** + * @brief Method used in Delete opertaion. Its semantic checks + * for the VTN key. + * + * @param[in] ikey key and value structure. + * @param[in] dt_type key type. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + * @retval UPLL_RC_ERR_CFG_SEMANTIC Failue dueto Semantic. + */ + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + /** + * @brief Method used in Delete opertaion. Its Create the Vtunnel + * Configkey and copy the VTN name from the ikey to Vtunnel + * Value structure. + * + * @param[in] ikey key and value structure. + * @param[in] dt_type key type. + * @param[in] dmi Pointer to DalDmlIntf Class. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + * @retval UPLL_RC_ERR_CFG_SEMANTIC Failue dueto Semantic. + */ + + upll_rc_t CreateVtunnelKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); + + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VTN keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of + * input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *kval); + + /** + * @Brief Checks if the specified key type(KT_VTN) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute not supported. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char *cntrl_id = NULL); + + /** + * @Brief Checks if the specified key type and + * associated attributes are supported on the given controller, + * based on the valid flag. + * + * @param[in] vtn_val KEY_VTN value structure. + * @param[in] attrs List of supported attribute from CAPA API. + * @param[in] operation Operation name. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR Attribute not supported. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + */ + upll_rc_t ValVtnAttributeSupportCheck(val_vtn_t *vtn_val, + const uint8_t *attrs, + uint32_t operation); + + /** + * @Brief Validates the syntax for KT_VTN keytype value structure. + * + * @param[in] val_vtn KT_VTN value structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVtnValue(val_vtn_t *vtn_val, uint32_t operation); + + /** + * @Brief Validates the syntax for KT_VTN Rename structure. + * + * @param[in] val_vtn KT_VTN Rename structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVtnRenameValue(val_rename_vtn *vtn_rename); + + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VTNSTATION_CONTROLLER keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtnstation_controller + * is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + **/ + upll_rc_t ValidateMessageForVtnStnCtrlr(IpcReqRespHeader *req, + ConfigKeyVal *ikey); + + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VTN_MAPPING_CONTROLLER keytype + * + * @param[in] req This structure contains IpcReqRespHeader + * (first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vtn_mapping_controller + * is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + **/ + upll_rc_t ValidateMessageForVtnMapCtrlr(IpcReqRespHeader *req, + ConfigKeyVal *ikey); + + /* + * @Brief Validates the syntax for KT_VTNSTATION_CONTROLLER + * Keytype Key structure. + * + * @param[in] val_vtn KT_VTN key structure. + * @param[in] operation operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + **/ + upll_rc_t ValidateVtnStnCtrlrKey(key_vtnstation_controller *vtn_ctrlr_key, + unc_keytype_operation_t operation); + + /* + * @Brief Validates the syntax for KT_VTN_MAPPING_CONTROLLER Keytype Key structure. + * + * @param[in] val_vtn KT_VTN_MAPPING_CONTROLLER key structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + **/ + upll_rc_t ValidateVtnMapCtrlrKey(key_vtn_controller *vtn_ctrlr_key, + unc_keytype_operation_t operation); + + protected: + /* @brief This method invoke when the VTN merge hapeening between + * Running and DT import. This will checks the vnode name + * unique or not and semantic checks like IP Address, Mac + * Address and network host address. + * + * @param[in] keytype UNC KEY TYPE + * @param[in/out] ctrlr_id Controller ID + * @param[in] conflict_ckv key and value structure + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t MergeValidateChildren(ConfigKeyVal *import_ckval, const char *ctrlr_id, ConfigKeyVal *ikey, DalDmlIntf *dmi); - upll_rc_t SetCtrlrOperStatus(ConfigKeyVal *ikey, - state_notification notification, - DalDmlIntf *dmi, bool &oper_change) ; - - upll_rc_t SetOperStatus(ConfigKeyVal *ikey, - state_notification notification, - DalDmlIntf *dmi) ; - upll_rc_t DupConfigKeyValVtnStation(ConfigKeyVal *&okey, - ConfigKeyVal *req); - upll_rc_t DupConfigKeyValVtnMapping(ConfigKeyVal *&okey, - ConfigKeyVal *req); - public: - VtnMoMgr(); - virtual ~VtnMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Set vtn oper status - * - * @param[in] vtn_name_o Vtn name - * @param[in] dmi Database connection parameter - * @param[in] notification notification causing change in oper status - * @param[out] bool true oper status set successfully - */ - bool VtnSetOperStatus(uint8_t *vtn_name_o, - DalDmlIntf *dmi, - state_notification notification) ; - - - upll_rc_t UpdateOperStatus(ConfigKeyVal *ck_vtn, - DalDmlIntf *dmi, + upll_rc_t SetCtrlrOperStatus(ConfigKeyVal *ikey, state_notification notification, - bool skip) ; - /** - * @brief Exposed to Physical to Verify whether particular Key - * is in Use in Logical - * - * @param[in/out] operation Operation to check if the Controller is referenced - * in UPLL configuration - * @param[in] dt_type Data Type - * @param[in] key_type KeyType of the key to be verified - * @param[in] ckv ConfigKeyVal of the KeyType - * @param[out] in_use true if key is in use, else false - * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error - * UPLL_RC_SUCCESS on success - * - */ - upll_rc_t IsKeyInUse(upll_keytype_datatype_t dt_type, - const ConfigKeyVal *ckv, bool *in_use, - DalDmlIntf *dmi); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - upll_rc_t GetControllerDomainSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - std::list &list_ctrlr_dom); - upll_rc_t GetControllerDomainSpan(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); - upll_rc_t TxCopyCandidateToRunning( - unc_key_type_t keytype, CtrlrCommitStatusList *ctrlr_commit_status, - DalDmlIntf *dmi); - upll_rc_t TxUpdateController(unc_key_type_t keytype, uint32_t session_id, - uint32_t config_id, uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv); - - /* @brief Set Consolidated config status when controller - * table entry is deleted - * - * @param[in] ikey Vtn Main Table Key - * @param[in] ctrlr_id Controller Name which is deleted - * @param[in] dmi Database object - * - */ - upll_rc_t SetVtnConsolidatedStatus(ConfigKeyVal *ikey, uint8_t *ctrlr_id, - DalDmlIntf *dmi); - /* @brief Read the configuration either from RDBMS and/or from the - * controller - * - * @param[in] req Pointer to IpcResResHeader - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - /* @brief READ_SIBLING_BEGIN: Gets the first MO from the sibling group under the parent - * specified in the key from the specified UNC database - * READ_SIBLING: Gets the next MO from the sibling group under the parent - * specified in the key from the specified UNC database - * - * @param[in] req Pointer to IpcResResHeader - * @param[in/out] key Pointer to the ConfigKeyVal Structure - * @param[in] begin boolean variable to decide the sibling operation - * @param[in] dal Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - bool begin, DalDmlIntf *dmi); - - /* @brief This method invoke when the VTN merge hapeening between - * Running and DT import. This will checks the vnode name - * unique or not and semantic checks like IP Address, Mac - * Address and network host address. - * - * @param[in] keytype UNC KEY TYPE - * @param[in/out] ctrlr_id Controller ID - * @param[in] conflict_ckv key and value structure - * @param[in] dal Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t ReadSiblingCount(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); - - upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *conflict_ckv, DalDmlIntf *dmi); - /* Rename */ - - /** - * @brief Method create configkey for the VTN. - * Allocates the memory for the okey and - * Copy the old name from the rename_info into okey. - * - * @param[in] okey key and value structure. - * @param[in] rename_info key and value structure. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - - /** - * @brief Method used in Rename Operation. - * This function collects the Unc new name from okey, Unc old name and - * Ctrlr name from the ikey and creats the rename_info - * ConfigKeyVal - * - * @param[in] ikey key and value structure. - * @param[in] okey key and value structure. - * @param[out] rename_info key and value structure. - * @param[in] dmi Pointer to DalDmlIntf Class. - * @param[in] ctrlr_id Controller Id. - * @param[in] renamed Flag for Already renamed or not. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, ConfigKeyVal *okey, - ConfigKeyVal *&rename_info, DalDmlIntf *dmi, - const char *ctrlr_id, bool &renamed); - - /** - * @brief Method used in rename opertaion while update the new name into the tables - * to Gets the bindinfo detail for the VTN key. - * - * @param[in] key_type unc key type. - * @param[out] binfo Bindinfo details. - * @param[out] nattr Number of Attributes. - * @param[in] tbl Table Name. - * - * @retval PFC_TRUE Successfull completion. - */ - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - /* - * @Brief Validates the syntax for KT_VTN Keytype Key structure. - * - * @param[in] val_vtn KT_VTN key structure. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - * - */ - upll_rc_t ValidateVtnKey(key_vtn_t *vtn_key); - - /* @brief To convert the value structure read from DB to - * VTNService during READ operations - * @param[in/out] ikey Pointer to the ConfigKeyVal Structure - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ - upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); - - upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi); - - /* @brief To update oper status of vnode - * - * @param[in] ktype keytype - * @param[in] session_id session identifier - * @param[in] config_id config identifier - * @param[in] dmi Pointer to db connection instance - * - * @retval UPLL_RC_SUCCESS updated successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * - **/ - - upll_rc_t TxUpdateDtState(unc_key_type_t ktype, - uint32_t session_id, - uint32_t config_id, - DalDmlIntf *dmi) ; - upll_rc_t ControllerStatusHandler(uint8_t *ctrlr_name, - DalDmlIntf *dmi, - bool operstatus); - upll_rc_t UpdateVnodeIfOperStatus(ConfigKeyVal *ck_vtn, - DalDmlIntf *dmi, - state_notification notification, - bool skip, - int if_type); - upll_rc_t UpdateVnodeOperStatus(uint8_t *ctrlr_name, + DalDmlIntf *dmi, bool &oper_change); + + upll_rc_t SetOperStatus(ConfigKeyVal *ikey, + state_notification notification, + DalDmlIntf *dmi); + upll_rc_t DupConfigKeyValVtnStation(ConfigKeyVal *&okey, + ConfigKeyVal *req); + upll_rc_t DupConfigKeyValVtnMapping(ConfigKeyVal *&okey, + ConfigKeyVal *req); + + public: + VtnMoMgr(); + virtual ~VtnMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Set vtn oper status + * + * @param[in] vtn_name_o Vtn name + * @param[in] dmi Database connection parameter + * @param[in] notification notification causing change in oper status + * @param[out] bool true oper status set successfully + */ + bool VtnSetOperStatus(uint8_t *vtn_name_o, + DalDmlIntf *dmi, + state_notification notification); + + + upll_rc_t UpdateOperStatus(ConfigKeyVal *ck_vtn, + DalDmlIntf *dmi, + state_notification notification, + bool skip); + /** + * @brief Exposed to Physical to Verify whether particular Key + * is in Use in Logical + * + * @param[in/out] operation Operation to check if the Controller is referenced + * in UPLL configuration + * @param[in] dt_type Data Type + * @param[in] key_type KeyType of the key to be verified + * @param[in] ckv ConfigKeyVal of the KeyType + * @param[out] in_use true if key is in use, else false + * @param[out] upll_rc_t UPLL_RC_ERR_CFG_SEMANTIC on error + * UPLL_RC_SUCCESS on success + * + */ + upll_rc_t IsKeyInUse(upll_keytype_datatype_t dt_type, + const ConfigKeyVal *ckv, bool *in_use, + DalDmlIntf *dmi); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + upll_rc_t GetControllerDomainSpan( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + std::list &list_ctrlr_dom); + upll_rc_t GetControllerDomainSpan(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + upll_rc_t TxCopyCandidateToRunning( + unc_key_type_t keytype, CtrlrCommitStatusList *ctrlr_commit_status, + DalDmlIntf *dmi); + upll_rc_t TxUpdateController(unc_key_type_t keytype, uint32_t session_id, + uint32_t config_id, uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv); + + /* @brief Set Consolidated config status when controller + * table entry is deleted + * + * @param[in] ikey Vtn Main Table Key + * @param[in] ctrlr_id Controller Name which is deleted + * @param[in] dmi Database object + * + */ + upll_rc_t SetVtnConsolidatedStatus(ConfigKeyVal *ikey, uint8_t *ctrlr_id, + DalDmlIntf *dmi); + /* @brief Read the configuration either from RDBMS and/or from the + * controller + * + * @param[in] req Pointer to IpcResResHeader + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t ReadMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + /* @brief READ_SIBLING_BEGIN: Gets the first MO from the sibling group under the parent + * specified in the key from the specified UNC database + * READ_SIBLING: Gets the next MO from the sibling group under the parent + * specified in the key from the specified UNC database + * + * @param[in] req Pointer to IpcResResHeader + * @param[in/out] key Pointer to the ConfigKeyVal Structure + * @param[in] begin boolean variable to decide the sibling operation + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t ReadSiblingMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, + bool begin, DalDmlIntf *dmi); + + /* @brief This method invoke when the VTN merge hapeening between + * Running and DT import. This will checks the vnode name + * unique or not and semantic checks like IP Address, Mac + * Address and network host address. + * + * @param[in] keytype UNC KEY TYPE + * @param[in/out] ctrlr_id Controller ID + * @param[in] conflict_ckv key and value structure + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t ReadSiblingCount(IpcReqRespHeader *req, ConfigKeyVal *ikey, + DalDmlIntf *dmi); + + upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, + ConfigKeyVal *conflict_ckv, DalDmlIntf *dmi); + /* Rename */ + + /** + * @brief Method create configkey for the VTN. + * Allocates the memory for the okey and + * Copy the old name from the rename_info into okey. + * + * @param[in] okey key and value structure. + * @param[in] rename_info key and value structure. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + + /** + * @brief Method used in Rename Operation. + * This function collects the Unc new name from okey, Unc old name and + * Ctrlr name from the ikey and creats the rename_info + * ConfigKeyVal + * + * @param[in] ikey key and value structure. + * @param[in] okey key and value structure. + * @param[out] rename_info key and value structure. + * @param[in] dmi Pointer to DalDmlIntf Class. + * @param[in] ctrlr_id Controller Id. + * @param[in] renamed Flag for Already renamed or not. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetRenameInfo(ConfigKeyVal *ikey, ConfigKeyVal *okey, + ConfigKeyVal *&rename_info, DalDmlIntf *dmi, + const char *ctrlr_id, bool &renamed); + + /** + * @brief Method used in rename opertaion while update the new name into the tables + * to Gets the bindinfo detail for the VTN key. + * + * @param[in] key_type unc key type. + * @param[out] binfo Bindinfo details. + * @param[out] nattr Number of Attributes. + * @param[in] tbl Table Name. + * + * @retval PFC_TRUE Successfull completion. + */ + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + /* + * @Brief Validates the syntax for KT_VTN Keytype Key structure. + * + * @param[in] val_vtn KT_VTN key structure. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + * + */ + upll_rc_t ValidateVtnKey(key_vtn_t *vtn_key); + + /* @brief To convert the value structure read from DB to + * VTNService during READ operations + * @param[in/out] ikey Pointer to the ConfigKeyVal Structure + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * + **/ + upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); + + upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi); + + /* @brief To update oper status of vnode + * + * @param[in] ktype keytype + * @param[in] session_id session identifier + * @param[in] config_id config identifier + * @param[in] dmi Pointer to db connection instance + * + * @retval UPLL_RC_SUCCESS updated successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * + **/ + + upll_rc_t TxUpdateDtState(unc_key_type_t ktype, + uint32_t session_id, + uint32_t config_id, + DalDmlIntf *dmi); + upll_rc_t ControllerStatusHandler(uint8_t *ctrlr_name, + DalDmlIntf *dmi, + bool operstatus); + upll_rc_t UpdateVnodeIfOperStatus(ConfigKeyVal *ck_vtn, DalDmlIntf *dmi, state_notification notification, - bool skip); - upll_rc_t RestoreVtnOperStatus(ConfigKeyVal *ck_vtn, + bool skip, + int if_type); + upll_rc_t UpdateVnodeOperStatus(uint8_t *ctrlr_name, + DalDmlIntf *dmi, + state_notification notification, + bool skip); + upll_rc_t RestoreVtnOperStatus(ConfigKeyVal *ck_vtn, + DalDmlIntf *dmi, + state_notification notification); + upll_rc_t RestoreVtnCtrlrOperStatus(uint8_t *ctrlr_name, + DalDmlIntf *dmi, + state_notification notification); + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom); + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id); + upll_rc_t RestoreVnodeOperStatus(uint8_t *ctrlr_id, + ConfigKeyVal *ck_vtn, DalDmlIntf *dmi, - state_notification notification); - upll_rc_t RestoreVtnCtrlrOperStatus(uint8_t *ctrlr_name, - DalDmlIntf *dmi, - state_notification notification); - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, + state_notification notification, + bool skip); + upll_rc_t RestoreVnodeIfAndVtnCtrlr(uint8_t *ctrlr_id, + ConfigKeyVal *ck_vtn, DalDmlIntf *dmi, - controller_domain *ctrlr_dom); - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id); - upll_rc_t RestoreVnodeOperStatus(uint8_t *ctrlr_id, - DalDmlIntf *dmi, - state_notification notification, - bool skip); - upll_rc_t RestoreVnodeIfAndVtnCtrlr(uint8_t *ctrlr_id, - DalDmlIntf *dmi, - state_notification notification, - uint32_t &down_count); + state_notification notification, + uint32_t &down_count); + upll_rc_t VtnRenameMerge(ConfigKeyVal *ikey, + ConfigKeyVal *okey, + DalDmlIntf *dmi); + upll_rc_t MergeVtnMainTable(DalDmlIntf *dmi); + upll_rc_t GetVbridgeUnKnownInstance(ConfigKeyVal *ck_vtn, + uint8_t *ctrlr_id, + DalDmlIntf *dmi); + upll_rc_t UpdateVbridgeIfUnKnownInstance(ConfigKeyVal *ck_vnode, + uint8_t *ctrlr_id, + DalDmlIntf *dmi); }; typedef struct val_db_vtn_st { @@ -627,14 +646,14 @@ typedef struct val_db_vtn_st { } val_db_vtn_st_t; typedef struct val_vtn_ctrlr { - uint8_t valid[2]; - val_oper_status oper_status; - val_alarm_status alarm_status; - unc_keytype_configstatus_t cs_attr[1]; - unc_keytype_configstatus_t cs_row_status; - uint32_t down_count; - uint32_t ref_count; - uint8_t flags; + uint8_t valid[2]; + val_oper_status oper_status; + val_alarm_status alarm_status; + unc_keytype_configstatus_t cs_attr[1]; + unc_keytype_configstatus_t cs_row_status; + uint32_t down_count; + uint32_t ref_count; + uint8_t flags; } val_vtn_ctrlr_t; } // namespace kt_momgr } // namespace upll diff --git a/coordinator/modules/upll/vtn_policingmap_momgr.cc b/coordinator/modules/upll/vtn_policingmap_momgr.cc index 07279db4..01e013ff 100644 --- a/coordinator/modules/upll/vtn_policingmap_momgr.cc +++ b/coordinator/modules/upll/vtn_policingmap_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -26,7 +26,7 @@ namespace kt_momgr { #define POLICINGPROFILE_RENAME 0x02 #define NO_POLICINGPROFILE_RENAME 0xFD -// VtnPolicingmap Table (Main Table) +// VtnPolicingmap Table (Main Table) BindInfo VtnPolicingMapMoMgr::vtnpolicingmap_bind_info[] = { { uudst::vtn_policingmap::kDbiVtnName, CFG_KEY, offsetof(key_vtn_t, vtn_name), @@ -48,7 +48,7 @@ BindInfo VtnPolicingMapMoMgr::vtnpolicingmap_bind_info[] = { uud::kDalUint8, 1 } }; -// Vtn PolicingmapCtrlr Table (Ctrlr Table) +// Vtn PolicingmapCtrlr Table (Ctrlr Table) BindInfo VtnPolicingMapMoMgr::vtnpolicingmap_controller_bind_info[] = { { uudst::vtn_policingmap_ctrlr::kDbiVtnName, CFG_KEY, offsetof(key_vtn_t, vtn_name), @@ -76,7 +76,7 @@ BindInfo VtnPolicingMapMoMgr::vtnpolicingmap_controller_bind_info[] = { uud::kDalUint8, 1 } }; -// Rename VTN name MAINTBL +// Rename VTN name MAINTBL BindInfo VtnPolicingMapMoMgr::key_vtnpm_vtn_maintbl_rename_bind_info[] = { { uudst::vtn_policingmap::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vtn_t, vtn_name), @@ -89,7 +89,7 @@ BindInfo VtnPolicingMapMoMgr::key_vtnpm_vtn_maintbl_rename_bind_info[] = { uud::kDalUint8, 1 } }; -// Rename VTN name CTRLRTBL +// Rename VTN name CTRLRTBL BindInfo VtnPolicingMapMoMgr::key_vtnpm_vtn_ctrlrtbl_rename_bind_info[] = { { uudst::vtn_policingmap_ctrlr::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vtn_t, vtn_name), @@ -103,23 +103,24 @@ BindInfo VtnPolicingMapMoMgr::key_vtnpm_vtn_ctrlrtbl_rename_bind_info[] = { }; -// Constructor +// Constructor VtnPolicingMapMoMgr::VtnPolicingMapMoMgr() : MoMgrImpl() { UPLL_FUNC_TRACE; - // Rename operation is not support for this KT - // setting max tables to 2 + // Rename operation is not support for this KT + // setting max tables to 2 ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiVtnPolicingMapTbl, - UNC_KT_VTN_POLICINGMAP, vtnpolicingmap_bind_info, - IpctSt::kIpcStKeyVtn, IpctSt::kIpcStValPolicingmap, - uudst::vtn_policingmap::kDbiVtnPolicingMapNumCols); + UNC_KT_VTN_POLICINGMAP, vtnpolicingmap_bind_info, + IpctSt::kIpcStKeyVtn, IpctSt::kIpcStValPolicingmap, + uudst::vtn_policingmap::kDbiVtnPolicingMapNumCols); table[RENAMETBL] = NULL; /* For Controller Table */ - table[CTRLRTBL] = new Table(uudst::kDbiVtnPolicingMapCtrlrTbl, + table[CTRLRTBL] = new Table( + uudst::kDbiVtnPolicingMapCtrlrTbl, UNC_KT_VTN_POLICINGMAP, vtnpolicingmap_controller_bind_info, IpctSt::kIpcStKeyVtnPolicingmapController, IpctSt::kIpcStValPolicingmapController, @@ -127,7 +128,6 @@ VtnPolicingMapMoMgr::VtnPolicingMapMoMgr() : MoMgrImpl() { nchild = 0; child = NULL; - cur_instance_count = 0; } upll_rc_t VtnPolicingMapMoMgr::RestorePOMInCtrlTbl( @@ -143,14 +143,14 @@ upll_rc_t VtnPolicingMapMoMgr::RestorePOMInCtrlTbl( return UPLL_RC_ERR_GENERIC; } if (tbl != CTRLRTBL || - (ikey->get_key_type() != UNC_KT_VTN_POLICINGMAP)) { + (ikey->get_key_type() != UNC_KT_VTN_POLICINGMAP)) { UPLL_LOG_DEBUG("Ignoring ktype/Table kt=%d, tbl=%d", ikey->get_key_type(), tbl); return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (NULL == val_pm) { UPLL_LOG_DEBUG(" Value structure is NULL"); return UPLL_RC_ERR_GENERIC; @@ -169,8 +169,9 @@ upll_rc_t VtnPolicingMapMoMgr::RestorePOMInCtrlTbl( return result_code; } upll_rc_t VtnPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + bool restore_flag) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == req || NULL == dmi) { UPLL_LOG_DEBUG("ikey or req or dmi NULL"); @@ -180,12 +181,13 @@ upll_rc_t VtnPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, bool ctrl_instance = true; UPLL_LOG_DEBUG("Data Check (%d) (%d)", req->operation, req->datatype); - - // validate syntax and semantics - result_code = ValidateMessage(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage Err (%d)", result_code); - return result_code; + if (!restore_flag) { + // validate syntax and semantics + result_code = ValidateMessage(req, ikey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("ValidateMessage Err (%d)", result_code); + return result_code; + } } result_code = ValidateAttribute(ikey, dmi, req); @@ -194,41 +196,21 @@ upll_rc_t VtnPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, return result_code; } - // Capability Check -#if 0 - result_code = ValidateCapability(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; - } -#endif - - // Check VTNPM object already exists in VtnPolicingMap tbl CANDIDATE DB - // if record exists, return the error code - result_code = IsReferenced(ikey, req->datatype, dmi); - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Object exists in CANDIDATE DB (%d)", result_code); - return result_code; - } else if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("Instance not Available"); - return result_code; - } - - // Check Policingmap object exists in PolicingProfileTbl CANDIDATE DB - // If record not exists, return error code + // Check Policingmap object exists in PolicingProfileTbl CANDIDATE DB + // If record not exists, return error code val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (NULL == val_pm) { UPLL_LOG_DEBUG(" Value structure is NULL"); return UPLL_RC_ERR_GENERIC; } if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = IsPolicyProfileReferenced(ikey, req->datatype, dmi, - UNC_OP_READ); + UNC_OP_READ); if (UPLL_RC_SUCCESS != result_code) { if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("IsPolicyProfileReferenced record not available (%d)", - result_code); + result_code); return UPLL_RC_ERR_CFG_SEMANTIC; } else { UPLL_LOG_DEBUG( @@ -239,64 +221,84 @@ upll_rc_t VtnPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } } - // Check if Object exists in RUNNING DB and move it to CANDIDATE DB - if (req->datatype == UPLL_DT_CANDIDATE) { - result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); - if ((result_code != UPLL_RC_ERR_INSTANCE_EXISTS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG(" Is Exist check operation failed: err code(%d)", - result_code); - return result_code; - } - if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - result_code = RestoreChildren(ikey, req->datatype, UPLL_DT_RUNNING, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Restore Operation Failed, err %d", result_code); + if (!restore_flag) { + if (UPLL_DT_CANDIDATE == req->datatype) { + result_code = UpdateConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, + MAINTBL); + if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { + UPLL_LOG_DEBUG("Key instance exist"); + if ((ikey)->get_cfg_val()) { + UPLL_LOG_DEBUG("Read Key with Value struct"); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, + kOpInOutFlag | kOpInOutCtrlr | kOpInOutDomain }; + result_code = ReadConfigDB(ikey, UPLL_DT_RUNNING, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code && + UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB Failed %d", result_code); + } + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + return UPLL_RC_ERR_CFG_SEMANTIC; + } + } else { + result_code = UPLL_RC_SUCCESS; + } + if (UPLL_RC_SUCCESS == result_code) { + result_code = RestoreChildren(ikey, + req->datatype, + UPLL_DT_RUNNING, + dmi, + req); + UPLL_LOG_DEBUG("Restore Children returns %d", result_code); + return result_code; + } + } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { + UPLL_LOG_DEBUG("UpdateConfigDB Failed %d", result_code); return result_code; } - return result_code; } + } else { + result_code = UPLL_RC_ERR_NO_SUCH_INSTANCE; } - // 1)Check the ref count capability of vtn associated controller name in - // policingprofilectrltbl If any of one refcount reached the - // max capability, then return error - // If all the ref count is less than capability - // then increment and update the refcount if record exist in - // policingprofilectrltbl and create the record with refcount if record not - // exist in policingprofilectrl tbl for the vtn associated controller name + // 1)Check the ref count capability of vtn associated controller name in + // policingprofilectrltbl If any of one refcount reached the + // max capability, then return error + // If all the ref count is less than capability + // then increment and update the refcount if record exist in + // policingprofilectrltbl and create the record with refcount if record not + // exist in policingprofilectrl tbl for the vtn associated controller name - // 2)Create the record in policingprofileentryctrltbl + // 2)Create the record in policingprofileentryctrltbl if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Err in CANDIDATE DB(%d)", - result_code); + result_code); return result_code; } ctrl_instance = false; } } - // create a record in vtnpolicingmap CANDIDATE DB + // create a record in vtnpolicingmap CANDIDATE DB result_code = UpdateConfigDB(ikey, req->datatype, req->operation, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); return result_code; } key_vtn_t *tmp_key = reinterpret_cast(ikey->get_key()); UPLL_LOG_DEBUG("vtn name in createcand %s", tmp_key->vtn_name); - // Create the record in vtnpolicingmapctrltbl + // Create the record in vtnpolicingmapctrltbl if (ctrl_instance) { result_code = UpdateRecordInVtnPmCtrlr(ikey, req->datatype, UNC_OP_CREATE, - dmi); + dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); return result_code; } } @@ -304,7 +306,7 @@ upll_rc_t VtnPolicingMapMoMgr::CreateCandidateMo(IpcReqRespHeader *req, } upll_rc_t VtnPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == req || NULL == dmi) { UPLL_LOG_DEBUG("DeleteMo ikey and req NULL"); @@ -312,15 +314,15 @@ upll_rc_t VtnPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, } upll_rc_t result_code = UPLL_RC_SUCCESS; - // validate syntax and semantics + // validate syntax and semantics result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("ValidateMessage Err (%d)", result_code); return result_code; } - // Check VTNPM object already exists in VtnPolicingMap CANDIDATE DB - // If record not exists, return error + // Check VTNPM object already exists in VtnPolicingMap CANDIDATE DB + // If record not exists, return error result_code = IsReferenced(ikey, req->datatype, dmi); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("DeleteMo Instance not Available (%d)", result_code); @@ -333,11 +335,11 @@ upll_rc_t VtnPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, return result_code; } - // 1)Decerment the refcount and check if the refcount as 0 then remove - // the record and if refcount is not 0, then update the refcount in - // policingprofilectrltbl + // 1)Decerment the refcount and check if the refcount as 0 then remove + // the record and if refcount is not 0, then update the refcount in + // policingprofilectrltbl - // 2)Delete the record in policingprofileentryctrltbl + // 2)Delete the record in policingprofileentryctrltbl ConfigKeyVal *tempckv = NULL; result_code = GetChildConfigKey(tempckv, ikey); if (UPLL_RC_SUCCESS != result_code) { @@ -346,44 +348,44 @@ upll_rc_t VtnPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(tempckv, req->datatype, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG(" ReadConfigDB failed "); DELETE_IF_NOT_NULL(tempckv); return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(tempckv)); + (GetVal(tempckv)); if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(tempckv, req->datatype, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { result_code = UPLL_RC_SUCCESS; } else if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo UpdateRefCountInPPCtrlr Error DB (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(tempckv); return result_code; } } - // Delete a record in vtnpolicingmap CANDIDATE DB + // Delete a record in vtnpolicingmap CANDIDATE DB result_code = UpdateConfigDB(ikey, req->datatype, req->operation, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(tempckv); return result_code; } - // Delete the record in vtnpolicingmapctrltbl + // Delete the record in vtnpolicingmapctrltbl result_code = UpdateRecordInVtnPmCtrlr(tempckv, req->datatype, UNC_OP_DELETE, - dmi); + dmi); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { result_code = UPLL_RC_SUCCESS; } else if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmapctrltbl (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(tempckv); return result_code; } @@ -393,7 +395,7 @@ upll_rc_t VtnPolicingMapMoMgr::DeleteMo(IpcReqRespHeader *req, } upll_rc_t VtnPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { + ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == req || NULL == dmi) { UPLL_LOG_DEBUG("UpdateMo ikey and req NULL"); @@ -403,54 +405,24 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, ConfigKeyVal *tmp_key = NULL; - // validate syntax and semantics + // validate syntax and semantics result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateMo ValidateMessage Err (%d)", result_code); return result_code; } - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" SetRenameFlag failed %d", result_code); - return result_code; - } - - // Capability Check -#if 0 - result_code = ValidateCapability(req, ikey); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; - } -#endif - - // Check if VTNPM object exists in VtnPolicingMap CANDIDATE DB - // If record not exists, return error - result_code = IsReferenced(ikey, req->datatype, dmi); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("UpdateMo IsReferenced record not available (%d)", - result_code); - return result_code; - } else if (result_code == UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("UpdateMo IsReferenced record available"); - } else if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateMo IsReferenced error accessing DB (%d)", - result_code); - return result_code; - } - - // Check Policingmap object exists in PolicingProfileTbl CANDIDATE DB - // If record not exists, return error code + // Check Policingmap object exists in PolicingProfileTbl CANDIDATE DB + // If record not exists, return error code val_policingmap_t *val_ival = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = IsPolicyProfileReferenced(ikey, req->datatype, dmi, - UNC_OP_READ); + UNC_OP_READ); if (UPLL_RC_SUCCESS != result_code) { if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("IsPolicyProfileReferenced record not available (%d)", - result_code); + result_code); return UPLL_RC_ERR_CFG_SEMANTIC; } else { UPLL_LOG_DEBUG( @@ -477,63 +449,63 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(tmpckv, req->datatype, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("ReadConfigDB failed"); return result_code; } val_policingmap_t *val_tmp_val = reinterpret_cast - (GetVal(tmpckv)); + (GetVal(tmpckv)); if (UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM] && UNC_VF_VALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name valid in DB and ikey"); result_code = UpdateRefCountInPPCtrlr(tmpckv, req->datatype, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in delete (%d)", - result_code); + result_code); return result_code; } } result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); return result_code; } } } else if ((UNC_VF_VALID_NO_VALUE == val_tmp_val-> - valid[UPLL_IDX_POLICERNAME_PM] || - UNC_VF_INVALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM])&& - UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { + valid[UPLL_IDX_POLICERNAME_PM] || + UNC_VF_INVALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM])&& + UNC_VF_VALID == val_ival->valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name valid in ikey and validnovalue in DB"); result_code = UpdateRefCountInPPCtrlr(ikey, req->datatype, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in create (%d)", - result_code); + result_code); return result_code; } } } else if (UNC_VF_VALID == val_tmp_val->valid[UPLL_IDX_POLICERNAME_PM] && - UNC_VF_VALID_NO_VALUE == val_ival-> - valid[UPLL_IDX_POLICERNAME_PM]) { + UNC_VF_VALID_NO_VALUE == val_ival-> + valid[UPLL_IDX_POLICERNAME_PM]) { UPLL_LOG_DEBUG(" Policer name validnovalue in ikey and valid in db"); result_code = UpdateRefCountInPPCtrlr(tmpckv, req->datatype, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("UpdateMo UpdateRefCountInPPCtrlr error in delete (%d)", - result_code); + result_code); return result_code; } } @@ -544,24 +516,24 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, UPLL_LOG_DEBUG("Flag in ikey: %d", temp_flag); DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutFlag}; result_code = UpdateConfigDB(ikey, req->datatype, req->operation, dmi, - &dbop1, MAINTBL); + &dbop1, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(tmp_key); UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(tmpckv); return result_code; } /* Update the record in vtnpolicingmapctrltbl */ result_code = UpdateRecordInVtnPmCtrlr(ikey, req->datatype, UNC_OP_UPDATE, - dmi); + dmi); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { DELETE_IF_NOT_NULL(tmp_key); DELETE_IF_NOT_NULL(tmpckv); UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); return result_code; } } @@ -571,16 +543,21 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateMo(IpcReqRespHeader *req, } upll_rc_t VtnPolicingMapMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ikey) return UPLL_RC_ERR_GENERIC; DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the exixtence in vtnpolicingmaptbl - result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_READ, dmi, &dbop, MAINTBL); + // Check the exixtence in vtnpolicingmaptbl + result_code = UpdateConfigDB(ikey, + dt_type, + UNC_OP_READ, + dmi, + &dbop, + MAINTBL); UPLL_LOG_DEBUG("VtnPolicingMapMoMgr::IsReferenced IsReferenced status"); return result_code; @@ -594,10 +571,10 @@ upll_rc_t VtnPolicingMapMoMgr::IsPolicyProfileReferenced( upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; - // Get the memory allocated policy profile key structure + // Get the memory allocated policy profile key structure MoMgrImpl *mgr = - reinterpret_cast((const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE)))); + reinterpret_cast((const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE)))); if (!mgr) { UPLL_LOG_DEBUG("IsPolicyProfileReferenced mgr NULL"); return UPLL_RC_ERR_GENERIC; @@ -605,11 +582,11 @@ upll_rc_t VtnPolicingMapMoMgr::IsPolicyProfileReferenced( result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("IsPolicyProfileReferenced GetChildConfigKey (%d)", - result_code); + result_code); return result_code; } if (!okey) return UPLL_RC_ERR_GENERIC; - // Get the policer name and fill in policingprofile key structure + // Get the policer name and fill in policingprofile key structure uuu::upll_strncpy( reinterpret_cast (okey->get_key())->policingprofile_name, @@ -618,7 +595,7 @@ upll_rc_t VtnPolicingMapMoMgr::IsPolicyProfileReferenced( (kMaxLenPolicingProfileName + 1)); DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the existence in policingprofiletbl + // Check the existence in policingprofiletbl result_code = mgr->UpdateConfigDB(okey, dt_type, op, dmi, &dbop, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); @@ -628,11 +605,12 @@ upll_rc_t VtnPolicingMapMoMgr::IsPolicyProfileReferenced( val_policingmap_t *val_pm = reinterpret_cast (GetVal(ikey)); PolicingProfileEntryMoMgr *ppe_mgr = - reinterpret_cast - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); - result_code = ppe_mgr->ValidateValidElements(reinterpret_cast - (val_pm->policer_name), dmi, dt_type); + reinterpret_cast + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); + result_code = ppe_mgr->ValidateValidElements( + reinterpret_cast + (val_pm->policer_name), dmi, dt_type); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ValidateValidElements failed %d", result_code); return result_code; @@ -650,22 +628,22 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRefCountInPPCtrlr( ConfigKeyVal *okey = NULL; uint8_t *ctrlr_id = NULL; - // Get the momory alloctaed vtn key structure + // Get the momory alloctaed vtn key structure VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); result_code = vtnmgr->GetChildConfigKey(okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr GetChildConfigKey error (%d)", - result_code); + result_code); return result_code; } if (!okey) return UPLL_RC_ERR_GENERIC; - // To get the vtn associated controller name + // To get the vtn associated controller name key_vtn_t *vtn_okey = reinterpret_cast(okey->get_key()); key_vtn_t *vtn_ikey = reinterpret_cast(ikey->get_key()); uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_name, - kMaxLenVtnName+1); + kMaxLenVtnName+1); result_code = vtnmgr->GetControllerDomainSpan(okey, dt_type, dmi); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", result_code); @@ -674,21 +652,21 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRefCountInPPCtrlr( } PolicingProfileMoMgr *pp_mgr = - reinterpret_cast - (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE))); + reinterpret_cast + (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE))); /* - PolicingProfileEntryMoMgr *ppe_mgr = - reinterpret_cast - (const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE_ENTRY)));*/ + PolicingProfileEntryMoMgr *ppe_mgr = + reinterpret_cast + (const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE_ENTRY)));*/ val_policingmap_t* val_vtn_policingmap = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); - // Vtn Associated ctrl name + // Vtn Associated ctrl name ConfigKeyVal *tmp_ckv = okey; while (NULL != okey) { - // Get the controller name + // Get the controller name GET_USER_DATA_CTRLR(okey, ctrlr_id); if (NULL == ctrlr_id) { @@ -697,17 +675,17 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRefCountInPPCtrlr( return UPLL_RC_ERR_GENERIC; } - // Check the ref count capability of vtn associated controller name in - // policingprofilectrltbl If any of one refcount reached the - // max capability, then return error - // If all the ref count is less than capability - // then increment and update the refcount if record exist in - // policingprofilectrltbl and create the record with refcount if record not - // exist in policingprofilectrl tbl for the vtn associated controller name + // Check the ref count capability of vtn associated controller name in + // policingprofilectrltbl If any of one refcount reached the + // max capability, then return error + // If all the ref count is less than capability + // then increment and update the refcount if record exist in + // policingprofilectrltbl and create the record with refcount if record not + // exist in policingprofilectrl tbl for the vtn associated controller name UPLL_LOG_DEBUG("PP name in GetPolicingProfileCtrlrKeyval %s", - val_vtn_policingmap->policer_name); + val_vtn_policingmap->policer_name); UPLL_LOG_DEBUG("Ctrlrid in GetPolicingProfileCtrlrKeyval %s", - ctrlr_id); + ctrlr_id); result_code = pp_mgr->PolicingProfileCtrlrTblOper( reinterpret_cast(val_vtn_policingmap->policer_name), reinterpret_cast(ctrlr_id), dmi, op, dt_type); @@ -715,8 +693,8 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRefCountInPPCtrlr( DELETE_IF_NOT_NULL(okey); return result_code; } - // Create the record in policingprofileentryctrltbl - #if 0 + // Create the record in policingprofileentryctrltbl +#if 0 result_code = ppe_mgr->PolicingProfileEntryCtrlrTblOper( reinterpret_cast(val_vtn_policingmap->policer_name), reinterpret_cast(ctrlr_id), dmi, op, dt_type); @@ -724,7 +702,7 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRefCountInPPCtrlr( DELETE_IF_NOT_NULL(okey); return result_code; } - #endif +#endif okey = okey->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(tmp_ckv); @@ -743,13 +721,13 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRecordInVtnPmCtrlr( return UPLL_RC_ERR_GENERIC; } VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); - // Get the memory allocated vtn key structure + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + // Get the memory allocated vtn key structure result_code = vtnmgr->GetChildConfigKey(temp_okey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG(" GetChildConfigKey error (%d)", - result_code); + result_code); return result_code; } key_vtn_t *vtn_okey = reinterpret_cast(temp_okey->get_key()); @@ -759,9 +737,9 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRecordInVtnPmCtrlr( return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(vtn_okey->vtn_name, vtn_key->vtn_name, - kMaxLenVtnName+1); + kMaxLenVtnName+1); UPLL_LOG_DEBUG(" vtn_name %s", vtn_okey->vtn_name); - // Get the vtn associated controller name + // Get the vtn associated controller name result_code = vtnmgr->GetControllerDomainSpan(temp_okey, dt_type, dmi); if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG(" No entry in vtn ctrlr tbl"); @@ -770,7 +748,7 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRecordInVtnPmCtrlr( } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetControllerSpan error (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(temp_okey); return result_code; } @@ -783,103 +761,69 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateRecordInVtnPmCtrlr( result_code = GetPMCtrlKeyval(ctrlckv, ikey, &ctrlr_dom); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("CheckRefCountCapability GetPMCtrlKeyval error (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(temp_okey); return result_code; } if ((op == UNC_OP_CREATE) || (op ==UNC_OP_UPDATE)) { - if (op == UNC_OP_CREATE) { - DbSubOp dbop = {kOpReadExist, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutNone}; - result_code = UpdateConfigDB(ctrlckv, dt_type, UNC_OP_READ, dmi, - &dbop, CTRLRTBL); - if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(ctrlckv); - okey = okey->get_next_cfg_key_val(); - continue; - } - UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); - DELETE_IF_NOT_NULL(temp_okey); - DELETE_IF_NOT_NULL(ctrlckv); - return result_code; - } - ConfigKeyVal *temp_key = NULL; - - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(temp_okey); - DELETE_IF_NOT_NULL(ctrlckv); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, reinterpret_cast(ctrlr_dom.ctrlr), - dt_type, - &cur_instance_count, - dmi, CTRLRTBL); - UPLL_LOG_INFO("cur_instance_count = %d", cur_instance_count); - DELETE_IF_NOT_NULL(temp_key); - - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(temp_okey); - DELETE_IF_NOT_NULL(ctrlckv); - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - } IpcReqRespHeader *temp_req = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); temp_req->datatype = dt_type; temp_req->operation = op; - + result_code = ValidateCapability( - temp_req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); - + temp_req, ikey, reinterpret_cast(ctrlr_dom.ctrlr)); + free(temp_req); - + unc_keytype_ctrtype_t ctrlrtype = UNC_CT_UNKNOWN; uuc::CtrlrMgr *ctrlr_mgr = uuc::CtrlrMgr::GetInstance(); if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ctrlckv); - // VTN PolicingMap is not supported for other than PFC Controller - // so skip adding entry for such sontroller in ctrlr table - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_dom.ctrlr), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - okey = okey->get_next_cfg_key_val(); - continue; - } - DELETE_IF_NOT_NULL(okey); - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; + DELETE_IF_NOT_NULL(ctrlckv); + // VTN PolicingMap is not supported for other than PFC Controller + // so skip adding entry for such sontroller in ctrlr table + if ((!ctrlr_mgr->GetCtrlrType( + reinterpret_cast(ctrlr_dom.ctrlr), + dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + okey = okey->get_next_cfg_key_val(); + continue; + } + DELETE_IF_NOT_NULL(okey); + UPLL_LOG_DEBUG("Key not supported by controller"); + return result_code; } val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(ikey)); - val_vtnpolicingmap_ctrl *val_vtnpmap_ctrl = static_cast< - val_vtnpolicingmap_ctrl*>(GetVal(ctrlckv)); + reinterpret_cast(GetVal(ikey)); + val_vtnpolicingmap_ctrl *val_vtnpmap_ctrl = static_cast< + val_vtnpolicingmap_ctrl*>(GetVal(ctrlckv)); for ( unsigned int loop = 0; - loop < sizeof - (val_vtnpmap_ctrl->valid)/sizeof(val_vtnpmap_ctrl->valid[0]); - ++loop ) { - if (val_policingmap->valid[loop] == UNC_VF_NOT_SUPPORTED) - val_vtnpmap_ctrl->valid[loop] = UNC_VF_INVALID; - else - val_vtnpmap_ctrl->valid[loop] = - val_policingmap->valid[loop]; + loop < sizeof + (val_vtnpmap_ctrl->valid)/sizeof(val_vtnpmap_ctrl->valid[0]); + ++loop ) { + if (val_policingmap->valid[loop] == UNC_VF_NOT_SUPPORTED) + val_vtnpmap_ctrl->valid[loop] = UNC_VF_INVALID; + else + val_vtnpmap_ctrl->valid[loop] = + val_policingmap->valid[loop]; } } - // Create/Update/Delete a record in CANDIDATE DB + // Create/Update/Delete a record in CANDIDATE DB result_code = UpdateConfigDB(ctrlckv, dt_type, op, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { + if ((UNC_OP_CREATE == op) && + (UPLL_RC_ERR_INSTANCE_EXISTS == result_code)) { + DELETE_IF_NOT_NULL(ctrlckv); + okey = okey->get_next_cfg_key_val(); + continue; + } DELETE_IF_NOT_NULL(temp_okey); DELETE_IF_NOT_NULL(ctrlckv); UPLL_LOG_DEBUG("Create record Err in vtnpolicingmapctrlrtbl CAN DB(%d)", - result_code); + result_code); return result_code; } DELETE_IF_NOT_NULL(ctrlckv); @@ -911,9 +855,9 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateControllerTableForVtn( (ikey->get_key()); uuu::upll_strncpy(vtn_key->vtn_name, vtn_name, kMaxLenVtnName+1); DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCs | kOpInOutFlag}; - // Read the Configuration from the MainTable + // Read the Configuration from the MainTable result_code = ReadConfigDB(ikey, dt_type, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("No Records in main table to be created in ctrlr tbl"); @@ -926,11 +870,11 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateControllerTableForVtn( if (flag != 0) { uint8_t temp_flag = 0; GET_USER_DATA_FLAGS(ikey, temp_flag); - flag = flag | temp_flag; + flag = flag | temp_flag; SET_USER_DATA_FLAGS(ikey, flag); DbSubOp dbop1 = {kOpNotRead, kOpMatchNone, kOpInOutCs | kOpInOutFlag}; result_code = UpdateConfigDB(ikey, dt_type, UNC_OP_UPDATE, - dmi, &dbop1, MAINTBL); + dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB failed %d", result_code); return result_code; @@ -950,109 +894,96 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateControllerTableForVtn( } if (op == UNC_OP_CREATE) { - ConfigKeyVal *temp_key = NULL; - - result_code = GetChildConfigKey(temp_key, NULL); - if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ikey); - DELETE_IF_NOT_NULL(ctrlckv); - UPLL_LOG_DEBUG("GetChildConfigKey failed(%d)",result_code); - return result_code; - } - - result_code = GetInstanceCount(temp_key, reinterpret_cast(ctrlr_dom->ctrlr), - dt_type, - &cur_instance_count, - dmi, CTRLRTBL); - DELETE_IF_NOT_NULL(temp_key); - - if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ikey); - DELETE_IF_NOT_NULL(ctrlckv); - UPLL_LOG_DEBUG("GetInstanceCount failed(%d)",result_code); - return result_code; - } - IpcReqRespHeader *temp_req = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); + (ConfigKeyVal::Malloc(sizeof(IpcReqRespHeader))); temp_req->datatype = UPLL_DT_CANDIDATE; temp_req->operation = op; - - result_code = ValidateCapability(temp_req, ikey, reinterpret_cast(ctrlr_dom->ctrlr)); + + result_code = ValidateCapability( + temp_req, + ikey, + reinterpret_cast(ctrlr_dom->ctrlr)); free(temp_req); if (result_code != UPLL_RC_SUCCESS) { - DELETE_IF_NOT_NULL(ctrlckv); - DELETE_IF_NOT_NULL(ikey); - // VTN PolicingMap is not supported for other than PFC Controller - // so skip adding entry for such sontroller in ctrlr table - if ((!ctrlr_mgr->GetCtrlrType(reinterpret_cast(ctrlr_dom->ctrlr), - dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { - result_code = UPLL_RC_SUCCESS; - UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); - return result_code; - } - UPLL_LOG_DEBUG("Key not supported by controller"); - return result_code; + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(ikey); + // VTN PolicingMap is not supported for other than PFC Controller + // so skip adding entry for such sontroller in ctrlr table + if ((!ctrlr_mgr->GetCtrlrType( + reinterpret_cast(ctrlr_dom->ctrlr), + dt_type, &ctrlrtype)) || (ctrlrtype != UNC_CT_PFC)) { + result_code = UPLL_RC_SUCCESS; + UPLL_LOG_DEBUG("Controller type is %d", ctrlrtype); + return result_code; + } + UPLL_LOG_DEBUG("Key not supported by controller"); + return result_code; } - val_policingmap_t *val_policingmap = reinterpret_cast(GetVal(ikey)); - - val_vtnpolicingmap_ctrl *val_vtnpmap_ctrl = reinterpret_cast - (GetVal(ctrlckv)); + val_policingmap_t *val_policingmap = + reinterpret_cast(GetVal(ikey)); + + val_vtnpolicingmap_ctrl *val_vtnpmap_ctrl = + reinterpret_cast + (GetVal(ctrlckv)); for ( unsigned int loop = 0; loop < sizeof - (val_vtnpmap_ctrl->valid)/sizeof(val_vtnpmap_ctrl->valid[0]); - ++loop ) { - if (val_policingmap->valid[loop] == UNC_VF_NOT_SUPPORTED) - val_vtnpmap_ctrl->valid[loop] = UNC_VF_INVALID; - else - val_vtnpmap_ctrl->valid[loop] = - val_policingmap->valid[loop]; + (val_vtnpmap_ctrl->valid)/sizeof(val_vtnpmap_ctrl->valid[0]); + ++loop ) { + if (val_policingmap->valid[loop] == UNC_VF_NOT_SUPPORTED) + val_vtnpmap_ctrl->valid[loop] = UNC_VF_INVALID; + else + val_vtnpmap_ctrl->valid[loop] = + val_policingmap->valid[loop]; } } - // Create the entry in VTNPMCtrl table + // Create the entry in VTNPMCtrl table if (UPLL_DT_AUDIT == dt_type && UNC_OP_CREATE == op) { val_vtnpolicingmap_ctrl_t *valvtnctrlr = reinterpret_cast - (GetVal(ctrlckv)); + (GetVal(ctrlckv)); val_policingmap_t *valvtn = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); valvtnctrlr->cs_attr[0] = valvtn->cs_attr[0]; valvtnctrlr->cs_row_status = valvtn->cs_row_status; - UPLL_LOG_DEBUG("Setting cs for ctrlr tbl in vtnpm cs %d row %d", valvtnctrlr->cs_attr[0], valvtnctrlr->cs_row_status ); - UPLL_LOG_DEBUG("Setting cs for main tbl in vtnpm cs %d row %d", valvtn->cs_attr[0], valvtn->cs_row_status ); + UPLL_LOG_DEBUG("Setting cs for ctrlr tbl in vtnpm cs %d row %d", + valvtnctrlr->cs_attr[0], + valvtnctrlr->cs_row_status); + UPLL_LOG_DEBUG("Setting cs for main tbl in vtnpm cs %d row %d", + valvtn->cs_attr[0], + valvtn->cs_row_status); } result_code = UpdateConfigDB(ctrlckv, dt_type, op, - dmi, CTRLRTBL); + dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ctrlckv); DELETE_IF_NOT_NULL(ikey); UPLL_LOG_DEBUG("Err while updating in ctrlr table for candidateDb(%d)", - result_code); + result_code); return result_code; } PolicingProfileMoMgr *pp_mgr = - reinterpret_cast - (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE))); + reinterpret_cast + (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE))); val_policingmap_t* val_vtn_policingmap = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); UPLL_LOG_DEBUG("PP name in GetPolicingProfileCtrlrKeyval %s", - val_vtn_policingmap->policer_name); + val_vtn_policingmap->policer_name); UPLL_LOG_DEBUG("Ctrlrid in GetPolicingProfileCtrlrKeyval %s", - ctrlr_dom->ctrlr); + ctrlr_dom->ctrlr); - // Cretae the entry in PPCtrl table + // Cretae the entry in PPCtrl table result_code = pp_mgr->PolicingProfileCtrlrTblOper( reinterpret_cast(val_vtn_policingmap->policer_name), reinterpret_cast(ctrlr_dom->ctrlr), dmi, op, dt_type); if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ctrlckv); - DELETE_IF_NOT_NULL(ikey); - return result_code; + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(ikey); + return result_code; } DELETE_IF_NOT_NULL(ikey); @@ -1063,38 +994,39 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateControllerTableForVtn( } upll_rc_t VtnPolicingMapMoMgr::GetPMCtrlKeyval(ConfigKeyVal *&ctrlckv, - ConfigKeyVal *&ikey, - controller_domain *ctrlr_dom) { + ConfigKeyVal *&ikey, + controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; ConfigVal *ctrlcv = NULL; key_vtn_t *key_vtnpmctrlr = - reinterpret_cast(ConfigKeyVal::Malloc(sizeof(key_vtn_t))); - // Get the vtn name and ctrlr id and fill it with - // key_vtn_policingmap_controller_t structure + reinterpret_cast(ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + // Get the vtn name and ctrlr id and fill it with + // key_vtn_policingmap_controller_t structure uuu::upll_strncpy( key_vtnpmctrlr->vtn_name, reinterpret_cast (ikey->get_key())->vtn_name, (kMaxLenVtnName + 1)); - // Get the policer name and fill it with val_vtnpolicingmap_ctrl_t structure + // Get the policer name and fill it with val_vtnpolicingmap_ctrl_t structure val_vtnpolicingmap_ctrl_t *valvtnctrlr = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtnpolicingmap_ctrl_t))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtnpolicingmap_ctrl_t))); if (NULL != GetVal(ikey)) { UPLL_LOG_DEBUG("ikey with val structure"); valvtnctrlr->valid[UPLL_IDX_POLICERNAME_PM] = - reinterpret_cast(ikey->get_cfg_val()->get_val()) - ->valid[UPLL_IDX_POLICERNAME_PM]; + reinterpret_cast(ikey->get_cfg_val()->get_val()) + ->valid[UPLL_IDX_POLICERNAME_PM]; if (UNC_VF_VALID == valvtnctrlr->valid[UPLL_IDX_POLICERNAME_PM]) { uuu::upll_strncpy( reinterpret_cast(valvtnctrlr->policer_name), - reinterpret_cast(reinterpret_cast - (ikey->get_cfg_val()->get_val())->policer_name), + reinterpret_cast( + reinterpret_cast + (ikey->get_cfg_val()->get_val())->policer_name), kMaxLenPolicingProfileName + 1); - } + } } else { UPLL_LOG_DEBUG("ikey with no val structure"); free(valvtnctrlr); @@ -1104,8 +1036,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetPMCtrlKeyval(ConfigKeyVal *&ctrlckv, ctrlcv = new ConfigVal(IpctSt::kIpcInvalidStNum, valvtnctrlr); ctrlckv = new ConfigKeyVal(UNC_KT_VTN_POLICINGMAP, - IpctSt::kIpcStKeyVtn, - key_vtnpmctrlr, ctrlcv); + IpctSt::kIpcStKeyVtn, + key_vtnpmctrlr, ctrlcv); if (ctrlckv == NULL) { UPLL_LOG_DEBUG("GetPMCtrlKeyval error "); @@ -1128,14 +1060,14 @@ upll_rc_t VtnPolicingMapMoMgr::IsPolicingProfileConfigured( } if (!ckv) return UPLL_RC_ERR_GENERIC; val_policingmap_t *pm_val = reinterpret_cast - < val_policingmap_t *>(ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + < val_policingmap_t *>(ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); uuu::upll_strncpy(pm_val->policer_name, policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + (kMaxLenPolicingProfileName + 1)); pm_val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; ckv->AppendCfgVal(IpctSt::kIpcStValPolicingmap, pm_val); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(ckv, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, - dmi, MAINTBL); + dmi, MAINTBL); DELETE_IF_NOT_NULL(ckv); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { return UPLL_RC_SUCCESS; @@ -1146,8 +1078,8 @@ upll_rc_t VtnPolicingMapMoMgr::IsPolicingProfileConfigured( } upll_rc_t VtnPolicingMapMoMgr::ReadMo(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -1201,56 +1133,56 @@ upll_rc_t VtnPolicingMapMoMgr::ReadVtnPolicingMapController( } else if ((req->datatype == UPLL_DT_STATE)&& ((req->option1 == UNC_OPT1_DETAIL) && (req->option2 == UNC_OPT2_NONE))) { - IpcResponse ipc_response; - memset(&ipc_response, 0, sizeof(IpcResponse)); - result_code = SendIpcrequestToDriver( - ikey, req, &ipc_response, dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("SendIpcrequestToDriver failed %d", result_code); - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - return result_code; - } - ConfigKeyVal *temp_key = NULL; - result_code = CopyVtnControllerCkv(ikey, temp_key); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyVtnControllerCkv failed %d", result_code); - delete temp_key; - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - return result_code; - } - - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; - result_code = ReadConfigDB(temp_key, req->datatype, UNC_OP_READ, dbop, - dmi, MAINTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); - delete temp_key; - DELETE_IF_NOT_NULL(ipc_response.ckv_data); - return result_code; - } + IpcResponse ipc_response; + memset(&ipc_response, 0, sizeof(IpcResponse)); + result_code = SendIpcrequestToDriver( + ikey, req, &ipc_response, dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("SendIpcrequestToDriver failed %d", result_code); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + return result_code; + } + ConfigKeyVal *temp_key = NULL; + result_code = CopyVtnControllerCkv(ikey, temp_key); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("CopyVtnControllerCkv failed %d", result_code); + delete temp_key; + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + return result_code; + } - result_code = ReadControllerStateDetail(ikey, temp_key, - &ipc_response, req->datatype, - req->operation, dmi); + DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; + result_code = ReadConfigDB(temp_key, req->datatype, UNC_OP_READ, dbop, + dmi, MAINTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); + delete temp_key; DELETE_IF_NOT_NULL(ipc_response.ckv_data); - DELETE_IF_NOT_NULL(temp_key); - if (result_code != UPLL_RC_SUCCESS) { - return result_code; - } - } else { - UPLL_LOG_DEBUG( - "ReadConfigDB error (%d) (%d)", - req->datatype, req->option1); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + return result_code; } - break; - default: + + result_code = ReadControllerStateDetail(ikey, temp_key, + &ipc_response, req->datatype, + req->operation, dmi); + DELETE_IF_NOT_NULL(ipc_response.ckv_data); + DELETE_IF_NOT_NULL(temp_key); + if (result_code != UPLL_RC_SUCCESS) { + return result_code; + } + } else { UPLL_LOG_DEBUG( "ReadConfigDB error (%d) (%d)", req->datatype, req->option1); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - break; - } + } + break; + default: + UPLL_LOG_DEBUG( + "ReadConfigDB error (%d) (%d)", + req->datatype, req->option1); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + break; + } return result_code; } @@ -1268,7 +1200,8 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingMo(IpcReqRespHeader *req, } result_code = ValidateReadAttribute(ikey, dmi, req); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ReadSiblingMo ValidateReadAttribute Err (%d)", result_code); + UPLL_LOG_DEBUG("ReadSiblingMo ValidateReadAttribute Err (%d)", + result_code); return result_code; } @@ -1300,7 +1233,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingPolicingMapController( ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; + upll_rc_t result_code = UPLL_RC_SUCCESS; switch (req->datatype) { case UPLL_DT_STATE: if ((req->option1 == UNC_OPT1_NORMAL) && @@ -1338,8 +1271,8 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingControllerStateNormal( UPLL_FUNC_TRACE; controller_domain ctrlr_dom; upll_rc_t result_code = UPLL_RC_SUCCESS; - // ConfigKeyVal *l_key = NULL; - // ConfigKeyVal *dup_key = NULL; + // ConfigKeyVal *l_key = NULL; + // ConfigKeyVal *dup_key = NULL; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; int ctrl_len = 0; @@ -1370,7 +1303,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingControllerStateNormal( DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; result_code = ReadConfigDB(temp_vtn_pm_ckv, req->datatype, - UNC_OP_READ, dbop,req->rep_count,dmi, CTRLRTBL); + UNC_OP_READ, dbop, req->rep_count, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(temp_vtn_pm_ckv); @@ -1441,7 +1374,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingControllerStateNormal( DELETE_IF_NOT_NULL(okey); } else { UPLL_LOG_DEBUG("ReadSiblingControllerStateNormal failed %d", - result_code); + result_code); DELETE_IF_NOT_NULL(okey); } } else if (req->operation == UNC_OP_READ_SIBLING_BEGIN) { @@ -1687,8 +1620,12 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingControllerStateDetail( DELETE_IF_NOT_NULL(okey); return result_code; } - result_code = ReadControllerStateDetail(dup_ckv, temp_key, &ipc_response, - req->datatype, req->operation, dmi); + result_code = ReadControllerStateDetail(dup_ckv, + temp_key, + &ipc_response, + req->datatype, + req->operation, + dmi); DELETE_IF_NOT_NULL(ipc_response.ckv_data); if (result_code != UPLL_RC_SUCCESS) { @@ -1715,8 +1652,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingControllerStateDetail( DELETE_IF_NOT_NULL(okey); req->rep_count = tmp_sib_count; } - } - else { + } else { result_code = UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } DELETE_IF_NOT_NULL(temp_vtn_pm_ckv); @@ -1726,27 +1662,28 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingControllerStateDetail( } bool VtnPolicingMapMoMgr::GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, int &nattr, - MoMgrTables tbl) { + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("GetRenameKeyBindInfo (%d) (%d)", key_type, tbl); if (MAINTBL == tbl) { nattr = sizeof(key_vtnpm_vtn_maintbl_rename_bind_info)/ - sizeof(key_vtnpm_vtn_maintbl_rename_bind_info[0]); + sizeof(key_vtnpm_vtn_maintbl_rename_bind_info[0]); binfo = key_vtnpm_vtn_maintbl_rename_bind_info; } else if (CTRLRTBL == tbl) { nattr = sizeof(key_vtnpm_vtn_ctrlrtbl_rename_bind_info)/ - sizeof(key_vtnpm_vtn_ctrlrtbl_rename_bind_info[0]); - binfo = key_vtnpm_vtn_ctrlrtbl_rename_bind_info; + sizeof(key_vtnpm_vtn_ctrlrtbl_rename_bind_info[0]); + binfo = key_vtnpm_vtn_ctrlrtbl_rename_bind_info; } else { - UPLL_LOG_DEBUG("GetRenameKeyBindInfo Invalid Tbl (%d)", tbl); - return PFC_FALSE; + UPLL_LOG_DEBUG("GetRenameKeyBindInfo Invalid Tbl (%d)", tbl); + return PFC_FALSE; } return PFC_TRUE; } upll_rc_t VtnPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; if (!ikey || !(ikey->get_key())) { UPLL_LOG_DEBUG("CopyToConfigKey ikey NULL"); @@ -1756,9 +1693,9 @@ upll_rc_t VtnPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); key_vtn_t *key_vtn = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { UPLL_LOG_DEBUG("CopyToConfigKey key_rename->old_unc_vtn_name NULL"); @@ -1767,8 +1704,8 @@ upll_rc_t VtnPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, } uuu::upll_strncpy(key_vtn->vtn_name, - key_rename->old_unc_vtn_name, - (kMaxLenVtnName + 1)); + key_rename->old_unc_vtn_name, + (kMaxLenVtnName + 1)); okey = new ConfigKeyVal(UNC_KT_VTN_POLICINGMAP, IpctSt::kIpcStKeyVtn, key_vtn, NULL); @@ -1780,10 +1717,11 @@ upll_rc_t VtnPolicingMapMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, return result_code; } -upll_rc_t VtnPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - upll_keytype_datatype_t data_type, - bool &no_rename) { +upll_rc_t VtnPolicingMapMoMgr::UpdateVnodeVal( + ConfigKeyVal *ikey, + DalDmlIntf *dmi, + upll_keytype_datatype_t data_type, + bool &no_rename) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; ConfigKeyVal *kval = NULL; @@ -1799,44 +1737,45 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("CopyToConfigKey datatype (%d)", data_type); key_rename_vnode_info_t *key_rename = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); - // Copy the old policer name in val_policingmap + // Copy the old policer name in val_policingmap val_policingmap_t *val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); if (!val) return UPLL_RC_ERR_GENERIC; memset(val, 0, sizeof(val_policingmap_t)); - if (!strlen(reinterpret_cast(key_rename->old_policingprofile_name))) { + if (!strlen(reinterpret_cast + (key_rename->old_policingprofile_name))) { FREE_IF_NOT_NULL(val); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(val->policer_name, - key_rename->old_policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_rename->old_policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val->valid[UPLL_IDX_POLICERNAME_PM], val->policer_name); -// ConfigVal *cval = new ConfigVal(IpctSt::kIpcStValPolicingmap, val); + val->valid[UPLL_IDX_POLICERNAME_PM], val->policer_name); + // ConfigVal *cval = new ConfigVal(IpctSt::kIpcStValPolicingmap, val); result_code = GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); - FREE_IF_NOT_NULL(val); - return result_code; + UPLL_LOG_DEBUG("CopyToConfigKey okey NULL"); + FREE_IF_NOT_NULL(val); + return result_code; } if (!okey) { FREE_IF_NOT_NULL(val); return UPLL_RC_ERR_GENERIC; } - okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValPolicingmap, val)); + okey->SetCfgVal(new ConfigVal(IpctSt::kIpcStValPolicingmap, val)); DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - // Read the record of key structure and old policer name in maintbl + // Read the record of key structure and old policer name in maintbl result_code = ReadConfigDB(okey, data_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG(" ReadConfigDB failed "); DELETE_IF_NOT_NULL(okey); @@ -1844,7 +1783,7 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } ConfigKeyVal *tmp_okey = okey; while (okey != NULL) { - // Update the new policer name in MAINTBL + // Update the new policer name in MAINTBL result_code = GetChildConfigKey(kval, okey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey kval NULL"); @@ -1853,27 +1792,28 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, } if (!kval) return UPLL_RC_ERR_GENERIC; - // Copy the new policer name in val_policingmap + // Copy the new policer name in val_policingmap val_policingmap_t *val1 = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); if (!val1) return UPLL_RC_ERR_GENERIC; memset(val1, 0, sizeof(val_policingmap_t)); - // New name null check - if (!strlen(reinterpret_cast(key_rename->new_policingprofile_name))) { + // New name null check + if (!strlen(reinterpret_cast + (key_rename->new_policingprofile_name))) { FREE_IF_NOT_NULL(val1); UPLL_LOG_DEBUG("new_policingprofile_name NULL"); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(okey); return UPLL_RC_ERR_GENERIC; } - // Copy the new policer name into val_policingmap + // Copy the new policer name into val_policingmap uuu::upll_strncpy(val1->policer_name, - key_rename->new_policingprofile_name, - (kMaxLenPolicingProfileName + 1)); + key_rename->new_policingprofile_name, + (kMaxLenPolicingProfileName + 1)); val1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - val1->valid[UPLL_IDX_POLICERNAME_PM], val1->policer_name); + val1->valid[UPLL_IDX_POLICERNAME_PM], val1->policer_name); ConfigVal *cval1 = new ConfigVal(IpctSt::kIpcStValPolicingmap, val1); kval->SetCfgVal(cval1); @@ -1889,106 +1829,110 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateVnodeVal(ConfigKeyVal *ikey, SET_USER_DATA_FLAGS(kval, rename); UPLL_LOG_DEBUG("kval flag (%d)", rename); - // Update the new policer name in MAINTBL + // Update the new policer name in MAINTBL result_code = UpdateConfigDB(kval, data_type, UNC_OP_UPDATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(okey); return result_code; } - // Get the momory alloctaed vtn key structure - VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); - result_code = vtnmgr->GetChildConfigKey(ckey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr GetChildConfigKey error (%d)", - result_code); - return result_code; - } - if (!ckey) return UPLL_RC_ERR_GENERIC; - // To get the vtn associated controller name - key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); - key_vtn_t *vtn_ikey = reinterpret_cast(okey->get_key()); - uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_name, - kMaxLenVtnName+1); - - UPLL_LOG_DEBUG("vtn name ckey (%s) okey (%s)", vtn_okey->vtn_name, vtn_ikey->vtn_name); - result_code = vtnmgr->GetControllerDomainSpan(ckey, data_type, dmi); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", result_code); - if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(okey); - DELETE_IF_NOT_NULL(ckey); - return result_code; + // Get the momory alloctaed vtn key structure + VtnMoMgr *vtnmgr = + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + result_code = vtnmgr->GetChildConfigKey(ckey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr GetChildConfigKey error (%d)", + result_code); + return result_code; } - DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(ckey); - continue; - } - ConfigKeyVal *tmp_ckey = ckey; - while (ckey != NULL) { - GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom); - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); + if (!ckey) return UPLL_RC_ERR_GENERIC; + // To get the vtn associated controller name + key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); + key_vtn_t *vtn_ikey = reinterpret_cast(okey->get_key()); + uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); - // Update the new policer name in CTRLTBL - result_code = GetChildConfigKey(ckval, okey); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); + UPLL_LOG_DEBUG("vtn name ckey (%s) okey (%s)", + vtn_okey->vtn_name, + vtn_ikey->vtn_name); + result_code = vtnmgr->GetControllerDomainSpan(ckey, data_type, dmi); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", result_code); + if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ckey); + return result_code; + } DELETE_IF_NOT_NULL(kval); - DELETE_IF_NOT_NULL(okey); DELETE_IF_NOT_NULL(ckey); - return result_code; + continue; } - if (!ckval) return UPLL_RC_ERR_GENERIC; + ConfigKeyVal *tmp_ckey = ckey; + while (ckey != NULL) { + GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom); - val_vtnpolicingmap_ctrl *policingmap_ctrlr_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtnpolicingmap_ctrl))); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); - // Copy the new policer name into val_vtnpolicingmap_ctrl - uuu::upll_strncpy(policingmap_ctrlr_val->policer_name, - key_rename->new_policingprofile_name, - (kMaxLenPolicingProfileName + 1)); - policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; - UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", - policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM], - policingmap_ctrlr_val->policer_name); + // Update the new policer name in CTRLTBL + result_code = GetChildConfigKey(ckval, okey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); + DELETE_IF_NOT_NULL(kval); + DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(ckey); + return result_code; + } + if (!ckval) return UPLL_RC_ERR_GENERIC; - SET_USER_DATA_CTRLR_DOMAIN(ckval, ctrlr_dom); - ckval->SetCfgVal(new ConfigVal(IpctSt::kIpcInvalidStNum, policingmap_ctrlr_val)); + val_vtnpolicingmap_ctrl *policingmap_ctrlr_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtnpolicingmap_ctrl))); - SET_USER_DATA_FLAGS(ckval, rename); + // Copy the new policer name into val_vtnpolicingmap_ctrl + uuu::upll_strncpy(policingmap_ctrlr_val->policer_name, + key_rename->new_policingprofile_name, + (kMaxLenPolicingProfileName + 1)); + policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; + UPLL_LOG_DEBUG("policer name and valid (%d) (%s)", + policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM], + policingmap_ctrlr_val->policer_name); - UPLL_LOG_TRACE("ckval %s", ckval->ToStrAll().c_str()); + SET_USER_DATA_CTRLR_DOMAIN(ckval, ctrlr_dom); + ckval->SetCfgVal(new ConfigVal(IpctSt::kIpcInvalidStNum, + policingmap_ctrlr_val)); - // Update the new policer name in CTRLTBL - result_code = UpdateConfigDB(ckval, data_type, UNC_OP_UPDATE, dmi, - CTRLRTBL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + SET_USER_DATA_FLAGS(ckval, rename); + + UPLL_LOG_TRACE("ckval %s", ckval->ToStrAll().c_str()); + + // Update the new policer name in CTRLTBL + result_code = UpdateConfigDB(ckval, data_type, UNC_OP_UPDATE, dmi, + CTRLRTBL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl " + "CANDIDATE DB(%d)", + result_code); DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(ckval); DELETE_IF_NOT_NULL(okey); return result_code; - } + } - DELETE_IF_NOT_NULL(ckval); + DELETE_IF_NOT_NULL(ckval); - ckey = ckey->get_next_cfg_key_val(); + ckey = ckey->get_next_cfg_key_val(); } DELETE_IF_NOT_NULL(kval); DELETE_IF_NOT_NULL(tmp_ckey); okey = okey->get_next_cfg_key_val(); - } + } DELETE_IF_NOT_NULL(tmp_okey); return result_code; } @@ -2018,7 +1962,7 @@ upll_rc_t VtnPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { DELETE_IF_NOT_NULL(ckval); if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { @@ -2029,10 +1973,10 @@ upll_rc_t VtnPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, } ConfigKeyVal *tmp_ckval = ckval; while (NULL != ckval) { - // Check the VTN already configured in UNC + // Check the VTN already configured in UNC VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); result_code = vtnmgr->GetChildConfigKey(ckey, NULL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey error (%d)", result_code); @@ -2044,11 +1988,15 @@ upll_rc_t VtnPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); key_vtn_t *vtn_ikey = reinterpret_cast(ckval->get_key()); uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_name, - kMaxLenVtnName+1); + kMaxLenVtnName+1); DbSubOp dbop1 = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the vtn already exist in vtn tbl - result_code = vtnmgr->UpdateConfigDB(ckey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - &dbop1, MAINTBL); + // Check the vtn already exist in vtn tbl + result_code = vtnmgr->UpdateConfigDB(ckey, + UPLL_DT_RUNNING, + UNC_OP_READ, + dmi, + &dbop1, + MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { UPLL_LOG_DEBUG("vtn already exists"); DELETE_IF_NOT_NULL(ckey); @@ -2057,9 +2005,9 @@ upll_rc_t VtnPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, } DELETE_IF_NOT_NULL(ckey); - // If already vtn not configured, then do merge validation + // If already vtn not configured, then do merge validation result_code = UpdateConfigDB(ckval, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { UPLL_LOG_DEBUG("Merge Conflict"); result_code = DupConfigKeyVal(ikey, ckval, MAINTBL); @@ -2080,242 +2028,550 @@ upll_rc_t VtnPolicingMapMoMgr::MergeValidate(unc_key_type_t keytype, DELETE_IF_NOT_NULL(tmp_ckval); return UPLL_RC_SUCCESS; } -#if 0 -upll_rc_t VtnPolicingMapMoMgr::MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_name, - DalDmlIntf *dmi) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ctrlr_key = NULL, *req = NULL, *nreq = NULL; - DalCursor *cfg1_cursor = NULL; - DalResultCode db_result; - //Get the created records on import configuration which are not available - // at running configuration of UNC - result_code = DiffConfigDB(UPLL_DT_IMPORT, UPLL_DT_RUNNING, UNC_OP_CREATE, req, - nreq, &cfg1_cursor, dmi, MAINTBL); - while (result_code == UPLL_RC_SUCCESS) { - db_result = dmi->GetNextRecord(cfg1_cursor); - result_code = DalToUpllResCode(db_result); - if (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { - result_code = UPLL_RC_SUCCESS; - break; - } - - // Update the record in the main table - result_code = UpdateConfigDB(req, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to update the main tbl,DB err %d", result_code); - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; - } - delete req; - req = NULL; - return result_code; - } - //Update Controller Table - DbSubOp dbop = {kOpReadMultiple, kOpMatchCtrlr, - kOpInOutCtrlr|kOpInOutDomain}; - result_code = DupConfigKeyVal(ctrlr_key, req, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("DupConfigKeyVal is failed result_code = %d", - result_code); - return result_code; - } - SET_USER_DATA_CTRLR(ctrlr_key, ctrlr_name); - - result_code = ReadConfigDB(ctrlr_key, UPLL_DT_IMPORT, UNC_OP_READ, - dbop, dmi, CTRLRTBL); - if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Error in ReadConfigDb (%d)", result_code); - return result_code; - } - // create a record in CANDIDATE DB - result_code = UpdateConfigDB(ctrlr_key, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Unable to update ctrl table, DB err %d", result_code); - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; - } - delete req; - req = NULL; - return result_code; - } - delete ctrlr_key; - ctrlr_key = NULL; - } - if (cfg1_cursor) { - dmi->CloseCursor(cfg1_cursor, true); - cfg1_cursor = NULL; - } - if (req) { - delete req; - req = NULL; - } - return result_code; -} -#endif upll_rc_t VtnPolicingMapMoMgr::MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_name, - DalDmlIntf *dmi) { + const char *ctrlr_name, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *ckval = NULL; - ConfigKeyVal *ckey = NULL; - + ConfigKeyVal *pm_imkey = NULL, *pm_cdkey = NULL, *ckval_dom = NULL; + ConfigKeyVal *ckv_import = NULL, *ckv_cand = NULL; controller_domain ctrlr_dom; ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; uint8_t flag = 0; + uint8_t *ctrlr_id = NULL; if (NULL == ctrlr_name) { UPLL_LOG_DEBUG("MergeValidate ctrlr_id NULL"); return UPLL_RC_ERR_GENERIC; } - result_code = GetChildConfigKey(ckval, NULL); + VtnMoMgr *vtnmgr = + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + result_code = vtnmgr->GetChildConfigKey(ckval, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); return result_code; } - DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - // Read vtn ff from import main - result_code = ReadConfigDB(ckval, UPLL_DT_IMPORT, - UNC_OP_READ, dbop, dmi, MAINTBL); + /* Read all vtn from VTN main table in import database and check with + * Candidate database */ + result_code = vtnmgr->ReadConfigDB(ckval, UPLL_DT_IMPORT, + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { - DELETE_IF_NOT_NULL(ckval); UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); - if(result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { - UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); - return result_code; + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("NO record in vtn tbl (%d)", result_code); + result_code = UPLL_RC_SUCCESS; } - return UPLL_RC_SUCCESS; + DELETE_IF_NOT_NULL(ckval); + return result_code; } - - UPLL_LOG_DEBUG("ReadConfigDB ckval NULL (%d)", result_code); ConfigKeyVal *tmp_ckval = ckval; - while (NULL != ckval) { - // Check the VTN already configured in UNC - VtnMoMgr *vtnmgr = - static_cast((const_cast - (GetMoManager(UNC_KT_VTN)))); - result_code = vtnmgr->GetChildConfigKey(ckey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey error (%d)", result_code); - DELETE_IF_NOT_NULL(ckval); + while (ckval != NULL) { + /* Get the instance count from vtn ctrl table in candidate. + * If refcount is more than 1, + * which means that the vtn is already exists in candidate + * If refcount is zero or 1, + * which means that the imported vtn is not exists in candidate + */ + uint32_t imp_instance_count, cand_instance_count; + /* Get the instance count from vtn ctrl tbl from import db*/ + result_code = vtnmgr->GetChildConfigKey(ckv_import, ckval); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - if (!ckey) return UPLL_RC_ERR_GENERIC; - - key_vtn_t *vtn_okey = reinterpret_cast(ckey->get_key()); - key_vtn_flowfilter *vtn_ikey = reinterpret_cast(ckval->get_key()); - uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_key.vtn_name, - kMaxLenVtnName+1); - DbSubOp dbop1 = { kOpReadExist, kOpMatchNone, kOpInOutNone }; - // Check the vtn already exist in vtn tbl - result_code = vtnmgr->UpdateConfigDB(ckey, UPLL_DT_RUNNING, UNC_OP_READ, dmi, - &dbop1, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS == result_code) { - UPLL_LOG_DEBUG("vtn already exists"); - DELETE_IF_NOT_NULL(ckey); - ckval = ckval->get_next_cfg_key_val(); - continue; - } else if (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { - DELETE_IF_NOT_NULL(ckey); - DELETE_IF_NOT_NULL(ckval); + result_code = vtnmgr->GetInstanceCount(ckv_import, + NULL, + UPLL_DT_IMPORT, + &imp_instance_count, + dmi, + CTRLRTBL); + DELETE_IF_NOT_NULL(ckv_import); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - // If not same vtn, then merge the vtn ff to candidate tbl - result_code = UpdateConfigDB(ckval, UPLL_DT_CANDIDATE, UNC_OP_CREATE, - dmi, MAINTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("create in CandidateDB failed: err code(%d) ", - result_code); - DELETE_IF_NOT_NULL(ckey); - DELETE_IF_NOT_NULL(ckval); + /* Get the instance count from vtn ctrl tbl from candidate db*/ + result_code = vtnmgr->GetChildConfigKey(ckv_cand, ckval); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - - result_code = vtnmgr->GetControllerDomainSpan(ckey, UPLL_DT_IMPORT, dmi); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", result_code); - DELETE_IF_NOT_NULL(ckey); - continue; - } - } - ConfigKeyVal *tmp_ckey = ckey; - while (ckey != NULL) { - ConfigKeyVal *ctrlckv = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ckey, ctrlr_dom); - GET_USER_DATA_FLAGS(ckval, flag); - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, - ctrlr_dom.domain); - - UPLL_LOG_DEBUG("flag (%d)", flag); - - result_code = GetChildConfigKey(ctrlckv, ckval); + result_code = vtnmgr->GetInstanceCount(ckv_cand, + NULL, + UPLL_DT_CANDIDATE, + &cand_instance_count, + dmi, + CTRLRTBL); + DELETE_IF_NOT_NULL(ckv_cand); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); - DELETE_IF_NOT_NULL(ckval); - DELETE_IF_NOT_NULL(ckey); + UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); return result_code; } - val_policingmap_t *val2 = reinterpret_cast(GetVal(ckval)); - val_vtnpolicingmap_ctrl *policingmap_ctrlr_val = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtnpolicingmap_ctrl))); - uuu::upll_strncpy(policingmap_ctrlr_val->policer_name, val2->policer_name, - (kMaxLenPolicingProfileName + 1)); - - policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; - UPLL_LOG_DEBUG("policer_name (%s) valid (%d)", policingmap_ctrlr_val->policer_name, - policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM]); - SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, ctrlr_dom); - SET_USER_DATA_FLAGS(ctrlckv, flag); - UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); - ctrlckv->SetCfgVal(new ConfigVal(IpctSt::kIpcInvalidStNum, policingmap_ctrlr_val)); - UPLL_LOG_DEBUG("flag (%d)", flag); - - // Create/Update/Delete a record in CANDIDATE DB - result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, UNC_OP_CREATE, dmi, CTRLRTBL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Err while inserting in ctrlr table for candidateDb(%d)", - result_code); - DELETE_IF_NOT_NULL(ckey); - DELETE_IF_NOT_NULL(ckval); - DELETE_IF_NOT_NULL(ctrlckv); - return result_code; + UPLL_LOG_TRACE("Import count (%d) Candidate count (%d)", + imp_instance_count, cand_instance_count); + if (imp_instance_count == cand_instance_count) { + /* If imported ctrlr's VTN not exists in Candidate, + * then check the existence + of imported ctrlr's policingmap + 1)If the imported ctrlr VTN does not have policingmap, then continue + with the next VTN in imported db + 2)If the imported ctrlr VTN has policingmap, + then merge this policingmap + into candidate db + */ + UPLL_LOG_DEBUG("VTN not exists in candidate(%d)", result_code); + + /* Check the imported ctrl VTN's policingmap existence in Import db */ + key_vtn_t *vtn_ikey = reinterpret_cast(ckval->get_key()); + key_vtn_t *vtn_pm_imkey = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + uuu::upll_strncpy(vtn_pm_imkey->vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + pm_imkey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + vtn_pm_imkey, NULL); + + DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + upll_rc_t result_import = ReadConfigDB(pm_imkey, UPLL_DT_IMPORT, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_import != UPLL_RC_SUCCESS && + result_import != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + if (result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + /* If the imported ctrlr VTN does not have policingmap, then continue + * with the next VTN in imported db */ + UPLL_LOG_DEBUG("policingmap not exists in import(%d)", result_code); + DELETE_IF_NOT_NULL(pm_imkey); + ckval = ckval->get_next_cfg_key_val(); + continue; + } else if (result_import == UPLL_RC_SUCCESS) { + /* If imported ctrlr VTN has policingmap, then merge this policingmap + * into candidate db */ + + /* Create the policingmap in main tbl in candidate database */ + result_code = UpdateConfigDB(pm_imkey, UPLL_DT_CANDIDATE, UNC_OP_CREATE, + dmi, MAINTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("create in CandidateDB failed (%d) ", result_code); + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + // Get the VTN across domain + result_code = vtnmgr->GetChildConfigKey(ckval_dom, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + key_vtn_t *vtn_okey = reinterpret_cast + (ckval_dom->get_key()); + key_vtn_t *vtn_ikey = reinterpret_cast + (pm_imkey->get_key()); + uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + + result_code = vtnmgr->GetControllerDomainSpan(ckval_dom, + UPLL_DT_IMPORT, dmi); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", + result_code); + DELETE_IF_NOT_NULL(pm_imkey); + ckval = ckval->get_next_cfg_key_val(); + continue; + } + } + + ConfigKeyVal *tmp_ckval_dom = ckval_dom; + while (ckval_dom != NULL) { + /* Create the record in vtn policingmap ctrlr table with as per the + * ctrlr and domain */ + ConfigKeyVal *ctrlckv = NULL; + GET_USER_DATA_CTRLR_DOMAIN(ckval_dom, ctrlr_dom); + GET_USER_DATA_FLAGS(pm_imkey, flag); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + UPLL_LOG_DEBUG("flag (%d)", flag); + + result_code = GetChildConfigKey(ctrlckv, pm_imkey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); + DELETE_IF_NOT_NULL(tmp_ckval_dom); + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + val_policingmap_t *val2 = reinterpret_cast + (GetVal(pm_imkey)); + val_vtnpolicingmap_ctrl *policingmap_ctrlr_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtnpolicingmap_ctrl))); + uuu::upll_strncpy(policingmap_ctrlr_val->policer_name, + val2->policer_name, + (kMaxLenPolicingProfileName + 1)); + + policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID; + UPLL_LOG_DEBUG("policer_name (%s) valid (%d)", + policingmap_ctrlr_val->policer_name, + policingmap_ctrlr_val-> + valid[UPLL_IDX_POLICERNAME_PM]); + SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, ctrlr_dom); + SET_USER_DATA_FLAGS(ctrlckv, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + ctrlckv->SetCfgVal(new ConfigVal(IpctSt::kIpcInvalidStNum, + policingmap_ctrlr_val)); + + /* Create a record in ctrlr tbl in candidate db */ + result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, dmi, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err while inserting in ctrlr table (%d)", + result_code); + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(tmp_ckval_dom); + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + DELETE_IF_NOT_NULL(ctrlckv); + ckval_dom = ckval_dom->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(tmp_ckval_dom); + } + DELETE_IF_NOT_NULL(pm_imkey); + } else if (imp_instance_count < cand_instance_count) { + /* If imported ctrlr's VTN exists in Candidate, then check the existence + of imported ctrlr VTN's policingmap and UNC VTN's policingmap + 1)If the imported ctrlr VTN does not have policingmap, then apply the + UNC VTN's policingmap to imported ctrl VTN also in candidate db + 2)If the imported ctrlr VTN has policingmap, + then return MERGE_CONFLICT + error, because of PFC limitation + */ + UPLL_LOG_DEBUG("VTN exists in candidate(%d)", result_code); + + /* Check the policingmap existence in Import db */ + key_vtn_t *vtn_ikey = reinterpret_cast(ckval->get_key()); + key_vtn_t *vtn_pm_imkey = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + uuu::upll_strncpy(vtn_pm_imkey->vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + pm_imkey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtn_pm_imkey, NULL); + + DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag }; + upll_rc_t result_import = ReadConfigDB(pm_imkey, UPLL_DT_IMPORT, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_import != UPLL_RC_SUCCESS && + result_import != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + /* Check the policingmap existence in candidate db */ + key_vtn_t *vtn_pm_cdkey = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + uuu::upll_strncpy(vtn_pm_cdkey->vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + pm_cdkey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtn_pm_cdkey, NULL); + + upll_rc_t result_cand = ReadConfigDB(pm_cdkey, UPLL_DT_CANDIDATE, + UNC_OP_READ, dbop1, dmi, MAINTBL); + if (result_cand != UPLL_RC_SUCCESS && + result_cand != UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + if ((result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE || + result_import == UPLL_RC_SUCCESS) && + result_cand == UPLL_RC_SUCCESS) { + /*1)If the imported ctrlr VTN does not have policingmap, then apply the + UNC VTN's policingmap to imported ctrl VTN also in candidate db + 2)If the imported ctrlr VTN has policingmap, + then return MERGE_CONFLICT + error, because of PFC limitation */ + + /* The below code can be uncommented, once the PFC limitation issue got + solved + PFC Limitation : + Simultaneous execution of policing-profile deletion and policing-map + modification + If imported ctrl has policingmap, + * Ignore this policing map and decrement the + * refcount of PPCTRL tbl, + * so that this impoted ctrl's policing profile and matched flowlist + * will not applied into imported ctrl during AUDIT + if (result_import == UPLL_RC_SUCCESS) { + result_code = DecRefCountInPPCtrlTbl(pm_imkey, dmi); + DELETE_IF_NOT_NULL(pm_imkey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err in DecRefCountInPPCtrl (%d)", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + } + UPLL_LOG_DEBUG("DecRefCountInPMCtrlTbl success (%d)", result_code); + */ + + /* If imported ctrl also has policingmap, + * Return MERGE_CONFLICT, because limitation on PFC */ + if (result_import == UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("IM & CAND has PM, return MERGE CONFLICT, PFC limit"); + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return UPLL_RC_ERR_MERGE_CONFLICT; + } + + DELETE_IF_NOT_NULL(pm_imkey); + result_code = vtnmgr->GetChildConfigKey(ckval_dom, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + key_vtn_t *vtn_okey = reinterpret_cast + (ckval_dom->get_key()); + key_vtn *vtn_ikey = reinterpret_cast(pm_cdkey->get_key()); + uuu::upll_strncpy(vtn_okey->vtn_name, vtn_ikey->vtn_name, + kMaxLenVtnName+1); + + result_code = vtnmgr->GetControllerDomainSpan(ckval_dom, + UPLL_DT_IMPORT, dmi); + if (result_code != UPLL_RC_SUCCESS) { + if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { + UPLL_LOG_DEBUG("GetControllerSpan no instance/error (%d)", + result_code); + DELETE_IF_NOT_NULL(pm_cdkey); + ckval = ckval->get_next_cfg_key_val(); + continue; + } + } + PolicingProfileMoMgr *pp_mgr = + reinterpret_cast + (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE))); + + ConfigKeyVal *tmp_ckval_dom = ckval_dom; + while (ckval_dom != NULL) { + // Create the entry in ctrlr table with as per the ctrlr and domain + ConfigKeyVal *ctrlckv = NULL; + GET_USER_DATA_CTRLR_DOMAIN(ckval_dom, ctrlr_dom); + GET_USER_DATA_FLAGS(pm_cdkey, flag); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, + ctrlr_dom.domain); + UPLL_LOG_DEBUG("flag (%d)", flag); + + result_code = GetChildConfigKey(ctrlckv, pm_cdkey); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("GetChildConfigKey ckval NULL"); + DELETE_IF_NOT_NULL(tmp_ckval_dom); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + val_policingmap_t *val2 = reinterpret_cast + (GetVal(pm_cdkey)); + val_vtnpolicingmap_ctrl *policingmap_ctrlr_val = + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtnpolicingmap_ctrl))); + uuu::upll_strncpy(policingmap_ctrlr_val->policer_name, + val2->policer_name, + (kMaxLenPolicingProfileName + 1)); + + policingmap_ctrlr_val->valid[UPLL_IDX_POLICERNAME_PM] = + UNC_VF_VALID; + + GET_USER_DATA_CTRLR(ckval_dom, ctrlr_id); + + result_code = pp_mgr->PolicingProfileCtrlrTblOper( + reinterpret_cast(val2->policer_name), + reinterpret_cast(ctrlr_id), dmi, UNC_OP_CREATE, + UPLL_DT_CANDIDATE); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Error in PolicingProfileCtrlrTblOper"); + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(tmp_ckval_dom); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + + UPLL_LOG_DEBUG("policer_name (%s) valid (%d)", + policingmap_ctrlr_val->policer_name, + policingmap_ctrlr_val-> + valid[UPLL_IDX_POLICERNAME_PM]); + SET_USER_DATA_CTRLR_DOMAIN(ctrlckv, ctrlr_dom); + SET_USER_DATA_FLAGS(ctrlckv, flag); + UPLL_LOG_DEBUG("flag (%d)", flag); + ctrlckv->SetCfgVal(new ConfigVal(IpctSt::kIpcInvalidStNum, + policingmap_ctrlr_val)); + + // Create a record in CANDIDATE DB + result_code = UpdateConfigDB(ctrlckv, UPLL_DT_CANDIDATE, + UNC_OP_CREATE, dmi, CTRLRTBL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err while inserting in ctrlr table (%d)", + result_code); + DELETE_IF_NOT_NULL(ctrlckv); + DELETE_IF_NOT_NULL(tmp_ckval_dom); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + DELETE_IF_NOT_NULL(ctrlckv); + ckval_dom = ckval_dom->get_next_cfg_key_val(); + } + DELETE_IF_NOT_NULL(tmp_ckval_dom); + DELETE_IF_NOT_NULL(pm_cdkey); + } else if (result_import == UPLL_RC_SUCCESS && + result_cand == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + UPLL_LOG_DEBUG("policingmap not exists in candidate"); + /* The below code can be uncommented, once the PFC limitation issue + got solved + PFC Limitation : + Simultaneous execution of policing-profile deletion and policing-map + modification + If imported ctrl has policingmap and UNC doesn't have policingmap, + Ignore this policing map and decrement the refcount of PPCTRL tbl, + so that this impoted ctrl's policing profile and matched flowlist + will not applied into imported ctrl during AUDIT + result_code = DecRefCountInPPCtrlTbl(pm_imkey, dmi); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(pm_imkey); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Err in DecRefCountInPPCtrl (%d)", result_code); + DELETE_IF_NOT_NULL(tmp_ckval); + return result_code; + } + UPLL_LOG_DEBUG("DecRefCountInFLCtrlTbl success (%d)", result_code); + */ + /* If imported ctrl has policingmap and candidate does not + * have policingmap, + * Return MERGE_CONFLICT, because limitation on PFC */ + UPLL_LOG_ERROR("IMPORT DB has PM, ret MERGE CONFLICT, PFC limit"); + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(pm_cdkey); + DELETE_IF_NOT_NULL(tmp_ckval); + return UPLL_RC_ERR_MERGE_CONFLICT; + } else if (result_import == UPLL_RC_ERR_NO_SUCH_INSTANCE && + result_cand == UPLL_RC_ERR_NO_SUCH_INSTANCE) { + DELETE_IF_NOT_NULL(pm_imkey); + DELETE_IF_NOT_NULL(pm_cdkey); + } } - DELETE_IF_NOT_NULL(ctrlckv); - ckey = ckey->get_next_cfg_key_val(); + ckval = ckval->get_next_cfg_key_val(); } - DELETE_IF_NOT_NULL(tmp_ckey); - ckval = ckval->get_next_cfg_key_val(); -} - DELETE_IF_NOT_NULL(tmp_ckval); return UPLL_RC_SUCCESS; } +/* The below function can be uncommented, once the PFC limitation issue + got solved + PFC Limitation : + Simultaneous execution of policing-profile deletion and policing-map + modification + upll_rc_t VtnPolicingMapMoMgr::DecRefCountInPPCtrlTbl( + ConfigKeyVal *pm_imkey, DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + ConfigKeyVal *ckval_dom = NULL; + uint8_t *ctrlr_id = NULL; + + VtnMoMgr *vtnmgr = + static_cast((const_cast + (GetMoManager(UNC_KT_VTN)))); + + PolicingProfileMoMgr *pp_mgr = + reinterpret_cast + (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE))); + + if ((NULL == vtnmgr) || (NULL == pp_mgr)) { + UPLL_LOG_DEBUG("GetChildConfigKey ckval_dom NULL"); + return result_code; + } + +// Get the VTN associated ctrl name +result_code = vtnmgr->GetChildConfigKey(ckval_dom, NULL); +if (UPLL_RC_SUCCESS != result_code) { +UPLL_LOG_DEBUG("GetChildConfigKey ckval_dom NULL"); +return result_code; +} + +key_vtn_t *vtn_okey = reinterpret_cast +(ckval_dom->get_key()); +key_vtn_t *vtn_ikey = reinterpret_cast +(pm_imkey->get_key()); +uuu::upll_strncpy(vtn_okey->vtn_name, +vtn_ikey->vtn_name, kMaxLenVtnName+1); +DbSubOp dbop2 = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr}; +result_code = vtnmgr->ReadConfigDB(ckval_dom, UPLL_DT_IMPORT, +UNC_OP_READ, dbop2, dmi, CTRLRTBL); +if (result_code != UPLL_RC_SUCCESS) { +UPLL_LOG_DEBUG("VTN ctrltbl read failure (%d)", result_code); +DELETE_IF_NOT_NULL(ckval_dom); +return result_code; +} + +GET_USER_DATA_CTRLR(ckval_dom, ctrlr_id); +UPLL_LOG_DEBUG("flow-filter not exists in candidate"); + +val_policingmap_t *vtn_pm_val = reinterpret_cast +(GetVal(pm_imkey)); + +result_code = pp_mgr->PolicingProfileCtrlrTblOper( +reinterpret_cast(vtn_pm_val->policer_name), +reinterpret_cast(ctrlr_id), dmi, UNC_OP_DELETE, +UPLL_DT_CANDIDATE); + +if (result_code != UPLL_RC_SUCCESS) { +UPLL_LOG_DEBUG("AddFlowListToController failed err code(%d)", +result_code); +DELETE_IF_NOT_NULL(ckval_dom); +return result_code; +} +DELETE_IF_NOT_NULL(ckval_dom); +return UPLL_RC_SUCCESS; +}*/ + upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t *ctrlr_id) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code; ConfigKeyVal *unc_key = NULL; UPLL_LOG_TRACE("%s GetRenamedUncKey vtnpm start", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); if (NULL == ctrlr_key || NULL == dmi || ctrlr_id[0] == '\0') { UPLL_LOG_DEBUG("GetRenamedUncKey failed. Insufficient input parameters."); return UPLL_RC_ERR_GENERIC; @@ -2335,13 +2591,13 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(rename_vtn->new_name, ctrlr_vtn_key->vtn_name, - (kMaxLenVtnName + 1)); + (kMaxLenVtnName + 1)); rename_vtn->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VTN))); if (NULL == mgr) { UPLL_LOG_DEBUG("mgr NULL"); free(rename_vtn); @@ -2368,7 +2624,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, SET_USER_DATA_CTRLR(unc_key, ctrlr_id); result_code = mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -2382,10 +2638,10 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, key_vtn *vtn_key = reinterpret_cast(unc_key->get_key()); if (vtn_key) { if (strcmp(reinterpret_cast(ctrlr_vtn_key->vtn_name), - reinterpret_cast(vtn_key->vtn_name))) { + reinterpret_cast(vtn_key->vtn_name))) { uuu::upll_strncpy(ctrlr_vtn_key->vtn_name, - vtn_key->vtn_name, - (kMaxLenVtnName + 1)); + vtn_key->vtn_name, + (kMaxLenVtnName + 1)); } } } @@ -2394,21 +2650,21 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, DELETE_IF_NOT_NULL(unc_key); val_rename_policingprofile *rename_policingprofile = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_rename_policingprofile))); if (!rename_policingprofile) { UPLL_LOG_DEBUG("rename_policingprofile NULL"); return UPLL_RC_ERR_GENERIC; } val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(ctrlr_key)); + reinterpret_cast(GetVal(ctrlr_key)); if (!val_policingmap) { free(rename_policingprofile); return UPLL_RC_SUCCESS; } memset(rename_policingprofile->policingprofile_newname, '\0', - sizeof(rename_policingprofile->policingprofile_newname)); + sizeof(rename_policingprofile->policingprofile_newname)); uuu::upll_strncpy( rename_policingprofile->policingprofile_newname, val_policingmap->policer_name, @@ -2417,8 +2673,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, rename_policingprofile->valid[UPLL_IDX_RENAME_PROFILE_RPP] = UNC_VF_VALID; MoMgrImpl *pp_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (NULL == pp_mgr) { UPLL_LOG_DEBUG("mgr NULL"); if (rename_policingprofile) free(rename_policingprofile); @@ -2443,7 +2699,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, unc_key->SetCfgVal(p_config_val); SET_USER_DATA_CTRLR(unc_key, ctrlr_id); result_code = pp_mgr->ReadConfigDB(unc_key, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if ((UPLL_RC_SUCCESS != result_code) && (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); @@ -2454,14 +2710,14 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedUncKey(ConfigKeyVal *ctrlr_key, if (result_code == UPLL_RC_SUCCESS) { key_policingprofile_t *key_policingprofile = - reinterpret_cast(unc_key->get_key()); + reinterpret_cast(unc_key->get_key()); uuu::upll_strncpy( val_policingmap->policer_name, key_policingprofile->policingprofile_name, (kMaxLenPolicingProfileName + 1)); } UPLL_LOG_TRACE("%s GetRenamedUncKey vtnpm end", - ctrlr_key->ToStrAll().c_str()); + ctrlr_key->ToStrAll().c_str()); DELETE_IF_NOT_NULL(unc_key); pp_mgr = NULL; return UPLL_RC_SUCCESS; @@ -2477,7 +2733,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( upll_rc_t result_code = UPLL_RC_SUCCESS; DalResultCode dal_result = uud::kDalRcSuccess; ConfigKeyVal *req = NULL, *nreq = NULL, *ck_main = NULL; - controller_domain ctrlr_dom; // UNINIT + controller_domain ctrlr_dom; // UNINIT ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; DalCursor *dal_cursor_handle = NULL; @@ -2510,6 +2766,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( if (result_code != UPLL_RC_SUCCESS) break; ck_main = NULL; + bool driver_resp = false; if ( (op == UNC_OP_CREATE) || (op == UNC_OP_DELETE) ) { result_code = DupConfigKeyVal(ck_main, req, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { @@ -2532,14 +2789,19 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( } UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - result_code = TxUpdateProcess(ck_main, &resp, - op, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { + result_code = TxUpdateProcess(ck_main, + &resp, + op, + dmi, + &ctrlr_dom, + affected_ctrlr_set, + &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdateProcess Returns error %d", result_code); upll_keytype_datatype_t dt_type = (UNC_OP_DELETE == op)? UPLL_DT_RUNNING:UPLL_DT_CANDIDATE; upll_rc_t local_rc = GetRenamedUncKey(resp.ckv_data, dt_type, dmi, - ctrlr_dom.ctrlr); + ctrlr_dom.ctrlr); if (UPLL_RC_SUCCESS != local_rc && UPLL_RC_ERR_NO_SUCH_INSTANCE != local_rc) { UPLL_LOG_DEBUG("GetRenamedUncKey failed %d", local_rc); @@ -2548,12 +2810,16 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( result_code = UPLL_RC_ERR_GENERIC; break; } + SET_USER_DATA_CTRLR(resp.ckv_data, ctrlr_dom.ctrlr); *err_ckv = resp.ckv_data; DELETE_IF_NOT_NULL(ck_main); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(resp.ckv_data); + break; } DELETE_IF_NOT_NULL(resp.ckv_data); - affected_ctrlr_set->insert((const char *)ctrlr_dom.ctrlr); } else if (op == UNC_OP_UPDATE) { ConfigKeyVal *ck_ctrlr = NULL; result_code = DupConfigKeyVal(ck_main, req, MAINTBL); @@ -2589,8 +2855,9 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( DELETE_IF_NOT_NULL(ck_ctrlr); continue; } - for (ConfigKeyVal *tmp = ck_ctrlr; tmp != NULL; + for (ConfigKeyVal *tmp = ck_ctrlr; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { + driver_resp = false; GET_USER_DATA_CTRLR_DOMAIN(tmp, ctrlr_dom); if (ctrlr_dom.ctrlr == NULL || (ctrlr_dom.domain == NULL)) { UPLL_LOG_DEBUG("Invalid controller"); @@ -2600,7 +2867,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( DELETE_IF_NOT_NULL(nreq); DELETE_IF_NOT_NULL(ck_main); DELETE_IF_NOT_NULL(ck_ctrlr); - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } ConfigKeyVal *temp_ck_main = NULL; result_code = DupConfigKeyVal(temp_ck_main, ck_main, MAINTBL); @@ -2614,20 +2881,25 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( DELETE_IF_NOT_NULL(ck_main); return result_code; } - result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { + result_code = TxUpdateProcess(ck_main, &resp, op, dmi, &ctrlr_dom, + affected_ctrlr_set, &driver_resp); + if (result_code != UPLL_RC_SUCCESS && driver_resp) { UPLL_LOG_DEBUG("TxUpdate Process returns with %d", result_code); *err_ckv = temp_ck_main; DELETE_IF_NOT_NULL(resp.ckv_data); DELETE_IF_NOT_NULL(ck_main); DELETE_IF_NOT_NULL(ck_ctrlr); break; + } else if (result_code != UPLL_RC_SUCCESS) { + DELETE_IF_NOT_NULL(ck_main); + DELETE_IF_NOT_NULL(ck_ctrlr); + break; } DELETE_IF_NOT_NULL(temp_ck_main); - affected_ctrlr_set->insert(reinterpret_cast - (ctrlr_dom.ctrlr)); } DELETE_IF_NOT_NULL(ck_ctrlr); + if (driver_resp || result_code != UPLL_RC_SUCCESS) + break; } DELETE_IF_NOT_NULL(ck_main); } @@ -2643,10 +2915,12 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateController( } upll_rc_t VtnPolicingMapMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, - IpcResponse *ipc_resp, - unc_keytype_operation_t op, - DalDmlIntf *dmi, - controller_domain *ctrlr_dom) { + IpcResponse *ipc_resp, + unc_keytype_operation_t op, + DalDmlIntf *dmi, + controller_domain *ctrlr_dom, + set *affected_ctrlr_set, + bool *driver_resp) { UPLL_FUNC_TRACE; upll_rc_t result_code; /* read from main table */ @@ -2663,7 +2937,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("%s Policingprofile read failed %d", - dup_ckmain->ToStrAll().c_str(), result_code); + dup_ckmain->ToStrAll().c_str(), result_code); DELETE_IF_NOT_NULL(dup_ckmain); return result_code; } @@ -2671,10 +2945,10 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, /* Get renamed key if key is renamed */ if (op == UNC_OP_DELETE) { result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_RUNNING, - dmi, ctrlr_dom); + dmi, ctrlr_dom); } else { result_code = GetRenamedControllerKey(dup_ckmain, UPLL_DT_CANDIDATE, - dmi, ctrlr_dom); + dmi, ctrlr_dom); } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetRenamedControllerKey failed %d", result_code); @@ -2685,7 +2959,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, result_code = SendIpcReq(ipc_resp->header.clnt_sess_id, ipc_resp->header.config_id, op, UPLL_DT_CANDIDATE, dup_ckmain, ctrlr_dom, ipc_resp); - if (result_code == UPLL_RC_ERR_RESOURCE_DISCONNECTED) { + if (result_code == UPLL_RC_ERR_CTR_DISCONNECTED) { UPLL_LOG_DEBUG("Controller disconnected"); if (op == UNC_OP_CREATE) DELETE_IF_NOT_NULL(dup_ckmain); @@ -2693,10 +2967,14 @@ upll_rc_t VtnPolicingMapMoMgr::TxUpdateProcess(ConfigKeyVal *ck_main, } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("IpcSend failed %d", result_code); + *driver_resp = true; } + affected_ctrlr_set->insert(reinterpret_cast + (ctrlr_dom->ctrlr)); if ((op == UNC_OP_CREATE)) { DELETE_IF_NOT_NULL(dup_ckmain); } + UPLL_LOG_TRACE("Driver response received %d", *driver_resp); return result_code; } @@ -2705,7 +2983,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetControllerDomainSpan( UPLL_FUNC_TRACE; upll_rc_t result_code; DbSubOp dbop = { kOpReadExist, kOpMatchNone, - kOpInOutCtrlr|kOpInOutDomain}; + kOpInOutCtrlr|kOpInOutDomain}; result_code = ReadConfigDB(ikey, dt_type, UNC_OP_READ, dbop, dmi, CTRLRTBL); UPLL_LOG_DEBUG("GetControllerDomainSpan successful:- %d", result_code); @@ -2713,9 +2991,12 @@ upll_rc_t VtnPolicingMapMoMgr::GetControllerDomainSpan( } -upll_rc_t VtnPolicingMapMoMgr::UpdateMainTbl(ConfigKeyVal *vtn_key, - unc_keytype_operation_t op, uint32_t driver_result, - ConfigKeyVal *nreq, DalDmlIntf *dmi) { +upll_rc_t VtnPolicingMapMoMgr::UpdateMainTbl( + ConfigKeyVal *vtn_key, + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *nreq, + DalDmlIntf *dmi) { ConfigKeyVal *ck_vtn = NULL; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingmap_t *pm_val = NULL; @@ -2756,8 +3037,8 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateMainTbl(ConfigKeyVal *vtn_key, } CompareValidValue(pmval, npmval, false); pm_val->cs_row_status = - reinterpret_cast - (GetVal(nreq))->cs_row_status; + reinterpret_cast + (GetVal(nreq))->cs_row_status; break; case UNC_OP_DELETE: break; @@ -2781,30 +3062,18 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedControllerKey( UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; - uint8_t rename = 0; if (NULL == ikey || NULL == dmi) { UPLL_LOG_DEBUG("Insufficient input resources"); return UPLL_RC_ERR_GENERIC; } - - result_code = IsRenamed(ikey, dt_type, dmi, rename); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("IsRenamed failed (%d)", result_code); - return result_code; - } - - if (rename == 0) { - UPLL_LOG_DEBUG("Name not renamed"); - return UPLL_RC_SUCCESS; - } UPLL_LOG_TRACE("Start .. InputConfigKeyVal %s", ikey->ToStrAll().c_str()); if (UNC_KT_VTN_POLICINGMAP_CONTROLLER == ikey->get_key_type()) { - if (rename & VTN_RENAME) { UPLL_LOG_DEBUG("vtn_pm_ctrl vtn name renamed"); - MoMgrImpl *vtn_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + MoMgrImpl *vtn_mgr = reinterpret_cast + (const_cast + (GetMoManager(UNC_KT_VTN))); if (NULL == vtn_mgr) { UPLL_LOG_DEBUG("mgr NULL"); return UPLL_RC_ERR_GENERIC; @@ -2817,7 +3086,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedControllerKey( } if (!okey) return UPLL_RC_ERR_GENERIC; - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; + DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; if (ctrlr_dom) { SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); @@ -2828,21 +3098,21 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedControllerKey( } UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + ctrlr_dom->domain); uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name); + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name); result_code = vtn_mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); + RENAMETBL); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("ReadConfigDB no instance"); @@ -2855,7 +3125,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedControllerKey( } val_rename_vtn *rename_val = - reinterpret_cast(GetVal(okey)); + reinterpret_cast(GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("rename_val NULL"); DELETE_IF_NOT_NULL(okey); @@ -2863,76 +3133,72 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedControllerKey( } uuu::upll_strncpy( - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - rename_val->new_name, - kMaxLenVtnName + 1); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + rename_val->new_name, + kMaxLenVtnName + 1); UPLL_LOG_DEBUG("renamed vtn_pm_ctrl vtn name (%s) (%s)", - reinterpret_cast - (ikey->get_key())->vtn_key.vtn_name, - rename_val->new_name); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + rename_val->new_name); - SET_USER_DATA_FLAGS(ikey, rename); DELETE_IF_NOT_NULL(okey); vtn_mgr = NULL; - return UPLL_RC_SUCCESS; + return UPLL_RC_SUCCESS; } - } - if (rename & VTN_RENAME) { - UPLL_LOG_DEBUG("vtn name renamed"); - MoMgrImpl *vtn_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); - if (NULL == vtn_mgr) { - UPLL_LOG_DEBUG("mgr NULL"); - return UPLL_RC_ERR_GENERIC; - } - result_code = vtn_mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); - return result_code; - } - if (!okey) return UPLL_RC_ERR_GENERIC; + // Getting controller name for UNC_KT_VTN_POLICINGMAP + MoMgrImpl *vtn_mgr = reinterpret_cast + (const_cast + (GetMoManager(UNC_KT_VTN))); + if (NULL == vtn_mgr) { + UPLL_LOG_DEBUG("mgr NULL"); + return UPLL_RC_ERR_GENERIC; + } - DbSubOp dbop = { kOpReadSingle, kOpMatchCtrlr | kOpMatchDomain, kOpInOutFlag }; + result_code = vtn_mgr->GetChildConfigKey(okey, NULL); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetChildConfigKey fail (%d)", result_code); + return result_code; + } - if (ctrlr_dom) { - SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); - } else { - UPLL_LOG_DEBUG("ctrlr_dom null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } + DbSubOp dbop = { kOpReadSingle, + kOpMatchCtrlr | kOpMatchDomain, + kOpInOutFlag }; - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + if (ctrlr_dom) { + SET_USER_DATA_CTRLR_DOMAIN(okey, *ctrlr_dom); + } else { + UPLL_LOG_DEBUG("ctrlr_dom null"); + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_ERR_GENERIC; + } - uuu::upll_strncpy( - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast - (ikey->get_key())->vtn_name, - (kMaxLenVtnName + 1)); + UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, + ctrlr_dom->domain); - UPLL_LOG_DEBUG("vtn name (%s) (%s)", - reinterpret_cast(okey->get_key())->vtn_name, - reinterpret_cast(ikey->get_key())->vtn_name); + uuu::upll_strncpy( + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast + (ikey->get_key())->vtn_name, + (kMaxLenVtnName + 1)); - result_code = vtn_mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - RENAMETBL); - if (UPLL_RC_SUCCESS != result_code) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("GetRenamedControllerKey ReadConfigDB error"); - DELETE_IF_NOT_NULL(okey); - return result_code; - } + UPLL_LOG_DEBUG("vtn name (%s) (%s)", + reinterpret_cast(okey->get_key())->vtn_name, + reinterpret_cast(ikey->get_key())->vtn_name); + result_code = vtn_mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, + RENAMETBL); + if ((UPLL_RC_SUCCESS != result_code) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("GetRenamedControllerKey ReadConfigDB error"); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { val_rename_vtn *rename_val = - reinterpret_cast(GetVal(okey)); + reinterpret_cast(GetVal(okey)); if (!rename_val) { UPLL_LOG_DEBUG("rename_val NULL"); DELETE_IF_NOT_NULL(okey); @@ -2940,75 +3206,60 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedControllerKey( } uuu::upll_strncpy( - reinterpret_cast(ikey->get_key())->vtn_name, - rename_val->new_name, - kMaxLenVtnName + 1); - - DELETE_IF_NOT_NULL(okey); - vtn_mgr = NULL; + reinterpret_cast(ikey->get_key())->vtn_name, + rename_val->new_name, + kMaxLenVtnName + 1); + } + DELETE_IF_NOT_NULL(okey); + vtn_mgr = NULL; + UPLL_LOG_DEBUG("vtn name renamed"); + MoMgrImpl *pp_mgr = reinterpret_cast + (const_cast + (GetMoManager(UNC_KT_POLICING_PROFILE))); + if (NULL == pp_mgr) { + UPLL_LOG_DEBUG("mgr NULL"); + return UPLL_RC_ERR_GENERIC; } - if (rename & POLICINGPROFILE_RENAME) { - UPLL_LOG_DEBUG("vtn name renamed"); - MoMgrImpl *pp_mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_POLICING_PROFILE))); - if (NULL == pp_mgr) { - UPLL_LOG_DEBUG("mgr NULL"); - return UPLL_RC_ERR_GENERIC; - } - - result_code = pp_mgr->GetChildConfigKey(okey, NULL); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" GetRenamedControllerKey failed. GetChildConfigKey failed" - "to create policingprofile ConfigKey - %d", - result_code); - return result_code; - } - if (!okey) return UPLL_RC_ERR_GENERIC; - - if (NULL != ctrlr_dom) { - SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - } else { - UPLL_LOG_DEBUG("ctrlr null"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_ERR_GENERIC; - } - - UPLL_LOG_DEBUG("ctrlr : %s; domain : %s", ctrlr_dom->ctrlr, - ctrlr_dom->domain); + result_code = pp_mgr->GetChildConfigKey(okey, NULL); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG(" GetRenamedControllerKey failed. GetChildConfigKey failed" + "to create policingprofile ConfigKey - %d", + result_code); + return result_code; + } + SET_USER_DATA_CTRLR(okey, ctrlr_dom->ctrlr); - val_policingmap_t *val_policingmap = + val_policingmap_t *val_policingmap = reinterpret_cast(GetVal(ikey)); - if (!val_policingmap) - return UPLL_RC_SUCCESS; - - key_policingprofile_t *key_policingprofile = - reinterpret_cast(okey->get_key()); + if (!val_policingmap) { + DELETE_IF_NOT_NULL(okey); + return UPLL_RC_SUCCESS; + } - uuu::upll_strncpy(key_policingprofile->policingprofile_name, - val_policingmap->policer_name, - (kMaxLenPolicingProfileName + 1)); + key_policingprofile_t *key_policingprofile = + reinterpret_cast(okey->get_key()); - UPLL_LOG_DEBUG("policer name (%s) (%s)", val_policingmap->policer_name, - key_policingprofile->policingprofile_name); + uuu::upll_strncpy(key_policingprofile->policingprofile_name, + val_policingmap->policer_name, + (kMaxLenPolicingProfileName + 1)); - DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; - result_code = pp_mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop1, dmi, - RENAMETBL); - if (result_code != UPLL_RC_SUCCESS) { - if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - UPLL_LOG_DEBUG("ReadConfigDB no instance"); - DELETE_IF_NOT_NULL(okey); - return UPLL_RC_SUCCESS; - } - UPLL_LOG_DEBUG("ReadConfigDB fail (%d)", result_code); - DELETE_IF_NOT_NULL(okey); - return result_code; - } + UPLL_LOG_DEBUG("policer name (%s) (%s)", val_policingmap->policer_name, + key_policingprofile->policingprofile_name); + DbSubOp dbop1 = { kOpReadSingle, kOpMatchCtrlr, kOpInOutFlag }; + result_code = pp_mgr->ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop1, dmi, + RENAMETBL); + if ((result_code != UPLL_RC_SUCCESS) && + (UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code)) { + UPLL_LOG_DEBUG("ReadConfigDB fail (%d)", result_code); + DELETE_IF_NOT_NULL(okey); + return result_code; + } + if (UPLL_RC_SUCCESS == result_code) { val_rename_policingprofile_t *rename_policingprofile = - reinterpret_cast(GetVal(okey)); + reinterpret_cast(GetVal(okey)); if (!rename_policingprofile) { DELETE_IF_NOT_NULL(okey); UPLL_LOG_DEBUG("rename_policingprofile NULL"); @@ -3022,15 +3273,13 @@ upll_rc_t VtnPolicingMapMoMgr::GetRenamedControllerKey( (kMaxLenPolicingProfileName + 1)); UPLL_LOG_DEBUG("policer rename (%s) (%s)", - reinterpret_cast(val_policingmap->policer_name), - reinterpret_cast - (rename_policingprofile->policingprofile_newname)); - - pp_mgr = NULL; + reinterpret_cast(val_policingmap->policer_name), + reinterpret_cast + (rename_policingprofile->policingprofile_newname)); } + pp_mgr = NULL; DELETE_IF_NOT_NULL(okey); - UPLL_LOG_TRACE("End .. Input ConfigKeyVal %s", ikey->ToStrAll().c_str()); return UPLL_RC_SUCCESS; } @@ -3054,33 +3303,32 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( CtrlrCommitStatusList::iterator ccsListItr; CtrlrCommitStatus *ccStatusPtr; - if ((ctrlr_commit_status == NULL) || (dmi == NULL)) { - return UPLL_RC_ERR_GENERIC; - } - - for (ccsListItr = ctrlr_commit_status->begin(); - ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { - ccStatusPtr = *ccsListItr; - ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); - ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; - if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { - for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; - ck_err = ck_err->get_next_cfg_key_val()) { - if (ck_err->get_key_type() != keytype) continue; - result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, - ctrlr_id); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey error(%d)", result_code); - return result_code; + if (ctrlr_commit_status != NULL) { + for (ccsListItr = ctrlr_commit_status->begin(); + ccsListItr != ctrlr_commit_status->end(); ++ccsListItr) { + ccStatusPtr = *ccsListItr; + ctrlr_id = reinterpret_cast(&ccStatusPtr->ctrlr_id); + ctrlr_result[ccStatusPtr->ctrlr_id] = ccStatusPtr->upll_ctrlr_result; + if (ccStatusPtr->upll_ctrlr_result != UPLL_RC_SUCCESS) { + for (ConfigKeyVal *ck_err = ccStatusPtr->err_ckv; ck_err != NULL; + ck_err = ck_err->get_next_cfg_key_val()) { + if (ck_err->get_key_type() != keytype) continue; + result_code = GetRenamedUncKey(ck_err, UPLL_DT_CANDIDATE, dmi, + ctrlr_id); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetRenamedControllerKey error(%d)", result_code); + return result_code; + } } } } } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; if (op[i] != UNC_OP_UPDATE) { result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, - nreq, &cfg1_cursor, dmi, NULL, MAINTBL, true); + nreq, &cfg1_cursor, dmi, NULL, MAINTBL, true); while (result_code == UPLL_RC_SUCCESS) { db_result = dmi->GetNextRecord(cfg1_cursor); result_code = DalToUpllResCode(db_result); @@ -3111,6 +3359,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( } for (int i = 0; i < nop; i++) { + cfg1_cursor = NULL; MoMgrTables tbl = (op[i] == UNC_OP_UPDATE)?MAINTBL:CTRLRTBL; result_code = DiffConfigDB(UPLL_DT_CANDIDATE, UPLL_DT_RUNNING, op[i], req, nreq, &cfg1_cursor, dmi, NULL, tbl, true); @@ -3129,11 +3378,11 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( } if (op[i] == UNC_OP_UPDATE) { DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr | - kOpInOutDomain | kOpInOutCs }; + kOpInOutDomain | kOpInOutCs }; result_code = GetChildConfigKey(vtn_ctrlr_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); @@ -3162,7 +3411,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( } } else { UPLL_LOG_DEBUG("DB err while reading records from ctrlrtbl, err %d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); @@ -3172,7 +3421,6 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( for (ConfigKeyVal *tmp = vtn_ctrlr_key; tmp != NULL; tmp = tmp->get_next_cfg_key_val()) { - GET_USER_DATA_CTRLR(tmp, ctrlr_id); string controller(reinterpret_cast (ctrlr_id)); @@ -3181,7 +3429,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( result_code = GetChildConfigKey(vtn_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); @@ -3197,9 +3445,16 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( dmi->CloseCursor(cfg1_cursor, true); return result_code; } - result_code = UpdateConfigStatus(vtn_key, op[i], - ctrlr_result[controller], nreq, - dmi, tmp); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + result_code = UpdateConfigStatus(vtn_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, nreq, + dmi, tmp); + } else { + result_code = UpdateConfigStatus(vtn_key, op[i], + ctrlr_result[controller], nreq, + dmi, tmp); + } if (result_code != UPLL_RC_SUCCESS) break; result_code = UpdateConfigDB(tmp, @@ -3223,18 +3478,20 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); return result_code; - } // COV UNREACHABLE + } // COV UNREACHABLE #if 0 EnqueCfgNotification(op[i], UPLL_DT_RUNNING, vtn_ctrlr_key); #endif EnqueCfgNotification(op[i], UPLL_DT_RUNNING, vtn_key); - DELETE_IF_NOT_NULL(vtn_key); + DELETE_IF_NOT_NULL(vtn_key); } } else { if (op[i] == UNC_OP_CREATE) { - DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag |kOpInOutCs }; + DbSubOp dbop = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag |kOpInOutCs }; result_code = GetChildConfigKey(vtn_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed -%d", result_code); @@ -3243,8 +3500,9 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( dmi->CloseCursor(cfg1_cursor, true); return result_code; } - result_code = ReadConfigDB(vtn_key,UPLL_DT_RUNNING /*UPLL_DT_CANDIDATE*/, - UNC_OP_READ, dbop, dmi, MAINTBL); + result_code = ReadConfigDB(vtn_key, UPLL_DT_RUNNING + /*UPLL_DT_CANDIDATE*/, + UNC_OP_READ, dbop, dmi, MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { UPLL_LOG_DEBUG("ReadConfigDB is failed -%d", result_code); @@ -3259,8 +3517,9 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( */ uint32_t cur_instance_count; result_code = GetInstanceCount(vtn_key, NULL, - UPLL_DT_CANDIDATE, &cur_instance_count, - dmi, CTRLRTBL); + UPLL_DT_CANDIDATE, + &cur_instance_count, + dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetInstanceCount failed %d", result_code); DELETE_IF_NOT_NULL(vtn_key); @@ -3270,8 +3529,8 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( return result_code; } if (cur_instance_count == 1) - reinterpret_cast(GetVal(vtn_key))->cs_row_status - = UNC_CS_UNKNOWN ; + reinterpret_cast(GetVal(vtn_key))->cs_row_status + = UNC_CS_UNKNOWN; /* Capability check * req_header->operation = op[i]; @@ -3290,9 +3549,17 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( GET_USER_DATA_CTRLR(vtn_ctrlr_key, ctrlr_id); string controller(reinterpret_cast(ctrlr_id)); - result_code = UpdateConfigStatus(vtn_key, op[i], - ctrlr_result[controller], nreq, - dmi, vtn_ctrlr_key); + if (ctrlr_result.empty()) { + UPLL_LOG_TRACE("ctrlr_commit_status is NULL"); + result_code = UpdateConfigStatus(vtn_key, op[i], + UPLL_RC_ERR_CTR_DISCONNECTED, + nreq, + dmi, vtn_ctrlr_key); + } else { + result_code = UpdateConfigStatus(vtn_key, op[i], + ctrlr_result[controller], nreq, + dmi, vtn_ctrlr_key); + } if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in updating configstatus, resultcode=%d", result_code); @@ -3304,19 +3571,21 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( return result_code; } } else if (op[i] == UNC_OP_DELETE) { - //Reading Main Running DB for delete op - DbSubOp dbop1 = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCs }; + // Reading Main Running DB for delete op + DbSubOp dbop1 = { kOpReadSingle, + kOpMatchNone, + kOpInOutFlag | kOpInOutCs }; result_code = GetChildConfigKey(vtn_ck_run, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("GetChildConfigKey is failed resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); return result_code; } result_code = ReadConfigDB(vtn_ck_run, UPLL_DT_RUNNING, - UNC_OP_READ, dbop1, dmi, MAINTBL); + UNC_OP_READ, dbop1, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS && result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("Unable to read configuration from Running"); @@ -3328,9 +3597,12 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( } if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { GET_USER_DATA_CTRLR(req, ctrlr_id); - result_code = SetVtnPmConsolidatedStatus(vtn_ck_run, ctrlr_id, dmi); + result_code = SetVtnPmConsolidatedStatus(vtn_ck_run, + ctrlr_id, + dmi); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Could not set consolidated status %d", result_code); + UPLL_LOG_DEBUG("Could not set consolidated status %d", + result_code); DELETE_IF_NOT_NULL(vtn_ck_run); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); @@ -3342,7 +3614,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( result_code = GetChildConfigKey(vtn_ctrlr_key, req); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error in getting the configkey, resultcode=%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); dmi->CloseCursor(cfg1_cursor, true); @@ -3365,7 +3637,7 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( UNC_OP_UPDATE, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("UpdateConfigDB in main tbl is failed -%d", - result_code); + result_code); DELETE_IF_NOT_NULL(req); DELETE_IF_NOT_NULL(nreq); DELETE_IF_NOT_NULL(vtn_key); @@ -3388,22 +3660,23 @@ upll_rc_t VtnPolicingMapMoMgr::TxCopyCandidateToRunning( DELETE_IF_NOT_NULL(req); } result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) ? - UPLL_RC_SUCCESS : result_code; + UPLL_RC_SUCCESS : result_code; UPLL_LOG_DEBUG("TxcopyCandidatetoRunning is successful -%d", result_code); return result_code; } -upll_rc_t VtnPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, +upll_rc_t VtnPolicingMapMoMgr::UpdateConfigStatus( + ConfigKeyVal *ckv, unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *nreq, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; unc_keytype_configstatus_t ctrlr_status; - uint8_t cs_status; + uint8_t cs_status; ctrlr_status = (driver_result == 0)?UNC_CS_APPLIED: UNC_CS_NOT_APPLIED; val_policingmap_t *pm_val = - reinterpret_cast(GetVal(ckv)); + reinterpret_cast(GetVal(ckv)); val_vtnpolicingmap_ctrl_t *ctrlr_val_pm = - reinterpret_cast(GetVal(ctrlr_key)); + reinterpret_cast(GetVal(ctrlr_key)); if ((pm_val == NULL) || (ctrlr_val_pm == NULL)) { UPLL_LOG_DEBUG("Memory Allocation failed for Valstructure"); return UPLL_RC_ERR_GENERIC; @@ -3415,29 +3688,29 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, ctrlr_val_pm->cs_attr[0] = ctrlr_status; /* update the vtn status in main tbl */ if (pm_val->cs_row_status == UNC_CS_UNKNOWN) { - /* first entry in ctrlr table */ + /* first entry in ctrlr table */ cs_status = ctrlr_status; } else if (pm_val->cs_row_status == UNC_CS_INVALID) { cs_status = UNC_CS_INVALID; } else if (pm_val->cs_row_status == UNC_CS_APPLIED) { - if (ctrlr_status == UNC_CS_NOT_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + if (ctrlr_status == UNC_CS_NOT_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } } else if (pm_val->cs_row_status == UNC_CS_NOT_APPLIED) { - if (ctrlr_status == UNC_CS_APPLIED) { - cs_status = UNC_CS_PARTIALLY_APPLIED; - } + if (ctrlr_status == UNC_CS_APPLIED) { + cs_status = UNC_CS_PARTIALLY_APPLIED; + } } else { - cs_status = UNC_CS_PARTIALLY_APPLIED; + cs_status = UNC_CS_PARTIALLY_APPLIED; } pm_val->cs_row_status = cs_status; pm_val->cs_attr[0] = cs_status; } - // Updating the Controller cs_row_status + // Updating the Controller cs_row_status if ((op == UNC_OP_UPDATE) && (nreq != NULL)) { - val_vtnpolicingmap_ctrl *run_ctrlr_val = - reinterpret_cast - (GetVal(nreq)); + val_vtnpolicingmap_ctrl *run_ctrlr_val = + reinterpret_cast + (GetVal(nreq)); if (run_ctrlr_val != NULL) ctrlr_val_pm->cs_row_status = run_ctrlr_val->cs_row_status; } @@ -3445,8 +3718,8 @@ upll_rc_t VtnPolicingMapMoMgr::UpdateConfigStatus(ConfigKeyVal *ckv, } upll_rc_t VtnPolicingMapMoMgr::ValidateReadAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; ConfigKeyVal* vtnkey = NULL; upll_rc_t result_code; @@ -3456,7 +3729,7 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateReadAttribute(ConfigKeyVal *ikey, UNC_OP_READ_SIBLING_BEGIN == req->operation)) { ConfigKeyVal *okey = NULL; if (UNC_KT_VTN_POLICINGMAP_CONTROLLER == ikey->get_key_type()) { - key_vtn_policingmap_controller *l_key = + key_vtn_policingmap_controller *l_key = reinterpret_cast(ikey->get_key()); key_vtn_t *vtn_key = reinterpret_cast @@ -3465,32 +3738,25 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateReadAttribute(ConfigKeyVal *ikey, l_key->vtn_key.vtn_name, (kMaxLenVtnName+1)); - vtnkey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); - - VtnMoMgr *mgrvtn = reinterpret_cast( - const_cast(GetMoManager(UNC_KT_VTN))); - - if (NULL == mgrvtn) { - UPLL_LOG_DEBUG("unable to get VtnMoMgr object to validate key_vtn"); - DELETE_IF_NOT_NULL(vtnkey); - return UPLL_RC_ERR_GENERIC; - } - + vtnkey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, + vtn_key, + NULL); DbSubOp dbop1 = { kOpReadExist, kOpMatchNone, kOpInOutNone}; - result_code = mgrvtn->UpdateConfigDB(vtnkey, req->datatype, - UNC_OP_READ, dmi, &dbop1, MAINTBL); + result_code = UpdateConfigDB(vtnkey, req->datatype, + UNC_OP_READ, dmi, &dbop1, MAINTBL); if (result_code != UPLL_RC_ERR_INSTANCE_EXISTS) { - UPLL_LOG_DEBUG("Requested Vtn is Not Configured in" - "vtnmaintbl Table %d", result_code); - DELETE_IF_NOT_NULL(vtnkey); + UPLL_LOG_DEBUG("PolicingMap does not exists in main table -%d", + result_code); + DELETE_IF_NOT_NULL(vtnkey); return result_code; } - DELETE_IF_NOT_NULL(vtnkey); + DELETE_IF_NOT_NULL(vtnkey); result_code = CopyVtnControllerCkv(ikey, okey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("CopyVtnControllerCkv failed %d", result_code); - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); return result_code; } } else if (UNC_KT_VTN_POLICINGMAP == ikey->get_key_type()) { @@ -3512,77 +3778,41 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateReadAttribute(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(okey); return result_code; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); } return UPLL_RC_SUCCESS; } upll_rc_t VtnPolicingMapMoMgr::ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { - UPLL_FUNC_TRACE; - upll_rc_t result_code = UPLL_RC_SUCCESS; - ConfigKeyVal *okey = NULL; - if (!ikey || !ikey->get_key()) { - UPLL_LOG_DEBUG("input key is null"); - return UPLL_RC_ERR_GENERIC; - } - key_vtn_t *key_vtn_pm = - reinterpret_cast(ikey->get_key()); - MoMgrImpl *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTN))); - - result_code = mgr->GetChildConfigKey(okey, NULL); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key not supported result - %d", result_code); - return result_code; - } - - key_vtn_t *vtn_key = reinterpret_cast(okey->get_key()); - uuu::upll_strncpy(vtn_key->vtn_name, key_vtn_pm->vtn_name, - (kMaxLenVtnName+1)); - - /* Checks the given vtn exists or not */ - result_code = mgr->UpdateConfigDB(okey, req->datatype, UNC_OP_READ, - dmi, MAINTBL); - if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code) { - UPLL_LOG_DEBUG(" Parent VTN key does not exists"); - result_code = UPLL_RC_ERR_PARENT_DOES_NOT_EXIST; - } else { - result_code = UPLL_RC_SUCCESS; - } - delete okey; - - result_code = SetRenameFlag(ikey, dmi, req); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG(" SetRenameFlag failed %d", result_code); - return result_code; - } - return result_code; + DalDmlIntf *dmi, + IpcReqRespHeader *req) { + // No operation + return UPLL_RC_SUCCESS; } bool VtnPolicingMapMoMgr::CompareValidValue(void *&val1, void *val2, - bool audit) { + bool audit) { UPLL_FUNC_TRACE; bool invalid_attr = true; val_policingmap_t *val_pm1 = reinterpret_cast(val1); val_policingmap_t *val_pm2 = reinterpret_cast(val2); -// if (audit) { - if (UNC_VF_INVALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && - UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) { - val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID_NO_VALUE; - } - // } + // if (audit) { + if (UNC_VF_INVALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && + UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) { + val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_VALID_NO_VALUE; + } + // } if (UNC_VF_VALID == val_pm1->valid[UPLL_IDX_POLICERNAME_PM] && UNC_VF_VALID == val_pm2->valid[UPLL_IDX_POLICERNAME_PM]) { if (!strcmp(reinterpret_cast(val_pm1->policer_name), - reinterpret_cast(val_pm2->policer_name))) + reinterpret_cast(val_pm2->policer_name))) val_pm1->valid[UPLL_IDX_POLICERNAME_PM] = UNC_VF_INVALID; } if ((UNC_VF_VALID == (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM])) + (UNC_VF_VALID_NO_VALUE == + (uint8_t)val_pm1->valid[UPLL_IDX_POLICERNAME_PM])) invalid_attr = false; return invalid_attr; } @@ -3590,37 +3820,40 @@ bool VtnPolicingMapMoMgr::CompareValidValue(void *&val1, void *val2, upll_rc_t VtnPolicingMapMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtnpolicingmap_ctrl *val; val = - (ckv_running != NULL) ? reinterpret_cast(GetVal( - ckv_running)) : - NULL; + (ckv_running != NULL) ? reinterpret_cast + (GetVal( + ckv_running)) : + NULL; if (NULL == val) { - UPLL_LOG_DEBUG("UpdateAuditConfigStatus vtn_pm_val NULL (%d)", result_code); + UPLL_LOG_DEBUG("UpdateAuditConfigStatus vtn_pm_val NULL (%d)", + result_code); return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for ( unsigned int loop = 0; - loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) - val->cs_attr[loop] = cs_status; + cs_status == UNC_CS_APPLIED) + val->cs_attr[loop] = cs_status; } return result_code; } upll_rc_t VtnPolicingMapMoMgr::GetValid(void *val, uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (val == NULL) { UPLL_LOG_DEBUG("GetValid val NULL"); @@ -3632,8 +3865,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetValid(void *val, uint64_t indx, switch (indx) { case uudst::vtn_policingmap::kDbiPolicername: valid = - &(reinterpret_cast(val)) - ->valid[UPLL_IDX_POLICERNAME_PM]; + &(reinterpret_cast(val)) + ->valid[UPLL_IDX_POLICERNAME_PM]; break; default: return UPLL_RC_ERR_GENERIC; @@ -3642,8 +3875,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetValid(void *val, uint64_t indx, switch (indx) { case uudst::vtn_policingmap_ctrlr::kDbiPolicername: valid = - &(reinterpret_cast(val)) - ->valid[UPLL_IDX_POLICERNAME_PM]; + &(reinterpret_cast(val)) + ->valid[UPLL_IDX_POLICERNAME_PM]; break; default: return UPLL_RC_ERR_GENERIC; @@ -3655,8 +3888,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetValid(void *val, uint64_t indx, } upll_rc_t VtnPolicingMapMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; if (ck_val != NULL) { @@ -3689,8 +3922,8 @@ upll_rc_t VtnPolicingMapMoMgr::AllocVal(ConfigVal *&ck_val, } upll_rc_t VtnPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl) { + ConfigKeyVal *&req, + MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL || okey != NULL) { @@ -3758,11 +3991,11 @@ upll_rc_t VtnPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, if (tmp1) { tmp1->set_user_data(tmp->get_user_data()); - // tmp = tmp->get_next_cfg_val(); + // tmp = tmp->get_next_cfg_val(); } } - void *tkey = (req)->get_key(); // COV FORWARD NULL + void *tkey = (req)->get_key(); // COV FORWARD NULL if (tbl == MAINTBL || tbl == CTRLRTBL) { key_vtn *ikey = reinterpret_cast(tkey); key_vtn *vtn_key = reinterpret_cast @@ -3787,7 +4020,7 @@ upll_rc_t VtnPolicingMapMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } upll_rc_t VtnPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { + ConfigKeyVal *parent_key) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtn_t *vtn_key; @@ -3797,7 +4030,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, vtn_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); okey = new ConfigKeyVal(UNC_KT_VTN_POLICINGMAP, IpctSt::kIpcStKeyVtn, - vtn_key, NULL); + vtn_key, NULL); UPLL_LOG_DEBUG("GetChildConfigKey parent key with NULL"); return UPLL_RC_SUCCESS; } else { @@ -3823,8 +4056,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, case UNC_KT_VTN: case UNC_KT_VTN_POLICINGMAP: uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName + 1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName + 1)); break; default: if (vtn_key) free(vtn_key); @@ -3838,7 +4071,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, if (!okey) { okey = new ConfigKeyVal(UNC_KT_VTN_POLICINGMAP, IpctSt::kIpcStKeyVtn, - vtn_key, NULL); + vtn_key, NULL); } SET_USER_DATA(okey, parent_key); UPLL_LOG_DEBUG("GetChildConfigKey Allocation Successful"); @@ -3861,33 +4094,33 @@ upll_rc_t VtnPolicingMapMoMgr::GetChildControllerConfigKey( ikey->get_key_type()) { UPLL_LOG_DEBUG("UNC_KT_VTN_POLICINGMAP_CONTROLLER"); key_vtn_policingmap_controller_t *in_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uuu::upll_strncpy(out_key->vtn_key.vtn_name, - in_key->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + in_key->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(out_key->controller_name, - in_key->controller_name, - (kMaxLenCtrlrId + 1)); + in_key->controller_name, + (kMaxLenCtrlrId + 1)); uuu::upll_strncpy(out_key->domain_id, - in_key->domain_id, - (kMaxLenDomainId + 1)); + in_key->domain_id, + (kMaxLenDomainId + 1)); } else if (UNC_KT_VTN_POLICINGMAP == ikey->get_key_type()) { UPLL_LOG_DEBUG("parent kt - UNC_KT_VTN_POLICINGMAP"); key_vtn_t *in_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uuu::upll_strncpy(out_key->vtn_key.vtn_name, - in_key->vtn_name, - (kMaxLenVtnName + 1)); + in_key->vtn_name, + (kMaxLenVtnName + 1)); uuu::upll_strncpy(out_key->controller_name, - ctrlr_dom->ctrlr, - (kMaxLenCtrlrId + 1)); + ctrlr_dom->ctrlr, + (kMaxLenCtrlrId + 1)); uuu::upll_strncpy(out_key->domain_id, - ctrlr_dom->domain, - (kMaxLenDomainId + 1)); + ctrlr_dom->domain, + (kMaxLenDomainId + 1)); } okey = new ConfigKeyVal(UNC_KT_VTN_POLICINGMAP_CONTROLLER, - IpctSt::kIpcStKeyVtnPolicingmapController, - out_key, NULL); + IpctSt::kIpcStKeyVtnPolicingmapController, + out_key, NULL); if (NULL == okey) { UPLL_LOG_DEBUG("Okey is NULL"); return UPLL_RC_ERR_GENERIC; @@ -3896,7 +4129,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetChildControllerConfigKey( } upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *key) { + ConfigKeyVal *key) { UPLL_FUNC_TRACE; upll_rc_t rt_code = UPLL_RC_ERR_GENERIC; @@ -3911,38 +4144,40 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, key_vtn_policingmap_controller_t *key_vtn_policingmap_controller = NULL; if (UNC_KT_VTN_POLICINGMAP == key->get_key_type()) { - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } - if (req->option1 != UNC_OPT1_NORMAL) { - UPLL_LOG_DEBUG(" Invalid option1(%d)", req->option1); - return UPLL_RC_ERR_INVALID_OPTION1; - } + if (req->option1 != UNC_OPT1_NORMAL) { + UPLL_LOG_DEBUG(" Invalid option1(%d)", req->option1); + return UPLL_RC_ERR_INVALID_OPTION1; + } - if (req->option2 != UNC_OPT2_NONE) { - UPLL_LOG_DEBUG(" Invalid option2(%d)", req->option2); - return UPLL_RC_ERR_INVALID_OPTION2; - } - - if (key->get_st_num() != IpctSt::kIpcStKeyVtn) { - UPLL_LOG_DEBUG("Invalid key structure received. struct num - %d", - key->get_st_num()); + if (req->option2 != UNC_OPT2_NONE) { + UPLL_LOG_DEBUG(" Invalid option2(%d)", req->option2); + return UPLL_RC_ERR_INVALID_OPTION2; + } + + if (key->get_st_num() != IpctSt::kIpcStKeyVtn) { + UPLL_LOG_DEBUG("Invalid key structure received. struct num - %d", + key->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } key_vtn = reinterpret_cast(key->get_key()); } else if (UNC_KT_VTN_POLICINGMAP_CONTROLLER == key->get_key_type()) { - if ((req->datatype == UPLL_DT_IMPORT) && (req->operation == UNC_OP_READ || - req->operation == UNC_OP_READ_SIBLING || - req->operation == UNC_OP_READ_SIBLING_BEGIN || - req->operation == UNC_OP_READ_NEXT || - req->operation == UNC_OP_READ_BULK || - req->operation == UNC_OP_READ_SIBLING_COUNT)) { + if ((req->datatype == UPLL_DT_IMPORT) && ( + req->operation == UNC_OP_READ || + req->operation == UNC_OP_READ_SIBLING || + req->operation == UNC_OP_READ_SIBLING_BEGIN || + req->operation == UNC_OP_READ_NEXT || + req->operation == UNC_OP_READ_BULK || + req->operation == UNC_OP_READ_SIBLING_COUNT)) { return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } @@ -3952,9 +4187,9 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, } if ((req->option1 != UNC_OPT1_NORMAL) && - (req->option1 != UNC_OPT1_DETAIL)) { + (req->option1 != UNC_OPT1_DETAIL)) { UPLL_LOG_DEBUG(" invalid option1(%d)", req->option1); - return UPLL_RC_ERR_INVALID_OPTION1; + return UPLL_RC_ERR_INVALID_OPTION1; } if (req->option2 != UNC_OPT2_NONE) { @@ -3962,7 +4197,7 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION2; } if ((req->operation == UNC_OP_READ_SIBLING_COUNT) && - (req->option1 != UNC_OPT1_NORMAL)) { + (req->option1 != UNC_OPT1_NORMAL)) { UPLL_LOG_DEBUG(" Invalid request(%d)", req->option1); return UPLL_RC_ERR_INVALID_OPTION1; } @@ -3972,34 +4207,37 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, " Invalid structure received expected struct -" "kIpcStKeyVtnPolicingmapController, received struct - %s ", reinterpret_cast (IpctSt::GetIpcStdef( - key->get_st_num()))); + key->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vtn_policingmap_controller = - reinterpret_cast(key->get_key()); - key_vtn = reinterpret_cast< key_vtn_t*>(&(key_vtn_policingmap_controller->vtn_key)); - - if ((req->operation != UNC_OP_READ_SIBLING_COUNT) && - (req->operation != UNC_OP_READ_SIBLING_BEGIN)) { - rt_code = ValidateKey(reinterpret_cast( - key_vtn_policingmap_controller->controller_name), - kMinLenCtrlrId, kMaxLenCtrlrId); - - if (rt_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Controllername syntax validation failed: Err code-%d", - rt_code); - return rt_code; - } - if (!ValidateDefaultStr(key_vtn_policingmap_controller->domain_id, - kMinLenDomainId, kMaxLenDomainId)) { - UPLL_LOG_DEBUG("DomainId syntax validation failed:"); - return UPLL_RC_ERR_CFG_SYNTAX; + reinterpret_cast(key->get_key()); + key_vtn = reinterpret_cast< key_vtn_t*> + (&(key_vtn_policingmap_controller->vtn_key)); + + if ((req->operation != UNC_OP_READ_SIBLING_COUNT) && + (req->operation != UNC_OP_READ_SIBLING_BEGIN)) { + rt_code = ValidateKey(reinterpret_cast( + key_vtn_policingmap_controller->controller_name), + kMinLenCtrlrId, kMaxLenCtrlrId); + + if (rt_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("Controllername syntax validation failed: Err code-%d", + rt_code); + return rt_code; + } + if (!ValidateDefaultStr(key_vtn_policingmap_controller->domain_id, + kMinLenDomainId, kMaxLenDomainId)) { + UPLL_LOG_DEBUG("DomainId syntax validation failed:"); + return UPLL_RC_ERR_CFG_SYNTAX; + } + } else { + memset(key_vtn_policingmap_controller->controller_name, + 0, + kMaxLenCtrlrId); + memset(key_vtn_policingmap_controller->domain_id, 0, kMaxLenDomainId); } - } else { - memset(key_vtn_policingmap_controller->controller_name, 0, kMaxLenCtrlrId); - memset(key_vtn_policingmap_controller->domain_id, 0, kMaxLenDomainId); - } } else { UPLL_LOG_DEBUG(" Invalid keytype(%d)", key->get_key_type()); @@ -4013,8 +4251,8 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, /** validate key struct */ VtnMoMgr *mgrvtn = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VTN))); if (NULL == mgrvtn) { UPLL_LOG_DEBUG("unable to get VtnMoMgr object to validate key_vtn"); @@ -4024,8 +4262,8 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, rt_code = mgrvtn->ValidateVtnKey(key_vtn); if (UPLL_RC_SUCCESS != rt_code) { - UPLL_LOG_DEBUG(" Vtn name syntax validation failed Err Code - %d", - rt_code); + UPLL_LOG_DEBUG(" Vtn name syntax validation failed Err Code - %d", + rt_code); return rt_code; } @@ -4038,7 +4276,7 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateMessage(IpcReqRespHeader *req, /** Validate UNC_KT_VTN_POLICINGMAP_CONTROLLER key, val structure */ return ValidateVtnPolicingMapControllerValue( - key, req); + key, req); } upll_rc_t VtnPolicingMapMoMgr::ValidatePolicingMapValue( @@ -4056,10 +4294,10 @@ upll_rc_t VtnPolicingMapMoMgr::ValidatePolicingMapValue( return UPLL_RC_SUCCESS; } } - + if (key->get_cfg_val()->get_st_num() != IpctSt::kIpcStValPolicingmap) { UPLL_LOG_DEBUG("Invalid val structure received. struct num - %d", - (key->get_cfg_val())->get_st_num()); + (key->get_cfg_val())->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; } @@ -4080,17 +4318,17 @@ upll_rc_t VtnPolicingMapMoMgr::ValidatePolicingMapValue( if (val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] == UNC_VF_VALID) { /* validate name range is between 1 and 32 */ if (ValidateKey(reinterpret_cast(val_policingmap->policer_name), - kMinLenPolicingProfileName, kMaxLenPolicingProfileName + 1) - != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG(" Syntax range check failed for name "); - return UPLL_RC_ERR_CFG_SYNTAX; + kMinLenPolicingProfileName, kMaxLenPolicingProfileName + 1) + != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG(" Syntax range check failed for name "); + return UPLL_RC_ERR_CFG_SYNTAX; } } else if (val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] == - UNC_VF_VALID_NO_VALUE && - (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { + UNC_VF_VALID_NO_VALUE && + (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { UPLL_LOG_TRACE("Reset Policingname"); memset(val_policingmap->policer_name, 0, - sizeof(val_policingmap->policer_name)); + sizeof(val_policingmap->policer_name)); } return UPLL_RC_SUCCESS; } @@ -4103,13 +4341,13 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateVtnPolicingMapControllerValue( UPLL_LOG_TRACE("val stucture is optional"); return UPLL_RC_SUCCESS; } - + if (key->get_cfg_val()->get_st_num() != IpctSt::kIpcStValPolicingmapController) { UPLL_LOG_DEBUG("Invalid val structure received. struct num - %d", (key->get_cfg_val())->get_st_num()); return UPLL_RC_ERR_BAD_REQUEST; - } + } val_policingmap_controller_t *val_policingmap_controller = reinterpret_cast @@ -4131,7 +4369,7 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateVtnPolicingMapControllerValue( } if ((req->option1 != UNC_OPT1_NORMAL) && - ((req->option1 == UNC_OPT1_DETAIL) + ((req->option1 == UNC_OPT1_DETAIL) && (req->operation == UNC_OP_READ_SIBLING_COUNT))) { UPLL_LOG_DEBUG(" Error: option1 is not NORMAL/DETAIL"); return UPLL_RC_ERR_INVALID_OPTION1; @@ -4141,14 +4379,15 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateVtnPolicingMapControllerValue( (req->operation == UNC_OP_READ_SIBLING) || (req->operation == UNC_OP_READ_SIBLING_COUNT) || (req->operation == UNC_OP_READ_SIBLING_BEGIN)) { - /** Validate sequence number*/ if (val_policingmap_controller->valid[UPLL_IDX_SEQ_NUM_PMC] == UNC_VF_VALID) { /* validate name range is between 1 and 32 */ if (!ValidateNumericRange(val_policingmap_controller->sequence_num, - (uint8_t)kMinPolicingProfileSeqNum, - (uint8_t)kMaxPolicingProfileSeqNum, true, true)) { + (uint8_t)kMinPolicingProfileSeqNum, + (uint8_t)kMaxPolicingProfileSeqNum, + true, + true)) { UPLL_LOG_DEBUG(" Syntax range check failed for seq_num "); return UPLL_RC_ERR_CFG_SYNTAX; } @@ -4158,7 +4397,8 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateVtnPolicingMapControllerValue( } upll_rc_t VtnPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char * ctrlr_name) { + ConfigKeyVal *ikey, + const char * ctrlr_name) { UPLL_FUNC_TRACE; if ((NULL == req) || (NULL == ikey)) { UPLL_LOG_DEBUG("IpcReqRespHeader/ConfigKeyval is NULL"); @@ -4179,21 +4419,15 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, uint32_t max_attrs = 0; UPLL_LOG_TRACE("ctrlr_name(%s), datatype : (%d)", - ctrlr_name, req->datatype); + ctrlr_name, req->datatype); switch (req->operation) { case UNC_OP_CREATE: - result_code = GetCreateCapability(ctrlr_name, ikey->get_key_type(), - &max_instance_count, &max_attrs, &attrs); - - UPLL_LOG_INFO("cur_instance_count = %d, max_count= %d", cur_instance_count, - max_instance_count); - if (result_code && (max_instance_count != 0) && - (cur_instance_count >= max_instance_count)) { - UPLL_LOG_DEBUG("Instance count %d exceeds %d", cur_instance_count, - max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + result_code = GetCreateCapability(ctrlr_name, + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, ikey->get_key_type(), @@ -4201,28 +4435,28 @@ upll_rc_t VtnPolicingMapMoMgr::ValidateCapability(IpcReqRespHeader *req, break; default: if (req->datatype == UPLL_DT_STATE) - result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + result_code = GetStateCapability(ctrlr_name, ikey->get_key_type(), + &max_attrs, &attrs); else result_code = GetReadCapability(ctrlr_name, ikey->get_key_type(), - &max_attrs, &attrs); + &max_attrs, &attrs); break; } if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s)" - " for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + " for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } - if (max_attrs > 0) { - return ValVtnPolicingMapAttributeSupportCheck(ikey, - attrs); - } else { - UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); - return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; - } + if (max_attrs > 0) { + return ValVtnPolicingMapAttributeSupportCheck(ikey, + attrs); + } else { + UPLL_LOG_DEBUG("Attribute list is empty for operation %d", req->operation); + return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; + } } upll_rc_t VtnPolicingMapMoMgr::ValVtnPolicingMapAttributeSupportCheck( @@ -4230,18 +4464,16 @@ upll_rc_t VtnPolicingMapMoMgr::ValVtnPolicingMapAttributeSupportCheck( UPLL_FUNC_TRACE; if (UNC_KT_VTN_POLICINGMAP_CONTROLLER == ikey->get_key_type()) { - val_policingmap_controller_t *val_policingmap_controller = - reinterpret_cast(GetVal(ikey)); - + reinterpret_cast(GetVal(ikey)); if (val_policingmap_controller) { if ((val_policingmap_controller->valid[UPLL_IDX_SEQ_NUM_PMC] - == UNC_VF_VALID) + == UNC_VF_VALID) || (val_policingmap_controller->valid[UPLL_IDX_SEQ_NUM_PMC] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_policingmap_controller::kCapSeqNum] == 0) { val_policingmap_controller->valid[UPLL_IDX_SEQ_NUM_PMC] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("SeqNum attr is not supported by ctrlr"); } } @@ -4249,16 +4481,16 @@ upll_rc_t VtnPolicingMapMoMgr::ValVtnPolicingMapAttributeSupportCheck( return UPLL_RC_SUCCESS; } - val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(ikey)); + val_policingmap_t *val_policingmap = + reinterpret_cast(GetVal(ikey)); if (val_policingmap) { if ((val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] == UNC_VF_VALID) || (val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtn_policingmap::kCapPolicername] == 0) { val_policingmap->valid[UPLL_IDX_POLICERNAME_PM] = - UNC_VF_NOT_SUPPORTED; + UNC_VF_NOT_SUPPORTED; UPLL_LOG_DEBUG("Policername attr is not supported by ctrlr"); } @@ -4275,7 +4507,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, UPLL_LOG_DEBUG(" Input Key is NULL"); return UPLL_RC_ERR_GENERIC; } - DELETE_IF_NOT_NULL(okey); + DELETE_IF_NOT_NULL(okey); unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VTN_POLICINGMAP) { UPLL_LOG_DEBUG(" Invalid key type received. Key type - %d", ikey_type); @@ -4312,14 +4544,15 @@ bool VtnPolicingMapMoMgr::IsValidKey(void *key, uint64_t index) { return true; } upll_rc_t VtnPolicingMapMoMgr::IsKeyInUse(upll_keytype_datatype_t dt_type, - const ConfigKeyVal *ckv, - bool *in_use, - DalDmlIntf *dmi) { + const ConfigKeyVal *ckv, + bool *in_use, + DalDmlIntf *dmi) { return UPLL_RC_SUCCESS; } -upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail(ConfigKeyVal *&ikey, +upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail( + ConfigKeyVal *&ikey, ConfigKeyVal *vtn_dup_key, IpcResponse *ipc_response, upll_keytype_datatype_t dt_type, @@ -4344,7 +4577,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail(ConfigKeyVal *&ikey, (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); memcpy(out_val_policingmap, val_policingmap, sizeof(val_policingmap_t)); ikey->AppendCfgVal(IpctSt::kIpcStValPolicingmap, out_val_policingmap); - // delete vtn_dup_key; + // delete vtn_dup_key; #if 0 val_policingmap_controller_t* val_policingmap_controller = reinterpret_cast(GetVal(ikey)); @@ -4387,14 +4620,14 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail(ConfigKeyVal *&ikey, return result_code; } val_policingmap_controller_st *val_ppe_st = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_controller_st))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_policingmap_controller_st))); memcpy(val_ppe_st, val_entry_st, - sizeof(val_policingmap_controller_st)); + sizeof(val_policingmap_controller_st)); ikey->AppendCfgVal(IpctSt::kIpcStValPolicingmapControllerSt, val_ppe_st); - // val_policingmap_controller->sequence_num = val_entry_st->sequence_num; + // val_policingmap_controller->sequence_num = val_entry_st->sequence_num; if (ppe_ckv) { val_policingprofile_entry_t *temp_val_policingprofile = @@ -4431,11 +4664,11 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail(ConfigKeyVal *&ikey, val_policingmap_switch_st_t *drv_val_switch_st = reinterpret_cast (temp_cfg_val->get_val()); - memcpy(val_switch_st, drv_val_switch_st, + memcpy(val_switch_st, drv_val_switch_st, sizeof(val_policingmap_switch_st_t)); - if(drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { + if (drv_val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] == UNC_VF_VALID) { ConfigKeyVal *vbrif_key_val = NULL; - unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = + unc::upll::kt_momgr::VbrIfMoMgr *vbrifmgr = reinterpret_cast (const_cast(GetMoManager(UNC_KT_VBR_IF))); if (NULL == vbrifmgr) { @@ -4449,7 +4682,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail(ConfigKeyVal *&ikey, dmi); if ((result_code != UPLL_RC_SUCCESS) && (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", + UPLL_LOG_DEBUG("Get vBridge info failed err code (%d)", result_code); if (val_switch_st) free(val_switch_st); DELETE_IF_NOT_NULL(vbrif_key_val); @@ -4457,16 +4690,16 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail(ConfigKeyVal *&ikey, } if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { key_vbr_if_t *key_vbrif = reinterpret_cast - (vbrif_key_val->get_key()); + (vbrif_key_val->get_key()); val_switch_st->valid[UPLL_IDX_VBR_NAME_PMSS] = UNC_VF_VALID; uuu::upll_strncpy(val_switch_st->vbr_name, - key_vbrif->vbr_key.vbridge_name, - (kMaxLenVnodeName + 1)); + key_vbrif->vbr_key.vbridge_name, + (kMaxLenVnodeName + 1)); val_switch_st->valid[UPLL_IDX_IF_NAME_PMSS] = UNC_VF_VALID; uuu::upll_strncpy(val_switch_st->if_name, - key_vbrif->if_name, - (kMaxLenInterfaceName + 1)); + key_vbrif->if_name, + (kMaxLenInterfaceName + 1)); } DELETE_IF_NOT_NULL(vbrif_key_val); } @@ -4481,7 +4714,8 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateDetail(ConfigKeyVal *&ikey, return UPLL_RC_SUCCESS; } -upll_rc_t VtnPolicingMapMoMgr::ReadSibDTStateNormal(ConfigKeyVal *ikey, +upll_rc_t VtnPolicingMapMoMgr::ReadSibDTStateNormal( + ConfigKeyVal *ikey, ConfigKeyVal *vtn_dup_key, ConfigKeyVal *tctrl_key, upll_keytype_datatype_t dt_type, @@ -4494,21 +4728,21 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSibDTStateNormal(ConfigKeyVal *ikey, upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingmap_t *val_policingmap = - reinterpret_cast(GetVal(vtn_dup_key)); + reinterpret_cast(GetVal(vtn_dup_key)); ikey->AppendCfgVal(IpctSt::kIpcStValPolicingmap, val_policingmap); val_policingmap_controller_t *val_policingmap_controller = - reinterpret_cast(GetVal(ikey)); + reinterpret_cast(GetVal(ikey)); key_policingprofile_entry_t* key_policingprofile_entry = - reinterpret_cast(tctrl_key->get_key()); + reinterpret_cast(tctrl_key->get_key()); val_policingmap_controller->sequence_num = - key_policingprofile_entry->sequence_num; + key_policingprofile_entry->sequence_num; ikey->AppendCfgVal(IpctSt::kIpcStValPolicingmapController, - val_policingmap_controller); + val_policingmap_controller); ConfigKeyVal *tkey = NULL; @@ -4520,7 +4754,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSibDTStateNormal(ConfigKeyVal *ikey, } PolicingProfileEntryMoMgr *mgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); + (const_cast(GetMoManager(UNC_KT_POLICING_PROFILE_ENTRY))); result_code = mgr->ReadPolicingProfileEntry( (const char*)(policingprofile_name), @@ -4534,20 +4768,20 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSibDTStateNormal(ConfigKeyVal *ikey, } if (tkey) { val_policingprofile_entry_t *temp_val_policingprofile = - reinterpret_cast - (tkey->get_cfg_val()->get_val()); + reinterpret_cast + (tkey->get_cfg_val()->get_val()); ikey->AppendCfgVal(IpctSt::kIpcStValPolicingprofileEntry, - temp_val_policingprofile); + temp_val_policingprofile); } return UPLL_RC_SUCCESS; } upll_rc_t VtnPolicingMapMoMgr::CopyVtnControllerCkv(ConfigKeyVal *ikey, - ConfigKeyVal *&okey) { + ConfigKeyVal *&okey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; - // controller_domain ctrlr_dom; + // controller_domain ctrlr_dom; key_vtn_policingmap_controller_t *key_pm_ctrlr = reinterpret_cast (ikey->get_key()); result_code = GetChildConfigKey(okey, NULL); @@ -4558,16 +4792,18 @@ upll_rc_t VtnPolicingMapMoMgr::CopyVtnControllerCkv(ConfigKeyVal *ikey, key_vtn_t *key_pm_vtn = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(key_pm_vtn->vtn_name, - key_pm_ctrlr->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + key_pm_ctrlr->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); SET_USER_DATA_CTRLR(okey, key_pm_ctrlr->controller_name); SET_USER_DATA_DOMAIN(okey, key_pm_ctrlr->domain_id); - // SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + // SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); return UPLL_RC_SUCCESS; } -upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateNormal(ConfigKeyVal *&ikey, - upll_keytype_datatype_t dt_type, unc_keytype_operation_t op, +upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateNormal( + ConfigKeyVal *&ikey, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; @@ -4607,7 +4843,8 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateNormal(ConfigKeyVal *&ikey, val_policingmap_t *val_main = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingmap_t))); memcpy(val_main, tmp_val_main, sizeof(val_policingmap_t)); - val_vtnpolicingmap_ctrl *val_ctrlr = reinterpret_cast + val_vtnpolicingmap_ctrl *val_ctrlr = reinterpret_cast + (GetVal(ctrlr_ckv)); val_main->valid[UPLL_IDX_POLICERNAME_PM] = val_ctrlr->valid[UPLL_IDX_POLICERNAME_PM]; @@ -4672,8 +4909,10 @@ upll_rc_t VtnPolicingMapMoMgr::ReadControllerStateNormal(ConfigKeyVal *&ikey, } -upll_rc_t VtnPolicingMapMoMgr::ConstructReadSiblingNormalResponse(ConfigKeyVal *&ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, +upll_rc_t VtnPolicingMapMoMgr::ConstructReadSiblingNormalResponse( + ConfigKeyVal *&ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, ConfigKeyVal *ctrlr_ckv, ConfigKeyVal *&resp_ckv) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; @@ -4693,9 +4932,9 @@ upll_rc_t VtnPolicingMapMoMgr::ConstructReadSiblingNormalResponse(ConfigKeyVal * } val_policingmap_t *val_main = reinterpret_cast - (GetVal(main_ckv)); + (GetVal(main_ckv)); val_policingmap_t *val_ctrlr = reinterpret_cast - (GetVal(ctrlr_ckv)); + (GetVal(ctrlr_ckv)); val_main->valid[UPLL_IDX_POLICERNAME_PM] = val_ctrlr->valid[UPLL_IDX_POLICERNAME_PM]; val_main->cs_attr[UPLL_IDX_POLICERNAME_PM] = @@ -4703,12 +4942,12 @@ upll_rc_t VtnPolicingMapMoMgr::ConstructReadSiblingNormalResponse(ConfigKeyVal * val_main->cs_row_status = val_ctrlr->cs_row_status; val_policingmap_controller_t *in_val_vtn_ctrlr_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); val_policingmap_controller_t *out_val_vtn_ctrlr_pm = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_policingmap_controller_t))); + (ConfigKeyVal::Malloc(sizeof(val_policingmap_controller_t))); memcpy(out_val_vtn_ctrlr_pm, in_val_vtn_ctrlr_pm, - sizeof(val_policingmap_controller_t)); + sizeof(val_policingmap_controller_t)); ConfigKeyVal *okey = NULL; result_code = GetChildVtnCtrlrKey(okey, ikey); if (!okey || UPLL_RC_SUCCESS != result_code) { @@ -4718,9 +4957,9 @@ upll_rc_t VtnPolicingMapMoMgr::ConstructReadSiblingNormalResponse(ConfigKeyVal * return result_code; } okey->AppendCfgVal(IpctSt::kIpcStValPolicingmap, - val_main); + val_main); okey->AppendCfgVal(IpctSt::kIpcStValPolicingmapController, - out_val_vtn_ctrlr_pm); + out_val_vtn_ctrlr_pm); uint8_t *ctrlr_id = NULL; GET_USER_DATA_CTRLR(ctrlr_ckv, ctrlr_id); ConfigKeyVal *ppe_ckv = NULL, *temp_ppe_ckv = NULL; @@ -4729,12 +4968,17 @@ upll_rc_t VtnPolicingMapMoMgr::ConstructReadSiblingNormalResponse(ConfigKeyVal * } UPLL_LOG_DEBUG("Sequence number - %d", out_val_vtn_ctrlr_pm->sequence_num); PolicingProfileEntryMoMgr *ppe_mgr = - reinterpret_cast - (const_cast(GetMoManager - (UNC_KT_POLICING_PROFILE_ENTRY))); - result_code = ppe_mgr->ReadPolicingProfileEntry(reinterpret_cast - (val_main->policer_name), out_val_vtn_ctrlr_pm->sequence_num, - reinterpret_cast(ctrlr_id), dmi, dt_type, ppe_ckv); + reinterpret_cast + (const_cast(GetMoManager + (UNC_KT_POLICING_PROFILE_ENTRY))); + result_code = ppe_mgr->ReadPolicingProfileEntry( + reinterpret_cast + (val_main->policer_name), + out_val_vtn_ctrlr_pm->sequence_num, + reinterpret_cast(ctrlr_id), + dmi, + dt_type, + ppe_ckv); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadPolicingProfileEntry failed %d", result_code); DELETE_IF_NOT_NULL(okey); @@ -4743,7 +4987,7 @@ upll_rc_t VtnPolicingMapMoMgr::ConstructReadSiblingNormalResponse(ConfigKeyVal * temp_ppe_ckv = ppe_ckv; while (NULL != temp_ppe_ckv) { val_policingprofile_entry_t *val_ppe = reinterpret_cast - (GetVal(temp_ppe_ckv)); + (GetVal(temp_ppe_ckv)); val_policingprofile_entry_t *in_val_ppe = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingprofile_entry_t))); @@ -4772,7 +5016,7 @@ upll_rc_t VtnPolicingMapMoMgr::GetChildVtnCtrlrKey( return UPLL_RC_ERR_GENERIC; } key_vtn_policingmap_controller_t *vtn_pm_ctrlr_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); key_vtn_policingmap_controller_t *out_key = reinterpret_cast (ConfigKeyVal::Malloc(sizeof(key_vtn_policingmap_controller_t))); @@ -4789,8 +5033,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetChildVtnCtrlrKey( vtn_pm_ctrlr_key->domain_id, (kMaxLenVtnName +1)); okey = new ConfigKeyVal(UNC_KT_VTN_POLICINGMAP_CONTROLLER, - IpctSt::kIpcStKeyVtnPolicingmapController, - out_key, NULL); + IpctSt::kIpcStKeyVtnPolicingmapController, + out_key, NULL); if (!okey) { UPLL_LOG_DEBUG("GetChildVtnCtrlrKey failed. okey is null"); return UPLL_RC_ERR_GENERIC; @@ -4805,19 +5049,19 @@ upll_rc_t VtnPolicingMapMoMgr::SendIpcrequestToDriver( upll_rc_t result_code = UPLL_RC_ERR_GENERIC; controller_domain ctrlr_dom; key_vtn_policingmap_controller_t *vtn_pm_ctrlr_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); ctrlr_dom.ctrlr = reinterpret_cast (ConfigKeyVal::Malloc(kMaxLenCtrlrId + 1)); ctrlr_dom.domain = reinterpret_cast (ConfigKeyVal::Malloc(kMaxLenDomainId + 1)); uuu::upll_strncpy(ctrlr_dom.ctrlr, vtn_pm_ctrlr_key->controller_name, - kMaxLenCtrlrId + 1); + kMaxLenCtrlrId + 1); uuu::upll_strncpy(ctrlr_dom.domain, vtn_pm_ctrlr_key->domain_id, - kMaxLenDomainId + 1); + kMaxLenDomainId + 1); ConfigVal *tmp1 = NULL; val_policingmap_controller_t *val_pm_ctrlr = reinterpret_cast - (GetVal(ikey)); - ConfigKeyVal *temp_ckv = NULL ,*capa_key = NULL; + (GetVal(ikey)); + ConfigKeyVal *temp_ckv = NULL , *capa_key = NULL; result_code = GetChildVtnCtrlrKey(temp_ckv, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildVtnCtrlrKey failed %d", result_code); @@ -4829,22 +5073,22 @@ upll_rc_t VtnPolicingMapMoMgr::SendIpcrequestToDriver( reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingmap_controller_t))); memcpy(out_val_pm_ctrlr, val_pm_ctrlr, - sizeof(val_policingmap_controller_t)); + sizeof(val_policingmap_controller_t)); tmp1 = new ConfigVal(IpctSt::kIpcStValPolicingmapController, - out_val_pm_ctrlr); + out_val_pm_ctrlr); temp_ckv->AppendCfgVal(tmp1); - // Adding GetUncControllerKey - result_code = GetRenamedControllerKey(temp_ckv, req->datatype, dmi, - &ctrlr_dom); - if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("GetRenamedControllerKey Failed %d", result_code); - DELETE_IF_NOT_NULL(temp_ckv); - FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); - FREE_IF_NOT_NULL(ctrlr_dom.domain); - return result_code; - } + // Adding GetUncControllerKey + result_code = GetRenamedControllerKey(temp_ckv, req->datatype, dmi, + &ctrlr_dom); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_DEBUG("GetRenamedControllerKey Failed %d", result_code); + DELETE_IF_NOT_NULL(temp_ckv); + FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); + FREE_IF_NOT_NULL(ctrlr_dom.domain); + return result_code; + } - //Adding capa for Read/ReadSibling/ReadSiblingBegin Commonly Here + // Adding capa for Read/ReadSibling/ReadSiblingBegin Commonly Here result_code = GetChildVtnCtrlrKey(capa_key, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildVtnCtrlrKey failed for capa_key %d", result_code); @@ -4858,18 +5102,19 @@ upll_rc_t VtnPolicingMapMoMgr::SendIpcrequestToDriver( reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_policingmap_controller_t))); memcpy(capa_val_ctrlr, val_pm_ctrlr, - sizeof(val_policingmap_controller_t)); + sizeof(val_policingmap_controller_t)); capa_tmp = new ConfigVal(IpctSt::kIpcStValPolicingmapController, - capa_val_ctrlr); + capa_val_ctrlr); capa_key->AppendCfgVal(capa_tmp); - result_code = ValidateCapability(req, capa_key, reinterpret_cast(ctrlr_dom.ctrlr)); + result_code = ValidateCapability(req, capa_key, reinterpret_cast + (ctrlr_dom.ctrlr)); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("Key not supported by controller IN ReadSibling"); - DELETE_IF_NOT_NULL(capa_key); - DELETE_IF_NOT_NULL(temp_ckv); - FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); - FREE_IF_NOT_NULL(ctrlr_dom.domain); - return result_code; + UPLL_LOG_DEBUG("Key not supported by controller IN ReadSibling"); + DELETE_IF_NOT_NULL(capa_key); + DELETE_IF_NOT_NULL(temp_ckv); + FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); + FREE_IF_NOT_NULL(ctrlr_dom.domain); + return result_code; } IpcRequest ipc_req; memset(&ipc_req, 0, sizeof(ipc_req)); @@ -4904,7 +5149,7 @@ upll_rc_t VtnPolicingMapMoMgr::SendIpcrequestToDriver( FREE_IF_NOT_NULL(ctrlr_dom.domain); return ipc_response->header.result_code; } - // Check with Rakesh + // Check with Rakesh DELETE_IF_NOT_NULL(capa_key); DELETE_IF_NOT_NULL(temp_ckv); FREE_IF_NOT_NULL(ctrlr_dom.ctrlr); @@ -4913,51 +5158,51 @@ upll_rc_t VtnPolicingMapMoMgr::SendIpcrequestToDriver( } upll_rc_t VtnPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, - ConfigKeyVal* ikey, - DalDmlIntf *dmi) { + ConfigKeyVal* ikey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code; controller_domain ctrlr_dom; result_code = ValidateMessage(req, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", - result_code); - return result_code; + UPLL_LOG_DEBUG("ValidateMessage failed result_code %d", + result_code); + return result_code; } if (UNC_KT_VTN_POLICINGMAP == ikey->get_key_type()) { - if(req->datatype == UPLL_DT_STATE || - req->datatype == UPLL_DT_STARTUP || - req->datatype == UPLL_DT_RUNNING || - req->datatype == UPLL_DT_CANDIDATE ) { - result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); - return result_code; - } else { - UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", - req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; - } - } - if (UNC_KT_VTN_POLICINGMAP_CONTROLLER == ikey->get_key_type()) - if(req->datatype != UPLL_DT_STATE) { - UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", - req->datatype); - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + if (req->datatype == UPLL_DT_STATE || + req->datatype == UPLL_DT_STARTUP || + req->datatype == UPLL_DT_RUNNING || + req->datatype == UPLL_DT_CANDIDATE ) { + result_code = ReadInfoFromDB(req, ikey, dmi, &ctrlr_dom); + return result_code; + } else { + UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } } + if (UNC_KT_VTN_POLICINGMAP_CONTROLLER == ikey->get_key_type()) + if (req->datatype != UPLL_DT_STATE) { + UPLL_LOG_DEBUG("ReadSiblingCount is not Allowed For Such datatype %d", + req->datatype); + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; + } ConfigKeyVal *temp_vtn_pm_ckv = NULL; ConfigKeyVal *vtn_pm_ckv = NULL; key_vtn_policingmap_controller_t *vtn_pm_ctrlr_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); ctrlr_dom.ctrlr = reinterpret_cast - (ConfigKeyVal::Malloc(kMaxLenCtrlrId + 1)); + (ConfigKeyVal::Malloc(kMaxLenCtrlrId + 1)); ctrlr_dom.domain = reinterpret_cast - (ConfigKeyVal::Malloc(kMaxLenDomainId + 1)); + (ConfigKeyVal::Malloc(kMaxLenDomainId + 1)); uuu::upll_strncpy(ctrlr_dom.ctrlr, - vtn_pm_ctrlr_key->controller_name, - (kMaxLenCtrlrId + 1)); + vtn_pm_ctrlr_key->controller_name, + (kMaxLenCtrlrId + 1)); uuu::upll_strncpy(ctrlr_dom.domain, - vtn_pm_ctrlr_key->domain_id, - (kMaxLenDomainId + 1)); + vtn_pm_ctrlr_key->domain_id, + (kMaxLenDomainId + 1)); result_code = CopyVtnControllerCkv(ikey, temp_vtn_pm_ckv); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("CopyVtnControllerCkv failed"); @@ -4966,7 +5211,7 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain}; result_code = ReadConfigDB(temp_vtn_pm_ckv, req->datatype, - UNC_OP_READ, dbop, dmi, CTRLRTBL); + UNC_OP_READ, dbop, dmi, CTRLRTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); delete temp_vtn_pm_ckv; @@ -4986,8 +5231,8 @@ upll_rc_t VtnPolicingMapMoMgr::ReadSiblingCount(IpcReqRespHeader *req, } upll_rc_t VtnPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - const char *ctrlr_id) { + DalDmlIntf *dmi, + const char *ctrlr_id) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (NULL == ikey || NULL == dmi) { @@ -4995,9 +5240,9 @@ upll_rc_t VtnPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } UPLL_LOG_TRACE("%s Vtn_Pm CreateAuditMoImpl ikey", - ikey->ToStrAll().c_str()); + ikey->ToStrAll().c_str()); uint8_t *controller_id = reinterpret_cast( - const_cast(ctrlr_id)); + const_cast(ctrlr_id)); result_code = GetRenamedUncKey(ikey, UPLL_DT_RUNNING, dmi, controller_id); if (result_code != UPLL_RC_SUCCESS && @@ -5005,28 +5250,28 @@ upll_rc_t VtnPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("GetRenamedUncKey Failed err_code %d", result_code); return result_code; } - // bool ctrl_instance = true; + // bool ctrl_instance = true; - // Check Policingmap object exists in PolicingProfileTbl CANDIDATE DB - // If record not exists, return error code + // Check Policingmap object exists in PolicingProfileTbl CANDIDATE DB + // If record not exists, return error code val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (NULL == val_pm) { UPLL_LOG_DEBUG(" Value structure is NULL"); return UPLL_RC_ERR_GENERIC; } - + if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(ikey, UPLL_DT_AUDIT, dmi, - UNC_OP_CREATE); + UNC_OP_CREATE); if (UPLL_RC_SUCCESS != result_code) { if (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_DEBUG("UpdateRefCountInPPCtrlr Err in CANDIDATE DB(%d)", - result_code); + result_code); return result_code; } - // ctrl_instance = false; + // ctrl_instance = false; } } @@ -5034,43 +5279,45 @@ upll_rc_t VtnPolicingMapMoMgr::CreateAuditMoImpl(ConfigKeyVal *ikey, if (UPLL_RC_SUCCESS != result_code) { return result_code; } - DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; + DbSubOp dbop = { kOpReadExist, kOpMatchNone, kOpInOutNone }; result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_READ, dmi, &dbop, - MAINTBL); + MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != result_code && UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code) { UPLL_LOG_DEBUG("UpdateConfigDB failed "); return result_code; } if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - // create a record in vtnpolicingmap CANDIDATE DB + // create a record in vtnpolicingmap CANDIDATE DB result_code = UpdateConfigDB(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); + result_code); return result_code; } } key_vtn_t *tmp_key = reinterpret_cast(ikey->get_key()); UPLL_LOG_DEBUG("vtn name in createcand %s", tmp_key->vtn_name); - // Create the record in vtnpolicingmapctrltbl - - //if (ctrl_instance) { - result_code = UpdateRecordInVtnPmCtrlr(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, - dmi); - if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", - result_code); - return result_code; - } - //} - + // Create the record in vtnpolicingmapctrltbl + + // if (ctrl_instance) { + result_code = UpdateRecordInVtnPmCtrlr(ikey, UPLL_DT_AUDIT, UNC_OP_CREATE, + dmi); + if (UPLL_RC_SUCCESS != result_code) { + UPLL_LOG_DEBUG("Create record Err in vtnpolicingmaptbl CANDIDATE DB(%d)", + result_code); + return result_code; + } + // } + return result_code; } -upll_rc_t VtnPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { +upll_rc_t VtnPolicingMapMoMgr::DeleteChildrenPOM( + ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; if (NULL == ikey || NULL == dmi) { UPLL_LOG_DEBUG("DeleteMo ikey and req NULL"); @@ -5078,11 +5325,11 @@ upll_rc_t VtnPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, } upll_rc_t result_code = UPLL_RC_SUCCESS; - // 1)Decerment the refcount and check if the refcount as 0 then remove - // the record and if refcount is not 0, then update the refcount in - // policingprofilectrltbl + // 1)Decerment the refcount and check if the refcount as 0 then remove + // the record and if refcount is not 0, then update the refcount in + // policingprofilectrltbl - // 2)Delete the record in policingprofileentryctrltbl + // 2)Delete the record in policingprofileentryctrltbl ConfigKeyVal *tempckv = NULL; result_code = GetChildConfigKey(tempckv, ikey); if (UPLL_RC_SUCCESS != result_code) { @@ -5091,7 +5338,7 @@ upll_rc_t VtnPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, } DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutNone }; result_code = ReadConfigDB(tempckv, dt_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { UPLL_LOG_DEBUG("UPLL_RC_ERR_NO_SUCH_INSTANCE"); @@ -5103,50 +5350,49 @@ upll_rc_t VtnPolicingMapMoMgr::DeleteChildrenPOM(ConfigKeyVal *ikey, return result_code; } val_policingmap_t *val_pm = reinterpret_cast - (GetVal(tempckv)); + (GetVal(tempckv)); if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { result_code = UpdateRefCountInPPCtrlr(tempckv, dt_type, dmi, - UNC_OP_DELETE); + UNC_OP_DELETE); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { result_code = UPLL_RC_SUCCESS; } else if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo returns (%d)", - result_code); + result_code); DELETE_IF_NOT_NULL(tempckv); return result_code; } } - DELETE_IF_NOT_NULL(tempckv); ConfigKeyVal *temp_ikey = NULL; result_code = GetChildConfigKey(temp_ikey, ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed"); + DELETE_IF_NOT_NULL(tempckv); return result_code; } - // Delete a record in vtnpolicingmap CANDIDATE DB + // Delete a record in vtnpolicingmap CANDIDATE DB result_code = UpdateConfigDB(temp_ikey, dt_type, UNC_OP_DELETE, dmi, - MAINTBL); + MAINTBL); + DELETE_IF_NOT_NULL(temp_ikey); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmaptbl (%d)", - result_code); - DELETE_IF_NOT_NULL(temp_ikey); + result_code); + DELETE_IF_NOT_NULL(tempckv); return result_code; } - // Delete the record in vtnpolicingmapctrltbl - result_code = UpdateRecordInVtnPmCtrlr(temp_ikey, dt_type, UNC_OP_DELETE, - dmi); + // Delete the record in vtnpolicingmapctrltbl + result_code = UpdateRecordInVtnPmCtrlr(tempckv, dt_type, UNC_OP_DELETE, + dmi); + DELETE_IF_NOT_NULL(tempckv); if (UPLL_RC_ERR_NO_SUCH_INSTANCE == result_code) { - DELETE_IF_NOT_NULL(temp_ikey); result_code = UPLL_RC_SUCCESS; } else if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("DeleteMo record Err in vtnpolicingmapctrltbl (%d)", - result_code); - DELETE_IF_NOT_NULL(temp_ikey); + result_code); return result_code; } - DELETE_IF_NOT_NULL(temp_ikey); return result_code; } @@ -5168,22 +5414,26 @@ upll_rc_t VtnPolicingMapMoMgr::SetValidAudit(ConfigKeyVal *&ikey) { } bool VtnPolicingMapMoMgr::FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op) { + void *val2, + bool copy_to_running, + unc_keytype_operation_t op) { UPLL_FUNC_TRACE; if (op != UNC_OP_CREATE) return CompareValidValue(val1, val2, copy_to_running); return false; } upll_rc_t VtnPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t &rename) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t &rename) { UPLL_FUNC_TRACE; UPLL_LOG_DEBUG("VtnPolicingMapMoMgr IsRenamed"); DbSubOp dbop = { kOpReadSingle, kOpMatchNone, kOpInOutFlag | kOpInOutCtrlr - | kOpInOutDomain }; + | kOpInOutDomain }; + if (NULL == ikey) { + UPLL_LOG_DEBUG("ikey NULL"); + return UPLL_RC_ERR_GENERIC; + } ConfigKeyVal *okey = NULL; upll_rc_t result_code; /* rename is set implies user wants the ikey @@ -5193,35 +5443,38 @@ upll_rc_t VtnPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, UPLL_LOG_DEBUG("UNC_KT_VTN_POLICINGMAP"); result_code = GetChildConfigKey(okey, ikey); if (result_code != UPLL_RC_SUCCESS) { - UPLL_LOG_TRACE("Returning error %d",result_code); + UPLL_LOG_TRACE("Returning error %d", result_code); return result_code; } } else if (UNC_KT_VTN_POLICINGMAP_CONTROLLER == ikey->get_key_type()) { UPLL_LOG_DEBUG("UNC_KT_VTN_POLICINGMAP_CONTROLLER"); key_vtn_t *out_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); + (ConfigKeyVal::Malloc(sizeof(key_vtn_t))); key_vtn_policingmap_controller_t *in_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uuu::upll_strncpy(out_key->vtn_name, - in_key->vtn_key.vtn_name, - (kMaxLenVtnName + 1)); + in_key->vtn_key.vtn_name, + (kMaxLenVtnName + 1)); okey = new ConfigKeyVal(UNC_KT_VTN_POLICINGMAP, - IpctSt::kIpcStKeyVtn, - out_key, NULL); + IpctSt::kIpcStKeyVtn, + out_key, NULL); + } else { + UPLL_LOG_DEBUG("Invalid KeyType"); + return UPLL_RC_ERR_GENERIC; } } else { okey = ikey; } result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, - MAINTBL); + MAINTBL); if ((result_code != UPLL_RC_SUCCESS) && - (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { - UPLL_LOG_DEBUG("Returning error code %d",result_code); + (result_code != UPLL_RC_ERR_NO_SUCH_INSTANCE)) { + UPLL_LOG_DEBUG("Returning error code %d", result_code); if (okey != ikey) delete okey; return UPLL_RC_ERR_GENERIC; } @@ -5230,26 +5483,26 @@ upll_rc_t VtnPolicingMapMoMgr::IsRenamed(ConfigKeyVal *ikey, ctrlr_dom.ctrlr = NULL; ctrlr_dom.domain = NULL; - GET_USER_DATA_CTRLR_DOMAIN(ikey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + GET_USER_DATA_CTRLR_DOMAIN(ikey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA_CTRLR_DOMAIN(okey,ctrlr_dom); - UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, + SET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); + UPLL_LOG_DEBUG("Controller : %s; Domain : %s", ctrlr_dom.ctrlr, ctrlr_dom.domain); - SET_USER_DATA(ikey,okey); + SET_USER_DATA(ikey, okey); rename &= RENAME; if (okey != ikey) delete okey; return UPLL_RC_SUCCESS; } upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_policingmap_t *val_pm = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!val_pm) { UPLL_LOG_DEBUG("Val is NULL"); return UPLL_RC_ERR_GENERIC; @@ -5262,8 +5515,8 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } MoMgrImpl *mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VTN))); if (!mgr) { UPLL_LOG_DEBUG("mgr is NULL"); DELETE_IF_NOT_NULL(pkey); @@ -5272,7 +5525,7 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, uint8_t rename = 0; DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutFlag}; result_code = mgr->ReadConfigDB(pkey, req->datatype, - UNC_OP_READ, dbop, dmi, MAINTBL); + UNC_OP_READ, dbop, dmi, MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("ReadConfigDB failed %d", result_code); DELETE_IF_NOT_NULL(pkey); @@ -5280,19 +5533,20 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } GET_USER_DATA_FLAGS(pkey, rename); DELETE_IF_NOT_NULL(pkey); - // Check policingprofile is renamed + // Check policingprofile is renamed if ((UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) && ((UNC_OP_CREATE == req->operation))) { ConfigKeyVal *pp_ckv = NULL; - result_code = GetPolicingProfileConfigKey(reinterpret_cast + result_code = GetPolicingProfileConfigKey( + reinterpret_cast (val_pm->policer_name), pp_ckv, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetPolicingProfileConfigKey failed %d", result_code); return result_code; } MoMgrImpl *pp_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (NULL == pp_mgr) { UPLL_LOG_DEBUG("pp_mgr is NULL"); DELETE_IF_NOT_NULL(pp_ckv); @@ -5306,7 +5560,8 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (pp_rename & 0x01) { - rename |= POLICINGPROFILE_RENAME; // TODO Check for correct flag value + rename |= POLICINGPROFILE_RENAME; // TODO(upll): Check for + // correct flag value } DELETE_IF_NOT_NULL(pp_ckv); } @@ -5321,14 +5576,16 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, if (UNC_VF_VALID == val_pm->valid[UPLL_IDX_POLICERNAME_PM]) { ConfigKeyVal *pp_ckv = NULL; result_code = GetPolicingProfileConfigKey(reinterpret_cast - (val_pm->policer_name), pp_ckv, dmi); + (val_pm->policer_name), + pp_ckv, + dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetPolicingProfileConfigKey failed %d", result_code); return result_code; } MoMgrImpl *pp_mgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_POLICING_PROFILE))); if (NULL == pp_mgr) { UPLL_LOG_DEBUG("pp_mgr is NULL"); DELETE_IF_NOT_NULL(pp_ckv); @@ -5342,7 +5599,8 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, return result_code; } if (pp_rename & 0x01) { - rename |= POLICINGPROFILE_RENAME; // TODO Check for correct flag value + rename |= POLICINGPROFILE_RENAME; // TODO(upll): Check for correct + // flag value } else { UPLL_LOG_DEBUG(" In else part rename %d ", rename); rename = rename & NO_POLICINGPROFILE_RENAME; @@ -5350,7 +5608,7 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, DELETE_IF_NOT_NULL(pp_ckv); } else if (UNC_VF_VALID_NO_VALUE == val_pm->valid [UPLL_IDX_POLICERNAME_PM]) { - rename = rename & NO_POLICINGPROFILE_RENAME; + rename = rename & NO_POLICINGPROFILE_RENAME; } SET_USER_DATA_FLAGS(ikey, rename); } @@ -5358,13 +5616,13 @@ upll_rc_t VtnPolicingMapMoMgr::SetRenameFlag(ConfigKeyVal *ikey, } upll_rc_t VtnPolicingMapMoMgr::GetPolicingProfileConfigKey( - const char *pp_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi) { + const char *pp_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_ERR_GENERIC; MoMgrImpl *mgr = reinterpret_cast(const_cast(GetMoManager( - UNC_KT_POLICING_PROFILE))); + UNC_KT_POLICING_PROFILE))); result_code = mgr->GetChildConfigKey(okey, NULL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("GetChildConfigKey failed %d", result_code); @@ -5373,8 +5631,8 @@ upll_rc_t VtnPolicingMapMoMgr::GetPolicingProfileConfigKey( key_policingprofile_t *okey_key = reinterpret_cast (okey->get_key()); uuu::upll_strncpy(okey_key->policingprofile_name, - pp_name, - (kMaxLenPolicingProfileName+1)); + pp_name, + (kMaxLenPolicingProfileName+1)); return UPLL_RC_SUCCESS; } @@ -5389,7 +5647,7 @@ upll_rc_t VtnPolicingMapMoMgr::SetVtnPmConsolidatedStatus(ConfigKeyVal *ikey, bool applied = false, not_applied = false, invalid = false; unc_keytype_configstatus_t c_status = UNC_CS_NOT_APPLIED; DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, - kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; + kOpInOutCtrlr | kOpInOutDomain | kOpInOutCs }; if (!ikey || !dmi) { UPLL_LOG_DEBUG("Invalid Input"); return UPLL_RC_ERR_GENERIC; @@ -5409,7 +5667,7 @@ upll_rc_t VtnPolicingMapMoMgr::SetVtnPmConsolidatedStatus(ConfigKeyVal *ikey, } for (ConfigKeyVal *tmp = ctrlr_ckv; tmp != NULL; - tmp = tmp->get_next_cfg_key_val()) { + tmp = tmp->get_next_cfg_key_val()) { ctrlr_val = reinterpret_cast(GetVal(tmp)); if (!ctrlr_val) { UPLL_LOG_DEBUG("Controller Value is empty"); @@ -5420,21 +5678,22 @@ upll_rc_t VtnPolicingMapMoMgr::SetVtnPmConsolidatedStatus(ConfigKeyVal *ikey, GET_USER_DATA_CTRLR(tmp, vtn_exist_on_ctrlr); if (!strcmp(reinterpret_cast(vtn_exist_on_ctrlr), reinterpret_cast(ctrlr_id))) - continue; // skipping entry of deleted controller + continue; // skipping entry of deleted controller switch (ctrlr_val->cs_row_status) { case UNC_CS_APPLIED: applied = true; - break; + break; case UNC_CS_NOT_APPLIED: not_applied = true; - break; + break; case UNC_CS_INVALID: invalid = true; + break; // Addressed coverity MISSSING_BREAK default: UPLL_LOG_DEBUG("Invalid status"); DELETE_IF_NOT_NULL(ctrlr_ckv); - // return result_code; + // return result_code; } vtn_exist_on_ctrlr = NULL; } @@ -5449,9 +5708,9 @@ upll_rc_t VtnPolicingMapMoMgr::SetVtnPmConsolidatedStatus(ConfigKeyVal *ikey, } else { c_status = UNC_CS_APPLIED; } - // Set cs_status + // Set cs_status val_vtnpolicingmap_ctrl_t *val = static_cast - (GetVal(ikey)); + (GetVal(ikey)); val->cs_row_status = c_status; val->cs_attr[0] = c_status; DbSubOp dbop_update = {kOpNotRead, kOpMatchNone, kOpInOutCs}; @@ -5462,7 +5721,7 @@ upll_rc_t VtnPolicingMapMoMgr::SetVtnPmConsolidatedStatus(ConfigKeyVal *ikey, } upll_rc_t VtnPolicingMapMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *ckv = NULL; DbSubOp dbop = {kOpReadMultiple, kOpMatchNone, kOpInOutCs}; @@ -5487,12 +5746,13 @@ upll_rc_t VtnPolicingMapMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, val_vtnpolicingmap_ctrl_t *val; ConfigKeyVal *temp_ckv = ckv; for ( ; temp_ckv != NULL ; temp_ckv = temp_ckv->get_next_cfg_key_val()) { - val = reinterpret_cast(GetVal(temp_ckv)); - list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); - list_cs_attr.push_back((unc_keytype_configstatus_t)val->cs_attr[0]); + val = reinterpret_cast(GetVal(temp_ckv)); + list_cs_row.push_back((unc_keytype_configstatus_t)val->cs_row_status); + list_cs_attr.push_back((unc_keytype_configstatus_t)val->cs_attr[0]); } DELETE_IF_NOT_NULL(ckv); - val_policingmap_t *val_temp = reinterpret_cast(GetVal(ikey)); + val_policingmap_t *val_temp = reinterpret_cast + (GetVal(ikey)); val_temp->cs_row_status = GetConsolidatedCsStatus(list_cs_row); val_temp->cs_attr[0] = GetConsolidatedCsStatus(list_cs_attr); result_code = UpdateConfigDB(ikey, @@ -5503,6 +5763,6 @@ upll_rc_t VtnPolicingMapMoMgr::SetConsolidatedStatus(ConfigKeyVal *ikey, } return result_code; } -} // kt_momgr -} // upll -} // unc +} // namespace kt_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/modules/upll/vtn_policingmap_momgr.hh b/coordinator/modules/upll/vtn_policingmap_momgr.hh index 0ae85ee8..273a4790 100644 --- a/coordinator/modules/upll/vtn_policingmap_momgr.hh +++ b/coordinator/modules/upll/vtn_policingmap_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -35,7 +35,7 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { static BindInfo key_vtnpm_vtn_ctrlrtbl_rename_bind_info[]; static BindInfo key_vtnpm_Policyname_maintbl_rename_bind_info[]; static BindInfo key_vtnpm_Policyname_ctrlrtbl_rename_bind_info[]; - uint32_t cur_instance_count; + public: /** * @Brief VtnPolicingMapMoMgr Class Constructor. @@ -71,7 +71,7 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_GENERIC Generic Errors. */ upll_rc_t CreateCandidateMo(IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi, bool restore_flag = false); /** * @Brief This API is used to delete the record (Vtn name with @@ -336,7 +336,8 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { */ upll_rc_t TxUpdateProcess(ConfigKeyVal *ck_main, IpcResponse *ipc_resp, unc_keytype_operation_t op, - DalDmlIntf *dmi, controller_domain *ctrlr_dom); + DalDmlIntf *dmi, controller_domain *ctrlr_dom, + set *affected_ctrlr_set, bool *driver_resp); /** * @Brief This API is used to get the renamed Controller's key @@ -391,10 +392,10 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { /** * @Brief This API updates the Configuration status for AuditConfigiration todo * - * @param[in] ctrlr_rslt Pointer to ConfigkeyVal class. * @param[in] phase Describes the phase of controller. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. * @param[in] ckv_running Pointer to ConfigkeyVal. - * @param[in] ckv_audit Pointer to ConfigkeyVal. + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) * * @retval UPLL_RC_SUCCESS Successful completion. * @retval UPLL_RC_ERR_GENERIC Generic Errors. @@ -403,7 +404,8 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { upll_rc_t UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** * @Brief Method To Compare the Valid Check of Attributes @@ -548,7 +550,7 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. */ static upll_rc_t ValidatePolicingMapValue(ConfigKeyVal *key, - uint32_t operation); + uint32_t operation); /** * @Brief Method is used to validate the policingmap controller value @@ -641,7 +643,7 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { * * @retval UPLL_RC_SUCCESS Successfull completion. * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists + * @retval UPLL_RC_ERR_INSTANCE_EXISTS Record already exists * @retval UPLL_RC_ERR_GENERIC Returned Generic Error. */ @@ -656,7 +658,7 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { upll_rc_t ReadSiblingPolicingMapController( IpcReqRespHeader *req, ConfigKeyVal *ikey, - DalDmlIntf *dmi); + DalDmlIntf *dmi); upll_rc_t ReadControllerStateDetail(ConfigKeyVal *&ikey, ConfigKeyVal *vtn_dup_key, IpcResponse *ipc_response, @@ -712,7 +714,7 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { upll_rc_t ReadSiblingControllerStateNormal( ConfigKeyVal *ikey, IpcReqRespHeader *req, - DalDmlIntf *dmi); + DalDmlIntf *dmi); upll_rc_t ReadSiblingControllerStateDetail( ConfigKeyVal *ikey, IpcReqRespHeader *req, @@ -751,9 +753,9 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { bool &no_rename); bool FilterAttributes(void *&val1, - void *val2, - bool copy_to_running, - unc_keytype_operation_t op); + void *val2, + bool copy_to_running, + unc_keytype_operation_t op); upll_rc_t MergeImportToCandidate(unc_key_type_t keytype, const char *ctrlr_name, @@ -765,8 +767,8 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { uint8_t &rename); upll_rc_t GetPolicingProfileConfigKey( - const char *pp_name, ConfigKeyVal *&okey, - DalDmlIntf *dmi); + const char *pp_name, ConfigKeyVal *&okey, + DalDmlIntf *dmi); upll_rc_t SetRenameFlag(ConfigKeyVal *ikey, DalDmlIntf *dmi, @@ -778,15 +780,17 @@ class VtnPolicingMapMoMgr : public MoMgrImpl { upll_rc_t SetConsolidatedStatus(ConfigKeyVal *ikey, DalDmlIntf *dmi); + /* upll_rc_t DecRefCountInPPCtrlTbl(ConfigKeyVal *pm_imkey, + DalDmlIntf *dmi);*/ }; typedef struct val_vtnpolicingmap_ctrl { - uint8_t valid[1]; - uint8_t cs_row_status; - uint8_t cs_attr[1]; - uint8_t policer_name[33]; + uint8_t valid[1]; + uint8_t cs_row_status; + uint8_t cs_attr[1]; + uint8_t policer_name[33]; } val_vtnpolicingmap_ctrl_t; -} // kt_momgr -} // upll -} // unc +} // namespace kt_momgr +} // namespace upll +} // namespace unc #endif // MODULES_UPLL_VTN_POLICINGMAP_MOMGR_HH_ diff --git a/coordinator/modules/upll/vtunnel_if_momgr.cc b/coordinator/modules/upll/vtunnel_if_momgr.cc index 2f0e7058..cf85b626 100644 --- a/coordinator/modules/upll/vtunnel_if_momgr.cc +++ b/coordinator/modules/upll/vtunnel_if_momgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -19,82 +19,109 @@ namespace unc { namespace upll { namespace kt_momgr { - BindInfo VtunnelIfMoMgr::vtunnel_if_bind_info[] = { - { uudst::vtunnel_interface::kDbiVtnName, CFG_KEY, offsetof(key_vtunnel_if, - vtunnel_key.vtn_key.vtn_name), uud::kDalChar, kMaxLenVtnName+1}, - { uudst::vtunnel_interface::kDbiVtunnelName, CFG_KEY, - offsetof(key_vtunnel_if, - vtunnel_key.vtunnel_name), uud::kDalChar, kMaxLenVnodeName+1}, - { uudst::vtunnel_interface::kDbiIfName, CFG_KEY, offsetof(key_vtunnel_if, - if_name), uud::kDalChar, kMaxLenInterfaceName+1}, +BindInfo VtunnelIfMoMgr::vtunnel_if_bind_info[] = { + { uudst::vtunnel_interface::kDbiVtnName, CFG_KEY, offsetof( + key_vtunnel_if, + vtunnel_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName+1}, + { uudst::vtunnel_interface::kDbiVtunnelName, CFG_KEY, + offsetof(key_vtunnel_if, + vtunnel_key.vtunnel_name), uud::kDalChar, kMaxLenVnodeName+1}, + { uudst::vtunnel_interface::kDbiIfName, CFG_KEY, offsetof( + key_vtunnel_if, + if_name), uud::kDalChar, kMaxLenInterfaceName+1}, { uudst::vtunnel_interface::kDbiDesc, CFG_VAL, offsetof( - val_vtunnel_if, description), uud::kDalChar, 128}, + val_vtunnel_if, description), uud::kDalChar, 128}, { uudst::vtunnel_interface::kDbiAdminStatus, CFG_VAL, offsetof( - val_vtunnel_if, admin_status), uud::kDalUint8, 1}, + val_vtunnel_if, admin_status), uud::kDalUint8, 1}, { uudst::vtunnel_interface::kDbiLogicalPortId, CFG_VAL, offsetof( - val_vtunnel_if, portmap.logical_port_id), uud::kDalChar, 320}, + val_vtunnel_if, portmap.logical_port_id), uud::kDalChar, 320}, { uudst::vtunnel_interface::kDbiVlanId, CFG_VAL, offsetof( - val_vtunnel_if, portmap.vlan_id), uud::kDalUint16, 1}, + val_vtunnel_if, portmap.vlan_id), uud::kDalUint16, 1}, { uudst::vtunnel_interface::kDbiTagged, CFG_VAL, offsetof( - val_vtunnel_if, portmap.tagged), uud::kDalUint8, 1}, + val_vtunnel_if, portmap.tagged), uud::kDalUint8, 1}, { uudst::vtunnel_interface::kDbiOperStatus, ST_VAL, + offsetof(val_db_vtunnel_if_st, + vtunnel_if_val_st.oper_status), uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiDownCount, ST_VAL, offsetof(val_db_vtunnel_if_st, - vtunnel_if_val_st.oper_status), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiDownCount, ST_VAL, - offsetof(val_db_vtunnel_if_st, - down_count), uud::kDalUint32, 1 }, - { uudst::vtunnel_interface::kDbiCtrlrName, CK_VAL, offsetof(key_user_data, - ctrlr_id), uud::kDalChar, 32}, - { uudst::vtunnel_interface::kDbiDomainId, CK_VAL, offsetof(key_user_data, - domain_id), uud::kDalChar, 32}, - { uudst::vtunnel_interface::kDbiFlags, CK_VAL, offsetof(key_user_data, - flags), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiValidDesc, CFG_META_VAL, offsetof( - val_vtunnel_if, valid[UPLL_IDX_DESC_VTNL_IF]), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( - val_vtunnel_if, valid[UPLL_IDX_ADMIN_ST_VTNL_IF]), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiValidPortMap, CFG_META_VAL, offsetof( - val_vtunnel_if, valid[UPLL_IDX_PORT_MAP_VTNL_IF]), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiValidLogicalPortId, CFG_META_VAL, offsetof - (val_vtunnel_if, portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]), - uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiValidVlanid, CFG_META_VAL, offsetof( - val_vtunnel_if, portmap.valid[UPLL_IDX_VLAN_ID_PM]), - uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiValidTagged, CFG_META_VAL, offsetof( - val_vtunnel_if, portmap.valid[UPLL_IDX_TAGGED_PM]), - uud::kDalUint8, 1 }, - { uudst::vtunnel_interface::kDbiValidOperStatus, ST_META_VAL, offsetof( - val_db_vtunnel_if_st, - vtunnel_if_val_st.valid[UPLL_IDX_IF_OPER_STATUS_VTNLI]), - uud::kDalUint8, 1 }, - { uudst::vtunnel_interface::kDbiCsRowstatus, CS_VAL, - offsetof(val_vtunnel_if, - cs_row_status), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiCsDesc, CS_VAL, offsetof(val_vtunnel_if, - cs_attr[UPLL_IDX_DESC_VTNL_IF]), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiCsAdminStatus, CS_VAL, - offsetof(val_vtunnel_if, - cs_attr[UPLL_IDX_ADMIN_ST_VTNL_IF]), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiCsPortMap, CS_VAL, offsetof(val_vtunnel_if, - cs_attr[UPLL_IDX_PORT_MAP_VTNL_IF]), uud::kDalUint8, 1}, - { uudst::vtunnel_interface::kDbiCsLogicalPortId, CS_VAL, offsetof( - val_vtunnel_if, portmap.cs_attr[UPLL_IDX_LOGICAL_PORT_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vtunnel_interface::kDbiCsVlanid, CS_VAL, offsetof( - val_vtunnel_if, portmap.cs_attr[UPLL_IDX_VLAN_ID_PM]), - uud::kDalUint8, 1 }, - { uudst::vtunnel_interface::kDbiCsTagged, CS_VAL, offsetof( - val_vtunnel_if, portmap.cs_attr[UPLL_IDX_TAGGED_PM]), - uud::kDalUint8, 1 } - }; + down_count), uud::kDalUint32, 1 }, + { uudst::vtunnel_interface::kDbiCtrlrName, + CK_VAL, + offsetof(key_user_data, + ctrlr_id), + uud::kDalChar, 32}, + { uudst::vtunnel_interface::kDbiDomainId, + CK_VAL, + offsetof(key_user_data, + domain_id), + uud::kDalChar, 32}, + { uudst::vtunnel_interface::kDbiFlags, CK_VAL, offsetof(key_user_data, + flags), + uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiValidDesc, CFG_META_VAL, offsetof( + val_vtunnel_if, valid[UPLL_IDX_DESC_VTNL_IF]), + uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiValidAdminStatus, + CFG_DEF_VAL, + offsetof( + val_vtunnel_if, valid[UPLL_IDX_ADMIN_ST_VTNL_IF]), + uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiValidPortMap, + CFG_META_VAL, offsetof( + val_vtunnel_if, valid[UPLL_IDX_PORT_MAP_VTNL_IF]), + uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiValidLogicalPortId, + CFG_META_VAL, + offsetof + (val_vtunnel_if, portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM]), + uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiValidVlanid, CFG_META_VAL, offsetof( + val_vtunnel_if, portmap.valid[UPLL_IDX_VLAN_ID_PM]), + uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiValidTagged, CFG_META_VAL, offsetof( + val_vtunnel_if, portmap.valid[UPLL_IDX_TAGGED_PM]), + uud::kDalUint8, 1 }, + { uudst::vtunnel_interface::kDbiValidOperStatus, + ST_META_VAL, + offsetof( + val_db_vtunnel_if_st, + vtunnel_if_val_st.valid[UPLL_IDX_IF_OPER_STATUS_VTNLI]), + uud::kDalUint8, 1 }, + { uudst::vtunnel_interface::kDbiCsRowstatus, CS_VAL, + offsetof(val_vtunnel_if, + cs_row_status), uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiCsDesc, CS_VAL, offsetof( + val_vtunnel_if, + cs_attr[UPLL_IDX_DESC_VTNL_IF]), + uud::kDalUint8, + 1}, + { uudst::vtunnel_interface::kDbiCsAdminStatus, CS_VAL, + offsetof(val_vtunnel_if, + cs_attr[UPLL_IDX_ADMIN_ST_VTNL_IF]), uud::kDalUint8, 1}, + { uudst::vtunnel_interface::kDbiCsPortMap, CS_VAL, offsetof( + val_vtunnel_if, + cs_attr[UPLL_IDX_PORT_MAP_VTNL_IF]), + uud::kDalUint8, + 1}, + { uudst::vtunnel_interface::kDbiCsLogicalPortId, CS_VAL, offsetof( + val_vtunnel_if, + portmap.cs_attr[UPLL_IDX_LOGICAL_PORT_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vtunnel_interface::kDbiCsVlanid, CS_VAL, offsetof( + val_vtunnel_if, portmap.cs_attr[UPLL_IDX_VLAN_ID_PM]), + uud::kDalUint8, 1 }, + { uudst::vtunnel_interface::kDbiCsTagged, CS_VAL, offsetof( + val_vtunnel_if, portmap.cs_attr[UPLL_IDX_TAGGED_PM]), + uud::kDalUint8, 1 } +}; VtunnelIfMoMgr::VtunnelIfMoMgr() { UPLL_FUNC_TRACE; Table *tbl = new Table(uudst::kDbiVtunnelIfTbl, UNC_KT_VTUNNEL_IF, - vtunnel_if_bind_info, - IpctSt::kIpcStKeyVtunnelIf, IpctSt::kIpcStValVtunnelIf, - uudst::vtunnel_interface::kDbiVtunnelIfNumCols); + vtunnel_if_bind_info, + IpctSt::kIpcStKeyVtunnelIf, IpctSt::kIpcStValVtunnelIf, + uudst::vtunnel_interface::kDbiVtunnelIfNumCols); ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = tbl; @@ -108,12 +135,44 @@ VtunnelIfMoMgr::VtunnelIfMoMgr() { } upll_rc_t VtunnelIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, - DalDmlIntf *dmi, - IpcReqRespHeader *req) { + DalDmlIntf *dmi, + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (!ikey || (ikey->get_key_type() != UNC_KT_VTUNNEL_IF) - || !(ikey->get_cfg_val())) + || !(ikey->get_cfg_val())) + return UPLL_RC_ERR_CFG_SYNTAX; + val_vtunnel_if *vtunnelif_val = static_cast(GetVal(ikey)); + if (!vtunnelif_val) { + if (req->operation == UNC_OP_CREATE) { + UPLL_LOG_DEBUG("Val Structure is Null"); + return UPLL_RC_SUCCESS; + } else { + UPLL_LOG_DEBUG("Val structure is must"); + return UPLL_RC_ERR_GENERIC; + } + } + result_code = IsLogicalPortAndVlanIdInUse(ikey, dmi, req); + if (result_code != UPLL_RC_SUCCESS) { + UPLL_LOG_ERROR("Returning error %d\n", result_code); + return result_code; + } + // PortMap Validation + uint32_t operation = req->operation; + if (operation == UNC_OP_UPDATE) { + result_code = UpdateConfigVal(ikey, UPLL_DT_CANDIDATE, dmi); + UPLL_LOG_TRACE("UpdateConfigVal returned %d", result_code); + } + return result_code; +} + +upll_rc_t VtunnelIfMoMgr::IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ikey, + DalDmlIntf *dmi, + IpcReqRespHeader *req) { + UPLL_FUNC_TRACE; + upll_rc_t result_code = UPLL_RC_SUCCESS; + if (!ikey || (ikey->get_key_type() != UNC_KT_VTUNNEL_IF) + || !(ikey->get_cfg_val())) return UPLL_RC_ERR_CFG_SYNTAX; val_vtunnel_if *vtunnelif_val = static_cast(GetVal(ikey)); if (!vtunnelif_val) { @@ -121,36 +180,38 @@ upll_rc_t VtunnelIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, } if (vtunnelif_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == UNC_VF_VALID) { if (vtunnelif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] - == UNC_VF_VALID && + == UNC_VF_VALID && vtunnelif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { key_vtunnel_if *vtunnel_key_if = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel_if))); + (ConfigKeyVal::Malloc(sizeof(key_vtunnel_if))); val_vtunnel_if *vtunnelif_val_filter = static_cast - (ConfigKeyVal::Malloc(sizeof(val_vtunnel_if))); + (ConfigKeyVal::Malloc(sizeof(val_vtunnel_if))); vtunnelif_val_filter->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_VALID; + UNC_VF_VALID; vtunnelif_val_filter->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; uuu::upll_strncpy(vtunnelif_val_filter->portmap.logical_port_id, vtunnelif_val->portmap.logical_port_id, kMaxLenLogicalPortId+1); vtunnelif_val_filter->portmap.vlan_id = vtunnelif_val->portmap.vlan_id; ConfigKeyVal *vtunnelif_ckv = new ConfigKeyVal(UNC_KT_VTUNNEL_IF, - IpctSt::kIpcStKeyVtunnelIf, vtunnel_key_if, NULL); + IpctSt::kIpcStKeyVtunnelIf, + vtunnel_key_if, + NULL); vtunnelif_ckv->AppendCfgVal(IpctSt::kIpcStValVtunnelIf, - vtunnelif_val_filter); + vtunnelif_val_filter); SET_USER_DATA(vtunnelif_ckv, ikey); // Read from the DB DbSubOp dbop = { kOpReadMultiple, kOpMatchCtrlr | kOpMatchDomain, - kOpInOutFlag}; + kOpInOutFlag}; result_code = ReadConfigDB(vtunnelif_ckv, UPLL_DT_CANDIDATE, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code == UPLL_RC_SUCCESS) { - // check different interface has the same port and lan id + // check different interface has the same port and lan id ConfigKeyVal *tmp = vtunnelif_ckv; while (tmp) { if (!memcmp((ikey->get_key()), (tmp->get_key()), - sizeof(key_vtunnel_if))) { + sizeof(key_vtunnel_if))) { UPLL_LOG_TRACE("Looking on the Same key"); } else { UPLL_LOG_DEBUG("Same port Id and VlanId is used on different " @@ -173,12 +234,6 @@ upll_rc_t VtunnelIfMoMgr::ValidateAttribute(ConfigKeyVal *ikey, } } UPLL_LOG_TRACE("PortId and VlanId is not used on any Vtunnel Interface"); - // PortMap Validation - uint32_t operation = req->operation; - if (operation == UNC_OP_UPDATE) { - result_code = UpdateConfigVal(ikey, UPLL_DT_CANDIDATE, dmi); - UPLL_LOG_TRACE("UpdateConfigVal returned %d", result_code); - } return result_code; } @@ -189,8 +244,8 @@ bool VtunnelIfMoMgr::IsValidKey(void *key, uint64_t index) { switch (index) { case uudst::vtunnel_interface::kDbiVtnName: ret_val = ValidateKey(reinterpret_cast - (if_key->vtunnel_key.vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + (if_key->vtunnel_key.vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; @@ -198,8 +253,8 @@ bool VtunnelIfMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vtunnel_interface::kDbiVtunnelName: ret_val = ValidateKey(reinterpret_cast - (if_key->vtunnel_key.vtunnel_name), - kMinLenVnodeName, kMaxLenVnodeName); + (if_key->vtunnel_key.vtunnel_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Vtunnel Name is not valid(%d)", ret_val); return false; @@ -207,8 +262,8 @@ bool VtunnelIfMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vtunnel_interface::kDbiIfName: ret_val = ValidateKey(reinterpret_cast - (if_key->if_name), - kMinLenInterfaceName, kMaxLenInterfaceName); + (if_key->if_name), + kMinLenInterfaceName, kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Vtunnel IF Name is not valid(%d)", ret_val); return false; @@ -222,42 +277,43 @@ bool VtunnelIfMoMgr::IsValidKey(void *key, uint64_t index) { } upll_rc_t VtunnelIfMoMgr::GetValid(void *val, uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl ) { + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl ) { UPLL_FUNC_TRACE; if (val == NULL) return UPLL_RC_ERR_GENERIC; if (tbl == MAINTBL) { switch (indx) { case uudst::vtunnel_interface::kDbiOperStatus: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_IF_OPER_STATUS_VTNLI]; + valid[UPLL_IDX_IF_OPER_STATUS_VTNLI]; break; case uudst::vtunnel_interface::kDbiDownCount: valid = NULL; break; case uudst::vtunnel_interface::kDbiAdminStatus: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_ADMIN_ST_VTNL_IF]; + valid[UPLL_IDX_ADMIN_ST_VTNL_IF]; break; case uudst::vtunnel_interface::kDbiDesc: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DESC_VTNL_IF]; + valid[UPLL_IDX_DESC_VTNL_IF]; break; case uudst::vtunnel_interface::kDbiValidPortMap: valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_PORT_MAP_VTNL_IF]; + valid[UPLL_IDX_PORT_MAP_VTNL_IF]; break; case uudst::vtunnel_interface::kDbiLogicalPortId: valid = &(reinterpret_cast(val))->portmap. - valid[UPLL_IDX_LOGICAL_PORT_ID_PM]; + valid[UPLL_IDX_LOGICAL_PORT_ID_PM]; break; case uudst::vtunnel_interface::kDbiVlanId: valid = &(reinterpret_cast(val))->portmap. - valid[UPLL_IDX_VLAN_ID_PM]; + valid[UPLL_IDX_VLAN_ID_PM]; break; case uudst::vtunnel_interface::kDbiTagged: valid = &(reinterpret_cast(val))->portmap. - valid[UPLL_IDX_TAGGED_PM]; + valid[UPLL_IDX_TAGGED_PM]; break; default: return UPLL_RC_ERR_GENERIC; @@ -267,18 +323,18 @@ upll_rc_t VtunnelIfMoMgr::GetValid(void *val, uint64_t indx, } upll_rc_t VtunnelIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key) { + ConfigKeyVal *parent_key) { UPLL_FUNC_TRACE; bool cfgval_ctrlr = false; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtunnel_if *vtunnel_key_if = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel_if))); + (ConfigKeyVal::Malloc(sizeof(key_vtunnel_if))); if (vtunnel_key_if == NULL) return UPLL_RC_ERR_GENERIC; void *pkey; if (parent_key == NULL) { if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VTUNNEL_IF, IpctSt::kIpcStKeyVtunnelIf, - vtunnel_key_if, NULL); + vtunnel_key_if, NULL); return UPLL_RC_SUCCESS; } else { pkey = parent_key->get_key(); @@ -294,7 +350,7 @@ upll_rc_t VtunnelIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, vtunnel_key_if = static_cast(okey->get_key()); } else { okey = new ConfigKeyVal(UNC_KT_VTUNNEL_IF, IpctSt::kIpcStKeyVtunnelIf, - vtunnel_key_if, NULL); + vtunnel_key_if, NULL); if (okey == NULL) { FREE_IF_NOT_NULL(vtunnel_key_if); return UPLL_RC_ERR_GENERIC; @@ -304,17 +360,18 @@ upll_rc_t VtunnelIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(vtunnel_key_if->vtunnel_key.vtn_key.vtn_name, - static_cast(pkey)->vtn_name, (kMaxLenVtnName+1)); + static_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); *(vtunnel_key_if->vtunnel_key.vtunnel_name) = *""; break; case UNC_KT_VTUNNEL: uuu::upll_strncpy(vtunnel_key_if->vtunnel_key.vtn_key.vtn_name, - static_cast - (pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + static_cast + (pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vtunnel_key_if->vtunnel_key.vtunnel_name, - static_cast(pkey)->vtunnel_name, - (kMaxLenVnodeName+1)); + static_cast(pkey)->vtunnel_name, + (kMaxLenVnodeName+1)); break; case UNC_KT_VTUNNEL_IF: uuu::upll_strncpy(vtunnel_key_if->vtunnel_key.vtn_key.vtn_name, @@ -357,7 +414,7 @@ upll_rc_t VtunnelIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, vnode_name, (kMaxLenVnodeName+1)); if (if_name) uuu::upll_strncpy(vtunnel_key_if->if_name, if_name, - (kMaxLenInterfaceName+1)); + (kMaxLenInterfaceName+1)); } default: break; @@ -371,21 +428,21 @@ upll_rc_t VtunnelIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } upll_rc_t VtunnelIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vtunnel_if *pkey = reinterpret_cast - ((ikey)?ikey->get_key():NULL); + ((ikey)?ikey->get_key():NULL); if (!pkey) return UPLL_RC_ERR_GENERIC; if (ikey->get_key_type() != UNC_KT_VTUNNEL_IF) return UPLL_RC_ERR_GENERIC; key_vtunnel *vtunnel_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); + (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); if (!vtunnel_key) return UPLL_RC_ERR_GENERIC; uuu::upll_strncpy(vtunnel_key->vtn_key.vtn_name, - (pkey)->vtunnel_key.vtn_key.vtn_name, - (kMaxLenVtnName+1)); + (pkey)->vtunnel_key.vtn_key.vtn_name, + (kMaxLenVtnName+1)); uuu::upll_strncpy(vtunnel_key->vtunnel_name, (pkey)->vtunnel_key.vtunnel_name, (kMaxLenVnodeName+1)); if (okey) delete okey; @@ -402,14 +459,15 @@ upll_rc_t VtunnelIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, upll_rc_t VtunnelIfMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; if (ck_val != NULL) return UPLL_RC_ERR_GENERIC; switch (tbl) { case MAINTBL: val = reinterpret_cast(ConfigKeyVal::Malloc - (sizeof(val_vtunnel_if))); + (sizeof(val_vtunnel_if))); if (!val) return UPLL_RC_ERR_GENERIC; ck_val = new ConfigVal(IpctSt::kIpcStValVtunnelIf, val); if (!ck_val) { @@ -418,7 +476,7 @@ upll_rc_t VtunnelIfMoMgr::AllocVal(ConfigVal *&ck_val, } if (dt_type == UPLL_DT_STATE) { val = reinterpret_cast(ConfigKeyVal::Malloc - (sizeof(val_db_vtunnel_if_st))); + (sizeof(val_db_vtunnel_if_st))); if (!val) { delete ck_val; return UPLL_RC_ERR_GENERIC; @@ -439,7 +497,7 @@ upll_rc_t VtunnelIfMoMgr::AllocVal(ConfigVal *&ck_val, } upll_rc_t VtunnelIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { + ConfigKeyVal *&req, MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) return UPLL_RC_ERR_GENERIC; if (okey != NULL) return UPLL_RC_ERR_GENERIC; @@ -463,10 +521,11 @@ upll_rc_t VtunnelIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, tmp = tmp->get_next_cfg_val(); }; if (tmp) { - if (tbl == MAINTBL) { + if (tbl == MAINTBL) { val_db_vtunnel_if_st *ival = reinterpret_cast - (tmp->get_val()); - val_db_vtunnel_if_st *val_db_vtunnel_if = reinterpret_cast + (tmp->get_val()); + val_db_vtunnel_if_st *val_db_vtunnel_if = + reinterpret_cast (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_if_st))); if (!val_db_vtunnel_if) { delete tmp1; @@ -501,8 +560,8 @@ upll_rc_t VtunnelIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } upll_rc_t VtunnelIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, - upll_keytype_datatype_t datatype, - DalDmlIntf *dmi) { + upll_keytype_datatype_t datatype, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; ConfigKeyVal *okey = NULL; @@ -512,7 +571,7 @@ upll_rc_t VtunnelIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, return UPLL_RC_ERR_GENERIC; } val_vtunnel_if *vtunnelif_val = static_cast - (GetVal(ikey)); + (GetVal(ikey)); if (!vtunnelif_val) { UPLL_LOG_DEBUG("Value Structure is Null"); return UPLL_RC_ERR_GENERIC; @@ -533,7 +592,7 @@ upll_rc_t VtunnelIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, GET_USER_DATA_FLAGS(okey, flag); if (vtunnelif_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == UNC_VF_VALID || vtunnelif_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF] - == UNC_VF_VALID_NO_VALUE) { + == UNC_VF_VALID_NO_VALUE) { if (flag & VIF_TYPE) { DELETE_IF_NOT_NULL(okey); UPLL_LOG_DEBUG("Interface is linked/bounded with Vlink. " @@ -542,9 +601,9 @@ upll_rc_t VtunnelIfMoMgr::UpdateConfigVal(ConfigKeyVal *ikey, } } if (vtunnelif_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == - UNC_VF_VALID_NO_VALUE) { + UNC_VF_VALID_NO_VALUE) { vtunnelif_val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID_NO_VALUE; vtunnelif_val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; vtunnelif_val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID_NO_VALUE; uuu::upll_strncpy(vtunnelif_val->portmap.logical_port_id, "\0", 1); @@ -569,12 +628,12 @@ upll_rc_t VtunnelIfMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { } while (cval) { if (IpctSt::kIpcStValVtunnelIf == cval->get_st_num()) { - // set admin status to valid no value + // set admin status to valid no value val_vtunnel_if *vtunnelif_val = reinterpret_cast - (GetVal(ikey)); + (GetVal(ikey)); if (vtunnelif_val->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] == UNC_VF_INVALID) vtunnelif_val->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = - UNC_VF_VALID_NO_VALUE; + UNC_VF_VALID_NO_VALUE; uint8_t vlink_flag = 0; GET_USER_DATA_FLAGS(ikey, vlink_flag); @@ -584,12 +643,12 @@ upll_rc_t VtunnelIfMoMgr::AdaptValToVtnService(ConfigKeyVal *ikey) { } if (IpctSt::kIpcStValVtunnelIfSt == cval->get_st_num()) { val_vtunnel_if_st *vtunnelif_stval = - reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtunnel_if_st))); + reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtunnel_if_st))); val_db_vtunnel_if_st *db_vtunnelif_stval = - reinterpret_cast(cval->get_val()); + reinterpret_cast(cval->get_val()); memcpy(vtunnelif_stval, &db_vtunnelif_stval->vtunnel_if_val_st, - sizeof(val_vtunnel_if_st)); + sizeof(val_vtunnel_if_st)); cval->SetVal(IpctSt::kIpcStValVtunnelIfSt, vtunnelif_stval); } cval = cval->get_next_cfg_val(); @@ -618,7 +677,7 @@ bool VtunnelIfMoMgr::CompareValidValue(void *&val1, void *val2, val_vtunnel_if_t *val_vtunnelif1 = reinterpret_cast(val1); val_vtunnel_if_t *val_vtunnelif2 = reinterpret_cast(val2); for (unsigned int loop = 0; - loop < sizeof(val_vtunnelif1->valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val_vtunnelif1->valid)/sizeof(uint8_t); ++loop ) { if (UNC_VF_INVALID == val_vtunnelif1->valid[loop] && UNC_VF_VALID == val_vtunnelif2->valid[loop]) val_vtunnelif1->valid[loop] = UNC_VF_VALID_NO_VALUE; @@ -626,18 +685,18 @@ bool VtunnelIfMoMgr::CompareValidValue(void *&val1, void *val2, if (UNC_VF_VALID == val_vtunnelif1->valid[UPLL_IDX_DESC_VTNL_IF] && UNC_VF_VALID == val_vtunnelif2->valid[UPLL_IDX_DESC_VTNL_IF]) { if (!strcmp(reinterpret_cast(val_vtunnelif1->description), - reinterpret_cast(val_vtunnelif2->description))) + reinterpret_cast(val_vtunnelif2->description))) val_vtunnelif1->valid[UPLL_IDX_DESC_VTNL_IF] = UNC_VF_INVALID; } if (UNC_VF_INVALID != val_vtunnelif1->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] - && UNC_VF_INVALID != val_vtunnelif2->valid[UPLL_IDX_ADMIN_ST_VTNL_IF]) { + && UNC_VF_INVALID != val_vtunnelif2->valid[UPLL_IDX_ADMIN_ST_VTNL_IF]) { if (val_vtunnelif1->admin_status == val_vtunnelif2->admin_status) val_vtunnelif1->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } for (unsigned int loop = 0; - loop < sizeof(val_vtunnelif1->portmap.valid)/sizeof(uint8_t); ++loop ) { + loop < sizeof(val_vtunnelif1->portmap.valid)/sizeof(uint8_t); ++loop ) { if (UNC_VF_INVALID == val_vtunnelif1->portmap.valid[loop] && UNC_VF_VALID == val_vtunnelif2->portmap.valid[loop]) val_vtunnelif1->portmap.valid[loop] = UNC_VF_VALID_NO_VALUE; @@ -645,18 +704,18 @@ bool VtunnelIfMoMgr::CompareValidValue(void *&val1, void *val2, if (val_vtunnelif1->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == UNC_VF_VALID && val_vtunnelif2->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == UNC_VF_VALID) { if (memcmp(&(val_vtunnelif1->portmap), &(val_vtunnelif2->portmap), - sizeof(val_port_map_t))) { + sizeof(val_port_map_t))) { if (val_vtunnelif1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID && val_vtunnelif2->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID) { if (!strcmp(reinterpret_cast - (val_vtunnelif1->portmap.logical_port_id), - reinterpret_cast - (val_vtunnelif2->portmap.logical_port_id))) + (val_vtunnelif1->portmap.logical_port_id), + reinterpret_cast + (val_vtunnelif2->portmap.logical_port_id))) val_vtunnelif1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } if (val_vtunnelif1->portmap.valid[UPLL_IDX_VLAN_ID_PM] != UNC_VF_INVALID @@ -664,8 +723,8 @@ bool VtunnelIfMoMgr::CompareValidValue(void *&val1, void *val2, UNC_VF_INVALID) { if (val_vtunnelif1->portmap.vlan_id == val_vtunnelif2->portmap.vlan_id) val_vtunnelif1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } if (val_vtunnelif1->portmap.valid[UPLL_IDX_TAGGED_PM] != UNC_VF_INVALID @@ -673,36 +732,36 @@ bool VtunnelIfMoMgr::CompareValidValue(void *&val1, void *val2, UNC_VF_INVALID) { if (val_vtunnelif1->portmap.tagged == val_vtunnelif2->portmap.tagged) val_vtunnelif1->portmap.valid[UPLL_IDX_TAGGED_PM] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } } else { val_vtunnelif1->valid[UPLL_IDX_PORT_MAP_VTNL_IF] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; val_vtunnelif1->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; val_vtunnelif1->portmap.valid[UPLL_IDX_VLAN_ID_PM] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; val_vtunnelif1->portmap.valid[UPLL_IDX_TAGGED_PM] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } } if (!copy_to_running) val_vtunnelif1->valid[UPLL_IDX_DESC_VTNL_IF] = UNC_VF_INVALID; for (unsigned int loop = 0; - loop < sizeof(val_vtunnelif1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vtunnelif1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vtunnelif1->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vtunnelif1->valid[loop])) { if (loop == UPLL_IDX_PORT_MAP_VTNL_IF) { for (unsigned int i = 0; - i < sizeof(val_vtunnelif1->portmap.valid) / sizeof(uint8_t); ++i) { + i < sizeof(val_vtunnelif1->portmap.valid) / sizeof(uint8_t); ++i) { if ((UNC_VF_VALID == (uint8_t) val_vtunnelif1->portmap.valid[i]) || - (UNC_VF_VALID_NO_VALUE == - (uint8_t) val_vtunnelif1->portmap.valid[i])) { + (UNC_VF_VALID_NO_VALUE == + (uint8_t) val_vtunnelif1->portmap.valid[i])) { invalid_attr = false; break; } @@ -717,48 +776,48 @@ bool VtunnelIfMoMgr::CompareValidValue(void *&val1, void *val2, } upll_rc_t VtunnelIfMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnelif_keyval, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_vtunnel_if_t *vtunnel_if_val = - static_cast(GetVal(vtunnelif_keyval)); + static_cast(GetVal(vtunnelif_keyval)); if (vtunnel_if_val == NULL) return UPLL_RC_ERR_GENERIC; unc_keytype_configstatus_t cs_status = (driver_result == UPLL_RC_SUCCESS)? - UNC_CS_APPLIED:UNC_CS_NOT_APPLIED; + UNC_CS_APPLIED:UNC_CS_NOT_APPLIED; UPLL_LOG_TRACE("DriverResult %d, ConfigStatus %d", driver_result, cs_status); UPLL_LOG_TRACE("%s", (vtunnelif_keyval->ToStrAll()).c_str()); val_vtunnel_if_t *val_running = static_cast - (GetVal(upd_key)); + (GetVal(upd_key)); if (op == UNC_OP_CREATE) { vtunnel_if_val->cs_row_status = cs_status; val_db_vtunnel_if_st *vtunnel_db_valst = static_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_if_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_if_st))); if (vtunnel_db_valst == NULL) return UPLL_RC_ERR_GENERIC; vtunnelif_keyval->AppendCfgVal(IpctSt::kIpcStValVtunnelIfSt, - vtunnel_db_valst); + vtunnel_db_valst); #if 0 upll_rc_t result_code = InitOperStatus - (vtunnelif_keyval, - vtunnel_if_val->valid[UPLL_IDX_ADMIN_ST_VTNL_IF], - vtunnel_if_val->admin_status, - vtunnel_if_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF], - &vtunnel_if_val->portmap); + val_db_vtunnel_if_st> + (vtunnelif_keyval, + vtunnel_if_val->valid[UPLL_IDX_ADMIN_ST_VTNL_IF], + vtunnel_if_val->admin_status, + vtunnel_if_val->valid[UPLL_IDX_PORT_MAP_VTNL_IF], + &vtunnel_if_val->portmap); if (result_code != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Error settiing oper status"); return UPLL_RC_ERR_GENERIC; } #else - val_vtunnel_if_st *vnif_st = &vtunnel_db_valst->vtunnel_if_val_st; - if (!vnif_st) { - UPLL_LOG_DEBUG("Returning error\n"); - return UPLL_RC_ERR_GENERIC; - } - vnif_st->oper_status = UPLL_OPER_STATUS_UP; - vnif_st->valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS] = UNC_VF_VALID; + val_vtunnel_if_st *vnif_st = &vtunnel_db_valst->vtunnel_if_val_st; + if (!vnif_st) { + UPLL_LOG_DEBUG("Returning error\n"); + return UPLL_RC_ERR_GENERIC; + } + vnif_st->oper_status = UPLL_OPER_STATUS_UP; + vnif_st->valid[UPLL_IDX_IF_OPER_STATUS_VTEPIS] = UNC_VF_VALID; #endif vtunnel_db_valst->down_count = 0; } else if (op == UNC_OP_UPDATE) { @@ -766,13 +825,13 @@ upll_rc_t VtunnelIfMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnelif_keyval, CompareValidValue(val, GetVal(upd_key), true); UPLL_LOG_TRACE("%s", (upd_key->ToStrAll()).c_str()); vtunnel_if_val->cs_row_status = - val_running->cs_row_status; + val_running->cs_row_status; } else { return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; loop < - sizeof(vtunnel_if_val->valid) / sizeof(vtunnel_if_val->valid[0]); - ++loop) { + sizeof(vtunnel_if_val->valid) / sizeof(vtunnel_if_val->valid[0]); + ++loop) { if ((UNC_VF_VALID == (uint8_t) vtunnel_if_val->valid[loop]) || (UNC_VF_VALID_NO_VALUE == (uint8_t) vtunnel_if_val->valid[loop])) { if (loop == UPLL_IDX_DESC_VTNL_IF) @@ -781,18 +840,18 @@ upll_rc_t VtunnelIfMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnelif_keyval, vtunnel_if_val->cs_attr[loop] = cs_status; } else if ((UNC_VF_INVALID == vtunnel_if_val->valid[loop]) && (UNC_OP_CREATE == op)) { - vtunnel_if_val->cs_attr[loop] = UNC_CS_APPLIED; + vtunnel_if_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((vtunnel_if_val->valid[loop] == UNC_VF_INVALID) && - (UNC_OP_UPDATE == op)) { + (UNC_OP_UPDATE == op)) { vtunnel_if_val->cs_attr[loop] = - val_running->cs_attr[loop]; + val_running->cs_attr[loop]; } } for (unsigned int loop = 0; loop < sizeof(vtunnel_if_val->portmap.valid)/ - sizeof(vtunnel_if_val->portmap.valid[0]); ++loop ) { + sizeof(vtunnel_if_val->portmap.valid[0]); ++loop ) { if ((UNC_VF_VALID == vtunnel_if_val->portmap.valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vtunnel_if_val->portmap.valid[loop])) + || (UNC_VF_VALID_NO_VALUE == vtunnel_if_val->portmap.valid[loop])) vtunnel_if_val->portmap.cs_attr[loop] = cs_status; else if ((UNC_VF_INVALID == vtunnel_if_val->portmap.valid[loop]) && (UNC_OP_CREATE == op)) @@ -800,7 +859,7 @@ upll_rc_t VtunnelIfMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnelif_keyval, else if ((UNC_VF_INVALID == vtunnel_if_val->portmap.valid[loop]) && (UNC_OP_UPDATE == op)) vtunnel_if_val->portmap.cs_attr[loop] = - val_running->portmap.cs_attr[loop]; + val_running->portmap.cs_attr[loop]; } return UPLL_RC_SUCCESS; } @@ -808,30 +867,32 @@ upll_rc_t VtunnelIfMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnelif_keyval, upll_rc_t VtunnelIfMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtunnel_if_t *val; val = (ckv_running != NULL)?reinterpret_cast - (GetVal(ckv_running)):NULL; + (GetVal(ckv_running)):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(uint8_t); - ++loop ) { + ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) + cs_status == UNC_CS_APPLIED) val->cs_attr[loop] = cs_status; } for (unsigned int loop = 0; loop < sizeof(val->portmap.valid) / sizeof(uint8_t); ++loop) { if ((cs_status == UNC_CS_INVALID && - UNC_VF_VALID == val->portmap.valid[loop]) + UNC_VF_VALID == val->portmap.valid[loop]) || cs_status == UNC_CS_APPLIED) val->portmap.cs_attr[loop] = cs_status; } @@ -839,7 +900,7 @@ upll_rc_t VtunnelIfMoMgr::UpdateAuditConfigStatus( } upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; @@ -854,13 +915,13 @@ upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (ikey->get_st_num() != IpctSt::kIpcStKeyVtunnelIf) { UPLL_LOG_DEBUG("Invalid structure received.Expected struct-" - "kIpcStKeyVtunnelIf, received struct -%s ", - reinterpret_cast - (IpctSt::GetIpcStdef(ikey->get_st_num()))); + "kIpcStKeyVtunnelIf, received struct -%s ", + reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vtunnel_if_t *key_vtunnel_if = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); uint32_t dt_type = req->datatype; uint32_t operation = req->operation; @@ -877,7 +938,8 @@ upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == IpctSt::kIpcStValVtunnelIf)) { val_vtunnel_if = - reinterpret_cast (ikey->get_cfg_val()->get_val()); + reinterpret_cast + (ikey->get_cfg_val()->get_val()); } if (val_vtunnel_if != NULL) { ret_val = ValidateVTunnelIfValue(val_vtunnel_if, operation); @@ -891,12 +953,13 @@ upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } } else if ((operation == UNC_OP_CREATE) && - (dt_type == UPLL_DT_CANDIDATE)) { + (dt_type == UPLL_DT_CANDIDATE)) { val_vtunnel_if_t *val_vtunnel_if = NULL; if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == IpctSt::kIpcStValVtunnelIf)) { val_vtunnel_if = - reinterpret_cast (ikey->get_cfg_val()->get_val()); + reinterpret_cast + (ikey->get_cfg_val()->get_val()); } if (val_vtunnel_if != NULL) { ret_val = ValidateVTunnelIfValue(val_vtunnel_if, operation); @@ -910,13 +973,13 @@ upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_SUCCESS; } } else if (((operation == UNC_OP_READ) || - (operation == UNC_OP_READ_SIBLING) || - (operation == UNC_OP_READ_SIBLING_BEGIN) || - (operation == UNC_OP_READ_SIBLING_COUNT)) && - ((dt_type == UPLL_DT_CANDIDATE) || - ((dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP) || - (dt_type == UPLL_DT_STATE)))) { + (operation == UNC_OP_READ_SIBLING) || + (operation == UNC_OP_READ_SIBLING_BEGIN) || + (operation == UNC_OP_READ_SIBLING_COUNT)) && + ((dt_type == UPLL_DT_CANDIDATE) || + ((dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE)))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { val_vtunnel_if_t *val_vtunnel_if = NULL; @@ -924,8 +987,8 @@ upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, (ikey->get_cfg_val()->get_st_num() == IpctSt::kIpcStValVtunnelIf)) { val_vtunnel_if = - reinterpret_cast - (ikey->get_cfg_val()->get_val()); + reinterpret_cast + (ikey->get_cfg_val()->get_val()); } if (val_vtunnel_if != NULL) { ret_val = ValidateVTunnelIfValue(val_vtunnel_if); @@ -939,13 +1002,13 @@ upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_SUCCESS; } } else if ((option2 == UNC_OPT2_NEIGHBOR) && - (operation == UNC_OP_READ) && - (dt_type == UPLL_DT_STATE)) { + (operation == UNC_OP_READ) && + (dt_type == UPLL_DT_STATE)) { val_vtn_neighbor_t *val_vtn_neighbor = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == - IpctSt::kIpcStValVtnNeighbor)) { + IpctSt::kIpcStValVtnNeighbor)) { val_vtn_neighbor = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + (ikey->get_cfg_val()->get_val()); } if (val_vtn_neighbor != NULL) { ret_val = ValidateVtnNeighborValue(val_vtn_neighbor); @@ -968,18 +1031,18 @@ upll_rc_t VtunnelIfMoMgr::ValidateMessage(IpcReqRespHeader *req, } } else if ((operation == UNC_OP_DELETE) || - (operation == UNC_OP_READ_SIBLING_COUNT) || - (((operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP)))) { + (operation == UNC_OP_READ_SIBLING_COUNT) || + (((operation == UNC_OP_READ_NEXT) || + (operation == UNC_OP_READ_BULK)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP)))) { UPLL_LOG_TRACE("Value structure is none for this operation:%d", - operation); + operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Invalid datatype(%d) and operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } @@ -992,87 +1055,87 @@ upll_rc_t VtunnelIfMoMgr::ValidateVTunnelIfValue( upll_rc_t ret_val = UPLL_RC_SUCCESS; if (val_vtunnel_if->valid[UPLL_IDX_DESC_VTNL_IF] == UNC_VF_VALID) { if (!ValidateDesc(val_vtunnel_if->description, - kMinLenDescription, kMaxLenDescription)) { + kMinLenDescription, kMaxLenDescription)) { UPLL_LOG_DEBUG( "Syntax check failed.Desc- (%s)", val_vtunnel_if->description); return ret_val; } } else if ((val_vtunnel_if->valid[UPLL_IDX_DESC_VTNL_IF] == - UNC_VF_VALID_NO_VALUE) && - ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + UNC_VF_VALID_NO_VALUE) && + ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { val_vtunnel_if->description[0] = '\0'; } if (val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] == UNC_VF_VALID) { if (!ValidateNumericRange(val_vtunnel_if->admin_status, - (uint8_t) UPLL_ADMIN_ENABLE, - (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { + (uint8_t) UPLL_ADMIN_ENABLE, + (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { UPLL_LOG_DEBUG( "Syntax check failed.Admin_status- %d", val_vtunnel_if->admin_status); return ret_val; } } else if ((val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] == - UNC_VF_VALID_NO_VALUE) && - ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + UNC_VF_VALID_NO_VALUE) && + ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { val_vtunnel_if->admin_status = UPLL_ADMIN_ENABLE; } else if ( - (val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] == UNC_VF_INVALID) - && (operation == UNC_OP_CREATE)) { - val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_VALID_NO_VALUE; - val_vtunnel_if->admin_status = UPLL_ADMIN_ENABLE; + (val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] == UNC_VF_INVALID) + && (operation == UNC_OP_CREATE)) { + val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = UNC_VF_VALID_NO_VALUE; + val_vtunnel_if->admin_status = UPLL_ADMIN_ENABLE; } if (val_vtunnel_if->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == UNC_VF_VALID) { if (val_vtunnel_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == UNC_VF_VALID) { if (!ValidateStringRange( - reinterpret_cast(val_vtunnel_if->portmap.logical_port_id), - kMinLenLogicalPortId, kMaxLenLogicalPortId)) { + reinterpret_cast(val_vtunnel_if->portmap.logical_port_id), + kMinLenLogicalPortId, kMaxLenLogicalPortId)) { UPLL_LOG_DEBUG("Logical Port id syntax check failed." - "Received Logical Port Id - %s", - val_vtunnel_if->portmap.logical_port_id); + "Received Logical Port Id - %s", + val_vtunnel_if->portmap.logical_port_id); return UPLL_RC_ERR_CFG_SYNTAX; } if (toupper(val_vtunnel_if->portmap.logical_port_id[0]) == 'S' && toupper(val_vtunnel_if->portmap.logical_port_id[1]) == 'W') { UPLL_LOG_DEBUG("Invalid logical_port_id - %s", - val_vtunnel_if->portmap.logical_port_id); + val_vtunnel_if->portmap.logical_port_id); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (val_vtunnel_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == - UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { uuu::upll_strncpy(val_vtunnel_if->portmap.logical_port_id, " ", - kMaxLenLogicalPortId+1); + kMaxLenLogicalPortId+1); } if (val_vtunnel_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) { if ((val_vtunnel_if->portmap.vlan_id != 0xFFFF) && !ValidateNumericRange(val_vtunnel_if->portmap.vlan_id, - (uint16_t) kMinVlanId, (uint16_t) kMaxVlanId, - true, true)) { + (uint16_t) kMinVlanId, (uint16_t) kMaxVlanId, + true, true)) { UPLL_LOG_DEBUG("Vlan Id Number check failed." - "Received vlan_id - %d", - val_vtunnel_if->portmap.vlan_id); + "Received vlan_id - %d", + val_vtunnel_if->portmap.vlan_id); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (val_vtunnel_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] - == UNC_VF_VALID_NO_VALUE - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { val_vtunnel_if->portmap.vlan_id = 0; } if (val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) { if (!ValidateNumericRange((uint8_t) val_vtunnel_if->portmap.tagged, - (uint8_t) UPLL_VLAN_UNTAGGED, - (uint8_t) UPLL_VLAN_TAGGED, true, true)) { + (uint8_t) UPLL_VLAN_UNTAGGED, + (uint8_t) UPLL_VLAN_TAGGED, true, true)) { UPLL_LOG_DEBUG("Tagged Numeric range check failed." - "Received Tag - %d", - val_vtunnel_if->portmap.tagged); + "Received Tag - %d", + val_vtunnel_if->portmap.tagged); return UPLL_RC_ERR_CFG_SYNTAX; } } else if (((val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] - == UNC_VF_VALID_NO_VALUE) || - (val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] - == UNC_VF_INVALID)) - && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { + == UNC_VF_VALID_NO_VALUE) || + (val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] + == UNC_VF_INVALID)) + && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE)) { if (val_vtunnel_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) val_vtunnel_if->portmap.tagged = UPLL_VLAN_TAGGED; else @@ -1080,9 +1143,9 @@ upll_rc_t VtunnelIfMoMgr::ValidateVTunnelIfValue( val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; } } else if ((val_vtunnel_if->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == - UNC_VF_VALID_NO_VALUE) - && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { - memset(&(val_vtunnel_if->portmap), 0, sizeof(val_vtunnel_if->portmap)); + UNC_VF_VALID_NO_VALUE) + && (operation == UNC_OP_UPDATE || operation == UNC_OP_CREATE)) { + memset(&(val_vtunnel_if->portmap), 0, sizeof(val_vtunnel_if->portmap)); } return UPLL_RC_SUCCESS; @@ -1093,7 +1156,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateVTunnelIfKey( UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey( - reinterpret_cast(key_vtunnel_if->vtunnel_key.vtn_key.vtn_name), + reinterpret_cast(key_vtunnel_if->vtunnel_key.vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Vtn Name syntax check failed." @@ -1106,17 +1169,17 @@ upll_rc_t VtunnelIfMoMgr::ValidateVTunnelIfKey( kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Vtunnel Name syntax check failed." - "Received Vtunnel Name -%s", - key_vtunnel_if->vtunnel_key.vtunnel_name); + "Received Vtunnel Name -%s", + key_vtunnel_if->vtunnel_key.vtunnel_name); return UPLL_RC_ERR_CFG_SYNTAX; } if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { ret_val = ValidateKey(reinterpret_cast(key_vtunnel_if->if_name), - kMinLenInterfaceName, kMaxLenInterfaceName); + kMinLenInterfaceName, kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG( - "Syntax check failed.if_name- (%s)", key_vtunnel_if->if_name); + "Syntax check failed.if_name- (%s)", key_vtunnel_if->if_name); return ret_val; } } else { @@ -1137,7 +1200,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateVtnNeighborValue( kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed.conn_vnode_name-(%s)", - val_vtn_neighbor->connected_vnode_name); + val_vtn_neighbor->connected_vnode_name); return ret_val; } } @@ -1148,7 +1211,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateVtnNeighborValue( kMinLenInterfaceName, kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. connected_if_name-%s", - val_vtn_neighbor->connected_if_name); + val_vtn_neighbor->connected_if_name); return ret_val; } } @@ -1158,7 +1221,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateVtnNeighborValue( kMinLenVlinkName, kMaxLenVlinkName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed.connected_vlink_name=%s", - val_vtn_neighbor->connected_vlink_name); + val_vtn_neighbor->connected_vlink_name); return ret_val; } } @@ -1171,7 +1234,7 @@ upll_rc_t VtunnelIfMoMgr::ValVTunnelIfAttributeSupportCheck( UPLL_FUNC_TRACE; if ((val_vtunnel_if->valid[UPLL_IDX_DESC_VTNL_IF] == UNC_VF_VALID) || (val_vtunnel_if->valid[UPLL_IDX_DESC_VTNL_IF] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtunnel_if::kCapDesc] == 0) { val_vtunnel_if->valid[UPLL_IDX_DESC_VTNL_IF] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -1182,10 +1245,10 @@ upll_rc_t VtunnelIfMoMgr::ValVTunnelIfAttributeSupportCheck( } if ((val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] == UNC_VF_VALID) || (val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtunnel_if::kCapAdminStatus] == 0) { val_vtunnel_if->valid[UPLL_IDX_ADMIN_ST_VTNL_IF] = - UNC_VF_INVALID; + UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_DEBUG("AdminStatus not supported in pfc controller"); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; @@ -1196,12 +1259,12 @@ upll_rc_t VtunnelIfMoMgr::ValVTunnelIfAttributeSupportCheck( (val_vtunnel_if->valid[UPLL_IDX_PORT_MAP_VTNL_IF] == UNC_VF_VALID_NO_VALUE)) { if ((val_vtunnel_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] == - UNC_VF_VALID) + UNC_VF_VALID) || (val_vtunnel_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtunnel_if::kCapLogicalPortId] == 0) { val_vtunnel_if->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = - UNC_VF_INVALID; + UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_DEBUG("portmap.swich_id attr is not supported by ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; @@ -1210,10 +1273,10 @@ upll_rc_t VtunnelIfMoMgr::ValVTunnelIfAttributeSupportCheck( } if ((val_vtunnel_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] == UNC_VF_VALID) || (val_vtunnel_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtunnel_if::kCapVlanId] == 0) { val_vtunnel_if->portmap.valid[UPLL_IDX_VLAN_ID_PM] = - UNC_VF_INVALID; + UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_DEBUG("portmap.vlanid attr is not supported by ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; @@ -1222,10 +1285,10 @@ upll_rc_t VtunnelIfMoMgr::ValVTunnelIfAttributeSupportCheck( } if ((val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] == UNC_VF_VALID) || (val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtunnel_if::kCapTagged] == 0) { val_vtunnel_if->portmap.valid[UPLL_IDX_TAGGED_PM] = - UNC_VF_INVALID; + UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_DEBUG("portmap.Tagged attr is not supported by ctrlr "); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; @@ -1236,7 +1299,8 @@ upll_rc_t VtunnelIfMoMgr::ValVTunnelIfAttributeSupportCheck( return UPLL_RC_SUCCESS; } upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; if (!ikey || !req) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); @@ -1245,7 +1309,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; @@ -1253,7 +1317,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, } UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + ctrlr_name, req->operation); bool result_code = false; uint32_t max_instance_count = 0; @@ -1263,18 +1327,17 @@ upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: result_code = GetCreateCapability(ctrlr_name, - ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - cur_instance_count >= max_instance_count) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); + ikey->get_key_type(), + &max_attrs, + &attrs); break; case UNC_OP_READ: @@ -1282,7 +1345,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: result_code = GetReadCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); + ikey->get_key_type(), &max_attrs, &attrs); break; default: @@ -1292,15 +1355,15 @@ upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, if (!result_code) { UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " - "for operation(%d)", - ikey->get_key_type(), ctrlr_name, req->operation); + "for operation(%d)", + ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } val_vtunnel_if_t *val_vtunnel_if = NULL; if ((ikey->get_cfg_val()) && (ikey->get_cfg_val()->get_st_num() == IpctSt::kIpcStValVtunnelIf)) { val_vtunnel_if = - reinterpret_cast (ikey->get_cfg_val()->get_val()); + reinterpret_cast (ikey->get_cfg_val()->get_val()); } if (val_vtunnel_if) { @@ -1309,7 +1372,7 @@ upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, req->operation); } else { UPLL_LOG_DEBUG("Attribute list is empty for operation %d", - req->operation); + req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } @@ -1317,7 +1380,8 @@ upll_rc_t VtunnelIfMoMgr::ValidateCapability(IpcReqRespHeader *req, } upll_rc_t VtunnelIfMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; if (!ikey || !(ikey->get_key()) ||!dmi ) @@ -1344,9 +1408,10 @@ upll_rc_t VtunnelIfMoMgr::IsReferenced(ConfigKeyVal *ikey, return result_code; } -upll_rc_t VtunnelIfMoMgr::PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, - DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type) { +upll_rc_t VtunnelIfMoMgr::PopulateDriverDeleteCkv( + ConfigKeyVal *&vnpCkv, + DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type) { UPLL_FUNC_TRACE; upll_rc_t result = UPLL_RC_SUCCESS; ConfigKeyVal *vtunnelCkv = NULL; @@ -1354,8 +1419,8 @@ upll_rc_t VtunnelIfMoMgr::PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, return UPLL_RC_ERR_GENERIC; } VtunnelMoMgr *vtunnelObj = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VTUNNEL))); - if (NULL == vtunnelObj) { + (const_cast(GetMoManager(UNC_KT_VTUNNEL))); + if (NULL == vtunnelObj) { UPLL_LOG_DEBUG("Unable to get UNC_KT_VTUNNEL object"); return UPLL_RC_ERR_GENERIC; } @@ -1375,13 +1440,13 @@ upll_rc_t VtunnelIfMoMgr::PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, result = vtunnelObj->ReadConfigDB(vtunnelCkv, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if ((result != UPLL_RC_SUCCESS) || (!vtunnelCkv) - || (!(vtunnelCkv->get_cfg_val()))) { + || (!(vtunnelCkv->get_cfg_val()))) { UPLL_LOG_TRACE("Could not retrieve Vtunnel data. DB returned %d", result); DELETE_IF_NOT_NULL(vtunnelCkv); return UPLL_RC_ERR_GENERIC; } vnpdrv_val_vtunnel_if *vnp_vtunnel_if = static_cast - (ConfigKeyVal::Malloc(sizeof(vnpdrv_val_vtunnel_if))); + (ConfigKeyVal::Malloc(sizeof(vnpdrv_val_vtunnel_if))); val_vtunnel *vtunnel_val = static_cast(GetVal(vtunnelCkv)); vnp_vtunnel_if->label = vtunnel_val->label; vnp_vtunnel_if->valid[VNPDRV_IDX_LABEL_VTNL_IF] = UNC_VF_VALID; @@ -1395,6 +1460,6 @@ upll_rc_t VtunnelIfMoMgr::PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, return result; } -} // namesapce vtn +} // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vtunnel_if_momgr.hh b/coordinator/modules/upll/vtunnel_if_momgr.hh index 9da5659c..b9298c82 100644 --- a/coordinator/modules/upll/vtunnel_if_momgr.hh +++ b/coordinator/modules/upll/vtunnel_if_momgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,62 +29,63 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { private: static BindInfo vtunnel_if_bind_info[]; - /* @brief Returns admin and portmap information if portmap is - * valid. Else returns NULL for portmap - * + /* @brief Returns admin and portmap information if portmap is + * valid. Else returns NULL for portmap + * * @param[in] ikey Pointer to ConfigKeyVal - * @param[out] valid_pm portmap is valid + * @param[out] valid_pm portmap is valid * @param[out] pm pointer to portmap informtation if valid_pm - * @param[out] valid_admin admin_status valid value + * @param[out] valid_admin admin_status valid value * @param[out] admin_status value of admin_status * * @retval UPLL_RC_SUCCESS Completed successfully. * @retval UPLL_RC_ERR_GENERIC Generic failure. - * - **/ + * + **/ virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, - val_port_map_t *&pm, - uint8_t &valid_admin, - uint8_t &admin_status) { - UPLL_FUNC_TRACE; - if (ikey == NULL) return UPLL_RC_ERR_GENERIC; - val_vtunnel_if *ifval = reinterpret_cast - (GetVal(ikey)); - if (!ifval) { - UPLL_LOG_DEBUG("Invalid param"); - return UPLL_RC_ERR_GENERIC; - } - valid_pm = ifval->valid[UPLL_IDX_PORT_MAP_VTNL_IF]; - if (valid_pm == UNC_VF_VALID) - pm = &ifval->portmap; - else - pm = NULL; - valid_admin = ifval->valid[UPLL_IDX_ADMIN_ST_VTNL_IF]; - admin_status = ifval->admin_status; - return UPLL_RC_SUCCESS; + val_port_map_t *&pm, + uint8_t &valid_admin, + uint8_t &admin_status) { + UPLL_FUNC_TRACE; + if (ikey == NULL) return UPLL_RC_ERR_GENERIC; + val_vtunnel_if *ifval = reinterpret_cast + (GetVal(ikey)); + if (!ifval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + valid_pm = ifval->valid[UPLL_IDX_PORT_MAP_VTNL_IF]; + if (valid_pm == UNC_VF_VALID) + pm = &ifval->portmap; + else + pm = NULL; + valid_admin = ifval->valid[UPLL_IDX_ADMIN_ST_VTNL_IF]; + admin_status = ifval->admin_status; + return UPLL_RC_SUCCESS; } /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration * - * @param[in] val pointer to the value structure + * @param[in] val pointer to the value structure * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - + * @param[out] valid position of the variable in the valid array - * NULL if valid does not exist. * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value + * @param[in] tbl specifies the table containing the given value * **/ upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl); + upll_keytype_datatype_t dt_type, MoMgrTables tbl); upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - return UPLL_RC_SUCCESS; + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; } bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, - MoMgrTables tbl) { + int &nattr, + MoMgrTables tbl) { return true; } /** @@ -97,12 +98,12 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { * **/ bool FilterAttributes(void *&val1, void *val2, bool copy_to_running, - unc_keytype_operation_t op); + unc_keytype_operation_t op); /** * @brief Compares the valid value between two database records. * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. + * attribute as invalid in the first record. * * @param[in/out] val1 first record value instance. * @param[in] val2 second record value instance. @@ -115,18 +116,18 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { DalDmlIntf *dmi, IpcReqRespHeader *req); /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); + ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); /* @brief To convert the value structure read from DB to * VTNService during READ operations @@ -139,53 +140,57 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { upll_rc_t AdaptValToVtnService(ConfigKeyVal *ikey); /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); -/** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); -/** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING operations - * - * @param[in/out] key Pointer to the ConfigKeyVal Structure + upll_rc_t IsLogicalPortAndVlanIdInUse(ConfigKeyVal *ckv, + DalDmlIntf *dmi, + IpcReqRespHeader *req); + + /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING operations + * + * @param[in/out] key Pointer to the ConfigKeyVal Structure * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * + * * @retval UPLL_RC_SUCCESS Completed successfully. * @retval UPLL_RC_ERR_GENERIC Generic failure. * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist * **/ upll_rc_t PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, @@ -193,16 +198,19 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { upll_keytype_datatype_t dt_type); /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); + upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtunnelif_keyval, unc_keytype_operation_t op, uint32_t result, @@ -248,7 +256,7 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVTunnelIfValue(val_vtunnel_if_t *val_vtunnel_if, - uint32_t operation = UNC_OP_INVALID); + uint32_t operation = UNC_OP_INVALID); /** * @Brief Validates the syntax for KT_VTUNNEL_IF keytype value structure. @@ -278,7 +286,7 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); + const char * crtlr_name); /** * @Brief Checks if the specified key type and @@ -295,7 +303,7 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { */ upll_rc_t ValVTunnelIfAttributeSupportCheck( val_vtunnel_if_t *val_vtunnel_if, - const uint8_t* attrs, unc_keytype_operation_t operation); + const uint8_t* attrs, unc_keytype_operation_t operation); /* @brief This is semantic check for KEY_VTUNNEL_IF key type * in the update operation. @@ -322,14 +330,14 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { delete[] table; } /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ bool IsValidKey(void *tkey, uint64_t index); /* @brief Updates vtunnelif structure @@ -347,7 +355,7 @@ class VtunnelIfMoMgr : public VnodeChildMoMgr { upll_keytype_datatype_t datatype, DalDmlIntf *dmi); }; -} // namesapce vtn +} // namespace kt_momgr } // namespace upll } // namespace unc #endif diff --git a/coordinator/modules/upll/vtunnel_momgr.cc b/coordinator/modules/upll/vtunnel_momgr.cc index d0aab4f2..aa3e7550 100644 --- a/coordinator/modules/upll/vtunnel_momgr.cc +++ b/coordinator/modules/upll/vtunnel_momgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -47,7 +47,7 @@ BindInfo VtunnelMoMgr::vtunnel_bind_info[] = { offsetof(val_vtunnel, label), uud::kDalUint32, 1}, { uudst::vtunnel::kDbiOperStatus, ST_VAL, offsetof(val_db_vtunnel_st, - vtunnel_val_st.oper_status), + vtunnel_val_st.oper_status), uud::kDalUint8, 1}, { uudst::vtunnel::kDbiDownCount, ST_VAL, offsetof(val_db_vtunnel_st, down_count), @@ -86,15 +86,15 @@ BindInfo VtunnelMoMgr::vtunnel_bind_info[] = { }; unc_key_type_t VtunnelMoMgr::vtunnel_child[] = { - UNC_KT_VTUNNEL_IF + UNC_KT_VTUNNEL_IF }; VtunnelMoMgr::VtunnelMoMgr() { UPLL_FUNC_TRACE; Table *tbl = new Table(uudst::kDbiVtunnelTbl, UNC_KT_VTUNNEL, - vtunnel_bind_info, - IpctSt::kIpcStKeyVtunnel, IpctSt::kIpcStValVtunnel, - uudst::vtunnel::kDbiVtunnelNumCols+2); + vtunnel_bind_info, + IpctSt::kIpcStKeyVtunnel, IpctSt::kIpcStValVtunnel, + uudst::vtunnel::kDbiVtunnelNumCols+2); ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = tbl; @@ -114,8 +114,8 @@ bool VtunnelMoMgr::IsValidKey(void *key, uint64_t index) { switch (index) { case uudst::vtunnel::kDbiVtnName: ret_val = ValidateKey(reinterpret_cast - (vtun_key->vtn_key.vtn_name), - kMinLenVtnName, kMaxLenVtnName); + (vtun_key->vtn_key.vtn_name), + kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); return false; @@ -123,7 +123,7 @@ bool VtunnelMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vtunnel::kDbiVtunnelName: ret_val = ValidateKey(reinterpret_cast(vtun_key->vtunnel_name), - kMinLenVnodeName, kMaxLenVnodeName); + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Vtunnel Name is not valid(%d)", ret_val); return false; @@ -142,7 +142,7 @@ upll_rc_t VtunnelMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, upll_rc_t result_code = UPLL_RC_SUCCESS; void *pkey; key_vtunnel *vtunnel_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); + (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); if (vtunnel_key == NULL) return UPLL_RC_ERR_GENERIC; if (parent_key == NULL) { if (okey) delete okey; @@ -163,7 +163,7 @@ upll_rc_t VtunnelMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, vtunnel_key = static_cast(okey->get_key()); } else { okey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVtunnel, - vtunnel_key, NULL); + vtunnel_key, NULL); if (okey == NULL) { FREE_IF_NOT_NULL(vtunnel_key); return UPLL_RC_ERR_GENERIC; @@ -173,17 +173,17 @@ upll_rc_t VtunnelMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (parent_key->get_key_type()) { case UNC_KT_VTUNNEL: uuu::upll_strncpy(vtunnel_key->vtunnel_name, - static_cast - (pkey)->vtunnel_name, (kMaxLenVnodeName+1)); + static_cast + (pkey)->vtunnel_name, (kMaxLenVnodeName+1)); uuu::upll_strncpy(vtunnel_key->vtn_key.vtn_name, - static_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + static_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VTN: default: uuu::upll_strncpy(vtunnel_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); *(vtunnel_key->vtunnel_name) = ' '; vtunnel_key->vtunnel_name[1] = '\0'; } @@ -192,7 +192,7 @@ upll_rc_t VtunnelMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } upll_rc_t VtunnelMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey ) { + ConfigKeyVal *ikey ) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; @@ -200,18 +200,18 @@ upll_rc_t VtunnelMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, if (!pkey) return UPLL_RC_ERR_GENERIC; unc_key_type_t ikey_type = ikey->get_key_type(); if (ikey_type != UNC_KT_VTUNNEL) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; key_vtn *vtn_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn))); + (ConfigKeyVal::Malloc(sizeof(key_vtn))); if (!vtn_key) return UPLL_RC_ERR_GENERIC; uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); DELETE_IF_NOT_NULL(okey); okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); if (okey == NULL) { - FREE_IF_NOT_NULL(vtn_key); - result_code = UPLL_RC_ERR_GENERIC; + FREE_IF_NOT_NULL(vtn_key); + result_code = UPLL_RC_ERR_GENERIC; } else { SET_USER_DATA(okey, ikey); } @@ -220,7 +220,8 @@ upll_rc_t VtunnelMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, upll_rc_t VtunnelMoMgr::AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { UPLL_FUNC_TRACE; void *val; @@ -228,7 +229,7 @@ upll_rc_t VtunnelMoMgr::AllocVal(ConfigVal *&ck_val, switch (tbl) { case MAINTBL: val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtunnel))); + (ConfigKeyVal::Malloc(sizeof(val_vtunnel))); if (!val) return UPLL_RC_ERR_GENERIC; ck_val = new ConfigVal(IpctSt::kIpcStValVtunnel, val); if (!ck_val) { @@ -237,7 +238,7 @@ upll_rc_t VtunnelMoMgr::AllocVal(ConfigVal *&ck_val, } if (dt_type == UPLL_DT_STATE) { val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_st))); ConfigVal *ck_nxtval = new ConfigVal(IpctSt::kIpcStValVtunnelSt, val); if (!ck_nxtval) { delete ck_val; @@ -253,60 +254,60 @@ upll_rc_t VtunnelMoMgr::AllocVal(ConfigVal *&ck_val, } upll_rc_t VtunnelMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl) { + ConfigKeyVal *&req, MoMgrTables tbl) { UPLL_FUNC_TRACE; if (req == NULL) return UPLL_RC_ERR_GENERIC; if (okey != NULL) return UPLL_RC_ERR_GENERIC; if (req->get_key_type() != UNC_KT_VTUNNEL) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; ConfigVal *tmp1 = NULL, *tmp = (req)->get_cfg_val(); if (tmp) { - if (tbl == MAINTBL) { - val_vtunnel *ival = reinterpret_cast(GetVal(req)); - val_vtunnel *vtunnel_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_vtunnel))); - memcpy(vtunnel_val, ival, sizeof(val_vtunnel)); - tmp1 = new ConfigVal(IpctSt::kIpcStValVtunnel, vtunnel_val); - if (!tmp1) { - FREE_IF_NOT_NULL(vtunnel_val); - return UPLL_RC_ERR_GENERIC; - } + if (tbl == MAINTBL) { + val_vtunnel *ival = reinterpret_cast(GetVal(req)); + val_vtunnel *vtunnel_val = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(val_vtunnel))); + memcpy(vtunnel_val, ival, sizeof(val_vtunnel)); + tmp1 = new ConfigVal(IpctSt::kIpcStValVtunnel, vtunnel_val); + if (!tmp1) { + FREE_IF_NOT_NULL(vtunnel_val); + return UPLL_RC_ERR_GENERIC; } - tmp = tmp->get_next_cfg_val(); + } + tmp = tmp->get_next_cfg_val(); }; if (tmp) { - if (tbl == MAINTBL) { - val_db_vtunnel_st *ival = static_cast - (tmp->get_val()); - val_db_vtunnel_st *vtunnel_st = static_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_st))); - if (!vtunnel_st) { - delete tmp1; - return UPLL_RC_ERR_GENERIC; - } - memcpy(vtunnel_st, ival, sizeof(val_db_vtunnel_st)); - ConfigVal *tmp2 = new ConfigVal(IpctSt::kIpcStValVtunnelSt, - vtunnel_st); - if (!tmp2) { - delete tmp1; - FREE_IF_NOT_NULL(vtunnel_st); - return UPLL_RC_ERR_GENERIC; - } - tmp1->AppendCfgVal(tmp2); + if (tbl == MAINTBL) { + val_db_vtunnel_st *ival = static_cast + (tmp->get_val()); + val_db_vtunnel_st *vtunnel_st = static_cast + (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_st))); + if (!vtunnel_st) { + delete tmp1; + return UPLL_RC_ERR_GENERIC; } + memcpy(vtunnel_st, ival, sizeof(val_db_vtunnel_st)); + ConfigVal *tmp2 = new ConfigVal(IpctSt::kIpcStValVtunnelSt, + vtunnel_st); + if (!tmp2) { + delete tmp1; + FREE_IF_NOT_NULL(vtunnel_st); + return UPLL_RC_ERR_GENERIC; + } + tmp1->AppendCfgVal(tmp2); + } }; void *tkey = (req != NULL)?(req)->get_key():NULL; key_vtunnel *ikey = static_cast(tkey); key_vtunnel *vtunnel_key = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); + (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); if (!vtunnel_key) { delete tmp1; return UPLL_RC_ERR_GENERIC; } memcpy(vtunnel_key, ikey, sizeof(key_vtunnel)); okey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVtunnel, - vtunnel_key, tmp1); + vtunnel_key, tmp1); if (okey) { SET_USER_DATA(okey, req); } else { @@ -318,15 +319,15 @@ upll_rc_t VtunnelMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } upll_rc_t VtunnelMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnel_key, - unc_keytype_operation_t op, - uint32_t driver_result, - ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key) { + unc_keytype_operation_t op, + uint32_t driver_result, + ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key) { UPLL_FUNC_TRACE; val_db_vtunnel_st *vtunnelst_val; unc_keytype_configstatus_t cs_status = - (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; + (driver_result == UPLL_RC_SUCCESS) ? UNC_CS_APPLIED : UNC_CS_NOT_APPLIED; UPLL_LOG_TRACE("DriverResult %d, ConfigStatus %d", driver_result, cs_status); val_vtunnel *vtunnel_val = static_cast(GetVal(vtunnel_key)); if (vtunnel_val == NULL) return UPLL_RC_ERR_GENERIC; @@ -335,7 +336,7 @@ upll_rc_t VtunnelMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnel_key, if (op == UNC_OP_CREATE) { vtunnel_val->cs_row_status = cs_status; vtunnelst_val = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_st))); + (ConfigKeyVal::Malloc(sizeof(val_db_vtunnel_st))); vtunnelst_val->vtunnel_val_st.oper_status = UPLL_OPER_STATUS_UP; vtunnelst_val->vtunnel_val_st.valid[UPLL_IDX_OPER_STATUS_VTNLS] = UNC_VF_VALID; @@ -354,16 +355,16 @@ upll_rc_t VtunnelMoMgr::UpdateConfigStatus(ConfigKeyVal *vtunnel_key, loop < sizeof(vtunnel_val->valid)/sizeof(vtunnel_val->valid[0]); ++loop ) { if ((UNC_VF_VALID == vtunnel_val->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == vtunnel_val->valid[loop])) { + (UNC_VF_VALID_NO_VALUE == vtunnel_val->valid[loop])) { if (loop == UPLL_IDX_DESC_VTNL) vtunnel_val->cs_attr[loop] = UNC_CS_APPLIED; else vtunnel_val->cs_attr[loop] = cs_status; } else if ((vtunnel_val->valid[loop] == UNC_VF_INVALID) && - (UNC_OP_CREATE == op)) { + (UNC_OP_CREATE == op)) { vtunnel_val->cs_attr[loop] = UNC_CS_APPLIED; } else if ((vtunnel_val->valid[loop] == UNC_VF_INVALID) && - (UNC_OP_UPDATE == op)) { + (UNC_OP_UPDATE == op)) { vtunnel_val->cs_attr[loop] = val_running->cs_attr[loop]; } } @@ -395,10 +396,10 @@ bool VtunnelMoMgr::CompareValidValue(void *&val1, void *val2, valtunnel1->valid[loop] = UNC_VF_VALID_NO_VALUE; } if (UNC_VF_VALID == valtunnel1->valid[UPLL_IDX_DESC_VTNL] && - UNC_VF_VALID == valtunnel2->valid[UPLL_IDX_DESC_VTNL]) { + UNC_VF_VALID == valtunnel2->valid[UPLL_IDX_DESC_VTNL]) { if (!strcmp(reinterpret_cast(valtunnel1->description), reinterpret_cast(valtunnel2->description))) - valtunnel1->valid[UPLL_IDX_DESC_VTNL] = UNC_VF_INVALID; + valtunnel1->valid[UPLL_IDX_DESC_VTNL] = UNC_VF_INVALID; } if (UNC_VF_VALID == valtunnel1->valid[UPLL_IDX_CONTROLLER_ID_VTNL] && UNC_VF_VALID == valtunnel2->valid[UPLL_IDX_CONTROLLER_ID_VTNL]) { @@ -417,29 +418,29 @@ bool VtunnelMoMgr::CompareValidValue(void *&val1, void *val2, if (!strcmp(reinterpret_cast(valtunnel1->vtn_name), reinterpret_cast(valtunnel2->vtn_name))) valtunnel1->valid[UPLL_IDX_VTN_NAME_VTNL] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } if (UNC_VF_VALID == valtunnel1->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL] && UNC_VF_VALID == valtunnel2->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL]) { if (!strcmp(reinterpret_cast(valtunnel1->vtep_grp_name), reinterpret_cast(valtunnel2->vtep_grp_name))) valtunnel1->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } if (UNC_VF_VALID == valtunnel1->valid[UPLL_IDX_LABEL_VTNL] && UNC_VF_VALID == valtunnel2->valid[UPLL_IDX_LABEL_VTNL]) { if (valtunnel1->label == valtunnel2->label) valtunnel1->valid[UPLL_IDX_LABEL_VTNL] = - (copy_to_running)?UNC_VF_INVALID: - UNC_VF_VALUE_NOT_MODIFIED; + (copy_to_running)?UNC_VF_INVALID: + UNC_VF_VALUE_NOT_MODIFIED; } if (!copy_to_running) valtunnel1->valid[UPLL_IDX_DESC_VTNL] = UNC_VF_INVALID; for (unsigned int loop = 0; - loop < sizeof(valtunnel1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(valtunnel1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) valtunnel1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) valtunnel1->valid[loop])) { + (UNC_VF_VALID_NO_VALUE == (uint8_t) valtunnel1->valid[loop])) { invalid_attr = false; break; } @@ -450,24 +451,26 @@ bool VtunnelMoMgr::CompareValidValue(void *&val1, void *val2, upll_rc_t VtunnelMoMgr::UpdateAuditConfigStatus( unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; val_vtunnel_t *val = (ckv_running != NULL)? - reinterpret_cast - ((GetVal(ckv_running))):NULL; + reinterpret_cast + ((GetVal(ckv_running))):NULL; if (NULL == val) { return UPLL_RC_ERR_GENERIC; } if (uuc::kUpllUcpCreate == phase ) - val->cs_row_status = cs_status; + val->cs_row_status = cs_status; if ((uuc::kUpllUcpUpdate == phase) && - (val->cs_row_status == UNC_CS_INVALID || - val->cs_row_status == UNC_CS_NOT_APPLIED)) + (val->cs_row_status == UNC_CS_INVALID || + val->cs_row_status == UNC_CS_NOT_APPLIED)) val->cs_row_status = cs_status; for (unsigned int loop = 0; loop < sizeof(val->valid)/sizeof(uint8_t); ++loop ) { if ((cs_status == UNC_CS_INVALID && UNC_VF_VALID == val->valid[loop]) || - cs_status == UNC_CS_APPLIED) + cs_status == UNC_CS_APPLIED) val->cs_attr[loop] = cs_status; } return result_code; @@ -475,7 +478,7 @@ upll_rc_t VtunnelMoMgr::UpdateAuditConfigStatus( /* Pure Virtual functions from MoMgrImpl */ upll_rc_t VtunnelMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, - controller_domain *ctrlr_dom) { + controller_domain *ctrlr_dom) { UPLL_FUNC_TRACE; if (!ikey || !ctrlr_dom) { UPLL_LOG_INFO("Illegal parameter"); @@ -506,14 +509,14 @@ upll_rc_t VtunnelMoMgr::GetControllerDomainId(ConfigKeyVal *ikey, } upll_rc_t VtunnelMoMgr::GetVnodeName(ConfigKeyVal *ikey, uint8_t *&vtn_name, - uint8_t *&vnode_name) { + uint8_t *&vnode_name) { UPLL_FUNC_TRACE; if (ikey == NULL) { UPLL_LOG_DEBUG("ConfigKeyVal is NULL"); return UPLL_RC_ERR_GENERIC; } key_vtunnel_t *vtunnel_key = static_cast - (ikey->get_key()); + (ikey->get_key()); if (vtunnel_key == NULL) return UPLL_RC_ERR_GENERIC; vtn_name = vtunnel_key->vtn_key.vtn_name; @@ -522,7 +525,7 @@ upll_rc_t VtunnelMoMgr::GetVnodeName(ConfigKeyVal *ikey, uint8_t *&vtn_name, } upll_rc_t VtunnelMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; if (!ikey || !req || !(ikey->get_key())) { @@ -536,17 +539,17 @@ upll_rc_t VtunnelMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (ikey->get_st_num() != IpctSt::kIpcStKeyVtunnel) { UPLL_LOG_DEBUG("Invalid struct received.Expected struct-kIpcStKeyVtunnel, " - "received struct -%s ", reinterpret_cast - (IpctSt::GetIpcStdef(ikey->get_st_num()))); + "received struct -%s ", reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vtunnel_t *key_vtunnel = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); val_vtunnel_t *val_vtunnel = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtunnel)) { val_vtunnel = reinterpret_cast - (ikey->get_cfg_val()->get_val()); + (ikey->get_cfg_val()->get_val()); } uint32_t dt_type = req->datatype; uint32_t operation = req->operation; @@ -573,10 +576,11 @@ upll_rc_t VtunnelMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_BAD_REQUEST; } } else if (((operation == UNC_OP_READ) || - (operation == UNC_OP_READ_SIBLING) || - (operation == UNC_OP_READ_SIBLING_BEGIN)) && - ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP) || (dt_type == UPLL_DT_STATE))) { + (operation == UNC_OP_READ_SIBLING) || + (operation == UNC_OP_READ_SIBLING_BEGIN)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP) || (dt_type == UPLL_DT_STATE))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { if (val_vtunnel != NULL) { @@ -599,18 +603,18 @@ upll_rc_t VtunnelMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION1; } } else if ((operation == UNC_OP_DELETE) || - (operation == UNC_OP_READ_SIBLING_COUNT) || - (((operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP)))) { + (operation == UNC_OP_READ_SIBLING_COUNT) || + (((operation == UNC_OP_READ_NEXT) || + (operation == UNC_OP_READ_BULK)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP)))) { UPLL_LOG_TRACE("Value structure is none for operation type:%d", - operation); + operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Invalid datatype(%d) and operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } @@ -618,7 +622,7 @@ upll_rc_t VtunnelMoMgr::ValidateMessage(IpcReqRespHeader *req, } upll_rc_t VtunnelMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, - IpcReqRespHeader *req) { + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t r_code = UPLL_RC_SUCCESS; if (!ikey || !(ikey->get_cfg_val()) || @@ -630,12 +634,12 @@ upll_rc_t VtunnelMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, if (!val_vtunnel) return UPLL_RC_ERR_GENERIC; // Validating Underlay VTN MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTN))); + (GetMoManager(UNC_KT_VTN))); if (!mgr) return UPLL_RC_ERR_GENERIC; if (val_vtunnel->valid[UPLL_IDX_VTN_NAME_VTNL] == UNC_VF_VALID) { // Validating Underlay Vtn is same as Overlay Vtn key_vtunnel_t *vtunnel_key = reinterpret_cast - (ikey->get_key()); + (ikey->get_key()); if (!strcmp(reinterpret_cast(vtunnel_key->vtn_key.vtn_name), reinterpret_cast(val_vtunnel->vtn_name))) { UPLL_LOG_DEBUG("UnderLay VTN is same as Overlay VTN"); @@ -643,29 +647,29 @@ upll_rc_t VtunnelMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, } // Existence of Underlay VTN key_vtn *vtnkey = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtn))); + (ConfigKeyVal::Malloc(sizeof(key_vtn))); uuu::upll_strncpy(vtnkey->vtn_name, val_vtunnel->vtn_name, - (kMaxLenVtnName+1)); + (kMaxLenVtnName+1)); ConfigKeyVal *vtn_ck = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, - vtnkey, NULL); + vtnkey, NULL); if (vtn_ck == NULL) { FREE_IF_NOT_NULL(vtnkey); return UPLL_RC_ERR_GENERIC; } r_code = mgr->UpdateConfigDB(vtn_ck, UPLL_DT_CANDIDATE, UNC_OP_READ, - dmi, MAINTBL); + dmi, MAINTBL); if (UPLL_RC_ERR_INSTANCE_EXISTS != r_code) { UPLL_LOG_DEBUG("UpdateConfigDB Return Failure = %d ", r_code); if (r_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) UPLL_LOG_DEBUG("UnderLay Vtn does not exist"); delete vtn_ck; r_code = (r_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_ERR_CFG_SEMANTIC:r_code; + UPLL_RC_ERR_CFG_SEMANTIC:r_code; return r_code; } else { - r_code = UPLL_RC_SUCCESS; - delete vtn_ck; + r_code = UPLL_RC_SUCCESS; + delete vtn_ck; } } else { if (val_vtunnel->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL] == UNC_VF_VALID) { @@ -683,10 +687,10 @@ upll_rc_t VtunnelMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, if (r_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) UPLL_LOG_DEBUG("VtepGroup does not exist"); r_code = (r_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_ERR_CFG_SEMANTIC:r_code; + UPLL_RC_ERR_CFG_SEMANTIC:r_code; return r_code; } else { - r_code = UPLL_RC_SUCCESS; + r_code = UPLL_RC_SUCCESS; } } UPLL_LOG_TRACE("Vtunnel ValidateAttribute returned %d", r_code); @@ -700,11 +704,12 @@ upll_rc_t VtunnelMoMgr::GetVtepGroup(val_vtunnel_t *vtunnelVal, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTEP_GRP))); + MoMgrImpl *mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VTEP_GRP))); if (!mgr) return UPLL_RC_ERR_GENERIC; key_vtep_grp *vtepgrp_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); + (ConfigKeyVal::Malloc(sizeof(key_vtep_grp))); uuu::upll_strncpy(vtepgrp_key->vtn_key.vtn_name, vtunnelVal->vtn_name, (kMaxLenVtnName+1)); @@ -712,8 +717,8 @@ upll_rc_t VtunnelMoMgr::GetVtepGroup(val_vtunnel_t *vtunnelVal, vtunnelVal->vtep_grp_name, (kMaxLenVnodeName+1)); ConfigKeyVal *vtepgrp_ckv = new ConfigKeyVal(UNC_KT_VTEP_GRP, - IpctSt::kIpcStKeyVtepGrp, - vtepgrp_key, NULL); + IpctSt::kIpcStKeyVtepGrp, + vtepgrp_key, NULL); if (vtepgrp_ckv == NULL) { FREE_IF_NOT_NULL(vtepgrp_key); return UPLL_RC_ERR_GENERIC; @@ -731,7 +736,7 @@ upll_rc_t VtunnelMoMgr::GetVtepGroup(val_vtunnel_t *vtunnelVal, } upll_rc_t VtunnelMoMgr::ValidateVTunnelValue(val_vtunnel_t *val_vtunnel, - uint32_t operation) { + uint32_t operation) { UPLL_FUNC_TRACE; bool ret_val = false; @@ -751,7 +756,7 @@ upll_rc_t VtunnelMoMgr::ValidateVTunnelValue(val_vtunnel_t *val_vtunnel, break; case UPLL_IDX_VTN_NAME_VTNL: ret_val = ValidateString(val_vtunnel->vtn_name, - kMinLenVtnName, kMaxLenVtnName); + kMinLenVtnName, kMaxLenVtnName); break; case UPLL_IDX_DESC_VTNL: ret_val = ValidateDesc(val_vtunnel->description, @@ -860,7 +865,7 @@ upll_rc_t VtunnelMoMgr::ValidateVTunnelValue(val_vtunnel_t *val_vtunnel, upll_rc_t VtunnelMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) { + ConfigKeyVal *okey) { UPLL_FUNC_TRACE; val_vtunnel *vtun_val = reinterpret_cast(GetVal(ikey)); val_vtunnel *vtun_val1 = reinterpret_cast(GetVal(okey)); @@ -883,11 +888,11 @@ upll_rc_t VtunnelMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } upll_rc_t VtunnelMoMgr::ValidateVTunnelKey(key_vtunnel_t *key_vtunnel, - uint32_t operation) { + uint32_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; ret_val = ValidateKey( - reinterpret_cast(key_vtunnel->vtn_key.vtn_name), + reinterpret_cast(key_vtunnel->vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_INFO("Vtn Name syntax check failed." @@ -898,12 +903,12 @@ upll_rc_t VtunnelMoMgr::ValidateVTunnelKey(key_vtunnel_t *key_vtunnel, if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { UPLL_LOG_TRACE("UNC_KT_VTUNNEL: vtunnel_name (%s)", - key_vtunnel->vtunnel_name); + key_vtunnel->vtunnel_name); ret_val = ValidateKey(reinterpret_cast(key_vtunnel->vtunnel_name), - kMinLenVnodeName, kMaxLenVnodeName); + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG( - "Syntax check failed.vtunnel_name- %s", key_vtunnel->vtunnel_name); + "Syntax check failed.vtunnel_name- %s", key_vtunnel->vtunnel_name); return ret_val; } } else { @@ -931,7 +936,7 @@ upll_rc_t VtunnelMoMgr::ValVTunnelAttributeSupportCheck( */ if ((val_vtunnel->valid[UPLL_IDX_VTN_NAME_VTNL] == UNC_VF_VALID) || (val_vtunnel->valid[UPLL_IDX_VTN_NAME_VTNL] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtunnel::kCapVtepName] == 0) { val_vtunnel->valid[UPLL_IDX_VTN_NAME_VTNL] = UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { @@ -942,10 +947,10 @@ upll_rc_t VtunnelMoMgr::ValVTunnelAttributeSupportCheck( } if ((val_vtunnel->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL] == UNC_VF_VALID) || (val_vtunnel->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL] - == UNC_VF_VALID_NO_VALUE)) { + == UNC_VF_VALID_NO_VALUE)) { if (attrs[unc::capa::vtunnel::kCapVtepGrpName] == 0) { val_vtunnel->valid[UPLL_IDX_VTEP_GRP_NAME_VTNL] = - UNC_VF_INVALID; + UNC_VF_INVALID; if (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE) { UPLL_LOG_INFO("VtepGrpName is not supported for PFC Controller"); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; @@ -966,7 +971,8 @@ upll_rc_t VtunnelMoMgr::ValVTunnelAttributeSupportCheck( } upll_rc_t VtunnelMoMgr::ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, const char *ctrlr_name) { + ConfigKeyVal *ikey, + const char *ctrlr_name) { UPLL_FUNC_TRACE; if (!ikey || !req) { UPLL_LOG_DEBUG("ConfigKeyVal / IpcReqRespHeader is Null"); @@ -974,14 +980,14 @@ upll_rc_t VtunnelMoMgr::ValidateCapability(IpcReqRespHeader *req, } if (!ctrlr_name) { ctrlr_name = reinterpret_cast((reinterpret_cast - (ikey->get_user_data()))->ctrlr_id); + (ikey->get_user_data()))->ctrlr_id); if (!ctrlr_name || !strlen(ctrlr_name)) { UPLL_LOG_DEBUG("Controller Name is NULL"); return UPLL_RC_ERR_GENERIC; } } UPLL_LOG_TRACE("ctrlr_name(%s), operation : (%d)", - ctrlr_name, req->operation); + ctrlr_name, req->operation); bool result_code = false; uint32_t max_instance_count = 0; uint32_t max_attrs = 0; @@ -990,31 +996,31 @@ upll_rc_t VtunnelMoMgr::ValidateCapability(IpcReqRespHeader *req, switch (req->operation) { case UNC_OP_CREATE: result_code = GetCreateCapability(ctrlr_name, - ikey->get_key_type(), &max_instance_count, &max_attrs, &attrs); - if (result_code && (max_instance_count != 0) && - cur_instance_count >= max_instance_count) { - UPLL_LOG_DEBUG("[%s:%d:%s Instance count %d exceeds %d", __FILE__, - __LINE__, __FUNCTION__, cur_instance_count, max_instance_count); - return UPLL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; - } + ikey->get_key_type(), + &max_instance_count, + &max_attrs, + &attrs); break; case UNC_OP_UPDATE: result_code = GetUpdateCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); + ikey->get_key_type(), + &max_attrs, &attrs); break; case UNC_OP_READ: case UNC_OP_READ_SIBLING: case UNC_OP_READ_SIBLING_BEGIN: case UNC_OP_READ_SIBLING_COUNT: result_code = GetReadCapability(ctrlr_name, - ikey->get_key_type(), &max_attrs, &attrs); + ikey->get_key_type(), + &max_attrs, + &attrs); break; default: UPLL_LOG_DEBUG("Invalid operation"); break; } if (!result_code) { - UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " + UPLL_LOG_DEBUG("keytype(%d) is not supported by controller(%s) " "for operation(%d)", ikey->get_key_type(), ctrlr_name, req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; @@ -1023,7 +1029,7 @@ upll_rc_t VtunnelMoMgr::ValidateCapability(IpcReqRespHeader *req, if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtunnel)) { val_vtunnel = - reinterpret_cast (ikey->get_cfg_val()->get_val()); + reinterpret_cast (ikey->get_cfg_val()->get_val()); } if (val_vtunnel) { if (max_attrs > 0) { @@ -1031,7 +1037,7 @@ upll_rc_t VtunnelMoMgr::ValidateCapability(IpcReqRespHeader *req, req->operation); } else { UPLL_LOG_DEBUG("Attribute list is empty for operation %d", - req->operation); + req->operation); return UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR; } } @@ -1039,15 +1045,15 @@ upll_rc_t VtunnelMoMgr::ValidateCapability(IpcReqRespHeader *req, } upll_rc_t VtunnelMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, - ConfigKeyVal *&okey) { + ConfigKeyVal *&okey) { if (ikey == NULL) return UPLL_RC_ERR_GENERIC; key_vtunnel * temp_key_vtunnel = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); + (ConfigKeyVal::Malloc(sizeof(key_vtunnel))); uuu::upll_strncpy(temp_key_vtunnel->vtn_key.vtn_name, static_cast(ikey->get_key())-> - vtn_key.vtn_name, + vtn_key.vtn_name, (kMaxLenVtnName+1)); uuu::upll_strncpy(temp_key_vtunnel->vtunnel_name, static_cast @@ -1060,62 +1066,65 @@ upll_rc_t VtunnelMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } /* -upll_rc_t VtunnelMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey) { - if ( !ikey || !(ikey->get_key()) ) - return UPLL_RC_ERR_GENERIC; - upll_rc_t result_code = UPLL_RC_SUCCESS; - key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); - key_vtunnel_t* vtunnel_key = reinterpret_cast - (ConfigKeyVal::Malloc(sizeof(key_vtunnel_t))); - if (!vtunnel_key) - return UPLL_RC_ERR_GENERIC; - if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { - FREE_IF_NOT_NULL(vtunnel_key); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(vtunnel_key ->vtn_key.vtn_name, - key_rename->old_unc_vtn_name, - (kMaxLenVtnName+1)); - okey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVtunnel, - vtunnel_key, NULL); - if (!okey) { - FREE_IF_NOT_NULL(vtunnel_key); - return UPLL_RC_ERR_GENERIC; - } - return result_code; -} -*/ + upll_rc_t VtunnelMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey) { + if ( !ikey || !(ikey->get_key()) ) + return UPLL_RC_ERR_GENERIC; + upll_rc_t result_code = UPLL_RC_SUCCESS; + key_rename_vnode_info *key_rename = reinterpret_cast + (ikey->get_key()); + key_vtunnel_t* vtunnel_key = reinterpret_cast + (ConfigKeyVal::Malloc(sizeof(key_vtunnel_t))); + if (!vtunnel_key) + return UPLL_RC_ERR_GENERIC; + if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { + FREE_IF_NOT_NULL(vtunnel_key); + return UPLL_RC_ERR_GENERIC; + } + uuu::upll_strncpy(vtunnel_key ->vtn_key.vtn_name, + key_rename->old_unc_vtn_name, + (kMaxLenVtnName+1)); + okey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVtunnel, + vtunnel_key, NULL); + if (!okey) { + FREE_IF_NOT_NULL(vtunnel_key); + return UPLL_RC_ERR_GENERIC; + } + return result_code; + } + */ upll_rc_t VtunnelMoMgr::IsReferenced(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; if (!ikey || !(ikey->get_key()) || !dmi) return UPLL_RC_ERR_GENERIC; - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VTUNNEL_IF))); + MoMgrImpl *mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VTUNNEL_IF))); result_code = mgr->IsReferenced(ikey, dt_type, dmi); result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; // Success / NoSuchInstance / Semantic UPLL_LOG_DEBUG("IsReferenced result code (%d)", result_code); return result_code; } /* -upll_rc_t VtunnelMoMgr::MergeValidate(unc_key_type_t keytype, - const char *ctrlr_id, - ConfigKeyVal *ikey, - DalDmlIntf *dmi) { - return UPLL_RC_ERR_GENERIC; -} -*/ + upll_rc_t VtunnelMoMgr::MergeValidate(unc_key_type_t keytype, + const char *ctrlr_id, + ConfigKeyVal *ikey, + DalDmlIntf *dmi) { + return UPLL_RC_ERR_GENERIC; + } + */ -upll_rc_t VtunnelMoMgr::PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, - DalDmlIntf *dmi, - upll_keytype_datatype_t dt_type) { +upll_rc_t VtunnelMoMgr::PopulateDriverDeleteCkv( + ConfigKeyVal *&vnpCkv, + DalDmlIntf *dmi, + upll_keytype_datatype_t dt_type) { UPLL_FUNC_TRACE; upll_rc_t result = UPLL_RC_SUCCESS; if (!vnpCkv || !vnpCkv->get_key() || (!(vnpCkv->get_cfg_val()))) { @@ -1124,7 +1133,7 @@ upll_rc_t VtunnelMoMgr::PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, } val_vtunnel *vtunnel_val = static_cast(GetVal(vnpCkv)); vnpdrv_val_vtunnel *vnp_vtunnel = static_cast - (ConfigKeyVal::Malloc(sizeof(vnpdrv_val_vtunnel))); + (ConfigKeyVal::Malloc(sizeof(vnpdrv_val_vtunnel))); vnp_vtunnel->label = vtunnel_val->label; vnp_vtunnel->valid[VNPDRV_IDX_LABEL_VTNL] = UNC_VF_VALID; ConfigVal *ck_val = new ConfigVal(IpctSt::kIpcStVnpdrvValVtunnel, @@ -1134,6 +1143,6 @@ upll_rc_t VtunnelMoMgr::PopulateDriverDeleteCkv(ConfigKeyVal *&vnpCkv, } -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc diff --git a/coordinator/modules/upll/vtunnel_momgr.hh b/coordinator/modules/upll/vtunnel_momgr.hh index d64d4fa8..3a00ea3a 100644 --- a/coordinator/modules/upll/vtunnel_momgr.hh +++ b/coordinator/modules/upll/vtunnel_momgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -27,59 +27,59 @@ class VtunnelMoMgr : public VnodeMoMgr { static BindInfo key_vtunnel_maintbl_bind_info[]; /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration * - * @param[in] val pointer to the value structure + * @param[in] val pointer to the value structure * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - + * @param[out] valid position of the variable in the valid array - * NULL if valid does not exist. * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value + * @param[in] tbl specifies the table containing the given value * **/ upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - UPLL_FUNC_TRACE; - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vtunnel::kDbiDesc: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_DESC_VTNL]); - break; - case uudst::vtunnel::kDbiCtrlrName: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_CONTROLLER_ID_VTNL]); - break; - case uudst::vtunnel::kDbiDomainId: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_DOMAIN_ID_VTNL]); - break; - case uudst::vtunnel::kDbiUnderlayVtnName: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_VTN_NAME_VTNL]); - break; - case uudst::vtunnel::kDbiVtepgrpName: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_VTEP_GRP_NAME_VTNL]); - break; - case uudst::vtunnel::kDbiLabel: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_LABEL_VTNL]); - break; - case uudst::vtunnel::kDbiOperStatus: - valid = &(reinterpret_cast(val)-> - valid[UPLL_IDX_OPER_STATUS_VTNLS]); - break; - case uudst::vtunnel::kDbiDownCount: - valid = NULL; - break; - default: - return UPLL_RC_ERR_GENERIC; - } - } - return UPLL_RC_SUCCESS; + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + UPLL_FUNC_TRACE; + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vtunnel::kDbiDesc: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_DESC_VTNL]); + break; + case uudst::vtunnel::kDbiCtrlrName: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_CONTROLLER_ID_VTNL]); + break; + case uudst::vtunnel::kDbiDomainId: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_DOMAIN_ID_VTNL]); + break; + case uudst::vtunnel::kDbiUnderlayVtnName: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_VTN_NAME_VTNL]); + break; + case uudst::vtunnel::kDbiVtepgrpName: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_VTEP_GRP_NAME_VTNL]); + break; + case uudst::vtunnel::kDbiLabel: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_LABEL_VTNL]); + break; + case uudst::vtunnel::kDbiOperStatus: + valid = &(reinterpret_cast(val)-> + valid[UPLL_IDX_OPER_STATUS_VTNLS]); + break; + case uudst::vtunnel::kDbiDownCount: + valid = NULL; + break; + default: + return UPLL_RC_ERR_GENERIC; + } + } + return UPLL_RC_SUCCESS; } upll_rc_t UpdateConfigStatus(ConfigKeyVal *vtunnel_key, unc_keytype_operation_t op, @@ -88,81 +88,84 @@ class VtunnelMoMgr : public VnodeMoMgr { DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); + ConfigKeyVal *&req, MoMgrTables tbl = MAINTBL); /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); -/** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); -/** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ + ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); /** * @brief Rename operation not needed for Overlay Keytype **/ upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_name ) { + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_name ) { return UPLL_RC_SUCCESS; } /** * @brief Rename operation not needed for Overlay Keytype **/ upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id) { + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id) { return UPLL_RC_SUCCESS; } @@ -176,11 +179,11 @@ class VtunnelMoMgr : public VnodeMoMgr { * **/ bool FilterAttributes(void *&val1, void *val2, bool copy_to_running, - unc_keytype_operation_t op); + unc_keytype_operation_t op); /** * @brief Compares the valid value between two database records. * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. + * attribute as invalid in the first record. * * @param[in/out] val1 first record value instance. * @param[in] val2 second record value instance. @@ -195,9 +198,9 @@ class VtunnelMoMgr : public VnodeMoMgr { /* Pure virtual from VnodeMoMgrImpl */ upll_rc_t GetControllerDomainId(ConfigKeyVal *ikey, - controller_domain_t *ctrlr_dom); + controller_domain_t *ctrlr_dom); upll_rc_t GetVnodeName(ConfigKeyVal *ikey, - uint8_t *&vtn_name, uint8_t *&vnode_name); + uint8_t *&vtn_name, uint8_t *&vnode_name); /** * @Brief Get the VtepGroupConfigKeyVal from VtepGroupTbl @@ -211,8 +214,8 @@ class VtunnelMoMgr : public VnodeMoMgr { * @retval UPLL_RC_ERR_GENERIC Generic failure. */ upll_rc_t GetVtepGroup(val_vtunnel_t *vtunnelVal, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); /** * @Brief Validates the syntax of the specified key and value structure * for KT_VTUNNEL keytype @@ -242,7 +245,7 @@ class VtunnelMoMgr : public VnodeMoMgr { * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. */ upll_rc_t ValidateVTunnelValue(val_vtunnel_t *val_vtunnel, - uint32_t operation = UNC_OP_INVALID); + uint32_t operation = UNC_OP_INVALID); /** * @Brief Checks if the specified key type(KT_VTUNNEL) and * associated attributes are supported on the given controller, @@ -260,7 +263,7 @@ class VtunnelMoMgr : public VnodeMoMgr { */ upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name); + const char * crtlr_name); /** * @Brief Checks if the specified key type and * associated attributes are supported on the given controller, @@ -275,11 +278,12 @@ class VtunnelMoMgr : public VnodeMoMgr { * @retval UPLL_RC_ERR_GENERIC Generic failure. */ upll_rc_t ValVTunnelAttributeSupportCheck( - val_vtunnel_t *val_vtunnel, - const uint8_t* attrs, unc_keytype_operation_t operation); + val_vtunnel_t *val_vtunnel, + const uint8_t* attrs, unc_keytype_operation_t operation); upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - return UPLL_RC_SUCCESS; + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; } bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, int &nattr, @@ -311,16 +315,16 @@ class VtunnelMoMgr : public VnodeMoMgr { delete[] table; } /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ bool IsValidKey(void *tkey, uint64_t index); -/** + /** * @Brief Validates the syntax for KT_VTUNNEL keytype key structure. * * @param[in] key_vtunnel KT_VTUNNEL key structure. @@ -333,29 +337,29 @@ class VtunnelMoMgr : public VnodeMoMgr { upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); /* @brief This method invoke when the VTN merge hapeening between - * Running and DT import. This will checks the vnode name - * unique or not. - * - * @param[in] keytype UNC KEY TYPE - * @param[in/out] ctrlr_id Controller ID - * @param[in] conflict_ckv key and value structure - * @param[in] dal Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ + * Running and DT import. This will checks the vnode name + * unique or not. + * + * @param[in] keytype UNC KEY TYPE + * @param[in/out] ctrlr_id Controller ID + * @param[in] conflict_ckv key and value structure + * @param[in] dal Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_MERGE_CONFLICT Semantic check error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ upll_rc_t MergeValidate(unc_key_type_t keytype, const char *ctrlr_id, - ConfigKeyVal *ikey, DalDmlIntf *dmi) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + ConfigKeyVal *ikey, DalDmlIntf *dmi) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; } /** - * @Brief compares controller id and domain id before + * @Brief compares controller id and domain id before * updating the value to DB. * * @param[in] ikey ikey contains key and value structure. @@ -365,11 +369,11 @@ class VtunnelMoMgr : public VnodeMoMgr { * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. */ upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey); + ConfigKeyVal *okey); }; -} // namespace vtn +} // namespace kt_momgr } // namespace upll } // namespace unc #endif diff --git a/coordinator/modules/upll/vunk_if_momgr.cc b/coordinator/modules/upll/vunk_if_momgr.cc index 95c264c4..65185bd2 100644 --- a/coordinator/modules/upll/vunk_if_momgr.cc +++ b/coordinator/modules/upll/vunk_if_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,68 +21,68 @@ namespace upll { namespace kt_momgr { BindInfo VunkIfMoMgr::vunk_if_bind_info[] = { - { uudst::vunknown_interface::kDbiVtnName, CFG_KEY, offsetof( - key_vunk_if, vunk_key.vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vunknown_interface::kDbiVunknownName, CFG_KEY, offsetof( - key_vunk_if, vunk_key.vunknown_name), - uud::kDalChar, 32 }, - { uudst::vunknown_interface::kDbiIfName, CFG_KEY, offsetof(key_vunk_if, - if_name), - uud::kDalChar, 32 }, - { uudst::vunknown_interface::kDbiDesc, CFG_VAL, offsetof(val_vunk_if, - description), - uud::kDalChar, 128 }, - { uudst::vunknown_interface::kDbiAdminStatus, CFG_VAL, offsetof( - val_vunk_if, admin_status), - uud::kDalUint8, 1 }, - { uudst::vunknown_interface::kDbiDomainId, CK_VAL, offsetof(key_user_data, - domain_id), - uud::kDalChar, 32 }, - { uudst::vunknown_interface::kDbiValidDesc, CFG_META_VAL, offsetof( - val_vunk_if, valid[UPLL_IDX_DESC_VUNI]), - uud::kDalUint8, 1 }, - { uudst::vunknown_interface::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( - val_vunk_if, valid[UPLL_IDX_ADMIN_ST_VUNI]), - uud::kDalUint8, 1 }, - { uudst::vunknown_interface::kDbiCsDesc, CS_VAL, offsetof( - val_vunk_if, cs_attr[UPLL_IDX_DESC_VUNI]), - uud::kDalUint8, 1 }, - { uudst::vunknown_interface::kDbiCsAdminStatus, CS_VAL, offsetof( - val_vunk_if, cs_attr[UPLL_IDX_ADMIN_ST_VUNI]), - uud::kDalUint8, 1 }, - { uudst::vunknown_interface::kDbiCsRowstatus, CS_VAL, offsetof( - val_vunk_if, cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vunknown_interface::kDbiFlags, CK_VAL, offsetof(key_user_data_t, - flags), - uud::kDalUint8, 1 } }; + { uudst::vunknown_interface::kDbiVtnName, CFG_KEY, offsetof( + key_vunk_if, vunk_key.vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vunknown_interface::kDbiVunknownName, CFG_KEY, offsetof( + key_vunk_if, vunk_key.vunknown_name), + uud::kDalChar, 32 }, + { uudst::vunknown_interface::kDbiIfName, CFG_KEY, offsetof(key_vunk_if, + if_name), + uud::kDalChar, 32 }, + { uudst::vunknown_interface::kDbiDesc, CFG_VAL, offsetof(val_vunk_if, + description), + uud::kDalChar, 128 }, + { uudst::vunknown_interface::kDbiAdminStatus, CFG_VAL, offsetof( + val_vunk_if, admin_status), + uud::kDalUint8, 1 }, + { uudst::vunknown_interface::kDbiDomainId, CK_VAL, offsetof(key_user_data, + domain_id), + uud::kDalChar, 32 }, + { uudst::vunknown_interface::kDbiValidDesc, CFG_META_VAL, offsetof( + val_vunk_if, valid[UPLL_IDX_DESC_VUNI]), + uud::kDalUint8, 1 }, + { uudst::vunknown_interface::kDbiValidAdminStatus, CFG_DEF_VAL, offsetof( + val_vunk_if, valid[UPLL_IDX_ADMIN_ST_VUNI]), + uud::kDalUint8, 1 }, + { uudst::vunknown_interface::kDbiCsDesc, CS_VAL, offsetof( + val_vunk_if, cs_attr[UPLL_IDX_DESC_VUNI]), + uud::kDalUint8, 1 }, + { uudst::vunknown_interface::kDbiCsAdminStatus, CS_VAL, offsetof( + val_vunk_if, cs_attr[UPLL_IDX_ADMIN_ST_VUNI]), + uud::kDalUint8, 1 }, + { uudst::vunknown_interface::kDbiCsRowstatus, CS_VAL, offsetof( + val_vunk_if, cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vunknown_interface::kDbiFlags, CK_VAL, offsetof(key_user_data_t, + flags), + uud::kDalUint8, 1 } }; BindInfo VunkIfMoMgr::key_vunk_if_maintbl_update_bind_info[] = { - { uudst::vunknown_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( - key_vunk_if, vunk_key.vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vunknown_interface::kDbiVunknownName, CFG_MATCH_KEY, offsetof( - key_vunk_if, vunk_key.vunknown_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vunknown_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( - key_vunk_if, if_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vunknown_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vunknown_interface::kDbiFlags, CK_VAL, offsetof( - key_user_data_t, flags), - uud::kDalUint8, 1 } }; + { uudst::vunknown_interface::kDbiVtnName, CFG_MATCH_KEY, offsetof( + key_vunk_if, vunk_key.vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vunknown_interface::kDbiVunknownName, CFG_MATCH_KEY, offsetof( + key_vunk_if, vunk_key.vunknown_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vunknown_interface::kDbiIfName, CFG_MATCH_KEY, offsetof( + key_vunk_if, if_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vunknown_interface::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vunknown_interface::kDbiFlags, CK_VAL, offsetof( + key_user_data_t, flags), + uud::kDalUint8, 1 } }; VunkIfMoMgr::VunkIfMoMgr() { UPLL_FUNC_TRACE - ntable = MAX_MOMGR_TBLS; + ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiVunknownIfTbl, UNC_KT_VUNK_IF, - vunk_if_bind_info, IpctSt::kIpcStKeyVunkIf, - IpctSt::kIpcStValVunkIf, - uudst::vunknown_interface::kDbiVunknownIfNumCols); + vunk_if_bind_info, IpctSt::kIpcStKeyVunkIf, + IpctSt::kIpcStValVunkIf, + uudst::vunknown_interface::kDbiVunknownIfNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; nchild = 0; @@ -113,7 +113,7 @@ bool VunkIfMoMgr::IsValidKey(void *key, uint64_t index) { switch (index) { case uudst::vunknown_interface::kDbiVtnName : ret_val = ValidateKey(reinterpret_cast - (vunk_if_key->vunk_key.vtn_key.vtn_name), + (vunk_if_key->vunk_key.vtn_key.vtn_name), kMinLenVtnName, kMaxLenVtnName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("VTN Name is not valid(%d)", ret_val); @@ -122,7 +122,7 @@ bool VunkIfMoMgr::IsValidKey(void *key, uint64_t index) { break; case uudst::vunknown_interface::kDbiVunknownName: ret_val = ValidateKey(reinterpret_cast - (vunk_if_key->vunk_key.vunknown_name), + (vunk_if_key->vunk_key.vunknown_name), kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_TRACE("Vunknown name is not valid(%d)", ret_val); @@ -145,46 +145,46 @@ bool VunkIfMoMgr::IsValidKey(void *key, uint64_t index) { } bool VunkIfMoMgr::CompareValidValue(void *&val1, - void *val2, - bool copy_to_running) { + void *val2, + bool copy_to_running) { UPLL_FUNC_TRACE; bool invalid_attr = true; val_vunk_if *val_vunkif1 = reinterpret_cast(val1); val_vunk_if *val_vunkif2 = reinterpret_cast(val2); if (!val_vunkif2) { - UPLL_LOG_TRACE("Invalid param"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_TRACE("Invalid param"); + return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val_vunkif1->valid) / sizeof(uint8_t); ++loop) { - if (UNC_VF_INVALID == val_vunkif1->valid[loop] - && UNC_VF_VALID == val_vunkif2->valid[loop]) - val_vunkif1->valid[loop] = UNC_VF_VALID_NO_VALUE; + loop < sizeof(val_vunkif1->valid) / sizeof(uint8_t); ++loop) { + if (UNC_VF_INVALID == val_vunkif1->valid[loop] + && UNC_VF_VALID == val_vunkif2->valid[loop]) + val_vunkif1->valid[loop] = UNC_VF_VALID_NO_VALUE; } /* Specify the configured ip address for * PFC to clear the configured IP address */ if ((UNC_VF_VALID == val_vunkif1->valid[UPLL_IDX_DESC_VUNI]) - && (UNC_VF_VALID == val_vunkif2->valid[UPLL_IDX_DESC_VUNI])) + && (UNC_VF_VALID == val_vunkif2->valid[UPLL_IDX_DESC_VUNI])) if (!strncmp(reinterpret_cast(val_vunkif1->description), reinterpret_cast(val_vunkif2->description), kMaxLenDescription)) - val_vunkif1->valid[UPLL_IDX_DESC_VUNI] = UNC_VF_INVALID; + val_vunkif1->valid[UPLL_IDX_DESC_VUNI] = UNC_VF_INVALID; - if ((val_vunkif2->valid[UPLL_IDX_ADMIN_ST_VUNI] == + if ((val_vunkif2->valid[UPLL_IDX_ADMIN_ST_VUNI] == val_vunkif1->valid[UPLL_IDX_ADMIN_ST_VUNI]) && UNC_VF_INVALID != val_vunkif2->valid[UPLL_IDX_ADMIN_ST_VUNI]) { if (val_vunkif1->admin_status == val_vunkif2->admin_status) - val_vunkif1->valid[UPLL_IDX_ADMIN_ST_VUNI] = - (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; + val_vunkif1->valid[UPLL_IDX_ADMIN_ST_VUNI] = + (copy_to_running)?UNC_VF_INVALID:UNC_VF_VALUE_NOT_MODIFIED; } for (unsigned int loop = 0; - loop < sizeof(val_vunkif1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vunkif1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vunkif1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vunkif1->valid[loop])) { - invalid_attr = false; - break; + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vunkif1->valid[loop])) { + invalid_attr = false; + break; } } return invalid_attr; @@ -216,37 +216,41 @@ upll_rc_t VunkIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, vunk_key_if = static_cast(okey->get_key()); } else { vunk_key_if = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vunk_if))); + (ConfigKeyVal::Malloc(sizeof(key_vunk_if))); } unc_key_type_t keytype = parent_key->get_key_type(); switch (keytype) { case UNC_KT_VTN: uuu::upll_strncpy(vunk_key_if->vunk_key.vtn_key.vtn_name, - reinterpret_cast(static_cast(pkey)->vtn_name), - kMaxLenVtnName+1); + reinterpret_cast + (static_cast(pkey)->vtn_name), + kMaxLenVtnName+1); break; case UNC_KT_VUNKNOWN: uuu::upll_strncpy(vunk_key_if->vunk_key.vtn_key.vtn_name, - reinterpret_cast - (static_cast(pkey)->vtn_key.vtn_name), - kMaxLenVtnName+1); + reinterpret_cast + (static_cast(pkey)->vtn_key.vtn_name), + kMaxLenVtnName+1); uuu::upll_strncpy(vunk_key_if->vunk_key.vunknown_name, - reinterpret_cast - (static_cast(pkey)->vunknown_name), - kMaxLenVnodeName+1); + reinterpret_cast + (static_cast(pkey)->vunknown_name), + kMaxLenVnodeName+1); break; case UNC_KT_VUNK_IF: uuu::upll_strncpy(vunk_key_if->vunk_key.vtn_key.vtn_name, - reinterpret_cast(static_cast - (pkey)->vunk_key.vtn_key.vtn_name), - kMaxLenVtnName+1); + reinterpret_cast + (static_cast + (pkey)->vunk_key.vtn_key.vtn_name), + kMaxLenVtnName+1); uuu::upll_strncpy(vunk_key_if->vunk_key.vunknown_name, - reinterpret_cast(static_cast - (pkey)->vunk_key.vunknown_name), - kMaxLenVnodeName+1); + reinterpret_cast + (static_cast + (pkey)->vunk_key.vunknown_name), + kMaxLenVnodeName+1); uuu::upll_strncpy(vunk_key_if->if_name, - reinterpret_cast(static_cast - (pkey)->if_name), kMaxLenInterfaceName+1); + reinterpret_cast + (static_cast + (pkey)->if_name), kMaxLenInterfaceName+1); break; case UNC_KT_VLINK: { uint8_t *vnode_name, *if_name; @@ -259,7 +263,7 @@ upll_rc_t VunkIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, } GET_USER_DATA_FLAGS(parent_key->get_cfg_val(), flags); flags &= VLINK_FLAG_NODE_POS; - UPLL_LOG_DEBUG("Vlink flag node position %d",flags); + UPLL_LOG_DEBUG("Vlink flag node position %d", flags); if (flags == kVlinkVnode2) { cfgval_ctrlr = true; vnode_name = vlink_val->vnode2_name; @@ -278,7 +282,7 @@ upll_rc_t VunkIfMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, uuu::upll_strncpy(vunk_key_if->if_name, if_name, (kMaxLenInterfaceName + 1)); } - break; + break; default: break; } @@ -312,21 +316,21 @@ upll_rc_t VunkIfMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, if (ikey_type != UNC_KT_VUNK_IF) return UPLL_RC_ERR_GENERIC; key_vunk_if *pkey = static_cast - (ikey->get_key()); + (ikey->get_key()); if (!pkey) return UPLL_RC_ERR_GENERIC; key_vunknown *vunk_key = static_cast - (malloc(sizeof(key_vunknown))); + (malloc(sizeof(key_vunknown))); if (!vunk_key) return UPLL_RC_ERR_GENERIC; memset(vunk_key, 0, sizeof(key_vunknown)); #if 1 uuu::upll_strncpy(vunk_key->vtn_key.vtn_name, - reinterpret_cast(static_cast - (pkey)->vunk_key.vtn_key.vtn_name), - kMaxLenVtnName+1); + reinterpret_cast(static_cast + (pkey)->vunk_key.vtn_key.vtn_name), + kMaxLenVtnName+1); uuu::upll_strncpy(vunk_key->vunknown_name, - reinterpret_cast(static_cast - (pkey)->vunk_key.vunknown_name), - kMaxLenVnodeName+1); + reinterpret_cast(static_cast + (pkey)->vunk_key.vunknown_name), + kMaxLenVnodeName+1); #endif if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VUNKNOWN, IpctSt::kIpcStKeyVunknown, vunk_key, @@ -354,7 +358,7 @@ upll_rc_t VunkIfMoMgr::AllocVal(ConfigVal *&ck_val, ck_val = new ConfigVal(IpctSt::kIpcStValVunkIf, val); break; default: - UPLL_LOG_TRACE("Invalid Table for VunknownInterface"); + UPLL_LOG_TRACE("Invalid Table for VunknownInterface"); val = NULL; } return UPLL_RC_SUCCESS; @@ -372,7 +376,7 @@ upll_rc_t VunkIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, if (tbl == MAINTBL) { val_vunk_if *ival = static_cast(GetVal(req)); val_vunk_if *vunk_val_if = static_cast - (malloc(sizeof(val_vunk_if))); + (malloc(sizeof(val_vunk_if))); if (!vunk_val_if) return UPLL_RC_ERR_GENERIC; memcpy(vunk_val_if, ival, sizeof(val_vunk_if)); tmp1 = new ConfigVal(IpctSt::kIpcStValVunkIf, vunk_val_if); @@ -381,7 +385,7 @@ upll_rc_t VunkIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, void *tkey = (req != NULL) ? (req)->get_key() : NULL; key_vunk_if *ikey = static_cast(tkey); key_vunk_if *vunk_if_key = static_cast - (malloc(sizeof(key_vunk_if))); + (malloc(sizeof(key_vunk_if))); if (!vunk_if_key) { delete tmp1; return UPLL_RC_ERR_GENERIC; @@ -394,8 +398,10 @@ upll_rc_t VunkIfMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, } upll_rc_t VunkIfMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { upll_rc_t result_code = UPLL_RC_SUCCESS; return result_code; } @@ -411,7 +417,7 @@ upll_rc_t VunkIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, val_vunk_if *vunk_if_val2 = reinterpret_cast(GetVal(upd_key)); unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; - UPLL_LOG_TRACE("Key in Candidate %s",(ikey->ToStrAll()).c_str()); + UPLL_LOG_TRACE("Key in Candidate %s", (ikey->ToStrAll()).c_str()); if (vunk_if_val == NULL) { UPLL_LOG_TRACE("Value of Vunknown Interface is NULL"); return UPLL_RC_ERR_GENERIC; @@ -421,10 +427,10 @@ upll_rc_t VunkIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, } else if (op == UNC_OP_UPDATE) { void *vunkifval = reinterpret_cast(vunk_if_val); CompareValidValue(vunkifval, GetVal(upd_key), true); - UPLL_LOG_TRACE("Key in Running %s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("Key in Running %s", (upd_key->ToStrAll()).c_str()); vunk_if_val->cs_row_status = vunk_if_val2->cs_row_status; } else { - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; loop < sizeof(vunk_if_val->valid)/sizeof(vunk_if_val->valid[0]); @@ -436,54 +442,58 @@ upll_rc_t VunkIfMoMgr::UpdateConfigStatus(ConfigKeyVal *ikey, (UNC_OP_CREATE == op)) vunk_if_val->cs_attr[loop] = UNC_CS_APPLIED; else if ((UNC_VF_INVALID == vunk_if_val->valid[loop]) && - (UNC_OP_UPDATE == op)) + (UNC_OP_UPDATE == op)) vunk_if_val->cs_attr[loop] = vunk_if_val2->cs_attr[loop]; } return UPLL_RC_SUCCESS; } upll_rc_t VunkIfMoMgr::PopulateValVtnNeighbor(ConfigKeyVal *&in_ckv, - DalDmlIntf *dmi) { + DalDmlIntf *dmi) { UPLL_FUNC_TRACE; // Read on the left side of the link bool got_left_side = false; ConfigKeyVal *vlink_ckv = NULL; VlinkMoMgr *vlink_momgr = reinterpret_cast - (const_cast(GetMoManager(UNC_KT_VLINK))); + (const_cast(GetMoManager(UNC_KT_VLINK))); if (!vlink_momgr) { UPLL_LOG_DEBUG("Invalid Mgr"); return UPLL_RC_ERR_GENERIC; } vn_if_type iftype; upll_rc_t result_code = vlink_momgr->CheckIfMemberOfVlink(in_ckv, - UPLL_DT_RUNNING, vlink_ckv, dmi, iftype); + UPLL_DT_RUNNING, + vlink_ckv, + dmi, + iftype); if (!vlink_ckv || result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE) { UPLL_LOG_TRACE("Not found in vlink table"); } else if (result_code == UPLL_RC_SUCCESS) { key_vlink_t *vlink_key = reinterpret_cast - (vlink_ckv->get_key()); + (vlink_ckv->get_key()); if (!vlink_key) { UPLL_LOG_DEBUG("Invalid param"); if (vlink_ckv) delete vlink_ckv; return UPLL_RC_ERR_GENERIC; } if ((iftype == kVlinkBoundaryNode1) || (iftype == kVlinkInternalNode1)) - got_left_side = true; + got_left_side = true; val_vlink_t *vlink_val = reinterpret_cast - (GetVal(vlink_ckv)); + (GetVal(vlink_ckv)); val_vtn_neighbor_t *val_vtn_neighbor = - reinterpret_cast(malloc(sizeof(val_vtn_neighbor_t))); + reinterpret_cast + (malloc(sizeof(val_vtn_neighbor_t))); memset(val_vtn_neighbor, 0, sizeof(val_vtn_neighbor_t)); val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] = UNC_VF_VALID; val_vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_IF_NAME_VN] = UNC_VF_VALID; val_vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] = UNC_VF_VALID; uuu::upll_strncpy(val_vtn_neighbor->connected_vnode_name, ((got_left_side) ? vlink_val->vnode2_name : - vlink_val->vnode1_name), + vlink_val->vnode1_name), (kMaxLenVnodeName + 1)); uuu::upll_strncpy(val_vtn_neighbor->connected_if_name, ((got_left_side) ? vlink_val->vnode2_ifname : - vlink_val->vnode1_ifname), + vlink_val->vnode1_ifname), (kMaxLenInterfaceName + 1)); uuu::upll_strncpy(val_vtn_neighbor->connected_vlink_name, vlink_key->vlink_name, (kMaxLenVnodeName + 1)); @@ -499,30 +509,12 @@ upll_rc_t VunkIfMoMgr::PopulateValVtnNeighbor(ConfigKeyVal *&in_ckv, upll_rc_t VunkIfMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - if (!ikey || !(ikey->get_key())) return UPLL_RC_ERR_GENERIC; - upll_rc_t result_code = UPLL_RC_SUCCESS; - key_rename_vnode_info *key_rename = static_cast - (ikey->get_key()); - key_vunk_if_t *key_vunk = static_cast - (ConfigKeyVal::Malloc(sizeof(key_vunk_if_t))); - if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { - free(key_vunk); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(key_vunk->vunk_key.vtn_key.vtn_name, - reinterpret_cast(key_rename->old_unc_vtn_name), - kMaxLenVtnName+1); - okey = new ConfigKeyVal(UNC_KT_VUNK_IF, IpctSt::kIpcStKeyVunkIf, key_vunk, - NULL); - if (!okey) { - free(key_vunk); - return UPLL_RC_ERR_GENERIC; - } - return result_code; + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; } upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; if (!ikey || !req || !(ikey->get_key())) { @@ -536,13 +528,14 @@ upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, } if (ikey->get_st_num() != IpctSt::kIpcStKeyVunkIf) { UPLL_LOG_DEBUG( - "Invalid structure received.Expected struct-kIpcStKeyVunkIf," + "Invalid structure received.Expected struct-kIpcStKeyVunkIf, " "received struct -%s ", - reinterpret_cast(IpctSt::GetIpcStdef(ikey->get_st_num()))); + reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vunk_if_t *key_vunk_if = - static_cast(ikey->get_key()); + static_cast(ikey->get_key()); upll_keytype_datatype_t dt_type = req->datatype; unc_keytype_operation_t operation = req->operation; @@ -565,10 +558,10 @@ upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, if ((ikey->get_cfg_val()) && (ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVunkIf) { val_vunk_if = - static_cast(ikey->get_cfg_val()->get_val()); + static_cast(ikey->get_cfg_val()->get_val()); } if (val_vunk_if != NULL) { - ret_val = ValidateVunkIfValue(val_vunk_if,operation); + ret_val = ValidateVunkIfValue(val_vunk_if, operation); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed for VUNK_IF value structure"); return UPLL_RC_ERR_CFG_SYNTAX; @@ -584,10 +577,10 @@ upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, if ((ikey->get_cfg_val()) && (ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVunkIf) { val_vunk_if = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } if (val_vunk_if != NULL) { - ret_val = ValidateVunkIfValue(val_vunk_if,operation); + ret_val = ValidateVunkIfValue(val_vunk_if, operation); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed for VINK_IF value structure"); return UPLL_RC_ERR_CFG_SYNTAX; @@ -605,7 +598,7 @@ upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, && ((ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVtnNeighbor)) { val_vtn_neighbor = - static_cast(ikey->get_cfg_val()->get_val()); + static_cast(ikey->get_cfg_val()->get_val()); } if (val_vtn_neighbor != NULL) { ret_val = ValidateVtnNeighValue(val_vtn_neighbor); @@ -629,16 +622,16 @@ upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION1; } } else if ((operation == UNC_OP_READ) - && ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) - || (dt_type == UPLL_DT_STARTUP))) { + && ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) + || (dt_type == UPLL_DT_STARTUP))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NEIGHBOR) { val_vtn_neighbor_t *val_vtn_neighbor = NULL; if ((ikey->get_cfg_val()) && (ikey->get_cfg_val())->get_st_num() - == IpctSt::kIpcStValVtnNeighbor) { + == IpctSt::kIpcStValVtnNeighbor) { val_vtn_neighbor = - static_cast(ikey->get_cfg_val()->get_val()); + static_cast(ikey->get_cfg_val()->get_val()); } if (val_vtn_neighbor != NULL) { ret_val = ValidateVtnNeighValue(val_vtn_neighbor); @@ -662,21 +655,22 @@ upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_ERR_INVALID_OPTION1; } } else if (((operation == UNC_OP_READ_SIBLING) - || (operation == UNC_OP_READ_SIBLING_BEGIN) - || (operation == UNC_OP_READ_SIBLING_COUNT)) - && ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) - || (dt_type == UPLL_DT_STARTUP) || (dt_type == UPLL_DT_STATE))) { + || (operation == UNC_OP_READ_SIBLING_BEGIN) + || (operation == UNC_OP_READ_SIBLING_COUNT)) + && ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) + || (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { val_vunk_if_t *val_vunk_if = NULL; if ((ikey->get_cfg_val()) && ((ikey->get_cfg_val())->get_st_num() == - IpctSt::kIpcStValVunkIf)) { + IpctSt::kIpcStValVunkIf)) { val_vunk_if = static_cast(ikey->get_cfg_val()->get_val()); } if (val_vunk_if != NULL) { - ret_val = ValidateVunkIfValue(val_vunk_if,operation); + ret_val = ValidateVunkIfValue(val_vunk_if, operation); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed for VUNK_IF value structure"); return ret_val; @@ -700,46 +694,48 @@ upll_rc_t VunkIfMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_TRACE("Value structure is none for this operation :%d", operation); return UPLL_RC_SUCCESS; } else if (((operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP))) { + (operation == UNC_OP_READ_BULK)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP))) { UPLL_LOG_TRACE("Value structure is none for this operation :%d", operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Invalid datatype(%d) and operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } return UPLL_RC_SUCCESS; } upll_rc_t VunkIfMoMgr::ValidateVunkIfValue(val_vunk_if_t *val_vunk_if, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; if (val_vunk_if->valid[UPLL_IDX_DESC_VUNI] == UNC_VF_VALID) { if (!ValidateDesc(val_vunk_if->description, - kMinLenDescription, kMaxLenDescription)) { + kMinLenDescription, kMaxLenDescription)) { UPLL_LOG_DEBUG("Syntax check failed desc:(%s)", val_vunk_if->description); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((val_vunk_if->valid[UPLL_IDX_DESC_VUNI] == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { val_vunk_if->description[0] = '\0'; } if (val_vunk_if->valid[UPLL_IDX_ADMIN_ST_VUNI] == UNC_VF_VALID) { if (!ValidateNumericRange(val_vunk_if->admin_status, - (uint8_t) UPLL_ADMIN_ENABLE, - (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { + (uint8_t) UPLL_ADMIN_ENABLE, + (uint8_t) UPLL_ADMIN_DISABLE, true, true)) { UPLL_LOG_DEBUG("Syntax check failed admst:%d", val_vunk_if->admin_status); return UPLL_RC_ERR_CFG_SYNTAX; } } else if ((val_vunk_if->valid[UPLL_IDX_ADMIN_ST_VUNI] - == UNC_VF_VALID_NO_VALUE) - && ((operation == UNC_OP_UPDATE) || (operation == UNC_OP_CREATE))) { + == UNC_VF_VALID_NO_VALUE) + && ((operation == UNC_OP_UPDATE) || + (operation == UNC_OP_CREATE))) { val_vunk_if->admin_status = UPLL_ADMIN_ENABLE; } else if ((val_vunk_if->valid[UPLL_IDX_ADMIN_ST_VUNI] == UNC_VF_INVALID) - && (operation == UNC_OP_CREATE)) { + && (operation == UNC_OP_CREATE)) { val_vunk_if->valid[UPLL_IDX_ADMIN_ST_VUNI] = UNC_VF_VALID_NO_VALUE; val_vunk_if->admin_status = UPLL_ADMIN_ENABLE; } @@ -757,7 +753,7 @@ upll_rc_t VunkIfMoMgr::ValidateVtnNeighValue( kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed.conn_vnode_name-(%s)", - val_vtn_neighbor->connected_vnode_name); + val_vtn_neighbor->connected_vnode_name); return ret_val; } } @@ -768,7 +764,7 @@ upll_rc_t VunkIfMoMgr::ValidateVtnNeighValue( kMinLenInterfaceName, kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed. connected_if_name-%s", - val_vtn_neighbor->connected_if_name); + val_vtn_neighbor->connected_if_name); return ret_val; } } @@ -778,20 +774,20 @@ upll_rc_t VunkIfMoMgr::ValidateVtnNeighValue( kMinLenVlinkName, kMaxLenVlinkName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed.connected_vlink_name=%s", - val_vtn_neighbor->connected_vlink_name); + val_vtn_neighbor->connected_vlink_name); return ret_val; } } return UPLL_RC_SUCCESS; } upll_rc_t VunkIfMoMgr::ValidateVunkIfKey(key_vunk_if_t *key_vunk_if, - unc_keytype_operation_t operation) { + unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_SUCCESS; /** Validate vtn_key structure */ VunknownMoMgr *objvunkmgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VUNKNOWN))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VUNKNOWN))); if (NULL == objvunkmgr) { UPLL_LOG_DEBUG("unable to get VunknownMoMgr to validate key_vunknown"); return UPLL_RC_ERR_GENERIC; @@ -805,7 +801,7 @@ upll_rc_t VunkIfMoMgr::ValidateVunkIfKey(key_vunk_if_t *key_vunk_if, if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { ret_val = ValidateKey(reinterpret_cast(key_vunk_if->if_name), - kMinLenInterfaceName, kMaxLenInterfaceName); + kMinLenInterfaceName, kMaxLenInterfaceName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Syntax check failed.if_name-(%s)", key_vunk_if->if_name); @@ -814,7 +810,7 @@ upll_rc_t VunkIfMoMgr::ValidateVunkIfKey(key_vunk_if_t *key_vunk_if, } else { UPLL_LOG_TRACE("Operation is %d", operation); StringReset(key_vunk_if->if_name); - } + } return UPLL_RC_SUCCESS; } @@ -824,21 +820,21 @@ upll_rc_t VunkIfMoMgr::IsReferenced(ConfigKeyVal *ikey, UPLL_FUNC_TRACE; ConfigKeyVal *okey = NULL; if (NULL == ikey) - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; GetChildConfigKey(okey, ikey); DbSubOp dbop = { kOpReadMultiple, kOpMatchNone, kOpInOutFlag }; - upll_rc_t result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, + upll_rc_t result_code = ReadConfigDB(okey, dt_type, UNC_OP_READ, dbop, dmi, MAINTBL); if (result_code != UPLL_RC_SUCCESS) { result_code = (result_code == UPLL_RC_ERR_NO_SUCH_INSTANCE)? - UPLL_RC_SUCCESS:result_code; + UPLL_RC_SUCCESS:result_code; if (okey) delete okey; return result_code; } ConfigKeyVal *temkey = okey; while (temkey != NULL) { uint8_t vlink_flag = 0; - GET_USER_DATA_FLAGS(temkey,vlink_flag); + GET_USER_DATA_FLAGS(temkey, vlink_flag); if (vlink_flag & VIF_TYPE) { delete okey; return UPLL_RC_ERR_CFG_SEMANTIC; diff --git a/coordinator/modules/upll/vunk_if_momgr.hh b/coordinator/modules/upll/vunk_if_momgr.hh index bbd554fd..00e5a1e4 100644 --- a/coordinator/modules/upll/vunk_if_momgr.hh +++ b/coordinator/modules/upll/vunk_if_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,319 +21,343 @@ namespace kt_momgr { class VunkIfMoMgr : public MoMgrImpl { - private: - static BindInfo vunk_if_bind_info[]; - static BindInfo key_vunk_if_maintbl_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, - uint64_t indx, - uint8_t *&valid, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - valid = NULL; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vunknown_interface::kDbiAdminStatus: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_ADMIN_ST_VUNI]; - break; - case uudst::vunknown_interface::kDbiDesc: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DESC_VUNI]; - break; - default: - valid = NULL; - return UPLL_RC_ERR_GENERIC; - } + private: + static BindInfo vunk_if_bind_info[]; + static BindInfo key_vunk_if_maintbl_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, + uint64_t indx, + uint8_t *&valid, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + valid = NULL; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vunknown_interface::kDbiAdminStatus: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_ADMIN_ST_VUNI]; + break; + case uudst::vunknown_interface::kDbiDesc: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_DESC_VUNI]; + break; + default: + valid = NULL; + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; } - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, - uint32_t driver_result, ConfigKeyVal *upd_key, - DalDmlIntf *dmi, - ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE, DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + return UPLL_RC_SUCCESS; + } + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + uint32_t driver_result, ConfigKeyVal *upd_key, + DalDmlIntf *dmi, + ConfigKeyVal *ctrlr_key = NULL); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE, DELETE or UPDATE) + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] auditi if true, CompareValidValue called from audit - * process. - * - **/ - bool CompareValidValue(void *&val1, - void *val, - bool audit); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] auditi if true, CompareValidValue called from audit + * process. + * + **/ + bool CompareValidValue(void *&val1, + void *val, + bool audit); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VUNK_IF keytype - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of - * input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VUNK_IF keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of + * input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, + ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_VUNK_IF keytype key structure. - * - * @param[in] key_vunk_if KT_VUNK_IF key structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVunkIfKey(key_vunk_if_t *key_vunk_if, - unc_keytype_operation_t operation = UNC_OP_INVALID); + /** + * @Brief Validates the syntax for KT_VUNK_IF keytype key structure. + * + * @param[in] key_vunk_if KT_VUNK_IF key structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVunkIfKey( + key_vunk_if_t *key_vunk_if, + unc_keytype_operation_t operation = UNC_OP_INVALID); - /** - * @Brief Validates the syntax for KT_VUNK_IF keytype value structure. - * - * @param[in] val_vlink KT_VUNK_IF value structure. - * - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVunkIfValue(val_vunk_if_t *val_vunk_if, - unc_keytype_operation_t operation = UNC_OP_INVALID); + /** + * @Brief Validates the syntax for KT_VUNK_IF keytype value structure. + * + * @param[in] val_vlink KT_VUNK_IF value structure. + * + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVunkIfValue( + val_vunk_if_t *val_vunk_if, + unc_keytype_operation_t operation = UNC_OP_INVALID); - /** - * @Brief Validates the syntax for KT_VUNK_IF keytype value structure. - * - * @param[in] val_vtn_neighbor KT_VUNK_IF value structure. - * - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVtnNeighValue(val_vtn_neighbor_t *val_vtn_neighbor); + /** + * @Brief Validates the syntax for KT_VUNK_IF keytype value structure. + * + * @param[in] val_vtn_neighbor KT_VUNK_IF value structure. + * + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVtnNeighValue(val_vtn_neighbor_t *val_vtn_neighbor); - /** - * @Brief Checks if the specified key type(KT_VUNK_IF) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input - * request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, - ConfigKeyVal *ikey, - const char *ctrlr_name = NULL) { - return UPLL_RC_SUCCESS; - } - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main - * table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, - ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the - * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, - upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an - * input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from - * which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *parent_key); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t *ctrlr_name) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; - } - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - uint8_t *ctrlr_id) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; - } - /* Rename */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, - ConfigKeyVal *ikey); - bool GetRenameKeyBindInfo(unc_key_type_t key_type, - BindInfo *&binfo, - int &nattr, - MoMgrTables tbl); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL) { - // string s(kval->ToStrAll()); - // UPLL_LOG_DEBUG(" %s", s.c_str()); - return UPLL_RC_SUCCESS; - } + /** + * @Brief Checks if the specified key type(KT_VUNK_IF) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input + * request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, + ConfigKeyVal *ikey, + const char *ctrlr_name = NULL) { + return UPLL_RC_SUCCESS; + } + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main + * table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, + ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the + * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, + upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an + * input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from + * which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_name) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + uint8_t *ctrlr_id) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } + /* Rename */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, + ConfigKeyVal *ikey); + bool GetRenameKeyBindInfo(unc_key_type_t key_type, + BindInfo *&binfo, + int &nattr, + MoMgrTables tbl); + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL) { + // string s(kval->ToStrAll()); + // UPLL_LOG_DEBUG(" %s", s.c_str()); + return UPLL_RC_SUCCESS; + } - public: - VunkIfMoMgr(); - virtual ~VunkIfMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to - * a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *key, - uint64_t index); - virtual upll_rc_t TxVoteCtrlrStatus(unc_key_type_t keytype, + public: + VunkIfMoMgr(); + virtual ~VunkIfMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to + * a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *key, + uint64_t index); + virtual upll_rc_t TxVoteCtrlrStatus(unc_key_type_t keytype, list *ctrlr_vote_status, DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_id, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t ImportClear(unc_key_type_t keytype, const char *ctrlr_id, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditVoteCtrlrStatus(unc_key_type_t keytype, - CtrlrVoteStatus *vote_satus, + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t MergeImportToCandidate(unc_key_type_t keytype, + const char *ctrlr_id, DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditCommitCtrlrStatus(unc_key_type_t keytype, - CtrlrCommitStatus *commit_satus, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditEnd(unc_key_type_t keytype, const char *ctrlr_id, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t ImportClear(unc_key_type_t keytype, const char *ctrlr_id, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditUpdateController( + unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditVoteCtrlrStatus(unc_key_type_t keytype, + CtrlrVoteStatus *vote_satus, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditCommitCtrlrStatus(unc_key_type_t keytype, + CtrlrCommitStatus *commit_satus, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditEnd(unc_key_type_t keytype, const char *ctrlr_id, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } - /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING - * operations - * - * @param[in/out] key Pointer to the ConfigKeyVal Structure - * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) - * - * @retval UPLL_RC_SUCCESS Completed successfully. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. - * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist - * - **/ - upll_rc_t PopulateValVtnNeighbor(ConfigKeyVal *&key, DalDmlIntf *dmi); + /* @brief Populate val_vtn_neighbor for the READ/READ_SIBLING + * operations + * + * @param[in/out] key Pointer to the ConfigKeyVal Structure + * @param[in] dmi Pointer to the DalDmlIntf(DB Interface) + * + * @retval UPLL_RC_SUCCESS Completed successfully. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_RESOURCE_DISCONNECTED Resource disconnected. + * @retval UPLL_RC_ERR_DB_ACCESS DB Read/Write error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE Given key does not exist + * + **/ + upll_rc_t PopulateValVtnNeighbor(ConfigKeyVal *&key, DalDmlIntf *dmi); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); + + virtual upll_rc_t GetPortMap(ConfigKeyVal *ikey, uint8_t &valid_pm, + val_port_map_t *&pm, uint8_t &valid_admin, + uint8_t &admin_status) { + UPLL_FUNC_TRACE; + if (ikey == NULL) return UPLL_RC_ERR_GENERIC; + val_vunk_if *ifval = reinterpret_cast + (GetVal(ikey)); + if (!ifval) { + UPLL_LOG_DEBUG("Invalid param"); + return UPLL_RC_ERR_GENERIC; + } + valid_pm = UNC_VF_INVALID; + pm = NULL; + valid_admin = ifval->valid[UPLL_IDX_ADMIN_ST_VUNI]; + admin_status = ifval->admin_status; + return UPLL_RC_SUCCESS; + } }; } // namespace kt_momgr diff --git a/coordinator/modules/upll/vunk_momgr.cc b/coordinator/modules/upll/vunk_momgr.cc index ba41e8fc..ebe61d9f 100644 --- a/coordinator/modules/upll/vunk_momgr.cc +++ b/coordinator/modules/upll/vunk_momgr.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,55 +21,57 @@ namespace upll { namespace kt_momgr { BindInfo VunknownMoMgr::vunk_bind_info[] = { - { uudst::vunknown::kDbiVtnName, CFG_KEY, offsetof(key_vunknown, - vtn_key.vtn_name), - uud::kDalChar, 32 }, - { uudst::vunknown::kDbiVunknownName, CFG_KEY, offsetof(key_vunknown, - vunknown_name), - uud::kDalChar, 32 }, - { uudst::vunknown::kDbiDesc, CFG_VAL, offsetof(val_vunknown, description), - uud::kDalChar, 128 }, - { uudst::vunknown::kDbiType, CFG_VAL, offsetof(val_vunknown, type), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiDomainId, CFG_VAL, offsetof(val_vunknown, domain_id), - uud::kDalChar, 32 }, - { uudst::vunknown::kDbiValidDesc, CFG_META_VAL, offsetof( - val_vunknown, valid[UPLL_IDX_DESC_VUN]), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiValidType, CFG_META_VAL, offsetof( - val_vunknown, valid[UPLL_IDX_TYPE_VUN]), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiValidDomainId, CFG_META_VAL, offsetof( - val_vunknown, valid[UPLL_IDX_DOMAIN_ID_VUN]), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiCsDesc, CS_VAL, offsetof(val_vunknown, - cs_attr[UPLL_IDX_DESC_VUN]), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiCsType, CS_VAL, offsetof(val_vunknown, - cs_attr[UPLL_IDX_TYPE_VUN]), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiCsDomainId, CS_VAL, offsetof( - val_vunknown, cs_attr[UPLL_IDX_DOMAIN_ID_VUN]), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiCsRowstatus, CS_VAL, offsetof(val_vunknown, - cs_row_status), - uud::kDalUint8, 1 }, - { uudst::vunknown::kDbiFlags, CK_VAL, offsetof(key_user_data_t, flags), - uud::kDalUint8, 1 } }; + { uudst::vunknown::kDbiVtnName, CFG_KEY, offsetof(key_vunknown, + vtn_key.vtn_name), + uud::kDalChar, 32 }, + { uudst::vunknown::kDbiVunknownName, CFG_KEY, offsetof(key_vunknown, + vunknown_name), + uud::kDalChar, 32 }, + { uudst::vunknown::kDbiDesc, CFG_VAL, offsetof(val_vunknown, description), + uud::kDalChar, 128 }, + { uudst::vunknown::kDbiType, CFG_VAL, offsetof(val_vunknown, type), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiDomainId, CFG_VAL, offsetof(val_vunknown, domain_id), + uud::kDalChar, 32 }, + { uudst::vunknown::kDbiDomainId, CK_VAL, offsetof(key_user_data, domain_id), + uud::kDalChar, 32 }, + { uudst::vunknown::kDbiValidDesc, CFG_META_VAL, offsetof( + val_vunknown, valid[UPLL_IDX_DESC_VUN]), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiValidType, CFG_META_VAL, offsetof( + val_vunknown, valid[UPLL_IDX_TYPE_VUN]), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiValidDomainId, CFG_META_VAL, offsetof( + val_vunknown, valid[UPLL_IDX_DOMAIN_ID_VUN]), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiCsDesc, CS_VAL, offsetof(val_vunknown, + cs_attr[UPLL_IDX_DESC_VUN]), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiCsType, CS_VAL, offsetof(val_vunknown, + cs_attr[UPLL_IDX_TYPE_VUN]), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiCsDomainId, CS_VAL, offsetof( + val_vunknown, cs_attr[UPLL_IDX_DOMAIN_ID_VUN]), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiCsRowstatus, CS_VAL, offsetof(val_vunknown, + cs_row_status), + uud::kDalUint8, 1 }, + { uudst::vunknown::kDbiFlags, CK_VAL, offsetof(key_user_data_t, flags), + uud::kDalUint8, 1 } }; BindInfo VunknownMoMgr::key_vunk_maintbl_update_bind_info[] = { - { uudst::vunknown::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vunknown, - vtn_key.vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vunknown::kDbiVunknownName, CFG_MATCH_KEY, offsetof(key_vunknown, - vunknown_name), - uud::kDalChar, kMaxLenVnodeName + 1 }, - { uudst::vunknown::kDbiVtnName, CFG_INPUT_KEY, offsetof( - key_rename_vnode_info_t, new_unc_vtn_name), - uud::kDalChar, kMaxLenVtnName + 1 }, - { uudst::vunknown::kDbiFlags, CK_VAL, offsetof(key_user_data_t, - flags), - uud::kDalUint8, 1 } }; + { uudst::vunknown::kDbiVtnName, CFG_MATCH_KEY, offsetof(key_vunknown, + vtn_key.vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vunknown::kDbiVunknownName, CFG_MATCH_KEY, offsetof(key_vunknown, + vunknown_name), + uud::kDalChar, kMaxLenVnodeName + 1 }, + { uudst::vunknown::kDbiVtnName, CFG_INPUT_KEY, offsetof( + key_rename_vnode_info_t, new_unc_vtn_name), + uud::kDalChar, kMaxLenVtnName + 1 }, + { uudst::vunknown::kDbiFlags, CK_VAL, offsetof(key_user_data_t, + flags), + uud::kDalUint8, 1 } }; unc_key_type_t VunknownMoMgr::vunk_child[] = { UNC_KT_VUNK_IF }; @@ -78,9 +80,9 @@ VunknownMoMgr::VunknownMoMgr() { ntable = MAX_MOMGR_TBLS; table = new Table *[ntable]; table[MAINTBL] = new Table(uudst::kDbiVunknownTbl, UNC_KT_VUNKNOWN, - vunk_bind_info, IpctSt::kIpcStKeyVunknown, - IpctSt::kIpcStValVunknown, - uudst::vunknown::kDbiVunknownNumCols); + vunk_bind_info, IpctSt::kIpcStKeyVunknown, + IpctSt::kIpcStValVunknown, + uudst::vunknown::kDbiVunknownNumCols); table[RENAMETBL] = NULL; table[CTRLRTBL] = NULL; nchild = sizeof(vunk_child) / sizeof(*vunk_child); @@ -139,7 +141,7 @@ upll_rc_t VunknownMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; key_vunknown *vunk_key = reinterpret_cast - (malloc(sizeof(key_vunknown))); + (malloc(sizeof(key_vunknown))); if (!vunk_key) { UPLL_LOG_ERROR("vunk_key Memory allocation failed"); @@ -154,7 +156,7 @@ upll_rc_t VunknownMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, vunk_key, NULL); return UPLL_RC_SUCCESS; } else { - pkey = parent_key->get_key(); + pkey = parent_key->get_key(); } if (!pkey) { free(vunk_key); @@ -165,17 +167,18 @@ upll_rc_t VunknownMoMgr::GetChildConfigKey(ConfigKeyVal *&okey, switch (parent_key->get_key_type()) { case UNC_KT_VUNKNOWN: uuu::upll_strncpy(vunk_key->vunknown_name, - reinterpret_cast(pkey)->vunknown_name, - (kMaxLenVnodeName+1)); + reinterpret_cast(pkey)->vunknown_name, + (kMaxLenVnodeName+1)); uuu::upll_strncpy(vunk_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1)); break; case UNC_KT_VTN: default: uuu::upll_strncpy(vunk_key->vtn_key.vtn_name, - reinterpret_cast(pkey)->vtn_name, - (kMaxLenVtnName+1)); + reinterpret_cast(pkey)->vtn_name, + (kMaxLenVtnName+1)); } okey = new ConfigKeyVal(UNC_KT_VUNKNOWN, IpctSt::kIpcStKeyVunknown, vunk_key, NULL); @@ -204,8 +207,8 @@ upll_rc_t VunknownMoMgr::GetParentConfigKey(ConfigKeyVal *&okey, } uuu::upll_strncpy(vtn_key->vtn_name, - reinterpret_cast(pkey)->vtn_key.vtn_name, - (kMaxLenVtnName+1) ); + reinterpret_cast(pkey)->vtn_key.vtn_name, + (kMaxLenVtnName+1) ); if (okey) delete okey; okey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, vtn_key, NULL); if (okey == NULL) { @@ -251,7 +254,7 @@ upll_rc_t VunknownMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, return UPLL_RC_ERR_GENERIC; } val_vunknown *vunk_val = reinterpret_cast - (malloc(sizeof(val_vunknown))); + (malloc(sizeof(val_vunknown))); if (!vunk_val) return UPLL_RC_ERR_GENERIC; memcpy(vunk_val, ival, sizeof(val_vunknown)); tmp1 = new ConfigVal(IpctSt::kIpcStValVunknown, vunk_val); @@ -260,7 +263,7 @@ upll_rc_t VunknownMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, void *tkey = (req != NULL) ? (req)->get_key() : NULL; key_vunknown *ikey = reinterpret_cast(tkey); key_vunknown *vunk_key = reinterpret_cast - (malloc(sizeof(key_vunknown))); + (malloc(sizeof(key_vunknown))); if (!vunk_key) { delete tmp1; return UPLL_RC_ERR_GENERIC;} memcpy(vunk_key, ikey, sizeof(key_vunknown)); okey = new ConfigKeyVal(UNC_KT_VUNKNOWN, IpctSt::kIpcStKeyVunknown, vunk_key, @@ -270,8 +273,11 @@ upll_rc_t VunknownMoMgr::DupConfigKeyVal(ConfigKeyVal *&okey, } upll_rc_t VunknownMoMgr::UpdateAuditConfigStatus( - unc_keytype_configstatus_t cs_status, uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running) { + unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi) { + UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; return result_code; } @@ -286,22 +292,22 @@ upll_rc_t VunknownMoMgr::UpdateConfigStatus(ConfigKeyVal *vunk_key, unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; vunk_val = reinterpret_cast(GetVal(vunk_key)); val_vunknown *vunk_val2 = reinterpret_cast(GetVal(upd_key)); - UPLL_LOG_TRACE("Key in Candidate %s",(vunk_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("Key in Candidate %s", (vunk_key->ToStrAll()).c_str()); if (vunk_val == NULL) return UPLL_RC_ERR_GENERIC; if (op == UNC_OP_CREATE) { vunk_val->cs_row_status = cs_status; } else if (op == UNC_OP_UPDATE) { void *vunkval = reinterpret_cast(vunk_val); CompareValidValue(vunkval, GetVal(upd_key), true); - UPLL_LOG_TRACE("Key in Running %s",(upd_key->ToStrAll()).c_str()); + UPLL_LOG_TRACE("Key in Running %s", (upd_key->ToStrAll()).c_str()); vunk_val->cs_row_status = vunk_val2->cs_row_status; } else { - return UPLL_RC_ERR_GENERIC; + return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; loop < sizeof(vunk_val->valid) / sizeof(vunk_val->valid[0]); ++loop) { if ((UNC_VF_VALID == vunk_val->valid[loop]) - || (UNC_VF_VALID_NO_VALUE == vunk_val->valid[loop])) + || (UNC_VF_VALID_NO_VALUE == vunk_val->valid[loop])) vunk_val->cs_attr[loop] = cs_status; else if ((UNC_VF_INVALID == vunk_val->valid[loop]) && (UNC_OP_CREATE == op)) @@ -316,33 +322,11 @@ upll_rc_t VunknownMoMgr::UpdateConfigStatus(ConfigKeyVal *vunk_key, upll_rc_t VunknownMoMgr::CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey) { - UPLL_FUNC_TRACE; - if (!ikey || !(ikey->get_key())) return UPLL_RC_ERR_GENERIC; - - upll_rc_t result_code = UPLL_RC_SUCCESS; - - key_rename_vnode_info *key_rename = reinterpret_cast - (ikey->get_key()); - key_vunknown_t *key_vunk = reinterpret_cast - (malloc(sizeof(key_vunknown_t))); - if (!key_vunk) return UPLL_RC_ERR_GENERIC; - memset(key_vunk, 0, sizeof(key_vunknown_t)); - if (!strlen(reinterpret_cast(key_rename->old_unc_vtn_name))) { - free(key_vunk); - return UPLL_RC_ERR_GENERIC; - } - uuu::upll_strncpy(key_vunk->vtn_key.vtn_name, - key_rename->old_unc_vtn_name, (kMaxLenVtnName+1)); - okey = new ConfigKeyVal(UNC_KT_VUNKNOWN, IpctSt::kIpcStKeyVunknown, key_vunk, - NULL); - if (!okey) { - free(key_vunk); - return UPLL_RC_ERR_GENERIC; - } - return result_code; + UPLL_LOG_INFO("Not supported for this keytype. Returning Generic Error"); + return UPLL_RC_ERR_GENERIC; } upll_rc_t VunknownMoMgr::ValidateMessage(IpcReqRespHeader *req, - ConfigKeyVal *ikey) { + ConfigKeyVal *ikey) { UPLL_FUNC_TRACE; upll_rc_t ret_val = UPLL_RC_ERR_GENERIC; if (!ikey || !req || !(ikey->get_key())) { @@ -353,16 +337,17 @@ upll_rc_t VunknownMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_DEBUG( "Invalid structure received.Expected struct-kIpcStKeyVunknown" "received struct -%s ", - reinterpret_cast(IpctSt::GetIpcStdef(ikey->get_st_num()))); + reinterpret_cast + (IpctSt::GetIpcStdef(ikey->get_st_num()))); return UPLL_RC_ERR_BAD_REQUEST; } key_vunknown_t *key_vunknown = - reinterpret_cast(ikey->get_key()); + reinterpret_cast(ikey->get_key()); val_vunknown_t *val_vunknown = NULL; if ((ikey->get_cfg_val()) && (ikey->get_cfg_val())->get_st_num() == IpctSt::kIpcStValVunknown) { val_vunknown = - reinterpret_cast(ikey->get_cfg_val()->get_val()); + reinterpret_cast(ikey->get_cfg_val()->get_val()); } upll_keytype_datatype_t dt_type = req->datatype; unc_keytype_operation_t operation = req->operation; @@ -399,10 +384,11 @@ upll_rc_t VunknownMoMgr::ValidateMessage(IpcReqRespHeader *req, return UPLL_RC_SUCCESS; } } else if (((operation == UNC_OP_READ) || (operation == UNC_OP_READ_SIBLING) - || (operation == UNC_OP_READ_SIBLING_BEGIN) - || (operation == UNC_OP_READ_SIBLING_COUNT)) - && ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) - || (dt_type == UPLL_DT_STARTUP) || (dt_type == UPLL_DT_STATE))) { + || (operation == UNC_OP_READ_SIBLING_BEGIN) + || (operation == UNC_OP_READ_SIBLING_COUNT)) + && ((dt_type == UPLL_DT_CANDIDATE) || (dt_type == UPLL_DT_RUNNING) + || (dt_type == UPLL_DT_STARTUP) || + (dt_type == UPLL_DT_STATE))) { if (option1 == UNC_OPT1_NORMAL) { if (option2 == UNC_OPT2_NONE) { if (val_vunknown != NULL) { @@ -428,21 +414,21 @@ upll_rc_t VunknownMoMgr::ValidateMessage(IpcReqRespHeader *req, UPLL_LOG_TRACE("Value structure is none for this operation :%d", operation); return UPLL_RC_SUCCESS; } else if (((operation == UNC_OP_READ_NEXT) || - (operation == UNC_OP_READ_BULK)) && - ((dt_type == UPLL_DT_CANDIDATE) || - (dt_type == UPLL_DT_RUNNING) || - (dt_type == UPLL_DT_STARTUP))) { + (operation == UNC_OP_READ_BULK)) && + ((dt_type == UPLL_DT_CANDIDATE) || + (dt_type == UPLL_DT_RUNNING) || + (dt_type == UPLL_DT_STARTUP))) { UPLL_LOG_TRACE("Value structure is none for this operation :%d", operation); return UPLL_RC_SUCCESS; } else { UPLL_LOG_DEBUG("Invalid datatype(%d) and operation(%d)", dt_type, - operation); + operation); return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT; } } upll_rc_t VunknownMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, - IpcReqRespHeader *req) { + IpcReqRespHeader *req) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; controller_domain ctrlr_dom; @@ -451,18 +437,25 @@ upll_rc_t VunknownMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, ConfigKeyVal *okey = NULL; result_code = GetChildConfigKey(okey, ikey); if (UPLL_RC_SUCCESS != result_code) { - UPLL_LOG_DEBUG("Returing error %d",result_code); + UPLL_LOG_DEBUG("Returing error %d", result_code); if (okey) delete okey; return result_code; } - DbSubOp dbop = {kOpReadSingle, kOpMatchNone, kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; - result_code = ReadConfigDB(okey, req->datatype, UNC_OP_READ, dbop, dmi, MAINTBL); + DbSubOp dbop = {kOpReadSingle, + kOpMatchNone, + kOpInOutCtrlr | kOpInOutDomain | kOpInOutFlag}; + result_code = ReadConfigDB(okey, + req->datatype, + UNC_OP_READ, + dbop, + dmi, + MAINTBL); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_ERROR("Record does Not Exists"); delete okey; return result_code; } - GET_USER_DATA_CTRLR_DOMAIN(okey,ctrlr_dom); + GET_USER_DATA_CTRLR_DOMAIN(okey, ctrlr_dom); result_code = CtrlrIdAndDomainIdUpdationCheck(ikey, okey); DELETE_IF_NOT_NULL(okey); if (result_code != UPLL_RC_SUCCESS) { @@ -474,7 +467,7 @@ upll_rc_t VunknownMoMgr::ValidateAttribute(ConfigKeyVal *ikey, DalDmlIntf *dmi, } upll_rc_t VunknownMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey) { + ConfigKeyVal *okey) { UPLL_FUNC_TRACE; val_vunknown *vunk_val = reinterpret_cast(GetVal(ikey)); val_vunknown *vunk_val1 = reinterpret_cast(GetVal(okey)); @@ -489,14 +482,15 @@ upll_rc_t VunknownMoMgr::CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, return UPLL_RC_SUCCESS; } -upll_rc_t VunknownMoMgr::ValidateVunknownKey(key_vunknown_t *key_vunknown, +upll_rc_t VunknownMoMgr::ValidateVunknownKey( + key_vunknown_t *key_vunknown, unc_keytype_operation_t operation) { UPLL_FUNC_TRACE; bool ret_val = UPLL_RC_SUCCESS; /** Validate vtn_key structure */ VtnMoMgr *objvtnmgr = - reinterpret_cast(const_cast(GetMoManager( - UNC_KT_VTN))); + reinterpret_cast(const_cast(GetMoManager( + UNC_KT_VTN))); if (NULL == objvtnmgr) { UPLL_LOG_DEBUG("unable to get VtnMoMgr object to validate key_vtn"); return UPLL_RC_ERR_GENERIC; @@ -509,9 +503,11 @@ upll_rc_t VunknownMoMgr::ValidateVunknownKey(key_vunknown_t *key_vunknown, } if ((operation != UNC_OP_READ_SIBLING_BEGIN) && (operation != UNC_OP_READ_SIBLING_COUNT)) { - UPLL_LOG_TRACE("KT_VUNKNOWN:vunknown_name (%s)", key_vunknown->vunknown_name); - ret_val = ValidateKey(reinterpret_cast(key_vunknown->vunknown_name), - kMinLenVnodeName, kMaxLenVnodeName); + UPLL_LOG_TRACE("KT_VUNKNOWN:vunknown_name (%s)", + key_vunknown->vunknown_name); + ret_val = ValidateKey(reinterpret_cast + (key_vunknown->vunknown_name), + kMinLenVnodeName, kMaxLenVnodeName); if (ret_val != UPLL_RC_SUCCESS) { UPLL_LOG_DEBUG("Validation failure for key_vunknown->vunknown_name"); @@ -525,16 +521,16 @@ upll_rc_t VunknownMoMgr::ValidateVunknownKey(key_vunknown_t *key_vunknown, } upll_rc_t VunknownMoMgr::ValidateVunknownValue(val_vunknown_t *vunk_val, - uint32_t operation) { + uint32_t operation) { UPLL_FUNC_TRACE; bool ret_val =false; - + // Attribute syntax validation for (unsigned int valid_index = 0; valid_index < sizeof(vunk_val->valid) / sizeof(vunk_val->valid[0]); - valid_index++) { + valid_index++) { if (vunk_val->valid[valid_index] == UNC_VF_VALID) { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_DOMAIN_ID_VUN: ret_val = ValidateDefaultStr(vunk_val->domain_id, kMinLenDomainId, kMaxLenDomainId); @@ -542,15 +538,17 @@ upll_rc_t VunknownMoMgr::ValidateVunknownValue(val_vunknown_t *vunk_val, case UPLL_IDX_DESC_VUN: ret_val = ValidateDesc(vunk_val->description, kMinLenDescription, kMaxLenDescription); - break; + break; case UPLL_IDX_TYPE_VUN: ret_val = ValidateNumericRange(vunk_val->type, - (uint8_t) VUNKNOWN_TYPE_BRIDGE, - (uint8_t) VUNKNOWN_TYPE_ROUTER, true, true); + (uint8_t) VUNKNOWN_TYPE_BRIDGE, + (uint8_t) VUNKNOWN_TYPE_ROUTER, + true, + true); break; } if (!ret_val) { - return UPLL_RC_ERR_CFG_SYNTAX; + return UPLL_RC_ERR_CFG_SYNTAX; } } } @@ -563,12 +561,12 @@ upll_rc_t VunknownMoMgr::ValidateVunknownValue(val_vunknown_t *vunk_val, switch (operation) { case UNC_OP_CREATE: { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_DOMAIN_ID_VUN: if ((flag == UNC_VF_INVALID || flag == UNC_VF_VALID_NO_VALUE)) { UPLL_LOG_DEBUG("domain_id flag is invalid" " or valid_no_value"); - return UPLL_RC_ERR_CFG_SYNTAX; + return UPLL_RC_ERR_CFG_SYNTAX; } break; case UPLL_IDX_DESC_VUN: @@ -581,23 +579,24 @@ upll_rc_t VunknownMoMgr::ValidateVunknownValue(val_vunknown_t *vunk_val, default: break; } - } + } break; case UNC_OP_UPDATE: { - switch(valid_index) { + switch (valid_index) { case UPLL_IDX_DOMAIN_ID_VUN: if (flag == UNC_VF_VALID_NO_VALUE) { - UPLL_LOG_DEBUG("controller_id or domain_id flag is valid_no_value"); + UPLL_LOG_DEBUG("controller_id or domain_id flag" + "is valid_no_value"); return UPLL_RC_ERR_CFG_SYNTAX; } - break; + break; case UPLL_IDX_DESC_VUN: case UPLL_IDX_TYPE_VUN: default: break; } - } + } break; } } @@ -607,10 +606,10 @@ upll_rc_t VunknownMoMgr::ValidateVunknownValue(val_vunknown_t *vunk_val, valid_index < sizeof(vunk_val->valid) / sizeof(vunk_val->valid[0]); valid_index++) { uint8_t flag = vunk_val->valid[valid_index]; - if (flag != UNC_VF_INVALID && flag != UNC_VF_VALID_NO_VALUE) + if (flag != UNC_VF_INVALID && flag != UNC_VF_VALID_NO_VALUE) continue; - - switch(valid_index) { + + switch (valid_index) { case UPLL_IDX_DOMAIN_ID_VUN: StringReset(vunk_val->domain_id); break; @@ -629,31 +628,31 @@ upll_rc_t VunknownMoMgr::ValidateVunknownValue(val_vunknown_t *vunk_val, } bool VunknownMoMgr::CompareValidValue(void *&val1, - void *val2, - bool copy_to_running) { + void *val2, + bool copy_to_running) { UPLL_FUNC_TRACE; bool invalid_attr = true; val_vunknown_t *val_vunknown1 = reinterpret_cast(val1); val_vunknown_t *val_vunknown2 = reinterpret_cast(val2); if (!val_vunknown2) { - UPLL_LOG_TRACE("Invalid param"); - return UPLL_RC_ERR_GENERIC; + UPLL_LOG_TRACE("Invalid param"); + return UPLL_RC_ERR_GENERIC; } for (unsigned int loop = 0; - loop < sizeof(val_vunknown1->valid) / sizeof(uint8_t); ++loop) { - if (UNC_VF_INVALID == val_vunknown1->valid[loop] - && UNC_VF_VALID == val_vunknown2->valid[loop]) - val_vunknown1->valid[loop] = UNC_VF_VALID_NO_VALUE; + loop < sizeof(val_vunknown1->valid) / sizeof(uint8_t); ++loop) { + if (UNC_VF_INVALID == val_vunknown1->valid[loop] + && UNC_VF_VALID == val_vunknown2->valid[loop]) + val_vunknown1->valid[loop] = UNC_VF_VALID_NO_VALUE; } /* Specify the configured ip address for * PFC to clear the configured IP address */ if ((UNC_VF_VALID == val_vunknown1->valid[UPLL_IDX_DESC_VUN]) - && (UNC_VF_VALID == val_vunknown2->valid[UPLL_IDX_DESC_VUN])) + && (UNC_VF_VALID == val_vunknown2->valid[UPLL_IDX_DESC_VUN])) if (!strncmp(reinterpret_cast(val_vunknown1->description), reinterpret_cast(val_vunknown2->description), kMaxLenDescription)) - val_vunknown1->valid[UPLL_IDX_DESC_VUN] = UNC_VF_INVALID; + val_vunknown1->valid[UPLL_IDX_DESC_VUN] = UNC_VF_INVALID; if (UNC_VF_VALID == val_vunknown1->valid[UPLL_IDX_TYPE_VUN] && UNC_VF_VALID == val_vunknown2->valid[UPLL_IDX_TYPE_VUN]) { if (val_vunknown1->type == val_vunknown2->type) @@ -672,11 +671,11 @@ bool VunknownMoMgr::CompareValidValue(void *&val1, val_vunknown1->valid[UPLL_IDX_DOMAIN_ID_VUN] = UNC_VF_INVALID; } for (unsigned int loop = 0; - loop < sizeof(val_vunknown1->valid) / sizeof(uint8_t); ++loop) { + loop < sizeof(val_vunknown1->valid) / sizeof(uint8_t); ++loop) { if ((UNC_VF_VALID == (uint8_t) val_vunknown1->valid[loop]) || - (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vunknown1->valid[loop])) { - invalid_attr = false; - break; + (UNC_VF_VALID_NO_VALUE == (uint8_t) val_vunknown1->valid[loop])) { + invalid_attr = false; + break; } } return invalid_attr; @@ -687,23 +686,26 @@ upll_rc_t VunknownMoMgr::CreateVnodeConfigKey(ConfigKeyVal *ikey, if (ikey == NULL) return UPLL_RC_ERR_GENERIC; key_vunknown * temp_key_vunknown = reinterpret_cast - (malloc(sizeof(key_vunknown))); -if (!temp_key_vunknown) { + (malloc(sizeof(key_vunknown))); + if (!temp_key_vunknown) { UPLL_LOG_ERROR("temp_key_vunknown Memory allocation failed"); return UPLL_RC_ERR_GENERIC; } uuu::upll_strncpy(temp_key_vunknown->vtn_key.vtn_name, - reinterpret_cast(ikey->get_key())->vtn_key.vtn_name, - (kMaxLenVtnName+1) ); + reinterpret_cast + (ikey->get_key())->vtn_key.vtn_name, + (kMaxLenVtnName+1) ); uuu::upll_strncpy(temp_key_vunknown->vunknown_name, - reinterpret_cast(ikey->get_key())->vunknown_name, - (kMaxLenVtnName+1)); + reinterpret_cast + (ikey->get_key())->vunknown_name, + (kMaxLenVtnName+1)); ConfigKeyVal *ck_vunknown = new ConfigKeyVal(UNC_KT_VUNKNOWN, - IpctSt::kIpcStKeyVunknown, - reinterpret_cast(temp_key_vunknown), - NULL); + IpctSt::kIpcStKeyVunknown, + reinterpret_cast + (temp_key_vunknown), + NULL); if (ck_vunknown == NULL) return UPLL_RC_ERR_GENERIC; okey = ck_vunknown; return UPLL_RC_SUCCESS; @@ -714,12 +716,13 @@ upll_rc_t VunknownMoMgr::IsReferenced(ConfigKeyVal *ikey, DalDmlIntf *dmi) { UPLL_FUNC_TRACE; upll_rc_t result_code = UPLL_RC_SUCCESS; - MoMgrImpl *mgr = reinterpret_cast(const_cast - (GetMoManager(UNC_KT_VUNK_IF))); + MoMgrImpl *mgr = reinterpret_cast( + const_cast + (GetMoManager(UNC_KT_VUNK_IF))); result_code = mgr->IsReferenced(ikey, dt_type, dmi); if (UPLL_RC_SUCCESS != result_code) { UPLL_LOG_DEBUG("UPLL_RC_ERR_NO_SUCH_INSTANCE != result_code (%d)", - result_code); + result_code); return result_code; } UPLL_LOG_DEBUG("IsReferenced result code (%d)", result_code); diff --git a/coordinator/modules/upll/vunk_momgr.hh b/coordinator/modules/upll/vunk_momgr.hh index c577bb8b..f1be20d1 100644 --- a/coordinator/modules/upll/vunk_momgr.hh +++ b/coordinator/modules/upll/vunk_momgr.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -20,302 +20,306 @@ namespace kt_momgr { class VunknownMoMgr : public MoMgrImpl { - private: - static unc_key_type_t vunk_child[]; - static BindInfo vunk_bind_info[]; - static BindInfo key_vunk_maintbl_update_bind_info[]; - /** - * @brief Gets the valid array position of the variable in the value - * structure from the table in the specified configuration - * - * @param[in] val pointer to the value structure - * @param[in] indx database index for the variable - * @param[out] valid position of the variable in the valid array - - * NULL if valid does not exist. - * @param[in] dt_type specifies the configuration - * @param[in] tbl specifies the table containing the given value - * - **/ - upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, - upll_keytype_datatype_t dt_type, MoMgrTables tbl) { - if (val == NULL) return UPLL_RC_ERR_GENERIC; - if (tbl == MAINTBL) { - switch (indx) { - case uudst::vunknown::kDbiDesc: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DESC_VUN]; - break; - case uudst::vunknown::kDbiType: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_TYPE_VUN]; - break; - case uudst::vunknown::kDbiDomainId: - valid = &(reinterpret_cast(val))-> - valid[UPLL_IDX_DOMAIN_ID_VUN]; - break; - default: - return UPLL_RC_ERR_GENERIC; - } - } else { - return UPLL_RC_ERR_GENERIC; + private: + static unc_key_type_t vunk_child[]; + static BindInfo vunk_bind_info[]; + static BindInfo key_vunk_maintbl_update_bind_info[]; + /** + * @brief Gets the valid array position of the variable in the value + * structure from the table in the specified configuration + * + * @param[in] val pointer to the value structure + * @param[in] indx database index for the variable + * @param[out] valid position of the variable in the valid array - + * NULL if valid does not exist. + * @param[in] dt_type specifies the configuration + * @param[in] tbl specifies the table containing the given value + * + **/ + upll_rc_t GetValid(void *val, uint64_t indx, uint8_t *&valid, + upll_keytype_datatype_t dt_type, MoMgrTables tbl) { + if (val == NULL) return UPLL_RC_ERR_GENERIC; + if (tbl == MAINTBL) { + switch (indx) { + case uudst::vunknown::kDbiDesc: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_DESC_VUN]; + break; + case uudst::vunknown::kDbiType: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_TYPE_VUN]; + break; + case uudst::vunknown::kDbiDomainId: + valid = &(reinterpret_cast(val))-> + valid[UPLL_IDX_DOMAIN_ID_VUN]; + break; + default: + return UPLL_RC_ERR_GENERIC; } - return UPLL_RC_SUCCESS; + } else { + return UPLL_RC_ERR_GENERIC; } - upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, - DalDmlIntf *dmi, uint8_t *ctrlr) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; - } - upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, + return UPLL_RC_SUCCESS; + } + upll_rc_t SwapKeyVal(ConfigKeyVal *ikey, ConfigKeyVal *&okey, + DalDmlIntf *dmi, uint8_t *ctrlr) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } + upll_rc_t UpdateConfigStatus(ConfigKeyVal *req, unc_keytype_operation_t op, uint32_t driver_result, ConfigKeyVal *upd_key, DalDmlIntf *dmi, ConfigKeyVal *ctrlr_key = NULL); - /** - * @brief Update config status for commit result and vote result. - * - * @param[in/out] ckv_running ConfigKeyVal instance. - * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. - * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) - * - **/ - upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, - uuc::UpdateCtrlrPhase phase, - ConfigKeyVal *&ckv_running); + /** + * @brief Update config status for commit result and vote result. + * + * @param[in/out] ckv_running ConfigKeyVal instance. + * @param[in] cs_status either UNC_CS_INVALID or UNC_CS_APPLIED. + * @param[in] phase specify the phase (CREATE,DELETE or UPDATE) + * + **/ + upll_rc_t UpdateAuditConfigStatus(unc_keytype_configstatus_t cs_status, + uuc::UpdateCtrlrPhase phase, + ConfigKeyVal *&ckv_running, + DalDmlIntf *dmi); - /** - * @brief Compares the valid value between two database records. - * if both the values are same, update the valid flag for corresponding - * attribute as invalid in the first record. - * - * @param[in/out] val1 first record value instance. - * @param[in] val2 second record value instance. - * @param[in] audit if true, CompareValidValue called from audit process. - * - **/ - bool CompareValidValue(void *&val1, void *val2, bool audit); + /** + * @brief Compares the valid value between two database records. + * if both the values are same, update the valid flag for corresponding + * attribute as invalid in the first record. + * + * @param[in/out] val1 first record value instance. + * @param[in] val2 second record value instance. + * @param[in] audit if true, CompareValidValue called from audit process. + * + **/ + bool CompareValidValue(void *&val1, void *val2, bool audit); - /** - * @Brief Validates the syntax of the specified key and value structure - * for KT_VUNKNOWN keytype - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. - */ - upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); + /** + * @Brief Validates the syntax of the specified key and value structure + * for KT_VUNKNOWN keytype + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + * @retval UPLL_RC_ERR_NO_SUCH_INSTANCE key_vlink is not available. + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 option2 is not valid. + */ + upll_rc_t ValidateMessage(IpcReqRespHeader *req, ConfigKeyVal *ikey); - /** - * @Brief Validates the syntax for KT_VUNKNOWN keytype value structure. - * - * @param[in] val_vunknown KT_VUNKNOWN value structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_ERR_GENERIC Generic failure. - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVunknownValue(val_vunknown_t *val_vunknown, - uint32_t operation = UNC_OP_INVALID); + /** + * @Brief Validates the syntax for KT_VUNKNOWN keytype value structure. + * + * @param[in] val_vunknown KT_VUNKNOWN value structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_ERR_GENERIC Generic failure. + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVunknownValue(val_vunknown_t *val_vunknown, + uint32_t operation = UNC_OP_INVALID); - /** - * @Brief Checks if the specified key type(KT_VUNKNOWN) and - * associated attributes are supported on the given controller, - * based on the valid flag - * - * @param[in] req This structure contains - * IpcReqRespHeader(first 8 fields of input - * request structure). - * @param[in] ikey ikey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Validation succeeded. - * @retval UPLL_RC_ERR_GENERIC Validation failure. - * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. - * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. - */ - upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, - const char * crtlr_name = NULL) { - return UPLL_RC_SUCCESS; - } - /** - * @brief Method to check if individual portions of a key are valid - * - * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource - * @param[in] index db index associated with the variable - * - * @retval true input key is valid - * @retval false input key is invalid. - **/ - bool IsValidKey(void *key, uint64_t index); - /** - * @brief Duplicates the input configkeyval including the key and val. - * based on the tbl specified. - * - * @param[in] okey Output Configkeyval - allocated within the function - * @param[in] req Input ConfigKeyVal to be duplicated. - * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, - MoMgrTables tbl = MAINTBL); - /** - * @brief Allocates for the specified val in the given configuration in the * specified table. - * - * @param[in/out] ck_val Reference pointer to configval structure - * allocated. - * @param[in] dt_type specifies the configuration candidate/running/ - * state - * @param[in] tbl specifies if the corresponding table is the - * main table / controller table or rename table. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, - MoMgrTables tbl = MAINTBL); - /** - * @brief Method to get a configkeyval of a specified keytype from an input configkeyval - * - * @param[in/out] okey pointer to output ConfigKeyVal - * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - */ - upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); - /** - * @brief Method to get a configkeyval of the parent keytype - * - * @param[in/out] okey pointer to parent ConfigKeyVal - * @param[in] ikey pointer to the child configkeyval from - * which the parent configkey val is obtained. - * - * @retval UPLL_RC_SUCCESS Successfull completion. - * @retval UPLL_RC_ERR_GENERIC Failure case. - **/ - upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, - upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi, - controller_domain_t *ctrlr_name) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; - } - upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, - upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, - uint8_t *ctrlr_id) { - return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; - } - /* Rename */ - upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); - bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, - int &nattr, MoMgrTables tbl); - upll_rc_t ValidateAttribute(ConfigKeyVal *kval, - DalDmlIntf *dmi, - IpcReqRespHeader *req = NULL); + /** + * @Brief Checks if the specified key type(KT_VUNKNOWN) and + * associated attributes are supported on the given controller, + * based on the valid flag + * + * @param[in] req This structure contains + * IpcReqRespHeader(first 8 fields of input + * request structure). + * @param[in] ikey ikey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Validation succeeded. + * @retval UPLL_RC_ERR_GENERIC Validation failure. + * @retval UPLL_RC_ERR_INVALID_OPTION1 Option1 is not valid. + * @retval UPLL_RC_ERR_INVALID_OPTION2 Option2 is not valid. + */ + upll_rc_t ValidateCapability(IpcReqRespHeader *req, ConfigKeyVal *ikey, + const char * crtlr_name = NULL) { + return UPLL_RC_SUCCESS; + } + /** + * @brief Method to check if individual portions of a key are valid + * + * @param[in/out] ikey pointer to ConfigKeyVal referring to a UNC resource + * @param[in] index db index associated with the variable + * + * @retval true input key is valid + * @retval false input key is invalid. + **/ + bool IsValidKey(void *key, uint64_t index); + /** + * @brief Duplicates the input configkeyval including the key and val. + * based on the tbl specified. + * + * @param[in] okey Output Configkeyval - allocated within the function + * @param[in] req Input ConfigKeyVal to be duplicated. + * @param[in] tbl specifies if the val structure belongs to the main table/ controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t DupConfigKeyVal(ConfigKeyVal *&okey, ConfigKeyVal *&req, + MoMgrTables tbl = MAINTBL); + /** + * @brief Allocates for the specified val in the given configuration in the * specified table. + * + * @param[in/out] ck_val Reference pointer to configval structure + * allocated. + * @param[in] dt_type specifies the configuration candidate/running/ + * state + * @param[in] tbl specifies if the corresponding table is the + * main table / controller table or rename table. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t AllocVal(ConfigVal *&ck_val, upll_keytype_datatype_t dt_type, + MoMgrTables tbl = MAINTBL); + /** + * @brief Method to get a configkeyval of a specified keytype from an input configkeyval + * + * @param[in/out] okey pointer to output ConfigKeyVal + * @param[in] parent_key pointer to the configkeyval from which the output configkey val is initialized. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + */ + upll_rc_t GetChildConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *parent_key); + /** + * @brief Method to get a configkeyval of the parent keytype + * + * @param[in/out] okey pointer to parent ConfigKeyVal + * @param[in] ikey pointer to the child configkeyval from + * which the parent configkey val is obtained. + * + * @retval UPLL_RC_SUCCESS Successfull completion. + * @retval UPLL_RC_ERR_GENERIC Failure case. + **/ + upll_rc_t GetParentConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + upll_rc_t GetRenamedControllerKey(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi, + controller_domain_t *ctrlr_name) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } + upll_rc_t GetRenamedUncKey(ConfigKeyVal *ctrlr_key, + upll_keytype_datatype_t dt_type, DalDmlIntf *dmi, + uint8_t *ctrlr_id) { + return UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_KT; + } + /* Rename */ + upll_rc_t CopyToConfigKey(ConfigKeyVal *&okey, ConfigKeyVal *ikey); + bool GetRenameKeyBindInfo(unc_key_type_t key_type, BindInfo *&binfo, + int &nattr, MoMgrTables tbl); + upll_rc_t ValidateAttribute(ConfigKeyVal *kval, + DalDmlIntf *dmi, + IpcReqRespHeader *req = NULL); - public: - VunknownMoMgr(); - virtual ~VunknownMoMgr() { - for (int i = 0; i < ntable; i++) - if (table[i]) { - delete table[i]; - } - delete[] table; - } - virtual upll_rc_t TxVoteCtrlrStatus( - unc_key_type_t keytype, list *ctrlr_vote_status, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t TxUpdateController(unc_key_type_t keytype, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - set *affected_ctrlr_set, - DalDmlIntf *dmi, - ConfigKeyVal **err_ckv) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t MergeImportToCandidate(unc_key_type_t keytype, - const char *ctrlr_id, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t ImportClear(unc_key_type_t keytype, const char *ctrlr_id, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditUpdateController(unc_key_type_t keytype, - const char *ctrlr_id, - uint32_t session_id, - uint32_t config_id, - uuc::UpdateCtrlrPhase phase, - bool *ctrlr_affected, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditVoteCtrlrStatus(unc_key_type_t keytype, - CtrlrVoteStatus *vote_satus, + public: + VunknownMoMgr(); + virtual ~VunknownMoMgr() { + for (int i = 0; i < ntable; i++) + if (table[i]) { + delete table[i]; + } + delete[] table; + } + virtual upll_rc_t TxVoteCtrlrStatus( + unc_key_type_t keytype, list *ctrlr_vote_status, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t TxUpdateController(unc_key_type_t keytype, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + set *affected_ctrlr_set, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t MergeImportToCandidate(unc_key_type_t keytype, + const char *ctrlr_id, DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditCommitCtrlrStatus(unc_key_type_t keytype, - CtrlrCommitStatus *commit_satus, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } - virtual upll_rc_t AuditEnd(unc_key_type_t keytype, const char *ctrlr_id, - DalDmlIntf *dmi) { - return UPLL_RC_SUCCESS; - } + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t ImportClear(unc_key_type_t keytype, const char *ctrlr_id, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditUpdateController( + unc_key_type_t keytype, + const char *ctrlr_id, + uint32_t session_id, + uint32_t config_id, + uuc::UpdateCtrlrPhase phase, + DalDmlIntf *dmi, + ConfigKeyVal **err_ckv, + KTxCtrlrAffectedState *ctrlr_affected) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditVoteCtrlrStatus(unc_key_type_t keytype, + CtrlrVoteStatus *vote_satus, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditCommitCtrlrStatus(unc_key_type_t keytype, + CtrlrCommitStatus *commit_satus, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } + virtual upll_rc_t AuditEnd(unc_key_type_t keytype, const char *ctrlr_id, + DalDmlIntf *dmi) { + return UPLL_RC_SUCCESS; + } - /** - * @Brief compares controller id and domain id before - * updating the value to DB. - * - * @param[in] ikey ikey contains key and value structure. - * @param[in] okey okey contains key and value structure. - * - * @retval UPLL_RC_SUCCESS Successful. - * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. - */ - upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, - ConfigKeyVal *okey); - /** - * @Brief Validates the syntax for KT_VUNKNOWN keytype key structure. - * - * @param[in] key_vunknown KT_VUNKNOWN key structure. - * @param[in] operation Operation type. - * - * @retval UPLL_RC_SUCCESS validation succeeded. - * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. - */ - upll_rc_t ValidateVunknownKey(key_vunknown_t *key_vunknown, - unc_keytype_operation_t operation = UNC_OP_INVALID); - upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, - DalDmlIntf *dmi); + /** + * @Brief compares controller id and domain id before + * updating the value to DB. + * + * @param[in] ikey ikey contains key and value structure. + * @param[in] okey okey contains key and value structure. + * + * @retval UPLL_RC_SUCCESS Successful. + * @retval UPLL_RC_ERR_CFG_SYNTAX Syntax error. + */ + upll_rc_t CtrlrIdAndDomainIdUpdationCheck(ConfigKeyVal *ikey, + ConfigKeyVal *okey); + /** + * @Brief Validates the syntax for KT_VUNKNOWN keytype key structure. + * + * @param[in] key_vunknown KT_VUNKNOWN key structure. + * @param[in] operation Operation type. + * + * @retval UPLL_RC_SUCCESS validation succeeded. + * @retval UPLL_RC_ERR_CFG_SYNTAX validation failed. + */ + upll_rc_t ValidateVunknownKey( + key_vunknown_t *key_vunknown, + unc_keytype_operation_t operation = UNC_OP_INVALID); + upll_rc_t IsReferenced(ConfigKeyVal *ikey, upll_keytype_datatype_t dt_type, + DalDmlIntf *dmi); - /** - * @brief create entry in Vnode Rename Table, - * with the renamed VTN details fetched from VTN rename Table - * - * - * @param[in] ikey ConfigKeyVal pointer - * @param[in] dt_type specifies the database type - * @param[in] ctrlr_id pointer to the controller name - * @param[in] dmi DalDmlIntf pointer - * - * - * @retval UPLL_RC_SUCCESS Successful - * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf - */ - upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); + /** + * @brief create entry in Vnode Rename Table, + * with the renamed VTN details fetched from VTN rename Table + * + * + * @param[in] ikey ConfigKeyVal pointer + * @param[in] dt_type specifies the database type + * @param[in] ctrlr_id pointer to the controller name + * @param[in] dmi DalDmlIntf pointer + * + * + * @retval UPLL_RC_SUCCESS Successful + * @retval UPLL_RC_ERR_GENERIC failed to update the VbrIf + */ + upll_rc_t CreateVnodeConfigKey(ConfigKeyVal *ikey, ConfigKeyVal *&okey); }; } // namespace kt_momgr } // namespace upll diff --git a/coordinator/modules/uppl/Makefile b/coordinator/modules/uppl/Makefile index fc9d0b84..0a4925e5 100644 --- a/coordinator/modules/uppl/Makefile +++ b/coordinator/modules/uppl/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -29,6 +29,8 @@ CXX_SOURCES = physicallayer.cc \ itc_kt_state_base.cc \ itc_kt_root.cc \ itc_kt_controller.cc \ + itc_kt_dataflow.cc \ + itc_kt_ctr_dataflow.cc \ itc_kt_ctr_domain.cc \ itc_kt_logicalport.cc \ itc_kt_logical_member_port.cc \ @@ -70,6 +72,10 @@ CFDEF_FILES = odbcm.cfdef \ MODULE_EXTRA_FILES = uppl_ctr_capability.conf \ odbcm.conf +EXTRA_INCDIRS = $(CURDIR)/ \ + $(CURDIR)/../capa/include \ + $(CURDIR)/../capa + include ../rules.mk ## diff --git a/coordinator/modules/uppl/controller_version.cc b/coordinator/modules/uppl/controller_version.cc index d5bb4cfb..37c1b783 100644 --- a/coordinator/modules/uppl/controller_version.cc +++ b/coordinator/modules/uppl/controller_version.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,13 +25,13 @@ namespace uppl { * @Description : ControllerVersion class constructor implementation */ ControllerVersion::ControllerVersion(string version, - UpplReturnCode &return_code): + UncRespCode &return_code): version_(version), product_version_part1_(0), product_version_part2_(0), product_version_part3_(0) { return_code = ParseControllerVersion(version_); - if (return_code != UPPL_RC_SUCCESS) { + if (return_code != UNC_RC_SUCCESS) { pfc_log_error("Controller version parsing error"); } } @@ -40,10 +40,10 @@ ControllerVersion::ControllerVersion(string version, * @Description : This function parses the given controller version string and * fills the class data members *@param[in] : version - specifies the controller version - *@return : UPPL_RC_SUCCESS or any associated erro code + *@return : UNC_RC_SUCCESS or any associated erro code */ -UpplReturnCode ControllerVersion::ParseControllerVersion(string version) { +UncRespCode ControllerVersion::ParseControllerVersion(string version) { // String parsing of controller version vector split_version; istringstream strversion(version); @@ -53,7 +53,7 @@ UpplReturnCode ControllerVersion::ParseControllerVersion(string version) { } if (split_version.empty()) { // unable to get version - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } for (unsigned int index = 0 ; index < split_version.size(); ++index) { string part_version = split_version[index]; @@ -62,7 +62,7 @@ UpplReturnCode ControllerVersion::ParseControllerVersion(string version) { if (version_part == 0 && isdigit(part_version[0]) == 0) { pfc_log_error("Unable to parse the version part: %s", part_version.c_str()); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } switch (index) { case 0 : { @@ -79,7 +79,7 @@ UpplReturnCode ControllerVersion::ParseControllerVersion(string version) { } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } bool ControllerVersion::operator<(const ControllerVersion &val) const { diff --git a/coordinator/modules/uppl/include/controller_version.hh b/coordinator/modules/uppl/include/controller_version.hh index f9b8bdbb..206f8aa8 100644 --- a/coordinator/modules/uppl/include/controller_version.hh +++ b/coordinator/modules/uppl/include/controller_version.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -26,11 +26,11 @@ namespace uppl { class ControllerVersion { public: explicit ControllerVersion(string version, - UpplReturnCode &return_code); + UncRespCode &return_code); ~ControllerVersion() {} - UpplReturnCode ParseControllerVersion(string version); + UncRespCode ParseControllerVersion(string version); bool operator<(const ControllerVersion &val) const; diff --git a/coordinator/modules/uppl/include/ipc_client_configuration_handler.hh b/coordinator/modules/uppl/include/ipc_client_configuration_handler.hh index 06e9d409..43401db1 100644 --- a/coordinator/modules/uppl/include/ipc_client_configuration_handler.hh +++ b/coordinator/modules/uppl/include/ipc_client_configuration_handler.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -18,16 +18,15 @@ #ifndef _IPC_CLIENT_CONFIGURATION_HANDLER_H_ #define _IPC_CLIENT_CONFIGURATION_HANDLER_H_ - +#include #include #include #include #include "unc/uppl_common.h" #include "unc/keytype.h" +#include "phy_util.hh" #include "unc/pfcdriver_include.h" #include "unc/vnpdriver_include.h" -#include -#include "phy_util.hh" using pfc::core::ipc::ClientSession; @@ -42,14 +41,14 @@ namespace uppl { class IPCClientDriverHandler { public: - IPCClientDriverHandler(unc_keytype_ctrtype_t type, UpplReturnCode &err); + IPCClientDriverHandler(unc_keytype_ctrtype_t type, UncRespCode &err); ~IPCClientDriverHandler(); IPCClientDriverHandler(); IPCClientDriverHandler(const IPCClientDriverHandler&); IPCClientDriverHandler& operator=(const IPCClientDriverHandler&); ClientSession* ResetAndGetSession(); - UpplReturnCode SendReqAndGetResp(driver_response_header &rsp); - UpplReturnCode ConvertDriverErrorCode(uint32_t drv_err_code); + UncRespCode SendReqAndGetResp(driver_response_header &rsp); + UncRespCode ConvertDriverErrorCode(uint32_t drv_err_code); private: ClientSession *cli_session; pfc_ipcconn_t connp; diff --git a/coordinator/modules/uppl/include/ipc_client_logical_handler.hh b/coordinator/modules/uppl/include/ipc_client_logical_handler.hh index de479acf..7b6b7b2a 100644 --- a/coordinator/modules/uppl/include/ipc_client_logical_handler.hh +++ b/coordinator/modules/uppl/include/ipc_client_logical_handler.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -22,6 +22,7 @@ #include #include #include "unc/uppl_common.h" +#include "unc/unc_base.h" namespace unc { namespace uppl { @@ -34,7 +35,7 @@ namespace uppl { class IPCClientLogicalHandler { public: - UpplReturnCode CheckInUseInLogical(unc_key_type_t k_type, + UncRespCode CheckInUseInLogical(unc_key_type_t k_type, void *key_str, uint32_t data_type); static IPCClientLogicalHandler* get_ipc_client_logical_handler(); diff --git a/coordinator/modules/uppl/include/ipc_connection_manager.hh b/coordinator/modules/uppl/include/ipc_connection_manager.hh index d0f4a18d..dfea1a0e 100644 --- a/coordinator/modules/uppl/include/ipc_connection_manager.hh +++ b/coordinator/modules/uppl/include/ipc_connection_manager.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -49,12 +49,12 @@ class IPCConnectionManager { IPCClientLogicalHandler* get_ipc_client_logical_handler(); string get_uppl_channel_name(); string get_uppl_service_name(); - UpplReturnCode Finalize(); + UncRespCode Finalize(); uint32_t SendEvent(ServerEvent *evt); - UpplReturnCode SendEventSubscription(); - UpplReturnCode CancelEventSubscription(); + UncRespCode SendEventSubscription(); + UncRespCode CancelEventSubscription(); void addControllerToAuditList(string); - UpplReturnCode removeControllerFromAuditList(string); + UncRespCode removeControllerFromAuditList(string); pfc_bool_t IsControllerInAudit(string controller_name); uint32_t StartNotificationTimer(OdbcmConnectionHandler *db_conn, string controller_name); @@ -70,7 +70,7 @@ class IPCConnectionManager { } return timer_id; } - UpplReturnCode CancelTimer(string); + UncRespCode CancelTimer(string); private: IPCServerHandler* ipc_server_handler_; diff --git a/coordinator/modules/uppl/include/ipct_util.hh b/coordinator/modules/uppl/include/ipct_util.hh index b98bd5db..64ecad52 100644 --- a/coordinator/modules/uppl/include/ipct_util.hh +++ b/coordinator/modules/uppl/include/ipct_util.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -63,11 +63,15 @@ class IpctUtil { static string get_string(const key_port_t &k); static string get_string(const val_port_t &v); static string get_string(const val_port_st_t &v); + static string get_string(const val_port_stats_t &v); static string get_string(const val_port_st_neighbor &v); static string get_string(const key_switch_t &k); static string get_string(const val_switch_t &v); static string get_string(const val_switch_st_t &v); + static string get_string(const val_switch_st_detail_t &v); + static std::string get_string(const val_df_data_flow_t &val_obj); + static std::string get_string(const val_df_data_flow_st_t &val_obj); static string get_string(const val_path_fault_alarm_t &v); static string get_string(const val_phys_path_fault_alarm_t &v); diff --git a/coordinator/modules/uppl/include/itc_audit_request.hh b/coordinator/modules/uppl/include/itc_audit_request.hh index b82e6760..9a65967a 100644 --- a/coordinator/modules/uppl/include/itc_audit_request.hh +++ b/coordinator/modules/uppl/include/itc_audit_request.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -48,41 +48,41 @@ class AuditRequest:public ITCReq { public: AuditRequest(); ~AuditRequest(); - UpplReturnCode StartAudit(OdbcmConnectionHandler *db_conn, + UncRespCode StartAudit(OdbcmConnectionHandler *db_conn, unc_keytype_ctrtype_t driver_id, string controller_id); - UpplReturnCode StartAuditTransaction(uint32_t session_id, + UncRespCode StartAuditTransaction(uint32_t session_id, unc_keytype_ctrtype_t driver_id, string controller_id); - UpplReturnCode HandleAuditGlobalCommit(uint32_t session_id, + UncRespCode HandleAuditGlobalCommit(uint32_t session_id, uint32_t driver_id, string controller_id, TcDriverInfoMap& driver_info, TcAuditResult& audit_result); - UpplReturnCode HandleAuditVoteRequest(OdbcmConnectionHandler *db_conn, + UncRespCode HandleAuditVoteRequest(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t driver_id, string controller_id, TcDriverInfoMap &driver_info); - UpplReturnCode HandleAuditDriverResult(uint32_t session_id, + UncRespCode HandleAuditDriverResult(uint32_t session_id, string controller_id, TcCommitPhaseType commitphase, TcCommitPhaseResult driver_result, TcAuditResult& audit_result) { audit_result = unc::tclib::TC_AUDIT_SUCCESS; - return UPPL_RC_SUCCESS;} - UpplReturnCode HandleAuditAbort(uint32_t session_id, + return UNC_RC_SUCCESS;} + UncRespCode HandleAuditAbort(uint32_t session_id, unc_keytype_ctrtype_t driver_id, string controller_id, TcAuditOpAbortPhase operation_phase); - UpplReturnCode EndAuditTransaction(uint32_t session_id, + UncRespCode EndAuditTransaction(uint32_t session_id, unc_keytype_ctrtype_t& driver_id, string controller_id); - UpplReturnCode EndAudit(OdbcmConnectionHandler *db_conn, + UncRespCode EndAudit(OdbcmConnectionHandler *db_conn, unc_keytype_ctrtype_t driver_id, string controller_id, TcAuditResult audit_result); - UpplReturnCode MergeAuditDbToRunning(OdbcmConnectionHandler *db_conn, + UncRespCode MergeAuditDbToRunning(OdbcmConnectionHandler *db_conn, string controller_name); private: diff --git a/coordinator/modules/uppl/include/itc_configuration_request.hh b/coordinator/modules/uppl/include/itc_configuration_request.hh index 95931ee4..c4d2b48e 100644 --- a/coordinator/modules/uppl/include/itc_configuration_request.hh +++ b/coordinator/modules/uppl/include/itc_configuration_request.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -42,9 +42,9 @@ class ConfigurationRequest: public ITCReq { public: ConfigurationRequest(); ~ConfigurationRequest(); - UpplReturnCode ProcessReq(ServerSession &session, + UncRespCode ProcessReq(ServerSession &session, physical_request_header &obj_req_hdr); - UpplReturnCode ValidateReq(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateReq(OdbcmConnectionHandler *db_conn, ServerSession &session, physical_request_header obj_req_hdr, void* &key_struct, @@ -59,19 +59,19 @@ class ConfigurationRequest: public ITCReq { val_ctr_domain_t val_domain_obj; key_boundary_t key_boundary_obj; val_boundary_t val_boundary_obj; - UpplReturnCode ValidateController(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateController(OdbcmConnectionHandler *db_conn, ServerSession &session, uint32_t data_type, uint32_t operation, void* &key_struct, void* &val_struct); - UpplReturnCode ValidateDomain(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateDomain(OdbcmConnectionHandler *db_conn, ServerSession &session, uint32_t data_type, uint32_t operation, void* &key_struct, void* &val_struct); - UpplReturnCode ValidateBoundary(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateBoundary(OdbcmConnectionHandler *db_conn, ServerSession &session, uint32_t data_type, uint32_t operation, diff --git a/coordinator/modules/uppl/include/itc_db_config.hh b/coordinator/modules/uppl/include/itc_db_config.hh index 584d0b4e..ad830604 100644 --- a/coordinator/modules/uppl/include/itc_db_config.hh +++ b/coordinator/modules/uppl/include/itc_db_config.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,17 +29,17 @@ class DBConfigurationRequest : public ITCReq { public: DBConfigurationRequest(); ~DBConfigurationRequest(); - UpplReturnCode LoadAndCommitStartup(OdbcmConnectionHandler *db_conn); - UpplReturnCode ClearStartUpDb(OdbcmConnectionHandler *db_conn); - UpplReturnCode AbortCandidateDb(OdbcmConnectionHandler *db_conn); - UpplReturnCode SaveRunningToStartUp(OdbcmConnectionHandler *db_conn); - UpplReturnCode SendDeletedControllerToLogical( + UncRespCode LoadAndCommitStartup(OdbcmConnectionHandler *db_conn); + UncRespCode ClearStartUpDb(OdbcmConnectionHandler *db_conn); + UncRespCode AbortCandidateDb(OdbcmConnectionHandler *db_conn); + UncRespCode SaveRunningToStartUp(OdbcmConnectionHandler *db_conn); + UncRespCode SendDeletedControllerToLogical( OdbcmConnectionHandler *db_conn); - UpplReturnCode SendCreatedControllerToLogical( + UncRespCode SendCreatedControllerToLogical( OdbcmConnectionHandler *db_conn); - UpplReturnCode SendUpdatedControllerToLogical( + UncRespCode SendUpdatedControllerToLogical( OdbcmConnectionHandler *db_conn); - UpplReturnCode SendAppliedControllerToLogical( + UncRespCode SendAppliedControllerToLogical( OdbcmConnectionHandler *db_conn); }; } // namespace uppl diff --git a/coordinator/modules/uppl/include/itc_import_request.hh b/coordinator/modules/uppl/include/itc_import_request.hh index a75c33f2..54fba11b 100644 --- a/coordinator/modules/uppl/include/itc_import_request.hh +++ b/coordinator/modules/uppl/include/itc_import_request.hh @@ -2,7 +2,7 @@ #define _IMPORT_REQUEST_H_ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -31,13 +31,13 @@ class ImportRequest:public ITCReq { public: ImportRequest(); ~ImportRequest(); - UpplReturnCode ProcessRequest(OdbcmConnectionHandler *db_conn, + UncRespCode ProcessRequest(OdbcmConnectionHandler *db_conn, uint32_t operation, key_ctr_t obj_key_ctr); - UpplReturnCode StartImport(OdbcmConnectionHandler *db_conn, + UncRespCode StartImport(OdbcmConnectionHandler *db_conn, key_ctr_t obj_key_ctr); - UpplReturnCode MergeConfiguration(key_ctr_t obj_key_ctr); - UpplReturnCode ClearImportConfig(key_ctr_t obj_key_ctr); + UncRespCode MergeConfiguration(key_ctr_t obj_key_ctr); + UncRespCode ClearImportConfig(key_ctr_t obj_key_ctr); }; }/*namespace uppl*/ }/*namespace unc*/ diff --git a/coordinator/modules/uppl/include/itc_kt_base.hh b/coordinator/modules/uppl/include/itc_kt_base.hh index 3449216f..f9bdbac0 100644 --- a/coordinator/modules/uppl/include/itc_kt_base.hh +++ b/coordinator/modules/uppl/include/itc_kt_base.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -21,6 +21,7 @@ #include #include "physical_common_def.hh" +#include "phy_util.hh" #include "unc/uppl_common.h" #include "ipc_connection_manager.hh" #include "odbcm_utils.hh" @@ -34,13 +35,15 @@ using unc::uppl::ODBCMOperator; using unc::uppl::DBTableSchema; using unc::uppl::ODBCMTableColumns; using unc::uppl::OdbcmConnectionHandler; +using unc::uppl::ScopedDBConnection; + class ReadRequest; class Kt_Class_Attr_Syntax { public: pfc_ipctype_t data_type; - uint32_t min_value; - uint32_t max_value; + uint64_t min_value; + uint64_t max_value; uint32_t min_length; uint32_t max_length; bool mandatory_attrib; @@ -73,70 +76,70 @@ class Kt_Base { return UNC_KT_ROOT; }; - virtual UpplReturnCode Create(OdbcmConnectionHandler *db_conn, + virtual UncRespCode Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, + virtual UncRespCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, + virtual UncRespCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type, void* &old_val_struct) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode Update(OdbcmConnectionHandler *db_conn, + virtual UncRespCode Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode Delete(OdbcmConnectionHandler *db_conn, + virtual UncRespCode Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession &sess) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + virtual UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + virtual UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_struct, vector &val_struct, uint32_t data_type, uint32_t operation_type) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode Read(OdbcmConnectionHandler *db_conn, + virtual UncRespCode Read(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess, uint32_t option1, uint32_t option2); - virtual UpplReturnCode ReadNext(OdbcmConnectionHandler *db_conn, - void* key_struct, + virtual UncRespCode ReadNext(OdbcmConnectionHandler *db_conn, + uint32_t session_id, void* key_struct, uint32_t data_type, ReadRequest *read_req); - virtual UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + virtual UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -145,7 +148,7 @@ class Kt_Base { pfc_bool_t is_read_next, ReadRequest *read_req)=0; - virtual UpplReturnCode ReadSiblingBegin(OdbcmConnectionHandler *db_conn, + virtual UncRespCode ReadSiblingBegin(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, @@ -154,7 +157,7 @@ class Kt_Base { uint32_t option1, uint32_t option2, uint32_t &max_rep_ct); - virtual UpplReturnCode ReadSibling(OdbcmConnectionHandler *db_conn, + virtual UncRespCode ReadSibling(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, @@ -162,7 +165,7 @@ class Kt_Base { uint32_t option1, uint32_t option2, uint32_t &max_rep_ct); - virtual UpplReturnCode ReadSiblingCount(OdbcmConnectionHandler *db_conn, + virtual UncRespCode ReadSiblingCount(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, @@ -171,7 +174,7 @@ class Kt_Base { ServerSession &sess, uint32_t option1, uint32_t option2); - virtual UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + virtual UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, @@ -180,93 +183,93 @@ class Kt_Base { ServerSession &sess, uint32_t option1, uint32_t option2, uint32_t max_rep_ct)=0; - virtual UpplReturnCode PerformSyntaxValidation( + virtual UncRespCode PerformSyntaxValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type)=0; - virtual UpplReturnCode PerformSemanticValidation( + virtual UncRespCode PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type)=0; - UpplReturnCode + UncRespCode ValidateRequest(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type, uint32_t key_type); - virtual UpplReturnCode ValidateCtrlrValueCapability(string version, + virtual UncRespCode ValidateCtrlrValueCapability(string version, uint32_t key_type) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode ValidateCtrlrScalability(std::string version, + virtual UncRespCode ValidateCtrlrScalability(std::string version, uint32_t key_type, uint32_t data_type) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; // Caller can check whether a controller_id is existing (or) // A switch within a controller is existing // In this case list will contain two values - // a controller id and a switch id - virtual UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + virtual UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - UpplReturnCode ConfigurationChangeNotification(uint32_t data_type, + UncRespCode ConfigurationChangeNotification(uint32_t data_type, uint32_t key_type, uint32_t oper_type, void *key_struct, void* old_val_struct, void* new_val_struct); - virtual UpplReturnCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, + virtual UncRespCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode GetModifiedRows(OdbcmConnectionHandler *db_conn, + virtual UncRespCode GetModifiedRows(OdbcmConnectionHandler *db_conn, vector &key_struct, vector &val_struct, CsRowStatus row_status) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; virtual void Fill_Attr_Syntax_Map() { }; - virtual UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + virtual UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; - virtual UpplReturnCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, + virtual UncRespCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; virtual pfc_bool_t CompareKeyStruct(void *key_struct1, void *key_struct2) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; virtual pfc_bool_t CompareValueStruct(void *value_struct1, void *value_struct2) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; }; virtual void PopulateDBSchemaForKtTable(OdbcmConnectionHandler *db_conn, @@ -296,148 +299,188 @@ class Kt_Base { void *&old_value_struct); static map > attr_syntax_map_all; - UpplReturnCode get_oper_status(vector &ref_oper_status, + UncRespCode get_oper_status(vector &ref_oper_status, unc_key_type_t key_type, void* key_struct, uint8_t &oper_status); void ClearOperStatusHolder(vector &ref_oper_status); private: - UpplReturnCode ValidateKtRoot(uint32_t operation, + UncRespCode ValidateKtRoot(uint32_t operation, + uint32_t data_type); + UncRespCode ValidateKtDataflow(uint32_t operation, uint32_t data_type); - UpplReturnCode ValidateKtCtrlBdry(uint32_t operation, + UncRespCode ValidateKtCtrlBdry(uint32_t operation, uint32_t data_type); - UpplReturnCode ValidateKtCtrDomain(uint32_t operation, + UncRespCode ValidateKtCtrDataflow(uint32_t operation, + uint32_t data_type); + UncRespCode ValidateKtCtrDomain(uint32_t operation, uint32_t data_type); - UpplReturnCode ValidateKtState(uint32_t operation, + UncRespCode ValidateKtState(uint32_t operation, uint32_t data_type); }; #define VALIDATE_STRING_FIELD(attr_name, field, ret_code) \ { \ map::iterator itVal = \ - attr_syntax_map.find(attr_name); \ + attr_syntax_map.find((attr_name)); \ if (itVal != attr_syntax_map.end()) { \ Kt_Class_Attr_Syntax objAttr = itVal->second; \ if (objAttr.data_type == PFC_IPCTYPE_STRING) { \ - if (field.length() < objAttr.min_length || \ - field.length() > objAttr.max_length) { \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ + if ((field).length() < objAttr.min_length || \ + (field).length() > objAttr.max_length) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ } \ } \ } else { \ - ret_code = UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ + (ret_code) = UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ } \ } #define VALIDATE_IPV4_FIELD(attr_name, field, ret_code) \ { \ map::iterator itVal = \ - attr_syntax_map.find(attr_name); \ + attr_syntax_map.find((attr_name)); \ if (itVal != attr_syntax_map.end()) { \ Kt_Class_Attr_Syntax objAttr = itVal->second; \ if (objAttr.data_type == PFC_IPCTYPE_IPV4) { \ - if (field.s_addr < objAttr.min_value || \ - field.s_addr > objAttr.max_value) { \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ + if ((field).s_addr < objAttr.min_value || \ + (field).s_addr > objAttr.max_value) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ } \ } \ } else { \ - ret_code = UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ + (ret_code) = UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ } \ } #define VALIDATE_IPV6_FIELD(attr_name, field, ret_code) \ { \ map::iterator itVal = \ - attr_syntax_map.find(attr_name); \ + attr_syntax_map.find((attr_name)); \ if (itVal != attr_syntax_map.end()) { \ Kt_Class_Attr_Syntax objAttr = itVal->second; \ if (objAttr.data_type == PFC_IPCTYPE_IPV6) { \ - if (*(field.s6_addr) < objAttr.min_value || \ - *(field.s6_addr) > objAttr.max_value) { \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ + if (*((field).s6_addr) < objAttr.min_value || \ + *((field).s6_addr) > objAttr.max_value) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ } \ } \ } else { \ - ret_code = UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ + (ret_code) = UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ } \ } #define VALIDATE_INT_FIELD(attr_name, field, ret_code) \ { \ map::iterator itVal = \ - attr_syntax_map.find(attr_name); \ + attr_syntax_map.find((attr_name)); \ if (itVal != attr_syntax_map.end()) { \ Kt_Class_Attr_Syntax objAttr = itVal->second; \ - if (objAttr.data_type == PFC_IPCTYPE_UINT32 || \ + if (objAttr.data_type == PFC_IPCTYPE_UINT64 || \ + objAttr.data_type == PFC_IPCTYPE_UINT32 || \ objAttr.data_type == PFC_IPCTYPE_UINT16 || \ objAttr.data_type == PFC_IPCTYPE_UINT8) { \ - if (field < objAttr.min_value || \ - field > objAttr.max_value) { \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ + if ((field) < objAttr.min_value || \ + (field) > objAttr.max_value) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ } \ } \ } else { \ - ret_code = UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ + (ret_code) = UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ } \ } #define VALIDATE_MANDATORY_FIELD(attr_name, mandatory) \ { \ map::iterator itVal = \ - attr_syntax_map.find(attr_name); \ + attr_syntax_map.find((attr_name)); \ if (itVal != attr_syntax_map.end()) { \ Kt_Class_Attr_Syntax objAttr = itVal->second; \ if (objAttr.mandatory_attrib == false) { \ - mandatory = PFC_FALSE; \ + (mandatory) = PFC_FALSE; \ } else { \ - mandatory = PFC_TRUE; \ + (mandatory) = PFC_TRUE; \ } \ } else { \ - mandatory = PFC_FALSE; \ + (mandatory) = PFC_FALSE; \ } \ } #define IS_VALID_STRING_KEY(attr_name, value, \ operation, ret_code, mandatory) \ { \ - VALIDATE_MANDATORY_FIELD(attr_name, mandatory); \ - if ((operation == UNC_OP_CREATE || operation == UNC_OP_READ || \ - operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE) \ - && mandatory == PFC_TRUE && value.empty()) { \ + VALIDATE_MANDATORY_FIELD((attr_name), (mandatory)); \ + if (((operation) == UNC_OP_CREATE || (operation) == UNC_OP_READ || \ + (operation) == UNC_OP_UPDATE || (operation) == UNC_OP_DELETE) \ + && (mandatory) == PFC_TRUE && (value).empty()) { \ pfc_log_error( \ "Key value %s not found for %d operation", \ attr_name, operation); \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ } \ - VALIDATE_STRING_FIELD(attr_name, value, ret_code); \ - if (ret_code != UPPL_RC_SUCCESS) { \ + VALIDATE_STRING_FIELD((attr_name), (value), (ret_code)); \ + if ((ret_code) != UNC_RC_SUCCESS) { \ pfc_log_error("Length check failed for attribute %s", \ attr_name); \ } \ } +#define IS_VALID_VLAN_ID(attr_name, value, \ + operation, ret_code, mandatory) \ + { \ + VALIDATE_MANDATORY_FIELD((attr_name), (mandatory)); \ + if (((operation) == UNC_OP_READ) \ + && mandatory == PFC_TRUE \ + && ((PhyUtil::uint16tostr(value)).empty())) { \ + pfc_log_error( \ + "Key value %s not found for %d operation", \ + attr_name, operation); \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ + } \ + map::iterator itVal = \ + attr_syntax_map.find(attr_name); \ + if (itVal != attr_syntax_map.end()) { \ + Kt_Class_Attr_Syntax objAttr = itVal->second; \ + if (objAttr.data_type == PFC_IPCTYPE_UINT16) { \ + if ((value) < objAttr.min_value || \ + (value) > objAttr.max_value) { \ + if ((value) == 0xffff) { \ + pfc_log_info("no_vlan_id value is allowed");\ + (ret_code) = UNC_RC_SUCCESS; \ + } else { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ + pfc_log_error("Value check failed for attribute %s", \ + attr_name); \ + } \ + } \ + } \ + } else { \ + (ret_code) = UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; \ + } \ +} + + #define IS_VALID_STRING_VALUE(attr_name, value, \ operation, valid_value, ret_code, mandatory) \ - VALIDATE_MANDATORY_FIELD(attr_name, mandatory); \ - if (operation == UNC_OP_CREATE && (valid_value != UNC_VF_VALID && \ - mandatory == PFC_TRUE)) { \ + VALIDATE_MANDATORY_FIELD((attr_name), (mandatory)); \ + if ((operation) == UNC_OP_CREATE && ((valid_value) != UNC_VF_VALID && \ + (mandatory) == PFC_TRUE)) { \ pfc_log_error(\ "Mandatory attribute %s in not available in " \ "%d operation", \ attr_name, operation); \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ - } else if (valid_value == UNC_VF_VALID) { \ - if (mandatory == PFC_TRUE && value.empty()) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ + } else if ((valid_value) == UNC_VF_VALID) { \ + if ((mandatory) == PFC_TRUE && (value).empty()) { \ pfc_log_error(\ "Mandatory attribute value %s in not " \ "available in %d operation", \ attr_name, operation); \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ } \ - VALIDATE_STRING_FIELD(attr_name, value, ret_code); \ - if (ret_code != UPPL_RC_SUCCESS) { \ + VALIDATE_STRING_FIELD((attr_name), (value), (ret_code)); \ + if ((ret_code) != UNC_RC_SUCCESS) { \ pfc_log_error("Length check failed for attribute %s", \ attr_name); \ } \ @@ -445,17 +488,17 @@ class Kt_Base { #define IS_VALID_INT_VALUE(attr_name, value, \ operation, valid_value, ret_code, mandatory) \ - VALIDATE_MANDATORY_FIELD(attr_name, mandatory); \ - if (operation == UNC_OP_CREATE && (valid_value != UNC_VF_VALID && \ - mandatory == PFC_TRUE)) { \ + VALIDATE_MANDATORY_FIELD((attr_name), (mandatory)); \ + if ((operation) == UNC_OP_CREATE && ((valid_value) != UNC_VF_VALID && \ + (mandatory) == PFC_TRUE)) { \ pfc_log_error(\ "Mandatory attribute %s in not available in " \ "%d operation", \ attr_name, operation); \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ - } else if (valid_value == UNC_VF_VALID) { \ - VALIDATE_INT_FIELD(attr_name, value, ret_code); \ - if (ret_code != UPPL_RC_SUCCESS) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ + } else if ((valid_value) == UNC_VF_VALID) { \ + VALIDATE_INT_FIELD((attr_name), (value), (ret_code)); \ + if ((ret_code) != UNC_RC_SUCCESS) { \ pfc_log_error("Syntax validation failed for attribute %s", \ attr_name); \ } \ @@ -463,17 +506,17 @@ class Kt_Base { #define IS_VALID_IPV4_VALUE(attr_name, value, \ operation, valid_value, ret_code, mandatory) \ - VALIDATE_MANDATORY_FIELD(attr_name, mandatory); \ - if (operation == UNC_OP_CREATE && (valid_value != UNC_VF_VALID && \ - mandatory == PFC_TRUE)) { \ + VALIDATE_MANDATORY_FIELD((attr_name), (mandatory)); \ + if ((operation) == UNC_OP_CREATE && ((valid_value) != UNC_VF_VALID && \ + (mandatory) == PFC_TRUE)) { \ pfc_log_error(\ "Mandatory attribute %s in not available in " \ "%d operation", \ attr_name, operation); \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ - } else if (valid_value == UNC_VF_VALID) { \ - VALIDATE_IPV4_FIELD(attr_name, value, ret_code); \ - if (ret_code != UPPL_RC_SUCCESS) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ + } else if ((valid_value) == UNC_VF_VALID) { \ + VALIDATE_IPV4_FIELD((attr_name), (value), (ret_code)); \ + if ((ret_code) != UNC_RC_SUCCESS) { \ pfc_log_error("Syntax validation failed for attribute %s", \ attr_name); \ } \ @@ -481,37 +524,37 @@ class Kt_Base { #define IS_VALID_IPV6_VALUE(attr_name, value, \ operation, valid_value, ret_code, mandatory) \ - VALIDATE_MANDATORY_FIELD(attr_name, mandatory); \ - if (operation == UNC_OP_CREATE && (valid_value != UNC_VF_VALID && \ - mandatory == PFC_TRUE)) { \ + VALIDATE_MANDATORY_FIELD((attr_name), (mandatory)); \ + if ((operation) == UNC_OP_CREATE && ((valid_value) != UNC_VF_VALID && \ + (mandatory) == PFC_TRUE)) { \ pfc_log_error(\ "Mandatory attribute %s in not available in " \ "%d operation", \ attr_name, operation); \ - ret_code = UPPL_RC_ERR_CFG_SYNTAX; \ - } else if (valid_value == UNC_VF_VALID) { \ - VALIDATE_IPV6_FIELD(attr_name, value, ret_code); \ - if (ret_code != UPPL_RC_SUCCESS) { \ + (ret_code) = UNC_UPPL_RC_ERR_CFG_SYNTAX; \ + } else if ((valid_value) == UNC_VF_VALID) { \ + VALIDATE_IPV6_FIELD((attr_name), (value), (ret_code)); \ + if ((ret_code) != UNC_RC_SUCCESS) { \ pfc_log_error("Syntax validation failed for attribute %s", \ attr_name); \ } \ } -#define ADD_CTRL_OPER_STATUS(controller_name, oper_status) \ +#define ADD_CTRL_OPER_STATUS(controller_name, oper_status, ref_oper_status) \ key_ctr_t *ctlr_key = new key_ctr_t; \ - memset(ctlr_key->controller_name, 0, 32); \ - memcpy(ctlr_key->controller_name, controller_name.c_str(), \ - controller_name.length()+1); \ + memset((ctlr_key->controller_name), 0, 32); \ + memcpy((ctlr_key->controller_name), ((controller_name).c_str()), \ + ((controller_name).length())+1); \ OperStatusHolder obj_oper_status_ctr(UNC_KT_CONTROLLER, \ reinterpret_cast(ctlr_key), \ - oper_status); \ - ref_oper_status.push_back(obj_oper_status_ctr); \ + (oper_status)); \ + (ref_oper_status).push_back(obj_oper_status_ctr); \ -#define GET_ADD_CTRL_OPER_STATUS(controller_name) \ +#define GET_ADD_CTRL_OPER_STATUS(ctr_name, vect_operstatus) \ key_ctr_t *ctr_key = new key_ctr_t; \ memset(ctr_key->controller_name, 0, 32); \ - memcpy(ctr_key->controller_name, controller_name.c_str(), \ - (controller_name.length())+1); \ + memcpy((ctr_key->controller_name), ((ctr_name).c_str()), \ + ((ctr_name).length())+1); \ void* key_type_struct = reinterpret_cast(ctr_key); \ Kt_Controller controller; \ uint8_t ctr_oper_status = \ @@ -520,34 +563,34 @@ class Kt_Base { if (data_type == UNC_DT_IMPORT) { \ ctrl_data_type = UNC_DT_RUNNING; \ } \ - UpplReturnCode read_status = controller.GetOperStatus( \ + UncRespCode read_status = controller.GetOperStatus( \ db_conn, ctrl_data_type, key_type_struct, ctr_oper_status); \ pfc_log_debug("Controller's read_status %d, oper_status %d", \ read_status, ctr_oper_status); \ OperStatusHolder obj_oper_status_ctr(UNC_KT_CONTROLLER, \ reinterpret_cast(ctr_key), \ ctr_oper_status); \ - ref_oper_status.push_back(obj_oper_status_ctr); \ + (vect_operstatus).push_back(obj_oper_status_ctr); -#define ADD_SWITCH_OPER_STATUS(sw_key, oper_status) \ +#define ADD_SWITCH_OPER_STATUS(sw_key, oper_status, ref_oper_status) \ key_switch_t *p_switch = new key_switch_t(sw_key); \ OperStatusHolder obj_oper_status_sw(UNC_KT_SWITCH, \ reinterpret_cast(p_switch), \ - oper_status); \ - ref_oper_status.push_back(obj_oper_status_sw); + (oper_status)); \ + (ref_oper_status).push_back(obj_oper_status_sw); -#define ADD_PORT_OPER_STATUS(port_key, oper_status) \ +#define ADD_PORT_OPER_STATUS(port_key, oper_status, ref_oper_status) \ key_port_t *p_port = new key_port_t(port_key); \ OperStatusHolder obj_oper_status_port(UNC_KT_PORT, \ reinterpret_cast(p_port), \ - oper_status); \ - ref_oper_status.push_back(obj_oper_status_port); + (oper_status)); \ + (ref_oper_status).push_back(obj_oper_status_port); -#define ADD_LP_PORT_OPER_STATUS(lp_key, oper_status) \ +#define ADD_LP_PORT_OPER_STATUS(lp_key, oper_status, ref_oper_status) \ key_logical_port_t *p_lport = new key_logical_port_t(lp_key); \ OperStatusHolder obj_oper_status_lp(UNC_KT_LOGICAL_PORT, \ reinterpret_cast(p_lport), \ - oper_status); \ - ref_oper_status.push_back(obj_oper_status_lp); \ + (oper_status)); \ + (ref_oper_status).push_back(obj_oper_status_lp); \ #endif diff --git a/coordinator/modules/uppl/include/itc_kt_boundary.hh b/coordinator/modules/uppl/include/itc_kt_boundary.hh index 7d2627d5..eb506057 100644 --- a/coordinator/modules/uppl/include/itc_kt_boundary.hh +++ b/coordinator/modules/uppl/include/itc_kt_boundary.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,7 +30,7 @@ class Kt_Boundary: public Kt_Base { ~Kt_Boundary(); - UpplReturnCode Create(OdbcmConnectionHandler *db_conn, + UncRespCode Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -38,13 +38,13 @@ class Kt_Boundary: public Kt_Base { uint32_t data_type, ServerSession & sess); - UpplReturnCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode Update(OdbcmConnectionHandler *db_conn, + UncRespCode Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -52,20 +52,20 @@ class Kt_Boundary: public Kt_Base { uint32_t data_type, ServerSession & sess); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &boundary_key, vector &boundary_val, uint32_t data_type, uint32_t operation_type); - UpplReturnCode Delete(OdbcmConnectionHandler *db_conn, + UncRespCode Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession & sess); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_repetition_count, @@ -74,27 +74,27 @@ class Kt_Boundary: public Kt_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode GetModifiedRows(OdbcmConnectionHandler *db_conn, + UncRespCode GetModifiedRows(OdbcmConnectionHandler *db_conn, vector &key_struct, CsRowStatus row_status); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); - UpplReturnCode HandleOperStatus( + UncRespCode HandleOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, @@ -137,7 +137,7 @@ class Kt_Boundary: public Kt_Base { vector &vect_obj_val_boundary, uint32_t &max_rep_ct); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -149,7 +149,7 @@ class Kt_Boundary: public Kt_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadBoundaryValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBoundaryValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -159,10 +159,10 @@ class Kt_Boundary: public Kt_Base { vector &vect_val_boundary_st, pfc_bool_t is_state = PFC_FALSE); - UpplReturnCode SendSemanticRequestToUPLL(void* key_struct, + UncRespCode SendSemanticRequestToUPLL(void* key_struct, uint32_t data_type); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -170,12 +170,12 @@ class Kt_Boundary: public Kt_Base { vector &vect_key_boundary, vector &vect_val_boundary); - UpplReturnCode SetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void* val_struct, UpplBoundaryOperStatus oper_status); - UpplReturnCode GetBoundaryValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode GetBoundaryValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, val_boundary_st_t &val_boundary_valid_st, uint32_t data_type); @@ -184,24 +184,24 @@ class Kt_Boundary: public Kt_Base { val_boundary_t &obj_val_boundary); void FrameCsAttrValue(string attr_value, val_boundary_t &obj_val_boundary); - UpplReturnCode ValidateSiblingFiltering(unsigned int ctr1_valid_val, + UncRespCode ValidateSiblingFiltering(unsigned int ctr1_valid_val, unsigned int ctr2_valid_val, unsigned int dmn1_valid_val, unsigned int dmn2_valid_val); - UpplReturnCode GetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status); - UpplReturnCode SendOperStatusNotification(key_boundary_t bdry_key, + UncRespCode SendOperStatusNotification(key_boundary_t bdry_key, uint8_t old_oper_st, uint8_t new_oper_st); - UpplReturnCode GetAllBoundaryOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetAllBoundaryOperStatus(OdbcmConnectionHandler *db_conn, string controller_name, string domain_name, string logical_port_id, map &bdry_notfn, uint32_t data_type); - UpplReturnCode CheckBoundaryExistence( + UncRespCode CheckBoundaryExistence( OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, diff --git a/coordinator/modules/uppl/include/itc_kt_controller.hh b/coordinator/modules/uppl/include/itc_kt_controller.hh index 84820b16..a776f66f 100644 --- a/coordinator/modules/uppl/include/itc_kt_controller.hh +++ b/coordinator/modules/uppl/include/itc_kt_controller.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -50,7 +50,7 @@ class Kt_Controller: public Kt_Base { ~Kt_Controller(); - UpplReturnCode Create(OdbcmConnectionHandler *db_conn, + UncRespCode Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -58,13 +58,13 @@ class Kt_Controller: public Kt_Base { uint32_t data_type, ServerSession &sess); - UpplReturnCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode Update(OdbcmConnectionHandler *db_conn, + UncRespCode Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -72,30 +72,30 @@ class Kt_Controller: public Kt_Base { uint32_t data_type, ServerSession &sess); - UpplReturnCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode Delete(OdbcmConnectionHandler *db_conn, + UncRespCode Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession &sess); - UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &ctr_key, vector &ctr_val, uint32_t data_type, uint32_t operation_type); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -104,19 +104,19 @@ class Kt_Controller: public Kt_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode HandleDriverEvents(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverEvents(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t oper_type, uint32_t data_type, @@ -124,64 +124,64 @@ class Kt_Controller: public Kt_Base { void* new_val_struct, pfc_bool_t is_events_done); - UpplReturnCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); - UpplReturnCode GetModifiedRows(OdbcmConnectionHandler *db_conn, + UncRespCode GetModifiedRows(OdbcmConnectionHandler *db_conn, vector &key_struct, CsRowStatus row_status); - UpplReturnCode ValidateCtrlrValueCapability(string version, + UncRespCode ValidateCtrlrValueCapability(string version, uint32_t key_type); - UpplReturnCode ValidateCtrlrScalability(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateCtrlrScalability(OdbcmConnectionHandler *db_conn, string version, uint32_t key_type, uint32_t data_type); - UpplReturnCode ValidateUnknownCtrlrScalability( + UncRespCode ValidateUnknownCtrlrScalability( OdbcmConnectionHandler *db_conn, void *key_struct, uint8_t type, uint32_t data_type); void Fill_Attr_Syntax_Map(); - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct); - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, bool bIsInternal); - UpplReturnCode NotifyOperStatus( + UncRespCode NotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status); - UpplReturnCode GetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status); - UpplReturnCode SetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t oper_status); - UpplReturnCode SendUpdatedControllerInfoToUPLL( + UncRespCode SendUpdatedControllerInfoToUPLL( uint32_t data_type, uint32_t operation_type, uint32_t key_type, @@ -203,7 +203,7 @@ class Kt_Controller: public Kt_Base { pfc_bool_t is_filtering= false, pfc_bool_t is_state= PFC_FALSE); - UpplReturnCode SendSemanticRequestToUPLL(void* key_struct, + UncRespCode SendSemanticRequestToUPLL(void* key_struct, uint32_t data_type); void FillControllerValueStructure(OdbcmConnectionHandler *db_conn, @@ -213,7 +213,7 @@ class Kt_Controller: public Kt_Base { uint32_t operation_type, vector &controller_id); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -225,7 +225,7 @@ class Kt_Controller: public Kt_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadCtrValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadCtrValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -234,7 +234,7 @@ class Kt_Controller: public Kt_Base { vector &vect_val_ctr_st, vector &controller_id); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, void* value_struct, uint32_t data_type, @@ -252,76 +252,76 @@ class Kt_Controller: public Kt_Base { void FreeChildKeyStruct(void* key_struct, unsigned int child_class); void FreeKeyStruct(void* key_struct, unsigned int key_type); - UpplReturnCode GetCtrValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode GetCtrValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, val_ctr_st_t &val_ctr_st, uint32_t data_type); - UpplReturnCode SetActualVersion(OdbcmConnectionHandler *db_conn, + UncRespCode SetActualVersion(OdbcmConnectionHandler *db_conn, void* key_struct, string actual_version, uint32_t data_type, uint32_t valid_flag); void FrameValidValue(string attr_value, val_ctr_st &obj_val_ctr_st, val_ctr_t &obj_val_ctr); void FrameCsAttrValue(string attr_value, val_ctr_t &obj_val_ctr); - UpplReturnCode ValidateTypeIpAddress(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateTypeIpAddress(OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, uint32_t data_type, uint32_t ctrl_type = UNC_CT_UNKNOWN); - UpplReturnCode ValidateControllerType(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateControllerType(OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr); - UpplReturnCode ValidateControllerVersion(OdbcmConnectionHandler *db_conn, + UncRespCode ValidateControllerVersion(OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr); - UpplReturnCode ValidateControllerDescription( + UncRespCode ValidateControllerDescription( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr); - UpplReturnCode ValidateControllerIpAddress( + UncRespCode ValidateControllerIpAddress( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, void *key_struct, void *val_struct); - UpplReturnCode ValidateControllerUser( + UncRespCode ValidateControllerUser( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr); - UpplReturnCode ValidateControllerPassword( + UncRespCode ValidateControllerPassword( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr); - UpplReturnCode ValidateControllerEnableAudit( + UncRespCode ValidateControllerEnableAudit( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr); - UpplReturnCode SendOperStatusNotification(key_ctr_t ctr_key, + UncRespCode SendOperStatusNotification(key_ctr_t ctr_key, uint8_t old_oper_st, uint8_t new_oper_st); - UpplReturnCode CheckIpAndClearStateDB(OdbcmConnectionHandler *db_conn, + UncRespCode CheckIpAndClearStateDB(OdbcmConnectionHandler *db_conn, void *key_struct); - UpplReturnCode CheckSameIp(OdbcmConnectionHandler *db_conn, + UncRespCode CheckSameIp(OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, uint32_t data_type); diff --git a/coordinator/modules/uppl/include/itc_kt_ctr_dataflow.hh b/coordinator/modules/uppl/include/itc_kt_ctr_dataflow.hh new file mode 100644 index 00000000..f37365fa --- /dev/null +++ b/coordinator/modules/uppl/include/itc_kt_ctr_dataflow.hh @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * @brief KT Ctr_Dataflow implementation + * @file itc_kt_ctr_dataflow.hh + * + */ + +#ifndef KT_CTR_DATAFLOW_H +#define KT_CTR_DATAFLOW_H + +#include +#include +#include "itc_kt_state_base.hh" +#include "physicallayer.hh" + +using unc::uppl::ODBCMOperator; + + +/* @ Ctr_Dataflow Class definition */ +class Kt_Ctr_Dataflow : public Kt_State_Base { + public: + Kt_Ctr_Dataflow(); + + ~Kt_Ctr_Dataflow(); + + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, + vector &key_struct, + vector &val_struct, + uint32_t data_type, + uint32_t operation_type); + + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, + void* key_struct, + uint32_t data_type, + uint32_t &max_rep_ct, + int child_index, + pfc_bool_t parent_call, + pfc_bool_t is_read_next, + ReadRequest *read_req); + + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type); + + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type); + + void Fill_Attr_Syntax_Map(); + + private: + void PopulateDBSchemaForKtTable(OdbcmConnectionHandler *db_conn, + DBTableSchema &kt_dbtableschema, + void* key_struct, + void* val_struct, + uint8_t operation_type, + uint32_t data_type, + uint32_t option1, + uint32_t option2, + vector &vect_key_operations, + void* &old_value_struct, + CsRowStatus row_status= NOTAPPLIED, + pfc_bool_t is_filtering= false, + pfc_bool_t is_state= PFC_FALSE) { + } + + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + void* val_struct, + uint32_t data_type, + uint32_t operation_type, + ServerSession &sess, + uint32_t option1, + uint32_t option2, + uint32_t max_rep_ct); +}; +#endif + diff --git a/coordinator/modules/uppl/include/itc_kt_ctr_domain.hh b/coordinator/modules/uppl/include/itc_kt_ctr_domain.hh index 6604b7d9..d4e73e26 100644 --- a/coordinator/modules/uppl/include/itc_kt_ctr_domain.hh +++ b/coordinator/modules/uppl/include/itc_kt_ctr_domain.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,7 +37,7 @@ class Kt_Ctr_Domain : public Kt_State_Base { Kt_Ctr_Domain(); ~Kt_Ctr_Domain(); - UpplReturnCode Create(OdbcmConnectionHandler *db_conn, + UncRespCode Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -45,13 +45,13 @@ class Kt_Ctr_Domain : public Kt_State_Base { uint32_t data_type, ServerSession &sess); - UpplReturnCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode Update(OdbcmConnectionHandler *db_conn, + UncRespCode Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -59,31 +59,31 @@ class Kt_Ctr_Domain : public Kt_State_Base { uint32_t data_type, ServerSession &sess); - UpplReturnCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode Delete(OdbcmConnectionHandler *db_conn, + UncRespCode Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession &sess); - UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_struct, vector &val_struct, uint32_t data_type, uint32_t operation_type); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -92,45 +92,45 @@ class Kt_Ctr_Domain : public Kt_State_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct); - UpplReturnCode InvokeBoundaryNotifyOperStatus( + UncRespCode InvokeBoundaryNotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); - UpplReturnCode GetModifiedRows(OdbcmConnectionHandler *db_conn, + UncRespCode GetModifiedRows(OdbcmConnectionHandler *db_conn, vector &key_struct, CsRowStatus row_status); void Fill_Attr_Syntax_Map(); - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct); - UpplReturnCode GetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status); @@ -193,7 +193,7 @@ class Kt_Ctr_Domain : public Kt_State_Base { uint32_t operation_type, vector &domain_id); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -205,7 +205,7 @@ class Kt_Ctr_Domain : public Kt_State_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadDomainValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadDomainValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -214,7 +214,7 @@ class Kt_Ctr_Domain : public Kt_State_Base { vector &vect_val_ctr_domain_st, vector &domain_id); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t max_rep_ct, @@ -226,13 +226,13 @@ class Kt_Ctr_Domain : public Kt_State_Base { string controller_name); Kt_Base* GetChildClassPointer(KtDomainChildClass KIndex); - UpplReturnCode SetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, UpplDomainOperStatus oper_status); void FreeChildKeyStruct(int child_class, void *key_struct); - UpplReturnCode GetCtrDomainValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode GetCtrDomainValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, val_ctr_domain_st_t &val_ctr_domain_valid_st, uint32_t data_type); diff --git a/coordinator/modules/uppl/include/itc_kt_dataflow.hh b/coordinator/modules/uppl/include/itc_kt_dataflow.hh new file mode 100644 index 00000000..3d18c2f4 --- /dev/null +++ b/coordinator/modules/uppl/include/itc_kt_dataflow.hh @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * @brief KT Dataflow implementation + * @file itc_kt_dataflow.hh + * + */ + +#ifndef KT_DATAFLOW_HH +#define KT_DATAFLOW_HH + +#include +#include +#include +#include +#include +#include "physicallayer.hh" +#include "itc_kt_base.hh" +#include "odbcm_utils.hh" + +#define KT_DATAFLOW_OPER_STATUS_REF 1 + +using std::vector; +using std::map; +using std::multimap; +using unc::uppl::ODBCMOperator; +using namespace unc::dataflow; + +typedef enum { + UPPL_LEFT_PART = 0, + UPPL_RIGHT_PART +}UpplBoundaryTblSection; + +#define PFC_DEF_TIMEOUT 3600 + +#define UPPL_COMPARE_STRUCT(struct1, struct2, status) \ + if ((!strcmp((const char*)(struct1).controller_name, \ + (const char*) (struct2).controller_name)) && \ + (!strcmp((const char*)(struct1).domain_name, \ + (const char*)(struct2).domain_name)) && \ + (!strcmp((const char*)(struct1).lp_str.switch_id, \ + (const char*)(struct2).lp_str.switch_id)) && \ + (!strcmp((const char*)(struct1).lp_str.port_id, \ + (const char*)(struct2).lp_str.port_id))) \ + status = true; + +#define UPPL_COMPARE_SW_SD_TP_STRUCT(struct1, struct2, status) \ + if (((!strcmp((const char*)(struct1).controller_name, \ + (const char*) (struct2).controller_name)) && \ + (!strcmp((const char*)(struct1).domain_name, \ + (const char*)(struct2).domain_name)) && \ + (!strcmp((const char*)(struct1).lp_str.switch_id, \ + (const char*)(struct2).lp_str.switch_id)))) \ + status = true; + +/* @ Controller Class definition */ +class Kt_Dataflow: public Kt_Base { + public: + Kt_Dataflow(); + + ~Kt_Dataflow(); + + + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, + void* key_struct, + uint32_t data_type, + uint32_t &max_rep_ct, + int child_index, + pfc_bool_t parent_call, + pfc_bool_t is_read_next, + ReadRequest *read_req); + + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type); + + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type); + + + + void Fill_Attr_Syntax_Map(); + + multimap* get_boundary_map() { + return &boundary_map_; + } + + map* get_LP_map() { + return &LP_map_; + } + + multimap* get_LMP_map() { + return &LMP_map_; + } + + multimap* get_PP_map() { + return &PP_map_; + } + + map* get_count_map() { + return &count_map_; + } + + map* get_is_validated_map() { + return &is_validated_map_; + } + + vector* get_boundary_tbl_vect() { + return &boundary_tbl_vect_; + } + + + + UncRespCode traversePFC(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *parentnode, + DataflowCmn *lastPfcNode, + string &ingress_bdry_id); + + UncRespCode traverseVNP(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *parentnode, + DataflowCmn *lastPfcNode, + string &ingress_bdry_id); + + UncRespCode traverseUNKNOWN(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *parentnode, + DataflowCmn *lastPfcNode, + string &ingress_bdry_id); + + private: + void PopulateDBSchemaForKtTable(OdbcmConnectionHandler *db_conn, + DBTableSchema &kt_dbtableschema, + void* key_struct, + void* val_struct, + uint8_t operation_type, + uint32_t data_type, + uint32_t option1, + uint32_t option2, + vector &vect_key_operations, + void* &old_value_struct, + CsRowStatus row_status= NOTAPPLIED, + pfc_bool_t is_filtering= false, + pfc_bool_t is_state= PFC_FALSE) {} + + + UncRespCode checkBoundaryAndTraverse(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *source_node, + DataflowCmn *lastPfcNode, + string &ingress_bdry_id); + + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + void* val_struct, + uint32_t data_type, + uint32_t operation_type, + ServerSession &sess, + uint32_t option1, + uint32_t option2, + uint32_t max_rep_ct); + UncRespCode FindNeighbourCtr(OdbcmConnectionHandler *db_conn, + DataflowCmn *lastPfcNode, + boundary_val *neighbour_ctr_key, + list &found_nbrs, + string &ingress_bdry_id); + + UncRespCode PrepareBoundaryMap(OdbcmConnectionHandler *db_conn); + + UncRespCode fill_boundary_map(OdbcmConnectionHandler *db_conn); + + UncRespCode getBoundaryPorts(DataflowCmn *lastPfcNode, + boundary_val *neighbour_ctr_key, + list &found_nbrs, + string &ingress_bdry_id); + + UncRespCode PrepareCollectiveLPMap(OdbcmConnectionHandler *db_conn, + string ctr_name, string dom_name); + + UncRespCode PrepareLMPMap(OdbcmConnectionHandler *db_conn, + key_logical_port_t* key_lp); + + UncRespCode PreparePPMap(OdbcmConnectionHandler *db_conn, + key_port_t* key_pt, string pp_map_key); + + UncRespCode update_boundary_tbl_vect(string lp_map_key, + uint16_t boundary_iter_pos, + uint8_t part); + UncRespCode getkeysfrom_boundary_map(string ctr_name, + list &found_keys, + list &found_vals, + string &ingress_bdry_id); + + UncDataflowReason CreateDfCmnNodeForNonPfc(OdbcmConnectionHandler *db_conn, + DataflowDetail *df_segment, + DataflowCmn *source_node, + DataflowCmn *df_cmn, + boundary_val *ingress_obj_bval, + boundary_val &egress_obj_bval, + bool is_egress); + inline void checkFlowLimitAndTraverse(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + ServerSession &sess, + void* key_struct, + vector* node, + bool is_head_node, + string &ingress_bdry_id); + multimap boundary_map_; + + map LP_map_; + + multimap LMP_map_; + + multimap PP_map_; + + map count_map_; + + map is_validated_map_; + + vector boundary_tbl_vect_; + + DataflowUtil df_util_; + + UncRespCode fill_ctrlr_dom_count_map(OdbcmConnectionHandler *db_conn, + string ctr_name); + uint32_t max_dataflow_traverse_count_; +}; +#endif diff --git a/coordinator/modules/uppl/include/itc_kt_link.hh b/coordinator/modules/uppl/include/itc_kt_link.hh index ef3b4e1c..1e14f3e5 100644 --- a/coordinator/modules/uppl/include/itc_kt_link.hh +++ b/coordinator/modules/uppl/include/itc_kt_link.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,17 +30,17 @@ class Kt_Link : public Kt_State_Base { ~Kt_Link(); - UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, uint32_t operation_type); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -49,25 +49,25 @@ class Kt_Link : public Kt_State_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); void Fill_Attr_Syntax_Map(); - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct); @@ -140,7 +140,7 @@ class Kt_Link : public Kt_State_Base { uint32_t operation_type, vector &link_id); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -152,7 +152,7 @@ class Kt_Link : public Kt_State_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadLinkValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadLinkValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -164,22 +164,22 @@ class Kt_Link : public Kt_State_Base { uint32_t option2, pfc_bool_t is_state = PFC_FALSE); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t max_rep_ct, vector &vect_val_link_st, vector &vect_link_id); - UpplReturnCode SetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, UpplLinkOperStatus oper_status); - UpplReturnCode GetLinkValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode GetLinkValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, val_link_st_t &val_link_valid_st, uint32_t data_type); - UpplReturnCode GetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status); void FrameValidValue(string attr_value, val_link_st &obj_val_link); diff --git a/coordinator/modules/uppl/include/itc_kt_logical_member_port.hh b/coordinator/modules/uppl/include/itc_kt_logical_member_port.hh index 573dddb2..7b7695e4 100644 --- a/coordinator/modules/uppl/include/itc_kt_logical_member_port.hh +++ b/coordinator/modules/uppl/include/itc_kt_logical_member_port.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -30,12 +30,12 @@ class Kt_LogicalMemberPort : public Kt_State_Base { ~Kt_LogicalMemberPort(); - UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -44,24 +44,24 @@ class Kt_LogicalMemberPort : public Kt_State_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); void Fill_Attr_Syntax_Map(); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, @@ -130,7 +130,7 @@ class Kt_LogicalMemberPort : public Kt_State_Base { uint32_t operation_type, vector &logical_mem_port); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -142,7 +142,7 @@ class Kt_LogicalMemberPort : public Kt_State_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadLogicalMemberPortValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadLogicalMemberPortValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t operation_type, @@ -150,7 +150,7 @@ class Kt_LogicalMemberPort : public Kt_State_Base { vector &logical_mem_port, pfc_bool_t is_state = PFC_FALSE); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t max_rep_ct, diff --git a/coordinator/modules/uppl/include/itc_kt_logicalport.hh b/coordinator/modules/uppl/include/itc_kt_logicalport.hh index 90a35bf8..7c0e9ac3 100644 --- a/coordinator/modules/uppl/include/itc_kt_logicalport.hh +++ b/coordinator/modules/uppl/include/itc_kt_logicalport.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,18 +38,18 @@ class Kt_LogicalPort: public Kt_State_Base { ~Kt_LogicalPort(); - UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, uint32_t operation_type); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -58,33 +58,33 @@ class Kt_LogicalPort: public Kt_State_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct); - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status, unc_key_type_t caller_kt); - UpplReturnCode HandleOperDownCriteriaFromPortStatus( + UncRespCode HandleOperDownCriteriaFromPortStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, @@ -92,26 +92,26 @@ class Kt_LogicalPort: public Kt_State_Base { vector &vectOperStatus, pfc_bool_t is_delete_call = false); - UpplReturnCode GetOperDownCriteria(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperDownCriteria(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint32_t &oper_down_criteria); - UpplReturnCode InvokeBoundaryNotifyOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode InvokeBoundaryNotifyOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct); - UpplReturnCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status); - UpplReturnCode GetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); void Fill_Attr_Syntax_Map(); @@ -199,7 +199,7 @@ class Kt_LogicalPort: public Kt_State_Base { uint32_t operation_type, vector &controller_id); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -211,7 +211,7 @@ class Kt_LogicalPort: public Kt_State_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadLogicalPortValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadLogicalPortValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -221,7 +221,7 @@ class Kt_LogicalPort: public Kt_State_Base { vector &vect_val_logical_port_st, vector &logical_port_id); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, void* value_struct, uint32_t data_type, @@ -236,12 +236,12 @@ class Kt_LogicalPort: public Kt_State_Base { Kt_Base* GetChildClassPointer(KtLogicalPortChildClass KIndex); - UpplReturnCode SetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, void* val_struct, UpplLogicalPortOperStatus oper_status); - UpplReturnCode GetOperStatusFromOperDownCriteria( + UncRespCode GetOperStatusFromOperDownCriteria( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, @@ -249,18 +249,18 @@ class Kt_LogicalPort: public Kt_State_Base { UpplLogicalPortOperStatus &logical_port_oper_status); void FreeChildKeyStruct(int child_class, void *key_struct); - UpplReturnCode GetLogicalPortValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode GetLogicalPortValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, val_logical_port_st_t &val_logical_port_valid_st, uint32_t data_type); void FrameValidValue(string attr_value, val_logical_port_st &obj_val_logical_port_st, val_logical_port_t &obj_val_logical_port); - UpplReturnCode GetValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode GetValidFlag(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, string *valid_flag); - UpplReturnCode GetPortOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetPortOperStatus(OdbcmConnectionHandler *db_conn, key_port_t &port_key, uint8_t *port_oper_status, uint32_t data_type); @@ -271,6 +271,6 @@ class Kt_LogicalPort: public Kt_State_Base { string phy_port_id, vector &vectLogicalPortKey, uint32_t data_type); - UpplReturnCode ValidatePortType(uint8_t port_type); + UncRespCode ValidatePortType(uint8_t port_type); }; #endif diff --git a/coordinator/modules/uppl/include/itc_kt_port.hh b/coordinator/modules/uppl/include/itc_kt_port.hh index 3ea9ac88..e379afa4 100644 --- a/coordinator/modules/uppl/include/itc_kt_port.hh +++ b/coordinator/modules/uppl/include/itc_kt_port.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -20,7 +20,7 @@ #include #include "physicallayer.hh" #include "itc_kt_state_base.hh" - +#include "ipc_client_configuration_handler.hh" #define ALARM_UPPL_ALARMS_DEFAULT_FLOW 0x01 #define ALARM_UPPL_ALARMS_PORT_DIRECTION 0x02 #define ALARM_UPPL_ALARMS_PORT_CONGES 0x04 @@ -32,18 +32,18 @@ class Kt_Port: public Kt_State_Base { ~Kt_Port(); - UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, uint32_t operation_type); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -52,57 +52,57 @@ class Kt_Port: public Kt_State_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct); - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct); - UpplReturnCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status); - UpplReturnCode GetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status); - UpplReturnCode GetAlarmStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetAlarmStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint64_t &alarms_status); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); void Fill_Attr_Syntax_Map(); - UpplReturnCode UpdatePortValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode UpdatePortValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, val_port_st_t &val_port_valid_st, unc_keytype_validflag_t valid_val, uint32_t data_type); - UpplReturnCode PopulateSchemaForValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode PopulateSchemaForValidFlag(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, string new_val, @@ -177,7 +177,7 @@ class Kt_Port: public Kt_State_Base { uint32_t operation_type, vector &port_id); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -189,7 +189,7 @@ class Kt_Port: public Kt_State_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadPortValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadPortValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -198,18 +198,18 @@ class Kt_Port: public Kt_State_Base { vector &vect_val_port_st, vector &port_id); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, void* value_struct, uint32_t data_type, uint32_t max_rep_ct, vector &vect_val_port, vector &vect_port_id); - UpplReturnCode SetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, UpplPortOperStatus oper_status); - UpplReturnCode ReadNeighbor(OdbcmConnectionHandler *db_conn, + UncRespCode ReadNeighbor(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -229,7 +229,7 @@ class Kt_Port: public Kt_State_Base { uint8_t operation_type, val_port_st_t *val_port_valid_st, stringstream &valid); - UpplReturnCode SubDomainOperStatusHandling( + UncRespCode SubDomainOperStatusHandling( OdbcmConnectionHandler *db_conn, uint32_t data_type, string controller_name, diff --git a/coordinator/modules/uppl/include/itc_kt_root.hh b/coordinator/modules/uppl/include/itc_kt_root.hh index ecf7c0b6..65a8a1cc 100644 --- a/coordinator/modules/uppl/include/itc_kt_root.hh +++ b/coordinator/modules/uppl/include/itc_kt_root.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,14 +38,14 @@ class Kt_Root: public Kt_Base { public: Kt_Root(); ~Kt_Root(); - UpplReturnCode Create(OdbcmConnectionHandler *db_conn, + UncRespCode Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess); - UpplReturnCode Update(OdbcmConnectionHandler *db_conn, + UncRespCode Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -53,14 +53,14 @@ class Kt_Root: public Kt_Base { uint32_t data_type, ServerSession &sess); - UpplReturnCode Delete(OdbcmConnectionHandler *db_conn, + UncRespCode Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession &sess); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -69,7 +69,7 @@ class Kt_Root: public Kt_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -79,22 +79,22 @@ class Kt_Root: public Kt_Base { ServerSession &sess, uint32_t option1, uint32_t option2, - uint32_t max_rep_ct) { return UPPL_RC_SUCCESS; } + uint32_t max_rep_ct) { return UNC_RC_SUCCESS; } - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } void PopulateDBSchemaForKtTable(OdbcmConnectionHandler *db_conn, diff --git a/coordinator/modules/uppl/include/itc_kt_state_base.hh b/coordinator/modules/uppl/include/itc_kt_state_base.hh index 1289d436..96015dca 100644 --- a/coordinator/modules/uppl/include/itc_kt_state_base.hh +++ b/coordinator/modules/uppl/include/itc_kt_state_base.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -39,7 +39,7 @@ class Kt_State_Base: public Kt_Base { virtual ~Kt_State_Base() { }; - UpplReturnCode Create(OdbcmConnectionHandler *db_conn, + UncRespCode Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -48,20 +48,20 @@ class Kt_State_Base: public Kt_Base { uint32_t key_type, ServerSession &sess); - UpplReturnCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode UpdateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type, void* &old_val_struct); - UpplReturnCode Update(OdbcmConnectionHandler *db_conn, + UncRespCode Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -70,7 +70,7 @@ class Kt_State_Base: public Kt_Base { uint32_t key_type, ServerSession &sess); - UpplReturnCode Delete(OdbcmConnectionHandler *db_conn, + UncRespCode Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -78,7 +78,7 @@ class Kt_State_Base: public Kt_Base { uint32_t key_type, ServerSession &sess); - UpplReturnCode HandleDriverEvents(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverEvents(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t oper_type, uint32_t data_type, @@ -87,7 +87,7 @@ class Kt_State_Base: public Kt_Base { void* new_val_struct); private: - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t oper_type, uint32_t data_type, diff --git a/coordinator/modules/uppl/include/itc_kt_switch.hh b/coordinator/modules/uppl/include/itc_kt_switch.hh index 1138250a..3ee264c1 100644 --- a/coordinator/modules/uppl/include/itc_kt_switch.hh +++ b/coordinator/modules/uppl/include/itc_kt_switch.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -42,18 +42,18 @@ class Kt_Switch : public Kt_State_Base { ~Kt_Switch(); - UpplReturnCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, + UncRespCode DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type); - UpplReturnCode ReadInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_struct, vector &val_struct, uint32_t data_type, uint32_t operation_type); - UpplReturnCode ReadBulk(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -62,59 +62,59 @@ class Kt_Switch : public Kt_State_Base { pfc_bool_t is_read_next, ReadRequest *read_req); - UpplReturnCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, + UncRespCode PerformSemanticValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type); - UpplReturnCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct); - UpplReturnCode IsKeyExists(OdbcmConnectionHandler *db_conn, + UncRespCode IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector& key_values); - UpplReturnCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode NotifyOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, void* value_struct, vector &ref_oper_status); - UpplReturnCode HandleOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct); - UpplReturnCode GetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status); - UpplReturnCode GetAlarmStatus(OdbcmConnectionHandler *db_conn, + UncRespCode GetAlarmStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint64_t &alarms_status); void Fill_Attr_Syntax_Map(); - UpplReturnCode UpdateSwitchValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode UpdateSwitchValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, val_switch_st_t &val_switch_val_st, unc_keytype_validflag_t valid_val, uint32_t data_type); - UpplReturnCode PopulateSchemaForValidFlag(OdbcmConnectionHandler *db_conn, + UncRespCode PopulateSchemaForValidFlag(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, string valid_new, @@ -209,7 +209,7 @@ class Kt_Switch : public Kt_State_Base { uint32_t operation_type, vector &vect_switch_id); - UpplReturnCode PerformRead(OdbcmConnectionHandler *db_conn, + UncRespCode PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -221,7 +221,7 @@ class Kt_Switch : public Kt_State_Base { uint32_t option2, uint32_t max_rep_ct); - UpplReturnCode ReadSwitchValFromDB(OdbcmConnectionHandler *db_conn, + UncRespCode ReadSwitchValFromDB(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -231,7 +231,7 @@ class Kt_Switch : public Kt_State_Base { vector &vect_switch_id, pfc_bool_t is_state = PFC_FALSE); - UpplReturnCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, + UncRespCode ReadBulkInternal(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, @@ -244,7 +244,7 @@ class Kt_Switch : public Kt_State_Base { string controller_name); Kt_Base* GetChildClassPointer(KtSwitchChildClass KIndex); - UpplReturnCode SetOperStatus(OdbcmConnectionHandler *db_conn, + UncRespCode SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, UpplSwitchOperStatus oper_status); diff --git a/coordinator/modules/uppl/include/itc_notification_request.hh b/coordinator/modules/uppl/include/itc_notification_request.hh index 905e0fa3..18d67777 100644 --- a/coordinator/modules/uppl/include/itc_notification_request.hh +++ b/coordinator/modules/uppl/include/itc_notification_request.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,25 +38,25 @@ class NotificationRequest : public ITCReq { pfc_bool_t ProcessEvent(const IpcEvent &event); private: - UpplReturnCode ProcessPortEvents(ClientSession *sess, + UncRespCode ProcessPortEvents(ClientSession *sess, uint32_t data_type, uint32_t operation); - UpplReturnCode ProcessSwitchEvents(ClientSession *sess, + UncRespCode ProcessSwitchEvents(ClientSession *sess, uint32_t data_type, uint32_t operation); - UpplReturnCode ProcessLinkEvents(ClientSession *sess, + UncRespCode ProcessLinkEvents(ClientSession *sess, uint32_t data_type, uint32_t operation); - UpplReturnCode ProcessControllerEvents(ClientSession *sess, + UncRespCode ProcessControllerEvents(ClientSession *sess, uint32_t data_type, uint32_t operation); - UpplReturnCode ProcessDomainEvents(ClientSession *sess, + UncRespCode ProcessDomainEvents(ClientSession *sess, uint32_t data_type, uint32_t operation); - UpplReturnCode ProcessLogicalPortEvents(ClientSession *sess, + UncRespCode ProcessLogicalPortEvents(ClientSession *sess, uint32_t data_type, uint32_t operation); - UpplReturnCode ProcessLogicalMemeberPortEvents( + UncRespCode ProcessLogicalMemeberPortEvents( ClientSession *sess, uint32_t data_type, uint32_t operation); @@ -64,10 +64,10 @@ class NotificationRequest : public ITCReq { string controller_name, uint32_t &data_type); /*This function process notification events*/ - UpplReturnCode ProcessNotificationEvents(const IpcEvent &event); + UncRespCode ProcessNotificationEvents(const IpcEvent &event); /*This function process alarm events*/ - UpplReturnCode ProcessAlarmEvents(const IpcEvent &event); - UpplReturnCode InvokeKtDriverEvent( + UncRespCode ProcessAlarmEvents(const IpcEvent &event); + UncRespCode InvokeKtDriverEvent( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, diff --git a/coordinator/modules/uppl/include/itc_read_request.hh b/coordinator/modules/uppl/include/itc_read_request.hh index 5e952e65..3bee9219 100644 --- a/coordinator/modules/uppl/include/itc_read_request.hh +++ b/coordinator/modules/uppl/include/itc_read_request.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -55,7 +55,7 @@ class ReadRequest: public ITCReq { public: ReadRequest(); ~ReadRequest(); - UpplReturnCode ProcessReq(ServerSession &session, + UncRespCode ProcessReq(ServerSession &session, physical_request_header &obj_req_hdr); void AddToBuffer(BulkReadBuffer objBuffer) { vect_bulk_read_buffer.push_back(objBuffer); @@ -70,6 +70,8 @@ class ReadRequest: public ITCReq { key_root_t key_root_obj; key_ctr_t key_ctr_obj; val_ctr_t val_ctr_obj; + key_dataflow_t key_dataflow_obj; + key_ctr_dataflow_t key_ctr_dataflow_obj; key_ctr_domain_t key_domain_obj; val_ctr_domain_t val_domain_obj; key_logical_port_t key_logical_port_obj; @@ -84,14 +86,14 @@ class ReadRequest: public ITCReq { key_boundary_t key_boundary_obj; val_boundary_t val_boundary_obj; vector vect_bulk_read_buffer; - UpplReturnCode ProcessReadOperation(OdbcmConnectionHandler *db_conn, + UncRespCode ProcessReadOperation(OdbcmConnectionHandler *db_conn, ServerSession &session, Kt_Base *KtObj, physical_request_header &obj_req_hdr, void* key_struct, void* val_struct, uint32_t operation_type); - UpplReturnCode FrameReadBulkResponse(ServerSession &session, + UncRespCode FrameReadBulkResponse(ServerSession &session, uint32_t session_id, uint32_t config_id, uint32_t operation, @@ -102,6 +104,12 @@ class ReadRequest: public ITCReq { void * &key_struct, void * &val_struct, physical_response_header &rsh); + void GetDataflowStructure(ServerSession &session, + void * &key_struct, + physical_response_header &rsh); + void GetCtrDataflowStructure(ServerSession &session, + void * &key_struct, + physical_response_header &rsh); void GetDomainStructure(ServerSession &session, void * &key_struct, void * &val_struct, diff --git a/coordinator/modules/uppl/include/itc_state_change.hh b/coordinator/modules/uppl/include/itc_state_change.hh index d6548769..4a5bcd94 100644 --- a/coordinator/modules/uppl/include/itc_state_change.hh +++ b/coordinator/modules/uppl/include/itc_state_change.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -27,11 +27,11 @@ class SystemStateChangeRequest:public ITCReq { public: SystemStateChangeRequest(); ~SystemStateChangeRequest(); - UpplReturnCode SystemStateChangeToStandBy(OdbcmConnectionHandler *db_conn); - UpplReturnCode SystemStateChangeToActive(OdbcmConnectionHandler *db_conn); + UncRespCode SystemStateChangeToStandBy(OdbcmConnectionHandler *db_conn); + UncRespCode SystemStateChangeToActive(OdbcmConnectionHandler *db_conn); private: - UpplReturnCode SendCandidateInfoToLogical(OdbcmConnectionHandler *db_conn); + UncRespCode SendCandidateInfoToLogical(OdbcmConnectionHandler *db_conn); }; } // namespace uppl } // namespace unc diff --git a/coordinator/modules/uppl/include/itc_transaction_request.hh b/coordinator/modules/uppl/include/itc_transaction_request.hh index 7fea5e1b..0263bd72 100644 --- a/coordinator/modules/uppl/include/itc_transaction_request.hh +++ b/coordinator/modules/uppl/include/itc_transaction_request.hh @@ -2,7 +2,7 @@ #define _ITC_TRANSACTION_REQUEST_HH_ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -54,57 +54,54 @@ class TransactionRequest : public ITCReq { vector domain_created; vector domain_updated; vector domain_deleted; - setset_controller_oflow; - setset_controller_vnp; - map > driver_controller_info_map_; - UpplReturnCode SendControllerNotification(OdbcmConnectionHandler *db_conn, + UncRespCode SendControllerNotification(OdbcmConnectionHandler *db_conn, vector vec_old_val_ctr); - UpplReturnCode SendDomainNotification( + UncRespCode SendDomainNotification( OdbcmConnectionHandler *db_conn, vector vec_old_val_ctr_domain); - UpplReturnCode SendBoundaryNotification( + UncRespCode SendBoundaryNotification( OdbcmConnectionHandler *db_conn, vector vec_old_val_boundary); void SendControllerInfo(OdbcmConnectionHandler *db_conn, uint32_t operation_type, uint32_t session_id, uint32_t config_id); - UpplReturnCode GetModifiedConfiguration(OdbcmConnectionHandler *db_conn, + UncRespCode GetModifiedConfiguration(OdbcmConnectionHandler *db_conn, CsRowStatus row_status); void ClearMaps(); - UpplReturnCode GetModifiedController(OdbcmConnectionHandler *db_conn, + UncRespCode GetModifiedController(OdbcmConnectionHandler *db_conn, CsRowStatus row_status); - UpplReturnCode GetModifiedDomain(OdbcmConnectionHandler *db_conn, + UncRespCode GetModifiedDomain(OdbcmConnectionHandler *db_conn, CsRowStatus row_status); - UpplReturnCode GetModifiedBoundary(OdbcmConnectionHandler *db_conn, + UncRespCode GetModifiedBoundary(OdbcmConnectionHandler *db_conn, CsRowStatus row_status); public: TransactionRequest(); ~TransactionRequest(); - UpplReturnCode StartTransaction(OdbcmConnectionHandler *db_conn, + UncRespCode StartTransaction(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t config_id); - UpplReturnCode HandleVoteRequest(uint32_t session_id, uint32_t config_id, + UncRespCode HandleVoteRequest(uint32_t session_id, uint32_t config_id, TcDriverInfoMap &driver_info); - UpplReturnCode HandleDriverResult(OdbcmConnectionHandler *db_conn, + UncRespCode HandleDriverResult(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t config_id, TcCommitPhaseType phase, TcCommitPhaseResult driver_result); - UpplReturnCode HandleGlobalCommitRequest(uint32_t session_id, + UncRespCode HandleGlobalCommitRequest(uint32_t session_id, uint32_t config_id, TcDriverInfoMap &driver_info); - UpplReturnCode HandleDriverGlobalCommitResult(uint32_t session_id, + UncRespCode HandleDriverGlobalCommitResult(uint32_t session_id, uint32_t config_id, TcCommitPhaseType commitphase, TcCommitPhaseResult driver_result); - UpplReturnCode AbortTransaction(uint32_t session_id, + UncRespCode AbortTransaction(uint32_t session_id, uint32_t config_id, TcCommitOpAbortPhase operation_phase); - UpplReturnCode EndTransaction(OdbcmConnectionHandler *db_conn, + UncRespCode EndTransaction(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t config_id, TcTransEndResult trans_res); diff --git a/coordinator/modules/uppl/include/odbcm_common.hh b/coordinator/modules/uppl/include/odbcm_common.hh index a7f61045..b6508c3d 100644 --- a/coordinator/modules/uppl/include/odbcm_common.hh +++ b/coordinator/modules/uppl/include/odbcm_common.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -261,6 +261,9 @@ typedef struct { #define BDRY_VALID_STR "valid" #define BDRY_ROW_STATUS_STR "cs_row_status" #define BDRY_ATTR_STR "cs_attr" +#define VLAN_ID_STR "vlan_id" + +#define CTR_DATAFLOW_FLOWID_STR "flow_id" #define PHY_FINI_READ_LOCK() \ if (PhysicalLayer::phyFiniFlag == 1) { \ @@ -272,7 +275,8 @@ typedef struct { if (PhysicalLayer::phyFiniFlag == 1) { \ pfc_log_info("PhysicalLayer:: Fini is invoked already ..!!"); \ return ODBCM_RC_GENERAL_ERROR; \ - } + } \ + /**Macro to fill the DBTableSchema Object instance with given input values. * In the case of static access. (memory might be allocated earlier, here reuse @@ -280,21 +284,21 @@ typedef struct { #define ODBCM_FILL_ATTRIBUTE_INFO(attr_var, \ attr_name, attr_value, attr_length, attr_type, attr_vector) \ { \ - attr_var.table_attribute_name = attr_name; \ - attr_var.p_table_attribute_value = reinterpret_cast(&attr_value); \ - attr_var.table_attribute_length = attr_length;\ - attr_var.request_attribute_type = attr_type; \ - attr_vector.push_back(attr_var); \ + (attr_var).table_attribute_name = (attr_name); \ + (attr_var).p_table_attribute_value = reinterpret_cast(&(attr_value)); \ + (attr_var).table_attribute_length = (attr_length);\ + (attr_var).request_attribute_type = (attr_type); \ + (attr_vector).push_back(attr_var); \ } #define ODBCM_FILL_ATTRIBUTE_INFOS(attr_var, \ attr_name, attr_value, attr_length, attr_type, attr_vector) \ { \ - attr_var.table_attribute_name = attr_name; \ - attr_var.p_table_attribute_value = reinterpret_cast(attr_value); \ - attr_var.table_attribute_length = attr_length;\ - attr_var.request_attribute_type = attr_type; \ - attr_vector.push_back(attr_var); \ + (attr_var).table_attribute_name = (attr_name); \ + (attr_var).p_table_attribute_value = reinterpret_cast(attr_value); \ + (attr_var).table_attribute_length = (attr_length);\ + (attr_var).request_attribute_type = (attr_type); \ + (attr_vector).push_back(attr_var); \ } /**return type of query factory methods*/ diff --git a/coordinator/modules/uppl/include/odbcm_connection.hh b/coordinator/modules/uppl/include/odbcm_connection.hh index b8de77ad..bd69a1e3 100644 --- a/coordinator/modules/uppl/include/odbcm_connection.hh +++ b/coordinator/modules/uppl/include/odbcm_connection.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -21,7 +21,6 @@ using unc::uppl::ODBCManager; namespace unc { namespace uppl { - enum OdbcmConnType { kOdbcmConnReadOnly = 0, // Read Only Connection kOdbcmConnReadWriteNb, // Read Write Connection For Nb requests @@ -35,15 +34,16 @@ class OdbcmConnectionHandler { * Constructor for OdbcmConnectionHandler */ explicit OdbcmConnectionHandler(const OdbcmConnType conn_type, - UpplReturnCode &conn_status, - ODBCManager *odbc_manager) { - conn_type_ = conn_type; - odbc_manager_ = odbc_manager; - conn_handle_ = NULL; - conn_status = UPPL_RC_SUCCESS; + UncRespCode &conn_status, + ODBCManager *odbc_manager): + conn_type_(conn_type), + conn_handle_(NULL), + odbc_manager_(odbc_manager), + using_session_id_(0) { + conn_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS db_ret = odbc_manager_->OpenDBConnection(this); if (db_ret != ODBCM_RC_SUCCESS) { - conn_status = UPPL_RC_ERR_DB_ACCESS; + conn_status = UNC_UPPL_RC_ERR_DB_ACCESS; } } /* @@ -61,6 +61,14 @@ class OdbcmConnectionHandler { conn_handle_ = conn_handle; } + void set_using_session_id(uint32_t session_id) { + using_session_id_ = session_id; + } + + uint32_t get_using_session_id() { + return using_session_id_; + } + OdbcmConnType get_conn_type() { return conn_type_; } @@ -73,7 +81,44 @@ class OdbcmConnectionHandler { OdbcmConnType conn_type_; SQLHDBC conn_handle_; // Connection handler to create ODBC Connection ODBCManager *odbc_manager_; + uint32_t using_session_id_; +}; + +class ScopedDBConnection { + public: + explicit ScopedDBConnection(const OdbcmConnType conn_type, + UncRespCode &resp_code, + OdbcmConnectionHandler *&db_conn, + uint32_t session_id, + uint32_t config_id, + ODBCManager *odbc_manager): conn_type_(conn_type), + db_conn_(NULL), + session_id_(session_id), + config_id_(config_id), + odbc_manager_(odbc_manager) { + resp_code = UNC_RC_SUCCESS; + ODBCM_RC_STATUS db_status = odbc_manager_->AssignDBConnection( + db_conn_, session_id_, config_id_); + db_conn = db_conn_; + if (db_conn == NULL) pfc_log_info("conn is null after assign"); + if (db_conn_ == NULL) pfc_log_info("conn_ is null after assign"); + if (db_status != ODBCM_RC_SUCCESS) { + resp_code = UNC_UPPL_RC_ERR_DB_ACCESS; + pfc_log_error("odbc connection assignation is failed!!"); + } + } + ~ScopedDBConnection() { + odbc_manager_->PoolDBConnection(db_conn_, session_id_, config_id_); + } + + private: + OdbcmConnType conn_type_; + OdbcmConnectionHandler *db_conn_; + uint32_t session_id_; + uint32_t config_id_; + ODBCManager *odbc_manager_; }; + } // namespace uppl } // namespace unc #endif /*_ODBCM_DB_CONNECTION_H_*/ diff --git a/coordinator/modules/uppl/include/odbcm_db_varbind.hh b/coordinator/modules/uppl/include/odbcm_db_varbind.hh index 28c27fb0..eada40a5 100644 --- a/coordinator/modules/uppl/include/odbcm_db_varbind.hh +++ b/coordinator/modules/uppl/include/odbcm_db_varbind.hh @@ -52,108 +52,108 @@ namespace uppl { /* * uppl memcpy macro */ -#define ODBCM_MEMCPY(__dst__, __src__, __size__) \ - if (__src__ != NULL && __size__ > 0) \ - memcpy(__dst__, __src__, __size__); +#define ODBCM_MEMCPY(dst, src, size) \ + if ((src) != NULL && (size) > 0) \ + memcpy((dst), (src), (size)); /* * uppl memset macro */ -#define ODBCM_MEMSET(__dst__, __val__, __size__) \ - memset(__dst__, __val__, __size__); +#define ODBCM_MEMSET(dst, val, size) \ + memset((dst), (val), (size)); /* * Allocate memory for ColumnAttrValue template, * this will be called up in the fetch functions */ -#define ODBCM_ALLOCATE_COLUMN_ATTRVALUE_T(__dt__, __Tname__) \ - ColumnAttrValue <__dt__> *__Tname__ = new ColumnAttrValue <__dt__>; \ - ODBCM_MEMSET(__Tname__, '\0', sizeof(__dt__)); +#define ODBCM_ALLOCATE_COLUMN_ATTRVALUE_T(dt, T_name) \ + ColumnAttrValue
*(T_name) = new ColumnAttrValue
; \ + ODBCM_MEMSET((T_name), '\0', sizeof(dt)); /* * To bind the input datatypes * for binding SQL_VARCHAR data type */ -#define BindInputParameter_SQL_VARCHAR(__stmt__, __param_no__, \ - __col_size__, __decimal__, __buffer__, __buf_len__, __lenptr__) \ - SQLBindParameter(__stmt__, __param_no__, SQL_PARAM_INPUT, \ - SQL_C_CHAR, SQL_VARCHAR, __col_size__, __decimal__, \ - __buffer__, __buf_len__, __lenptr__) +#define BindInputParameter_SQL_VARCHAR(stmt, param_no, \ + col_size, decimal, buffer, buf_len, lenptr) \ + SQLBindParameter((stmt), (param_no), SQL_PARAM_INPUT, \ + SQL_C_CHAR, SQL_VARCHAR, (col_size), (decimal), \ + (buffer), (buf_len), (lenptr)) /* * For binding SQL_SMALLINT data type */ -#define BindInputParameter_SQL_SMALLINT(__stmt__, __param_no__, \ - __col_size__, __decimal__, __buffer__, __buf_len__, __lenptr__) \ - SQLBindParameter(__stmt__, __param_no__, SQL_PARAM_INPUT, \ - SQL_C_SHORT, SQL_SMALLINT, __col_size__, __decimal__, \ - __buffer__, __buf_len__, __lenptr__) +#define BindInputParameter_SQL_SMALLINT(stmt, param_no, \ + col_size, decimal, buffer, buf_len, lenptr) \ + SQLBindParameter((stmt), (param_no), SQL_PARAM_INPUT, \ + SQL_C_SHORT, SQL_SMALLINT, (col_size), (decimal), \ + (buffer), (buf_len), (lenptr)) /* * For binding SQL_INTIGER data type */ -#define BindInputParameter_SQL_INTEGER(__stmt__, __param_no__, \ - __col_size__, __decimal__, __buffer__, __buf_len__, __lenptr__) \ - SQLBindParameter(__stmt__, __param_no__, SQL_PARAM_INPUT, \ - SQL_C_LONG, SQL_INTEGER, __col_size__, __decimal__, \ - __buffer__, __buf_len__, __lenptr__) +#define BindInputParameter_SQL_INTEGER(stmt, param_no, \ + col_size, decimal, buffer, buf_len, lenptr) \ + SQLBindParameter((stmt), (param_no), SQL_PARAM_INPUT, \ + SQL_C_LONG, SQL_INTEGER, (col_size), (decimal), \ + (buffer), (buf_len), (lenptr)) /* * For binding SQL_BIGINT( data type */ -#define BindInputParameter_SQL_BIGINT(__stmt__, __param_no__, \ - __col_size__, __decimal__, __buffer__, __buf_len__, __lenptr__) \ - SQLBindParameter(__stmt__, __param_no__, SQL_PARAM_INPUT, \ - SQL_C_UBIGINT, SQL_BIGINT, __col_size__, __decimal__, \ - __buffer__, __buf_len__, __lenptr__) +#define BindInputParameter_SQL_BIGINT(stmt, param_no, \ + col_size, decimal, buffer, buf_len, lenptr) \ + SQLBindParameter((stmt), (param_no), SQL_PARAM_INPUT, \ + SQL_C_UBIGINT, SQL_BIGINT, (col_size), (decimal), \ + (buffer), (buf_len), (lenptr)) /* * For binding SQL_CHAR data type */ -#define BindInputParameter_SQL_CHAR(__stmt__, __param_no__, \ - __col_size__, __decimal__, __buffer__, __buf_len__, __lenptr__) \ - SQLBindParameter(__stmt__, __param_no__, SQL_PARAM_INPUT, \ - SQL_C_CHAR, SQL_CHAR, __col_size__, __decimal__, \ - __buffer__, __buf_len__, __lenptr__) +#define BindInputParameter_SQL_CHAR(stmt, param_no, \ + col_size, decimal, buffer, buf_len, lenptr) \ + SQLBindParameter((stmt), (param_no), SQL_PARAM_INPUT, \ + SQL_C_CHAR, SQL_CHAR, (col_size), (decimal), \ + (buffer), (buf_len), (lenptr)) /* * For binding SQL_BINARY data type * calculate the length of buffer and assign to lenptr */ -#define BindInputParameter_SQL_BINARY(__stmt__, __param_no__, \ - __col_size__, __decimal__, __buffer__, __buf_len__, __lenptr__) \ - SQLBindParameter(__stmt__, __param_no__, SQL_PARAM_INPUT, \ - SQL_C_BINARY, SQL_BINARY, __col_size__, __decimal__, \ - __buffer__, __buf_len__, __lenptr__) +#define BindInputParameter_SQL_BINARY(stmt, param_no, \ + col_size, decimal, buffer, buf_len, lenptr) \ + SQLBindParameter((stmt), (param_no), SQL_PARAM_INPUT, \ + SQL_C_BINARY, SQL_BINARY, (col_size), (decimal), \ + (buffer), (buf_len), (lenptr)) /* * To bind the output datatypes * For binding SQL_VARCHAR data type */ -#define BindCol_SQL_VARCHAR(__stmt__, __param_no__, __buffer__, \ - __col_size__, __lenptr__) \ - SQLBindCol(__stmt__, __param_no__, SQL_C_CHAR, __buffer__, \ - __col_size__, __lenptr__) +#define BindCol_SQL_VARCHAR(stmt, param_no, buffer, \ + col_size, lenptr) \ + SQLBindCol((stmt), (param_no), SQL_C_CHAR, (buffer), \ + (col_size), (lenptr)) /* * For binding SQL_SMALLINT data type */ -#define BindCol_SQL_SMALLINT(__stmt__, __param_no__, __buffer__, \ - __col_size__, __lenptr__) \ - SQLBindCol(__stmt__, __param_no__, SQL_C_SHORT, __buffer__, \ - __col_size__, __lenptr__) +#define BindCol_SQL_SMALLINT(stmt, param_no, buffer, \ + col_size, lenptr) \ + SQLBindCol((stmt), (param_no), SQL_C_SHORT, (buffer), \ + (col_size), (lenptr)) /* * For binding SQL_INTEGER data type */ -#define BindCol_SQL_INTEGER(__stmt__, __param_no__, __buffer__, \ - __col_size__, __lenptr__) \ - SQLBindCol(__stmt__, __param_no__, SQL_C_LONG, __buffer__, \ - __col_size__, __lenptr__) +#define BindCol_SQL_INTEGER(stmt, param_no, buffer, \ + col_size, lenptr) \ + SQLBindCol((stmt), (param_no), SQL_C_LONG, (buffer), \ + (col_size), (lenptr)) /* * For binding SQL_BIGINT data type */ -#define BindCol_SQL_BIGINT(__stmt__, __param_no__, __buffer__, \ - __col_size__, __lenptr__) \ - SQLBindCol(__stmt__, __param_no__, SQL_C_UBIGINT, __buffer__, \ - __col_size__, __lenptr__) +#define BindCol_SQL_BIGINT(stmt, param_no, buffer, \ + col_size, lenptr) \ + SQLBindCol((stmt), (param_no), SQL_C_UBIGINT, (buffer), \ + (col_size), (lenptr)) /* * For binding SQL_BINARY data type */ -#define BindCol_SQL_BINARY(__stmt__, __param_no__, __buffer__, \ - __col_size__, __lenptr__) \ - SQLBindCol(__stmt__, __param_no__, SQL_C_BINARY, __buffer__, \ - __col_size__, __lenptr__) +#define BindCol_SQL_BINARY(stmt, param_no, buffer, \ + col_size, lenptr) \ + SQLBindCol((stmt), (param_no), SQL_C_BINARY, (buffer), \ + (col_size), (lenptr)) /* * Binding types, Input binding or Output binding diff --git a/coordinator/modules/uppl/include/odbcm_mgr.hh b/coordinator/modules/uppl/include/odbcm_mgr.hh index 648013a1..9d309ed7 100644 --- a/coordinator/modules/uppl/include/odbcm_mgr.hh +++ b/coordinator/modules/uppl/include/odbcm_mgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -17,51 +17,51 @@ #define _ODBCM_MGR_HH_ #include #include +#include #include #include #include "odbcm_common.hh" #include "odbcm_db_tableschema.hh" - - namespace unc { namespace uppl { + +/* + * Rollback the specified transaction with ignoring result. + */ +#define ODBCM_ROLLBACK_TRANSACTION(conn) \ + do { \ + if ((conn) != NULL) { \ + SQLRETURN __rc(SQLEndTran(SQL_HANDLE_DBC, (conn), SQL_ROLLBACK)); \ + ODBCM_DBC_HANDLE_CHECK((conn), __rc); \ + } \ + } while (0) + /**macro for ending the current transaction with rollback or commit state*/ -#define ODBCM_END_TRANSACTION(__conn__, __trans__) \ - if (NULL != __conn__) {\ - SQLRETURN transaction_rc = SQLEndTran(SQL_HANDLE_DBC, __conn__, __trans__);\ - ODBCM_DBC_HANDLE_CHECK(__conn__, transaction_rc); \ +#define ODBCM_END_TRANSACTION(conn, trans, status) \ + if (NULL != (conn)) {\ + SQLRETURN transaction_rc = SQLEndTran(SQL_HANDLE_DBC, (conn), (trans));\ + ODBCM_DBC_HANDLE_CHECK((conn), transaction_rc); \ if (transaction_rc != ODBCM_RC_SUCCESS &&\ transaction_rc != ODBCM_RC_SUCCESS_WITH_INFO) \ - status = ODBCM_RC_TRANSACTION_ERROR; \ + (status) = ODBCM_RC_TRANSACTION_ERROR; \ } /**macro to allocate memory for SQL statement handler*/ -#define ODBCM_STATEMENT_CREATE(__connhandle__, __stmt__) \ - if (NULL != __connhandle__) { \ - odbc_rc = SQLAllocHandle(SQL_HANDLE_STMT, __connhandle__, &__stmt__); \ - ODBCM_STMT_HANDLE_CHECK(__stmt__, __connhandle__, odbc_rc); \ +#define ODBCM_STATEMENT_CREATE(conn_handle, stmt, odbc_rc) \ + if (NULL != (conn_handle)) { \ + (odbc_rc) = SQLAllocHandle(SQL_HANDLE_STMT, (conn_handle), &(stmt)); \ + ODBCM_STMT_HANDLE_CHECK((stmt), (conn_handle), (odbc_rc)); \ } -/**macro to free the statement handle*/ -#define ODBCM_FREE_STMT(__stmt__) \ - if (NULL != __stmt__) \ - odbc_rc = SQLFreeHandle(SQL_HANDLE_STMT, __stmt__); \ - if (odbc_rc != ODBCM_RC_SUCCESS) \ - status = ODBCM_RC_MEMORY_ERROR; - /**macro to free the memory allocated object*/ -#define ODBCM_FREE_MEMORY(__object__) \ - if (NULL != (__object__)) \ - delete __object__; - -/**macro to allocate memory for string object*/ -#define ODBCM_STRING_MEM_ALLOCATE(__str__) \ - __str__ = new std::string(); +#define ODBCM_FREE_MEMORY(object) \ + if (NULL != (object)) \ + delete (object); /**macro to create object instance from class*/ -#define ODBCM_CREATE_OBJECT(__obj__, __class__) \ - __obj__ = new __class__(); \ - if (__obj__ == NULL) \ +#define ODBCM_CREATE_OBJECT(obj, class) \ + (obj) = new (class)(); \ + if ((obj) == NULL) \ pfc_log_fatal("ODBCM::ODBCManager:: " \ "Internal object memory allocation is failed"); @@ -69,21 +69,21 @@ namespace uppl { * 1. transaction flag setting - READ_COMMITTED * 2. transaction flag setting - AUTOCOMMIT OFF * */ -#define ODBCM_SET_CONNECTION_ATTRIBUTE(__connhandle__, __odbcrc__) \ - __odbcrc__ = SQLSetConnectAttr(__connhandle__, SQL_ATTR_TXN_ISOLATION, \ +#define ODBCM_SET_CONNECTION_ATTRIBUTE(conn_handle, odbc_rc) \ + (odbc_rc) = SQLSetConnectAttr((conn_handle), SQL_ATTR_TXN_ISOLATION, \ (SQLPOINTER)SQL_TXN_READ_COMMITTED, 0); \ - ODBCM_DBC_HANDLE_CHECK(__connhandle__, __odbcrc__); \ - if (__odbcrc__ != ODBCM_RC_SUCCESS && \ - __odbcrc__ != ODBCM_RC_SUCCESS_WITH_INFO) { \ + ODBCM_DBC_HANDLE_CHECK((conn_handle), (odbc_rc)); \ + if ((odbc_rc) != ODBCM_RC_SUCCESS && \ + (odbc_rc) != ODBCM_RC_SUCCESS_WITH_INFO) { \ pfc_log_info("ODBCM::ODBCManager:: " \ "Error in SQLSetConnectAttr"); \ return ODBCM_RC_CONNECTION_ERROR; \ } \ - __odbcrc__ = SQLSetConnectAttr(__connhandle__, SQL_ATTR_AUTOCOMMIT, \ + (odbc_rc) = SQLSetConnectAttr((conn_handle), SQL_ATTR_AUTOCOMMIT, \ (SQLPOINTER)SQL_AUTOCOMMIT_OFF, SQL_NTS); \ - ODBCM_DBC_HANDLE_CHECK(__connhandle__, __odbcrc__); \ - if (__odbcrc__ != ODBCM_RC_SUCCESS && \ - __odbcrc__ != ODBCM_RC_SUCCESS_WITH_INFO) { \ + ODBCM_DBC_HANDLE_CHECK((conn_handle), (odbc_rc)); \ + if ((odbc_rc) != ODBCM_RC_SUCCESS && \ + (odbc_rc) != ODBCM_RC_SUCCESS_WITH_INFO) { \ pfc_log_info("ODBCM::ODBCManager:: " \ "Error in SQLSetConnectAttr"); \ return ODBCM_RC_CONNECTION_ERROR; \ @@ -125,6 +125,15 @@ class ODBCManager { /**close the connection at the end of application, free the allocated * handlers and environment */ ODBCM_RC_STATUS CloseDBConnection(OdbcmConnectionHandler *conn_obj); + + ODBCM_RC_STATUS AssignDBConnection(OdbcmConnectionHandler *&db_conn, + uint32_t session_id, uint32_t config_id = 0); + ODBCM_RC_STATUS PoolDBConnection(OdbcmConnectionHandler *&conn_obj, + uint32_t session_id, uint32_t config_id = 0); + ODBCM_RC_STATUS FreeingConnections(bool IsAllOrUnused); + // Closes the Read Write connections + ODBCM_RC_STATUS CloseRwConnection(); + /** getter method for db_table_list_map_ private member*/ std::map >& get_db_table_list_map_(); /** getter method for odbcm_tables_column_map_ private member*/ @@ -276,8 +285,7 @@ class ODBCManager { QueryFactory*, QueryProcessor*); std::string GetColumnName(ODBCMTableColumns); - // Closes the Read Write connections - ODBCM_RC_STATUS CloseRwConnection(); + std::list err_connx_list_; private: /**constructor of ODBCManager class @@ -316,6 +324,9 @@ class ODBCManager { // Connection handles to store nb and sb rw connection OdbcmConnectionHandler *rw_nb_conn_obj_; OdbcmConnectionHandler *rw_sb_conn_obj_; + std::map conpool_inuse_map_; + std::list conpool_free_list_; + uint32_t conn_max_limit_; }; } // namespace uppl } // namespace unc diff --git a/coordinator/modules/uppl/include/odbcm_query_factory.hh b/coordinator/modules/uppl/include/odbcm_query_factory.hh index d46d6b28..4d63bd55 100644 --- a/coordinator/modules/uppl/include/odbcm_query_factory.hh +++ b/coordinator/modules/uppl/include/odbcm_query_factory.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -81,6 +81,7 @@ namespace uppl { (unc_keytype_datatype_t, std::string&); std::string getOrderByString(ODBCMTable, std::vector &); + private: /** To frame query for creating a row in db */ SQLQUERY operation_createonerow diff --git a/coordinator/modules/uppl/include/odbcm_utils.hh b/coordinator/modules/uppl/include/odbcm_utils.hh index ea75315d..b78fb2fb 100644 --- a/coordinator/modules/uppl/include/odbcm_utils.hh +++ b/coordinator/modules/uppl/include/odbcm_utils.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,15 +15,27 @@ #ifndef _ODBCM_UTILS_HH_ #define _ODBCM_UTILS_HH_ -#include +#include +#include #include +#include #include "odbcm_common.hh" #include "odbcm_db_tableschema.hh" namespace unc { namespace uppl { - - +#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED) + /* union semun is defined by including */ +#else + /* according to X/OPEN we have to define it ourselves */ + union semun { + int val; /* value for SETVAL */ + struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */ + unsigned short *array; /* array for GETALL, SETALL */ + /* Linux specific part: */ + struct seminfo *__buf; /* buffer for IPC_INFO */ + }; +#endif typedef struct { const ODBCM_RC_STATUS rcode; const std::string rc_string; @@ -53,7 +65,7 @@ const char g_log_db_name[7][20] = { */ #if ODBCM_DEBUG #define odbcm_debug_info(fmt, ...) \ - pfc_log_debug(fmt, ##__VA_ARGS__); + pfc_log_debug((fmt), ##__VA_ARGS__); #else #define odbcm_debug_info(fmt, ...) (void)0 #endif @@ -73,9 +85,9 @@ const char g_log_db_name[7][20] = { * Macro for database environment handle checking */ #define ODBCM_ENV_HANDLE_CHECK(henv, odbcm_rc) \ - if (odbcm_rc != SQL_SUCCESS) { \ + if ((odbcm_rc) != SQL_SUCCESS) { \ ODBCM_RC_STATUS rc = ODBCMUtils::OdbcmHandleInfoPrint( \ - SQL_HANDLE_ENV, henv, odbcm_rc, __LINE__, __FILE__); \ + SQL_HANDLE_ENV, (henv), (odbcm_rc), __LINE__, __FILE__); \ if (rc != SQL_SUCCESS) \ return (ODBCM_RC_STATUS)rc; \ } @@ -84,25 +96,25 @@ const char g_log_db_name[7][20] = { * Macro for database connection handle checking */ #define ODBCM_DBC_HANDLE_CHECK(hdbc, odbcm_rc) \ - if (odbcm_rc != SQL_SUCCESS) { \ + if ((odbcm_rc) != SQL_SUCCESS) { \ ODBCM_RC_STATUS rc = ODBCMUtils::OdbcmHandleInfoPrint( \ - SQL_HANDLE_DBC, hdbc, odbcm_rc, __LINE__, __FILE__); \ + SQL_HANDLE_DBC, (hdbc), (odbcm_rc), __LINE__, __FILE__); \ if (rc != SQL_SUCCESS) \ - odbcm_rc = rc; \ + (odbcm_rc) = rc; \ } /* * Macro for query statement handle checking */ #define ODBCM_STMT_HANDLE_CHECK(hstmt, hdbc, odbcm_rc) \ - if (NULL != hstmt) { \ - if (odbcm_rc != SQL_SUCCESS) { \ + if (NULL != (hstmt)) { \ + if ((odbcm_rc) != SQL_SUCCESS) { \ ODBCM_RC_STATUS rc = ODBCMUtils::OdbcmHandleInfoPrint( \ - SQL_HANDLE_STMT, hstmt, odbcm_rc, __LINE__, __FILE__);\ + SQL_HANDLE_STMT, (hstmt), (odbcm_rc), __LINE__, __FILE__);\ if (rc == SQL_ERROR) \ - ODBCMUtils::OdbcmStmtResourcesFree(hstmt); \ + ODBCMUtils::OdbcmStmtResourcesFree((hstmt)); \ if (rc != SQL_SUCCESS) \ - ODBCMUtils::OdbcmTransRollback(hdbc); \ + ODBCMUtils::OdbcmTransRollback((hdbc)); \ if (rc != SQL_SUCCESS) return (ODBCM_RC_STATUS)rc; \ } \ } @@ -111,12 +123,12 @@ const char g_log_db_name[7][20] = { * Macro for database parameters handle checking */ #define ODBCM_PARAM_HANDLE_CHECK(hstmt, odbcm_rc) \ - if (odbcm_rc != SQL_SUCCESS || \ - odbcm_rc != SQL_SUCCESS_WITH_INFO) { \ + if ((odbcm_rc) != SQL_SUCCESS || \ + (odbcm_rc) != SQL_SUCCESS_WITH_INFO) { \ ODBCM_RC_STATUS rc = ODBCMUtils::OdbcmHandleInfoPrint( \ - SQL_HANDLE_STMT, hstmt, odbcm_rc, __LINE__, __FILE__);\ + SQL_HANDLE_STMT, (hstmt), (odbcm_rc), __LINE__, __FILE__);\ if (rc == SQL_ERROR) \ - ODBCMUtils::OdbcmStmtResourcesFree(hstmt); \ + ODBCMUtils::OdbcmStmtResourcesFree((hstmt)); \ return (ODBCM_RC_STATUS)rc; \ } @@ -124,15 +136,15 @@ const char g_log_db_name[7][20] = { * Macro for database process handle checking */ #define ODBCM_PROCESS_HANDLE_CHECK(hstmt, odbcm_rc) \ - if (odbcm_rc != SQL_SUCCESS) { \ + if ((odbcm_rc) != SQL_SUCCESS) { \ ODBCM_RC_STATUS rc = ODBCMUtils::OdbcmHandleInfoPrint( \ - SQL_HANDLE_STMT, hstmt, odbcm_rc, __LINE__, __FILE__);\ + SQL_HANDLE_STMT, (hstmt), (odbcm_rc), __LINE__, __FILE__);\ if (rc == SQL_ERROR || \ rc == SQL_STILL_EXECUTING || \ rc == SQL_NEED_DATA ) { \ - ODBCMUtils::OdbcmStmtResourcesFree(hstmt); \ + ODBCMUtils::OdbcmStmtResourcesFree((hstmt)); \ } \ - odbcm_rc = (ODBCM_RC_STATUS)rc; \ + (odbcm_rc) = (ODBCM_RC_STATUS)rc; \ } /* @@ -176,6 +188,8 @@ class ODBCMUtils { */ ~ODBCMUtils(); + static int sem_id; + /* * Info about the SQL error */ @@ -255,6 +269,16 @@ class ODBCMUtils { // static ODBCM_RC_STATUS Intialize_RCode_String(); + // initializes semaphore using SETVAL + static int set_semvalue(int val); + + // delete semaphore + static int del_semvalue(); + + static int SEM_DOWN(); + static int SEM_UP(); + + private: /** No private members */ }; diff --git a/coordinator/modules/uppl/include/phy_util.hh b/coordinator/modules/uppl/include/phy_util.hh index 40393b94..e552c692 100644 --- a/coordinator/modules/uppl/include/phy_util.hh +++ b/coordinator/modules/uppl/include/phy_util.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -72,6 +72,7 @@ class PhyUtil { const northbound_alarm_header& rqh); static string uint8tostr(const uint8_t &c); static string uint16tostr(const uint16_t &c); + static string uint32tostr(const uint32_t &c); static string uint64tostr(const uint64_t &c); static int uint8touint(const uint8_t &c); static unsigned int strtouint(const string &str); @@ -115,7 +116,7 @@ class PhyUtil { const TableAttrSchema& table_attr_schema, uint8_t *attr_value, AttributeDataType attr_type); - static UpplReturnCode get_controller_type( + static UncRespCode get_controller_type( OdbcmConnectionHandler *db_conn, string controller_name, unc_keytype_ctrtype_t& controller_type, @@ -131,20 +132,4 @@ class PhyUtil { unsigned int valid); }; -#define FN_START_TIME(fn_name, kt) \ -pfc_timespec_t start; \ -pfc_clock_gettime(&start); \ -pfc_log_info("Start Time for %s in function %s is %" PFC_PFMT_u64, \ - fn_name, kt, static_cast (start.tv_nsec)); \ - -#define FN_END_TIME(fn_name, kt) \ -pfc_timespec_t end; \ -pfc_clock_gettime(&end); \ -pfc_log_info("End Time for %s in function %s is %" PFC_PFMT_u64, \ - fn_name, kt, static_cast (end.tv_nsec)); \ -pfc_timespec_sub(&end, &start); \ -uint64_t elapsed(pfc_clock_time2msec(&end)); \ -pfc_log_info("Time taken for %s in function %s is %" PFC_PFMT_u64, \ - fn_name, kt, elapsed); \ - #endif diff --git a/coordinator/modules/uppl/include/physical_common_def.hh b/coordinator/modules/uppl/include/physical_common_def.hh index db33deae..10f3f7e8 100644 --- a/coordinator/modules/uppl/include/physical_common_def.hh +++ b/coordinator/modules/uppl/include/physical_common_def.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -17,6 +17,7 @@ #define _PHYSICAL_COMMON_DEF_HH_ #include #include +#include #include #define UPPL_IPC_NOTIFICATION_HANDLER_NAME "UpplNotificationManager" @@ -233,6 +234,48 @@ struct driver_event_header { uint32_t key_type; }; +struct lp_struct { + uint8_t switch_id[256]; + uint8_t port_id[32]; + uint8_t port_type; +}; + +struct lmp_struct { + uint8_t switch_id[256]; + uint8_t port_id[32]; +}; + +struct port_struct { + uint8_t port_id[32]; +}; + +struct boundary_val { + uint8_t controller_type; + uint8_t controller_name[32]; + uint8_t domain_name[32]; + uint8_t logical_port_id[320]; + lp_struct lp_str; + uint8_t boundary_id[32]; +}; + +struct boundary_record { + uint8_t boundary_id[32]; + uint8_t ctr_name1[32]; + uint8_t dom_name1[32]; + uint8_t lp_id1[320]; + uint8_t port_type1; + uint8_t sw_id1[256]; + uint8_t port_id1[32]; + bool is_filled1; + uint8_t ctr_name2[32]; + uint8_t dom_name2[32]; + uint8_t lp_id2[320]; + uint8_t port_type2; + uint8_t sw_id2[256]; + uint8_t port_id2[32]; + bool is_filled2; +}; + struct driver_alarm_header { std::string controller_id; std::string domain_id; diff --git a/coordinator/modules/uppl/include/physical_core.hh b/coordinator/modules/uppl/include/physical_core.hh index e1f47696..456c7795 100644 --- a/coordinator/modules/uppl/include/physical_core.hh +++ b/coordinator/modules/uppl/include/physical_core.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -27,6 +27,7 @@ #include "physical_itc.hh" #include "unc_state_handler.hh" #include "controller_version.hh" +#include "capa_intf.hh" using std::vector; using std::map; @@ -86,21 +87,21 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : */ - UpplReturnCode InitializePhysical(); + UncRespCode InitializePhysical(); /** * @Description : This function finalizes physical core members * @param[in] : */ - UpplReturnCode FinalizePhysical(); + UncRespCode FinalizePhysical(); /** * @Description : This function reads config from file * @param[in] : */ - UpplReturnCode ReadConfigFile(); + UncRespCode ReadConfigFile(); /** * @Description : This function reads controller capability config @@ -108,7 +109,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : */ - UpplReturnCode ReadCtrlrStaticCapability(); + UncRespCode ReadCtrlrStaticCapability(); /** * @Description : This function validates key type controller capability map @@ -116,7 +117,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : key_type - Key type from NB */ - UpplReturnCode ValidateKeyTypeInCtrlrCap(string version, + UncRespCode ValidateKeyTypeInCtrlrCap(string version, uint32_t key_type); /** @@ -127,7 +128,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : attribute_name - name of the attribute associated */ - UpplReturnCode ValidateAttribInCtrlrCap(string version, + UncRespCode ValidateAttribInCtrlrCap(string version, uint32_t key_type, string attribute_name); @@ -138,7 +139,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : key_type - Key type from NB */ - UpplReturnCode GetScalabilityNumber(string version, + UncRespCode GetScalabilityNumber(string version, uint32_t key_type, uint32_t &scalability_num); @@ -148,7 +149,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : */ - UpplReturnCode SendEventSubscripToDriver(); + UncRespCode SendEventSubscripToDriver(); /** * @Description : This function sends cancel event subscription request to @@ -156,7 +157,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : */ - UpplReturnCode CancelEventSubscripInDriver(); + UncRespCode CancelEventSubscripInDriver(); /** * @Description : This function validates the config ID by sending @@ -165,7 +166,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : config_id - Configuration ID */ - UpplReturnCode ValidateConfigId(uint32_t session_id, uint32_t config_id); + UncRespCode ValidateConfigId(uint32_t session_id, uint32_t config_id); /** * @Description : This function validates if the operation is valid @@ -173,7 +174,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : operation_type - type of operation requested */ - UpplReturnCode ValidateStandbyRequests(uint32_t operation_type); + UncRespCode ValidateStandbyRequests(uint32_t operation_type); /** * @Description : This inline function gives the instance of @@ -207,7 +208,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : controller_id - Controller identification */ - UpplReturnCode SendControllerDisconnectAlarm(string controller_id); + UncRespCode SendControllerDisconnectAlarm(string controller_id); /** * @Description : This function sends CONROLLER_CONNECT alarm to @@ -220,7 +221,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : controller_id - Controller identification */ - UpplReturnCode SendControllerConnectAlarm(string controller_id); + UncRespCode SendControllerConnectAlarm(string controller_id); /** *@Description : This function sends EVENT_HANDLING_SUCCESS alarm to @@ -232,7 +233,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * event_failed - Additional details about failed event handling * **/ - UpplReturnCode SendEventHandlingSuccessAlarm(string controller_id, + UncRespCode SendEventHandlingSuccessAlarm(string controller_id, string event_details); /** @@ -242,7 +243,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * event_failed - Additional details about failed event handling * **/ - UpplReturnCode SendEventHandlingFailureAlarm(string controller_id, + UncRespCode SendEventHandlingFailureAlarm(string controller_id, string event_details); /** @@ -253,8 +254,7 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * @param[in] : driver_name - driver name is filled in this variable * */ - - UpplReturnCode GetDriverName(unc_keytype_ctrtype_t controller_type, + UncRespCode GetDriverName(unc_keytype_ctrtype_t controller_type, string &driver_name); /** @@ -348,6 +348,18 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { TcCommonRet HandleAuditStart(uint32_t session_id, unc_keytype_ctrtype_t driver_id, string controller_id); + /** + * @Description : This is a dummy function. TcLibInterface has pure virtual + * functions. All functions has to have an implementation to + * avoid runtime conflicts + */ + TcCommonRet HandleAuditStart(uint32_t session_id, + unc_keytype_ctrtype_t driver_id, + string controller_id, + pfc_bool_t force_reconnect) { + /*this should not called by UPPL*/ + return unc::tclib::TC_FAILURE; + } /** * @Description : This function will be called back when TC sends user * Audit End request to UPPL @@ -520,8 +532,26 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { return unknown_controller_count_; } vector event_handling_controller_alarm_; - UpplReturnCode RaiseEventHandlingAlarm(string controller_name); - UpplReturnCode ClearEventHandlingAlarm(string controller_name); + UncRespCode RaiseEventHandlingAlarm(string controller_name); + UncRespCode ClearEventHandlingAlarm(string controller_name); + + /** + * @Description : This is a map to keep the alarms which has been sent to + * node manager detail + */ + std::map alarm_status_map_; + UncRespCode remove_ctr_from_alarm_status_map( + std::string , std::string); + static unc::capa::CapaIntf *GetCapaInterface(); + /* Variable to hold max dataflow traversal count to verify during dataflow + * traversal, dataflow traversal is limited by this count value + * */ + uint32_t uppl_max_dataflowtraversal_; + /*variable to hold the max. allowed RO db connections */ + uint32_t uppl_max_ro_db_connections_; + /*this flag enables to send the user initiated operations + * recovery alarm to nodemgr */ + bool system_transit_state_; private: /* PhysicalCore Instance */ @@ -563,21 +593,25 @@ class PhysicalCore : public TcLibInterface, public UncStateHandler { * number of unknown controllers should be allowed */ uint32_t unknown_controller_count_; - /* This variable contains the InternalTransactionCoordinator singleton * object */ InternalTransactionCoordinator* internal_transaction_coordinator_; /* Constructor */ - PhysicalCore() { - internal_transaction_coordinator_ = NULL; - audit_notfn_timeout_ = 0; - unknown_controller_count_ = 0; + PhysicalCore() : + uppl_max_dataflowtraversal_(0), + uppl_max_ro_db_connections_(0), + system_transit_state_(false), + audit_notfn_timeout_(0), + unknown_controller_count_(0), + internal_transaction_coordinator_(NULL) { } /* Destructor */ - ~PhysicalCore() {} - + ~PhysicalCore() { + if (!alarm_status_map_.empty()) + alarm_status_map_.clear(); + } cap_iter GetVersionIterator(ControllerVersion version_in); }; } // namespace uppl diff --git a/coordinator/modules/uppl/include/physical_itc.hh b/coordinator/modules/uppl/include/physical_itc.hh index a9a76ef3..fc0d97a6 100644 --- a/coordinator/modules/uppl/include/physical_itc.hh +++ b/coordinator/modules/uppl/include/physical_itc.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -51,13 +51,13 @@ class InternalTransactionCoordinator { DBConfigurationRequest *db_config_req(); SystemStateChangeRequest *system_state_change_req(); - UpplReturnCode PerformConfigIdValidation(ServerSession &session, + UncRespCode PerformConfigIdValidation(ServerSession &session, uint32_t sessionId, uint32_t configId); - UpplReturnCode ProcessReq(ServerSession &session, pfc_ipcid_t); - UpplReturnCode ProcessReq(ServerSession &session); - UpplReturnCode ProcessEvent(const IpcEvent &event); + UncRespCode ProcessReq(ServerSession &session, pfc_ipcid_t); + UncRespCode ProcessReq(ServerSession &session); + UncRespCode ProcessEvent(const IpcEvent &event); /* set_config_request_status * @@ -130,15 +130,15 @@ class InternalTransactionCoordinator { SystemStateChangeRequest *system_state_change_req_; AuditRequest *audit_req_; - UpplReturnCode ProcessConfigRequest(ServerSession &session, + UncRespCode ProcessConfigRequest(ServerSession &session, physical_request_header &obj_req_hdr, physical_response_header &rsh); - UpplReturnCode ProcessReadRequest(ServerSession &session, + UncRespCode ProcessReadRequest(ServerSession &session, physical_request_header &obj_req_hdr, physical_response_header &rsh); - UpplReturnCode ProcessImportRequest(ServerSession &session, + UncRespCode ProcessImportRequest(ServerSession &session, uint32_t operation); - UpplReturnCode ProcessIsCandidateDirty(ServerSession &session, + UncRespCode ProcessIsCandidateDirty(ServerSession &session, uint32_t operation); }; #endif diff --git a/coordinator/modules/uppl/include/physical_itc_req.hh b/coordinator/modules/uppl/include/physical_itc_req.hh index 456ca74e..a5ba7768 100644 --- a/coordinator/modules/uppl/include/physical_itc_req.hh +++ b/coordinator/modules/uppl/include/physical_itc_req.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,8 +36,8 @@ class ITCReq { public: ITCReq() {} virtual ~ITCReq() {} - virtual UpplReturnCode ProcessReq(ServerSession &session) { - return UPPL_RC_SUCCESS; + virtual UncRespCode ProcessReq(ServerSession &session) { + return UNC_RC_SUCCESS; } virtual uint16_t ProcessEvent(uint16_t service_id, ServerSession &session) { return 0; diff --git a/coordinator/modules/uppl/include/physicallayer.hh b/coordinator/modules/uppl/include/physicallayer.hh index 897efa9e..95f072d8 100644 --- a/coordinator/modules/uppl/include/physicallayer.hh +++ b/coordinator/modules/uppl/include/physicallayer.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -50,13 +50,13 @@ struct build_stamp { #define PHY_FINI_IPC_LOCK(return_code) \ if (PhysicalLayer::phyFiniFlag == 1) { \ pfc_log_info("PhysicalLayer Fini is invoked already ..!!"); \ - return return_code; \ + return (return_code); \ } \ ScopedReadWriteLock ipcFiniLock(PhysicalLayer::get_phy_fini_phycore_lock_(), \ PFC_FALSE); \ if (PhysicalLayer::phyFiniFlag == 1) { \ pfc_log_info("PhysicalLayer:: Fini is invoked already ..!!"); \ - return return_code; \ + return (return_code); \ } #define PHY_FINI_EVENT_LOCK() \ @@ -72,23 +72,40 @@ struct build_stamp { } #define OPEN_DB_CONNECTION_TC_REQUEST(conn_type) \ - UpplReturnCode db_ret = UPPL_RC_SUCCESS; \ + UncRespCode db_ret = UNC_RC_SUCCESS; \ /* Create a new odbcm connection */ \ - OdbcmConnectionHandler db_conn(conn_type, db_ret, \ + OdbcmConnectionHandler db_conn((conn_type), db_ret, \ PhysicalLayer::get_instance()->get_odbc_manager()); \ - if (db_ret != UPPL_RC_SUCCESS) { \ + if (db_ret != UNC_RC_SUCCESS) { \ /* Error in opening db connection */ \ pfc_log_error("Error in opening DB connection"); \ + TcLibModule* tclib_ptr = static_cast \ + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); \ + tclib_ptr->TcLibWriteControllerInfo("", UNC_RC_INTERNAL_ERR, 0); \ return unc::tclib::TC_FAILURE; \ } +/* Create a new odbcm connection */ +#define OPEN_DB_CONNECTION_WITH_POOL(conn_type, \ + db_ret, db_conn, session_id, config_id) \ + ScopedDBConnection scope_dbconn((conn_type), (db_ret), \ + (db_conn), (session_id), (config_id), \ + physical_layer->get_odbc_manager()); \ + if ((db_ret) != UNC_RC_SUCCESS) { \ + physical_layer->get_odbc_manager()->\ + FreeingConnections(false/*Unused conn free*/); \ + PhysicalCore* physical_core = physical_layer->get_physical_core();\ + if (physical_core->system_transit_state_ == true) \ + pfc_log_warn("odbc connection assignation is failed !!"); \ + else \ + pfc_log_error("odbc connection assignation is failed !!"); \ + } + #define OPEN_DB_CONNECTION(conn_type, db_ret) \ - /* Create a new odbcm connection */ \ - OdbcmConnectionHandler db_conn(conn_type, db_ret, \ + OdbcmConnectionHandler db_conn((conn_type), (db_ret), \ PhysicalLayer::get_instance()->get_odbc_manager()); namespace unc { - namespace uppl { /************************************************************************** It is a singleton class which will instantiate other UPPL's classes. @@ -106,8 +123,8 @@ class PhysicalLayer : public pfc::core::Module { pfc_bool_t init(void); pfc_bool_t fini(void); static PhysicalLayer* get_instance(); - UpplReturnCode InitializePhysicalSubModules(); - UpplReturnCode FinalizePhysicalSubModules(); + UncRespCode InitializePhysicalSubModules(); + UncRespCode FinalizePhysicalSubModules(); pfc_ipcresp_t ipcService(ServerSession &session, pfc_ipcid_t service_id); PhysicalCore* get_physical_core(); @@ -132,6 +149,7 @@ class PhysicalLayer : public pfc::core::Module { static Mutex ipc_server_hdlr_mutex_; static Mutex notification_manager_mutex_; static Mutex ODBCManager_mutex_; + static Mutex db_conpool_mutex_; static ReadWriteLock phy_fini_db_lock_; static ReadWriteLock phy_fini_phycore_lock_; static ReadWriteLock phy_fini_event_lock_; diff --git a/coordinator/modules/uppl/ipc_client_configuration_handler.cc b/coordinator/modules/uppl/ipc_client_configuration_handler.cc index 6c31c121..0c609d16 100644 --- a/coordinator/modules/uppl/ipc_client_configuration_handler.cc +++ b/coordinator/modules/uppl/ipc_client_configuration_handler.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -19,6 +19,7 @@ #include "ipc_client_configuration_handler.hh" #include "physicallayer.hh" #include "physical_common_def.hh" +#include "unc/unc_base.h" using unc::uppl::IPCClientDriverHandler; @@ -33,19 +34,19 @@ Ktclasses,Audit,Import and ITC class. IPCClientDriverHandler::IPCClientDriverHandler( - unc_keytype_ctrtype_t cntr_type, UpplReturnCode &err) { + unc_keytype_ctrtype_t cntr_type, UncRespCode &err) { if (cntr_type == UNC_CT_PFC || - cntr_type == UNC_CT_VNP || + cntr_type == UNC_CT_VNP || cntr_type == UNC_CT_ODC ) { controller_type = cntr_type; PhysicalCore* physical_core = PhysicalCore::get_physical_core(); /* Getting the driver name from uppl.conf */ - UpplReturnCode driver_name_status = physical_core->GetDriverName( + UncRespCode driver_name_status = physical_core->GetDriverName( controller_type, driver_name); - if (driver_name_status != UPPL_RC_SUCCESS) { + if (driver_name_status != UNC_RC_SUCCESS) { pfc_log_error("Unable to get the driver name for controller type %d", cntr_type); - err = UPPL_RC_ERR_BAD_REQUEST; + err = UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("Creating a session to driver %s", driver_name.c_str()); connp = 0; @@ -58,7 +59,7 @@ IPCClientDriverHandler::IPCClientDriverHandler( int clnt_err = pfc_ipcclnt_altopen(chn_name.c_str(), &connp); if (clnt_err != 0) { pfc_log_error("Could not open driver ipc session"); - err = UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + err = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; } pfc_ipcid_t service = PFCDRIVER_SVID_PHYSICAL; if (cntr_type == UNC_CT_VNP) { @@ -67,7 +68,7 @@ IPCClientDriverHandler::IPCClientDriverHandler( cli_session = new ClientSession(connp, driver_name, service, clnt_err); if (cli_session == NULL) { pfc_log_error("Could not get driver ipc session"); - err = UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + err = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; } else if (clnt_err != 0) { pfc_log_error("Could not get driver ipc session, error is %d", err); err = ConvertDriverErrorCode(clnt_err); @@ -79,7 +80,7 @@ IPCClientDriverHandler::IPCClientDriverHandler( controller_type = UNC_CT_UNKNOWN; driver_name = ""; chn_name = ""; - err = UPPL_RC_ERR_BAD_REQUEST; + err = UNC_UPPL_RC_ERR_BAD_REQUEST; } } @@ -101,41 +102,71 @@ ClientSession* IPCClientDriverHandler::ResetAndGetSession() { return cli_session; } -UpplReturnCode IPCClientDriverHandler::SendReqAndGetResp( +UncRespCode IPCClientDriverHandler::SendReqAndGetResp( driver_response_header &rsp) { pfc_ipcresp_t resp = 0; uint8_t err = cli_session->invoke(resp); pfc_log_debug("DriverHandler err = %d, resp = %d", err, resp); if (err != 0 || resp != 0) { - return UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; } else { err = PhyUtil::sessGetDriverRespHeader(*cli_session, rsp); pfc_log_debug("DriverHandler resp err = %d, rsp.result_code=%d", err, rsp.result_code); if (err != 0) { - return UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; } else { return ConvertDriverErrorCode(rsp.result_code); } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } -UpplReturnCode IPCClientDriverHandler::ConvertDriverErrorCode( +UncRespCode IPCClientDriverHandler::ConvertDriverErrorCode( uint32_t drv_err_code) { switch (controller_type) { case UNC_CT_PFC: case UNC_CT_ODC: case UNC_CT_VNP: switch (drv_err_code) { - case 0: - return UPPL_RC_SUCCESS; + case UNC_RC_SUCCESS: + return UNC_RC_SUCCESS; + case UNC_RC_CTRLAPI_FAILURE: + case UNC_DRV_RC_DAEMON_INACTIVE: + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + case UNC_DRV_RC_INVALID_REQUEST_FORMAT: + case UNC_DRV_RC_INVALID_SESSION_ID: + case UNC_DRV_RC_INVALID_CONFIG_ID: + case UNC_DRV_RC_INVALID_OPERATION: + case UNC_DRV_RC_INVALID_OPTION1: + case UNC_DRV_RC_INVALID_OPTION2: + case UNC_DRV_RC_INVALID_DATATYPE: + case UNC_DRV_RC_INVALID_KEYTYPE: + case UNC_DRV_RC_MISSING_KEY_STRUCT: + case UNC_DRV_RC_MISSING_VAL_STRUCT: + case UNC_RC_CONFIG_INVAL: + return UNC_UPPL_RC_ERR_INVALID_STATE; + case UNC_DRV_RC_ERR_ATTRIBUTE_SYNTAX: + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + case UNC_DRV_RC_ERR_ATTRIBUTE_SEMANTIC: + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; + case UNC_RC_CTR_DISCONNECTED: + case UNC_RC_REQ_NOT_SENT_TO_CTR: + case UNC_RC_CTR_CONFIG_STATUS_ERR: + case UNC_RC_CTR_BUSY: + return UNC_UPPL_RC_ERR_CTRLR_DISCONNECTED; + case UNC_RC_NO_SUCH_INSTANCE: + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + case UNC_RC_INTERNAL_ERR: + return UNC_UPPL_RC_ERR_INVALID_STATE; + case UNC_DRV_RC_ERR_NOT_SUPPORTED_BY_CTRLR: + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; default: - return UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; } - default: - return UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + default: + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; } } diff --git a/coordinator/modules/uppl/ipc_client_logical_handler.cc b/coordinator/modules/uppl/ipc_client_logical_handler.cc index d2e638da..16373c1a 100644 --- a/coordinator/modules/uppl/ipc_client_logical_handler.cc +++ b/coordinator/modules/uppl/ipc_client_logical_handler.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,12 +37,12 @@ const unsigned int UPLL_RESPONSE_COUNT = 3; * types * key_str - void pointer * data_type - UNC_DT_* Specifies the datatype - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not + * UNC_UPPL_RC_ERR_* is returned when ipc response could not * be added to session **/ -UpplReturnCode IPCClientLogicalHandler::CheckInUseInLogical( +UncRespCode IPCClientLogicalHandler::CheckInUseInLogical( unc_key_type_t key_type, void* key_str, uint32_t data_type) { @@ -52,9 +52,9 @@ UpplReturnCode IPCClientLogicalHandler::CheckInUseInLogical( int err = pfc_ipcclnt_altopen(UPLL_IPC_CHANNEL_NAME, &connp); if (err != 0) { pfc_log_error("Could not open upll ipc session"); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; ClientSession sess(connp, UPLL_IPC_SERVICE_NAME, UPLL_GLOBAL_CONFIG_SVC_ID, err); pfc_log_debug("After client session object creation"); @@ -64,7 +64,7 @@ UpplReturnCode IPCClientLogicalHandler::CheckInUseInLogical( if (err != 0) { pfc_log_error("Unable to close ipc connection"); } - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } sess.addOutput((uint32_t)UPLL_IS_KEY_TYPE_IN_USE_OP); sess.addOutput(data_type); @@ -91,19 +91,19 @@ UpplReturnCode IPCClientLogicalHandler::CheckInUseInLogical( if (err != 0) { pfc_log_error("Unable to close ipc connection"); } - return UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; } uint32_t oper_type; uint32_t result_code = UPLL_RC_SUCCESS; pfc_ipcresp_t resp; err = sess.invoke(resp); - if (err != 0 || resp != UPPL_RC_SUCCESS) { + if (err != 0 || resp != UNC_RC_SUCCESS) { pfc_log_error("Session invocation to logical failed"); err = pfc_ipcclnt_altclose(connp); if (err != 0) { pfc_log_error("Unable to close ipc connection"); } - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } if (sess.getResponseCount() != UPLL_RESPONSE_COUNT) { pfc_log_error("Proper response not received from logical"); @@ -111,7 +111,7 @@ UpplReturnCode IPCClientLogicalHandler::CheckInUseInLogical( if (err != 0) { pfc_log_error("Unable to close ipc connection"); } - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } uint32_t resp_index = 0; int err1 = sess.getResponse(resp_index++, oper_type); @@ -122,7 +122,7 @@ UpplReturnCode IPCClientLogicalHandler::CheckInUseInLogical( if (err1 != 0 || err2 != 0 || err3 != 0) { pfc_log_error( "getResponse failed while receiving response from logical"); - return_code = UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return_code = UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } else { if (result_code == UPLL_RC_ERR_NO_SUCH_NAME || result_code == UPLL_RC_ERR_NO_SUCH_DATATYPE || @@ -137,8 +137,8 @@ UpplReturnCode IPCClientLogicalHandler::CheckInUseInLogical( pfc_log_error("Unable to close ipc connection"); } pfc_log_debug("in_use value : %d", in_use); - if (return_code == UPPL_RC_SUCCESS && in_use == 1) - return UPPL_RC_ERR_CFG_SEMANTIC; + if (return_code == UNC_RC_SUCCESS && in_use == 1) + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; return return_code; } diff --git a/coordinator/modules/uppl/ipc_connection_manager.cc b/coordinator/modules/uppl/ipc_connection_manager.cc index ee8e9fcd..cbdc076c 100644 --- a/coordinator/modules/uppl/ipc_connection_manager.cc +++ b/coordinator/modules/uppl/ipc_connection_manager.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -167,7 +167,7 @@ string IPCConnectionManager::get_uppl_service_name() { /** * @Description : Posts the event to the client * @param[in] : pointer to Serverevent - * @return : UPPL_RC_SUCCESS + * @return : UNC_RC_SUCCESS **/ uint32_t IPCConnectionManager::SendEvent(ServerEvent *evt) { uint32_t ret = ipc_server_handler_->SendEvent(evt); @@ -177,10 +177,10 @@ uint32_t IPCConnectionManager::SendEvent(ServerEvent *evt) { /** * @Description : Frees up the allocated memory - * @return : UPPL_RC_SUCCESS - if the allocated memory is freed + * @return : UNC_RC_SUCCESS - if the allocated memory is freed * successfully **/ -UpplReturnCode IPCConnectionManager::Finalize() { +UncRespCode IPCConnectionManager::Finalize() { if (ipc_server_handler_ != NULL) IPCServerHandler::release_ipc_server_handler(); if (ipc_client_logical_handler_ != NULL) @@ -189,17 +189,17 @@ UpplReturnCode IPCConnectionManager::Finalize() { ipc_client_logical_handler_ = NULL; notfn_timer_id_.clear(); controller_in_audit_.clear(); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** * @Description : This function is used for notification manager subscription * to IPC event handler - * @return : UPPL_RC_SUCCESS - if the IPC Event subscription notification - * is successful else UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED + * @return : UNC_RC_SUCCESS - if the IPC Event subscription notification + * is successful else UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED * is returned if event subscription notification failed **/ -UpplReturnCode IPCConnectionManager::SendEventSubscription() { +UncRespCode IPCConnectionManager::SendEventSubscription() { // Get Physical layer instance PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); IpcEventAttr attr_pfc, attr_vnp, attr_odc; @@ -207,15 +207,15 @@ UpplReturnCode IPCConnectionManager::SendEventSubscription() { // Add events to mask if ((mask.add(UNC_PHYSICAL_EVENTS)) != 0) { pfc_log_error("add() failed for UNC_PHYSICAL_EVENTS\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } if ((mask.add(UNC_ALARMS)) != 0) { pfc_log_error("add() failed for UNC_ALARMS\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } if ((mask.add(UNC_CTLR_STATE_EVENTS)) != 0) { pfc_log_error("add() failed for UNC_CTLR_STATE_EVENTS\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } attr_pfc.setPriority(150); attr_vnp.setPriority(150); @@ -223,7 +223,7 @@ UpplReturnCode IPCConnectionManager::SendEventSubscription() { if ((attr_pfc.addTarget(PFCDRIVER_IPC_SVC_NAME, mask)) != 0) { pfc_log_error("addTarget() failed for PFC driver\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } // Notification manager event is registered physical_layer->Module::addIpcEventHandler( @@ -233,7 +233,7 @@ UpplReturnCode IPCConnectionManager::SendEventSubscription() { pfc_log_debug("Event Subscribed for PFC driver"); if ((attr_vnp.addTarget(VNPDRIVER_IPC_SVC_NAME, mask)) != 0) { pfc_log_error("addTarget() failed for OVERLAY driver\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } physical_layer->Module::addIpcEventHandler( VNPDRIVER_IPC_CHN_NAME, @@ -244,7 +244,7 @@ UpplReturnCode IPCConnectionManager::SendEventSubscription() { // Notification manager for ODC if ((attr_odc.addTarget(ODCDRIVER_IPC_SVC_NAME, mask)) != 0) { pfc_log_error("addTarget() failed for ODC driver\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } physical_layer->Module::addIpcEventHandler( ODCDRIVER_IPC_CHN_NAME, @@ -252,18 +252,18 @@ UpplReturnCode IPCConnectionManager::SendEventSubscription() { &attr_odc); pfc_log_debug("Event Subscribed for ODC driver"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** * @Description : This function is used for notification manager cancel * subscription from IPC event handler - * @return : UPPL_RC_SUCCESS - if event subscription is cancelled + * @return : UNC_RC_SUCCESS - if event subscription is cancelled * successfully from IPC Event Handler - * else UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED + * else UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED * will be returned **/ -UpplReturnCode IPCConnectionManager::CancelEventSubscription() { +UncRespCode IPCConnectionManager::CancelEventSubscription() { // Get Physical layer instance PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Remove the Event Handler @@ -271,25 +271,25 @@ UpplReturnCode IPCConnectionManager::CancelEventSubscription() { get_notification_manager(UNC_CT_PFC))) != 0) { pfc_log_error("removeIpcEventHandler() failed\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } // Remove the Event Handler if ((physical_layer->Module::removeIpcEventHandler( get_notification_manager(UNC_CT_VNP))) != 0) { pfc_log_error("removeIpcEventHandler() failed\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } // Remove the Event Handler for ODC Driver if ((physical_layer->Module::removeIpcEventHandler( get_notification_manager(UNC_CT_ODC))) != 0) { pfc_log_error("removeIpcEventHandler() for ODC Driver failed\n"); - return UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + return UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } NotificationManager::release_notification_manager(); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -315,11 +315,11 @@ void IPCConnectionManager::addControllerToAuditList(string controller_name) { * @Description : This function is used for remove controller from * controller_in_audit vector * @param[in] : controller_name of type string - * @return : UPPL_RC_SUCCESS - if controller is removed successfully - * from audit list else UPPL_RC_ERR_AUDIT_FAILURE will be + * @return : UNC_RC_SUCCESS - if controller is removed successfully + * from audit list else UNC_UPPL_RC_ERR_AUDIT_FAILURE will be * returned if controller is not available in the vector **/ -UpplReturnCode IPCConnectionManager::removeControllerFromAuditList( +UncRespCode IPCConnectionManager::removeControllerFromAuditList( string controller_name) { pfc_log_debug("Executing removeControllerFromAuditList"); vector :: iterator iter = find(controller_in_audit_.begin(), @@ -327,7 +327,7 @@ UpplReturnCode IPCConnectionManager::removeControllerFromAuditList( controller_name); if (iter == controller_in_audit_.end()) { pfc_log_debug("Controller is not available in vector"); - return UPPL_RC_ERR_AUDIT_FAILURE; + return UNC_UPPL_RC_ERR_AUDIT_FAILURE; } else { controller_in_audit_.erase(iter); pfc_log_debug("Removed %s from list", controller_name.c_str()); @@ -337,9 +337,9 @@ UpplReturnCode IPCConnectionManager::removeControllerFromAuditList( if (timer_iter != notfn_timer_id_.end()) { notfn_timer_id_.erase(timer_iter); } else { - return UPPL_RC_ERR_AUDIT_FAILURE; + return UNC_UPPL_RC_ERR_AUDIT_FAILURE; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -365,9 +365,9 @@ pfc_bool_t IPCConnectionManager::IsControllerInAudit(string controller_name) { * @Description : This function is used for start the timer to receive * notification after audit end * @param[in] : controller_name of type string - * @return : UPPL_RC_SUCCESS if timer is started successfully for audit + * @return : UNC_RC_SUCCESS if timer is started successfully for audit * as well as for task queue else - * UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION if there is error while + * UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION if there is error while * creating task queue or timer for task queue **/ uint32_t IPCConnectionManager::StartNotificationTimer( @@ -382,10 +382,10 @@ uint32_t IPCConnectionManager::StartNotificationTimer( map :: iterator task_iter = queue_obj_.find(controller_name); if ((timer_iter != timer_obj_.end()) || (task_iter != queue_obj_.end())) { - pfc_log_warn("StartNotificationTimer::Timer object found for controller %s", - controller_name.c_str()); - UpplReturnCode cancel_ret = CancelTimer(controller_name); - if (cancel_ret != UPPL_RC_SUCCESS) { + pfc_log_warn("StartNotificationTimer::Timer object found " + "for controller %s", controller_name.c_str()); + UncRespCode cancel_ret = CancelTimer(controller_name); + if (cancel_ret != UNC_RC_SUCCESS) { pfc_log_error("StartNotificationTimer::Failure in cancelling " "timer for controller %s", controller_name.c_str()); } @@ -397,12 +397,13 @@ uint32_t IPCConnectionManager::StartNotificationTimer( TaskQueue *taskq = TaskQueue::create(no_tasks); if (taskq == NULL) { pfc_log_fatal("Error while creating task queue"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } tqmap_rc = queue_obj_.insert( std::pair(controller_name, taskq)); if (tqmap_rc.second == false) { - pfc_log_error("StartNotificationTimer - Error in inserting TaskQueue object"); + pfc_log_error("StartNotificationTimer - Error in " + "inserting TaskQueue object"); } AuditNotification func_obj; func_obj.controller_name_ = controller_name; @@ -414,7 +415,7 @@ uint32_t IPCConnectionManager::StartNotificationTimer( Timer *notfn_timer = pfc::core::Timer::create(taskq->getId()); if (notfn_timer == NULL) { pfc_log_fatal("Error while creating timer for the task queue"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } tmap_rc = timer_obj_.insert( std::pair(controller_name, notfn_timer)); @@ -423,7 +424,8 @@ uint32_t IPCConnectionManager::StartNotificationTimer( } uint32_t ret = notfn_timer->post(&timeout, timer_func, &time_out_id); if (ret != 0) { - pfc_log_error("StartNotificationTimer - Failure occurred in starting timer"); + pfc_log_error("StartNotificationTimer - Failure occurred in" + " starting timer"); } else { pfc_log_debug("Setting time_out_id %d, taskq id %d controller_name %s", time_out_id, taskq->getId(), controller_name.c_str()); @@ -436,13 +438,13 @@ uint32_t IPCConnectionManager::StartNotificationTimer( * @Description : This function is used to cancel the timer and * delete associated objects * @param[in] : controller_name of type string - * @return : UPPL_RC_SUCCESS - if timer object and task object - * are deleted successfully else UPPL_RC_ERR_AUDIT_FAILURE + * @return : UNC_RC_SUCCESS - if timer object and task object + * are deleted successfully else UNC_UPPL_RC_ERR_AUDIT_FAILURE * will be returned **/ -UpplReturnCode IPCConnectionManager::CancelTimer(string controller_name) { +UncRespCode IPCConnectionManager::CancelTimer(string controller_name) { pfc_log_debug("Executing CancelTimer()"); - UpplReturnCode ret = UPPL_RC_SUCCESS; + UncRespCode ret = UNC_RC_SUCCESS; uint32_t time_out_id = getTimeOutId(controller_name); map :: iterator timer_iter = timer_obj_.find(controller_name); diff --git a/coordinator/modules/uppl/ipc_server_handler.cc b/coordinator/modules/uppl/ipc_server_handler.cc index 1e44c2e5..3c993ee6 100644 --- a/coordinator/modules/uppl/ipc_server_handler.cc +++ b/coordinator/modules/uppl/ipc_server_handler.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -47,7 +47,7 @@ pfc_ipcresp_t IPCServerHandler::IpcService(ServerSession &session, pfc_ipcid_t service_id) { if (service_id > 2) { pfc_log_error("Fatal Error:Invalid service id"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } else { PhysicalLayer* physical_layer = PhysicalLayer::get_instance(); uint32_t err = physical_layer->get_physical_core()-> diff --git a/coordinator/modules/uppl/ipct_util.cc b/coordinator/modules/uppl/ipct_util.cc index 05dd3b61..ae556b62 100644 --- a/coordinator/modules/uppl/ipct_util.cc +++ b/coordinator/modules/uppl/ipct_util.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -354,7 +354,7 @@ string IpctUtil::get_string(const val_switch_st &val_st) { char ip_value[INET6_ADDRSTRLEN]; memset(&ip_value, '\0', INET6_ADDRSTRLEN); inet_ntop(AF_INET6, &v.ipv6_address.s6_addr, ip_value, INET6_ADDRSTRLEN); - ss << "KT_SWITCH:[VAL: " + ss << "KT_SWITCH:[VAL_SW_ST: " << "description:" << v.description << ", model:" << v.model << ", ip_address:" << ODBCMUtils::get_ip_string(v.ip_address.s_addr) @@ -373,6 +373,54 @@ string IpctUtil::get_string(const val_switch_st &val_st) { return ss.str(); } +/** get_string + * @Description : this function returns the values contained in the val_st + * structure + * @param[in] : val_st - structure variable of type val_switch_st + * @return : attributes in value structure of switch are returned + **/ +string IpctUtil::get_string(const val_switch_st_detail_t &val_stats) { + stringstream ss; + val_switch_st_t val_st = val_stats.switch_st_val; + val_switch_t v = val_st.switch_val; + stringstream valid; + for (unsigned int i = 0 ; i < 6 ; ++i) { + valid << PhyUtil::uint8tostr(v.valid[i]); + } + stringstream st_valid; + for (unsigned int i = 0 ; i < 6 ; ++i) { + st_valid << PhyUtil::uint8tostr(val_st.valid[i]); + } + stringstream stdet_valid; + for (unsigned int i = 0 ; i < 2 ; ++i) { + stdet_valid << PhyUtil::uint8tostr(val_stats.valid[i]); + } + /* A string of contiguous zero fields in the + preferred form can be shown as "::" */ + char ip_value[INET6_ADDRSTRLEN]; + memset(&ip_value, '\0', INET6_ADDRSTRLEN); + inet_ntop(AF_INET6, &v.ipv6_address.s6_addr, ip_value, INET6_ADDRSTRLEN); + ss << "KT_SWITCH:[VAL_SW_ST: " + << "description:" << v.description + << ", model:" << v.model + << ", ip_address:" << ODBCMUtils::get_ip_string(v.ip_address.s_addr) + << ", ipv6_address:" << ip_value + << ", admin_status:" << PhyUtil::uint8tostr(v.admin_status) + << ", DomainName:" << v.domain_name + << ", valid:" << valid.str() + << ", oper_status:" << PhyUtil::uint8tostr(val_st.oper_status) + << ", manufacturer:" << val_st.manufacturer + << ", hardware:" << val_st.hardware + << ", software:" << val_st.software + << ", alarms_status:" << PhyUtil::uint64tostr(val_st.alarms_status) + << ", st_valid:" << st_valid.str() << endl + << ", flow_count:" << val_stats.flow_count + << ", stdet_valid:" << stdet_valid.str() + << "]" + << endl; + return ss.str(); +} + /*** KT_PORT **********/ /** * @Description : This function returns the key names from @@ -411,7 +459,7 @@ string IpctUtil::get_string(const val_port_st_t &v) { v.mac_address[0], v.mac_address[1], v.mac_address[2], v.mac_address[3], v.mac_address[4], v.mac_address[5]); - ss << "KT_PORT:[VAL: " + ss << "KT_PORT:[VAL_PORT_ST: " << "port_number:" << v.port.port_number << ", description:" << v.port.description << ", admin_status:" << PhyUtil::uint8tostr(v.port.admin_status) @@ -431,6 +479,60 @@ string IpctUtil::get_string(const val_port_st_t &v) { return ss.str(); } +/** + * @Description : This function returns the values from the value structure + * @param[in] : v - structure variable of type val_port_t + * @return : attributes in value structure of val_port_t are returned + **/ +string IpctUtil::get_string(const val_port_stats_t &v) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0 ; i < 4; ++i) { + valid << PhyUtil::uint8tostr(v.port_st_val.port.valid[i]); + } + stringstream st_valid; + for (unsigned int i = 0; i < 8; ++i) { + st_valid << PhyUtil::uint8tostr(v.port_st_val.valid[i]); + } + stringstream stats_valid; + for (unsigned int i = 0; i < 13; ++i) { + stats_valid << PhyUtil::uint8tostr(v.valid[i]); + } + char macaddr[18]; + memset(&macaddr, '\0', 18); + snprintf(macaddr, sizeof(macaddr), "%02x%02x.%02x%02x.%02x%02x", + v.port_st_val.mac_address[0], v.port_st_val.mac_address[1], + v.port_st_val.mac_address[2], v.port_st_val.mac_address[3], + v.port_st_val.mac_address[4], v.port_st_val.mac_address[5]); + + ss << "KT_PORT:[VAL_PORT_STATS: " + << "port_number:" << v.port_st_val.port.port_number + << ", description:" << v.port_st_val.port.description + << ", admin_status:" << PhyUtil::uint8tostr + (v.port_st_val.port.admin_status) + << ", trunk_allowed_vlan:" << PhyUtil::uint8tostr + (v.port_st_val.port.trunk_allowed_vlan) + << ", valid:" << valid.str() + << ", oper_status:" << PhyUtil::uint8tostr(v.port_st_val.oper_status) + << ", mac_address:" << macaddr + << ", direction:" << PhyUtil::uint8tostr(v.port_st_val.direction) + << ", duplex:" << PhyUtil::uint8tostr(v.port_st_val.duplex) + << ", speed:" << PhyUtil::uint64tostr(v.port_st_val.speed) + << ", alarms_status:" << PhyUtil::uint64tostr(v.port_st_val.alarms_status) + << ", logical_port_id:" << v.port_st_val.logical_port_id + << ", st_valid:" << st_valid.str() << endl + << ", rx_packets:" << v.rx_packets << ", tx_packets:" << v.tx_packets + << ", rx_bytes:" << v.rx_bytes << ", tx_bytes:" << v.tx_bytes + << ", rx_dropped:" << v.rx_dropped << ", tx_dropped:" << v.tx_dropped + << ", rx_errors:" << v.rx_errors << ", tx_errors:" << v.tx_errors + << ", rx_frame_err:" << v.rx_frame_err << ", rx_over_err:" << v.rx_over_err + << ", rx_crc_err:" << v.rx_crc_err << ", collisions:" << v.collisions + << ", stats_valid:" << stats_valid.str() + << "]" + << endl; + return ss.str(); +} + /** * @Description : This function returns the values from the value structure * @param[in] : v - structure variable of type val_port_t @@ -727,3 +829,49 @@ string IpctUtil::get_string(const val_port_alarm_t &v) { << endl; return ss.str(); } + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_data_flow_t + * @return : attributes in value structure of val_df_data_flow_t are + * returned + **/ +string IpctUtil::get_string(const val_df_data_flow_t &val_obj) { + stringstream ss; + stringstream valid; + for (unsigned int i = 0; i < 2 ; ++i) { + valid << PhyUtil::uint8tostr(val_obj.valid[i]); + } + ss << "KT_CTR_DATAFLOW:[VAL: \n" + << " reason: " << val_obj.reason + << " controller_count: " << val_obj.controller_count + << "\n" + << " valid: " << valid.str() + << " ]" + << endl; + return ss.str(); +} + +/** + * @Description : This function returns the values from the value structure + * @param[in] : val_obj - structure variable of type val_df_data_flow_t + * @return : attributes in value structure of val_df_data_flow_t are + * returned + **/ +string IpctUtil::get_string(const val_df_data_flow_st_t &val_obj) { + stringstream ss; + stringstream valid_st; + for (unsigned int i = 0; i < 3 ; ++i) { + valid_st << PhyUtil::uint8tostr(val_obj.valid[i]); + } + ss << "KT_CTR_DATAFLOW:[VAL: \n" + << " packets: " << PhyUtil::uint64tostr(val_obj.packets) + << ", octets: " << PhyUtil::uint64tostr(val_obj.octets) + << ", duration: " << val_obj.duration + << "\n" + << " valid_st: " << valid_st.str() + << " ]" + << endl; + return ss.str(); +} + diff --git a/coordinator/modules/uppl/itc_audit_request.cc b/coordinator/modules/uppl/itc_audit_request.cc index 4d70aa92..f2c75f9d 100644 --- a/coordinator/modules/uppl/itc_audit_request.cc +++ b/coordinator/modules/uppl/itc_audit_request.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,6 +25,10 @@ #include "itc_kt_link.hh" #include "itc_kt_boundary.hh" #include "ipc_client_configuration_handler.hh" +#include "tclib_module.hh" + +using unc::tclib::TcLibModule; + namespace unc { namespace uppl { @@ -53,11 +57,11 @@ AuditRequest::~AuditRequest() { * @param[in] : driver_id - Specifies one of the following controller type, * PFC,VNP,Bypass * controller_id - controller name to which the audit to start - * @return : UPPL_RC_SUCCESS if the Audit is success for the controller - * or UPPL_RC_ERR_* + * @return : UNC_RC_SUCCESS if the Audit is success for the controller + * or UNC_UPPL_RC_ERR_* * */ -UpplReturnCode AuditRequest::StartAudit(OdbcmConnectionHandler *db_conn, +UncRespCode AuditRequest::StartAudit(OdbcmConnectionHandler *db_conn, unc_keytype_ctrtype_t driver_id, string controller_id) { pfc_log_info("Processing StartAudit"); @@ -74,10 +78,10 @@ UpplReturnCode AuditRequest::StartAudit(OdbcmConnectionHandler *db_conn, /* Checks controller existence and its oper status */ pfc_log_debug("Get controller oper Status"); val_ctr_st_t obj_val_ctr_st; - UpplReturnCode read_status = + UncRespCode read_status = KtObj.GetOperStatus(db_conn, UNC_DT_RUNNING, reinterpret_cast(&obj_key_ctr), oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { // Checking the audit precondition if (oper_status == UPPL_CONTROLLER_OPER_DOWN || oper_status == UPPL_CONTROLLER_OPER_UP || @@ -85,23 +89,26 @@ UpplReturnCode AuditRequest::StartAudit(OdbcmConnectionHandler *db_conn, obj_val_ctr_st.oper_status = UPPL_CONTROLLER_OPER_AUDITING; memset(obj_val_ctr_st.valid, '\0', sizeof(obj_val_ctr_st.valid)); obj_val_ctr_st.valid[kIdxOperStatus] = 1; - FN_START_TIME("Audit::HandleOperStatus", "Controller"); - UpplReturnCode handle_oper_status = KtObj.HandleOperStatus( + UncRespCode handle_oper_status = KtObj.HandleOperStatus( db_conn, UNC_DT_RUNNING, reinterpret_cast(&obj_key_ctr), reinterpret_cast(&obj_val_ctr_st), true); pfc_log_debug("Handle Oper Status return: %d", handle_oper_status); - FN_END_TIME("Audit::HandleOperStatus", "Controller"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } else { - // return UPPL_RC_ERR_AUDIT_FAILURE; + // return UNC_UPPL_RC_ERR_AUDIT_FAILURE; } } else { pfc_log_error("Unable to get controller oper status"); - return UPPL_RC_ERR_AUDIT_FAILURE; + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_id.c_str(), + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_AUDIT_FAILURE; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**StartAuditTransaction @@ -111,15 +118,15 @@ UpplReturnCode AuditRequest::StartAudit(OdbcmConnectionHandler *db_conn, * driver_id - Specifies one of the following controller type- * PFC,VNP,Bypass * controller_id - controller name in which the audit to start - * @return : UPPL_RC_SUCCESS if the AuditTransaction is success for the - * controller or UPPL_RC_ERR_* for audit transaction failure + * @return : UNC_RC_SUCCESS if the AuditTransaction is success for the + * controller or UNC_UPPL_RC_ERR_* for audit transaction failure * */ -UpplReturnCode AuditRequest::StartAuditTransaction( +UncRespCode AuditRequest::StartAuditTransaction( uint32_t session_id, unc_keytype_ctrtype_t driver_id, string controller_id) { pfc_log_info("Returning success for StartAuditTransaction"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**HandleAuditVoteRequest @@ -131,10 +138,10 @@ UpplReturnCode AuditRequest::StartAuditTransaction( * PFC,VNP,Bypass * controller_id - controller name in which the audit occurs * @param[out] : driver_info - contains the controller list - * @return : UPPL_RC_SUCCESS if the AuditVoteRequest is success or - * UPPL_RC_ERR_* if AuditVoteRequest is failed. + * @return : UNC_RC_SUCCESS if the AuditVoteRequest is success or + * UNC_UPPL_RC_ERR_* if AuditVoteRequest is failed. * */ -UpplReturnCode AuditRequest::HandleAuditVoteRequest( +UncRespCode AuditRequest::HandleAuditVoteRequest( OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t driver_id, @@ -153,14 +160,19 @@ UpplReturnCode AuditRequest::HandleAuditVoteRequest( controller_id.length()+1); vector vect_ctr_key, vect_ctr_val; vect_ctr_key.push_back(reinterpret_cast(&obj_key_ctr)); - UpplReturnCode read_status = KtObj.ReadInternal( + UncRespCode read_status = KtObj.ReadInternal( db_conn, vect_ctr_key, vect_ctr_val, (unc_keytype_datatype_t)UNC_DT_RUNNING, UNC_OP_READ); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_error("Could not get details for controller %s", controller_id.c_str()); - return UPPL_RC_ERR_AUDIT_FAILURE; + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_id.c_str(), + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_AUDIT_FAILURE; } pfc_log_debug("Read operation is success"); val_ctr_st_t *obj_val_ctr = @@ -190,7 +202,7 @@ UpplReturnCode AuditRequest::HandleAuditVoteRequest( delete obj_val_ctr; obj_val_ctr = NULL; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**HandleAuditGlobalCommit @@ -202,11 +214,11 @@ UpplReturnCode AuditRequest::HandleAuditVoteRequest( * controller_id - controller name in which the audit occurs * driver_info - contains the controller list * @param[out] : audit result - specifies the TC audit result - * @return : UPPL_RC_SUCCESS if the AuditGlobalCommit is success for the - * controller or UPPL_RC_ERR_* for the failure + * @return : UNC_RC_SUCCESS if the AuditGlobalCommit is success for the + * controller or UNC_UPPL_RC_ERR_* for the failure * */ -UpplReturnCode AuditRequest::HandleAuditGlobalCommit( +UncRespCode AuditRequest::HandleAuditGlobalCommit( uint32_t session_id, uint32_t driver_id, string controller_id, @@ -214,7 +226,7 @@ UpplReturnCode AuditRequest::HandleAuditGlobalCommit( TcAuditResult& audit_result) { pfc_log_info("Returing Success for HandleAuditGlobalCommit"); audit_result = unc::tclib::TC_AUDIT_SUCCESS; - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } @@ -226,17 +238,17 @@ UpplReturnCode AuditRequest::HandleAuditGlobalCommit( * PFC,VNP,Bypass * controller_id - controller name in which the audit occurs * operation_phase - - * @return : UPPL_RC_SUCCESS if the AuditGlobalAbort is success for the - * controller or UPPL_RC_ERR_* for the failure + * @return : UNC_RC_SUCCESS if the AuditGlobalAbort is success for the + * controller or UNC_UPPL_RC_ERR_* for the failure * */ -UpplReturnCode AuditRequest::HandleAuditAbort( +UncRespCode AuditRequest::HandleAuditAbort( uint32_t session_id, unc_keytype_ctrtype_t driver_id, string controller_id, TcAuditOpAbortPhase operation_phase) { pfc_log_info("Returing success for HandleAuditAbort"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**EndAuditTransaction @@ -245,15 +257,15 @@ UpplReturnCode AuditRequest::HandleAuditAbort( * driver_id - Specifies one of the following controller type- * PFC,VNP,Bypass * controller_id - controller name in which the audit occurs - * @return : UPPL_RC_SUCCESS if the EndAuditTransaction is success for the - * controller or UPPL_RC_ERR_* for the failure + * @return : UNC_RC_SUCCESS if the EndAuditTransaction is success for the + * controller or UNC_UPPL_RC_ERR_* for the failure * */ -UpplReturnCode AuditRequest::EndAuditTransaction( +UncRespCode AuditRequest::EndAuditTransaction( uint32_t session_id, unc_keytype_ctrtype_t& drivertype, string controller_id) { pfc_log_info("Returning success for EndAuditTransaction"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**EndAudit @@ -263,10 +275,10 @@ UpplReturnCode AuditRequest::EndAuditTransaction( * PFC,VNP,Bypass * controller_id - controller name in which the audit occurs * audit result - specifies the TC audit result - * @return : UPPL_RC_SUCCESS if the End Audit is success for the controller - * or returns UPPL_RC_ERR_ if the Audit is failed + * @return : UNC_RC_SUCCESS if the End Audit is success for the controller + * or returns UNC_UPPL_RC_ERR_ if the Audit is failed * */ -UpplReturnCode AuditRequest::EndAudit(OdbcmConnectionHandler *db_conn, +UncRespCode AuditRequest::EndAudit(OdbcmConnectionHandler *db_conn, unc_keytype_ctrtype_t driver_id, string controller_id, TcAuditResult audit_result) { @@ -286,14 +298,12 @@ UpplReturnCode AuditRequest::EndAudit(OdbcmConnectionHandler *db_conn, obj_val_ctr_st.oper_status = oper_status; memset(obj_val_ctr_st.valid, '\0', sizeof(obj_val_ctr_st.valid)); obj_val_ctr_st.valid[kIdxOperStatus] = 1; - FN_START_TIME("Audit::HandleOperStatus", "Controller"); - UpplReturnCode handle_oper_status = kt_controller.HandleOperStatus( + UncRespCode handle_oper_status = kt_controller.HandleOperStatus( db_conn, UNC_DT_RUNNING, key_ctr_prt, reinterpret_cast(&obj_val_ctr_st), true); pfc_log_debug("Handle Oper Status return: %d", handle_oper_status); - FN_END_TIME("Audit::HandleOperStatus", "Controller"); // Add the controller to controller_in_audit vector IPCConnectionManager *ipc_mgr = PhysicalLayer::get_instance()-> get_ipc_connection_manager(); @@ -313,25 +323,25 @@ UpplReturnCode AuditRequest::EndAudit(OdbcmConnectionHandler *db_conn, obj_val_ctr_st.oper_status = oper_status; memset(obj_val_ctr_st.valid, '\0', sizeof(obj_val_ctr_st.valid)); obj_val_ctr_st.valid[kIdxOperStatus] = 1; - UpplReturnCode handle_oper_status = kt_controller.HandleOperStatus( + UncRespCode handle_oper_status = kt_controller.HandleOperStatus( db_conn, UNC_DT_RUNNING, key_ctr_prt, reinterpret_cast(&obj_val_ctr_st), true); pfc_log_debug("Handle Oper Status return: %d", handle_oper_status); } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**MergeAuditDbToRunning * @Description : This function is used to Merge audit and running db at * end Audit and clear the import db. * @param[in] : controller name - controller name in which the audit occurs - * @return : UPPL_RC_SUCCESS if the updation of running DB with the - * imported value is success or UPPL_RC_ERR_* for failure of + * @return : UNC_RC_SUCCESS if the updation of running DB with the + * imported value is success or UNC_UPPL_RC_ERR_* for failure of * merging * */ -UpplReturnCode AuditRequest::MergeAuditDbToRunning( +UncRespCode AuditRequest::MergeAuditDbToRunning( OdbcmConnectionHandler *db_conn, string controller_name) { pfc_log_info("MergeAuditDbToRunning-controller_name: %s", @@ -339,13 +349,13 @@ UpplReturnCode AuditRequest::MergeAuditDbToRunning( // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock(PhysicalLayer::get_events_done_lock_(), PFC_TRUE); // write lock - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; // Remove the controller_name from controller_in_audit list return_code = PhysicalLayer::get_instance()->get_ipc_connection_manager()-> removeControllerFromAuditList(controller_name); - if (return_code != UPPL_RC_SUCCESS) { + if (return_code != UNC_RC_SUCCESS) { // Not required to do merge, return SUCCESS - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } for (unsigned int index = 0; index < STATE_OBJECTS; ++index) { @@ -364,20 +374,20 @@ UpplReturnCode AuditRequest::MergeAuditDbToRunning( key_import.push_back(key_struct); vector val_running, val_import; pfc_log_debug("Reading from running db for index %d", index); - UpplReturnCode read_running_status = class_pointer->ReadInternal( + UncRespCode read_running_status = class_pointer->ReadInternal( db_conn, key_running, val_running, (uint32_t) UNC_DT_RUNNING, (uint32_t) UNC_OP_READ_SIBLING_BEGIN); // Read from Import DB pfc_log_debug("Reading from import db for index %d", index); - UpplReturnCode read_import_status = class_pointer->ReadInternal( + UncRespCode read_import_status = class_pointer->ReadInternal( db_conn, key_import, val_import, (uint32_t) UNC_DT_IMPORT, (uint32_t) UNC_OP_READ_SIBLING_BEGIN); - if (read_running_status != UPPL_RC_SUCCESS && - read_import_status != UPPL_RC_SUCCESS) { + if (read_running_status != UNC_RC_SUCCESS && + read_import_status != UNC_RC_SUCCESS) { pfc_log_debug( "Reading values from both import and running db failed for index %d", index); @@ -387,10 +397,10 @@ UpplReturnCode AuditRequest::MergeAuditDbToRunning( } continue; } - pfc_log_debug("No.of entries from running db %d", - static_cast(key_running.size())); - pfc_log_debug("No.of entries from import db %d", - static_cast(key_import.size())); + pfc_log_debug("No.of entries from running db %" + PFC_PFMT_SIZE_T, key_running.size()); + pfc_log_debug("No.of entries from import db %" + PFC_PFMT_SIZE_T, key_import.size()); // Iterate RUNNING and compare with IMPORT // Update Running if values mismatch with Import // Delete entries from Running if not found in Import @@ -633,9 +643,9 @@ void AuditNotification::operator() () { pfc_log_debug("Received Audit Notification timer out controller %s", controller_name_.c_str()); AuditRequest audit_req; - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); } else { audit_req.MergeAuditDbToRunning(&db_conn, controller_name_); @@ -687,19 +697,19 @@ void AuditRequest::UpdateRunningDbWithImportDb( // Update running db with import value pfc_log_debug("Update running db with import db value"); void *old_val_struct = NULL; - UpplReturnCode update_status = class_pointer-> + UncRespCode update_status = class_pointer-> UpdateKeyInstance( db_conn, reinterpret_cast(key_running[iIndex]), reinterpret_cast(val_import[jIndex]), (uint32_t)UNC_DT_STATE, key_type, old_val_struct); - if (update_status != UPPL_RC_SUCCESS) { + if (update_status != UNC_RC_SUCCESS) { pfc_log_error("Update failed for existing key"); continue; } // Send value change notification to north bound - val_st - UpplReturnCode notfn_status = + UncRespCode notfn_status = class_pointer->ConfigurationChangeNotification( (uint32_t)UNC_DT_STATE, key_type, @@ -707,11 +717,11 @@ void AuditRequest::UpdateRunningDbWithImportDb( reinterpret_cast(key_running[iIndex]), reinterpret_cast(val_running[iIndex]), reinterpret_cast(val_import[jIndex])); - if (notfn_status != UPPL_RC_SUCCESS) { + if (notfn_status != UNC_RC_SUCCESS) { pfc_log_error("Failed sending update notification"); } // Old value structure memory clean up - if(old_val_struct != NULL) { + if (old_val_struct != NULL) { class_pointer->ClearValueStructure(key_type, old_val_struct); old_val_struct = NULL; @@ -721,15 +731,15 @@ void AuditRequest::UpdateRunningDbWithImportDb( if (present_in_import == false) { // Delete instance from running db pfc_log_debug("Delete existing entries from running db"); - UpplReturnCode delete_status = class_pointer->DeleteKeyInstance( + UncRespCode delete_status = class_pointer->DeleteKeyInstance( db_conn, reinterpret_cast(key_running[iIndex]), (uint32_t)UNC_DT_STATE, key_type); - if (delete_status != UPPL_RC_SUCCESS) { + if (delete_status != UNC_RC_SUCCESS) { pfc_log_error("Delete failed for existing key"); } // Send value change notification to north bound - val_st - UpplReturnCode notfn_status = + UncRespCode notfn_status = class_pointer->ConfigurationChangeNotification( (uint32_t)UNC_DT_STATE, key_type, @@ -737,7 +747,7 @@ void AuditRequest::UpdateRunningDbWithImportDb( reinterpret_cast(key_running[iIndex]), NULL, NULL); - if (notfn_status != UPPL_RC_SUCCESS) { + if (notfn_status != UNC_RC_SUCCESS) { pfc_log_error("Failed sending delete notification"); } } @@ -778,9 +788,9 @@ void AuditRequest::AddToRunningDbFromImportDb( continue; } // Create instance in running db - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; // Validate key - UpplReturnCode validate_status = UPPL_RC_SUCCESS; + UncRespCode validate_status = UNC_RC_SUCCESS; if (index == Notfn_Logical_Member_Port) { validate_status = class_pointer->ValidateRequest( db_conn, @@ -794,7 +804,7 @@ void AuditRequest::AddToRunningDbFromImportDb( reinterpret_cast(val_import[iIndex]), UNC_OP_CREATE, UNC_DT_STATE, key_type); } - if (validate_status != UPPL_RC_SUCCESS) { + if (validate_status != UNC_RC_SUCCESS) { pfc_log_info("Validation failed for index %d", index); continue; } @@ -812,9 +822,9 @@ void AuditRequest::AddToRunningDbFromImportDb( (uint32_t)UNC_DT_STATE, key_type); } - if (create_status == UPPL_RC_SUCCESS) { + if (create_status == UNC_RC_SUCCESS) { // Send value change notification to north bound - val_st - UpplReturnCode notfn_status = UPPL_RC_SUCCESS; + UncRespCode notfn_status = UNC_RC_SUCCESS; if (index == Notfn_Logical_Member_Port) { notfn_status = class_pointer->ConfigurationChangeNotification( @@ -834,7 +844,7 @@ void AuditRequest::AddToRunningDbFromImportDb( NULL, reinterpret_cast(val_import[iIndex])); } - if (notfn_status != UPPL_RC_SUCCESS) { + if (notfn_status != UNC_RC_SUCCESS) { pfc_log_error("Failed sending create notification"); } } else { diff --git a/coordinator/modules/uppl/itc_configuration_request.cc b/coordinator/modules/uppl/itc_configuration_request.cc index 77156c2a..210b4990 100644 --- a/coordinator/modules/uppl/itc_configuration_request.cc +++ b/coordinator/modules/uppl/itc_configuration_request.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -61,22 +61,29 @@ ConfigurationRequest::~ConfigurationRequest() { * process the configuration request received from north bound * @param[in] : session - Object of ServerSession where the request * argument present - * @return : UPPL_RC_SUCCESS is returned when the response is added to + * @return : UNC_RC_SUCCESS is returned when the response is added to * ipc session successfully otherwise Common error code is * returned when ipc response could not be added to session. * */ -UpplReturnCode ConfigurationRequest::ProcessReq( +UncRespCode ConfigurationRequest::ProcessReq( ServerSession &session, physical_request_header &obj_req_hdr) { + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + PhysicalCore* physical_core = physical_layer->get_physical_core(); + if (physical_core->system_transit_state_ == true) { + pfc_log_error("UNC is in state transit mode "); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + Kt_Base *KtObj = NULL; - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteNb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_fatal("DB Connection failure for operation %d", obj_req_hdr.operation); return db_ret; } - UpplReturnCode return_code = UPPL_RC_SUCCESS, resp_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS, resp_code = UNC_RC_SUCCESS; void* key_struct = NULL; void* val_struct = NULL; @@ -86,7 +93,7 @@ UpplReturnCode ConfigurationRequest::ProcessReq( resp_code = ValidateReq(&db_conn, session, obj_req_hdr, key_struct, val_struct, KtObj); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { // validation failed call add output // return the actual response pfc_log_error("Config validation failed %d", resp_code); @@ -99,9 +106,9 @@ UpplReturnCode ConfigurationRequest::ProcessReq( KtObj = NULL; } if (err != 0) { - return_code = UPPL_RC_ERR_IPC_WRITE_ERROR; + return_code = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - return_code = UPPL_RC_SUCCESS; + return_code = UNC_RC_SUCCESS; } return return_code; } @@ -141,7 +148,7 @@ UpplReturnCode ConfigurationRequest::ProcessReq( // Already handled break; } - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { // validation failed call add out put // return the actual response pfc_log_error("Config validation failed"); @@ -150,18 +157,18 @@ UpplReturnCode ConfigurationRequest::ProcessReq( err |= KtObj->AddKeyStructuretoSession(obj_req_hdr.key_type, &session, key_struct); if (err == 0) { - resp_code = UPPL_RC_SUCCESS; + resp_code = UNC_RC_SUCCESS; } else { - resp_code = UPPL_RC_ERR_IPC_WRITE_ERROR; + resp_code = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } if (KtObj != NULL) { delete KtObj; KtObj = NULL; } - if (resp_code == UPPL_RC_ERR_IPC_WRITE_ERROR) { + if (resp_code == UNC_UPPL_RC_ERR_IPC_WRITE_ERROR) { // It's a common error code - return_code = UPPL_RC_ERR_IPC_WRITE_ERROR; + return_code = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } pfc_log_debug("Returning %d from config request handler", return_code); return return_code; @@ -176,16 +183,16 @@ UpplReturnCode ConfigurationRequest::ProcessReq( * obj_req_hdr - object of physical request header * KtObj - Object of the base class to invoke appropriate * kt class - * @return : UPPL_RC_SUCCESS if validation is successful - * or UPPL_RC_ERR_* if validation is failed + * @return : UNC_RC_SUCCESS if validation is successful + * or UNC_UPPL_RC_ERR_* if validation is failed * */ -UpplReturnCode ConfigurationRequest::ValidateReq( +UncRespCode ConfigurationRequest::ValidateReq( OdbcmConnectionHandler *db_conn, ServerSession &session, physical_request_header obj_req_hdr, void* &key_struct, void* &val_struct, Kt_Base* &KtObj) { - UpplReturnCode return_code = UPPL_RC_SUCCESS, resp_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS, resp_code = UNC_RC_SUCCESS; physical_response_header rsh; PhyUtil::getRespHeaderFromReqHeader(obj_req_hdr, rsh); uint32_t key_type = obj_req_hdr.key_type; @@ -196,13 +203,21 @@ UpplReturnCode ConfigurationRequest::ValidateReq( KtObj = new Kt_Root(); if (KtObj == NULL) { pfc_log_error("Resource allocation error"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } // The root key in request is not considered key_struct = static_cast (&key_root_obj); val_struct = NULL; break; } + case UNC_KT_DATAFLOW: + { if (obj_req_hdr.operation != UNC_OP_READ) { + pfc_log_error("Config operations not allowed for KtDataflow"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + break; + } + case UNC_KT_CONTROLLER: { resp_code = ValidateController(db_conn, session, @@ -210,13 +225,20 @@ UpplReturnCode ConfigurationRequest::ValidateReq( obj_req_hdr.operation, key_struct, val_struct); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { return resp_code; } KtObj = new Kt_Controller(); if (KtObj == NULL) { pfc_log_error("Resource allocation error"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } + break; + } + case UNC_KT_CTR_DATAFLOW: + { if (obj_req_hdr.operation != UNC_OP_READ) { + pfc_log_error("Config operations not allowed for KtCtrDataflow"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } break; } @@ -227,13 +249,13 @@ UpplReturnCode ConfigurationRequest::ValidateReq( obj_req_hdr.operation, key_struct, val_struct); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { return resp_code; } KtObj = new Kt_Ctr_Domain(); if (KtObj == NULL) { pfc_log_error("Resource allocation error"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } break; } @@ -244,13 +266,13 @@ UpplReturnCode ConfigurationRequest::ValidateReq( obj_req_hdr.operation, key_struct, val_struct); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { return resp_code; } KtObj = new Kt_Boundary(); if (KtObj == NULL) { pfc_log_error("Resource allocation error"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } break; } @@ -261,12 +283,12 @@ UpplReturnCode ConfigurationRequest::ValidateReq( case UNC_KT_LINK: { pfc_log_error("Operation not allowed"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } default: { pfc_log_error("Key type not supported"); - return UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; } } @@ -284,10 +306,10 @@ UpplReturnCode ConfigurationRequest::ValidateReq( break; } default: - resp_code = UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + resp_code = UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; break; } - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { // validation failed call add output // return the actual response pfc_log_error("Config validation failed"); @@ -307,22 +329,22 @@ UpplReturnCode ConfigurationRequest::ValidateReq( * operation - contains UNC_OP_CREATE or UNC_OP_UPDATE * key struct - specifies key instance of KT_Controller * value struct - specifies value structure of KT_CONTROLLER - * @return : UPPL_RC_SUCCESS if scalability number is within range - * or UPPL_RC_ERR_* if not + * @return : UNC_RC_SUCCESS if scalability number is within range + * or UNC_UPPL_RC_ERR_* if not * * */ -UpplReturnCode ConfigurationRequest::ValidateController( +UncRespCode ConfigurationRequest::ValidateController( OdbcmConnectionHandler *db_conn, ServerSession &session, uint32_t data_type, uint32_t operation, void* &key_struct, void* &val_struct) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); if (data_type != UNC_DT_CANDIDATE) { pfc_log_info("Operation not allowed in given data type %d", data_type); - resp_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + resp_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return resp_code; } // populate key_ctr structure @@ -339,16 +361,16 @@ UpplReturnCode ConfigurationRequest::ValidateController( } if (err != 0) { pfc_log_error("Not able to read val_ctr_obj, err is %d", err); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } if (operation != UNC_OP_CREATE) { pfc_log_debug("Validation not required for other than create"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (val_ctr_obj.type != UNC_CT_PFC) { pfc_log_debug( "Capability validation not done for non-PFC controller"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // controller capability check string version = reinterpret_cast (val_ctr_obj.version); @@ -356,7 +378,7 @@ UpplReturnCode ConfigurationRequest::ValidateController( resp_code = physical_layer->get_physical_core()-> ValidateKeyTypeInCtrlrCap(version, (uint32_t)UNC_KT_CONTROLLER); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { pfc_log_error("Key type validation failed in capability check"); return resp_code; } @@ -364,7 +386,7 @@ UpplReturnCode ConfigurationRequest::ValidateController( Kt_Controller KtObj; resp_code = KtObj.ValidateCtrlrValueCapability(version, (uint32_t)UNC_KT_CONTROLLER); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { pfc_log_error("Attribute validation failure"); return resp_code; } @@ -374,11 +396,11 @@ UpplReturnCode ConfigurationRequest::ValidateController( db_conn, version, (uint32_t)UNC_KT_CONTROLLER, data_type); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { pfc_log_error("scalability range exceeded"); return resp_code; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /* ValidateDomain @@ -390,21 +412,21 @@ UpplReturnCode ConfigurationRequest::ValidateController( * operation - contains UNC_OP_CREATE or UNC_OP_UPDATE * key struct - specifies key instance of KT_Domain * value struct - specifies value structure of KT_Domain - * @return : UPPL_RC_SUCCESS if the validation is success - * or UPPL_RC_ERR_* if validation is failed + * @return : UNC_RC_SUCCESS if the validation is success + * or UNC_UPPL_RC_ERR_* if validation is failed * */ -UpplReturnCode ConfigurationRequest::ValidateDomain( +UncRespCode ConfigurationRequest::ValidateDomain( OdbcmConnectionHandler *db_conn, ServerSession &session, uint32_t data_type, uint32_t operation, void* &key_struct, void* &val_struct) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS; if (data_type != UNC_DT_CANDIDATE) { pfc_log_info("Operation not allowed in given data type %d", data_type); - resp_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + resp_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return resp_code; } // populate key_domain_obj structure @@ -421,9 +443,9 @@ UpplReturnCode ConfigurationRequest::ValidateDomain( } if (err != 0) { pfc_log_error("Not able to read val_domain_obj, err is %d", err); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /* ValidateBoundary @@ -435,28 +457,28 @@ UpplReturnCode ConfigurationRequest::ValidateDomain( * operation - contains UNC_OP_CREATE or UNC_OP_UPDATE * key struct - specifies key instance of KT_Boundary * value struct - specifies value structure of KT_Boundary - * @return : UPPL_RC_SUCCESS if the validation is success - * or UPPL_RC_ERR_* if validation is failed + * @return : UNC_RC_SUCCESS if the validation is success + * or UNC_UPPL_RC_ERR_* if validation is failed * */ -UpplReturnCode ConfigurationRequest::ValidateBoundary( +UncRespCode ConfigurationRequest::ValidateBoundary( OdbcmConnectionHandler *db_conn, ServerSession &session, uint32_t data_type, uint32_t operation, void* &key_struct, void* &val_struct) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS; if (data_type != UNC_DT_CANDIDATE) { pfc_log_info("Operation not allowed in given data type %d", data_type); - resp_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + resp_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return resp_code; } // populate key_boundary_obj structure int err = session.getArgument(8, key_boundary_obj); if (err != 0) { pfc_log_error("Not able to read key_boundary_obj, err is %d", err); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } key_struct = static_cast (&key_boundary_obj); pfc_log_debug("%s", IpctUtil::get_string(key_boundary_obj).c_str()); @@ -470,7 +492,7 @@ UpplReturnCode ConfigurationRequest::ValidateBoundary( } if (err != 0) { pfc_log_error("Not able to read val_boundary_obj, err is %d", err); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } diff --git a/coordinator/modules/uppl/itc_db_config.cc b/coordinator/modules/uppl/itc_db_config.cc index 5e393c34..19d32c73 100644 --- a/coordinator/modules/uppl/itc_db_config.cc +++ b/coordinator/modules/uppl/itc_db_config.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -40,14 +40,14 @@ DBConfigurationRequest::~DBConfigurationRequest() { * DB and from Candidate to running DB and * clears State DB entries * @param[in] : None - * @Return : UPPL_RC_SUCCESS if Load and Commit Startup is successful - * or UPPL_RC_ERR_* if failure occurs + * @Return : UNC_RC_SUCCESS if Load and Commit Startup is successful + * or UNC_UPPL_RC_ERR_* if failure occurs * */ -UpplReturnCode DBConfigurationRequest::LoadAndCommitStartup( +UncRespCode DBConfigurationRequest::LoadAndCommitStartup( OdbcmConnectionHandler *db_conn) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); ODBCM_RC_STATUS copy_db_status = ODBCM_RC_SUCCESS; - UpplReturnCode result_code = UPPL_RC_SUCCESS; + UncRespCode result_code = UNC_RC_SUCCESS; /* copy StartUp to Candidate */ copy_db_status = physical_layer->get_odbc_manager()-> CopyDatabase(UNC_DT_STARTUP, UNC_DT_CANDIDATE, db_conn); @@ -55,13 +55,13 @@ UpplReturnCode DBConfigurationRequest::LoadAndCommitStartup( if (copy_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - result_code = UPPL_RC_ERR_DB_ACCESS; + result_code = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon string log_msg = string("LoadAndCommitStartup:")+ "Copying the StartUp to Candidate database failed"; pfc_log_error(log_msg.c_str()); - result_code = UPPL_RC_ERR_COPY_STARTUP_TO_CANDID; + result_code = UNC_UPPL_RC_ERR_COPY_STARTUP_TO_CANDID; } return result_code; } @@ -71,14 +71,14 @@ UpplReturnCode DBConfigurationRequest::LoadAndCommitStartup( ClearDatabase(UNC_DT_RUNNING, db_conn); if (clear_status != ODBCM_RC_SUCCESS) { pfc_log_info("Running DB clearing failed"); - result_code = UPPL_RC_ERR_CLEAR_DB; + result_code = UNC_UPPL_RC_ERR_CLEAR_DB; } // Clear Import Database entries clear_status = PhysicalLayer::get_instance()->get_odbc_manager()-> ClearDatabase(UNC_DT_IMPORT, db_conn); if (clear_status != ODBCM_RC_SUCCESS) { pfc_log_info("Import DB clearing failed"); - result_code = UPPL_RC_ERR_CLEAR_DB; + result_code = UNC_UPPL_RC_ERR_CLEAR_DB; } /* copy Candidate to Running */ copy_db_status = physical_layer->get_odbc_manager()-> @@ -89,13 +89,13 @@ UpplReturnCode DBConfigurationRequest::LoadAndCommitStartup( string log_msg = string("LoadAndCommitStartup:")+ "DB connection not available or cannot access DB"; pfc_log_fatal(log_msg.c_str()); - result_code = UPPL_RC_ERR_DB_ACCESS; + result_code = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon string log_msg = string("LoadAndCommitStartup:")+ "copying the Candidate to Running database failed"; pfc_log_error(log_msg.c_str()); - result_code = UPPL_RC_ERR_COPY_CANDID_TO_RUNNING; + result_code = UNC_UPPL_RC_ERR_COPY_CANDID_TO_RUNNING; } return result_code; } @@ -105,7 +105,7 @@ UpplReturnCode DBConfigurationRequest::LoadAndCommitStartup( ClearDatabase(UNC_DT_STATE, db_conn); if (clear_status != ODBCM_RC_SUCCESS) { pfc_log_info("State DB clearing failed"); - result_code = UPPL_RC_ERR_CLEAR_DB; + result_code = UNC_UPPL_RC_ERR_CLEAR_DB; } return result_code; } @@ -113,13 +113,13 @@ UpplReturnCode DBConfigurationRequest::LoadAndCommitStartup( /**ClearStartUpDb() * @Description : This function clears the content of Startup Database * @param[in] : None - * @Return : UPPL_RC_SUCCESS if Clearing the startup DB is successful - * or UPPL_RC_ERR_* in case of failure + * @Return : UNC_RC_SUCCESS if Clearing the startup DB is successful + * or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode DBConfigurationRequest::ClearStartUpDb( +UncRespCode DBConfigurationRequest::ClearStartUpDb( OdbcmConnectionHandler *db_conn) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode result_code = UPPL_RC_SUCCESS; + UncRespCode result_code = UNC_RC_SUCCESS; ODBCM_RC_STATUS clear_db_status; /* clear the StartUp db */ clear_db_status = physical_layer->get_odbc_manager()-> @@ -128,11 +128,11 @@ UpplReturnCode DBConfigurationRequest::ClearStartUpDb( if (clear_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - result_code = UPPL_RC_ERR_DB_ACCESS; + result_code = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon pfc_log_error("ClearStartUpDb:Clearing the StartUp database failed"); - result_code = UPPL_RC_ERR_CLEAR_DB; + result_code = UNC_UPPL_RC_ERR_CLEAR_DB; } } return result_code; @@ -142,23 +142,23 @@ UpplReturnCode DBConfigurationRequest::ClearStartUpDb( * @Description : This function modified controller to logical and rollbacks * the uncommitted transaction from the candidate database. * @param[in] : None - * @Return : UPPL_RC_SUCCESS if AbortCandidate database is successful - * or UPPL_RC_ERR_* in case of failure + * @Return : UNC_RC_SUCCESS if AbortCandidate database is successful + * or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode DBConfigurationRequest::AbortCandidateDb( +UncRespCode DBConfigurationRequest::AbortCandidateDb( OdbcmConnectionHandler *db_conn) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode result_code = UPPL_RC_SUCCESS; + UncRespCode result_code = UNC_RC_SUCCESS; result_code = SendDeletedControllerToLogical(db_conn); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { return result_code; } result_code = SendCreatedControllerToLogical(db_conn); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { return result_code; } result_code = SendUpdatedControllerToLogical(db_conn); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { return result_code; } /* copy running database to candidate database */ @@ -168,15 +168,15 @@ UpplReturnCode DBConfigurationRequest::AbortCandidateDb( if (copy_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - result_code = UPPL_RC_ERR_DB_ACCESS; + result_code = UNC_UPPL_RC_ERR_DB_ACCESS; } else { /* log error to log daemon */ pfc_log_error("copy running to candidate database failed"); - result_code = UPPL_RC_ERR_COPY_RUNNING_TO_CANDID; + result_code = UNC_UPPL_RC_ERR_COPY_RUNNING_TO_CANDID; } } result_code = SendAppliedControllerToLogical(db_conn); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { return result_code; } return result_code; @@ -186,13 +186,13 @@ UpplReturnCode DBConfigurationRequest::AbortCandidateDb( * @Description : This function send request to ODBCManager to sync running * with StartUp configuration * @param[in] : None - * @Return : UPPL_RC_SUCCESS if saving running to startup database is - * successful or UPPL_RC_ERR_* in case of failure + * @Return : UNC_RC_SUCCESS if saving running to startup database is + * successful or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode DBConfigurationRequest::SaveRunningToStartUp( +UncRespCode DBConfigurationRequest::SaveRunningToStartUp( OdbcmConnectionHandler *db_conn) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode result_code = UPPL_RC_SUCCESS; + UncRespCode result_code = UNC_RC_SUCCESS; ODBCM_RC_STATUS copy_db_status; /* Copy running database to StartUp database */ @@ -202,11 +202,11 @@ UpplReturnCode DBConfigurationRequest::SaveRunningToStartUp( if (copy_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - result_code = UPPL_RC_ERR_DB_ACCESS; + result_code = UNC_UPPL_RC_ERR_DB_ACCESS; } else { /* log error to log manager */ pfc_log_error("copy running database to StartUp database failed"); - result_code = UPPL_RC_ERR_COPY_RUNNING_TO_START; + result_code = UNC_UPPL_RC_ERR_COPY_RUNNING_TO_START; } } return result_code; @@ -216,20 +216,20 @@ UpplReturnCode DBConfigurationRequest::SaveRunningToStartUp( * @Description : This function send the deleted controller to logical * during abort candidate db/ abort transaction * @param[in] : None - * @Return : UPPL_RC_SUCCESS if sending the controller information to - * logical is successful or UPPL_RC_ERR_* in case of failure + * @Return : UNC_RC_SUCCESS if sending the controller information to + * logical is successful or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode DBConfigurationRequest::SendDeletedControllerToLogical( +UncRespCode DBConfigurationRequest::SendDeletedControllerToLogical( OdbcmConnectionHandler *db_conn) { Kt_Controller kt_ctr; vector vec_key_ctr_modified; // Getting the created Configuration from the database - UpplReturnCode result_code = kt_ctr.GetModifiedRows( + UncRespCode result_code = kt_ctr.GetModifiedRows( db_conn, vec_key_ctr_modified, CREATED); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { // No created controller available - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } for (uint32_t config_count = 0; config_count != vec_key_ctr_modified.size(); config_count++) { @@ -247,32 +247,32 @@ UpplReturnCode DBConfigurationRequest::SendDeletedControllerToLogical( delete ctr_key; ctr_key = NULL; } - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { pfc_log_error("Failed to send the info to UPLL of controller"); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**SendCreatedControllerToLogical * @Description : This function send the created controller * to logical during abort candidate db/ abort transaction * @param[in] : None - * @Return : UPPL_RC_SUCCESS if sending the controller information to - * logical is successful or UPPL_RC_ERR_* in case of failure + * @Return : UNC_RC_SUCCESS if sending the controller information to + * logical is successful or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode DBConfigurationRequest::SendCreatedControllerToLogical( +UncRespCode DBConfigurationRequest::SendCreatedControllerToLogical( OdbcmConnectionHandler *db_conn) { Kt_Controller kt_ctr; vector vec_key_ctr_modified; // Getting the deleted Configuration from the database - UpplReturnCode result_code = kt_ctr.GetModifiedRows( + UncRespCode result_code = kt_ctr.GetModifiedRows( db_conn, vec_key_ctr_modified, DELETED); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { // No deleted controller available - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } for (uint32_t config_count = 0; @@ -285,7 +285,7 @@ UpplReturnCode DBConfigurationRequest::SendCreatedControllerToLogical( if (kt_ctr.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_RUNNING, - UNC_OP_READ) != UPPL_RC_SUCCESS) { + UNC_OP_READ) != UNC_RC_SUCCESS) { delete ctr_key; ctr_key = NULL; continue; @@ -315,32 +315,32 @@ UpplReturnCode DBConfigurationRequest::SendCreatedControllerToLogical( val_ctr_st = NULL; delete ctr_key; ctr_key = NULL; - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { pfc_log_error("Failed to send the info to UPLL of controller"); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**SendUpdatedControllerToLogical * @Description : This function send the updated controller to * logical during abort candidate db/ abort transaction * @param[in] : None - * @Return : UPPL_RC_SUCCESS if sending the controller information to - * logical is successful or UPPL_RC_ERR_* in case of failure + * @Return : UNC_RC_SUCCESS if sending the controller information to + * logical is successful or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode DBConfigurationRequest::SendUpdatedControllerToLogical( +UncRespCode DBConfigurationRequest::SendUpdatedControllerToLogical( OdbcmConnectionHandler *db_conn) { Kt_Controller kt_ctr; vector vec_key_ctr_modified; // Getting the Update Configuration from the database - UpplReturnCode result_code = kt_ctr.GetModifiedRows( + UncRespCode result_code = kt_ctr.GetModifiedRows( db_conn, vec_key_ctr_modified, UPDATED); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { // No updated controller available - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Iterating the updated controller vector for (uint32_t config_count = 0; \ @@ -354,7 +354,7 @@ UpplReturnCode DBConfigurationRequest::SendUpdatedControllerToLogical( if (kt_ctr.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_RUNNING, - UNC_OP_READ) != UPPL_RC_SUCCESS) { + UNC_OP_READ) != UNC_RC_SUCCESS) { delete ctr_key; ctr_key = NULL; continue; @@ -384,32 +384,32 @@ UpplReturnCode DBConfigurationRequest::SendUpdatedControllerToLogical( val_ctr_st = NULL; delete ctr_key; ctr_key = NULL; - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { pfc_log_error("Failed to send the info to UPLL of controller"); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**SendAppliedControllerToLogical * @Description : This function send the applied controller to * logical during abort candidate db/ abort transaction * @param[in] : None - * @Return : UPPL_RC_SUCCESS if sending the controller information to - * logical is successful or UPPL_RC_ERR_* in case of failure + * @Return : UNC_RC_SUCCESS if sending the controller information to + * logical is successful or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode DBConfigurationRequest::SendAppliedControllerToLogical( +UncRespCode DBConfigurationRequest::SendAppliedControllerToLogical( OdbcmConnectionHandler *db_conn) { Kt_Controller kt_ctr; vector vec_key_ctr_modified; // Getting the deleted Configuration from the database - UpplReturnCode result_code = kt_ctr.GetModifiedRows( + UncRespCode result_code = kt_ctr.GetModifiedRows( db_conn, vec_key_ctr_modified, APPLIED); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { // No deleted controller available - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } for (uint32_t config_count = 0; @@ -422,7 +422,7 @@ UpplReturnCode DBConfigurationRequest::SendAppliedControllerToLogical( if (kt_ctr.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_RUNNING, - UNC_OP_READ) != UPPL_RC_SUCCESS) { + UNC_OP_READ) != UNC_RC_SUCCESS) { delete ctr_key; ctr_key = NULL; continue; @@ -452,10 +452,10 @@ UpplReturnCode DBConfigurationRequest::SendAppliedControllerToLogical( val_ctr_st = NULL; delete ctr_key; ctr_key = NULL; - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { pfc_log_error("Failed to send the info to UPLL of controller"); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } diff --git a/coordinator/modules/uppl/itc_import_request.cc b/coordinator/modules/uppl/itc_import_request.cc index 613f02ab..a76d980c 100644 --- a/coordinator/modules/uppl/itc_import_request.cc +++ b/coordinator/modules/uppl/itc_import_request.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,20 +38,20 @@ ImportRequest::~ImportRequest() { * @param[in] : unc_keytype_operation_t - UNC_OP_* operations related to * import * key_struct - specifies key instance of Kt_Controller - * @Return : UPPL_RC_SUCCESS is returned when the response + * @Return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc + * UNC_UPPL_RC_ERR_* is returned when ipc * response could not be added to session * */ -UpplReturnCode ImportRequest::ProcessRequest(OdbcmConnectionHandler *db_conn, +UncRespCode ImportRequest::ProcessRequest(OdbcmConnectionHandler *db_conn, uint32_t unc_keytype_operation_t, key_ctr_t obj_key_ctr) { - UpplReturnCode result_code = UPPL_RC_SUCCESS; + UncRespCode result_code = UNC_RC_SUCCESS; pfc_log_info("Process the import request"); switch (unc_keytype_operation_t) { case UNC_OP_IMPORT_CONTROLLER_CONFIG: result_code = StartImport(db_conn, obj_key_ctr); - if (result_code != UPPL_RC_SUCCESS) { + if (result_code != UNC_RC_SUCCESS) { pfc_log_info("Import Request:Candidate is dirty"); } break; @@ -62,7 +62,7 @@ UpplReturnCode ImportRequest::ProcessRequest(OdbcmConnectionHandler *db_conn, result_code = ClearImportConfig(obj_key_ctr); break; default: - result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } return result_code; } @@ -73,14 +73,14 @@ UpplReturnCode ImportRequest::ProcessRequest(OdbcmConnectionHandler *db_conn, * of the controller and whether candidate is dirty or not * and returns the response * @param[in] : key_struct - specifies key instance of KT_Controller - * @Return : UPPL_RC_SUCCESS is returned when the response + * @Return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc + * UNC_UPPL_RC_ERR_* is returned when ipc * response could not be added to session * */ -UpplReturnCode ImportRequest::StartImport(OdbcmConnectionHandler *db_conn, +UncRespCode ImportRequest::StartImport(OdbcmConnectionHandler *db_conn, key_ctr_t obj_key_ctr) { - UpplReturnCode result_code = UPPL_RC_SUCCESS; + UncRespCode result_code = UNC_RC_SUCCESS; PhysicalCore *physical_core = PhysicalLayer::get_instance()-> get_physical_core(); InternalTransactionCoordinator *itc_trans = @@ -90,14 +90,14 @@ UpplReturnCode ImportRequest::StartImport(OdbcmConnectionHandler *db_conn, uint8_t oper_status = 0; /* Checks controller existence and its oper status */ pfc_log_debug("Get controller oper Status"); - UpplReturnCode read_status = KtObj.GetOperStatus( + UncRespCode read_status = KtObj.GetOperStatus( db_conn, UNC_DT_RUNNING, &obj_key_ctr, oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { pfc_log_debug("Received oper_status %d", oper_status); if (oper_status == UPPL_CONTROLLER_OPER_AUDITING) { // Controller audit is in progress, return error pfc_log_info("Controller audit is in progress, return error"); - return UPPL_RC_ERR_INVALID_STATE; + return UNC_UPPL_RC_ERR_INVALID_STATE; } } ODBCM_RC_STATUS db_status = ODBCM_RC_SUCCESS; @@ -107,7 +107,7 @@ UpplReturnCode ImportRequest::StartImport(OdbcmConnectionHandler *db_conn, if (itc_trans->trans_state() != TRANS_END || db_status == ODBCM_RC_CANDIDATE_DIRTY) { pfc_log_info("Start Import Unsuccessful - Candidate is dirty"); - result_code = UPPL_RC_ERR_CANDIDATE_IS_DIRTY; + result_code = UNC_UPPL_RC_ERR_CANDIDATE_IS_DIRTY; } return result_code; } @@ -116,10 +116,10 @@ UpplReturnCode ImportRequest::StartImport(OdbcmConnectionHandler *db_conn, * @Description : This function returns success for Merge * configuration Operation. * @param[in] : key_struct - specifies key instance of KT_Controller - * @Return : UPPL_RC_SUCCESS if the merge is successful + * @Return : UNC_RC_SUCCESS if the merge is successful * */ -UpplReturnCode ImportRequest::MergeConfiguration(key_ctr_t obj_key_ctr) { - UpplReturnCode result_code = UPPL_RC_SUCCESS; +UncRespCode ImportRequest::MergeConfiguration(key_ctr_t obj_key_ctr) { + UncRespCode result_code = UNC_RC_SUCCESS; pfc_log_info("Returning Success for MergeConfiguration"); return result_code; } @@ -128,11 +128,11 @@ UpplReturnCode ImportRequest::MergeConfiguration(key_ctr_t obj_key_ctr) { * @Description : This function returns success for Clear import * configuration * @param[in] : key_struct - specifies key instance of KT_Controller - * @Return : UPPL_RC_SUCCESS if the clear import configuration is + * @Return : UNC_RC_SUCCESS if the clear import configuration is * successful * */ -UpplReturnCode ImportRequest::ClearImportConfig(key_ctr_t obj_key_ctr) { - UpplReturnCode result_code = UPPL_RC_SUCCESS; +UncRespCode ImportRequest::ClearImportConfig(key_ctr_t obj_key_ctr) { + UncRespCode result_code = UNC_RC_SUCCESS; pfc_log_info("Returning Success for ClearImportConfig"); return result_code; } diff --git a/coordinator/modules/uppl/itc_kt_base.cc b/coordinator/modules/uppl/itc_kt_base.cc index 5a23e0d1..6234b164 100644 --- a/coordinator/modules/uppl/itc_kt_base.cc +++ b/coordinator/modules/uppl/itc_kt_base.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,24 +29,32 @@ attr_syntax_map_all; * data_type - UNC_DT_*, read allowed in * candidate/running/startup/state * key_type - specifies the kt instance - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response + * UNC_UPPL_RC_ERR_* is returned when ipc response * could not be added to sess. * */ -UpplReturnCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type, uint32_t key_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; pfc_log_debug("Inside ValidateRequest of KT_BASE for Key type: %d", key_type); switch (key_type) { case UNC_KT_ROOT: { status = ValidateKtRoot(operation, data_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { + return status; + } + } + break; + case UNC_KT_DATAFLOW: { + status = ValidateKtDataflow(operation, + data_type); + if (status != UNC_RC_SUCCESS) { return status; } } @@ -55,7 +63,15 @@ UpplReturnCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, case UNC_KT_BOUNDARY: { status = ValidateKtCtrlBdry(operation, data_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { + return status; + } + } + break; + case UNC_KT_CTR_DATAFLOW: { + status = ValidateKtCtrDataflow(operation, + data_type); + if (status != UNC_RC_SUCCESS) { return status; } } @@ -63,7 +79,7 @@ UpplReturnCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, case UNC_KT_CTR_DOMAIN: { status = ValidateKtCtrDomain(operation, data_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { return status; } } @@ -75,14 +91,14 @@ UpplReturnCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, case UNC_KT_LINK: { status = ValidateKtState(operation, data_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { return status; } } break; default : { pfc_log_error("Key type not supported"); - return UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; } } if (operation == UNC_OP_READ || operation == UNC_OP_CREATE || @@ -91,7 +107,7 @@ UpplReturnCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, val_struct, operation, data_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error and send error response pfc_log_error("Syntax validation failed"); // return the actual response @@ -102,7 +118,7 @@ UpplReturnCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, val_struct, operation, data_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error and send error response pfc_log_error("Semantic validation failed"); // return the actual response @@ -124,12 +140,12 @@ UpplReturnCode Kt_Base::ValidateRequest(OdbcmConnectionHandler *db_conn, * sess - ipc server session where the * response has to be added * option1/option2 - specifies any additional - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not + * UNC_UPPL_RC_ERR_* is returned when ipc response could not * be added to sess. * */ -UpplReturnCode Kt_Base::Read(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Base::Read(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -160,12 +176,13 @@ UpplReturnCode Kt_Base::Read(OdbcmConnectionHandler *db_conn, * readnext allowed in candidate/running/startup/state * sess - ipc server session * where the response has to be added - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc + * UNC_UPPL_RC_ERR_* is returned when ipc * response could not be added to sess. * */ -UpplReturnCode Kt_Base::ReadNext(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Base::ReadNext(OdbcmConnectionHandler *db_conn, + uint32_t client_sess_id, void* key_struct, uint32_t data_type, ReadRequest *read_req) { @@ -192,12 +209,12 @@ UpplReturnCode Kt_Base::ReadNext(OdbcmConnectionHandler *db_conn, * option1/option2 - specifies any additional * condition for read operation * max_rep_ct - specifies number of rows to be returned - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc + * UNC_UPPL_RC_ERR_* is returned when ipc * response could not be added to sess. * */ -UpplReturnCode Kt_Base::ReadSiblingBegin(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Base::ReadSiblingBegin(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -207,7 +224,7 @@ UpplReturnCode Kt_Base::ReadSiblingBegin(OdbcmConnectionHandler *db_conn, uint32_t option1, uint32_t option2, uint32_t &max_rep_ct) { - UpplReturnCode read_status = PerformRead(db_conn, session_id, + UncRespCode read_status = PerformRead(db_conn, session_id, configuration_id, key_struct, val_struct, @@ -233,12 +250,12 @@ UpplReturnCode Kt_Base::ReadSiblingBegin(OdbcmConnectionHandler *db_conn, * option1/option2 - specifies any additional * condition for read operation * max_rep_ct - specifies number of rows to be returned - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response + * UNC_UPPL_RC_ERR_* is returned when ipc response * could not be added to sess. * */ -UpplReturnCode Kt_Base::ReadSibling(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Base::ReadSibling(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -248,7 +265,7 @@ UpplReturnCode Kt_Base::ReadSibling(OdbcmConnectionHandler *db_conn, uint32_t option1, uint32_t option2, uint32_t &max_rep_ct) { - UpplReturnCode read_status = PerformRead(db_conn, session_id, + UncRespCode read_status = PerformRead(db_conn, session_id, configuration_id, key_struct, val_struct, @@ -274,12 +291,12 @@ UpplReturnCode Kt_Base::ReadSibling(OdbcmConnectionHandler *db_conn, * option1/option2 - specifies any additional condition * for read operation * max_rep_ct - specifies number of rows to be returned - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response + * UNC_UPPL_RC_ERR_* is returned when ipc response * could not be added to sess. * */ -UpplReturnCode Kt_Base::ReadSiblingCount(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Base::ReadSiblingCount(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -301,14 +318,14 @@ UpplReturnCode Kt_Base::ReadSiblingCount(OdbcmConnectionHandler *db_conn, 0}; if (option1 != UNC_OPT1_NORMAL) { pfc_log_error("Sibling Count is provided on unsupported option1"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= AddKeyStructuretoSession(key_type, &sess, key_struct); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return (UpplReturnCode)rsh.result_code; + return (UncRespCode)rsh.result_code; } uint32_t count = 0; // Structure used to send request to ODBC @@ -336,9 +353,9 @@ UpplReturnCode Kt_Base::ReadSiblingCount(OdbcmConnectionHandler *db_conn, // count if (read_db_status != ODBCM_RC_SUCCESS) { if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - rsh.result_code = UPPL_RC_ERR_DB_ACCESS; + rsh.result_code = UNC_UPPL_RC_ERR_DB_ACCESS; } else { - rsh.result_code = UPPL_RC_ERR_DB_GET; + rsh.result_code = UNC_UPPL_RC_ERR_DB_GET; } // log error to log daemon pfc_log_error("Sibling Count operation has failed"); @@ -346,21 +363,21 @@ UpplReturnCode Kt_Base::ReadSiblingCount(OdbcmConnectionHandler *db_conn, err |= AddKeyStructuretoSession(key_type, &sess, key_struct); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return (UpplReturnCode)rsh.result_code; + return (UncRespCode)rsh.result_code; } else { pfc_log_info("Count from DB: %d", count); } - rsh.result_code = UPPL_RC_SUCCESS; + rsh.result_code = UNC_RC_SUCCESS; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= AddKeyStructuretoSession(key_type, &sess, key_struct); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } sess.addOutput(count); - return (UpplReturnCode)rsh.result_code; + return (UncRespCode)rsh.result_code; } /** ConfigurationChangeNotification @@ -371,10 +388,10 @@ UpplReturnCode Kt_Base::ReadSiblingCount(OdbcmConnectionHandler *db_conn, * key_struct - specifies the key instance of KT * old_val_struct - old value struct of kt * new_val_struct - new value struct of kt - * * @return : UPPL_RC_SUCCESS is notified to northbound successfully or - * UPPL_RC_ERR* + * * @return : UNC_RC_SUCCESS is notified to northbound successfully or + * UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Base::ConfigurationChangeNotification( +UncRespCode Kt_Base::ConfigurationChangeNotification( uint32_t data_type, uint32_t key_type, uint32_t oper_type, @@ -382,7 +399,7 @@ UpplReturnCode Kt_Base::ConfigurationChangeNotification( void* old_val_struct, void* new_val_struct) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; int err = 0; pfc_ipcevtype_t event_type = GetEventType(key_type); // Create ServerEvent object to be sent to NB @@ -403,9 +420,9 @@ UpplReturnCode Kt_Base::ConfigurationChangeNotification( if (err != 0) { pfc_log_error( "Server Event addOutput failed, return IPC_WRITE_ERROR"); - status = UPPL_RC_ERR_IPC_WRITE_ERROR; + status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - status = (UpplReturnCode) physical_layer->get_ipc_connection_manager()-> + status = (UncRespCode) physical_layer->get_ipc_connection_manager()-> SendEvent(&ser_evt); pfc_log_info( "Configuration notification status: %d for operation %d", @@ -480,6 +497,11 @@ int Kt_Base::AddKeyStructuretoSession(uint32_t key_type, err |= sess->addOutput(*obj_key); break; } + case UNC_KT_DATAFLOW: { + key_dataflow_t *obj_key = reinterpret_cast(key_struct); + err |= sess->addOutput(*obj_key); + break; + } case UNC_KT_CTR_DOMAIN: { key_ctr_domain_t *obj_key = reinterpret_cast(key_struct); @@ -823,44 +845,74 @@ void Kt_Base::ClearValueStructure(uint32_t key_type, } } -UpplReturnCode Kt_Base::ValidateKtRoot(uint32_t operation, +UncRespCode Kt_Base::ValidateKtRoot(uint32_t operation, uint32_t data_type) { if ((operation != UNC_OP_READ_NEXT) && (operation != UNC_OP_READ_BULK)) { pfc_log_error("Operations other than READ_NEXT and READ_BULK" "are not allowed"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } if ((data_type != UNC_DT_CANDIDATE) && (data_type != UNC_DT_STARTUP) && (data_type != UNC_DT_RUNNING) && (data_type != UNC_DT_STATE)) { pfc_log_error("Data type other than STARTUP/CANDIDATE/RUNNING/STATE" "are not allowed"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } -UpplReturnCode Kt_Base::ValidateKtCtrlBdry(uint32_t operation, +UncRespCode Kt_Base::ValidateKtDataflow(uint32_t operation, + uint32_t data_type) { + if (operation != UNC_OP_READ) { + pfc_log_error("Operations other than READ" + " are not allowed"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + if (data_type != UNC_DT_STATE) { + pfc_log_error("Data type other than STATE" + " are not allowed"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + return UNC_RC_SUCCESS; +} + +UncRespCode Kt_Base::ValidateKtCtrlBdry(uint32_t operation, uint32_t data_type) { if ( (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE) && data_type != UNC_DT_CANDIDATE) { pfc_log_error("Configuration operation only allowed in CANDIDATE DB"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else if (operation >= UNC_OP_READ && data_type != UNC_DT_CANDIDATE && data_type != UNC_DT_STARTUP && data_type != UNC_DT_RUNNING && data_type != UNC_DT_STATE) { pfc_log_error( "Read operations are not allowed in requested data type %d", data_type); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else if (!(operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation >= UNC_OP_READ)) { pfc_log_error("Invalid operation type"); - return UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + } + return UNC_RC_SUCCESS; +} + +UncRespCode Kt_Base::ValidateKtCtrDataflow(uint32_t operation, + uint32_t data_type) { + if (operation != UNC_OP_READ) { + pfc_log_error("Operations other than READ" + "are not allowed"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + if (data_type != UNC_DT_STATE) { + pfc_log_error("Data type other than STATE " + "are not allowed"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } -UpplReturnCode Kt_Base::ValidateKtCtrDomain(uint32_t operation, +UncRespCode Kt_Base::ValidateKtCtrDomain(uint32_t operation, uint32_t data_type) { if ((operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE) && data_type != UNC_DT_CANDIDATE && @@ -868,43 +920,43 @@ UpplReturnCode Kt_Base::ValidateKtCtrDomain(uint32_t operation, pfc_log_error( "Configuration operation only allowed in " "CANDIDATE/STATE/IMPORT DB"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else if (operation >= UNC_OP_READ && data_type != UNC_DT_CANDIDATE && data_type != UNC_DT_STARTUP && data_type != UNC_DT_RUNNING && data_type != UNC_DT_STATE) { pfc_log_error( "Read operations are not allowed in requested data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else if (!(operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation >= UNC_OP_READ)) { pfc_log_error("Invalid operation type"); - return UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } -UpplReturnCode Kt_Base::ValidateKtState(uint32_t operation, +UncRespCode Kt_Base::ValidateKtState(uint32_t operation, uint32_t data_type) { if (operation >= UNC_OP_READ && data_type != UNC_DT_STATE) { pfc_log_error( "Read operations are not allowed in requested data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else if ( data_type != UNC_DT_STATE && (operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE) && data_type != UNC_DT_IMPORT) { pfc_log_error("Configuration operation only allowed in STATE DB"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else if (!(operation >= UNC_OP_READ || operation == UNC_OP_CREATE || operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE)) { pfc_log_error("Invalid operation type"); - return UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } -UpplReturnCode Kt_Base::get_oper_status( +UncRespCode Kt_Base::get_oper_status( vector &ref_oper_status, unc_key_type_t key_type, void* key_struct, @@ -944,11 +996,11 @@ UpplReturnCode Kt_Base::get_oper_status( oper_status = kt_oper_status.get_oper_status(); pfc_log_debug("Returning oper_status from internal structure %d", oper_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } pfc_log_debug("oper_status not found in internal structure"); - return UPPL_RC_ERR_NO_SUCH_INSTANCE; + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } void Kt_Base::ClearOperStatusHolder(vector &ref_oper_status) { diff --git a/coordinator/modules/uppl/itc_kt_boundary.cc b/coordinator/modules/uppl/itc_kt_boundary.cc index 622d8c51..28122f8a 100644 --- a/coordinator/modules/uppl/itc_kt_boundary.cc +++ b/coordinator/modules/uppl/itc_kt_boundary.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -52,23 +52,23 @@ Kt_Boundary::~Kt_Boundary() { * value_struct - the values for the new kt boundary instance * data_type - UNC_DT_* , Create only allowed in candidate * sess - ipc server session where the response has to be added - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::Create(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess) { - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; // Check whether operation is allowed on the given DT type if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Create operation is invoked on unsupported data type %d", data_type); - create_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + create_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { create_status = CreateKeyInstance(db_conn, key_struct, val_struct, data_type, UNC_KT_BOUNDARY); @@ -84,16 +84,16 @@ UpplReturnCode Kt_Boundary::Create(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - create_status}; + static_cast(create_status)}; rsh.result_code = create_status; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_BOUNDARY); err |= sess.addOutput(*key_obj); if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - create_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + create_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - create_status = UPPL_RC_SUCCESS; + create_status = UNC_RC_SUCCESS; } return create_status; } @@ -105,15 +105,15 @@ UpplReturnCode Kt_Boundary::Create(OdbcmConnectionHandler *db_conn, * value_struct - the values for the new kt boundary instance * data_type - UNC_DT_* , Create only allowed in candidate * key_type-UNC_KT_BOUNDARY,value of unc_key_type_t - * @return : UPPL_RC_SUCCESS is returned when the create is success - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * @return : UNC_RC_SUCCESS is returned when the create is success + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::CreateKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Structure used to send request to ODBC @@ -135,15 +135,15 @@ UpplReturnCode Kt_Boundary::CreateKeyInstance(OdbcmConnectionHandler *db_conn, if (create_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - create_status = UPPL_RC_ERR_DB_ACCESS; + create_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (create_db_status == ODBCM_RC_PKEY_VIOLATION) { // log fatal error to log daemon pfc_log_error("Boundary instance already exists"); - create_status = UPPL_RC_ERR_INSTANCE_EXISTS; + create_status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; } else { // log error to log daemon pfc_log_error("Create operation has failed"); - create_status = UPPL_RC_ERR_DB_CREATE; + create_status = UNC_UPPL_RC_ERR_DB_CREATE; } } else { pfc_log_info("Create of a boundary in datatype(%d) is success", data_type); @@ -160,23 +160,23 @@ UpplReturnCode Kt_Boundary::CreateKeyInstance(OdbcmConnectionHandler *db_conn, * value_struct - the values for the kt boundary instance * data_type - UNC_DT_* , Update only allowed in candidate * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::Update(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession & sess) { - UpplReturnCode update_status = UPPL_RC_SUCCESS; + UncRespCode update_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); key_boundary_t *key_obj = reinterpret_cast(key_struct); if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Update operation is provided on unsupported data type"); - update_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + update_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { // Structure used to send request to ODBC DBTableSchema kt_boundary_dbtableschema; @@ -198,11 +198,11 @@ UpplReturnCode Kt_Boundary::Update(OdbcmConnectionHandler *db_conn, update_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - update_status = UPPL_RC_ERR_DB_ACCESS; + update_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (update_db_status != ODBCM_RC_SUCCESS) { // log error to log daemon pfc_log_error("Update operation has failed"); - update_status = UPPL_RC_ERR_DB_UPDATE; + update_status = UNC_UPPL_RC_ERR_DB_UPDATE; } if (update_db_status != ODBCM_RC_SUCCESS) { pfc_log_info("Update of a boundary in data_type(%d) is success", @@ -220,15 +220,15 @@ UpplReturnCode Kt_Boundary::Update(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - update_status}; + static_cast(update_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_BOUNDARY); err |= sess.addOutput(*key_obj); if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - update_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + update_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - update_status = UPPL_RC_SUCCESS; + update_status = UNC_RC_SUCCESS; } return update_status; } @@ -241,24 +241,24 @@ UpplReturnCode Kt_Boundary::Update(OdbcmConnectionHandler *db_conn, * key_struct - the key for the kt boundary instance * data_type - UNC_DT_* , delete only allowed in candidate * sess - ipc server session where the response has to be added - * * @return : UPPL_RC_SUCCESS is returned when the response + * * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::Delete(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession & sess) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); key_boundary_t *key_obj= reinterpret_cast(key_struct); // Check whether operation is allowed on the given DT type if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Delete operation is invoked on unsupported data type %d", data_type); - delete_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + delete_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; // Populate the response to be sent in ServerSession physical_response_header rsh = {session_id, configuration_id, @@ -267,16 +267,16 @@ UpplReturnCode Kt_Boundary::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - delete_status}; + static_cast(delete_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_BOUNDARY); err |= sess.addOutput(*key_obj); if (err != 0) { pfc_log_debug( "Server session addOutput failed, so return IPC_WRITE_ERROR"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } string boundary_id = (const char*)key_obj->boundary_id; @@ -284,7 +284,7 @@ UpplReturnCode Kt_Boundary::Delete(OdbcmConnectionHandler *db_conn, delete_status = SendSemanticRequestToUPLL(key_struct, data_type); - if (delete_status != UPPL_RC_SUCCESS) { + if (delete_status != UNC_RC_SUCCESS) { // log error and send error response pfc_log_error("Boundary is referred in Logical," "so delete is not allowed"); @@ -318,18 +318,18 @@ UpplReturnCode Kt_Boundary::Delete(OdbcmConnectionHandler *db_conn, if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (delete_db_status == ODBCM_RC_ROW_NOT_EXISTS) { pfc_log_error("given instance does not exist"); - delete_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + delete_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { // log error to log daemon - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else { pfc_log_info("Delete of a boundary in data_type(%d) is success", data_type); - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } } // Populate the response to be sent in ServerSession @@ -340,15 +340,15 @@ UpplReturnCode Kt_Boundary::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - delete_status}; + static_cast(delete_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_BOUNDARY); err |= sess.addOutput(*key_obj); if (err != 0) { pfc_log_debug("Server session addOutput failed, so return IPC_WRITE_ERROR"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ReadInternal @@ -358,11 +358,11 @@ UpplReturnCode Kt_Boundary::Delete(OdbcmConnectionHandler *db_conn, * boundary_val - vector of void* to the value for the kt boundary instance * data_type - UNC_DT_* , read allowed in candidate/running/startup/state * operation_type-UNC_OP_*,type of operation - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::ReadInternal(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::ReadInternal(OdbcmConnectionHandler *db_conn, vector &boundary_key, vector &boundary_val, uint32_t data_type, @@ -380,12 +380,12 @@ UpplReturnCode Kt_Boundary::ReadInternal(OdbcmConnectionHandler *db_conn, val_boundary_st_t st_boundary_val; if (!boundary_val.empty()) { st_boundary_val = - *(reinterpret_cast (boundary_val[0])); + *(reinterpret_cast (boundary_val[0])); val_struct = reinterpret_cast(&st_boundary_val.boundary); } // Get read response from database - UpplReturnCode read_status = ReadBoundaryValFromDB(db_conn, + UncRespCode read_status = ReadBoundaryValFromDB(db_conn, key_struct, val_struct, data_type, @@ -395,9 +395,9 @@ UpplReturnCode Kt_Boundary::ReadInternal(OdbcmConnectionHandler *db_conn, vect_val_boundary_st); boundary_key.clear(); boundary_val.clear(); - pfc_log_debug("ReadBoundaryValFromDB returned %d with response size %d", - read_status, static_cast(vect_val_boundary_st.size())); - if (read_status == UPPL_RC_SUCCESS) { + pfc_log_debug("ReadBoundaryValFromDB returned %d with response size %" + PFC_PFMT_SIZE_T, read_status, vect_val_boundary_st.size()); + if (read_status == UNC_RC_SUCCESS) { for (unsigned int iIndex = 0 ; iIndex < vect_boundary_id.size(); ++iIndex) { key_boundary_t *key_boundary = @@ -420,11 +420,11 @@ UpplReturnCode Kt_Boundary::ReadInternal(OdbcmConnectionHandler *db_conn, * max_rep_ct - specifies number of rows to be returned * parent_call - indicates whether parent has called this readbulk * is_read_next - indicates whether this function is invoked from readnext - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -433,10 +433,10 @@ UpplReturnCode Kt_Boundary::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_bool_t is_read_next, ReadRequest *read_req) { pfc_log_info("Processing ReadBulk of Kt_Boundary"); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; if (data_type != UNC_DT_CANDIDATE && data_type != UNC_DT_RUNNING && data_type != UNC_DT_STATE && data_type != UNC_DT_STARTUP) { - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; pfc_log_debug("ReadBulk operation is not allowed in %d data type", data_type); return read_status; @@ -444,7 +444,7 @@ UpplReturnCode Kt_Boundary::ReadBulk(OdbcmConnectionHandler *db_conn, if (max_rep_ct == 0) { pfc_log_info("max_rep_ct is 0"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // check whether UNC_KT_BOUNDARY key instance is available in the request vector vect_val_boundary; @@ -457,17 +457,17 @@ UpplReturnCode Kt_Boundary::ReadBulk(OdbcmConnectionHandler *db_conn, max_rep_ct, vect_key_boundary, vect_val_boundary); - pfc_log_debug("read_status of ReadBulkInternal is %d with vector size %d", - read_status, static_cast(vect_val_boundary.size())); - pfc_log_debug("read_status from ReadBulkInternal is %d with key size %d", - read_status, static_cast(vect_key_boundary.size())); - if (read_status != UPPL_RC_SUCCESS) { + pfc_log_debug("read_status of ReadBulkInternal is %d with vector size %" + PFC_PFMT_SIZE_T, read_status, vect_val_boundary.size()); + pfc_log_debug("read_status from ReadBulkInternal is %d with key size %" + PFC_PFMT_SIZE_T, read_status, vect_key_boundary.size()); + if (read_status != UNC_RC_SUCCESS) { pfc_log_debug("Boundary read bulk internal is not success"); - if (read_status == UPPL_RC_ERR_DB_ACCESS) { + if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("KtBoundary ReadBulk - Returning DB Access Error"); return read_status; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } vector ::iterator boundary_iter = vect_key_boundary.begin(); @@ -513,12 +513,12 @@ UpplReturnCode Kt_Boundary::ReadBulk(OdbcmConnectionHandler *db_conn, read_req->AddToBuffer(obj_sep_buffer); --max_rep_ct; if (max_rep_ct == 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } pfc_log_debug("reached end of key tree, read_status=%d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ReadBulkInternal @@ -531,11 +531,11 @@ UpplReturnCode Kt_Boundary::ReadBulk(OdbcmConnectionHandler *db_conn, * vect_key_boundary-indicates the fetched keys from db of val_boundary type * vect_val_boundary - indicates the fetched values * from db of val_boundary type - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::ReadBulkInternal( +UncRespCode Kt_Boundary::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, void *val_struct, @@ -545,7 +545,7 @@ UpplReturnCode Kt_Boundary::ReadBulkInternal( vector &vect_val_boundary) { pfc_log_debug("Inside ReadBulkInternal of Kt-Boundary"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_boundary_dbtableschema; vector vect_key_operations; @@ -563,16 +563,16 @@ UpplReturnCode Kt_Boundary::ReadBulkInternal( (unc_keytype_operation_t)UNC_OP_READ_BULK, db_conn); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; return read_status; } // From the values received from DB, populate val_boundary structure @@ -591,10 +591,10 @@ UpplReturnCode Kt_Boundary::ReadBulkInternal( * value_struct - the value for the kt boundary instance * data_type - UNC_DT_*,type of database * operation_type - UNC_OP*,type of operation - * @return : UPPL_RC_SUCCESS is returned when the validation is successful - * UPPL_RC_ERR_* is returned when validation is failure + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure * */ -UpplReturnCode Kt_Boundary::PerformSyntaxValidation( +UncRespCode Kt_Boundary::PerformSyntaxValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -602,7 +602,7 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( uint32_t data_type) { pfc_log_info("Performing Syntax Validation of KT_BOUNDARY"); - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_ipcresp_t mandatory = PFC_TRUE; // Validate key structure @@ -611,8 +611,8 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( map attr_syntax_map = attr_syntax_map_all[UNC_KT_BOUNDARY]; IS_VALID_STRING_KEY(BDRY_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate value structure @@ -626,8 +626,8 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( string value = reinterpret_cast(val_bdry->description); IS_VALID_STRING_VALUE(BDRY_DESCRIPTION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate controller_name1 @@ -636,12 +636,12 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( value = reinterpret_cast(val_bdry->controller_name1); IS_VALID_STRING_VALUE(BDRY_CTR_NAME1_STR, value, operation, ctr1_valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (operation == UNC_OP_UPDATE && ctr1_valid_val == UNC_VF_VALID) { pfc_log_error("Controllername1 cannot be modified"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate domain_name1 @@ -650,12 +650,12 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( value = reinterpret_cast(val_bdry->domain_name1); IS_VALID_STRING_VALUE(BDRY_DM_NAME1_STR, value, operation, dmn1_valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (operation == UNC_OP_UPDATE && dmn1_valid_val == UNC_VF_VALID) { pfc_log_error("Domainname1 cannot be modified"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate logical_port_id1 @@ -664,12 +664,12 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( value = reinterpret_cast(val_bdry->logical_port_id1); IS_VALID_STRING_VALUE(BDRY_PORT_ID1_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (operation == UNC_OP_UPDATE && valid_val == UNC_VF_VALID) { pfc_log_error("LogicalPortId1 cannot be modified"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate controller_name2 @@ -678,12 +678,12 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( value = reinterpret_cast(val_bdry->controller_name2); IS_VALID_STRING_VALUE(BDRY_CTR_NAME2_STR, value, operation, ctr2_valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (operation == UNC_OP_UPDATE && ctr2_valid_val == UNC_VF_VALID) { pfc_log_error("Controllername2 cannot be modified"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate domain_name2 @@ -692,12 +692,12 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( value = reinterpret_cast(val_bdry->domain_name2); IS_VALID_STRING_VALUE(BDRY_DM_NAME2_STR, value, operation, dmn2_valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (operation == UNC_OP_UPDATE && dmn2_valid_val == UNC_VF_VALID) { pfc_log_error("Domainname2 cannot be modified"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate logical_port_id2 @@ -706,21 +706,21 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( value = reinterpret_cast(val_bdry->logical_port_id2); IS_VALID_STRING_VALUE(BDRY_PORT_ID2_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (operation == UNC_OP_UPDATE && valid_val == UNC_VF_VALID) { pfc_log_error("LogicalPortId2 cannot be modified"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (operation == UNC_OP_READ_SIBLING_BEGIN || operation == UNC_OP_READ_SIBLING) { - UpplReturnCode validate_ret = ValidateSiblingFiltering(ctr1_valid_val, + UncRespCode validate_ret = ValidateSiblingFiltering(ctr1_valid_val, ctr2_valid_val, dmn1_valid_val, dmn2_valid_val); - if (validate_ret != UPPL_RC_SUCCESS) { + if (validate_ret != UNC_RC_SUCCESS) { return validate_ret; } } @@ -735,51 +735,51 @@ UpplReturnCode Kt_Boundary::PerformSyntaxValidation( * value_struct - specifies value of KT_BOUNDARY * operation - UNC_OP*,type of operation * data_type - UNC_DT*,type of database - * @return : UPPL_RC_SUCCESS if semantic valition is successful - * or UPPL_RC_ERR_* if failed + * @return : UNC_RC_SUCCESS if semantic valition is successful + * or UNC_UPPL_RC_ERR_* if failed * */ -UpplReturnCode Kt_Boundary::PerformSemanticValidation( +UncRespCode Kt_Boundary::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; pfc_log_debug("Inside PerformSemanticValidation of KT_BOUNDARY"); key_boundary_t *obj_key_boundary = reinterpret_cast(key_struct); string boundary_id = (const char*)obj_key_boundary->boundary_id; vector boundary_vect_key_value; boundary_vect_key_value.push_back(boundary_id); - UpplReturnCode key_status = IsKeyExists(db_conn, + UncRespCode key_status = IsKeyExists(db_conn, (unc_keytype_datatype_t)data_type, boundary_vect_key_value); pfc_log_debug("IsKeyExists status %d", key_status); // In case of create operation, key should not exist if (operation == UNC_OP_CREATE) { - if (key_status == UPPL_RC_SUCCESS) { + if (key_status == UNC_RC_SUCCESS) { pfc_log_error("Key instance already exists"); pfc_log_error("Hence create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; - } else if (key_status == UPPL_RC_ERR_DB_ACCESS) { + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; + } else if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; } } else if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { // In case of update/delete/read operation, key should exist - if (key_status == UPPL_RC_ERR_DB_ACCESS) { + if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; - } else if (key_status != UPPL_RC_SUCCESS) { + } else if (key_status != UNC_RC_SUCCESS) { pfc_log_error("Key instance does not exist"); pfc_log_error("Hence update/delete/read operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { pfc_log_info("key instance exist update/del/read operation allowed"); } } - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { pfc_log_debug("Return Code SemanticValidation: %d", status); return status; } @@ -808,15 +808,15 @@ UpplReturnCode Kt_Boundary::PerformSemanticValidation( if (ctr1_valid_val == UNC_VF_VALID) { controller_name1 = (const char*)obj_boundary_val->controller_name1; unc_keytype_ctrtype_t type = UNC_CT_UNKNOWN; - UpplReturnCode ctr_type_status = + UncRespCode ctr_type_status = PhyUtil::get_controller_type(db_conn, controller_name1, type, (unc_keytype_datatype_t) data_type); - if (ctr_type_status != UPPL_RC_SUCCESS) { + if (ctr_type_status != UNC_RC_SUCCESS) { pfc_log_error( "Operation %d is not allowed as controller1 instance %s not exists", operation, controller_name1.c_str()); - return UPPL_RC_ERR_CFG_SEMANTIC; + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; } pfc_log_debug("Controller1 type: %d", type); if (type != (unc_keytype_ctrtype_t) UNC_CT_UNKNOWN) { @@ -826,7 +826,7 @@ UpplReturnCode Kt_Boundary::PerformSemanticValidation( if (lp1_valid_val == UNC_VF_INVALID || logical_port_id1.empty()) { pfc_log_info("logical port not valid/null for controller %s", controller_name1.c_str()); - return UPPL_RC_ERR_CFG_SEMANTIC; + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; } } else { // validate domain name @@ -836,7 +836,7 @@ UpplReturnCode Kt_Boundary::PerformSemanticValidation( if (dmn1_valid_val == UNC_VF_VALID && domain_name1 == DEFAULT_DOMAIN) { pfc_log_info("Default domain cannot be given for bypass controller %s", controller_name1.c_str()); - return UPPL_RC_ERR_CFG_SEMANTIC; + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; } } } @@ -853,15 +853,15 @@ UpplReturnCode Kt_Boundary::PerformSemanticValidation( if (ctr2_valid_val == UNC_VF_VALID) { controller_name2 = (const char*)obj_boundary_val->controller_name2; unc_keytype_ctrtype_t type = UNC_CT_UNKNOWN; - UpplReturnCode ctr_type_status = + UncRespCode ctr_type_status = PhyUtil::get_controller_type(db_conn, controller_name2, type, (unc_keytype_datatype_t) data_type); - if (ctr_type_status != UPPL_RC_SUCCESS) { + if (ctr_type_status != UNC_RC_SUCCESS) { pfc_log_error( "Operation %d is not allowed as controller instance %s not exists", operation, controller_name2.c_str()); - return UPPL_RC_ERR_CFG_SEMANTIC; + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; } pfc_log_debug("Controller2 type :%d ", type); if (type != (unc_keytype_ctrtype_t) UNC_CT_UNKNOWN) { @@ -871,7 +871,7 @@ UpplReturnCode Kt_Boundary::PerformSemanticValidation( if (lp2_valid_val == UNC_VF_INVALID || logical_port_id2.empty()) { pfc_log_info("logicalport2 not valid/null for controller %s", controller_name2.c_str()); - return UPPL_RC_ERR_CFG_SEMANTIC; + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; } } else { // validate domain name @@ -881,7 +881,7 @@ UpplReturnCode Kt_Boundary::PerformSemanticValidation( if (dmn2_valid_val == UNC_VF_VALID && domain_name2 == DEFAULT_DOMAIN) { pfc_log_info("Default domain cannot be given for bypass controller %s", controller_name2.c_str()); - return UPPL_RC_ERR_CFG_SEMANTIC; + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; } } } @@ -906,7 +906,7 @@ UpplReturnCode Kt_Boundary::PerformSemanticValidation( pfc_log_error( "Controller name1, Controller name2 " "and domain name1, domain name2 are same"); - status = UPPL_RC_ERR_CFG_SEMANTIC; + status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; pfc_log_debug("Return Code SemanticValidation: %d", status); return status; } @@ -1294,8 +1294,8 @@ void Kt_Boundary::FillBoundaryValueStructure( } obj_val_boundary_st.boundary = obj_val_boundary; vect_obj_val_boundary.push_back(obj_val_boundary_st); - pfc_log_debug("result - vect_obj_val_boundary size: %d", - (unsigned int) vect_obj_val_boundary.size()); + pfc_log_debug("result - vect_obj_val_boundary size: %" + PFC_PFMT_SIZE_T, vect_obj_val_boundary.size()); } return; } @@ -1313,11 +1313,11 @@ void Kt_Boundary::FillBoundaryValueStructure( * option1,option2-additional info for read opeartions,UNC_OPT1/OPT2_* * max_rep_ct-max no of records to be read * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. **/ -UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -1331,7 +1331,7 @@ UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, pfc_log_info("Inside PerformRead operation_type=%d data_type=%d", operation_type, data_type); key_boundary_t *obj_boundary = reinterpret_cast(key_struct); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; physical_response_header rsh = {session_id, configuration_id, operation_type, @@ -1339,18 +1339,18 @@ UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - 0}; + static_cast(0)}; if (option1 != UNC_OPT1_NORMAL) { pfc_log_error("Invalid option1 specified for read operation"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_BOUNDARY); err |= sess.addOutput(*obj_boundary); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (operation_type == UNC_OP_READ) { max_rep_ct = 1; @@ -1361,15 +1361,15 @@ UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, (unc_keytype_datatype_t)data_type != UNC_DT_STATE && (unc_keytype_datatype_t)data_type != UNC_DT_IMPORT) { pfc_log_error("Data type is not allowed"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_BOUNDARY); err |= sess.addOutput(*obj_boundary); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } vector vect_key_boundary; vector vect_val_boundary_st; @@ -1383,7 +1383,7 @@ UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, vect_val_boundary_st); rsh.result_code = read_status; rsh.max_rep_count = max_rep_ct; - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int index = 0; index < vect_key_boundary.size(); ++index) { @@ -1397,23 +1397,23 @@ UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, } } if (rsh.max_rep_count == 0) { - rsh.result_code = UPPL_RC_ERR_NO_SUCH_INSTANCE; + rsh.result_code = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_BOUNDARY); err |= sess.addOutput(*obj_boundary); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } int err = PhyUtil::sessOutRespHeader(sess, rsh); if (err != 0) { pfc_log_error("Failure in addOutput"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - pfc_log_debug("From db, vect_boundary size is %d", - static_cast(vect_key_boundary.size())); + pfc_log_debug("From db, vect_boundary size is %" + PFC_PFMT_SIZE_T, vect_key_boundary.size()); for (unsigned int index = 0; index < vect_key_boundary.size(); ++index) { @@ -1443,7 +1443,7 @@ UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, err |= sess.addOutput(*obj_boundary); if (err != 0) { pfc_log_debug("addOutput failure for physical_reponse_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } pfc_log_debug("Return value for read operation %d", read_status); @@ -1465,11 +1465,11 @@ UpplReturnCode Kt_Boundary::PerformRead(OdbcmConnectionHandler *db_conn, * vect_val_boundary_st-instance of vector * is_state-flag to indicate whether data type is DT_STATE * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. **/ -UpplReturnCode Kt_Boundary::ReadBoundaryValFromDB( +UncRespCode Kt_Boundary::ReadBoundaryValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -1481,10 +1481,10 @@ UpplReturnCode Kt_Boundary::ReadBoundaryValFromDB( pfc_bool_t is_state) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; // Common structures that will be used to send query to ODBC @@ -1515,14 +1515,14 @@ UpplReturnCode Kt_Boundary::ReadBoundaryValFromDB( if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_info("Read operation has failed with error %d", read_db_status); return read_status; @@ -1534,7 +1534,7 @@ UpplReturnCode Kt_Boundary::ReadBoundaryValFromDB( if (vect_val_boundary_st.empty()) { // Read failed, return error - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_info("Read operation has failed, after reading response"); } @@ -1546,11 +1546,11 @@ UpplReturnCode Kt_Boundary::ReadBoundaryValFromDB( * @param[in] : obj_key_struct-vector of void* to bdry key structures * row_status-CsRowStatus value * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Boundary::GetModifiedRows(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::GetModifiedRows(OdbcmConnectionHandler *db_conn, vector &obj_key_struct, CsRowStatus row_status) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); @@ -1566,7 +1566,7 @@ UpplReturnCode Kt_Boundary::GetModifiedRows(OdbcmConnectionHandler *db_conn, void *boundary_key = reinterpret_cast(&obj_key_boundary); void *boundary_val = reinterpret_cast(&val_struct); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_boundary_dbtableschema; @@ -1585,14 +1585,14 @@ UpplReturnCode Kt_Boundary::GetModifiedRows(OdbcmConnectionHandler *db_conn, if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record to read"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { pfc_log_error("Read operation has failed"); - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; return read_status; } @@ -1621,19 +1621,19 @@ UpplReturnCode Kt_Boundary::GetModifiedRows(OdbcmConnectionHandler *db_conn, * @Description : This function checks whether the boundary_id exists in DB * @param[in] : data_type-UNC_DT_*,type of database * key_values-vector of keys ins string - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* based on operation type + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* based on operation type * * */ -UpplReturnCode Kt_Boundary::IsKeyExists(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_info("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string boundary_id = key_values[0]; @@ -1665,7 +1665,7 @@ UpplReturnCode Kt_Boundary::IsKeyExists(OdbcmConnectionHandler *db_conn, if (check_db_status == ODBCM_RC_CONNECTION_ERROR) { pfc_log_error("DB connection not available or cannot access DB"); - check_status = UPPL_RC_ERR_DB_ACCESS; + check_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (check_db_status == ODBCM_RC_ROW_EXISTS) { pfc_log_debug("DB returned success for Row exists"); pfc_log_debug("Checking .db_return_status_ %d with %d", @@ -1675,11 +1675,11 @@ UpplReturnCode Kt_Boundary::IsKeyExists(OdbcmConnectionHandler *db_conn, pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + check_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_DB_GET; + check_status = UNC_UPPL_RC_ERR_DB_GET; } return check_status; } @@ -1733,16 +1733,16 @@ void Kt_Boundary::Fill_Attr_Syntax_Map() { * is being referred in Logical * @param[in] : key_boundary - specifies key instance of KT_BOUNDARY * data_type-UNC_DT_*,type of database - * @return : UPPL_RC_SUCCESS if boundary is not referred - * or UPPL_RC_ERR_* if boundary is referred in logical + * @return : UNC_RC_SUCCESS if boundary is not referred + * or UNC_UPPL_RC_ERR_* if boundary is referred in logical **/ -UpplReturnCode Kt_Boundary::SendSemanticRequestToUPLL(void* key_struct, +UncRespCode Kt_Boundary::SendSemanticRequestToUPLL(void* key_struct, uint32_t data_type) { // Incase for UNC_KT_BOUNDARY delete, // check whether any referenced object // Is present in Logical Layer, // If yes DELETE should not be allowed - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); status = physical_layer->get_ipc_connection_manager()-> @@ -1751,7 +1751,7 @@ UpplReturnCode Kt_Boundary::SendSemanticRequestToUPLL(void* key_struct, data_type); pfc_log_debug("In SendSemanticRequest status=%d", status); // Boundary is being referred - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error and send error response pfc_log_error("Boundary is being referred in Logical"); } @@ -1793,20 +1793,20 @@ UpplBoundaryOperStatus Kt_Boundary::getBoundaryInputOperStatus( ctrl_data_type = UNC_DT_RUNNING; } // Get the controller's oper status and decide on the oper_status - UpplReturnCode read_oper_status = get_oper_status( + UncRespCode read_oper_status = get_oper_status( ref_oper_status, UNC_KT_CONTROLLER, reinterpret_cast(&ctr_key), ctr_oper_status); - UpplReturnCode read_status = UPPL_RC_SUCCESS; - if (read_oper_status != UPPL_RC_SUCCESS) { + UncRespCode read_status = UNC_RC_SUCCESS; + if (read_oper_status != UNC_RC_SUCCESS) { read_status = controller.GetOperStatus( db_conn, ctrl_data_type, key_type_struct, ctr_oper_status); pfc_log_info("Controller's oper_status %d", ctr_oper_status); - ADD_CTRL_OPER_STATUS(controller_name, ctr_oper_status); + ADD_CTRL_OPER_STATUS(controller_name, ctr_oper_status, ref_oper_status); } - if (read_status == UPPL_RC_SUCCESS && + if (read_status == UNC_RC_SUCCESS && ctr_oper_status != UPPL_CONTROLLER_OPER_DOWN) { // Boundary oper status does not depends on domain if (domain_name.empty()) { @@ -1824,11 +1824,11 @@ UpplBoundaryOperStatus Kt_Boundary::getBoundaryInputOperStatus( if (data_type == UNC_DT_IMPORT) { ctr_data_type = UNC_DT_RUNNING; } - UpplReturnCode ctr_type_status = + UncRespCode ctr_type_status = PhyUtil::get_controller_type(db_conn, controller_name, ctrl_type, (unc_keytype_datatype_t) ctr_data_type); - if (ctr_type_status == UPPL_RC_SUCCESS && + if (ctr_type_status == UNC_RC_SUCCESS && ctrl_type == (unc_keytype_ctrtype_t) UNC_CT_UNKNOWN) { boundary_oper_status = UPPL_BOUNDARY_OPER_UP; pfc_log_info( @@ -1847,19 +1847,19 @@ UpplBoundaryOperStatus Kt_Boundary::getBoundaryInputOperStatus( memcpy(logical_port_key.port_id, logical_port_id.c_str(), logical_port_id.length()+1); - UpplReturnCode read_oper_status = get_oper_status( + UncRespCode read_oper_status = get_oper_status( ref_oper_status, UNC_KT_LOGICAL_PORT, reinterpret_cast(&logical_port_key), logical_port_oper_status); - if (read_oper_status != UPPL_RC_SUCCESS) { + if (read_oper_status != UNC_RC_SUCCESS) { key_type_struct = reinterpret_cast(&logical_port_key); Kt_LogicalPort logical_port; // Get the logical_port's oper status and decide on the oper_status read_status = logical_port.GetOperStatus(db_conn, data_type, key_type_struct, logical_port_oper_status); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { if (data_type == UNC_DT_IMPORT) { // Check in running db as well read_status = logical_port.GetOperStatus(db_conn, UNC_DT_RUNNING, @@ -1868,18 +1868,22 @@ UpplBoundaryOperStatus Kt_Boundary::getBoundaryInputOperStatus( pfc_log_info("Logical_Port's oper_status %d", logical_port_oper_status); } - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("Returning boundary_oper_status %d", boundary_oper_status); return boundary_oper_status; } else { pfc_log_info("Logical_Port's oper_status %d", logical_port_oper_status); - ADD_LP_PORT_OPER_STATUS(logical_port_key, logical_port_oper_status); + ADD_LP_PORT_OPER_STATUS(logical_port_key, + logical_port_oper_status, + ref_oper_status); } } else { pfc_log_info("Logical_Port's oper_status %d", logical_port_oper_status); - ADD_LP_PORT_OPER_STATUS(logical_port_key, logical_port_oper_status); + ADD_LP_PORT_OPER_STATUS(logical_port_key, + logical_port_oper_status, + ref_oper_status); } } if (logical_port_oper_status == UPPL_LOGICAL_PORT_OPER_UP) { @@ -1902,18 +1906,16 @@ UpplBoundaryOperStatus Kt_Boundary::getBoundaryInputOperStatus( * value_struct-void* to bdry val structure * @return : Success or associated error code */ -UpplReturnCode Kt_Boundary::HandleOperStatus( +UncRespCode Kt_Boundary::HandleOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status) { - FN_START_TIME("HandleOperStatus", "Boundary"); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; UpplBoundaryOperStatus boundary_oper_status = UPPL_BOUNDARY_OPER_UNKNOWN; if (value_struct == NULL) { pfc_log_info("Value struct is NULL- Returning SUCCESS"); - FN_END_TIME("HandleOperStatus", "Boundary"); return return_code; } string controller_name = ""; @@ -1924,7 +1926,6 @@ UpplReturnCode Kt_Boundary::HandleOperStatus( if (obj_val_boundary->valid[kIdxBoundaryControllerName1] != UNC_VF_VALID && obj_val_boundary->valid[kIdxBoundaryControllerName2] != UNC_VF_VALID) { pfc_log_info("Controller name not valid- Returning SUCCESS"); - FN_END_TIME("HandleOperStatus", "Boundary"); return return_code; } bool ctr1_valid = false; @@ -1954,7 +1955,6 @@ UpplReturnCode Kt_Boundary::HandleOperStatus( return_code = SetOperStatus(db_conn, UNC_DT_STATE, NULL, value_struct, boundary_oper_status); pfc_log_info("Set Boundary oper status status %d", return_code); - FN_END_TIME("HandleOperStatus", "Boundary"); return return_code; } pfc_log_debug("Check the secondary controller/domain/lp set"); @@ -1962,7 +1962,7 @@ UpplReturnCode Kt_Boundary::HandleOperStatus( vector vect_key_boundary; vector vect_val_boundary_st; uint32_t max_rep_cnt = UPPL_MAX_REP_CT; - UpplReturnCode read_status = ReadBoundaryValFromDB( + UncRespCode read_status = ReadBoundaryValFromDB( db_conn, NULL, value_struct, UNC_DT_STATE, @@ -1970,13 +1970,12 @@ UpplReturnCode Kt_Boundary::HandleOperStatus( max_rep_cnt, vect_key_boundary, vect_val_boundary_st); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_debug("No boundaries associated with given controller name"); - FN_END_TIME("HandleOperStatus", "Boundary"); return return_code; } - pfc_log_debug("From db, vect_boundary size is %d", - static_cast(vect_key_boundary.size())); + pfc_log_debug("From db, vect_boundary size is %" + PFC_PFMT_SIZE_T, vect_key_boundary.size()); for (unsigned int index = 0; index < vect_key_boundary.size(); ++index) { @@ -2016,7 +2015,6 @@ UpplReturnCode Kt_Boundary::HandleOperStatus( (&vect_val_boundary_st[index].boundary), second_oper_status); } - FN_END_TIME("HandleOperStatus", "Boundary"); return return_code; } @@ -2027,14 +2025,14 @@ UpplReturnCode Kt_Boundary::HandleOperStatus( * value_struct-void* to bdry value structure * oper_status-oper status of boundary * @return : Success or associated error code, - * UPPL_RC_SUCCESS/ERR* + * UNC_RC_SUCCESS/ERR* */ -UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, void* value_struct, UpplBoundaryOperStatus oper_status) { - UpplReturnCode set_status_1 = UPPL_RC_SUCCESS; + UncRespCode set_status_1 = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); vector vect_table_attr_schema; list < vector > row_list; @@ -2042,7 +2040,7 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, string empty = ""; string controller_name = ""; string domain_name = ""; - string logical_port_id = ""; + string logical_port_id = ""; map bdry_notfn; bool ctr1_valid = false; if (value_struct != NULL) { @@ -2068,7 +2066,7 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, } } else { pfc_log_info("controller_name1/2 flag is not valid"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } } if (key_struct != NULL) { @@ -2081,10 +2079,10 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, boun_id.length(), DATATYPE_UINT8_ARRAY_32, vect_table_attr_schema); uint8_t oper_status_in_db = 0; - UpplReturnCode get_status = GetOperStatus(db_conn, data_type, + UncRespCode get_status = GetOperStatus(db_conn, data_type, key_struct, oper_status_in_db); - if (get_status == UPPL_RC_SUCCESS) { + if (get_status == UNC_RC_SUCCESS) { bdry_notfn[boun_id] = oper_status_in_db; } } else if (value_struct != NULL) { @@ -2135,7 +2133,7 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, vect_table_attr_schema); } } - UpplReturnCode get_status = GetAllBoundaryOperStatus(db_conn, + UncRespCode get_status = GetAllBoundaryOperStatus(db_conn, controller_name, domain_name, logical_port_id, @@ -2143,7 +2141,7 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, data_type); pfc_log_debug("Read existing oper status return %d", get_status); } else { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // oper_status @@ -2167,10 +2165,10 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, pfc_log_info( "oper_status update operation not success" " for controller/domain/logical_port set 1"); - set_status_1 = UPPL_RC_ERR_DB_UPDATE; + set_status_1 = UNC_UPPL_RC_ERR_DB_UPDATE; } - if (set_status_1 == UPPL_RC_SUCCESS) { + if (set_status_1 == UNC_RC_SUCCESS) { pfc_log_debug("Sending boundary oper status notification"); // Send notification map :: iterator iter = bdry_notfn.begin(); @@ -2186,7 +2184,7 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, pfc_log_debug("Oper_status in db %d, new oper_status %d", oper_status_db, oper_status); if (oper_status_db != oper_status) { - UpplReturnCode oper_notfn = SendOperStatusNotification(bdry_key, + UncRespCode oper_notfn = SendOperStatusNotification(bdry_key, oper_status_db, oper_status); pfc_log_debug("Notification Status - %d for boundary_id %s", @@ -2194,7 +2192,7 @@ UpplReturnCode Kt_Boundary::SetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** IsBoundaryReferred @@ -2321,20 +2319,20 @@ pfc_bool_t Kt_Boundary::IsBoundaryReferred(OdbcmConnectionHandler *db_conn, * @Description : This function gets the valid flag from db * @param[in] : key_struct-void* to bdry key structure * val_boundary_valid_st-instance of val_boundary_st_t - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ -UpplReturnCode Kt_Boundary::GetBoundaryValidFlag( +UncRespCode Kt_Boundary::GetBoundaryValidFlag( OdbcmConnectionHandler *db_conn, void *key_struct, val_boundary_st_t &val_boundary_valid_st, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_key_boundary; vect_key_boundary.push_back(key_struct); vector vect_val_boundary; return_code = ReadInternal(db_conn, vect_key_boundary, vect_val_boundary, data_type, UNC_OP_READ); - if (return_code == UPPL_RC_SUCCESS) { + if (return_code == UNC_RC_SUCCESS) { val_boundary_st_t *val_boundary_new_valid_st = reinterpret_cast(vect_val_boundary[0]); if (val_boundary_new_valid_st != NULL) { @@ -2404,9 +2402,9 @@ void Kt_Boundary::FrameCsAttrValue(string attr_value, * @Description : This function validates the read sibling filtering conditions * @param[in] : ctr1_valid_val,ctr2_valid_val-valid_value of controller_name * dmn1_valid_val,dmn2_valid_val-valid_value of domain_name - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ -UpplReturnCode Kt_Boundary::ValidateSiblingFiltering( +UncRespCode Kt_Boundary::ValidateSiblingFiltering( unsigned int ctr1_valid_val, unsigned int ctr2_valid_val, unsigned int dmn1_valid_val, @@ -2414,14 +2412,14 @@ UpplReturnCode Kt_Boundary::ValidateSiblingFiltering( if (dmn1_valid_val == UNC_VF_VALID && ctr1_valid_val != UNC_VF_VALID) { pfc_log_error( "domain_name1 is valid and controller_name1 is not valid"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (dmn2_valid_val == UNC_VF_VALID && ctr2_valid_val != UNC_VF_VALID) { pfc_log_error( "domain_name2 is valid and controller_name2 is not valid"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } @@ -2430,15 +2428,15 @@ UpplReturnCode Kt_Boundary::ValidateSiblingFiltering( * @param[in] : key_struct-void* to bdry key structure * data type-UNC_DT_*,type of database * param[out]:oper_status-oper status of boundary - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* */ -UpplReturnCode Kt_Boundary::GetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Boundary::GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status) { pfc_log_debug("Begin GetOperStatus"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_prim_keys; vector vect_table_attr_schema; list < vector > row_list; @@ -2483,7 +2481,7 @@ UpplReturnCode Kt_Boundary::GetOperStatus(OdbcmConnectionHandler *db_conn, } } } else { - return_code = UPPL_RC_ERR_DB_GET; + return_code = UNC_UPPL_RC_ERR_DB_GET; } return return_code; } @@ -2494,13 +2492,13 @@ UpplReturnCode Kt_Boundary::GetOperStatus(OdbcmConnectionHandler *db_conn, * @param[in] : bdry_key-object of bdry key structure * old_oper_st-old oper status * new_oper_st-new oper status - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ -UpplReturnCode Kt_Boundary::SendOperStatusNotification( +UncRespCode Kt_Boundary::SendOperStatusNotification( key_boundary_t bdry_key, uint8_t old_oper_st, uint8_t new_oper_st) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; int err = 0; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); val_boundary_st_t old_val_bdry, new_val_bdry; @@ -2511,9 +2509,9 @@ UpplReturnCode Kt_Boundary::SendOperStatusNotification( new_val_bdry.oper_status = new_oper_st; new_val_bdry.valid[kIdxBoundaryStOperStatus] = UNC_VF_VALID; ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_BOUNDARY, err); - northbound_event_header rsh = {UNC_OP_UPDATE, - UNC_DT_STATE, - UNC_KT_BOUNDARY}; + northbound_event_header rsh = {static_cast(UNC_OP_UPDATE), + static_cast(UNC_DT_STATE), + static_cast(UNC_KT_BOUNDARY)}; err = PhyUtil::sessOutNBEventHeader(ser_evt, rsh); err |= ser_evt.addOutput(bdry_key); err |= ser_evt.addOutput(new_val_bdry); @@ -2521,13 +2519,13 @@ UpplReturnCode Kt_Boundary::SendOperStatusNotification( if (err != 0) { pfc_log_error( "Server Event addOutput failed, return IPC_WRITE_ERROR"); - status = UPPL_RC_ERR_IPC_WRITE_ERROR; + status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { pfc_log_debug("%s", (IpctUtil::get_string(bdry_key)).c_str()); pfc_log_debug("%s", (IpctUtil::get_string(new_val_bdry)).c_str()); pfc_log_debug("%s", (IpctUtil::get_string(old_val_bdry)).c_str()); // Call IPC server to post the event - status = (UpplReturnCode) physical_layer + status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); } return status; @@ -2543,7 +2541,7 @@ UpplReturnCode Kt_Boundary::SendOperStatusNotification( * data_type-UNC_DT_*,type of database * @return :Success or associated error code */ -UpplReturnCode Kt_Boundary::GetAllBoundaryOperStatus( +UncRespCode Kt_Boundary::GetAllBoundaryOperStatus( OdbcmConnectionHandler *db_conn, string controller_name, string domain_name, @@ -2552,7 +2550,7 @@ UpplReturnCode Kt_Boundary::GetAllBoundaryOperStatus( uint32_t data_type) { pfc_log_debug("Begin GetAllBoundaryOperStatus"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; uint32_t max_rep_ct = UPPL_MAX_REP_CT; vector vect_table_attr_schema; list < vector > row_list; @@ -2605,7 +2603,7 @@ UpplReturnCode Kt_Boundary::GetAllBoundaryOperStatus( (unc_keytype_operation_t)UNC_OP_READ_BULK, db_conn); pfc_log_debug("GetBulk return %d", read_db_status); if (read_db_status != ODBCM_RC_SUCCESS) { - return_code = UPPL_RC_ERR_DB_GET; + return_code = UNC_UPPL_RC_ERR_DB_GET; } list < vector >& res_boundary_row_list = kt_boundary_dbtableschema.get_row_list(); @@ -2641,7 +2639,7 @@ UpplReturnCode Kt_Boundary::GetAllBoundaryOperStatus( } bdry_notfn[bdry_id] = oper_status; } - return_code = UPPL_RC_SUCCESS; + return_code = UNC_RC_SUCCESS; vector vect_table_attr_schema_1; list < vector > row_list_1; vector vect_prim_keys_1; @@ -2690,7 +2688,7 @@ UpplReturnCode Kt_Boundary::GetAllBoundaryOperStatus( (unc_keytype_operation_t)UNC_OP_READ_BULK, db_conn); pfc_log_debug("GetBulk return %d", read_db_status); if (read_db_status != ODBCM_RC_SUCCESS) { - return_code = UPPL_RC_ERR_DB_GET; + return_code = UNC_UPPL_RC_ERR_DB_GET; } list < vector >& res_boundary_row_list_1 = kt_dbtableschema.get_row_list(); @@ -2736,21 +2734,21 @@ UpplReturnCode Kt_Boundary::GetAllBoundaryOperStatus( * data_type-UNC_DT_*,type of database * @return :Success or associated error code */ -UpplReturnCode Kt_Boundary::CheckBoundaryExistence( +UncRespCode Kt_Boundary::CheckBoundaryExistence( OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, uint32_t data_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; // Check whether same boundary exists already vector vect_key, vect_val; vect_key.push_back(key_struct); vect_val.push_back(val_struct); - UpplReturnCode read_status = ReadInternal(db_conn, vect_key, + UncRespCode read_status = ReadInternal(db_conn, vect_key, vect_val, data_type, UNC_OP_READ_SIBLING_BEGIN); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int index = 0; index < vect_key.size(); ++index) { // Clear the memory val_boundary_st_t *boundary_val_st = @@ -2759,7 +2757,7 @@ UpplReturnCode Kt_Boundary::CheckBoundaryExistence( if (boundary_val_st->boundary.cs_row_status != DELETED) { pfc_log_info( "Already a boundary exists with same domain/logicalport"); - status = UPPL_RC_ERR_CFG_SEMANTIC; + status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; } delete boundary_val_st; boundary_val_st = NULL; @@ -2772,7 +2770,7 @@ UpplReturnCode Kt_Boundary::CheckBoundaryExistence( } } } - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { return status; } // Check with reverse combination as well @@ -2815,7 +2813,7 @@ UpplReturnCode Kt_Boundary::CheckBoundaryExistence( vect_val, data_type, UNC_OP_READ_SIBLING_BEGIN); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int index = 0; index < vect_key.size(); ++index) { // Clear the memory val_boundary_st_t *boundary_val_st = @@ -2824,7 +2822,7 @@ UpplReturnCode Kt_Boundary::CheckBoundaryExistence( if (boundary_val_st->boundary.cs_row_status != DELETED) { pfc_log_info( "Already a boundary exists with same domain/logicalport"); - status = UPPL_RC_ERR_CFG_SEMANTIC; + status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; } delete boundary_val_st; boundary_val_st = NULL; diff --git a/coordinator/modules/uppl/itc_kt_controller.cc b/coordinator/modules/uppl/itc_kt_controller.cc index 9c482e02..f82774ff 100644 --- a/coordinator/modules/uppl/itc_kt_controller.cc +++ b/coordinator/modules/uppl/itc_kt_controller.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -112,23 +112,23 @@ Kt_Base* Kt_Controller::GetChildClassPointer(KtControllerChildClass KIndex) { * value_struct - the values for the new kt controller instance * data_type - UNC_DT_* , Create only allowed in candidate * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::Create(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess) { - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; // Check whether operation is allowed on the given DT type if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Create operation is invoked on unsupported data type %d", data_type); - create_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + create_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { val_ctr_t obj_val_ctr = *(reinterpret_cast(val_struct)); if (obj_val_ctr.type == UNC_CT_UNKNOWN) { @@ -136,7 +136,7 @@ UpplReturnCode Kt_Controller::Create(OdbcmConnectionHandler *db_conn, obj_val_ctr.type, data_type); } - if (create_status == UPPL_RC_SUCCESS) { + if (create_status == UNC_RC_SUCCESS) { create_status = CreateKeyInstance(db_conn, key_struct, val_struct, data_type, @@ -144,8 +144,8 @@ UpplReturnCode Kt_Controller::Create(OdbcmConnectionHandler *db_conn, pfc_log_debug("CreateKeyInstance returned with status %d", create_status); } } - if (create_status == UPPL_RC_SUCCESS) { - UpplReturnCode send_status = UPPL_RC_SUCCESS; + if (create_status == UNC_RC_SUCCESS) { + UncRespCode send_status = UNC_RC_SUCCESS; // Sending the Created Controller Information to Logical Layer send_status = SendUpdatedControllerInfoToUPLL(UNC_DT_CANDIDATE, UNC_OP_CREATE, @@ -164,15 +164,15 @@ UpplReturnCode Kt_Controller::Create(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - create_status}; + static_cast(create_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - create_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + create_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - create_status = UPPL_RC_SUCCESS; + create_status = UNC_RC_SUCCESS; } return create_status; } @@ -184,15 +184,15 @@ UpplReturnCode Kt_Controller::Create(OdbcmConnectionHandler *db_conn, * value_struct - the values for the new kt controller instance * data_type - UNC_DT_* , Create only allowed in candidate * key_type-UNC_KT_CONTROLLER,value of unc_key_type_t - * @return : UPPL_RC_SUCCESS is returned when the create is success - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * @return : UNC_RC_SUCCESS is returned when the create is success + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::CreateKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Structure used to send request to ODBC DBTableSchema kt_controller_dbtableschema; @@ -212,11 +212,11 @@ UpplReturnCode Kt_Controller::CreateKeyInstance(OdbcmConnectionHandler *db_conn, if (create_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - create_status = UPPL_RC_ERR_DB_ACCESS; + create_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon pfc_log_error("Create operation has failed"); - create_status = UPPL_RC_ERR_DB_CREATE; + create_status = UNC_UPPL_RC_ERR_DB_CREATE; } } else { pfc_log_info("Create of a controller in data type(%d) is success", @@ -234,22 +234,22 @@ UpplReturnCode Kt_Controller::CreateKeyInstance(OdbcmConnectionHandler *db_conn, * value_struct - the values for the kt controller instance * data_type - UNC_DT_* , Update only allowed in candidate * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::Update(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess) { - UpplReturnCode update_status = UPPL_RC_SUCCESS; + UncRespCode update_status = UNC_RC_SUCCESS; if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Update operation is invoked on unsupported data type %d", data_type); - update_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + update_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { update_status = UpdateKeyInstance(db_conn, key_struct, val_struct, @@ -257,8 +257,8 @@ UpplReturnCode Kt_Controller::Update(OdbcmConnectionHandler *db_conn, UNC_KT_CONTROLLER); pfc_log_debug("UpdateKeyInstance returned with status %d", update_status); } - if (update_status == UPPL_RC_SUCCESS) { - UpplReturnCode send_status = UPPL_RC_SUCCESS; + if (update_status == UNC_RC_SUCCESS) { + UncRespCode send_status = UNC_RC_SUCCESS; // Sending the Created Controller Information to Logical Layer send_status = SendUpdatedControllerInfoToUPLL( UNC_DT_CANDIDATE, @@ -278,15 +278,15 @@ UpplReturnCode Kt_Controller::Update(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - update_status}; + static_cast(update_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - update_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + update_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - update_status = UPPL_RC_SUCCESS; + update_status = UNC_RC_SUCCESS; } return update_status; } @@ -299,16 +299,16 @@ UpplReturnCode Kt_Controller::Update(OdbcmConnectionHandler *db_conn, * value_struct - the values for the new kt controller instance * data_type - UNC_DT_* , update only allowed in candidate * key_type-UNC_KT_CONTROLLER,value of unc_key_type_t - * @return : UPPL_RC_SUCCESS is returned when the update + * @return : UNC_RC_SUCCESS is returned when the update * is done successfully. - * UPPL_RC_ERR_* is returned when the update is error + * UNC_UPPL_RC_ERR_* is returned when the update is error * */ -UpplReturnCode Kt_Controller::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode update_status = UPPL_RC_SUCCESS; + UncRespCode update_status = UNC_RC_SUCCESS; // Structure used to send request to ODBC DBTableSchema kt_controller_dbtableschema; // Create DBSchema structure for controller_table @@ -329,10 +329,10 @@ UpplReturnCode Kt_Controller::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, if (update_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - update_status = UPPL_RC_ERR_DB_ACCESS; + update_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon - update_status = UPPL_RC_ERR_DB_UPDATE; + update_status = UNC_UPPL_RC_ERR_DB_UPDATE; } } else { pfc_log_info("Update of a controller in data_type(%d) is success", @@ -352,17 +352,17 @@ UpplReturnCode Kt_Controller::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, * key_struct - the key for the kt controller instance * data_type - UNC_DT_* , delete only allowed in candidate * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession &sess) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; key_ctr_t *obj_key_ctr = reinterpret_cast(key_struct); string controller_name = (const char*)obj_key_ctr->controller_name; // Check whether the controller is being imported @@ -373,7 +373,7 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, if (itc_trans->IsControllerInImport(controller_name) == PFC_TRUE) { pfc_log_info("Import is in progress for controller %s, Delete not allowed", controller_name.c_str()); - delete_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + delete_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; // Populate the response to be sent in ServerSession physical_response_header rsh = {session_id, configuration_id, @@ -382,16 +382,16 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - delete_status}; + static_cast(delete_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_debug( "Server session addOutput failed, so return IPC_WRITE_ERROR"); - delete_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + delete_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } return delete_status; } @@ -405,7 +405,7 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, pfc_log_error( "Controller is referred in Boundary, " "so delete is not allowed"); - delete_status = UPPL_RC_ERR_CFG_SEMANTIC; + delete_status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; // Populate the response to be sent in ServerSession physical_response_header rsh = {session_id, configuration_id, @@ -414,29 +414,29 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - delete_status}; + static_cast(delete_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_debug( "Server session addOutput failed, so return IPC_WRITE_ERROR"); - delete_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + delete_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } return delete_status; } // Check whether CONTROLLER is being referred in Logical layer delete_status = SendSemanticRequestToUPLL(key_struct, data_type); - if (delete_status != UPPL_RC_SUCCESS) { + if (delete_status != UNC_RC_SUCCESS) { // log error and send error response pfc_log_error( "Controller is referred in Logical, " "so delete is not allowed"); } - if (delete_status == UPPL_RC_SUCCESS) { + if (delete_status == UNC_RC_SUCCESS) { // Delete child classes and then delete controller // In candidate db, only domain will be available int child_class = KIdxDomain; @@ -446,7 +446,7 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, child[child_class] = GetChildClassPointer( (KtControllerChildClass)child_class); if (child[child_class] != NULL) { - UpplReturnCode ch_delete_status = + UncRespCode ch_delete_status = child[child_class]->DeleteKeyInstance(db_conn, child_key_struct, data_type, @@ -454,28 +454,28 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, delete child[child_class]; child[child_class] = NULL; FreeChildKeyStruct(child_key_struct, child_class); - if (ch_delete_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + if (ch_delete_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { pfc_log_debug("Child not available for controller"); } - if (ch_delete_status != UPPL_RC_ERR_NO_SUCH_INSTANCE && - ch_delete_status != UPPL_RC_SUCCESS) { + if (ch_delete_status != UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE && + ch_delete_status != UNC_RC_SUCCESS) { // child delete failed, so return error pfc_log_error("Delete failed for child %d with error %d", child_class, delete_status); - delete_status = UPPL_RC_ERR_CFG_SEMANTIC; + delete_status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; } } else { // Free key struct FreeChildKeyStruct(child_key_struct, child_class); } // Delete the controller now - if (delete_status == UPPL_RC_SUCCESS) { + if (delete_status == UNC_RC_SUCCESS) { delete_status = DeleteKeyInstance(db_conn, key_struct, data_type, UNC_KT_CONTROLLER); } } - if (delete_status == UPPL_RC_SUCCESS) { - UpplReturnCode send_status = UPPL_RC_SUCCESS; + if (delete_status == UNC_RC_SUCCESS) { + UncRespCode send_status = UNC_RC_SUCCESS; // Sending the Created Controller Information to Logical Layer send_status = SendUpdatedControllerInfoToUPLL( UNC_DT_CANDIDATE, @@ -494,15 +494,15 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - delete_status}; + static_cast(delete_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_debug("Server session addOutput failed, so return IPC_WRITE_ERROR"); - delete_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + delete_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } return delete_status; } @@ -514,15 +514,15 @@ UpplReturnCode Kt_Controller::Delete(OdbcmConnectionHandler *db_conn, * key_struct - the key for the new kt controller instance * data_type - UNC_DT_* , delete only allowed in candidate * key_type-UNC_DT_CONTROLLER,value of unc_keytype_t - * @return : UPPL_RC_SUCCESS is returned when the delete + * @return : UNC_RC_SUCCESS is returned when the delete * is done successfully. - * UPPL_RC_ERR_* is returned when the delete is error + * UNC_UPPL_RC_ERR_* is returned when the delete is error * */ -UpplReturnCode Kt_Controller::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; key_ctr_t *obj_key_ctr= reinterpret_cast(key_struct); string controller_name = (const char*)obj_key_ctr->controller_name; // Structure used to send request to ODBC @@ -556,12 +556,12 @@ UpplReturnCode Kt_Controller::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (delete_db_status == ODBCM_RC_ROW_NOT_EXISTS) { - delete_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + delete_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { // log error to log daemon - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else { pfc_log_info("Delete of a controller in data_type(%d) is success", @@ -577,11 +577,11 @@ UpplReturnCode Kt_Controller::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, * value_struct - the value for the kt controller instance * data_type - UNC_DT_* , read allowed in candidate/running/startup/state * operation_type-UNC_OP_*,type of operation - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ReadInternal(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::ReadInternal(OdbcmConnectionHandler *db_conn, vector &ctr_key, vector &ctr_val, uint32_t data_type, @@ -601,7 +601,7 @@ UpplReturnCode Kt_Controller::ReadInternal(OdbcmConnectionHandler *db_conn, val_struct = reinterpret_cast(&st_ctr_val.controller); } // Get read response from database - UpplReturnCode read_status = ReadCtrValFromDB(db_conn, key_struct, + UncRespCode read_status = ReadCtrValFromDB(db_conn, key_struct, val_struct, data_type, operation_type, @@ -610,12 +610,13 @@ UpplReturnCode Kt_Controller::ReadInternal(OdbcmConnectionHandler *db_conn, vect_controller_id); ctr_key.clear(); ctr_val.clear(); - pfc_log_info("ReadCtrValFromDB returned %d with response size %d", + pfc_log_info("ReadCtrValFromDB returned %d with response size %" + PFC_PFMT_SIZE_T, read_status, - static_cast(vect_val_ctr_st.size())); - if (read_status == UPPL_RC_SUCCESS) { - pfc_log_debug("ReadCtrValFromDB returned %d with response size %d", - read_status, static_cast(vect_val_ctr_st.size())); + vect_val_ctr_st.size()); + if (read_status == UNC_RC_SUCCESS) { + pfc_log_debug("ReadCtrValFromDB returned %d with response size %" + PFC_PFMT_SIZE_T, read_status, vect_val_ctr_st.size()); for (unsigned int iIndex = 0 ; iIndex < vect_controller_id.size(); ++iIndex) { key_ctr_t *key_ctr = new key_ctr_t; @@ -645,11 +646,11 @@ UpplReturnCode Kt_Controller::ReadInternal(OdbcmConnectionHandler *db_conn, * child_index-index indicating the children of Controller * parent_call - indicates whether parent has called this readbulk * is_read_next - indicates whether this function is invoked from readnext - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -658,7 +659,7 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_bool_t is_read_next, ReadRequest *read_req) { pfc_log_info("Processing ReadBulk of Kt_Controller"); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_ctr_t* obj_key_ctr= reinterpret_cast(key_struct); vector vect_val_ctr; @@ -666,13 +667,13 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, data_type != UNC_DT_STATE && data_type != UNC_DT_STARTUP) { pfc_log_debug("ReadBulk operation is not allowed in %d data type", data_type); - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return read_status; } pfc_bool_t ctr_exists = PFC_FALSE; if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct is 0"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } string str_controller_name = reinterpret_cast(&obj_key_ctr->controller_name); @@ -683,11 +684,11 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, // Check for controller key existence vector vect_ctr_key_value; vect_ctr_key_value.push_back(str_controller_name); - UpplReturnCode key_exist_status = IsKeyExists( + UncRespCode key_exist_status = IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, vect_ctr_key_value); - if (key_exist_status == UPPL_RC_SUCCESS) { + if (key_exist_status == UNC_RC_SUCCESS) { ctr_exists = PFC_TRUE; } } @@ -708,7 +709,7 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, val_ctr_st_t dummy_val_ctr; vect_val_ctr.insert(vect_val_ctr.begin(), dummy_val_ctr); } - if (read_status == UPPL_RC_SUCCESS || + if (read_status == UNC_RC_SUCCESS || ctr_exists == PFC_TRUE) { // For each controller, read the child's attributes vector ::iterator vect_iter = vect_val_ctr.begin(); @@ -761,7 +762,7 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, --max_rep_ct; if (max_rep_ct == 0) { pfc_log_debug("Controller - max_rep_ct reached zero..."); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } ctr_exists = PFC_FALSE; @@ -786,7 +787,7 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, continue; } pfc_log_debug("Controller Calling child %d read bulk", kIdx); - UpplReturnCode ch_read_status = child[kIdx]->ReadBulk( + UncRespCode ch_read_status = child[kIdx]->ReadBulk( db_conn, child_key_struct, data_type, max_rep_ct, @@ -801,13 +802,13 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, FreeChildKeyStruct(child_key_struct, kIdx); if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct reached zero, so returning"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } // reset child index child_index = -1; } - } else if (read_status == UPPL_RC_ERR_DB_ACCESS) { + } else if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("KtController ReadBulk - Returning DB Access Error"); return read_status; } @@ -827,14 +828,14 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, read_req); pfc_log_debug("read status from next kin Kt_Root is %d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } pfc_log_debug("KT_Controller - Reached end of table"); pfc_log_debug("read_status is %d", read_status); - if (read_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { - read_status = UPPL_RC_SUCCESS; + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { + read_status = UNC_RC_SUCCESS; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**ReadBulkInternal @@ -847,11 +848,11 @@ UpplReturnCode Kt_Controller::ReadBulk(OdbcmConnectionHandler *db_conn, * max_rep_ct - specifies number of rows to be returned * vect_val_ctr - indicates the fetched values from db of val_ctr type * vect_ctr_id - indicates the fetched contoller names from db - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ReadBulkInternal( +UncRespCode Kt_Controller::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -860,10 +861,10 @@ UpplReturnCode Kt_Controller::ReadBulkInternal( vector &vect_val_ctr, vector &vect_ctr_id) { if (max_rep_ct <= 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_controller_dbtableschema; // Populate DBSchema for controller_table @@ -881,14 +882,14 @@ UpplReturnCode Kt_Controller::ReadBulkInternal( (unc_keytype_operation_t)UNC_OP_READ_BULK, db_conn); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record to read"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("ReadBulk operation has failed with %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; pfc_log_error("ReadBulk operation has failed with %d", read_db_status); return read_status; } @@ -910,16 +911,16 @@ UpplReturnCode Kt_Controller::ReadBulkInternal( * value_struct - the value for the kt controller instance * data_type - UNC_DT_*,type of database * operation_type - UNC_OP*,type of operation - * @return : UPPL_RC_SUCCESS is returned when the validation is successful - * UPPL_RC_ERR_* is returned when validation is failure + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure * */ -UpplReturnCode Kt_Controller::PerformSyntaxValidation( +UncRespCode Kt_Controller::PerformSyntaxValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; map attr_syntax_map = attr_syntax_map_all[UNC_KT_CONTROLLER]; @@ -927,12 +928,12 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( key_ctr *key = reinterpret_cast(key_struct); string value = reinterpret_cast(key->controller_name); IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } unc_keytype_ctrtype_t ctr_type = UNC_CT_UNKNOWN; - UpplReturnCode ctr_type_code = UPPL_RC_SUCCESS; + UncRespCode ctr_type_code = UNC_RC_SUCCESS; if (operation == UNC_OP_UPDATE) { ctr_type_code = PhyUtil::get_controller_type( db_conn, value, @@ -951,8 +952,8 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( ctr_type, ctr_type_code, val_ctr); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } ret_code = ValidateControllerVersion( db_conn, operation, @@ -960,8 +961,8 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( ctr_type, ctr_type_code, val_ctr); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } ret_code = ValidateControllerDescription( db_conn, operation, @@ -969,8 +970,8 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( ctr_type, ctr_type_code, val_ctr); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } ret_code = ValidateControllerIpAddress( db_conn, operation, @@ -979,8 +980,8 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( ctr_type_code, key_struct, val_struct); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } ret_code = ValidateControllerUser( db_conn, operation, @@ -988,8 +989,8 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( ctr_type, ctr_type_code, val_ctr); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } ret_code = ValidateControllerPassword( db_conn, operation, @@ -997,8 +998,8 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( ctr_type, ctr_type_code, val_ctr); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } ret_code = ValidateControllerEnableAudit( db_conn, operation, @@ -1006,8 +1007,8 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( ctr_type, ctr_type_code, val_ctr); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } return ret_code; @@ -1017,12 +1018,12 @@ UpplReturnCode Kt_Controller::PerformSyntaxValidation( * @Description : This function checks capability for UNC_KT_CONTROLLER * @param[in] : version - specifies the version to be used for validation * key type - specifies UNC_KT_CONTROLLER,value of unc_key_type_t - * @return : UPPL_RC_SUCCESS if validation is successful - * or UPPL_RC_ERR_* if validation is failed + * @return : UNC_RC_SUCCESS if validation is successful + * or UNC_UPPL_RC_ERR_* if validation is failed * */ -UpplReturnCode Kt_Controller::ValidateCtrlrValueCapability(string version, +UncRespCode Kt_Controller::ValidateCtrlrValueCapability(string version, uint32_t key_type) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); map::iterator itVal; map attr_syntax_map = @@ -1040,7 +1041,7 @@ UpplReturnCode Kt_Controller::ValidateCtrlrValueCapability(string version, key_type, attribute_name); } - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { pfc_log_info("Error from ValidateAttribInCtrlrCap is %d", resp_code); return resp_code; } @@ -1053,10 +1054,10 @@ UpplReturnCode Kt_Controller::ValidateCtrlrValueCapability(string version, * @param[in] : version - specifies the controller version * key type - contains UNC_KT_CONTROLLER,value of unc_key_type_t * data_type - UNC_DT_*, type of database - * @return : UPPL_RC_SUCCESS if scalability number is within range - * or UPPL_RC_ERR_* if not + * @return : UNC_RC_SUCCESS if scalability number is within range + * or UNC_UPPL_RC_ERR_* if not * */ -UpplReturnCode Kt_Controller::ValidateCtrlrScalability( +UncRespCode Kt_Controller::ValidateCtrlrScalability( OdbcmConnectionHandler *db_conn, string version, uint32_t key_type, @@ -1073,29 +1074,29 @@ UpplReturnCode Kt_Controller::ValidateCtrlrScalability( if (response_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } else if (response_status == ODBCM_RC_SUCCESS) { uint32_t scalability_num = 0; - UpplReturnCode resp_code = physical_layer->get_physical_core()-> + UncRespCode resp_code = physical_layer->get_physical_core()-> GetScalabilityNumber(version, key_type, scalability_num); - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { pfc_log_error("Unable to get scalability number from system"); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } if ((uint32_t)response_count >= scalability_num) { pfc_log_debug("Count from DB: %d", response_count); pfc_log_debug("Count from Physical Core: %d", scalability_num); pfc_log_error("scalability range exceeded for kt_controller"); - return UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; + return UNC_UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; } } else { pfc_log_error("Unable to get scalability number from DB, error is %d", response_status); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ValidateUnKnownCtrlrScalability @@ -1103,10 +1104,10 @@ UpplReturnCode Kt_Controller::ValidateCtrlrScalability( * @param[in] : type - specifies the controller type * key_struct - contains UNC_KT_CONTROLLER key structure * data_type - UNC_DT_*, unknown controler scalability number and data_type - * @return : UPPL_RC_SUCCESS if unknown controler scalability number - * is within range or UPPL_RC_ERR_* if not + * @return : UNC_RC_SUCCESS if unknown controler scalability number + * is within range or UNC_UPPL_RC_ERR_* if not * */ -UpplReturnCode Kt_Controller::ValidateUnknownCtrlrScalability( +UncRespCode Kt_Controller::ValidateUnknownCtrlrScalability( OdbcmConnectionHandler *db_conn, void *key_struct, uint8_t type, @@ -1145,7 +1146,7 @@ UpplReturnCode Kt_Controller::ValidateUnknownCtrlrScalability( if (response_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } else if (response_status == ODBCM_RC_SUCCESS || response_status == ODBCM_RC_RECORD_NOT_FOUND) { uint32_t unknown_ctrl_count = @@ -1155,14 +1156,14 @@ UpplReturnCode Kt_Controller::ValidateUnknownCtrlrScalability( pfc_log_debug("Count from DB: %d", count); pfc_log_debug("Count from Physical Core: %d", unknown_ctrl_count); pfc_log_error("scalability range exceeded for unknown kt_controller"); - return UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; + return UNC_UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT; } } else { pfc_log_error("Unable to get sibling count from DB, error is %d", response_status); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** PerformSemanticValidation @@ -1172,41 +1173,41 @@ UpplReturnCode Kt_Controller::ValidateUnknownCtrlrScalability( * value_struct - specifies value of KT_CONTROLLER,value of unc_key_type_t * operation - UNC_OP*,type of operation * data_type - UNC_DT*,type of database - * @return : UPPL_RC_SUCCESS if semantic valition is successful - * or UPPL_RC_ERR_* if failed + * @return : UNC_RC_SUCCESS if semantic valition is successful + * or UNC_UPPL_RC_ERR_* if failed * */ -UpplReturnCode Kt_Controller::PerformSemanticValidation( +UncRespCode Kt_Controller::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; // Check whether the given instance of controller exists in DB key_ctr_t *obj_key_ctr = reinterpret_cast(key_struct); string controller_name = (const char*)obj_key_ctr->controller_name; vector ctr_vect_key_value; ctr_vect_key_value.push_back(controller_name); - UpplReturnCode key_status = IsKeyExists(db_conn, + UncRespCode key_status = IsKeyExists(db_conn, (unc_keytype_datatype_t)data_type, ctr_vect_key_value); // In case of create operation, key should not exist if (operation == UNC_OP_CREATE) { - if (key_status == UPPL_RC_SUCCESS) { + if (key_status == UNC_RC_SUCCESS) { pfc_log_error("Key instance already exists, "); pfc_log_error("Hence create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; - } else if (key_status == UPPL_RC_ERR_DB_ACCESS) { + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; + } else if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; - } else if (key_status == UPPL_RC_ERR_DB_GET) { + } else if (key_status == UNC_UPPL_RC_ERR_DB_GET) { pfc_log_debug("Key does not exist. Validate Ip Address/ Type"); // Check whether any controller with same type and ip address exists status = ValidateTypeIpAddress(db_conn, key_struct, val_struct, data_type); - if (status == UPPL_RC_SUCCESS) { + if (status == UNC_RC_SUCCESS) { pfc_log_debug("Validating Type and Ip Address in Running Db"); status = ValidateTypeIpAddress(db_conn, key_struct, val_struct, @@ -1216,13 +1217,13 @@ UpplReturnCode Kt_Controller::PerformSemanticValidation( } else if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { // In case of update/delete/read operation, key should exist - if (key_status == UPPL_RC_ERR_DB_ACCESS) { + if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; - } else if (key_status != UPPL_RC_SUCCESS) { + } else if (key_status != UNC_RC_SUCCESS) { pfc_log_error("Key instance does not exist"); pfc_log_error("Hence update/delete/read operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } } return status; @@ -1233,21 +1234,21 @@ UpplReturnCode Kt_Controller::PerformSemanticValidation( * is being referred in Logical * @param[in] : key_ctr - specifies key instance of KT_CONTROLLER * data_type-UNC_DT_*,type of database - * @return : UPPL_RC_SUCCESS if controller is not referred - * or UPPL_RC_ERR_* if controller is referred in logical + * @return : UNC_RC_SUCCESS if controller is not referred + * or UNC_UPPL_RC_ERR_* if controller is referred in logical * */ -UpplReturnCode Kt_Controller::SendSemanticRequestToUPLL(void* key_struct, +UncRespCode Kt_Controller::SendSemanticRequestToUPLL(void* key_struct, uint32_t data_type) { // Incase for UNC_KT_CONTROLLER delete, check whether any referenced object // Is present in Logical Layer, If yes DELETE should not be allowed pfc_log_debug("Inside SendSemanticRequestToUPLL of KTController"); - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); status = physical_layer->get_ipc_connection_manager()-> get_ipc_client_logical_handler()->CheckInUseInLogical(UNC_KT_CONTROLLER, key_struct, data_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error and send error response pfc_log_error("Controller is being referred in Logical"); } @@ -1263,10 +1264,10 @@ UpplReturnCode Kt_Controller::SendSemanticRequestToUPLL(void* key_struct, * is_events_done-flag to indicate whether event is processed * old_value_struct - old value of KT_CONTROLLER * new_value_struct - new value of KT_CONTROLLER - * @return : UPPL_RC_SUCCESS if events are handled successfully or - * UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS if events are handled successfully or + * UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Controller::HandleDriverEvents( +UncRespCode Kt_Controller::HandleDriverEvents( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t oper_type, @@ -1277,7 +1278,7 @@ UpplReturnCode Kt_Controller::HandleDriverEvents( key_ctr *obj_key_ctr= reinterpret_cast(key_struct); val_ctr_st *obj_old_val_ctr = reinterpret_cast(old_val_struct); val_ctr_st *obj_new_val_ctr = reinterpret_cast(new_val_struct); - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; string controller_name = reinterpret_cast (obj_key_ctr->controller_name); if (oper_type != UNC_OP_UPDATE) { @@ -1294,23 +1295,23 @@ UpplReturnCode Kt_Controller::HandleDriverEvents( string act_version = (const char*)obj_new_val_ctr->actual_version; status = SetActualVersion(db_conn, key_struct, act_version, UNC_DT_RUNNING, UNC_VF_VALID); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error pfc_log_error("act_version update operation failed for running"); } status = SetActualVersion(db_conn, key_struct, act_version, UNC_DT_CANDIDATE, UNC_VF_VALID); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error pfc_log_error("act_version update operation failed for candidate"); } } // Read old_oper_status from DB uint8_t oper_status_db = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, oper_status_db); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { return read_status; } uint8_t new_oper_status = UPPL_CONTROLLER_OPER_DOWN; @@ -1332,20 +1333,20 @@ UpplReturnCode Kt_Controller::HandleDriverEvents( if (is_controller_in_audit == PFC_TRUE) { pfc_log_debug("Calling MergeAuditDbToRunning"); // To cancel the already running timer in Audit - UpplReturnCode cancel_ret = ipc_mgr->CancelTimer(controller_name); - if (cancel_ret != UPPL_RC_SUCCESS) { + UncRespCode cancel_ret = ipc_mgr->CancelTimer(controller_name); + if (cancel_ret != UNC_RC_SUCCESS) { pfc_log_info("Failure in cancelling timer for controller %s", controller_name.c_str()); } AuditRequest audit_req; - UpplReturnCode merge_auditdb = + UncRespCode merge_auditdb = audit_req.MergeAuditDbToRunning(db_conn, controller_name); - if (merge_auditdb != UPPL_RC_SUCCESS) { + if (merge_auditdb != UNC_RC_SUCCESS) { pfc_log_info("Merge of audit and running db failed"); } } // Check for Ip Address and remove state db if no ip address is found - UpplReturnCode state_status = CheckIpAndClearStateDB(db_conn, key_struct); + UncRespCode state_status = CheckIpAndClearStateDB(db_conn, key_struct); pfc_log_debug("Ip and state db processing status : %d", state_status); } pfc_log_info("New Oper_status to be set is: %d", new_oper_status); @@ -1380,17 +1381,17 @@ UpplReturnCode Kt_Controller::HandleDriverEvents( * data_type-UNC_DT_*,type of database * alarm_type-type of alarm raised * oper_type-UNC_OP_*,type of operation - * @return : UPPL_RC_SUCCESS if alarm is handled successfully or - * UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS if alarm is handled successfully or + * UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Controller::HandleDriverAlarms( +UncRespCode Kt_Controller::HandleDriverAlarms( OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; // Following alarms are sent for kt_controller if (alarm_type == UNC_PHYS_PATH_FAULT) { pfc_log_info("PHYS_PATH_FAULT alarm received from driver"); @@ -1505,10 +1506,10 @@ UpplReturnCode Kt_Controller::HandleDriverAlarms( } if (err != 0) { pfc_log_error("Server Event addOutput failed, return IPC_WRITE_ERROR"); - status = UPPL_RC_ERR_IPC_WRITE_ERROR; + status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { // Call IPC server to post the event - status = (UpplReturnCode) physical_layer->get_ipc_connection_manager()-> + status = (UncRespCode) physical_layer->get_ipc_connection_manager()-> SendEvent(&ser_evt); } } else { @@ -1521,18 +1522,18 @@ UpplReturnCode Kt_Controller::HandleDriverAlarms( * @Description : This function checks whether the controller_id exists in DB * @param[in] : data type - UNC_DT_*,type of database * key value - Contains controller_id - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* based on operation type + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* based on operation type * */ -UpplReturnCode Kt_Controller::IsKeyExists( +UncRespCode Kt_Controller::IsKeyExists( OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_error("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = key_values[0]; // Structure used to send request to ODBC @@ -1563,7 +1564,7 @@ UpplReturnCode Kt_Controller::IsKeyExists( if (check_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - check_status = UPPL_RC_ERR_DB_ACCESS; + check_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (check_db_status == ODBCM_RC_ROW_EXISTS) { pfc_log_debug("DB returned success for Row exists"); pfc_log_debug("Checking .db_return_status_ %d with %d", @@ -1573,11 +1574,11 @@ UpplReturnCode Kt_Controller::IsKeyExists( pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_debug("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_DB_GET; + check_status = UNC_UPPL_RC_ERR_DB_GET; } } else { pfc_log_debug("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_DB_GET; + check_status = UNC_UPPL_RC_ERR_DB_GET; } pfc_log_debug("check_status = %d", check_status); return check_status; @@ -1589,14 +1590,14 @@ UpplReturnCode Kt_Controller::IsKeyExists( * @param[in] : key_struct-void* to CTR key structure * value_struct-void* to CTR val structure * data_type-UNC_DT_*,type of database - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Controller::HandleOperStatus( +UncRespCode Kt_Controller::HandleOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; return_code = HandleOperStatus(db_conn, data_type, key_struct, value_struct, @@ -1611,17 +1612,16 @@ UpplReturnCode Kt_Controller::HandleOperStatus( * value_struct - identifies the controller value structure * data_type-UNC_DT_*,type of database * bIsInternal-based on this flag,oper status is updated - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Controller::HandleOperStatus( +UncRespCode Kt_Controller::HandleOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, bool bIsInternal) { - FN_START_TIME("HandleOperStatus", "Controller"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; val_ctr_st *obj_val_ctr = reinterpret_cast(value_struct); key_ctr_t *obj_key_ctr = reinterpret_cast(key_struct); string controller_name = (const char*)obj_key_ctr->controller_name; @@ -1634,13 +1634,13 @@ UpplReturnCode Kt_Controller::HandleOperStatus( oper_value = UPPL_CONTROLLER_OPER_WAITING_AUDIT; } } - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, oper_status_db); pfc_log_debug("Get OperStatus return: %d", read_status); // Update oper_status in controller_table return_code = SetOperStatus(db_conn, data_type, key_struct, oper_value); - if (return_code != UPPL_RC_SUCCESS) { + if (return_code != UNC_RC_SUCCESS) { pfc_log_info("oper_status update operation failed %d", return_code); return return_code; } @@ -1662,12 +1662,14 @@ UpplReturnCode Kt_Controller::HandleOperStatus( // Send CONTROLLER_DISCONNECT alarm // Call PhysicalCore's SendControllerDisconnectAlarm() pfc_log_info("Sending Controller Disconnect alarm"); - UpplReturnCode alarms_status= + UncRespCode alarms_status= physical_layer->get_physical_core()-> SendControllerDisconnectAlarm(controller_name); pfc_log_info("Alarm status: %d", alarms_status); vector ref_oper_status; - ADD_CTRL_OPER_STATUS(controller_name, obj_val_ctr->oper_status); + ADD_CTRL_OPER_STATUS(controller_name, + obj_val_ctr->oper_status, + ref_oper_status); return_code = NotifyOperStatus(db_conn, UNC_DT_RUNNING, key_struct, value_struct, @@ -1678,13 +1680,12 @@ UpplReturnCode Kt_Controller::HandleOperStatus( // Send CONTROLLER_CONNECT alarm // Call PhysicalCore's SendControllerConnectAlarm() pfc_log_info("Sending Controller Connect alarm"); - UpplReturnCode alarms_status= + UncRespCode alarms_status= physical_layer->get_physical_core()-> SendControllerConnectAlarm(controller_name); pfc_log_info("Alarm status: %d", alarms_status); } - FN_END_TIME("HandleOperStatus", "Controller"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** NotifyOperStatus @@ -1693,15 +1694,15 @@ UpplReturnCode Kt_Controller::HandleOperStatus( * @param[in] : data_type-UNC_DT_*,type of database * key_struct-void* to CTR key structure * value_struct-void* to CTR val structure - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Controller::NotifyOperStatus( +UncRespCode Kt_Controller::NotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; key_ctr *key = reinterpret_cast(key_struct); string controller_name = reinterpret_cast(key->controller_name); @@ -1934,11 +1935,11 @@ void Kt_Controller::PopulateDBSchemaForKtTable( } else { prev_db_val = 0; } - value.clear(); PhyUtil::FillDbSchema(unc::uppl::CTR_ACTUAL_VERSION, CTR_ACTUAL_VERSION_STR, value, value.length(), DATATYPE_UINT8_ARRAY_32, operation_type, valid_val, prev_db_val, vect_table_attr_schema, vect_prim_keys, valid); + value.clear(); // oper_status if (operation_type == UNC_OP_UPDATE) { valid_val = UNC_VF_INVALID; @@ -2148,12 +2149,12 @@ void Kt_Controller::FillControllerValueStructure( * sess- object of ServerSession * option1,option2-UNC_OPT1/OPT2_*,additional infor read operations * max_rep_ct-max. no of records to be read - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR*, - * UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*, + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -2167,7 +2168,7 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, pfc_log_info("Inside PerformRead operation_type=%d data_type=%d", operation_type, data_type); key_ctr_t *obj_key_ctr= reinterpret_cast(key_struct); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; if (option1 != UNC_OPT1_NORMAL) { pfc_log_error("Invalid option1 specified for read operation"); physical_response_header rsh = {session_id, @@ -2177,15 +2178,15 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - UPPL_RC_ERR_INVALID_OPTION1}; + static_cast(UNC_UPPL_RC_ERR_INVALID_OPTION1)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (option2 != UNC_OPT2_NONE) { pfc_log_error("Invalid option2 specified for read operation"); @@ -2196,15 +2197,15 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - UPPL_RC_ERR_INVALID_OPTION2}; + static_cast(UNC_UPPL_RC_ERR_INVALID_OPTION2)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (operation_type == UNC_OP_READ) { max_rep_ct = 1; @@ -2222,15 +2223,15 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; + static_cast(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Read from DB directly for all data types vector vect_controller_id; @@ -2249,8 +2250,9 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - read_status}; - if (read_status == UPPL_RC_SUCCESS) { + static_cast(read_status)}; + + if (read_status == UNC_RC_SUCCESS) { for (unsigned int index = 0; index < vect_val_ctr_st.size(); ++index) { string controller_name = vect_controller_id[index]; if (data_type == UNC_DT_CANDIDATE && @@ -2262,20 +2264,20 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, } } if (rsh.max_rep_count == 0) { - rsh.result_code = UPPL_RC_ERR_NO_SUCH_INSTANCE; + rsh.result_code = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } int err = PhyUtil::sessOutRespHeader(sess, rsh); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } for (unsigned int index = 0; index < vect_val_ctr_st.size(); ++index) { key_ctr_t obj_ctr; @@ -2312,7 +2314,7 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, err |= sess.addOutput(*obj_key_ctr); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } pfc_log_debug("Return value for read operation %d", read_status); @@ -2330,12 +2332,12 @@ UpplReturnCode Kt_Controller::PerformRead(OdbcmConnectionHandler *db_conn, * max_rep_ct-max no of records to be read * vect_val_ctr_st-instance of vector * controller_id-instance of vector containing ctr keys - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* - * UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ReadCtrValFromDB( +UncRespCode Kt_Controller::ReadCtrValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -2346,10 +2348,10 @@ UpplReturnCode Kt_Controller::ReadCtrValFromDB( vector &controller_id) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; // Common structures that will be used to send query to ODBC @@ -2375,14 +2377,14 @@ UpplReturnCode Kt_Controller::ReadCtrValFromDB( } if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; @@ -2392,11 +2394,11 @@ UpplReturnCode Kt_Controller::ReadCtrValFromDB( max_rep_ct, operation_type, controller_id); - pfc_log_debug("vect_val_ctr size: %d", (unsigned int)vect_val_ctr_st.size()); - pfc_log_debug("controller_id size: %d", (unsigned int)controller_id.size()); + pfc_log_debug("vect_val_ctr size: %" PFC_PFMT_SIZE_T, vect_val_ctr_st.size()); + pfc_log_debug("controller_id size: %" PFC_PFMT_SIZE_T, controller_id.size()); if (vect_val_ctr_st.empty()) { // Read failed , return error - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed after reading response"); return read_status; @@ -2503,12 +2505,12 @@ void Kt_Controller::FreeChildKeyStruct(void* key_struct, * @Description : This function reads all KT_Controller with given row_status * @param[in] : obj_key_struct-vector of void* to ctr key structure * row_status-CsRowStatus value - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* - * UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::GetModifiedRows(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::GetModifiedRows(OdbcmConnectionHandler *db_conn, vector &obj_key_struct, CsRowStatus row_status) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); @@ -2524,7 +2526,7 @@ UpplReturnCode Kt_Controller::GetModifiedRows(OdbcmConnectionHandler *db_conn, void *ctr_key = reinterpret_cast (&obj_key_ctr); void *ctr_val = reinterpret_cast (&val_struct); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_controller_dbtableschema; @@ -2541,13 +2543,13 @@ UpplReturnCode Kt_Controller::GetModifiedRows(OdbcmConnectionHandler *db_conn, GetModifiedRows(UNC_DT_CANDIDATE, kt_controller_dbtableschema, db_conn); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record to read"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; return read_status; } vector controller_id; @@ -2617,7 +2619,7 @@ void Kt_Controller::Fill_Attr_Syntax_Map() { attr_syntax_map[CTR_ENABLE_AUDIT_STR] = objAttrAuditSyntax; Kt_Class_Attr_Syntax objAttrValidSyntax = - { PFC_IPCTYPE_STRING, 0, 0, 0, 8, false, "" }; + { PFC_IPCTYPE_STRING, 0, 0, 0, 7, false, "" }; attr_syntax_map[CTR_VALID_STR] = objAttrValidSyntax; Kt_Class_Attr_Syntax objAttrCsRowSyntax = @@ -2625,7 +2627,7 @@ void Kt_Controller::Fill_Attr_Syntax_Map() { attr_syntax_map[CTR_CS_ROW_STATUS_STR] = objAttrCsRowSyntax; Kt_Class_Attr_Syntax objAttrCsAttrSyntax = - { PFC_IPCTYPE_STRING, 0, 0, 0, 8, false, "" }; + { PFC_IPCTYPE_STRING, 0, 0, 0, 7, false, "" }; attr_syntax_map[CTR_CS_ATTR_STR] = objAttrCsAttrSyntax; attr_syntax_map_all[UNC_KT_CONTROLLER] = attr_syntax_map; } @@ -2686,16 +2688,16 @@ void Kt_Controller::FreeKeyStruct(void* key_struct, * data_type-UNC_DT_*,type of database * param[out]:oper_status-oper status of Controller whether up/down/auditing * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. */ -UpplReturnCode Kt_Controller::GetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_prim_keys; vect_prim_keys.push_back(CTR_NAME_STR); @@ -2744,7 +2746,7 @@ UpplReturnCode Kt_Controller::GetOperStatus(OdbcmConnectionHandler *db_conn, } } } else { - return_code = UPPL_RC_ERR_DB_GET; + return_code = UNC_UPPL_RC_ERR_DB_GET; } return return_code; } @@ -2756,16 +2758,16 @@ UpplReturnCode Kt_Controller::GetOperStatus(OdbcmConnectionHandler *db_conn, * data_type-UNC_DT_*,type of database * oper_status-oper status of Controller * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. */ -UpplReturnCode Kt_Controller::SetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t oper_status) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_prim_keys; vect_prim_keys.push_back(CTR_NAME_STR); @@ -2799,10 +2801,10 @@ UpplReturnCode Kt_Controller::SetOperStatus(OdbcmConnectionHandler *db_conn, pfc_log_info("oper_status updated in DB successfully"); } else if (update_db_status == ODBCM_RC_CONNECTION_ERROR) { pfc_log_fatal("DB connection issue during set oper status"); - return_code = UPPL_RC_ERR_DB_ACCESS; + return_code = UNC_UPPL_RC_ERR_DB_ACCESS; } else { pfc_log_info("oper_status update failed in DB"); - return_code = UPPL_RC_ERR_DB_UPDATE; + return_code = UNC_UPPL_RC_ERR_DB_UPDATE; } return return_code; } @@ -2814,17 +2816,17 @@ UpplReturnCode Kt_Controller::SetOperStatus(OdbcmConnectionHandler *db_conn, * actual_version-version of controller * data_type-UNC_DT_*,type of database * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. */ -UpplReturnCode Kt_Controller::SetActualVersion(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::SetActualVersion(OdbcmConnectionHandler *db_conn, void* key_struct, string actual_version, uint32_t data_type, uint32_t valid_flag) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_prim_keys; vect_prim_keys.push_back(CTR_NAME_STR); @@ -2886,7 +2888,7 @@ UpplReturnCode Kt_Controller::SetActualVersion(OdbcmConnectionHandler *db_conn, pfc_log_info("actual version updated in DB successfully"); } else { pfc_log_error("actual version update failed in DB"); - return_code = UPPL_RC_ERR_DB_UPDATE; + return_code = UNC_UPPL_RC_ERR_DB_UPDATE; } return return_code; } @@ -2901,13 +2903,13 @@ UpplReturnCode Kt_Controller::SetActualVersion(OdbcmConnectionHandler *db_conn, * key_struct:- key struct for updated controller * val_struct:- val struct for updated controller * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response + * UNC_UPPL_RC_ERR_* is returned when ipc response * could not be added to sess. * */ -UpplReturnCode Kt_Controller::SendUpdatedControllerInfoToUPLL( +UncRespCode Kt_Controller::SendUpdatedControllerInfoToUPLL( uint32_t data_type, uint32_t operation_type, uint32_t key_type, @@ -2918,7 +2920,7 @@ UpplReturnCode Kt_Controller::SendUpdatedControllerInfoToUPLL( int err = pfc_ipcclnt_altopen(UPLL_IPC_CHANNEL_NAME, &connp); if (err != 0) { pfc_log_error("Could not open upll ipc session"); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } key_ctr_t *obj_key_ctr = reinterpret_cast(key_struct); val_ctr_t *obj_val_ctr = reinterpret_cast(val_struct); @@ -2935,22 +2937,22 @@ UpplReturnCode Kt_Controller::SendUpdatedControllerInfoToUPLL( if (val_struct != NULL) { err |= upll_cli_session.addOutput(*obj_val_ctr); } - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Error in adding parameters to session"); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } pfc_ipcresp_t resp = 0; err = upll_cli_session.invoke(resp); if (err != 0 || resp != UPLL_RC_SUCCESS) { pfc_log_error(" Request failed to UPLL with error no: %d resp=%d", err, resp); - return UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; + return UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE; } err = pfc_ipcclnt_altclose(connp); if (err != 0) { pfc_log_info("Unable to close ipc connection"); } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** GetCtrValidFlag @@ -2958,21 +2960,21 @@ UpplReturnCode Kt_Controller::SendUpdatedControllerInfoToUPLL( * @param[in] : key_struct-void* to ctr key structure * val_ctr_valid_st-instance of val_ctr_st_t * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::GetCtrValidFlag(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::GetCtrValidFlag(OdbcmConnectionHandler *db_conn, void *key_struct, val_ctr_st_t &val_ctr_valid_st, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_key_ctr; vect_key_ctr.push_back(key_struct); vector vect_val_ctr; return_code = ReadInternal(db_conn, vect_key_ctr, vect_val_ctr, data_type, UNC_OP_READ); - if (return_code == UPPL_RC_SUCCESS) { + if (return_code == UNC_RC_SUCCESS) { val_ctr_st_t *val_ctr_new_valid_st = reinterpret_cast(vect_val_ctr[0]); if (val_ctr_new_valid_st != NULL) { @@ -3045,22 +3047,22 @@ void Kt_Controller::FrameCsAttrValue(string attr_value, * data_type-UNC_DT_*,type of datatype * ctrl_type-type of controller,value of unc_keytype_ctrtype_t * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ValidateTypeIpAddress( +UncRespCode Kt_Controller::ValidateTypeIpAddress( OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, uint32_t data_type, uint32_t ctrl_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; val_ctr_t *obj_val_ctr = reinterpret_cast(val_struct); if (obj_val_ctr == NULL) { // Not required to validate type and ip pfc_log_debug("Not required to validate type and ip"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } key_ctr_t *ctr_key = reinterpret_cast(key_struct); string controller_name = (const char*)ctr_key->controller_name; @@ -3071,7 +3073,7 @@ UpplReturnCode Kt_Controller::ValidateTypeIpAddress( if (ip_valid_val == UNC_VF_INVALID) { // Not required to validate type and ip pfc_log_debug("Not required to validate type and ip"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } uint32_t type = obj_val_ctr->type; if (type_valid_val == UNC_VF_INVALID) { @@ -3104,8 +3106,8 @@ UpplReturnCode Kt_Controller::ValidateTypeIpAddress( count, UNC_OP_READ_SIBLING_BEGIN, controller_id); - pfc_log_debug("controller_id size: %d", - (unsigned int)controller_id.size()); + pfc_log_debug("controller_id size: %" + PFC_PFMT_SIZE_T, controller_id.size()); vector ::iterator vect_val_ctr_iter = vect_val_ctr_st.begin(); vector ::iterator vect_ctr_iter = controller_id.begin(); for (; vect_val_ctr_iter != vect_val_ctr_st.end(), @@ -3123,7 +3125,7 @@ UpplReturnCode Kt_Controller::ValidateTypeIpAddress( pfc_log_error( "Creation of Controller with already existing type and " "ip address not allowed"); - status = UPPL_RC_ERR_CFG_SYNTAX; + status = UNC_UPPL_RC_ERR_CFG_SYNTAX; break; } } @@ -3139,18 +3141,18 @@ UpplReturnCode Kt_Controller::ValidateTypeIpAddress( * val_ctr-pointer to val_ctr_t * param[out]:ctr_type_code-Success or associated error code * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ValidateControllerType( +UncRespCode Kt_Controller::ValidateControllerType( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; // Validate value structure unsigned int valid_val = 0; @@ -3160,15 +3162,15 @@ UpplReturnCode Kt_Controller::ValidateControllerType( attr_syntax_map_all[UNC_KT_CONTROLLER]; IS_VALID_INT_VALUE(CTR_TYPE_STR, val_ctr->type, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - if (operation == UNC_OP_UPDATE && ctr_type_code == UPPL_RC_SUCCESS && + if (operation == UNC_OP_UPDATE && ctr_type_code == UNC_RC_SUCCESS && valid_val == UNC_VF_VALID && val_ctr->type != ctr_type) { pfc_log_error("type cannot be modified"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ValidateControllerVersion @@ -3180,22 +3182,22 @@ UpplReturnCode Kt_Controller::ValidateControllerType( * val_ctr-pointer ctr value structure * param[out]:ctr_type_code-Success or associated error code * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ValidateControllerVersion( +UncRespCode Kt_Controller::ValidateControllerVersion( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; unsigned int valid_val = 0; // Version validation not required for Unknown Controller - if ((operation == UNC_OP_UPDATE && ctr_type_code == UPPL_RC_SUCCESS && + if ((operation == UNC_OP_UPDATE && ctr_type_code == UNC_RC_SUCCESS && ctr_type == UNC_CT_PFC) || (operation == UNC_OP_CREATE && val_ctr->type == UNC_CT_PFC)) { // validate version @@ -3205,11 +3207,11 @@ UpplReturnCode Kt_Controller::ValidateControllerVersion( string value = reinterpret_cast(val_ctr->version); IS_VALID_STRING_VALUE(CTR_VERSION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ValidateControllerDescription @@ -3221,18 +3223,18 @@ UpplReturnCode Kt_Controller::ValidateControllerVersion( * val_ctr-pointer to ctr val structure * param[out]:ctr_type_code-Success or associated error code * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ValidateControllerDescription( +UncRespCode Kt_Controller::ValidateControllerDescription( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; unsigned int valid_val = 0; // validate description @@ -3242,10 +3244,10 @@ UpplReturnCode Kt_Controller::ValidateControllerDescription( attr_syntax_map_all[UNC_KT_CONTROLLER]; IS_VALID_STRING_VALUE(CTR_DESCRIPTION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ValidateControllerIpAddress @@ -3257,56 +3259,56 @@ UpplReturnCode Kt_Controller::ValidateControllerDescription( * val_ctr-pointer to ctr val structure * param[out]:ctr_type_code-Success or associated error code * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ValidateControllerIpAddress( +UncRespCode Kt_Controller::ValidateControllerIpAddress( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, void *key_struct, void *val_struct) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; unsigned int valid_val = 0; val_ctr *val_ctr = reinterpret_cast(val_struct); // validate IP address valid_val = PhyUtil::uint8touint(val_ctr->valid[kIdxIpAddress]); - if (operation == UNC_OP_UPDATE && ctr_type_code == UPPL_RC_SUCCESS && + if (operation == UNC_OP_UPDATE && ctr_type_code == UNC_RC_SUCCESS && ctr_type == UNC_CT_UNKNOWN && valid_val == UNC_VF_VALID) { pfc_log_error( "Ip address cannot be modified for unknown controller type"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - if (operation == UNC_OP_UPDATE && ctr_type_code == UPPL_RC_SUCCESS && + if (operation == UNC_OP_UPDATE && ctr_type_code == UNC_RC_SUCCESS && valid_val == UNC_VF_VALID) { - UpplReturnCode validate_status = ValidateTypeIpAddress(db_conn, key_struct, + UncRespCode validate_status = ValidateTypeIpAddress(db_conn, key_struct, val_struct, data_type, ctr_type); - if (validate_status != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (validate_status != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } pfc_log_debug("Validating Type and Ip Address in Running Db"); validate_status = ValidateTypeIpAddress(db_conn, key_struct, val_struct, UNC_DT_RUNNING, ctr_type); - if (validate_status != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (validate_status != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } map attr_syntax_map = attr_syntax_map_all[UNC_KT_CONTROLLER]; IS_VALID_IPV4_VALUE(CTR_IP_ADDRESS_STR, val_ctr->ip_address, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ValidateControllerUser @@ -3318,36 +3320,36 @@ UpplReturnCode Kt_Controller::ValidateControllerIpAddress( * val_ctr-pointer to ctr val structure * param[out]:ctr_type_code-Success or associated error code * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Controller::ValidateControllerUser( +UncRespCode Kt_Controller::ValidateControllerUser( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; unsigned int valid_val = 0; // validate user valid_val = PhyUtil::uint8touint(val_ctr->valid[kIdxUser]); - if (operation == UNC_OP_UPDATE && ctr_type_code == UPPL_RC_SUCCESS && + if (operation == UNC_OP_UPDATE && ctr_type_code == UNC_RC_SUCCESS && ctr_type == UNC_CT_UNKNOWN && valid_val == UNC_VF_VALID) { pfc_log_error("User cannot be modified for unknown controller type"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } string value = reinterpret_cast(val_ctr->user); map attr_syntax_map = attr_syntax_map_all[UNC_KT_CONTROLLER]; IS_VALID_STRING_VALUE(IPCT_USER, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ValidateControllerPassword @@ -3358,34 +3360,34 @@ UpplReturnCode Kt_Controller::ValidateControllerUser( * ctr_type-type of controller,value of unc_keytype_ctrtype_t * val_ctr-pointer to ctr val structure * param[out]:ctr_type_code-Success or associated error code - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ -UpplReturnCode Kt_Controller::ValidateControllerPassword( +UncRespCode Kt_Controller::ValidateControllerPassword( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; unsigned int valid_val = 0; // validate password valid_val = PhyUtil::uint8touint(val_ctr->valid[kIdxPassword]); - if (operation == UNC_OP_UPDATE && ctr_type_code == UPPL_RC_SUCCESS && + if (operation == UNC_OP_UPDATE && ctr_type_code == UNC_RC_SUCCESS && ctr_type == UNC_CT_UNKNOWN && valid_val == UNC_VF_VALID) { pfc_log_error("Password cannot be modified for unknown controller type"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } string value = reinterpret_cast(val_ctr->password); map attr_syntax_map = attr_syntax_map_all[UNC_KT_CONTROLLER]; IS_VALID_STRING_VALUE(CTR_PASSWORD_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ValidateControllerEnableAudit @@ -3396,34 +3398,34 @@ UpplReturnCode Kt_Controller::ValidateControllerPassword( * ctr_type-type of controller, value of unc_keytype_ctrtype_t * val_ctr-pointer to ctr val structure * param[out]:ctr_type_code-Success or associated error code - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ -UpplReturnCode Kt_Controller::ValidateControllerEnableAudit( +UncRespCode Kt_Controller::ValidateControllerEnableAudit( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, unc_keytype_ctrtype_t ctr_type, - UpplReturnCode ctr_type_code, + UncRespCode ctr_type_code, val_ctr *val_ctr) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; unsigned int valid_val = 0; // validate enable_audit valid_val = PhyUtil::uint8touint(val_ctr->valid[kIdxEnableAudit]); - if (operation == UNC_OP_UPDATE && ctr_type_code == UPPL_RC_SUCCESS && + if (operation == UNC_OP_UPDATE && ctr_type_code == UNC_RC_SUCCESS && ctr_type == UNC_CT_UNKNOWN && valid_val == UNC_VF_VALID) { pfc_log_error( "Enable audit cannot be modified for unknown controller type"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } map attr_syntax_map = attr_syntax_map_all[UNC_KT_CONTROLLER]; IS_VALID_INT_VALUE(CTR_ENABLE_AUDIT_STR, val_ctr->enable_audit, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** SendOperStatusNotification @@ -3432,12 +3434,12 @@ UpplReturnCode Kt_Controller::ValidateControllerEnableAudit( * @param[in] : ctr_key pointer to ctr key structure * old_oper_st-old oper status of controller * new_oper_st-new oper status of controller - * @return : Success or associated error code,UPPL_RC_SUCESS/ERR* + * @return : Success or associated error code,UNC_UPPL_RC_SUCESS/ERR* * */ -UpplReturnCode Kt_Controller::SendOperStatusNotification(key_ctr_t ctr_key, +UncRespCode Kt_Controller::SendOperStatusNotification(key_ctr_t ctr_key, uint8_t old_oper_st, uint8_t new_oper_st) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; int err = 0; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); val_ctr_st_t old_val_ctr, new_val_ctr; @@ -3458,13 +3460,13 @@ UpplReturnCode Kt_Controller::SendOperStatusNotification(key_ctr_t ctr_key, if (err != 0) { pfc_log_error( "Server Event addOutput failed, return IPC_WRITE_ERROR"); - status = UPPL_RC_ERR_IPC_WRITE_ERROR; + status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { pfc_log_debug("%s", (IpctUtil::get_string(ctr_key)).c_str()); pfc_log_debug("%s", (IpctUtil::get_string(new_val_ctr)).c_str()); pfc_log_debug("%s", (IpctUtil::get_string(old_val_ctr)).c_str()); // Call IPC server to post the event - status = (UpplReturnCode) physical_layer + status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); } return status; @@ -3474,12 +3476,12 @@ UpplReturnCode Kt_Controller::SendOperStatusNotification(key_ctr_t ctr_key, * @Description : This function checks the ip address and clears state db * if ip address is empty * @param[in] : key_struct of controller - * @return : Success or associated error code,UPPL_RC_SUCESS/ERR* + * @return : Success or associated error code,UNC_UPPL_RC_SUCESS/ERR* * */ -UpplReturnCode Kt_Controller::CheckIpAndClearStateDB( +UncRespCode Kt_Controller::CheckIpAndClearStateDB( OdbcmConnectionHandler *db_conn, void *key_struct) { - UpplReturnCode state_status = UPPL_RC_SUCCESS; + UncRespCode state_status = UNC_RC_SUCCESS; vector vect_ctr_key, vect_ctr_val; vect_ctr_key.push_back(key_struct); state_status = ReadInternal(db_conn, @@ -3487,7 +3489,7 @@ UpplReturnCode Kt_Controller::CheckIpAndClearStateDB( vect_ctr_val, UNC_DT_RUNNING, UNC_OP_READ); - if (state_status != UPPL_RC_SUCCESS) { + if (state_status != UNC_RC_SUCCESS) { pfc_log_debug("Read Internal Failed"); return state_status; } @@ -3513,15 +3515,15 @@ UpplReturnCode Kt_Controller::CheckIpAndClearStateDB( } // Reset actual version as empty string act_version = ""; - UpplReturnCode status = SetActualVersion(db_conn, key_struct, act_version, + UncRespCode status = SetActualVersion(db_conn, key_struct, act_version, UNC_DT_RUNNING, UNC_VF_INVALID); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error pfc_log_error("act_version reset operation failed for running"); } status = SetActualVersion(db_conn, key_struct, act_version, UNC_DT_CANDIDATE, UNC_VF_INVALID); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { // log error pfc_log_error("act_version reset operation failed for candidate"); } @@ -3538,11 +3540,11 @@ UpplReturnCode Kt_Controller::CheckIpAndClearStateDB( * val_ctr_valid_st-instance of val_ctr_st_t * @return : Success or associated error code * */ -UpplReturnCode Kt_Controller::CheckSameIp(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Controller::CheckSameIp(OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_key_ctr; vect_key_ctr.push_back(key_struct); vector vect_val_ctr; @@ -3550,7 +3552,7 @@ UpplReturnCode Kt_Controller::CheckSameIp(OdbcmConnectionHandler *db_conn, uint32_t existing_ip = ctr_val.ip_address.s_addr; return_code = ReadInternal(db_conn, vect_key_ctr, vect_val_ctr, data_type, UNC_OP_READ); - if (return_code == UPPL_RC_SUCCESS) { + if (return_code == UNC_RC_SUCCESS) { val_ctr_st_t *val_ctr_new_valid_st = reinterpret_cast(vect_val_ctr[0]); if (val_ctr_new_valid_st != NULL) { @@ -3559,7 +3561,7 @@ UpplReturnCode Kt_Controller::CheckSameIp(OdbcmConnectionHandler *db_conn, pfc_log_info("Same Ip given - Ignore"); } else { pfc_log_info("Different Ip given - Throw Error"); - return_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } delete val_ctr_new_valid_st; val_ctr_new_valid_st = NULL; diff --git a/coordinator/modules/uppl/itc_kt_ctr_dataflow.cc b/coordinator/modules/uppl/itc_kt_ctr_dataflow.cc new file mode 100644 index 00000000..493bc9e8 --- /dev/null +++ b/coordinator/modules/uppl/itc_kt_ctr_dataflow.cc @@ -0,0 +1,438 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * @brief KT Ctr_Dataflow implementation + * @file itc_kt_ctr_Dataflow.cc + * + */ +#include "ipc_client_configuration_handler.hh" +#include "itc_kt_ctr_dataflow.hh" +#include "itc_kt_controller.hh" +#include "odbcm_utils.hh" +#include "itc_read_request.hh" +#include "odbcm_db_varbind.hh" +#include "uncxx/dataflow.hh" +#include "capa_module.hh" + +using unc::uppl::PhysicalLayer; +using unc::uppl::ODBCMUtils; +using unc::uppl::IPCClientDriverHandler; +using unc::dataflow::DataflowCmn; +using unc::dataflow::DataflowUtil; +using unc::dataflow::DataflowDetail; + +/** Constructor + * @Description : This function fills the syntax map used for validation + * @param[in] : None + * @return : None + * */ +Kt_Ctr_Dataflow::Kt_Ctr_Dataflow() { + if (attr_syntax_map_all.find(UNC_KT_CTR_DATAFLOW) == + attr_syntax_map_all.end()) { + // Populate Structure to be used for syntax validation + Fill_Attr_Syntax_Map(); + } +} + +/** Destructor + * @Description : Empty Destructor + * @param[in] : None + * @return : None + * */ +Kt_Ctr_Dataflow::~Kt_Ctr_Dataflow() { +} + +/* * ReadInternal + * @Description : This function reads the given instance of Kt Ctr_Dataflow + * @param[in] : key_struct - key for kt ctr_Dataflow instance + * value_struct - value for kt ctr_Dataflow instance + * data_type - UNC_DT_*, read allowed in STATE + * operation_type-type of operation,can be UNC_OP_READ + * @return : UNC_RC_SUCCESS is returned when the response is added to + * ipc session successfully + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * */ +UncRespCode Kt_Ctr_Dataflow::ReadInternal(OdbcmConnectionHandler *db_conn, + vector &key_val, + vector &val_struct, + uint32_t data_type, + uint32_t operation_type) { + pfc_log_debug("Inside ReadInternal of KT_CTR_DATAFLOW"); + UncRespCode read_status = UNC_RC_SUCCESS; + return read_status; +} + +/** ReadBulk + * @Description : This function reads the max_rep_ct number of instances + * of the KT_Ctr_Dataflow + * @param[in] : + * key_struct - key for switch instance + * data_type - UNC_DT_* , ReadBulk supported for STATE + * max_rep_ct - specifies no of rows to be returned + * parent_call - indicates whether parent has called this read bulk + * is_read_next - indicates whether this function is invoked from read_next + * @return : UNC_RC_SUCCESS is returned when the response is added to + * ipc session successfully + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess + * */ +UncRespCode Kt_Ctr_Dataflow::ReadBulk(OdbcmConnectionHandler *db_conn, + void* key_struct, + uint32_t data_type, + uint32_t &max_rep_ct, + int child_index, + pfc_bool_t parent_call, + pfc_bool_t is_read_next, + ReadRequest *read_req) { + pfc_log_debug("ReadBulk operation is not allowed in Kt_Ctr_Dataflow"); + UncRespCode read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return read_status; +} + +/** PerformSyntaxValidation + * @Description : This function performs syntax validation for KT_CTR_DATAFLOW + * @param[in] : key_struct - key for kt ctr_Dataflow instance + * value_struct - value for kt ctr_Dataflow instance + * operation - UNC_OP_*,type of operation READ + * data_type - UNC_DT_*,type of database STATE + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure or associated error code + * */ +UncRespCode Kt_Ctr_Dataflow::PerformSyntaxValidation( + OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type) { + pfc_log_info("Inside PerformSyntax Validation of KT_CTR_DATAFLOW"); + UncRespCode ret_code = UNC_RC_SUCCESS; + pfc_bool_t mandatory = PFC_TRUE; + + // Validate Key Structure + key_ctr_dataflow *key = reinterpret_cast(key_struct); + string ctrl_name = reinterpret_cast(key->ctr_key.controller_name); + map attr_syntax_map = + attr_syntax_map_all[UNC_KT_CTR_DATAFLOW]; + IS_VALID_STRING_KEY(CTR_NAME_STR, ctrl_name, operation, ret_code, mandatory); + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + } + + uint64_t val = key->flow_id; + if (val <= 0) + ret_code = UNC_UPPL_RC_ERR_CFG_SYNTAX; + return ret_code; +} + +/** PerformSemanticValidation + * @Description : This function performs semantic validation + * for UNC_KT_CTR_DATAFLOW + * @param[in] : key_struct - specifies key instance of KT_CTR_DATAFLOW + * value_struct - specifies value of KT_CTR_DATAFLOW + * operation - UNC_OP*,type of operation READ + * data_type - UNC_DT*,type of database STATE + * @return : UNC_RC_SUCCESS if semantic validation is successful + * or UNC_UPPL_RC_ERR_* if failed + * */ +UncRespCode Kt_Ctr_Dataflow::PerformSemanticValidation( + OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type) { + UncRespCode ret_code = UNC_RC_SUCCESS; + pfc_log_trace("Inside PerformSemanticValidation of KT_CTR_DATAFLOW"); + uint32_t nums = 0; + const uint8_t *attrs = 0; + if (operation != UNC_OP_READ || data_type != UNC_DT_STATE) { + pfc_log_debug("operation is not supported !!"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + // Not allowing the STANDBY request + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + if (physical_layer->get_physical_core()->get_system_state() == \ + UPPL_SYSTEM_ST_STANDBY) { + pfc_log_error("System is in Standby mode"); + return UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; + } + unc::capa::CapaModule *capa = reinterpret_cast( + pfc::core::Module::getInstance("capa")); + if (capa == NULL) { + pfc_log_warn("%s:%d: CapaModule is not found", __FUNCTION__, __LINE__); + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + } + // collect controller type, actual version, configured version, oper_status + Kt_Controller KtObj; + vector vect_key_ctr; + vect_key_ctr.push_back(key_struct); + vector vect_val_ctr; + ret_code = KtObj.ReadInternal(db_conn, vect_key_ctr, vect_val_ctr, + UNC_DT_RUNNING, UNC_OP_READ); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_debug("Read of Controller failed"); + return ret_code; + } + key_ctr_t *ctr_key = reinterpret_cast(vect_key_ctr[0]); + val_ctr_st *val_ctr_vect = + reinterpret_cast (vect_val_ctr[0]); + if (val_ctr_vect == NULL || ctr_key == NULL) { + if (ctr_key != NULL) { + delete ctr_key; + ctr_key = NULL; + } + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; + } + unc_keytype_ctrtype_t ctr_type = + (unc_keytype_ctrtype_t) val_ctr_vect->controller.type; + // configured version + string version = (const char*)val_ctr_vect->controller.version; + pfc_log_debug("controller_type=%d", val_ctr_vect->controller.type); + pfc_log_debug("oper_status_db=%d", val_ctr_vect->oper_status); + pfc_log_debug("config version=%s", version.c_str()); + + if (val_ctr_vect->controller.type != UNC_CT_PFC) { + pfc_log_error("Read operation is NOT allowed for non-PFC controllers"); + ret_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } else if (val_ctr_vect->oper_status != UPPL_CONTROLLER_OPER_UP) { + pfc_log_error("Read operation is NOT allowed if the controller is DOWN"); + ret_code = UNC_UPPL_RC_ERR_CTRLR_DISCONNECTED; + } + if (ret_code != UNC_RC_SUCCESS) { + if (ctr_key != NULL) { + delete ctr_key; + ctr_key = NULL; + } + if (val_ctr_vect != NULL) { + delete val_ctr_vect; + val_ctr_vect = NULL; + } + return ret_code; + } + + // Call CapaModule and check for PFC actual version + bool ret_actual = capa->GetReadCapability(ctr_type, + version, + UNC_KT_CTR_DATAFLOW, + &nums, + &attrs); + pfc_log_debug("return of GetReadCapability = %d", ret_actual); + if (ret_actual != true) { + pfc_log_debug("KEY TYPE is NOT supported for version : %s", + version.c_str()); + ret_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + + pfc_log_debug("KEY TYPE is supported for version : %s", + version.c_str()); + if (ctr_key != NULL) { + delete ctr_key; + ctr_key = NULL; + } + if (val_ctr_vect != NULL) { + delete val_ctr_vect; + val_ctr_vect = NULL; + } + return ret_code; +} + +/** PerformRead + * @Description : This function reads the instance of KT_Ctr_Dataflow based on + * operation type - READ + * @param[in] : ipc session id - ipc session id used for TC validation + * configuration id - configuration id used for TC validation + * key_struct - key instance of KT_Ctr_Dataflow + * value_struct - value instance of Kt_Ctr_Dataflow + * data_type - UNC_DT_* , read allowed in STATE,UNC_DT_* + * operation_type - specifies the operation type,UNC_OP_* + * sess - ipc server session where the response has to be added + * option1, option2 - additional condition associated with read operation + * max_rep_ct - specifies no of rows to be returned + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR_* + * */ +UncRespCode Kt_Ctr_Dataflow::PerformRead(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + void* val_struct, + uint32_t data_type, + uint32_t operation_type, + ServerSession &sess, + uint32_t option1, + uint32_t option2, + uint32_t max_rep_ct) { + pfc_log_info("Inside PerformRead operation_type=%d data_type=%d", + operation_type, data_type); + + physical_response_header rsh = {session_id, + configuration_id, + operation_type, + max_rep_ct, + option1, + option2, + data_type, + static_cast(0)}; + if (operation_type == UNC_OP_READ) { + max_rep_ct = 1; + } + key_ctr_dataflow_t *obj_key_ctr_dataflow + = reinterpret_cast(key_struct); + + // Invalid Operation TODO: move this to as part of semantic validation. + if (option1 != UNC_OPT1_NORMAL && option1 != UNC_OPT1_DETAIL) { + pfc_log_error("Invalid option1 specified for read operation"); + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_CTR_DATAFLOW); + err |= sess.addOutput(*obj_key_ctr_dataflow); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + rsh.result_code = PerformSemanticValidation(db_conn, key_struct, + val_struct, operation_type, data_type); + if (rsh.result_code != UNC_RC_SUCCESS) { + pfc_log_error("PerformSemanticValidation failed %d", rsh.result_code); + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_CTR_DATAFLOW); + err |= sess.addOutput(*obj_key_ctr_dataflow); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + + pfc_log_debug("creating IPCClientDriverHandler object," + " with PFC type and result code variable is passed"); + UncRespCode sess_err = UNC_RC_SUCCESS; + IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, sess_err); + if (sess_err != UNC_RC_SUCCESS) { + pfc_log_error("Cannot open session to PFC driver"); + return sess_err; + } + ClientSession *cli_session = pfc_drv_handler.ResetAndGetSession(); + string controller_name = + reinterpret_cast(obj_key_ctr_dataflow->ctr_key.controller_name); + string domain_id = ""; + uint64_t flow_id = obj_key_ctr_dataflow->flow_id; + driver_request_header rqh = {uint32_t(0), uint32_t(0), controller_name, + domain_id, static_cast(UNC_OP_READ), uint32_t(0), + option1, (uint32_t)0, static_cast(UNC_DT_STATE), + static_cast(UNC_KT_CTR_DATAFLOW)}; + int err1 = PhyUtil::sessOutDriverReqHeader(*cli_session, rqh); + err1 |= cli_session->addOutput(*obj_key_ctr_dataflow); + if (err1 != 0) { + pfc_log_error("addOutput failed for driver_request_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + // Send the request to driver + UncRespCode driver_response = UNC_RC_SUCCESS; + driver_response_header rsp; + + driver_response = pfc_drv_handler.SendReqAndGetResp(rsp); + if (driver_response != UNC_RC_SUCCESS) { + pfc_log_error("Read request to Driver failed for controller %s" + " ,flow_id %" PFC_PFMT_u64 " with response %d", controller_name.c_str(), + flow_id, driver_response); + rsh.result_code = driver_response; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_CTR_DATAFLOW); + err |= sess.addOutput(*obj_key_ctr_dataflow); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + + int read_err_status = UNC_RC_SUCCESS; + uint32_t resp_pos = 12; + DataflowDetail *df_segment = + new DataflowDetail((unc::dataflow::IpctStructNum)0); + val_df_data_flow_st_t obj_val_df_data_flow_st; + memset(&obj_val_df_data_flow_st, 0, sizeof(val_df_data_flow_st_t)); + if (option1 == UNC_OPT1_NORMAL) { + // READ THE RESPONSE FROM DRIVER session as per section 11.9 in FD API doc + pfc_log_debug("call sessReadDataflow fn from ctr_dataflow for read-normal"); + read_err_status |= df_segment->sessReadDataflow(*cli_session, resp_pos); + } else if (option1 == UNC_OPT1_DETAIL) { + // READ THE RESPONSE FROM DRIVER session as per section 11.9 in FD API doc + read_err_status |= cli_session->getResponse(resp_pos, + obj_val_df_data_flow_st); + pfc_log_debug("%s", + (DataflowUtil::get_string(obj_val_df_data_flow_st).c_str())); + resp_pos++; + pfc_log_debug("call sessReadDataflow fn from ctr_dataflow for read-detail"); + read_err_status |= df_segment->sessReadDataflow(*cli_session, resp_pos); + } + int putresp_pos = 10; + rsh.result_code = read_err_status; + rsh.max_rep_count = max_rep_ct; + if (read_err_status != UNC_RC_SUCCESS) { + int err = PhyUtil::sessOutRespHeader(sess, rsh); + if (err != 0) { + pfc_log_error("Failure in addOutput"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_CTR_DATAFLOW); + err |= sess.addOutput(*obj_key_ctr_dataflow); + if (err != 0) { + pfc_log_error("Failure in addOutput"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + string str1 = DataflowCmn::get_string(*obj_key_ctr_dataflow); + pfc_log_debug("%s", str1.c_str()); + if (option1 == UNC_OPT1_NORMAL) { + // WRITE THE RESPONSE TO NORTHBOUND session + // as per section 6.11 in FD API doc + pfc_log_debug("call sessOutDataflow from ctr_dataflow for read-normal"); + DataflowCmn df_cmn(true, df_segment); + err |= df_cmn.sessOutDataflow(sess, putresp_pos); + } else if (option1 == UNC_OPT1_DETAIL) { + // WRITE THE RESPONSE TO NORTHBOUND session + // as per section 6.11 in FD API doc + err |= sess.addOutput(obj_val_df_data_flow_st); + string str = DataflowUtil::get_string(obj_val_df_data_flow_st); + pfc_log_debug("%s", str.c_str()); + pfc_log_debug("call sessOutDataflow from ctr_dataflow for read-detail"); + putresp_pos = 11; + DataflowCmn df_cmn(true, df_segment); + err |= df_cmn.sessOutDataflow(sess, putresp_pos); + } + if (err != 0) { + pfc_log_error("Failure in addOutput"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; +} + +/** Fill_Attr_Syntax_Map + * @Description : This function fills the attributes associated + * with the class + * @param[in] : none + * @return : none + * */ +void Kt_Ctr_Dataflow::Fill_Attr_Syntax_Map() { + map attr_syntax_map; + + Kt_Class_Attr_Syntax key_attrib1 = + { PFC_IPCTYPE_UINT8, 0, 0, 1, 32, true, "" }; + attr_syntax_map[CTR_NAME_STR] = key_attrib1; + + Kt_Class_Attr_Syntax key_attrib2 = + { PFC_IPCTYPE_UINT64, 1, 1, 0, 0, true, "" }; + attr_syntax_map[CTR_DATAFLOW_FLOWID_STR] = key_attrib2; + + attr_syntax_map_all[UNC_KT_CTR_DATAFLOW] = attr_syntax_map; +} diff --git a/coordinator/modules/uppl/itc_kt_ctr_domain.cc b/coordinator/modules/uppl/itc_kt_ctr_domain.cc index 10887200..ac96d37d 100644 --- a/coordinator/modules/uppl/itc_kt_ctr_domain.cc +++ b/coordinator/modules/uppl/itc_kt_ctr_domain.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -92,42 +92,42 @@ Kt_Base* Kt_Ctr_Domain::GetChildClassPointer(KtDomainChildClass KIndex) { * data_type - UNC_DT_* , Create only allowed in candidate from * VTN * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response is added to ipc + * @return : UNC_RC_SUCCESS is returned when the response is added to ipc * session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be * added to sess. **/ -UpplReturnCode Kt_Ctr_Domain::Create(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess) { - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; key_ctr_domain *obj_key_ctr_domain= reinterpret_cast(key_struct); if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Create operation is provided on unsupported data type"); - create_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + create_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { string controller_name = (const char*)obj_key_ctr_domain-> ctr_key.controller_name; unc_keytype_ctrtype_t controller_type; - UpplReturnCode retcode = PhyUtil::get_controller_type( + UncRespCode retcode = PhyUtil::get_controller_type( db_conn, controller_name, controller_type, (unc_keytype_datatype_t)data_type); // Check whether operation is allowed on the given DT type - if (retcode != UPPL_RC_SUCCESS) { + if (retcode != UNC_RC_SUCCESS) { pfc_log_error("Error getting the controller type"); - create_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; - } else if (retcode == UPPL_RC_SUCCESS) { + create_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } else if (retcode == UNC_RC_SUCCESS) { if (controller_type != UNC_CT_UNKNOWN) { pfc_log_error("Create Operation of KNOWN DOMAIN"); pfc_log_error("is not supported from VTN"); - create_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + create_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { create_status = CreateKeyInstance(db_conn, key_struct, val_struct, @@ -145,16 +145,16 @@ UpplReturnCode Kt_Ctr_Domain::Create(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - create_status}; + static_cast(create_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CTR_DOMAIN); err |= sess.addOutput(*obj_key_ctr_domain); if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - create_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + create_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - create_status = UPPL_RC_SUCCESS; + create_status = UNC_RC_SUCCESS; } return create_status; } @@ -168,23 +168,23 @@ UpplReturnCode Kt_Ctr_Domain::Create(OdbcmConnectionHandler *db_conn, * request is from VTN and allowed in state if request is from * south bound * key_type - indicates the key type class - * * @return : UPPL_RC_SUCCESS is returned when the create is success - * UPPL_RC_ERR_* is returned when ipc response could not be + * * @return : UNC_RC_SUCCESS is returned when the create is success + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be * added to sess. * */ -UpplReturnCode Kt_Ctr_Domain::CreateKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Check whether operation is allowed on the given DT type if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE && (unc_keytype_datatype_t)data_type != UNC_DT_STATE && (unc_keytype_datatype_t)data_type != UNC_DT_IMPORT) { pfc_log_error("Create operation is provided on unsupported data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } // Structure used to send request to ODBC @@ -217,11 +217,11 @@ UpplReturnCode Kt_Ctr_Domain::CreateKeyInstance(OdbcmConnectionHandler *db_conn, if (create_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - create_status = UPPL_RC_ERR_DB_ACCESS; + create_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon pfc_log_error("Create operation has failed"); - create_status = UPPL_RC_ERR_DB_CREATE; + create_status = UNC_UPPL_RC_ERR_DB_CREATE; } } else { pfc_log_info("Create of Domain is success"); @@ -239,41 +239,41 @@ UpplReturnCode Kt_Ctr_Domain::CreateKeyInstance(OdbcmConnectionHandler *db_conn, * data_type - UNC_DT_* , Update only allowed in candidate from * VTN * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response is added to ipc + * @return : UNC_RC_SUCCESS is returned when the response is added to ipc * session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be * added to sess. **/ -UpplReturnCode Kt_Ctr_Domain::Update(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, void* val_struct, uint32_t data_type, ServerSession &sess) { - UpplReturnCode update_status = UPPL_RC_SUCCESS; + UncRespCode update_status = UNC_RC_SUCCESS; key_ctr_domain *obj_key_ctr_domain= reinterpret_cast(key_struct); if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Update operation is provided on unsupported data type"); - update_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + update_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { string controller_name = (const char*)obj_key_ctr_domain-> ctr_key.controller_name; unc_keytype_ctrtype_t controller_type; - UpplReturnCode retcode = PhyUtil::get_controller_type( + UncRespCode retcode = PhyUtil::get_controller_type( db_conn, controller_name, controller_type, (unc_keytype_datatype_t)data_type); // Check whether operation is allowed on the given DT type - if (retcode != UPPL_RC_SUCCESS) { + if (retcode != UNC_RC_SUCCESS) { pfc_log_error("Error getting the controller type"); - update_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; - } else if (retcode == UPPL_RC_SUCCESS) { + update_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } else if (retcode == UNC_RC_SUCCESS) { if (controller_type != UNC_CT_UNKNOWN) { pfc_log_error("Update Operation of KNOWN DOMAIN"); pfc_log_error("is not supported from VTN"); - update_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + update_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { update_status = UpdateKeyInstance(db_conn, key_struct, val_struct, @@ -291,15 +291,15 @@ UpplReturnCode Kt_Ctr_Domain::Update(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - update_status}; + static_cast(update_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CTR_DOMAIN); err |= sess.addOutput(*obj_key_ctr_domain); if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - update_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + update_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - update_status = UPPL_RC_SUCCESS; + update_status = UNC_RC_SUCCESS; } return update_status; } @@ -312,23 +312,23 @@ UpplReturnCode Kt_Ctr_Domain::Update(OdbcmConnectionHandler *db_conn, * request is from VTN and allowed in state if request is from * southbound * key_type - indicates the key type class - * * @return : UPPL_RC_SUCCESS is returned when the update + * * @return : UNC_RC_SUCCESS is returned when the update * is done successfully. - * UPPL_RC_ERR_* is returned when the update is error + * UNC_UPPL_RC_ERR_* is returned when the update is error * */ -UpplReturnCode Kt_Ctr_Domain::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode update_status = UPPL_RC_SUCCESS; + UncRespCode update_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Check whether operation is allowed on the given DT type if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE && (unc_keytype_datatype_t)data_type != UNC_DT_STATE && (unc_keytype_datatype_t)data_type != UNC_DT_IMPORT) { pfc_log_error("Update operation is provided on unsupported data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } // Structure used to send request to ODBC DBTableSchema kt_ctr_domain_dbtableschema; @@ -361,10 +361,10 @@ UpplReturnCode Kt_Ctr_Domain::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, if (update_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - update_status = UPPL_RC_ERR_DB_ACCESS; + update_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon - update_status = UPPL_RC_ERR_DB_UPDATE; + update_status = UNC_UPPL_RC_ERR_DB_UPDATE; } } else { pfc_log_info("Update of a ctr domain in data_type(%d) is success", @@ -386,41 +386,41 @@ UpplReturnCode Kt_Ctr_Domain::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, * request is from VTN and allowed in state if request is from * southbound * sess - ipc server session where the response has to be added - * * @return : UPPL_RC_SUCCESS is returned when the response is added to + * * @return : UNC_RC_SUCCESS is returned when the response is added to * ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be * added to sess. **/ -UpplReturnCode Kt_Ctr_Domain::Delete(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, uint32_t data_type, ServerSession &sess) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; key_ctr_domain *obj_key_ctr_domain= reinterpret_cast(key_struct); if ((unc_keytype_datatype_t)data_type != UNC_DT_CANDIDATE) { pfc_log_error("Delete operation is provided on unsupported data type"); - delete_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + delete_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } else { string domain_name = (const char*)obj_key_ctr_domain->domain_name; string controller_name = (const char*)obj_key_ctr_domain-> ctr_key.controller_name; unc_keytype_ctrtype_t controller_type; - UpplReturnCode retcode = PhyUtil::get_controller_type( + UncRespCode retcode = PhyUtil::get_controller_type( db_conn, controller_name, controller_type, (unc_keytype_datatype_t)data_type); // Check whether operation is allowed on the given DT type - if (retcode != UPPL_RC_SUCCESS) { + if (retcode != UNC_RC_SUCCESS) { pfc_log_error("Error getting the controller type"); - delete_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + delete_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } - if (retcode == UPPL_RC_SUCCESS && controller_type != UNC_CT_UNKNOWN) { + if (retcode == UNC_RC_SUCCESS && controller_type != UNC_CT_UNKNOWN) { pfc_log_error("Delete Operation of KNOWN DOMAIN"); pfc_log_error("is not supported from VTN"); - delete_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; - } else if (retcode == UPPL_RC_SUCCESS) { + delete_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } else if (retcode == UNC_RC_SUCCESS) { // Check whether any boundary is referring domain Kt_Boundary boundary_class; if (boundary_class.IsBoundaryReferred(db_conn, UNC_KT_CTR_DOMAIN, @@ -429,7 +429,7 @@ UpplReturnCode Kt_Ctr_Domain::Delete(OdbcmConnectionHandler *db_conn, // Boundary is referring Domain pfc_log_error("Domain is referred in Boundary, " "so delete is not allowed"); - delete_status = UPPL_RC_ERR_CFG_SEMANTIC; + delete_status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; } else { // Delete domain delete_status = DeleteKeyInstance(db_conn, key_struct, data_type, @@ -445,15 +445,15 @@ UpplReturnCode Kt_Ctr_Domain::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - delete_status}; + static_cast(delete_status)}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CTR_DOMAIN); err |= sess.addOutput(*obj_key_ctr_domain); if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - delete_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + delete_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } return delete_status; } @@ -466,11 +466,11 @@ UpplReturnCode Kt_Ctr_Domain::Delete(OdbcmConnectionHandler *db_conn, * request is from VTN and allowed in state if request is from * southbound * key_type - indicates the key type class - * @return : UPPL_RC_SUCCESS is returned when the delete is done + * @return : UNC_RC_SUCCESS is returned when the delete is done * successfully. - * UPPL_RC_ERR_* is returned when the delete is error + * UNC_UPPL_RC_ERR_* is returned when the delete is error **/ -UpplReturnCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { @@ -479,9 +479,9 @@ UpplReturnCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, (unc_keytype_datatype_t)data_type != UNC_DT_STATE && (unc_keytype_datatype_t)data_type != UNC_DT_IMPORT) { pfc_log_error("Delete operation is provided on unsupported data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; key_ctr_domain *obj_key_ctr_domain= reinterpret_cast(key_struct); string domain_name = (const char*)obj_key_ctr_domain->domain_name; @@ -515,25 +515,25 @@ UpplReturnCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, controller_name, domain_name); Kt_LogicalPort logical_port; - UpplReturnCode ch_delete_status = logical_port.DeleteKeyInstance( + UncRespCode ch_delete_status = logical_port.DeleteKeyInstance( db_conn, child_key_struct, data_type, UNC_KT_LOGICAL_PORT); FreeChildKeyStruct(KIdxLogicalPort, child_key_struct); - if (ch_delete_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + if (ch_delete_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { pfc_log_debug("Domain has no child"); } - if (ch_delete_status != UPPL_RC_ERR_NO_SUCH_INSTANCE && - ch_delete_status != UPPL_RC_SUCCESS) { + if (ch_delete_status != UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE && + ch_delete_status != UNC_RC_SUCCESS) { // child delete , failed so return error pfc_log_error("Delete failed for child with %d with error %d", 0, ch_delete_status); - delete_status = UPPL_RC_ERR_CFG_SEMANTIC; + delete_status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; break; } } - if (delete_status != UPPL_RC_SUCCESS) { + if (delete_status != UNC_RC_SUCCESS) { continue; } // Structure used to send request to ODBC @@ -574,20 +574,20 @@ UpplReturnCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (delete_db_status == ODBCM_RC_ROW_NOT_EXISTS || delete_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_error("No matching record found"); - delete_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + delete_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { // log error to log daemon pfc_log_error("Delete operation has failed in domain common table"); - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else if (data_type != UNC_DT_CANDIDATE) { // Boundary operstatus to be changed only after running db sync // Notify switch to update domainid as invalid - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; Kt_Switch switch_obj; key_switch_t obj_key_switch; memset(&obj_key_switch, '\0', sizeof(key_switch_t)); @@ -605,7 +605,7 @@ UpplReturnCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, domain_name.c_str(), domain_name.length()+1); obj_val_switch.switch_val.valid[kIdxSwitchDomainName] = UNC_VF_VALID; - UpplReturnCode read_status = switch_obj.UpdateSwitchValidFlag( + UncRespCode read_status = switch_obj.UpdateSwitchValidFlag( db_conn, reinterpret_cast(&obj_key_switch), reinterpret_cast(&obj_val_switch), obj_val_switch, @@ -614,7 +614,7 @@ UpplReturnCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, } else { pfc_log_info("Delete of a ctr_domain in data_type(%d) is success", data_type); - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } } return delete_status; @@ -628,12 +628,12 @@ UpplReturnCode Kt_Ctr_Domain::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, * data_type - UNC_DT_* , read allowed in * candidate/running/startup/state * operation_type - indicates the operation type - UNC_OP_*. - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be * added to sess. **/ -UpplReturnCode Kt_Ctr_Domain::ReadInternal(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, @@ -652,7 +652,7 @@ UpplReturnCode Kt_Ctr_Domain::ReadInternal(OdbcmConnectionHandler *db_conn, void_val_struct = val_struct[0]; } // Get read response from database - UpplReturnCode read_status = ReadDomainValFromDB(db_conn, key_struct, + UncRespCode read_status = ReadDomainValFromDB(db_conn, key_struct, void_val_struct, data_type, operation_type, @@ -661,10 +661,11 @@ UpplReturnCode Kt_Ctr_Domain::ReadInternal(OdbcmConnectionHandler *db_conn, vect_domain_id); key_val.clear(); val_struct.clear(); - pfc_log_info("ReadDomainValFromDB returned %d with response size %d", + pfc_log_info("ReadDomainValFromDB returned %d with response size %" + PFC_PFMT_SIZE_T, read_status, - static_cast(vect_val_ctr_domain_st.size())); - if (read_status == UPPL_RC_SUCCESS) { + vect_val_ctr_domain_st.size()); + if (read_status == UNC_RC_SUCCESS) { pfc_log_debug("Read operation is success"); for (unsigned int iIndex = 0 ; iIndex < vect_val_ctr_domain_st.size(); ++iIndex) { @@ -676,8 +677,8 @@ UpplReturnCode Kt_Ctr_Domain::ReadInternal(OdbcmConnectionHandler *db_conn, val_struct.push_back(reinterpret_cast(val_domain)); } } - pfc_log_debug("Returned Key vector size: %d", - static_cast (key_val.size())); + pfc_log_debug("Returned Key vector size: %" PFC_PFMT_SIZE_T, + key_val.size()); return read_status; } @@ -692,12 +693,12 @@ UpplReturnCode Kt_Ctr_Domain::ReadInternal(OdbcmConnectionHandler *db_conn, * readbulk * is_read_next - indicates whether this function is invoked * from readnext - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be * added to sess. **/ -UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -708,14 +709,14 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_log_info("Processing ReadBulk of Kt_Domain"); key_ctr_domain obj_key_ctr_domain= *(reinterpret_cast(key_struct)); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; vector vect_val_ctr_domain; if (data_type != UNC_DT_CANDIDATE && data_type != UNC_DT_RUNNING && data_type != UNC_DT_STATE && data_type != UNC_DT_STARTUP) { pfc_log_debug("ReadBulk operation is not allowed in %d data type", data_type); - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return read_status; } string str_domain_name = @@ -724,10 +725,10 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, reinterpret_cast(obj_key_ctr_domain.ctr_key.controller_name); unc_keytype_ctrtype_t controller_type = UNC_CT_UNKNOWN; pfc_bool_t invalid_parent = false; - UpplReturnCode retcode = PhyUtil::get_controller_type( + UncRespCode retcode = PhyUtil::get_controller_type( db_conn, str_controller_name, controller_type, (unc_keytype_datatype_t)data_type); - if (retcode != UPPL_RC_SUCCESS) { + if (retcode != UNC_RC_SUCCESS) { pfc_log_error("Error getting the controller type"); invalid_parent = true; } @@ -755,10 +756,10 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, vector vect_key_value; vect_key_value.push_back(str_controller_name); vect_key_value.push_back(str_domain_name); - UpplReturnCode key_exist_status = IsKeyExists( + UncRespCode key_exist_status = IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, vect_key_value); - if (key_exist_status == UPPL_RC_SUCCESS) { + if (key_exist_status == UNC_RC_SUCCESS) { domain_exists = PFC_TRUE; } } @@ -775,7 +776,7 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, dummy_val_domain); } pfc_log_debug("read status from Kt_Ctr_Domain is %d", read_status); - if (invalid_parent == false && (read_status == UPPL_RC_SUCCESS || + if (invalid_parent == false && (read_status == UNC_RC_SUCCESS || domain_exists == PFC_TRUE)) { // For each domain, read the child's attributes vector ::iterator vect_iter = @@ -826,7 +827,7 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, --max_rep_ct; if (max_rep_ct == 0) { pfc_log_debug("CtrDomain - max_rep_ct reached zero..."); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } domain_exists = PFC_FALSE; @@ -851,7 +852,7 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, continue; } pfc_log_debug("Domain = Calling child %d read bulk", kIdx); - UpplReturnCode ch_read_status = child[kIdx]->ReadBulk( + UncRespCode ch_read_status = child[kIdx]->ReadBulk( db_conn, child_key_struct, data_type, max_rep_ct, @@ -866,18 +867,18 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, FreeChildKeyStruct(kIdx, child_key_struct); if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct reached zero, so returning"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } // reset child index child_index = -1; } - } else if (read_status == UPPL_RC_ERR_DB_ACCESS) { + } else if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("KtCtrDomain ReadBulk - Returning DB Access Error"); return read_status; } } else if (max_rep_ct == 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (max_rep_ct > 0 && parent_call == false) { pfc_log_debug("max_rep_ct is %d and parent_call is %d, calling parent", @@ -897,14 +898,14 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, is_read_next, read_req); pfc_log_debug("read status from Kt_Controller kin is %d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } pfc_log_debug("reached end of key tree, read_status=%d", read_status); - if (read_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { - read_status = UPPL_RC_SUCCESS; + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { + read_status = UNC_RC_SUCCESS; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -916,12 +917,12 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulk(OdbcmConnectionHandler *db_conn, * vect_val_ctr_domain - indicates the fetched values from db of * val_ctr_domain type * vect_domain_id - indicates the fetched domain names from db - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be * added to sess. **/ -UpplReturnCode Kt_Ctr_Domain::ReadBulkInternal( +UncRespCode Kt_Ctr_Domain::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, @@ -929,11 +930,11 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulkInternal( vector &vect_val_ctr_domain_st, vector &vect_domain_id) { if (max_rep_ct <= 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); void *val_struct = NULL; - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_ctr_domain_dbtableschema; // Populate DBSchema for ctr_domain_table @@ -951,14 +952,14 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulkInternal( (unc_keytype_operation_t)UNC_OP_READ_BULK, db_conn); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed"); return read_status; @@ -978,17 +979,17 @@ UpplReturnCode Kt_Ctr_Domain::ReadBulkInternal( * value_struct - the value for the kt Domain instance * data_type - UNC_DT_* - indicates the data base type * operation_type - UNC_OP* - indicates the operation type - * @return : UPPL_RC_SUCCESS is returned when the validation is successful - * UPPL_RC_ERR_* is returned when validation is failure + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure **/ -UpplReturnCode Kt_Ctr_Domain::PerformSyntaxValidation( +UncRespCode Kt_Ctr_Domain::PerformSyntaxValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_info("Syntax Validation of KT_CTR_DOMAIN"); - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; // Validate key structure @@ -998,14 +999,14 @@ UpplReturnCode Kt_Ctr_Domain::PerformSyntaxValidation( attr_syntax_map_all[UNC_KT_CTR_DOMAIN]; IS_VALID_STRING_KEY(DOMAIN_NAME_STR, domain_name, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } string value = reinterpret_cast(key->ctr_key.controller_name); IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate value structure @@ -1020,25 +1021,25 @@ UpplReturnCode Kt_Ctr_Domain::PerformSyntaxValidation( valid_val = PhyUtil::uint8touint(domain_value->valid[kIdxDomainType]); IS_VALID_INT_VALUE(DOMAIN_TYPE_STR, domain_value->type, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (data_type == UNC_DT_CANDIDATE) { if (operation == UNC_OP_CREATE) { if (domain_value->type != UPPL_DOMAIN_TYPE_NORMAL) { pfc_log_info( "Only normal controller domain can be created from northbound"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } if (domain_name == DEFAULT_DOMAIN) { pfc_log_info("Default Domain name cannot be used"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } if (operation == UNC_OP_UPDATE) { if (valid_val == UNC_VF_VALID) { pfc_log_info("Domain type cannot be modified from northbound"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } } @@ -1048,8 +1049,8 @@ UpplReturnCode Kt_Ctr_Domain::PerformSyntaxValidation( value = reinterpret_cast(domain_value->description); IS_VALID_STRING_VALUE(DOMAIN_DESCRIPTION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } return ret_code; } @@ -1060,16 +1061,16 @@ UpplReturnCode Kt_Ctr_Domain::PerformSyntaxValidation( * val_struct - specifies value of KT_DOMAIN * operation - UNC_OP* - indicates the operation type * data_type - UNC_DT* - indicates the data base type - * @return : UPPL_RC_SUCCESS if semantic valition is successful - * or UPPL_RC_ERR_* if failed + * @return : UNC_RC_SUCCESS if semantic valition is successful + * or UNC_UPPL_RC_ERR_* if failed **/ -UpplReturnCode Kt_Ctr_Domain::PerformSemanticValidation( +UncRespCode Kt_Ctr_Domain::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; pfc_log_debug("Inside PerformSemanticValidation of KT_CTR_DOMAIN"); // Check whether the given instance of domain exists in DB key_ctr_domain *obj_key_ctr_domain = @@ -1080,17 +1081,17 @@ UpplReturnCode Kt_Ctr_Domain::PerformSemanticValidation( vector domain_vect_key_value; domain_vect_key_value.push_back(controller_name); domain_vect_key_value.push_back(domain_name); - UpplReturnCode key_status = IsKeyExists(db_conn, + UncRespCode key_status = IsKeyExists(db_conn, (unc_keytype_datatype_t)data_type, domain_vect_key_value); pfc_log_debug("IsKeyExists status %d", key_status); // In case of create operation, key should not exist if (operation == UNC_OP_CREATE) { - if (key_status == UPPL_RC_SUCCESS) { + if (key_status == UNC_RC_SUCCESS) { pfc_log_error("Key instance already exists"); pfc_log_error("Hence create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; - } else if (key_status == UPPL_RC_ERR_DB_ACCESS) { + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; + } else if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; } else { @@ -1100,19 +1101,19 @@ UpplReturnCode Kt_Ctr_Domain::PerformSemanticValidation( } else if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { // In case of update/delete/read operation, key should exist - if (key_status == UPPL_RC_ERR_DB_ACCESS) { + if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; - } else if (key_status != UPPL_RC_SUCCESS) { + } else if (key_status != UNC_RC_SUCCESS) { pfc_log_error("Key instance does not exist"); pfc_log_error("Hence update/delete/read operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { pfc_log_info("key instance exist update/del/read operation allowed"); } } - if (operation == UNC_OP_CREATE && status == UPPL_RC_SUCCESS) { + if (operation == UNC_OP_CREATE && status == UNC_RC_SUCCESS) { vector parent_vect_key_value; parent_vect_key_value.push_back(controller_name); Kt_Controller KtObj; @@ -1120,12 +1121,12 @@ UpplReturnCode Kt_Ctr_Domain::PerformSemanticValidation( if (data_type == UNC_DT_IMPORT) { parent_data_type = UNC_DT_RUNNING; } - UpplReturnCode parent_key_status = KtObj.IsKeyExists( + UncRespCode parent_key_status = KtObj.IsKeyExists( db_conn, (unc_keytype_datatype_t)parent_data_type, parent_vect_key_value); pfc_log_debug("Parent IsKeyExists status %d", parent_key_status); - if (parent_key_status != UPPL_RC_SUCCESS) { - status = UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; + if (parent_key_status != UNC_RC_SUCCESS) { + status = UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; } } pfc_log_debug("Return Code SemanticValidation: %d", status); @@ -1141,26 +1142,26 @@ UpplReturnCode Kt_Ctr_Domain::PerformSemanticValidation( * UNC_OP_DELETE * key_struct - indicates the key instance of KT_DOMAIN * value_struct - indicates the alarm values structure - * @return : UPPL_RC_SUCCESS if alarm is handled successfully or - * UPPL_RC_ERR* if incase of failure + * @return : UNC_RC_SUCCESS if alarm is handled successfully or + * UNC_UPPL_RC_ERR* if incase of failure **/ -UpplReturnCode Kt_Ctr_Domain::HandleDriverAlarms( +UncRespCode Kt_Ctr_Domain::HandleDriverAlarms( OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; if (alarm_type != UNC_COREDOMAIN_SPLIT) { pfc_log_warn("%d alarm received for domain is ignored", alarm_type); return status; } uint8_t oper_status_db = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, oper_status_db); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_error("Unable to get current oper_status from db"); return read_status; } @@ -1191,15 +1192,15 @@ UpplReturnCode Kt_Ctr_Domain::HandleDriverAlarms( * @param[in] : data_type - indicates the data base type * key_struct - indicates the key instance of KT_DOMAIN * value_struct - indicates the value structure of KT_DOMAIN - * @return : UPPL_RC_SUCCESS - if oper status update in DB is successful - * else UPPL_RC_ERR_* is returned + * @return : UNC_RC_SUCCESS - if oper status update in DB is successful + * else UNC_UPPL_RC_ERR_* is returned **/ -UpplReturnCode Kt_Ctr_Domain::HandleOperStatus( +UncRespCode Kt_Ctr_Domain::HandleOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; if (key_struct != NULL) { key_ctr_domain_t *obj_key_ctr_domain = @@ -1213,10 +1214,10 @@ UpplReturnCode Kt_Ctr_Domain::HandleOperStatus( uint8_t ctrl_oper_status = 0; UpplDomainOperStatus domain_oper_status = UPPL_CTR_DOMAIN_OPER_UNKNOWN; Kt_Controller controller; - UpplReturnCode read_status = controller.GetOperStatus( + UncRespCode read_status = controller.GetOperStatus( db_conn, data_type, reinterpret_cast(&ctr_key), ctrl_oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { pfc_log_info("Controller's oper_status %d", ctrl_oper_status); if (ctrl_oper_status == (UpplControllerOperStatus) UPPL_CONTROLLER_OPER_UP) { @@ -1232,7 +1233,7 @@ UpplReturnCode Kt_Ctr_Domain::HandleOperStatus( pfc_log_info("Set Domain oper status status %d", return_code); } else { - return_code = UPPL_RC_ERR_BAD_REQUEST; + return_code = UNC_UPPL_RC_ERR_BAD_REQUEST; } return return_code; } @@ -1241,16 +1242,16 @@ UpplReturnCode Kt_Ctr_Domain::HandleOperStatus( * @Description : This function invokes the notifyoperstatus of boundary * @param[in] : data_type - indicates the data base type * key_struct - indicates the key instance of kt domain - * @return : UPPL_RC_SUCCESS -if oper status is handled properly in + * @return : UNC_RC_SUCCESS -if oper status is handled properly in * boundary - * or UPPL_RC_ERR* in case of failure + * or UNC_UPPL_RC_ERR* in case of failure **/ -UpplReturnCode Kt_Ctr_Domain::InvokeBoundaryNotifyOperStatus( +UncRespCode Kt_Ctr_Domain::InvokeBoundaryNotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct) { // Get controller and domain oper status - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; key_ctr_domain_t *obj_key_ctr_domain = reinterpret_cast(key_struct); @@ -1259,7 +1260,7 @@ UpplReturnCode Kt_Ctr_Domain::InvokeBoundaryNotifyOperStatus( string domain_name = (const char*)obj_key_ctr_domain->domain_name; vector ref_oper_status; - GET_ADD_CTRL_OPER_STATUS(controller_name); + GET_ADD_CTRL_OPER_STATUS(controller_name, ref_oper_status); Kt_Boundary boundary; val_boundary_t obj_val_boundary1; memset(&obj_val_boundary1, 0, sizeof(obj_val_boundary1)); @@ -1299,10 +1300,10 @@ UpplReturnCode Kt_Ctr_Domain::InvokeBoundaryNotifyOperStatus( * key_struct - key instance of KT_DOMAIN * oper_status - reference variable to store the oper status * from DB - * @return : UPPL_RC_SUCCESS - if oper status is read successfully else - * UPPL_RC_ERR* is returned + * @return : UNC_RC_SUCCESS - if oper status is read successfully else + * UNC_UPPL_RC_ERR* is returned **/ -UpplReturnCode Kt_Ctr_Domain::GetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status) { @@ -1351,7 +1352,7 @@ UpplReturnCode Kt_Ctr_Domain::GetOperStatus(OdbcmConnectionHandler *db_conn, read_db_status != ODBCM_RC_RECORD_NOT_FOUND) { // log error pfc_log_error("oper_status read operation failed"); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper_status value @@ -1380,7 +1381,7 @@ UpplReturnCode Kt_Ctr_Domain::GetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1388,10 +1389,10 @@ UpplReturnCode Kt_Ctr_Domain::GetOperStatus(OdbcmConnectionHandler *db_conn, * @param[in] : data_type - indicates the data base type * key_struct - key instance of kt domain * oper_status - oper status value to be updated in DB - * @return : UPPL_RC_SUCCESS - if the oper status is updation in db is - * success or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS - if the oper status is updation in db is + * success or UNC_UPPL_RC_ERR* **/ -UpplReturnCode Kt_Ctr_Domain::SetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, UpplDomainOperStatus oper_status) { @@ -1438,14 +1439,14 @@ UpplReturnCode Kt_Ctr_Domain::SetOperStatus(OdbcmConnectionHandler *db_conn, } else if (update_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("oper_status update operation failed"); - return UPPL_RC_ERR_DB_UPDATE; + return UNC_UPPL_RC_ERR_DB_UPDATE; } else { // Notify operstatus change to northbound uint8_t old_oper_status = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, old_oper_status); - if (read_status == UPPL_RC_SUCCESS && data_type != UNC_DT_IMPORT) { + if (read_status == UNC_RC_SUCCESS && data_type != UNC_DT_IMPORT) { val_ctr_domain_st old_val_ctr_domain, new_val_ctr_domain; memset(&old_val_ctr_domain, 0, sizeof(old_val_ctr_domain)); memset(&new_val_ctr_domain, 0, sizeof(new_val_ctr_domain)); @@ -1456,9 +1457,9 @@ UpplReturnCode Kt_Ctr_Domain::SetOperStatus(OdbcmConnectionHandler *db_conn, int err = 0; // Send notification to Northbound ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_CTR_DOMAIN, err); - northbound_event_header rsh = {UNC_OP_UPDATE, + northbound_event_header rsh = {static_cast(UNC_OP_UPDATE), data_type, - UNC_KT_CTR_DOMAIN}; + static_cast(UNC_KT_CTR_DOMAIN)}; err = PhyUtil::sessOutNBEventHeader(ser_evt, rsh); err |= ser_evt.addOutput(*obj_key_ctr_domain); err |= ser_evt.addOutput(new_val_ctr_domain); @@ -1466,7 +1467,7 @@ UpplReturnCode Kt_Ctr_Domain::SetOperStatus(OdbcmConnectionHandler *db_conn, if (err == 0) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Notify operstatus modifications - UpplReturnCode status = (UpplReturnCode) physical_layer + UncRespCode status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); pfc_log_debug("Event notification status %d", status); } else { @@ -1474,7 +1475,7 @@ UpplReturnCode Kt_Ctr_Domain::SetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1482,19 +1483,19 @@ UpplReturnCode Kt_Ctr_Domain::SetOperStatus(OdbcmConnectionHandler *db_conn, * @param[in] : data type - UNC_DT_* - indicates the data base type * key values - vector of type string to store the primary * key values - * @return : UPPL_RC_SUCCESS - incase the row exists in domain table or - * UPPL_RC_ERR* is returned + * @return : UNC_RC_SUCCESS - incase the row exists in domain table or + * UNC_UPPL_RC_ERR* is returned **/ -UpplReturnCode Kt_Ctr_Domain::IsKeyExists(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { pfc_log_debug("Inside IsKeyExists"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_error("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = key_values[0]; @@ -1534,7 +1535,7 @@ UpplReturnCode Kt_Ctr_Domain::IsKeyExists(OdbcmConnectionHandler *db_conn, if (check_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - check_status = UPPL_RC_ERR_DB_ACCESS; + check_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (check_db_status == ODBCM_RC_ROW_EXISTS) { pfc_log_debug("DB returned success for Row exists"); pfc_log_debug("Checking .db_return_status_ %d with %d", @@ -1544,11 +1545,11 @@ UpplReturnCode Kt_Ctr_Domain::IsKeyExists(OdbcmConnectionHandler *db_conn, pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + check_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_DB_GET; + check_status = UNC_UPPL_RC_ERR_DB_GET; } pfc_log_debug("check_status = %d", check_status); return check_status; @@ -1756,10 +1757,10 @@ void Kt_Ctr_Domain::PopulateDBSchemaForKtTable( * option1,option2 - specifies any additional condition for * read operation * max_rep_ct - indicates the maximum repetition count - * @return : UPPL_RC_SUCCESS - if the read operation is successful - * UPPL_RC_ERR_* - read operation failed + * @return : UNC_RC_SUCCESS - if the read operation is successful + * UNC_UPPL_RC_ERR_* - read operation failed **/ -UpplReturnCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -1781,19 +1782,19 @@ UpplReturnCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - 0}; + static_cast(0)}; if (option1 != UNC_OPT1_NORMAL) { pfc_log_error("Invalid option1 specified for read operation"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CTR_DOMAIN); err |= sess.addOutput(*obj_key_ctr_domain); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (operation_type == UNC_OP_READ) { max_rep_ct = 1; @@ -1804,17 +1805,17 @@ UpplReturnCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, (unc_keytype_datatype_t)data_type != UNC_DT_STATE && (unc_keytype_datatype_t)data_type != UNC_DT_IMPORT) { pfc_log_error("Data type is not allowed"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CTR_DOMAIN); err |= sess.addOutput(*obj_key_ctr_domain); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; // Read from DB directly for all data types vector vect_domain_id; vector vect_val_ctr_domain_st; @@ -1827,7 +1828,7 @@ UpplReturnCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, vect_domain_id); rsh.result_code = read_status; rsh.max_rep_count = max_rep_ct; - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int index = 0; index < vect_domain_id.size(); ++index) { string domain_name = (const char *)vect_domain_id[index].domain_name; @@ -1840,23 +1841,23 @@ UpplReturnCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, } } if (rsh.max_rep_count == 0) { - rsh.result_code = UPPL_RC_ERR_NO_SUCH_INSTANCE; + rsh.result_code = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_CONTROLLER); err |= sess.addOutput(*obj_key_ctr_domain); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } int err = PhyUtil::sessOutRespHeader(sess, rsh); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - pfc_log_debug("Vector of Domain Id: %d", - (unsigned int) vect_domain_id.size()); + pfc_log_debug("Vector of Domain Id: %" + PFC_PFMT_SIZE_T, vect_domain_id.size()); for (unsigned int index = 0; index < vect_domain_id.size(); ++index) { string domain_name = (const char *)vect_domain_id[index].domain_name; @@ -1886,7 +1887,7 @@ UpplReturnCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, err |= sess.addOutput(*obj_key_ctr_domain); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } pfc_log_debug("Return value for read operation %d", read_status); @@ -1906,10 +1907,10 @@ UpplReturnCode Kt_Ctr_Domain::PerformRead(OdbcmConnectionHandler *db_conn, * val_ctr_domain_st_t structure * domain_id - vector of type key_ctr_domain to store the * domain id - * @return : UPPL_RC_SUCCESS - read operation is success - * UPPL_RC_ERR_DB_GET - read operation is failure + * @return : UNC_RC_SUCCESS - read operation is success + * UNC_UPPL_RC_ERR_DB_GET - read operation is failure **/ -UpplReturnCode Kt_Ctr_Domain::ReadDomainValFromDB( +UncRespCode Kt_Ctr_Domain::ReadDomainValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -1920,10 +1921,10 @@ UpplReturnCode Kt_Ctr_Domain::ReadDomainValFromDB( vector &domain_id) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; // Common structures that will be used to send query to ODBC @@ -1949,14 +1950,14 @@ UpplReturnCode Kt_Ctr_Domain::ReadDomainValFromDB( } if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; @@ -1967,12 +1968,12 @@ UpplReturnCode Kt_Ctr_Domain::ReadDomainValFromDB( max_rep_ct, operation_type, domain_id); - pfc_log_debug("vect_val_ctr_domain size: %d", - (unsigned int)vect_val_ctr_domain_st.size()); - pfc_log_debug("domain_id size: %d", (unsigned int)domain_id.size()); + pfc_log_debug("vect_val_ctr_domain size: %" + PFC_PFMT_SIZE_T, vect_val_ctr_domain_st.size()); + pfc_log_debug("domain_id size: %" PFC_PFMT_SIZE_T, domain_id.size()); if (vect_val_ctr_domain_st.empty()) { // Read failed , return error - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed after reading response"); return read_status; @@ -2166,8 +2167,8 @@ void Kt_Ctr_Domain::FillDomainValueStructure( obj_val_ctr_domain_st.domain = obj_val_ctr_domain; vect_domain_id.push_back(obj_key_ctr_domain); vect_obj_val_ctr_domain.push_back(obj_val_ctr_domain_st); - pfc_log_debug("result - vect_obj_val_ctr_domain size: %d", - (unsigned int) vect_obj_val_ctr_domain.size()); + pfc_log_debug("result - vect_obj_val_ctr_domain size: %" + PFC_PFMT_SIZE_T, vect_obj_val_ctr_domain.size()); } return; } @@ -2177,10 +2178,10 @@ void Kt_Ctr_Domain::FillDomainValueStructure( * @param[in] : obj_key_struct - vector to hold the key structure of ctr * domain key type * row_status - indicates the row status to be queried in DB with - * @return : UPPL_RC_SUCCESS - if the row exists in DB or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS - if the row exists in DB or UNC_UPPL_RC_ERR* * if the row doesn't exists in DB **/ -UpplReturnCode Kt_Ctr_Domain::GetModifiedRows(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Ctr_Domain::GetModifiedRows(OdbcmConnectionHandler *db_conn, vector &obj_key_struct, CsRowStatus row_status) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); @@ -2196,7 +2197,7 @@ UpplReturnCode Kt_Ctr_Domain::GetModifiedRows(OdbcmConnectionHandler *db_conn, void *domain_key = reinterpret_cast (&obj_key_ctr_domain); void *domain_val = reinterpret_cast (&val_struct); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_ctr_domain_dbtableschema; @@ -2215,13 +2216,13 @@ UpplReturnCode Kt_Ctr_Domain::GetModifiedRows(OdbcmConnectionHandler *db_conn, if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record to read"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; return read_status; } vector vect_domain_id; @@ -2298,21 +2299,21 @@ void Kt_Ctr_Domain::Fill_Attr_Syntax_Map() { * @param[in] : key_struct - key instanc of ctr domain * val_ctr_domain_valid_st - structure variable of type * val_ctr_domain_st_t - * @return : UPPL_RC_SUCCESS - if the ctr domain valid flag read is - * success else UPPL_RC_ERR_* + * @return : UNC_RC_SUCCESS - if the ctr domain valid flag read is + * success else UNC_UPPL_RC_ERR_* **/ -UpplReturnCode Kt_Ctr_Domain::GetCtrDomainValidFlag( +UncRespCode Kt_Ctr_Domain::GetCtrDomainValidFlag( OdbcmConnectionHandler *db_conn, void *key_struct, val_ctr_domain_st_t &val_ctr_domain_valid_st, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_key_ctr_domain; vect_key_ctr_domain.push_back(key_struct); vector vect_val_ctr_domain; return_code = ReadInternal(db_conn, vect_key_ctr_domain, vect_val_ctr_domain, data_type, UNC_OP_READ); - if (return_code == UPPL_RC_SUCCESS) { + if (return_code == UNC_RC_SUCCESS) { val_ctr_domain_st_t *obj_new_ctr_domain_val = reinterpret_cast(vect_val_ctr_domain[0]); if (obj_new_ctr_domain_val != NULL) { diff --git a/coordinator/modules/uppl/itc_kt_dataflow.cc b/coordinator/modules/uppl/itc_kt_dataflow.cc new file mode 100644 index 00000000..2114949a --- /dev/null +++ b/coordinator/modules/uppl/itc_kt_dataflow.cc @@ -0,0 +1,2414 @@ +/* + * Copyright (c) 2013-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +/** + * @brief KT Dataflow implementation + * @file itc_kt_dataflow.cc + * + */ + +#include "itc_kt_dataflow.hh" +#include "itc_kt_controller.hh" +#include "itc_kt_logicalport.hh" +#include "itc_kt_logical_member_port.hh" +#include "itc_kt_root.hh" +#include "itc_kt_switch.hh" +#include "itc_kt_port.hh" +#include "itc_kt_boundary.hh" +#include "odbcm_db_varbind.hh" +#include "ipct_util.hh" +#include "itc_read_request.hh" +#include "ipc_client_configuration_handler.hh" +#include "itc_kt_ctr_domain.hh" +#include "capa_module.hh" +using unc::uppl::PhysicalLayer; +using unc::uppl::ODBCMUtils; +using unc::uppl::ODBCMTableColumns; +using unc::uppl::IPCClientDriverHandler; + +/** Constructor + * @Description : This function initializes member variables + * and fills the attribute syntax map used for validation + * @param[in] : None + * @return : None + * */ +Kt_Dataflow::Kt_Dataflow() { + // Populate structure to be used for syntax validation + if (attr_syntax_map_all.find(UNC_KT_DATAFLOW) == + attr_syntax_map_all.end()) { + pfc_log_info("Calling Fill_Attr_sytnax"); + Fill_Attr_Syntax_Map(); + } + max_dataflow_traverse_count_ = 0; +} + +/** Destructor + * @Description : This function frees the boundary map built + * @param[in] : None + * @return : None + * */ +Kt_Dataflow::~Kt_Dataflow() { + pfc_log_debug("Inside the destructor of Kt_Dataflow"); + multimap *bdry_map = get_boundary_map(); + bdry_map->clear(); + map * is_validated_map = get_is_validated_map(); + is_validated_map->clear(); +} + + +/**ReadBulk + * @Description : This function is not allowed for Dataflow. + * @param[in] : db_conn - OdbcmConnectionHandler + * key_struct - key for dataflow + * data_type - UNC_DT_* + * max_rep_ct - max repetition count + * child_index - index of children KTs + * parent_call - flag to indicate whether parent Kt called + * is_read_next - flag to indicate whether called from ReadNext function + * read_req - ReadRequest pointer + * @param[out] : none + * @return : UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED is returned the response + * */ +UncRespCode Kt_Dataflow::ReadBulk(OdbcmConnectionHandler *db_conn, + void* key_struct, + uint32_t data_type, + uint32_t &max_rep_ct, + int child_index, + pfc_bool_t parent_call, + pfc_bool_t is_read_next, + ReadRequest *read_req) { + pfc_log_debug("ReadBulk operation is not allowed in KT_DATAFLOW"); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; +} + + +/** PerformSyntaxValidation + * @Description : This function performs syntax validation for + * UNC_KT_DATAFLOW + * @param[in] + * key_struct - the key for the kt dataflow instance + * value_struct - the value for the kt dataflow instance + * data_type - UNC_DT_*,type of database + * operation_type - UNC_OP*,type of operation + * @param[out] : none + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure + * */ +UncRespCode Kt_Dataflow::PerformSyntaxValidation( + OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode ret_code = UNC_RC_SUCCESS; + pfc_bool_t mandatory = PFC_TRUE; + map attr_syntax_map = + attr_syntax_map_all[UNC_KT_DATAFLOW]; + // Validate key structure + key_dataflow_t *key = reinterpret_cast(key_struct); + string value = reinterpret_cast(key->controller_name); + IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_debug("Error in controller_name attribute"); + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + } + value = reinterpret_cast(key->switch_id); + IS_VALID_STRING_KEY(SWITCH_ID_STR, value, operation, ret_code, mandatory); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_debug("Error in switch_id attribute"); + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + } + + value = reinterpret_cast(key->port_id); + IS_VALID_STRING_KEY(PORT_ID_STR, value, operation, ret_code, mandatory); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_debug("Error in port_id attribute"); + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + } + + uint16_t int_value = key->vlan_id; + IS_VALID_VLAN_ID(VLAN_ID_STR, int_value, operation, ret_code, mandatory); + if (ret_code != UNC_RC_SUCCESS) { + if (key->vlan_id != 0xFFFF) { + pfc_log_debug("Error in vlan_id attribute"); + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + } + } + bool nonZeroVal = false; + for (int i = 0; i < 6; i++) { + if (key->src_mac_address[i] > 0) { + nonZeroVal = true; + break; + } + } + if (nonZeroVal == false) { + pfc_log_debug("Error in src_mac_address attribute"); + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + } + +/* + value = reinterpret_cast(key->src_mac_address); + IS_VALID_STRING_KEY(PORT_MAC_ADDRESS_STR, value, operation, + ret_code, mandatory); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_debug("Error in src_mac_address attribute"); + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + } +*/ + + return UNC_RC_SUCCESS; +} + +/** PerformSemanticValidation + * @Description : This function performs semantic validation + * for UNC_KT_DATAFLOW + * @param[in] : key_struct - specifies key instance of KT_Dataflow + * value_struct - specifies value of KT_DATAFLOW,value of unc_key_type_t + * operation - UNC_OP*,type of operation + * data_type - UNC_DT*,type of database + * @return : UNC_RC_SUCCESS if semantic valition is successful + * or UNC_UPPL_RC_ERR_* if failed + * */ +UncRespCode Kt_Dataflow::PerformSemanticValidation( + OdbcmConnectionHandler *db_conn, + void* key_struct, + void* val_struct, + uint32_t operation, + uint32_t data_type) { + pfc_log_trace("Entered into : %s", __func__); + + // Not allowing the STANDBY request + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + if (physical_layer->get_physical_core()->get_system_state() == \ + UPPL_SYSTEM_ST_STANDBY) { + pfc_log_error("System is in Standby mode"); + return UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; + } + + UncRespCode ret_code = UNC_RC_SUCCESS; + uint32_t nums = 0; + const uint8_t *attrs = 0; + + key_dataflow_t *obj_key_dataflow = + reinterpret_cast(key_struct); + key_ctr_t obj_key_ctr; + memset(&obj_key_ctr, '\0', sizeof(key_ctr_t)); + memcpy(obj_key_ctr.controller_name, obj_key_dataflow->controller_name, + sizeof(obj_key_dataflow->controller_name)); + void *key_str = reinterpret_cast (&obj_key_ctr); + + unc::capa::CapaModule *capa = reinterpret_cast( + pfc::core::Module::getInstance("capa")); + if (capa == NULL) { + pfc_log_warn("%s:%d: CapaModule is not found", __FUNCTION__, __LINE__); + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; + } else { + pfc_log_info("Capa instance got successfully"); + } + Kt_Controller KtObj; + vector vect_key_ctr; + vect_key_ctr.push_back(key_str); + vector vect_val_ctr; + // vector which will holds the boundary values + ret_code = KtObj.ReadInternal(db_conn, vect_key_ctr, + vect_val_ctr, + UNC_DT_RUNNING, + UNC_OP_READ); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_debug("Read of Controller failed"); + return ret_code; + } + + key_ctr_t *ctr_key = reinterpret_cast(vect_key_ctr[0]); + val_ctr_st_t *val_ctr_vect = reinterpret_cast + (vect_val_ctr[0]); + if (val_ctr_vect == NULL || ctr_key == NULL) { + if (ctr_key != NULL) { + delete ctr_key; + ctr_key = NULL; + } + return UNC_UPPL_RC_ERR_CFG_SEMANTIC; + } + + unc_keytype_ctrtype_t controller_type = + (unc_keytype_ctrtype_t)val_ctr_vect->controller.type; + uint8_t oper_status_db = val_ctr_vect->oper_status; + string version = (const char*)val_ctr_vect->controller.version; + + pfc_log_debug("controller_type=%d", (uint16_t)controller_type); + pfc_log_debug("oper_status_db=%d", oper_status_db); + pfc_log_debug("config version=%s", version.c_str()); + + if (controller_type != UNC_CT_PFC) { + pfc_log_error("Read operation is provided on only PFC controller"); + ret_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } else if (oper_status_db != UPPL_CONTROLLER_OPER_UP) { + pfc_log_error("Read operation is provided only on" + " Controller which is in Up state"); + ret_code = UNC_UPPL_RC_ERR_CTRLR_DISCONNECTED; + } + if (ret_code != UNC_RC_SUCCESS) { + if (ctr_key != NULL) { + delete ctr_key; + ctr_key = NULL; + } + if (val_ctr_vect != NULL) { + delete val_ctr_vect; + val_ctr_vect = NULL; + } + return ret_code; + } + // Call CapaModule and check for PFC actual version + + bool ret_actual = capa->GetReadCapability(controller_type, + version, + UNC_KT_DATAFLOW, + &nums, + &attrs); + pfc_log_debug("return of GetReadCapability = %d", ret_actual); + if (ret_actual != true) { + pfc_log_debug("KEY TYPE is NOT supported for version : %s", + version.c_str()); + ret_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + pfc_log_debug("KEY TYPE is supported for version : %s", + version.c_str()); + if (ctr_key != NULL) { + delete ctr_key; + ctr_key = NULL; + } + if (val_ctr_vect != NULL) { + delete val_ctr_vect; + val_ctr_vect = NULL; + } + return ret_code; +} + + +/** PerformRead + * @Description : This function reads the instance of KT_Dataflow based on + * operation type - READ + * @param[in] : session_id-ipc session id used for TC validation + * configuration_id-ipc configuration id used for TC validation + * key_struct-void* to ctr key structure + * value_struct-void* to ctr value structure + * data_type-UNC_DT_*,type of database + * operation _type-UNC_OP_*,type of database + * sess- object of ServerSession + * option1,option2-UNC_OPT1/OPT2_*,additional infor read operations + * max_rep_ct-max. no of records to be read + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*, + * UNC_RC_SUCCESS is returned when the response + * is added to ipc session successfully. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * */ +UncRespCode Kt_Dataflow::PerformRead(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + void* val_struct, + uint32_t data_type, + uint32_t operation_type, + ServerSession &sess, + uint32_t option1, + uint32_t option2, + uint32_t max_rep_ct) { + pfc_log_info("Inside PerformRead operation_type=%d data_type=%d", + operation_type, data_type); + if (operation_type == UNC_OP_READ) { + max_rep_ct = 1; + } + key_dataflow_t *obj_key_dataflow = + reinterpret_cast(key_struct); + if (option1 != UNC_OPT1_NORMAL) { + pfc_log_error("Invalid option1 specified for read operation"); + physical_response_header rsh = {session_id, + configuration_id, + operation_type, + max_rep_ct, + option1, + option2, + data_type, + static_cast(UNC_UPPL_RC_ERR_INVALID_OPTION1)}; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_DATAFLOW); + err |= sess.addOutput(*obj_key_dataflow); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + if (option2 != UNC_OPT2_NONE) { + pfc_log_error("Invalid option2 specified for read operation"); + physical_response_header rsh = {session_id, + configuration_id, + operation_type, + max_rep_ct, + option1, + option2, + data_type, + static_cast(UNC_UPPL_RC_ERR_INVALID_OPTION2)}; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_DATAFLOW); + err |= sess.addOutput(*obj_key_dataflow); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { + pfc_log_error("Data type is not allowed"); + physical_response_header rsh = {session_id, + configuration_id, + operation_type, + max_rep_ct, + option1, + option2, + data_type, + static_cast(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED)}; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_DATAFLOW); + err |= sess.addOutput(*obj_key_dataflow); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + pfc_timespec_t extd_tout; + extd_tout.tv_sec = PFC_DEF_TIMEOUT; + extd_tout.tv_nsec = 0; + sess.setTimeout(&extd_tout); + pfc_log_trace("Extending the timeout to 3600 seconds"); + // read controller st data, oper_status, type, actual version + // and configured version + // store the max_dataflow_traverse_count value which is gotton from uppl.conf + PhysicalCore *physical_core = PhysicalLayer::get_instance()-> + get_physical_core(); + max_dataflow_traverse_count_ = physical_core->uppl_max_dataflowtraversal_; + pfc_log_debug("max_dataflow_traverse_count_ (from conf file) = %d", + max_dataflow_traverse_count_); + key_dataflow_t key_copy; + memcpy(&key_copy, key_struct, sizeof(key_dataflow_t)); + string empty = ""; + UncRespCode ret_code = traversePFC(db_conn, session_id, configuration_id, + key_struct, sess, true, NULL, NULL, empty); + physical_response_header rsh = {session_id, + configuration_id, + operation_type, + max_rep_ct, + option1, + option2, + data_type, + (uint32_t)ret_code}; + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_error("Querying 1st PFC failed"); + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_DATAFLOW); + err |= sess.addOutput(key_copy); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } else { + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_DATAFLOW); + err |= sess.addOutput(key_copy); + err = df_util_.sessOutDataflows(sess); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + } + pfc_log_trace("Exiting PerformRead"); + return UNC_RC_SUCCESS; +} + +/** traversePFC + * @Description : This function recieves the dataflows from driver and checks + * for boundary egress port and traverse to the neighbour. + * @param[in] : session_id-ipc session id used for TC validation + * configuration_id-ipc configuration id used for TC validation + * key_struct-void* to ctr key structure + * sess- object of ServerSession + * is_head_node - flag to indicate whether head node + * parentnode - reference of the parent node + * lastPfcNode - reference of the last PFC node + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*, + * UNC_RC_SUCCESS is returned when the response + * is added to ipc session successfully. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * */ +UncRespCode Kt_Dataflow::traversePFC(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *parentnode, + DataflowCmn *lastPfcNode, + string &ingress_bdry_id) { + pfc_log_trace("Entered into : %s", __func__); + key_dataflow_t *obj_key_dataflow = + reinterpret_cast(key_struct); + string controller_name = + reinterpret_cast(obj_key_dataflow->controller_name); + string domain_id = ""; + map * is_validated_map = get_is_validated_map(); + map :: iterator valdt_map_iter; + valdt_map_iter = is_validated_map->find(controller_name); + if (valdt_map_iter == is_validated_map->end()) { + UncRespCode err_code = PerformSemanticValidation(db_conn, key_struct, NULL, + UNC_OP_READ, UNC_DT_RUNNING); + is_validated_map->insert(std::pair + (controller_name, err_code)); + if (err_code != UNC_RC_SUCCESS) { + pfc_log_info("PerformSemanticValidation failed with error %d", err_code); + return err_code; + } + } else { + UncRespCode err_code = (UncRespCode)valdt_map_iter->second; + if (err_code != UNC_RC_SUCCESS) { + pfc_log_debug("PerformSemanticValidation failed with error %d", err_code); + return err_code; + } + } + + // retrieve the VLAN ID and src MAC address from out_matches. + if (!is_head_node) { + map ::iterator output_matches_iter; + output_matches_iter = lastPfcNode->output_matches.find(UNC_MATCH_VLAN_ID); + if (output_matches_iter != lastPfcNode->output_matches.end()) { + val_df_flow_match_vlan_id_t *prev = +reinterpret_cast((*output_matches_iter).second); + obj_key_dataflow->vlan_id = prev->vlan_id; + } + output_matches_iter = lastPfcNode->output_matches.find(UNC_MATCH_DL_SRC); + if (output_matches_iter != lastPfcNode->output_matches.end()) { + val_df_flow_match_dl_addr_t *prev = +reinterpret_cast((*output_matches_iter).second); + memcpy(obj_key_dataflow->src_mac_address, prev->dl_addr, + sizeof(obj_key_dataflow->src_mac_address)); + } + } + + vector pfc_flows; + pfc_log_debug("Searching pfc_flows from map size %" PFC_PFMT_SIZE_T + "for key %s", df_util_.pfc_flows.size(), + DataflowCmn::get_string(*obj_key_dataflow).c_str()); + map > ::iterator iter; + for (iter =df_util_.pfc_flows.begin(); + iter != df_util_.pfc_flows.end(); iter++) { + if (DataflowCmn::Compare(iter->first, *obj_key_dataflow)) { + break; + } + } + if (iter == df_util_.pfc_flows.end()) { + pfc_log_info("Searching pfc_flows from map not found"); + + driver_request_header rqh = {uint32_t(0), uint32_t(0), controller_name, + domain_id, static_cast(UNC_OP_READ), uint32_t(0), + (uint32_t)0, (uint32_t)0, static_cast(UNC_DT_STATE), + static_cast(UNC_KT_DATAFLOW)}; + ClientSession *cli_session = NULL; + int err1 = 0; + UncRespCode driver_response = UNC_RC_SUCCESS; + IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, driver_response); + cli_session = pfc_drv_handler.ResetAndGetSession(); + if (driver_response != UNC_RC_SUCCESS) { + return driver_response; + } + err1 = PhyUtil::sessOutDriverReqHeader(*cli_session, rqh); + err1 |= cli_session->addOutput(*obj_key_dataflow); + pfc_log_debug("Key to Driver:%s", + DataflowCmn::get_string(*obj_key_dataflow).c_str()); + if (err1 != 0) { + pfc_log_error("addOutput failed for driver_request_header"); + if (is_head_node) { + pfc_log_info("Returning IPC_WRITE_ERROR"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } else { + if ((parentnode->next.size() == 0) && + (parentnode->addl_data->reason == UNC_DF_RES_SUCCESS)) + parentnode->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + pfc_log_info("Setting reason as UNC_DF_RES_SYSTEM_ERROR"); + return UNC_RC_SUCCESS; + } + } + pfc_timespec_t extd_tout; + extd_tout.tv_sec = PFC_DEF_TIMEOUT; + extd_tout.tv_nsec = 0; + cli_session->setTimeout(&extd_tout); + pfc_log_trace("Extending the timeout to 3600 seconds"); + // Send the request to driver + driver_response_header rsp; + driver_response = pfc_drv_handler.SendReqAndGetResp(rsp); + if (driver_response != UNC_RC_SUCCESS) { + if (is_head_node) { + pfc_log_error("Read request to Driver failed for controller %s" + " with response %d, err1=%d", controller_name.c_str(), + driver_response, err1); + } else { + pfc_log_error("Read request to Driver failed for controller %s" + " ,flow_id %" PFC_PFMT_u64 " with response %d, err1=%d", + controller_name.c_str(), parentnode->df_segment->df_common->flow_id, + driver_response, err1); + } + return driver_response; + } + + uint32_t total_flow_count = 0; + key_dataflow_t key_df; + uint32_t keytype; + uint32_t resp_pos = 10; + err1 = cli_session->getResponse(resp_pos++, keytype); + if (err1 != 0) { + pfc_log_error("Read keytype error for position resp_pos=%d", resp_pos); + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + err1 = cli_session->getResponse(resp_pos++, key_df); + if (err1 != 0) { + pfc_log_error("Read keytype error for position resp_pos=%d", resp_pos); + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + err1 = cli_session->getResponse(resp_pos++, total_flow_count); + if (err1 != 0) { + pfc_log_error("Read keytype error for position resp_pos=%d", resp_pos); + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + for (uint32_t i = 0; i < total_flow_count; i++) { + pfc_log_info("Reading flow %d from driver ", i); + DataflowDetail *df_segm = new DataflowDetail(kidx_val_df_data_flow_cmn); + if (df_segm == NULL) { + pfc_log_debug("Memory not allocated for df_segm"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } + err1 = df_segm->sessReadDataflow(*cli_session, resp_pos); + if (err1 != 0) { + delete df_segm; + pfc_log_error("Read dataflow from session error " + "for position resp_pos=%d", resp_pos); + return UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + pfc_flows.push_back(df_segm); + } + + df_util_.pfc_flows.insert( + std::pair > + (*obj_key_dataflow, pfc_flows)); + pfc_log_info("Got pfc_flows from driver. flows.size=%" PFC_PFMT_SIZE_T + "for key %s", pfc_flows.size(), + DataflowCmn::get_string(*obj_key_dataflow).c_str()); + } else { + pfc_flows = iter->second; + pfc_log_debug("Got pfc_flows from map. flows.size=%" PFC_PFMT_SIZE_T + "for key %s", pfc_flows.size(), + DataflowCmn::get_string(*obj_key_dataflow).c_str()); + } + for (uint32_t i = 0; i < pfc_flows.size(); i++) { + DataflowDetail *df_segm = pfc_flows[i]; + std::string ctr_name = (const char*)df_segm->df_common->controller_name; + pfc_log_debug("ctr_name passed to fill_ctrlr_dom_count_map-traversePFC:%s" + , ctr_name.c_str()); + UncRespCode fill_status = fill_ctrlr_dom_count_map(db_conn, + ctr_name); + if (fill_status != UNC_RC_SUCCESS) + pfc_log_debug("Map is not filled"); // TODO(UPPL) Need to be decided + pfc_log_debug("Return of fill_ctrlr_dom_count_map:%d", fill_status); + if (is_head_node) { + DataflowCmn *df_cmn = new DataflowCmn(is_head_node, df_segm); + pfc_log_trace("before calling df_util_ appendFlow"); + df_cmn->apply_action(); + uint32_t ret = df_util_.appendFlow(df_cmn); + if (ret != 0) { + pfc_log_info("df_util_ appendFlow ret=%d", ret); + delete df_cmn; + return UNC_UPPL_RC_FAILURE; + } + } else { + DataflowCmn *df_cmn = new DataflowCmn(is_head_node, df_segm); + bool match_result = df_cmn->check_match_condition + (lastPfcNode->output_matches); + pfc_log_debug("match_result:%d", match_result); + if (match_result) { + pfc_log_debug("2nd flow (id=%" PFC_PFMT_u64 + ") is matching with 1st flow (id=%" PFC_PFMT_u64 ")", + df_cmn->df_segment->df_common->flow_id, + parentnode->df_segment->df_common->flow_id); + df_cmn->apply_action(); + df_cmn->parent_node = parentnode; + UncDataflowReason ret = + parentnode->appendFlow(df_cmn, + *(df_util_.get_ctrlr_dom_count_map())); + if (ret == UNC_DF_RES_EXCEEDS_HOP_LIMIT) + delete df_cmn; + } else { + pfc_log_debug("2nd flow (id=%" PFC_PFMT_u64 + ") is not matching with 1st flow (id=%" PFC_PFMT_u64 + ") so ignoring", df_cmn->df_segment->df_common->flow_id, + parentnode->df_segment->df_common->flow_id); + delete df_cmn; + } + } + } + if (is_head_node) { + vector* firstCtrlrFlows = df_util_.get_firstCtrlrFlows(); + if (firstCtrlrFlows->size() == 0) { + pfc_log_info("firstCtrlrFlows- vector is empty"); + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + } + } else { + pfc_log_debug("Non is_head_node, next.size=%" + PFC_PFMT_SIZE_T ", existing reason=%d", + parentnode->next.size(), parentnode->addl_data->reason); + if (parentnode->next.size() == 0 && parentnode->addl_data->reason == + UNC_DF_RES_SUCCESS) { // Preserving old reason + if (parentnode->df_segment->df_common->controller_type == UNC_CT_PFC) { + // if parentnode is PFC type + parentnode->addl_data->reason = UNC_DF_RES_FLOW_NOT_FOUND; + } else { + parentnode->addl_data->reason = UNC_DF_RES_DST_NOT_REACHED; + } + return UNC_RC_SUCCESS; + } + } + if (is_head_node) { + vector* firstCtrlrFlows = df_util_.get_firstCtrlrFlows(); + checkFlowLimitAndTraverse(db_conn, session_id, configuration_id, sess, + key_struct, firstCtrlrFlows, is_head_node, + ingress_bdry_id); + } else { + vector* next = &(parentnode->next); + checkFlowLimitAndTraverse(db_conn, session_id, configuration_id, sess, + key_struct, next, is_head_node, ingress_bdry_id); + } + return UNC_RC_SUCCESS; +} + + +/** traverseVNP + * @Description : This function creates the dataflow node and is called when + * the neighbour found is of type VNP + * for boundary egress port and traverse to the neighbour. + * @param[in] : session_id-ipc session id used for TC validation + * configuration_id-ipc configuration id used for TC validation + * key_struct-void* to ctr key structure + * sess- object of ServerSession + * is_head_node - flag to indicate whether head node + * parentnode - reference of the parent node + * lastPfcNode - reference of the last PFC node + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*, + * UNC_RC_SUCCESS is returned when the response + * is added to ipc session successfully. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * */ + +UncRespCode Kt_Dataflow::traverseVNP(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *parentnode, + DataflowCmn *lastPfcNode, + string& ingress_bdry_id) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode ret_code = checkBoundaryAndTraverse(db_conn, session_id, + configuration_id, key_struct, sess, false, parentnode, + lastPfcNode, ingress_bdry_id); + return ret_code; +} + +/** traverseUnknown + * @Description : This function creates the dataflow node and is called when + * the neighbour found is of type Unknown + * for boundary egress port and traverse to the neighbour. + * @param[in] : session_id-ipc session id used for TC validation + * configuration_id-ipc configuration id used for TC validation + * key_struct-void* to ctr key structure + * sess- object of ServerSession + * is_head_node - flag to indicate whether head node + * parentnode - reference of the parent node + * lastPfcNode - reference of the last PFC node + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*, + * UNC_RC_SUCCESS is returned when the response + * is added to ipc session successfully. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * */ +UncRespCode Kt_Dataflow::traverseUNKNOWN(OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *parentnode, + DataflowCmn *lastPfcNode, + string& ingress_bdry_id) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode ret_code = checkBoundaryAndTraverse(db_conn, session_id, + configuration_id, key_struct, sess, false, parentnode, + lastPfcNode, ingress_bdry_id); + return ret_code; +} + +/** checkBoundaryAndTraverse + * @Description : This function finds the neighbour controller of the given + * controller and invokes resoective traversXXX function based on the ctr type + * for boundary egress port and traverse to the neighbour. + * @param[in] : session_id-ipc session id used for TC validation + * configuration_id-ipc configuration id used for TC validation + * key_struct-void* to ctr key structure + * sess- object of ServerSession + * is_head_node - flag to indicate whether head node + * parentnode - reference of the parent node + * lastPfcNode - reference of the last PFC node + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*, + * UNC_RC_SUCCESS is returned when the response + * is added to ipc session successfully. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * */ +UncRespCode Kt_Dataflow::checkBoundaryAndTraverse( + OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + void* key_struct, + ServerSession &sess, + bool is_head_node, + DataflowCmn *source_node, + DataflowCmn *lastPfcNode, + string &ingress_bdry_id) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode ret_code = UNC_RC_SUCCESS; + boundary_val obj_bdry_val; + memset(&obj_bdry_val, '\0', sizeof(boundary_val)); + if ((source_node->df_segment->df_common->controller_type == UNC_CT_PFC) && + ((source_node->df_segment->df_common-> + valid[kidxDfDataFlowEgressSwitchId] == 0) || + (source_node->df_segment->df_common->valid[kidxDfDataFlowOutPort] == 0) || + (source_node->df_segment->df_common-> + valid[kidxDfDataFlowOutDomain] == 0))) { + pfc_log_debug("Valid bits for egress attributes are set as invalid"); + source_node->addl_data->reason = UNC_DF_RES_SUCCESS; + return UNC_RC_SUCCESS; + } + obj_bdry_val.controller_type = + source_node->df_segment->df_common->controller_type; + if (source_node->df_segment->df_common->controller_name[0] == '\0') { + pfc_log_debug("Controller name is empty"); + if ((source_node->next.size() == 0) && + (source_node->addl_data->reason == UNC_DF_RES_SUCCESS)) + source_node->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + return UNC_RC_SUCCESS; + } + memcpy(obj_bdry_val.controller_name, + source_node->df_segment->df_common->controller_name, + sizeof(obj_bdry_val.controller_name)); + if (source_node->df_segment->df_common->out_domain[0] == '\0') { + if ((source_node->next.size() == 0) && + (source_node->addl_data->reason == UNC_DF_RES_SUCCESS)) + source_node->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + pfc_log_debug("Domain name is empty"); + return UNC_RC_SUCCESS; + } + memcpy(obj_bdry_val.domain_name, + source_node->df_segment->df_common->out_domain, + sizeof(obj_bdry_val.domain_name)); + + if (source_node->df_segment->df_common->controller_type != UNC_CT_UNKNOWN) { + if (source_node->df_segment->df_common->egress_switch_id[0] == '\0') { + if ((source_node->next.size() == 0) && + (source_node->addl_data->reason == UNC_DF_RES_SUCCESS)) + source_node->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + pfc_log_debug("Switch id is empty"); + return UNC_RC_SUCCESS; + } + memcpy(obj_bdry_val.lp_str.switch_id, + source_node->df_segment->df_common->egress_switch_id, + sizeof(obj_bdry_val.lp_str.switch_id)); + if (source_node->df_segment->df_common->out_port[0] == '\0') { + if ((source_node->next.size() == 0) && + (source_node->addl_data->reason == UNC_DF_RES_SUCCESS)) + source_node->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + pfc_log_debug("Port no. is empty"); + return UNC_RC_SUCCESS; + } + memcpy(obj_bdry_val.lp_str.port_id, + source_node->df_segment->df_common->out_port, + sizeof(obj_bdry_val.lp_str.port_id)); + } + pfc_log_debug("ingress_bdry_id = %s", ingress_bdry_id.c_str()); + if (!ingress_bdry_id.empty()) { + memcpy(obj_bdry_val.boundary_id, ingress_bdry_id.c_str(), + ingress_bdry_id.length() + 1); + } else { + pfc_log_debug("ingress_bdry_id is NULL"); + } + + list list_ctr_nbrs; + UncRespCode read_status = FindNeighbourCtr(db_conn, lastPfcNode, + &obj_bdry_val, list_ctr_nbrs, + ingress_bdry_id); + pfc_log_info("Size of list_ctr_nbrs:%" PFC_PFMT_SIZE_T, list_ctr_nbrs.size()); + if ((read_status != UNC_RC_SUCCESS) || (list_ctr_nbrs.size() == 0)) { + pfc_log_debug("Read of neighbours failed"); + // for VNP and BYPASS add this error, PFC ignore. // TODO (uppl) + if (obj_bdry_val.controller_type == UNC_CT_PFC) { + source_node->addl_data->reason = UNC_DF_RES_SUCCESS; + } else { + source_node->addl_data->reason = UNC_DF_RES_DST_NOT_REACHED; + } + return UNC_RC_SUCCESS; + } + list::iterator nbrs_ctr_iter = list_ctr_nbrs.begin(); + for ( ; nbrs_ctr_iter != list_ctr_nbrs.end(); nbrs_ctr_iter++) { + string current_bdry_id = (const char*)((*nbrs_ctr_iter).boundary_id); + pfc_log_debug("current_boundary_id:%s", current_bdry_id.c_str()); + pfc_log_debug("ingress_bdry_id:%s", ingress_bdry_id.c_str()); + boundary_val obj_bval = *nbrs_ctr_iter; + if ((*nbrs_ctr_iter).controller_type == UNC_CT_PFC) { + key_dataflow_t obj_key_df; + memcpy(obj_key_df.controller_name, obj_bval.controller_name, + sizeof(obj_bval.controller_name)); + memcpy(obj_key_df.switch_id, obj_bval.lp_str.switch_id, + sizeof(obj_bval.lp_str.switch_id)); + memcpy(obj_key_df.port_id, obj_bval.lp_str.port_id, + sizeof(obj_bval.lp_str.port_id)); + key_dataflow_t *obj_key_dataflow = + reinterpret_cast(key_struct); + obj_key_df.vlan_id = obj_key_dataflow->vlan_id; + memcpy(obj_key_df.src_mac_address, obj_key_dataflow->src_mac_address, + sizeof(obj_key_df.src_mac_address)); + + pfc_log_info("checkBoundaryAndTraverse controller_type == UNC_CT_PFC"); + ret_code = traversePFC(db_conn, session_id, configuration_id, + reinterpret_cast(&obj_key_df), sess, false, + source_node, lastPfcNode, current_bdry_id); + pfc_log_debug("traversePFC returned %d", ret_code); + if (source_node->next.size() == 0) { + if ((ret_code != UNC_RC_SUCCESS) && + (source_node->addl_data->reason == UNC_DF_RES_SUCCESS)) { + if (ret_code == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + source_node->addl_data->reason = UNC_DF_RES_FLOW_NOT_FOUND; + else if (ret_code == UNC_UPPL_RC_ERR_CTRLR_DISCONNECTED) + source_node->addl_data->reason = UNC_DF_RES_CTRLR_DISCONNECTED; + else if (ret_code == UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED) + source_node->addl_data->reason = UNC_DF_RES_OPERATION_NOT_SUPPORTED; + else + source_node->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + } + } else { + pfc_log_debug("Preserving the old reason:%d", + source_node->addl_data->reason); + // Already flow appended, so donot overwrite the reason + } + } else if (((*nbrs_ctr_iter).controller_type == UNC_CT_VNP) || + ((*nbrs_ctr_iter).controller_type == UNC_CT_UNKNOWN)) { + string c_nm = (const char*)obj_bval.controller_name; + list keys; + list vals; + ret_code = getkeysfrom_boundary_map((const char*)obj_bval.controller_name, + keys, vals, + current_bdry_id); + if (ret_code != UNC_RC_SUCCESS) { + if ((source_node->next.size() == 0) && + source_node->addl_data->reason == UNC_DF_RES_SUCCESS) { + if (ret_code == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + source_node->addl_data->reason = UNC_DF_RES_DST_NOT_REACHED; + else + source_node->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + } + } + pfc_log_info("getkeysfrom_boundary_map returned keys.size=%" + PFC_PFMT_SIZE_T, keys.size()); + list::iterator keys_iter, vals_iter; + for (keys_iter = keys.begin(), vals_iter = vals.begin(); + keys_iter != keys.end(); keys_iter++, vals_iter++) { + // exclude ingress port + bool ret1 = false; + // Comparing the keys + UPPL_COMPARE_STRUCT(obj_bval, (*keys_iter), ret1); + bool ret2 = false; + // Comparing the neighbour values + pfc_log_debug("value1 for comparison:\nport_type = %d\n" + "controller_name:%s\ndomain_name:%s\nswitch_id:%s\n" + "port_id:%s\nboundary_id:%s\ncurrent boundary_id:%s", + obj_bdry_val.lp_str.port_type, + obj_bdry_val.controller_name, obj_bdry_val.domain_name, + obj_bdry_val.lp_str.switch_id, obj_bdry_val.lp_str.port_id, + obj_bdry_val.boundary_id, current_bdry_id.c_str()); + pfc_log_debug("value2 for comparison:\nport_type = %d\n" + "controller_name:%s\ndomain_name:%s\nswitch_id:%s\n" + "port_id:%s\nboundary_id:%s\n", + (*vals_iter).lp_str.port_type, + (*vals_iter).controller_name, (*vals_iter).domain_name, + (*vals_iter).lp_str.switch_id, (*vals_iter).lp_str.port_id, + (*vals_iter).boundary_id); + + if (((*vals_iter).lp_str.port_type == UPPL_LP_SUBDOMAIN) || + ((*vals_iter).lp_str.port_type == UPPL_LP_TRUNK_PORT) || + ((*vals_iter).lp_str.port_type == UPPL_LP_SWITCH)) { + pfc_log_debug("ret2 is false from COMPARE_STRUCT"); + if (strcmp((const char*)((*vals_iter).boundary_id), + (const char*)(current_bdry_id.c_str())) == 0) { + pfc_log_debug("Boundary Id is same. Is vlan, src mac changed?"); + if (lastPfcNode->is_vlan_src_mac_changed_ == false) { + pfc_log_debug("Boundary Id is same && vlan," + "src mac are also not changed"); + ret2 = true; + } + } else { + if (source_node->parent_node != NULL && + source_node->parent_node->df_segment->df_common-> + controller_type != UNC_CT_PFC) { + pfc_log_debug("PBP Boundary Id is not same nonpfc" + "_ingr_bdry_id %s current_bdry_id %s", + source_node->parent_node->addl_data-> + nonpfc_ingr_bdry_id.c_str(), + current_bdry_id.c_str()); + if (strcmp((const char*) + (source_node->parent_node->addl_data-> + nonpfc_ingr_bdry_id.c_str()), + (const char*)((*vals_iter).boundary_id)) == + 0) { + pfc_log_debug("PBP Boundary Id is not same." + "Is vlan, src mac changed?"); + if (lastPfcNode->is_vlan_src_mac_changed_ == false) { + pfc_log_debug("PBP Boundary Id is not same && vlan, " + "src mac are also not changed"); + ret2 = true; + } + } + } else { + pfc_log_debug("PBP source_node->parent_node is PFC"); + } + } + } else { + UPPL_COMPARE_STRUCT(obj_bdry_val, (*vals_iter), ret2); + } + DataflowDetail *df_segment = + new DataflowDetail(kidx_val_df_data_flow_cmn, + unc_keytype_ctrtype_t((*nbrs_ctr_iter).controller_type)); + if (df_segment == NULL) { + pfc_log_debug("Memory not allocated for df_segment"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } + DataflowCmn *df_cmn = new DataflowCmn(is_head_node, df_segment); + if (df_cmn == NULL) { + delete df_segment; + pfc_log_debug("Memory not allocated for df_cmn"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } + + pfc_log_debug("PBP obj_val.boundary_id=%s", obj_bval.boundary_id); + pfc_log_debug("PBP (*vals_iter).boundary_id=%s", + (*vals_iter).boundary_id); + pfc_log_debug("PBP current_bdry_id=%s", current_bdry_id.c_str()); + df_cmn->addl_data->nonpfc_ingr_bdry_id = + (const char *)obj_bval.boundary_id; + + if ((ret1 == true) && (ret2 == true)) { + if (keys.size() == 1) { + // Create a node + UncDataflowReason ret = + CreateDfCmnNodeForNonPfc(db_conn, df_segment, source_node, + df_cmn, &obj_bval, + (*keys_iter), false); + if (ret != UNC_DF_RES_SUCCESS) + delete df_cmn; + } else { + delete df_cmn; + } + pfc_log_debug("Ignoring source key"); + continue; + } + UncDataflowReason ret = CreateDfCmnNodeForNonPfc(db_conn, + df_segment, + source_node, + df_cmn, &obj_bval, (*keys_iter), true); + if (ret != UNC_DF_RES_SUCCESS) { + delete df_cmn; + continue; + } + if ((*nbrs_ctr_iter).controller_type == UNC_CT_VNP) { + ret_code = traverseVNP(db_conn, session_id, configuration_id, + key_struct, sess, false, df_cmn, lastPfcNode, + current_bdry_id); + } else if ((*nbrs_ctr_iter).controller_type == UNC_CT_UNKNOWN) { + key_dataflow_t obj_key_df_tgt; + memcpy(obj_key_df_tgt.controller_name, (*vals_iter).controller_name, + sizeof((*vals_iter).controller_name)); + memcpy(obj_key_df_tgt.switch_id, (*vals_iter).lp_str.switch_id, + sizeof((*vals_iter).lp_str.switch_id)); + memcpy(obj_key_df_tgt.port_id, (*vals_iter).lp_str.port_id, + sizeof((*vals_iter).lp_str.port_id)); + key_dataflow_t *obj_key_dataflow = + reinterpret_cast(key_struct); + obj_key_df_tgt.vlan_id = obj_key_dataflow->vlan_id; + memcpy(obj_key_df_tgt.src_mac_address, + obj_key_dataflow->src_mac_address, + sizeof(obj_key_df_tgt.src_mac_address)); + if ((*vals_iter).controller_type == UNC_CT_PFC) { + ret_code = traversePFC(db_conn, session_id, configuration_id, + &obj_key_df_tgt, sess, false, df_cmn, lastPfcNode, + current_bdry_id); + } else if ((*vals_iter).controller_type == UNC_CT_VNP) { + ret_code = traverseVNP(db_conn, session_id, configuration_id, + &obj_key_df_tgt, sess, false, df_cmn, lastPfcNode, + current_bdry_id); + } + } + pfc_log_info("traverseXXX returned %d", ret_code); + if ((ret_code != UNC_RC_SUCCESS) && + (df_cmn->addl_data->reason == UNC_DF_RES_SUCCESS)) { + if (ret_code == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + df_cmn->addl_data->reason = UNC_DF_RES_DST_NOT_REACHED; + else if (ret_code == UNC_UPPL_RC_ERR_CTRLR_DISCONNECTED) + df_cmn->addl_data->reason = UNC_DF_RES_CTRLR_DISCONNECTED; + else if (ret_code == UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED) + df_cmn->addl_data->reason = UNC_DF_RES_OPERATION_NOT_SUPPORTED; + else + df_cmn->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + } + } + bool restart_1stloop = false; + do { + pfc_log_debug("PBP Erasing the intermediate flows size=%"PFC_PFMT_SIZE_T, + source_node->next.size()); + restart_1stloop = false; + for (vector::iterator iter_st = source_node->next.begin(); + iter_st != source_node->next.end(); iter_st++) { + bool continue_from_1stloop = false; + for (vector::iterator iter_curr = iter_st+1; + iter_curr != source_node->next.end(); iter_curr++) { + DataflowCmn *st = (DataflowCmn *)*iter_st; + DataflowCmn *curr = (DataflowCmn *)*iter_curr; + if ((strcmp((const char*)st->df_segment->df_common->controller_name, + (const char*)curr->df_segment->df_common->controller_name) == 0) && + (strcmp((const char*)st->df_segment->df_common->out_domain, + (const char*)curr->df_segment->df_common->out_domain) == 0)) { + pfc_log_debug("PBP cname %s and dname %s matching curr->next.size=%" + PFC_PFMT_SIZE_T",st->next.size=%"PFC_PFMT_SIZE_T, + (const char*)st->df_segment->df_common->controller_name, + (const char*)curr->df_segment->df_common->out_domain, + curr->next.size(), st->next.size()); + if (curr->next.size() == 0) { + if (source_node->next.size() > 1) + source_node->head->total_flow_count--; + pfc_log_debug("PBP Erasing the intermediate flow"); + delete curr; + source_node->next.erase(iter_curr); + continue_from_1stloop = true; + restart_1stloop = true; + } else if (st->next.size() == 0) { + if (source_node->next.size() > 1) + source_node->head->total_flow_count--; + pfc_log_debug("PBP Erasing the intermediate flow"); + delete st; + source_node->next.erase(iter_st); + continue_from_1stloop = true; + restart_1stloop = true; + } + } + if (continue_from_1stloop) + break; + } + if (restart_1stloop) + break; + } + } while (restart_1stloop); + pfc_log_debug("PBP AFTER flows size=%"PFC_PFMT_SIZE_T, + source_node->next.size()); + } + } + return UNC_RC_SUCCESS; +} + + +/** Fill_Attr_Syntax_Map + * @Description : This function populates the values to be used for attribute + * validation + * @param[in] : None + * @return : void + * */ +void Kt_Dataflow::Fill_Attr_Syntax_Map() { + map attr_syntax_map; + Kt_Class_Attr_Syntax objKeyCtrNameAttrSyntax = + { PFC_IPCTYPE_UINT8, 0, 0, 1, 31, true, ""}; + attr_syntax_map[CTR_NAME_STR] = objKeyCtrNameAttrSyntax; + Kt_Class_Attr_Syntax objKeyDomNameAttrSyntax = + { PFC_IPCTYPE_UINT8, 0, 0, 1, 31, true, ""}; + attr_syntax_map[DOMAIN_NAME_STR] = objKeyDomNameAttrSyntax; + Kt_Class_Attr_Syntax objKeySwitchIdAttrSyntax = + { PFC_IPCTYPE_UINT8, 0, 0, 1, 255, true, ""}; + attr_syntax_map[SWITCH_ID_STR] = objKeySwitchIdAttrSyntax; + Kt_Class_Attr_Syntax objKeyPortIdAttrSyntax = + { PFC_IPCTYPE_UINT8, 0, 0, 1, 31, true, ""}; + attr_syntax_map[PORT_ID_STR] = objKeyPortIdAttrSyntax; + Kt_Class_Attr_Syntax objKeyVlanIdAttrSyntax = + { PFC_IPCTYPE_UINT16, 1, 4095, 0, 0, true, ""}; + attr_syntax_map[VLAN_ID_STR] = objKeyVlanIdAttrSyntax; + Kt_Class_Attr_Syntax objKeyMacAddrAttrSyntax = + { PFC_IPCTYPE_UINT8, 0, 0, 1, 6, true, ""}; + attr_syntax_map[PORT_MAC_ADDRESS_STR] = objKeyMacAddrAttrSyntax; + attr_syntax_map_all[UNC_KT_DATAFLOW] = attr_syntax_map; +} + + +/** FindNeighbourCtr + * @Description : This function returns the neighbours of the given controller + * @param[in] : OdbcmConnectionHandler, neighbour_ctr_key - key to find from + * map + * @param[out] : found_nbrs - list of neighbours + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * if any Read failed + * */ +UncRespCode Kt_Dataflow::FindNeighbourCtr(OdbcmConnectionHandler *db_conn, + DataflowCmn *lastPfcNode, + boundary_val *neighbour_ctr_key, list &found_nbrs, + string &ingress_bdry_id) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode read_status = UNC_RC_SUCCESS; + if (db_conn == NULL) { + pfc_log_error("db_conn is NULL"); + PFC_ASSERT(false); + } + read_status = PrepareBoundaryMap(db_conn); + if (read_status != UNC_RC_SUCCESS) + return read_status; + if ((get_boundary_map())->empty()) { + pfc_log_debug("boundary_map is empty !! "); + return UNC_UPPL_RC_FAILURE; // TODO(uppl): how to handle this error + // at this stage. + } + read_status = getBoundaryPorts(lastPfcNode, neighbour_ctr_key, + found_nbrs, ingress_bdry_id); + if (read_status != UNC_RC_SUCCESS) + pfc_log_debug("found-Neighbour count = %" PFC_PFMT_SIZE_T, + found_nbrs.size()); + return read_status; +} + +/** PrepareBoundaryMap + * @Description : This function prepare the Boudary map by reading Bdry table + * @param[in] : OdbcmConnectionHandler, + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * if any Read failed + * */ +UncRespCode Kt_Dataflow::PrepareBoundaryMap + (OdbcmConnectionHandler *db_conn) { + pfc_log_trace("Entered into : %s map.size=%" PFC_PFMT_SIZE_T, + __func__, boundary_map_.size()); + if (boundary_map_.size() > 0) return UNC_RC_SUCCESS; + // ReadInternal of Kt_Boundary + Kt_Boundary obj_Kt_Boundary; + key_boundary_t *obj_key_boundary = new key_boundary_t; + memset(obj_key_boundary, 0, sizeof(key_boundary_t)); + string boundary_id = ""; + memcpy(obj_key_boundary->boundary_id, boundary_id.c_str(), + boundary_id.length()); + void* key_struct = reinterpret_cast(obj_key_boundary); + vector vect_key_boundary; + vect_key_boundary.push_back(key_struct); + vector vect_val_boundary; + // vector which will holds the boundary values + vector* bdry_rec_vect = get_boundary_tbl_vect(); + vector::iterator bdry_rec_vect_iter; + UncRespCode ret_code = obj_Kt_Boundary.ReadInternal(db_conn, + vect_key_boundary, + vect_val_boundary, + UNC_DT_RUNNING, + UNC_OP_READ_SIBLING_BEGIN); + + if (NULL != obj_key_boundary) { + delete obj_key_boundary; + pfc_log_debug("obj_key_boundary is deleted"); + obj_key_boundary = NULL; + } + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_debug("Read of Boundary failed"); + if (ret_code == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + return UNC_RC_SUCCESS; + return ret_code; + } + // Fill boundary_tbl_vect_ vector-using the ReadInternal return val structrue + for (uint32_t index1 = 0; + index1 < vect_key_boundary.size(); + ++index1) { + val_boundary_st *val_boundary_vect = reinterpret_cast + (vect_val_boundary[index1]); + key_boundary_t *key_boundary_vect = reinterpret_cast + (vect_key_boundary[index1]); + + boundary_record obj_bdry_rec; + memset(&obj_bdry_rec, '\0', sizeof(obj_bdry_rec)); + memcpy(obj_bdry_rec.boundary_id, key_boundary_vect->boundary_id, + sizeof(obj_bdry_rec.boundary_id)); + memcpy(obj_bdry_rec.ctr_name1, + val_boundary_vect->boundary.controller_name1, + sizeof(obj_bdry_rec.ctr_name1)); + memcpy(obj_bdry_rec.ctr_name2, + val_boundary_vect->boundary.controller_name2, + sizeof(obj_bdry_rec.ctr_name2)); + memcpy(obj_bdry_rec.dom_name1, val_boundary_vect->boundary.domain_name1, + sizeof(obj_bdry_rec.dom_name1)); + memcpy(obj_bdry_rec.dom_name2, val_boundary_vect->boundary.domain_name2, + sizeof(obj_bdry_rec.dom_name2)); + memcpy(obj_bdry_rec.lp_id1, val_boundary_vect->boundary.logical_port_id1, + sizeof(obj_bdry_rec.lp_id1)); + memcpy(obj_bdry_rec.lp_id2, val_boundary_vect->boundary.logical_port_id2, + sizeof(obj_bdry_rec.lp_id2)); + if ((obj_bdry_rec.lp_id1[0] == '\0') || + (val_boundary_vect->oper_status == UPPL_BOUNDARY_OPER_UNKNOWN)) + obj_bdry_rec.is_filled1 = true; + else + obj_bdry_rec.is_filled1 = false; + if ((obj_bdry_rec.lp_id2[0] == '\0') || + (val_boundary_vect->oper_status == UPPL_BOUNDARY_OPER_UNKNOWN)) + obj_bdry_rec.is_filled2 = true; + else + obj_bdry_rec.is_filled2 = false; + bdry_rec_vect->push_back(obj_bdry_rec); + pfc_log_debug("Inserting into vector:%d", index1); + + // Clearing the key and value void* in the vector. + ::operator delete(vect_val_boundary[index1]); + ::operator delete(vect_key_boundary[index1]); + } + // Clearing the vectors + vect_val_boundary.clear(); + vect_key_boundary.clear(); + // Update switch_id port_type and port_id into boundary_tbl_vect_ + for (uint16_t index2 = 0; index2 < bdry_rec_vect->size(); ++index2) { + string ctr_name, dom_name, lp_id, lp_map_key=""; + string separator = "&"; + stringstream ss; + boundary_record obj_bdry_rec = (*bdry_rec_vect)[index2]; + if (obj_bdry_rec.is_filled1 == false) { + ctr_name = (const char*)obj_bdry_rec.ctr_name1; + dom_name = (const char*)obj_bdry_rec.dom_name1; + ret_code = PrepareCollectiveLPMap(db_conn, ctr_name, dom_name); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_info("Read of LP failed"); + return ret_code; + } + lp_id = (const char*)obj_bdry_rec.lp_id1; + ss << ctr_name <size(); ++index3) { + if (((*bdry_rec_vect)[index3].is_filled1 == false) || + ((*bdry_rec_vect)[index3].is_filled2 == false)) { + pfc_log_debug("Switch id and Port id are not filled, hence" + " removing the entry from the boundary vector"); + bdry_rec_vect->erase(bdry_rec_vect->begin() + index3); + to_be_continued = true; + break; + } + } + } while ( to_be_continued == true); + + /* + // For testing + for (uint16_t index2 = 0; index2 < bdry_rec_vect->size(); ++index2) { + boundary_record test = (*bdry_rec_vect)[index2]; + stringstream ss1; + stringstream ss2; + stringstream ss3; + stringstream ss4; + ss1 << test.ctr_name1 << "&" << test.dom_name1 << "&" << test.lp_id1; + ss2 << test.sw_id1 << "&" << test.port_id1; + ss3 << test.ctr_name2 << "&" << test.dom_name2 << "&" < &found_nbrs + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * */ +UncRespCode Kt_Dataflow::getBoundaryPorts(DataflowCmn *lastPfcNode, + boundary_val *neighbour_ctr_key, + list &found_nbrs, + string &ingress_bdry_id) { + std::pair::iterator, + multimap::iterator> bdry_map_range_iter; + multimap *bdry_map = get_boundary_map(); + multimap::iterator bdry_map_iter; + string separator = "&"; + string new_map_key_str = ""; + std::stringstream ss; + ss.str(""); + if (strlen((const char*) neighbour_ctr_key->controller_name) != 0) + ss << neighbour_ctr_key->controller_name; + else + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + if (strlen((const char*) neighbour_ctr_key->domain_name) != 0) + ss << separator << neighbour_ctr_key->domain_name; + else + return UNC_UPPL_RC_ERR_CFG_SYNTAX; + ss << separator << neighbour_ctr_key->lp_str.switch_id; + ss << separator << neighbour_ctr_key->lp_str.port_id; + new_map_key_str = ss.str(); + pfc_log_info("key to find in bdry map:%s", new_map_key_str.c_str()); + + bdry_map->begin(); + // Returns multiple neighbours + bdry_map_range_iter = bdry_map->equal_range(new_map_key_str); + for (bdry_map_iter = bdry_map_range_iter.first; + bdry_map_iter != bdry_map_range_iter.second; bdry_map_iter++) { + pfc_log_trace("Inside interation of Bdry map"); + if (bdry_map_iter == bdry_map->end()) { + pfc_log_debug("Element does not exist"); + return UNC_UPPL_RC_FAILURE; + } + boundary_val obj_bdry_val = bdry_map_iter->second; + if ((!ingress_bdry_id.empty()) && + (strcmp((const char*)obj_bdry_val.boundary_id, + ingress_bdry_id.c_str()) == 0) && + (lastPfcNode->is_vlan_src_mac_changed_ != true)) { + pfc_log_debug("Ignoring originating boundary ports"); + } else { + found_nbrs.push_back(obj_bdry_val); + pfc_log_trace("Pushing back an elemnt"); + } + } + pfc_log_trace("Count of found neighbours is %" PFC_PFMT_SIZE_T, + found_nbrs.size()); + if (found_nbrs.empty()) { + pfc_log_debug("No Neighbour found"); + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + } + return UNC_RC_SUCCESS; +} + +/** update_boundary_tbl_vect + * @Description : This function fills the switch id and port id from LP + * and LMP map + * @param[in] : lp_map_key-key to find from LP map + * bdry_iter_pos-iterator position + * part-indicates which section of bdry table + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * if any Read failed + * */ +UncRespCode Kt_Dataflow::update_boundary_tbl_vect(string lp_map_key, + uint16_t bdry_iter_pos, uint8_t part) { + pfc_log_trace("Entered into : %s", __func__); + map* lp_map = get_LP_map(); + map::iterator lp_map_iter; + vector* bdry_rec_vect = get_boundary_tbl_vect(); + stringstream ss; + uint16_t bdry_iter_pos_cpy = bdry_iter_pos; + boundary_record obj_bdry_iter_pos; + if (bdry_rec_vect->empty()) { + pfc_log_error("The vector is empty"); + return UNC_UPPL_RC_FAILURE; + } + obj_bdry_iter_pos = (*bdry_rec_vect)[bdry_iter_pos]; + pfc_log_debug("Key to find in LP map:%s", lp_map_key.c_str()); + lp_map_iter = lp_map->find(lp_map_key); + if (lp_map_iter == lp_map->end()) { + pfc_log_debug("No entry in LP Map"); + return UNC_RC_SUCCESS; + } + pfc_log_info("Key found from LP map:%s", lp_map_key.c_str()); + if (lp_map_iter->second.port_type == UPPL_LP_SUBDOMAIN || + lp_map_iter->second.port_type == UPPL_LP_TRUNK_PORT) { + multimap* lmp_map = get_LMP_map(); + multimap::iterator lmp_map_iter; + std::pair::iterator, + multimap::iterator>lmp_map_iter2; + lmp_map_iter2 = lmp_map->equal_range(lp_map_key); + for (lmp_map_iter = lmp_map_iter2.first; + lmp_map_iter != lmp_map_iter2.second; lmp_map_iter++) { + if (part == UPPL_LEFT_PART) { + memcpy(obj_bdry_iter_pos.sw_id1, lmp_map_iter->second.switch_id, + sizeof(obj_bdry_iter_pos.sw_id1)); + memcpy(obj_bdry_iter_pos.port_id1, lmp_map_iter->second.port_id, + sizeof(obj_bdry_iter_pos.port_id1)); + obj_bdry_iter_pos.port_type1 = lp_map_iter->second.port_type; + obj_bdry_iter_pos.is_filled1 = true; + ss.str(std::string()); + ss << obj_bdry_iter_pos.sw_id1 << " " << obj_bdry_iter_pos.port_id1 + << " " << obj_bdry_iter_pos.is_filled1; + pfc_log_debug("part 1 LMP:%s", ss.str().c_str()); + } else if (part == UPPL_RIGHT_PART) { + memcpy(obj_bdry_iter_pos.sw_id2, lmp_map_iter->second.switch_id, + sizeof(obj_bdry_iter_pos.sw_id2)); + memcpy(obj_bdry_iter_pos.port_id2, lmp_map_iter->second.port_id, + sizeof(obj_bdry_iter_pos.port_id2)); + obj_bdry_iter_pos.is_filled2 = true; + obj_bdry_iter_pos.port_type2 = lp_map_iter->second.port_type; + ss.str(std::string()); + ss << obj_bdry_iter_pos.sw_id1 << " " << obj_bdry_iter_pos.port_id1 + << "" << obj_bdry_iter_pos.is_filled2; + pfc_log_debug("part 2 LMP:%s", ss.str().c_str()); + } + if (lmp_map_iter == lmp_map_iter2.first) { + (*bdry_rec_vect)[bdry_iter_pos] = obj_bdry_iter_pos; + pfc_log_info("Copying the updated object to the vector object"); + } else { + // Avoiding insert of first instance as already one object inserted + bdry_rec_vect->push_back(obj_bdry_iter_pos); + pfc_log_info("Inserting additional record for LMP port"); + } + } + lmp_map->clear(); // Clearing LMP map + } else if (lp_map_iter->second.port_type == UPPL_LP_SWITCH) { + multimap* pp_map = get_PP_map(); + multimap::iterator pp_map_iter; + std::pair::iterator, + multimap::iterator>pp_map_iter2; + pp_map_iter2 = pp_map->equal_range(lp_map_key); + for (pp_map_iter = pp_map_iter2.first; + pp_map_iter != pp_map_iter2.second; pp_map_iter++) { + if (part == UPPL_LEFT_PART) { + memcpy(obj_bdry_iter_pos.sw_id1, lp_map_iter->second.switch_id, + sizeof(obj_bdry_iter_pos.sw_id1)); + memcpy(obj_bdry_iter_pos.port_id1, pp_map_iter->second.port_id, + sizeof(obj_bdry_iter_pos.port_id1)); + obj_bdry_iter_pos.port_type1 = lp_map_iter->second.port_type; + obj_bdry_iter_pos.is_filled1 = true; + ss.str(std::string()); + ss << obj_bdry_iter_pos.sw_id1 << " " << obj_bdry_iter_pos.port_id1 + << " " << obj_bdry_iter_pos.is_filled1; + pfc_log_info("part 1 PP:%s", ss.str().c_str()); + } else if (part == UPPL_RIGHT_PART) { + memcpy(obj_bdry_iter_pos.sw_id2, lp_map_iter->second.switch_id, + sizeof(obj_bdry_iter_pos.sw_id2)); + memcpy(obj_bdry_iter_pos.port_id2, pp_map_iter->second.port_id, + sizeof(obj_bdry_iter_pos.port_id2)); + obj_bdry_iter_pos.is_filled2 = true; + obj_bdry_iter_pos.port_type2 = lp_map_iter->second.port_type; + ss.str(std::string()); + ss << obj_bdry_iter_pos.sw_id1 << " " << obj_bdry_iter_pos.port_id1 + << "" << obj_bdry_iter_pos.is_filled2; + pfc_log_info("part 2 PP:%s", ss.str().c_str()); + } + if (pp_map_iter == pp_map_iter2.first) { + (*bdry_rec_vect)[bdry_iter_pos] = obj_bdry_iter_pos; + pfc_log_info("Copying the updated object to the vector object"); + } else { + // Avoiding insert of first instance as already one object inserted + bdry_rec_vect->push_back(obj_bdry_iter_pos); + pfc_log_info("Inserting additional record for Physical ports" + " of the given switch"); + } + } + pp_map->clear(); // Clearing PP map + } else { /*for lp port*/ + if (part == UPPL_LEFT_PART) { + memcpy(obj_bdry_iter_pos.sw_id1, lp_map_iter->second.switch_id, + sizeof(obj_bdry_iter_pos.sw_id1)); + memcpy(obj_bdry_iter_pos.port_id1, lp_map_iter->second.port_id, + sizeof(obj_bdry_iter_pos.port_id1)); + obj_bdry_iter_pos.is_filled1 = true; + obj_bdry_iter_pos.port_type1 = lp_map_iter->second.port_type; + ss.str(std::string()); + ss << obj_bdry_iter_pos.sw_id1 << " " << obj_bdry_iter_pos.port_id1; + pfc_log_info("part 1 LP test print:%s", ss.str().c_str()); + } else if (part == UPPL_RIGHT_PART) { + memcpy(obj_bdry_iter_pos.sw_id2, lp_map_iter->second.switch_id, + sizeof(obj_bdry_iter_pos.sw_id2)); + memcpy(obj_bdry_iter_pos.port_id2, lp_map_iter->second.port_id, + sizeof(obj_bdry_iter_pos.port_id2)); + obj_bdry_iter_pos.port_type2 = lp_map_iter->second.port_type; + obj_bdry_iter_pos.is_filled2 = true; + ss.str(std::string()); + ss << obj_bdry_iter_pos.sw_id1 << " " << obj_bdry_iter_pos.port_id1; + pfc_log_info("part 2 LP:%s", ss.str().c_str()); + } + (*bdry_rec_vect)[bdry_iter_pos] = obj_bdry_iter_pos; + for (uint16_t index = bdry_iter_pos+1; + index < bdry_rec_vect->size(); ++index) { + boundary_record obj_bdry_rec = (*bdry_rec_vect)[index]; + if (part == UPPL_LEFT_PART) { + if ((!memcmp(obj_bdry_rec.ctr_name1, obj_bdry_iter_pos.ctr_name1, + sizeof(obj_bdry_iter_pos.ctr_name1))) && + (!memcmp(obj_bdry_rec.dom_name1, obj_bdry_iter_pos.dom_name1, + sizeof(obj_bdry_iter_pos.dom_name1)))&& + (!memcmp(obj_bdry_rec.lp_id1, obj_bdry_iter_pos.lp_id1, + sizeof(obj_bdry_iter_pos.lp_id1)))) { + pfc_log_debug("Copying the info from already filled vector entry"); + memcpy(obj_bdry_rec.sw_id1, obj_bdry_iter_pos.sw_id1, + sizeof(obj_bdry_rec.sw_id1)); + memcpy(obj_bdry_rec.port_id1, obj_bdry_iter_pos.port_id1, + sizeof(obj_bdry_rec.port_id1)); + obj_bdry_rec.port_type1 = obj_bdry_iter_pos.port_type1; + obj_bdry_rec.is_filled1 = true; + ss.str(std::string()); + ss<< obj_bdry_rec.sw_id1 << " " << obj_bdry_rec.port_id1 + << " " << PhyUtil::uint8tostr(obj_bdry_rec.port_type1); + pfc_log_info("part 1 LP remaining:%s", ss.str().c_str()); + } else if ((!memcmp(obj_bdry_rec.ctr_name2, obj_bdry_iter_pos.ctr_name1, + sizeof(obj_bdry_iter_pos.ctr_name1))) && + (!memcmp(obj_bdry_rec.dom_name2, obj_bdry_iter_pos.dom_name1, + sizeof(obj_bdry_iter_pos.dom_name1))) && + (!memcmp(obj_bdry_rec.lp_id2, obj_bdry_iter_pos.lp_id1, + sizeof(obj_bdry_iter_pos.lp_id1)))) { + pfc_log_debug("Copying the info from already filled vector entry"); + memcpy(obj_bdry_rec.sw_id2, obj_bdry_iter_pos.sw_id1, + sizeof(obj_bdry_rec.sw_id1)); + memcpy(obj_bdry_rec.port_id2, obj_bdry_iter_pos.port_id1, + sizeof(obj_bdry_rec.port_id1)); + obj_bdry_rec.port_type2 = obj_bdry_iter_pos.port_type1; + obj_bdry_rec.is_filled2 = true; + } + } else if (part == UPPL_RIGHT_PART) { + if ((!memcmp(obj_bdry_rec.ctr_name1, obj_bdry_iter_pos.ctr_name2, + sizeof(obj_bdry_iter_pos.ctr_name2))) && + (!memcmp(obj_bdry_rec.dom_name1, obj_bdry_iter_pos.dom_name2, + sizeof(obj_bdry_iter_pos.dom_name2))) && + (!memcmp(obj_bdry_rec.lp_id1, obj_bdry_iter_pos.lp_id2, + sizeof(obj_bdry_iter_pos.lp_id2)))) { + pfc_log_debug("Copying the info from already filled vector entry"); + memcpy(obj_bdry_rec.sw_id1, obj_bdry_iter_pos.sw_id2, + sizeof(obj_bdry_rec.sw_id1)); + memcpy(obj_bdry_rec.port_id1, obj_bdry_iter_pos.port_id2, + sizeof(obj_bdry_rec.port_id1)); + obj_bdry_rec.port_type1 = obj_bdry_iter_pos.port_type2; + obj_bdry_rec.is_filled1 = true; + ss.str(std::string()); + ss << obj_bdry_rec.sw_id1 << " " << obj_bdry_rec.port_id1; + pfc_log_info("part 2 LP remaining:%s", ss.str().c_str()); + + } else if ((!memcmp(obj_bdry_rec.ctr_name2, obj_bdry_iter_pos.ctr_name2, + sizeof(obj_bdry_iter_pos.ctr_name2))) && + (!memcmp(obj_bdry_rec.dom_name2, obj_bdry_iter_pos.dom_name2, + sizeof(obj_bdry_iter_pos.dom_name2))) && + (!memcmp(obj_bdry_rec.lp_id2, obj_bdry_iter_pos.lp_id2, + sizeof(obj_bdry_iter_pos.lp_id2)))) { + pfc_log_debug("Copying the info from already filled vector entry"); + memcpy(obj_bdry_rec.sw_id2, obj_bdry_iter_pos.sw_id2, + sizeof(obj_bdry_rec.sw_id1)); + memcpy(obj_bdry_rec.port_id2, obj_bdry_iter_pos.port_id2, + sizeof(obj_bdry_rec.port_id1)); + obj_bdry_rec.port_type2 = obj_bdry_iter_pos.port_type2; + obj_bdry_rec.is_filled2 = true; + } + } + (*bdry_rec_vect)[index] = obj_bdry_rec; + } + } + bdry_iter_pos = bdry_iter_pos_cpy; // Setting back the position + /* + // For Testing + stringstream ss1; + stringstream ss2; + ss1 << obj_bdry_iter_pos.boundary_id << ";" << obj_bdry_iter_pos.ctr_name1 + << "&" << obj_bdry_iter_pos.dom_name1 + << "&" << obj_bdry_iter_pos.sw_id1 << "&" << obj_bdry_iter_pos.port_id1; + ss2 << obj_bdry_iter_pos.ctr_name2 << "&" << obj_bdry_iter_pos.dom_name2 + << "&" << obj_bdry_iter_pos.sw_id2 << "&" << obj_bdry_iter_pos.port_id2; + pfc_log_info("bdry record first half inside FillSwitchId func:%s", + ss1.str().c_str()); + pfc_log_info("bdry record second half inside FillSwitchId func:%s", + ss2.str().c_str()); + */ + lp_map->clear(); // Clearing LP map + return UNC_RC_SUCCESS; +} + + +/** PrepareCollectiveLPMap + * @Description : This function build the LP map by reading the LP table + * @param[in] : OdbcmConnectionHandler, + * ctr_name-controller_name + * dom_name-domain_name + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * if any Read failed + * */ +UncRespCode Kt_Dataflow::PrepareCollectiveLPMap( + OdbcmConnectionHandler *db_conn, string ctr_name, + string dom_name) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode read_status = UNC_RC_SUCCESS; + map* lp_map = get_LP_map(); + map::iterator lp_map_iter; + // ReadInternal of Kt_LogicalPort + Kt_LogicalPort obj_Kt_LogicalPort; + key_logical_port_t *obj_key_logical_port = new key_logical_port_t; + memset(obj_key_logical_port, 0, sizeof(key_logical_port_t)); + memcpy(obj_key_logical_port->domain_key.ctr_key.controller_name, + ctr_name.c_str(), + ctr_name.length()); + memcpy(obj_key_logical_port->domain_key.domain_name, + dom_name.c_str(), + dom_name.length()); + string port_id = ""; + memcpy(obj_key_logical_port->port_id, + port_id.c_str(), + port_id.length()); + void* key_struct = reinterpret_cast(obj_key_logical_port); + vector vect_key_lp; + vect_key_lp.push_back(key_struct); + vector vect_val_lp; + + read_status = obj_Kt_LogicalPort.ReadInternal(db_conn, + vect_key_lp, + vect_val_lp, + UNC_DT_RUNNING, + UNC_OP_READ_SIBLING_BEGIN); + delete obj_key_logical_port; + if (read_status != UNC_RC_SUCCESS) { + pfc_log_info("Read of Logical Ports failed"); + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + return UNC_RC_SUCCESS; + return read_status; + } + // Traversing LP values and building the LP map + unsigned int index_lp = 0; + for (; index_lp < vect_key_lp.size(); + ++index_lp) { + key_logical_port_t *key_lp = reinterpret_cast + (vect_key_lp[index_lp]); + string logical_port_id = (const char *)key_lp->port_id; + string ctr_name1 = (const char *)key_lp->domain_key.ctr_key.controller_name; + string dom_name1 = (const char *)key_lp->domain_key.domain_name; + std::stringstream ss; + string separator = "&"; + ss << ctr_name1 << separator << dom_name1 << separator << logical_port_id; + string lp_map_key = ss.str(); + val_logical_port_st *val_lp_st = reinterpret_cast + (vect_val_lp[index_lp]); + + lp_struct obj_lp_struct; + memset(&obj_lp_struct, '\0', sizeof(obj_lp_struct)); + // for non logical member port values + if ((val_lp_st->logical_port.port_type != UPPL_LP_TRUNK_PORT) && + (val_lp_st->logical_port.port_type != UPPL_LP_SUBDOMAIN)) { + memcpy(obj_lp_struct.switch_id, val_lp_st->logical_port.switch_id, + sizeof(obj_lp_struct.switch_id)); + if (val_lp_st->logical_port.port_type != UPPL_LP_SWITCH) + memcpy(obj_lp_struct.port_id, val_lp_st->logical_port.physical_port_id, + sizeof(obj_lp_struct.port_id)); + } + // Checking the LP type and calling ReadInternal of LMP + if ((val_lp_st->logical_port.port_type == UPPL_LP_TRUNK_PORT) || + (val_lp_st->logical_port.port_type == UPPL_LP_SUBDOMAIN)) { + string description = (const char *)val_lp_st->logical_port.description; + if (description == UPPL_LP_MAC_FORWARDING_DESC) { + // Clearing the key and value void* in the vector. + pfc_log_debug("LP Description is PF MAC Forwarding SubDomain"); + ::operator delete(vect_val_lp[index_lp]); + ::operator delete(vect_key_lp[index_lp]); + continue; + } + } + + obj_lp_struct.port_type = val_lp_st->logical_port.port_type; + lp_map->insert(std::pair + (lp_map_key, obj_lp_struct)); + + // Checking the LP type and calling ReadInternal of LMP + if ((val_lp_st->logical_port.port_type == UPPL_LP_TRUNK_PORT) || + (val_lp_st->logical_port.port_type == UPPL_LP_SUBDOMAIN)) { + read_status = PrepareLMPMap(db_conn, key_lp); + /*if (read_status != UNC_RC_SUCCESS) { + pfc_log_info("Read of LMP failed"); + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + return UNC_RC_SUCCESS; + return read_status; + }*/ + } else if (val_lp_st->logical_port.port_type == UPPL_LP_SWITCH) { + key_port_t *key_pt = new key_port_t; + memcpy(key_pt->sw_key.ctr_key.controller_name, + key_lp->domain_key.ctr_key.controller_name, + sizeof(key_lp->domain_key.ctr_key.controller_name)); + memcpy(key_pt->sw_key.switch_id, val_lp_st->logical_port.switch_id, + sizeof(key_pt->sw_key.switch_id)); + string phy_port_id = ""; + memcpy(key_pt->port_id, + phy_port_id.c_str(), + sizeof(key_pt->port_id)); + read_status = PreparePPMap(db_conn, key_pt, lp_map_key); + delete key_pt; + /*if (read_status != UNC_RC_SUCCESS) { + pfc_log_info("Read of Ports failed"); + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + return UNC_RC_SUCCESS; + return read_status; + }*/ + } + + // Clearing the key and value void* in the vector. + ::operator delete(vect_val_lp[index_lp]); + ::operator delete(vect_key_lp[index_lp]); + if (read_status != UNC_RC_SUCCESS) { + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + continue; + pfc_log_info("Read of Ports failed"); + break; + } + } + for (index_lp = index_lp + 1 ; index_lp < vect_key_lp.size(); + ++index_lp) { + ::operator delete(vect_val_lp[index_lp]); + ::operator delete(vect_key_lp[index_lp]); + } + // Clearing the vectors + vect_val_lp.clear(); + vect_key_lp.clear(); + /* + for (lp_map_iter = lp_map->begin(); + lp_map_iter != lp_map->end(); lp_map_iter++) { + string key = lp_map_iter->first; + lp_struct lp_st = lp_map_iter->second; + stringstream ss1; + ss1 << key << lp_st.switch_id << " " << lp_st.port_id; + pfc_log_debug("LP map entry:%s", ss1.str().c_str()); + pfc_log_debug("port type:%d", lp_st.port_type); + } + */ + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) + return UNC_RC_SUCCESS; + return read_status; +} + + +/** PrepareCollectiveLMPMap + * @Description : This function build the LMP map by reading the LMP table + * @param[in] : OdbcmConnectionHandler, + * key_lp- LP key structure + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * if any Read failed + * */ +UncRespCode Kt_Dataflow::PrepareLMPMap( + OdbcmConnectionHandler *db_conn, key_logical_port_t *key_lp) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode read_status = UNC_RC_SUCCESS; + multimap* lmp_map = get_LMP_map(); + multimap::iterator lmp_map_iter; + // ReadInternal of Kt_LogicalMemberPort + Kt_LogicalMemberPort obj_Kt_LogicalMemberPort; + key_logical_member_port_t *obj_key_logical_member_port + = new key_logical_member_port_t; + memcpy(obj_key_logical_member_port-> + logical_port_key.domain_key.ctr_key.controller_name, + key_lp->domain_key.ctr_key.controller_name, + sizeof(obj_key_logical_member_port-> + logical_port_key.domain_key.ctr_key.controller_name)); + memcpy(obj_key_logical_member_port->logical_port_key.domain_key.domain_name, + key_lp->domain_key.domain_name, + sizeof(obj_key_logical_member_port-> + logical_port_key.domain_key.domain_name)); + memcpy(obj_key_logical_member_port->logical_port_key.port_id, + key_lp->port_id, + sizeof(obj_key_logical_member_port->logical_port_key.port_id)); + string switch_id = ""; + memcpy(obj_key_logical_member_port->switch_id, + switch_id.c_str(), + sizeof(obj_key_logical_member_port->switch_id)); + string phy_port_id = ""; + memcpy(obj_key_logical_member_port->physical_port_id, + phy_port_id.c_str(), + sizeof(obj_key_logical_member_port->physical_port_id)); + void *key_struct = reinterpret_cast(obj_key_logical_member_port); + vector vect_key_lmp; + vect_key_lmp.push_back(key_struct); + vector vect_val_lmp; + read_status = obj_Kt_LogicalMemberPort.ReadInternal(db_conn, + vect_key_lmp, + vect_val_lmp, + UNC_DT_RUNNING, + UNC_OP_READ_SIBLING_BEGIN); + delete obj_key_logical_member_port; + if (read_status != UNC_RC_SUCCESS) { + pfc_log_info("Read of LMP values failed"); + return read_status; + } + // Traversing LMP values and building the LMP map + for (unsigned int index_lmp = 0; + index_lmp < vect_key_lmp.size(); + ++index_lmp) { + key_logical_member_port_t *key_lmp = + reinterpret_cast + (vect_key_lmp[index_lmp]); + string lmp_logical_port_id = + (const char *)key_lmp->logical_port_key.port_id; + string lmp_controller_name = + (const char *)key_lmp-> + logical_port_key.domain_key.ctr_key.controller_name; + string lmp_domain_name = + (const char *)key_lmp->logical_port_key.domain_key.domain_name; + stringstream ss; + string separator = "&"; + ss << lmp_controller_name << separator << lmp_domain_name << separator + << lmp_logical_port_id; + string lmp_map_key = ss.str(); + lmp_struct obj_lmp_struct; + memcpy(obj_lmp_struct.switch_id, key_lmp->switch_id, + sizeof(obj_lmp_struct.switch_id)); + memcpy(obj_lmp_struct.port_id, key_lmp->physical_port_id, + sizeof(obj_lmp_struct.port_id)); + lmp_map->insert(std::pair + (lmp_map_key, obj_lmp_struct)); + // Clearing the key and value void* in the vector. + ::operator delete(vect_key_lmp[index_lmp]); + } // end of for loop of LMP vector traversal + /*for (lmp_map_iter = lmp_map->begin(); + lmp_map_iter != lmp_map->end(); lmp_map_iter++) { + string key = lmp_map_iter->first; + lmp_struct lmp_st = lmp_map_iter->second; + stringstream ss1; + ss1 << key << " " << lmp_st.switch_id << " " << lmp_st.port_id; + pfc_log_debug("LMP map entry:%s", ss1.str().c_str()); + }*/ + return read_status; +} + +/** PreparePPMap + * @Description : This function build the PP map by reading the LMP table + * @param[in] : OdbcmConnectionHandler, + * key_lp- Port key structure + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * if any Read failed + * */ +UncRespCode Kt_Dataflow::PreparePPMap( + OdbcmConnectionHandler *db_conn, key_port_t *key_pt, + string pp_map_key) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode read_status = UNC_RC_SUCCESS; + multimap* pp_map = get_PP_map(); + multimap::iterator pp_map_iter; + // ReadInternal of Kt_Port + Kt_Port obj_Kt_Port; + void *key_struct = reinterpret_cast(key_pt); + vector vect_key_pp; + vect_key_pp.push_back(key_struct); + vector vect_val_pp; + read_status = obj_Kt_Port.ReadInternal(db_conn, + vect_key_pp, + vect_val_pp, + UNC_DT_RUNNING, + UNC_OP_READ_SIBLING_BEGIN); + if (read_status != UNC_RC_SUCCESS) { + pfc_log_info("Read of Physical Ports values failed"); + return read_status; + } + // Traversing PP values and building the PP map + for (unsigned int index_pp = 0; + index_pp < vect_key_pp.size(); + ++index_pp) { + key_port_t *key_pp = + reinterpret_cast + (vect_key_pp[index_pp]); + // val_port_st_t* val_pp = reinterpret_cast + // (vect_val_pp[index_pp]); + port_struct obj_port_struct; + memcpy(obj_port_struct.port_id, key_pp->port_id, + sizeof(obj_port_struct.port_id)); + pp_map->insert(std::pair + (pp_map_key, obj_port_struct)); + // Clearing the key and value void* in the vector. + ::operator delete(vect_key_pp[index_pp]); + ::operator delete(vect_val_pp[index_pp]); + } // end of for loop of PP vector traversal + // Clearing the vectors + vect_val_pp.clear(); + vect_key_pp.clear(); + /* + for (pp_map_iter = pp_map->begin(); + pp_map_iter != pp_map->end(); pp_map_iter++) { + string key = pp_map_iter->first; + port_struct pp_st = pp_map_iter->second; + stringstream ss1; + ss1 << key << " " << pp_st.port_id; + pfc_log_info("PP map entry:%s", ss1.str().c_str()); + } + */ + return read_status; +} + + +/** fill_boundary_map + * @Description : This function build the Bdry map by traversiong the vector + * @param[in] : OdbcmConnectionHandler, + * @return : UncRespCode UNC_RC_SUCCESS if successfull or UNC_UPPL_RC_ERR* + * if any Read failed + * */ +UncRespCode Kt_Dataflow::fill_boundary_map( + OdbcmConnectionHandler* db_conn) { + pfc_log_trace("Entered into : %s", __func__); + UncRespCode ret_code = UNC_RC_SUCCESS; + multimap* bdry_map = get_boundary_map(); + multimap::iterator bdry_map_iter; + vector* bdry_rec_vect = get_boundary_tbl_vect(); + vector::iterator bdry_rec_vec_iter; + map ctr_type_map; + string ctr_name, dom_name, lp_id, sw_id, port_id = ""; + string separator = "&"; + string mapkey_str = ""; + std::stringstream ss; + ss.str(""); + boundary_val obj_bdry_val; + memset(&obj_bdry_val, '\0', sizeof(obj_bdry_val)); + // Traversing the BDRY values and building the map + for (unsigned int index = 0; + index < bdry_rec_vect->size(); + ++index) { + ss.str(""); + mapkey_str = ""; + boundary_record bdry_rec_st = (*bdry_rec_vect)[index]; + ctr_name = (const char *)bdry_rec_st.ctr_name1; + dom_name = (const char *)bdry_rec_st.dom_name1; + sw_id = (const char *)bdry_rec_st.sw_id1; + port_id = (const char *)bdry_rec_st.port_id1; + ss << ctr_name << separator << dom_name << separator + << sw_id << separator << port_id; + mapkey_str = ss.str(); + string ctr2_name = (const char*)bdry_rec_st.ctr_name2; + unc_keytype_ctrtype_t ctr_type = UNC_CT_UNKNOWN; + if (ctr_type_map.find(ctr2_name) == ctr_type_map.end()) { + ret_code = PhyUtil::get_controller_type( + db_conn, ctr2_name, + ctr_type, + (unc_keytype_datatype_t)UNC_DT_RUNNING); + pfc_log_debug("Controller type - return code %d, value %s", + ret_code, ctr2_name.c_str()); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_error("error in getting the controller type: %d", ret_code); + if (ret_code == UNC_UPLL_RC_ERR_DB_ACCESS) { + pfc_log_debug("Returning as there is error in DB access"); + return ret_code; + } else { + ret_code = UNC_RC_SUCCESS; + continue; + } + } + ctr_type_map.insert(std::pair(ctr2_name, ctr_type)); + obj_bdry_val.controller_type = ctr_type; + } else { + obj_bdry_val.controller_type = (ctr_type_map.find(ctr2_name))->second; + } + memcpy(obj_bdry_val.controller_name, bdry_rec_st.ctr_name2, + sizeof(obj_bdry_val.controller_name)); + memcpy(obj_bdry_val.domain_name, bdry_rec_st.dom_name2, + sizeof(obj_bdry_val.domain_name)); + memcpy(obj_bdry_val.logical_port_id, bdry_rec_st.lp_id2, + sizeof(obj_bdry_val.logical_port_id)); + memcpy(obj_bdry_val.lp_str.switch_id, bdry_rec_st.sw_id2, + sizeof(obj_bdry_val.lp_str.switch_id)); + memcpy(obj_bdry_val.lp_str.port_id, bdry_rec_st.port_id2, + sizeof(obj_bdry_val.lp_str.port_id)); + obj_bdry_val.lp_str.port_type = bdry_rec_st.port_type2; + memcpy(obj_bdry_val.boundary_id, bdry_rec_st.boundary_id, + sizeof(bdry_rec_st.boundary_id)); + bool isPresentAlready = false; + multimap::iterator tmp_iter; + for (tmp_iter = bdry_map->begin(); tmp_iter != bdry_map->end(); + tmp_iter ++) { + if (tmp_iter->first == mapkey_str) { + bool comp_status = false; + UPPL_COMPARE_STRUCT(tmp_iter->second, obj_bdry_val, comp_status); + if (comp_status == true) { + isPresentAlready = true; + break; + } + } + } + if (isPresentAlready == false) { + bdry_map->insert(std::pair + (mapkey_str, obj_bdry_val)); + } + memset(&obj_bdry_val, '\0', sizeof(obj_bdry_val)); + ctr_name = (const char *)bdry_rec_st.ctr_name2; + dom_name = (const char *)bdry_rec_st.dom_name2; + sw_id = (const char *)bdry_rec_st.sw_id2; + port_id = (const char *)bdry_rec_st.port_id2; + ss.str(""); + mapkey_str = ""; + ss << ctr_name << separator << dom_name << separator + << sw_id << separator << port_id; + mapkey_str = ss.str(); + ctr2_name = (const char*)bdry_rec_st.ctr_name1; + ctr_type = UNC_CT_UNKNOWN; + if (ctr_type_map.find(ctr2_name) == ctr_type_map.end()) { + ret_code = PhyUtil::get_controller_type( + db_conn, ctr2_name, + ctr_type, + (unc_keytype_datatype_t)UNC_DT_RUNNING); + pfc_log_debug("Controller type - return code %d, value %s", + ret_code, ctr2_name.c_str()); + if (ret_code != UNC_RC_SUCCESS) { + pfc_log_error("error in getting the controller type: %d", ret_code); + if (ret_code == UNC_UPLL_RC_ERR_DB_ACCESS) { + pfc_log_debug("Returning as there is error in DB Access"); + return ret_code; + } else { + ret_code = UNC_RC_SUCCESS; + continue; + } + } + ctr_type_map.insert(std::pair(ctr2_name, ctr_type)); + obj_bdry_val.controller_type = (uint8_t)ctr_type; + } else { + obj_bdry_val.controller_type = (ctr_type_map.find(ctr2_name))->second; + } + memcpy(obj_bdry_val.controller_name, bdry_rec_st.ctr_name1, + sizeof(obj_bdry_val.controller_name)); + memcpy(obj_bdry_val.domain_name, bdry_rec_st.dom_name1, + sizeof(obj_bdry_val.domain_name)); + memcpy(obj_bdry_val.logical_port_id, bdry_rec_st.lp_id1, + sizeof(obj_bdry_val.logical_port_id)); + memcpy(obj_bdry_val.lp_str.switch_id, bdry_rec_st.sw_id1, + sizeof(obj_bdry_val.lp_str.switch_id)); + memcpy(obj_bdry_val.lp_str.port_id, bdry_rec_st.port_id1, + sizeof(obj_bdry_val.lp_str.port_id)); + obj_bdry_val.lp_str.port_type = bdry_rec_st.port_type1; + memcpy(obj_bdry_val.boundary_id, bdry_rec_st.boundary_id, + sizeof(bdry_rec_st.boundary_id)); + + isPresentAlready = false; + for (tmp_iter = bdry_map->begin(); tmp_iter != bdry_map->end(); + tmp_iter ++) { + if (tmp_iter->first == mapkey_str) { + bool comp_status = false; + UPPL_COMPARE_STRUCT(tmp_iter->second, obj_bdry_val, comp_status); + if (comp_status == true) { + isPresentAlready = true; + break; + } + } + } + if (isPresentAlready == false) { + bdry_map->insert(std::pair + (mapkey_str, obj_bdry_val)); + } + } // End of traversal of Bdry vect values + bdry_rec_vect->clear(); + ctr_type_map.clear(); + // For Testing printing boundary map + for (bdry_map_iter = bdry_map->begin(); bdry_map_iter != bdry_map->end(); + bdry_map_iter ++) { + pfc_log_debug("Key:%s", (bdry_map_iter->first).c_str()); + stringstream test; + char typeCh = static_cast(bdry_map_iter->second.controller_type + 48); + test << bdry_map_iter->second.controller_name << "..." << typeCh + <<"..."<< bdry_map_iter->second.domain_name<< "..." + << bdry_map_iter->second.logical_port_id<< "..." + << bdry_map_iter->second.lp_str.switch_id<< "..." + << bdry_map_iter->second.lp_str.port_id << "..." + << bdry_map_iter->second.boundary_id << "..." + << PhyUtil::uint8tostr(bdry_map_iter->second.lp_str.port_type); + pfc_log_debug("Value:%s", test.str().c_str()); + } + + return ret_code; +} + +/**fill_ctrlr_dom_count_map + * @Description : + * @param[in] : + * @return : + * + * */ + +UncRespCode Kt_Dataflow::fill_ctrlr_dom_count_map( + OdbcmConnectionHandler *db_conn, string ctr_name) { + map *count_map = df_util_.get_ctrlr_dom_count_map(); + map ::iterator cmap_iter; + if (ctr_name.empty()) + return UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; + pfc_log_debug("controller name recv. %s:%s ", __func__, ctr_name.c_str()); + cmap_iter = count_map->find(ctr_name); + if (cmap_iter != count_map->end()) { + pfc_log_debug("domain count of this controller is already exists "); + return UNC_RC_SUCCESS; + } + DBTableSchema kt_ctr_domain_dbtableschema; + uint32_t count = 0; + // Construct Primary key list + vector vect_prim_keys; + vect_prim_keys.push_back(CTR_NAME_STR); + vector vect_table_attr_schema; + list < vector > row_list; + + pfc_log_info("controller name: %s", ctr_name.c_str()); + PhyUtil::FillDbSchema(unc::uppl::CTR_NAME, ctr_name, + ctr_name.length(), + DATATYPE_UINT8_ARRAY_32, + vect_table_attr_schema); + string domain_name = ""; + pfc_log_info("domain_name: %s", domain_name.c_str()); + PhyUtil::FillDbSchema(unc::uppl::DOMAIN_NAME, domain_name, + domain_name.length(), DATATYPE_UINT8_ARRAY_32, + vect_table_attr_schema); + vect_prim_keys.push_back(DOMAIN_NAME_STR); + kt_ctr_domain_dbtableschema.set_table_name(unc::uppl::CTR_DOMAIN_TABLE); + kt_ctr_domain_dbtableschema.set_primary_keys(vect_prim_keys); + row_list.push_back(vect_table_attr_schema); + kt_ctr_domain_dbtableschema.set_row_list(row_list); + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + ODBCM_RC_STATUS db_status = + physical_layer->get_odbc_manager()->GetSiblingCount(UNC_DT_RUNNING, + kt_ctr_domain_dbtableschema, count, db_conn); + if (db_status != ODBCM_RC_SUCCESS) + return UNC_UPPL_RC_ERR_DB_ACCESS; + count = count * 2; // To allow the same boundary traversal for hairpin L3 + // the domain count is doubled here. + count_map->insert(std::pair(ctr_name, count)); + pfc_log_debug("domain count of this controller is added" + " %s: %d ", ctr_name.c_str(), count); + + // For tetsing, printinig ctrlr_dom_count_map + for (cmap_iter = count_map->begin(); cmap_iter != count_map->end(); + cmap_iter++) { + pfc_log_debug("key-ctr_name:%s", (cmap_iter->first).c_str()); + pfc_log_debug("value-dom_count:%d", cmap_iter->second); + } + if (count_map->empty()) + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + return UNC_RC_SUCCESS; +} +/** + * @Description : + * @param[in] : + * @return : + * + * */ +UncRespCode Kt_Dataflow::getkeysfrom_boundary_map(string ctr_name, + list &found_keys, + list &found_vals, + string &ingress_bdry_id) { + multimap *bdry_map = get_boundary_map(); + multimap::iterator bdry_map_iter = bdry_map->begin(); + pfc_log_debug("ingress_bdry_id at getkeysfrom_boundary_map:%s", + ingress_bdry_id.c_str()); + size_t pos = 0; + uint8_t w_count; + string totalF, word, delimiter = "&"; + pfc_log_debug("input ctr_name:%s", ctr_name.c_str()); + for (; bdry_map_iter != bdry_map->end(); bdry_map_iter++) { + // non PFC + totalF = (*bdry_map_iter).first; + if (totalF.empty()) + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + pfc_log_debug("bdry_map.key is :%s ", totalF.c_str()); + pos = totalF.find(delimiter); + word = totalF.substr(0, pos); /* controller_name*/ + if (ctr_name.compare(word) != 0) { + pfc_log_debug("controller name not matching"); + continue; + } + w_count = 0; + boundary_val obj_boundary_val; + memset(&obj_boundary_val, '\0', sizeof(boundary_val)); + /*controller_name&domain_name&switch_id&port_id*/ + while (w_count < 4/*key has only four values */) { + pfc_log_debug("w_count=%d totalF=%s", w_count, totalF.c_str()); + pos = totalF.find(delimiter); + word = totalF.substr(0, pos); + // filling boundary_val strucure + if (w_count == 0) + memcpy(&obj_boundary_val.controller_name, word.c_str(), word.length()); + else if (w_count == 1) + memcpy(&obj_boundary_val.domain_name, word.c_str(), word.length()); + else if (w_count == 2) + memcpy(&obj_boundary_val.lp_str.switch_id, word.c_str(), word.length()); + else + memcpy(obj_boundary_val.lp_str.port_id, word.c_str(), word.length()); + totalF.erase(0, pos + delimiter.length()); + w_count++; + } + found_keys.push_back(obj_boundary_val); + found_vals.push_back((*bdry_map_iter).second); + } + if (found_keys.size() == 0) + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + return UNC_RC_SUCCESS; +} + +void inline Kt_Dataflow::checkFlowLimitAndTraverse( + OdbcmConnectionHandler *db_conn, + uint32_t session_id, + uint32_t configuration_id, + ServerSession &sess, + void* key_struct, + vector* node, + bool is_head_node, + string &ingress_bdry_id) { + vector::iterator iter_flow = node->begin(); + while (iter_flow != node->end()) { + pfc_log_trace("Inside the iteration of firstCtrlrFlows"); + // Checking the particular flow is traversed + DataflowCmn *traverse_flow_cmn = + reinterpret_cast(*iter_flow); + pfc_log_debug("controller_name:%s", + (const char*) + ((*iter_flow)->df_segment->df_common->controller_name)); + if (traverse_flow_cmn->addl_data->reason != + UNC_DF_RES_EXCEEDS_FLOW_LIMIT) { + int ret_code = checkBoundaryAndTraverse(db_conn, session_id, + configuration_id, key_struct, sess, false, + traverse_flow_cmn, traverse_flow_cmn, ingress_bdry_id); + pfc_log_debug("checkBoundaryAndTraverse returned %d", ret_code); + vector::iterator match_flow_iter = iter_flow + 1; + unsigned int no_of_dataflow = 1; + while (match_flow_iter != node->end()) { + DataflowCmn *traverse_match_flow_cmn = + reinterpret_cast + (*match_flow_iter); + if ((traverse_flow_cmn->next.size() > 0) && + (traverse_match_flow_cmn->addl_data->reason != + UNC_DF_RES_EXCEEDS_FLOW_LIMIT)) { + pfc_log_trace("Need to compare subsequent flows"); + + if (traverse_match_flow_cmn->CompareDataflow(traverse_flow_cmn) == + true) { + no_of_dataflow++; + pfc_log_debug("CompareDataflow returns true, no_of_dataflow=%d" + " max_dataflow_traverse_count_=%d", + no_of_dataflow, max_dataflow_traverse_count_); + if (no_of_dataflow > max_dataflow_traverse_count_) { + pfc_log_debug("Setting FLOW_LIMIT to %p", + traverse_match_flow_cmn); + traverse_match_flow_cmn->addl_data->reason = + UNC_DF_RES_EXCEEDS_FLOW_LIMIT; + if (is_head_node) + traverse_match_flow_cmn->addl_data->controller_count = 1; + } + } + } + match_flow_iter++; + } + } + iter_flow++; + } +} + +UncDataflowReason Kt_Dataflow::CreateDfCmnNodeForNonPfc( + OdbcmConnectionHandler *db_conn, + DataflowDetail *df_segment, + DataflowCmn *source_node, + DataflowCmn *df_cmn, + boundary_val *ingress_obj_bval, + boundary_val &egress_obj_bval, + bool is_egress) { + string ctr_name = (const char*)ingress_obj_bval->controller_name; + pfc_log_info("Creating DataflowCmn node for %s", ctr_name.c_str()); + memcpy(df_cmn->df_segment->df_common->controller_name, + ingress_obj_bval->controller_name, + sizeof(ingress_obj_bval->controller_name)); + df_cmn->df_segment->df_common->controller_type = + ingress_obj_bval->controller_type; + memcpy(df_cmn->df_segment->df_common->in_domain, + ingress_obj_bval->domain_name, + sizeof(ingress_obj_bval->domain_name)); + if (ingress_obj_bval->controller_type != UNC_CT_UNKNOWN) { + memcpy(df_cmn->df_segment->df_common->ingress_switch_id, + ingress_obj_bval->lp_str.switch_id, + sizeof(ingress_obj_bval->lp_str.switch_id)); + memcpy(df_cmn->df_segment->df_common->in_port, + ingress_obj_bval->lp_str.port_id, + sizeof(ingress_obj_bval->lp_str.port_id)); + } + if (is_egress) { + memcpy(df_cmn->df_segment->df_common->out_domain, + egress_obj_bval.domain_name, + sizeof(egress_obj_bval.domain_name)); + memcpy(df_cmn->df_segment->df_common->egress_switch_id, + egress_obj_bval.lp_str.switch_id, + sizeof(egress_obj_bval.lp_str.switch_id)); + memcpy(df_cmn->df_segment->df_common->out_port, + egress_obj_bval.lp_str.port_id, + sizeof(egress_obj_bval.lp_str.port_id)); + } else { + if (df_cmn->df_segment->df_common->controller_type == UNC_CT_VNP) { + df_cmn->df_segment->df_common-> + valid[kidxDfDataFlowEgressSwitchId] = 0; + df_cmn->df_segment->df_common->valid[kidxDfDataFlowOutPort] = 0; + df_cmn->df_segment->df_common->valid[kidxDfDataFlowOutDomain] = 0; + } else if ( + df_cmn->df_segment->df_common->controller_type == + UNC_CT_UNKNOWN) { + // Setting valid bit for out_domain as invalid + df_cmn->df_segment->df_common->valid[kidxDfDataFlowOutDomain] = 0; + } + } + pfc_log_debug("node:%s", + DataflowCmn::get_string( + *df_cmn->df_segment->df_common).c_str()); + UncRespCode fill_status = + fill_ctrlr_dom_count_map(db_conn, ctr_name); + if (fill_status != UNC_RC_SUCCESS) + pfc_log_debug("Map is not filled"); + /* if (fill_status == UNC_UPPL_RC_ERR_DB_ACCESS) { + pfc_log_debug("Map is not filled due to DB Access Error"); + df_cmn->addl_data->reason = UNC_DF_RES_SYSTEM_ERROR; + return UNC_RC_SUCCESS; + } // TODO(Lizzy): To be discussed */ + + pfc_log_debug("Return of fill_ctrlr_dom_count_map:%d", fill_status); + UncDataflowReason ret = source_node->appendFlow( + df_cmn, *(df_util_.get_ctrlr_dom_count_map())); + if (ret != UNC_DF_RES_SUCCESS) { + pfc_log_debug("Flow not appended ret=%d", ret); + return ret; + } + df_cmn->parent_node = source_node; + + if (is_egress == false) { + if ((df_cmn->next.size() == 0) && + (df_cmn->addl_data->reason == UNC_DF_RES_SUCCESS)) + df_cmn->addl_data->reason = UNC_DF_RES_DST_NOT_REACHED; + } + pfc_log_debug("aNode is appended to flow"); + return UNC_DF_RES_SUCCESS; +} + diff --git a/coordinator/modules/uppl/itc_kt_link.cc b/coordinator/modules/uppl/itc_kt_link.cc index 3bd7b362..0049908a 100644 --- a/coordinator/modules/uppl/itc_kt_link.cc +++ b/coordinator/modules/uppl/itc_kt_link.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -49,21 +49,21 @@ Kt_Link::~Kt_Link() { * key_struct - the key for the new kt link instance * data_type - UNC_DT_* , delete only allowed in state * key_type - UNC_KT_LINK,value of unc_key_type_t - * @return : UPPL_RC_SUCCESS is returned when the delete + * @return : UNC_RC_SUCCESS is returned when the delete * is done successfully. - * UPPL_RC_ERR_* is returned when the delete is error + * UNC_UPPL_RC_ERR_* is returned when the delete is error * */ -UpplReturnCode Kt_Link::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Check operation is allowed on the given DT, skip the check if flag is true if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE && (unc_keytype_datatype_t)data_type != UNC_DT_IMPORT) { pfc_log_error("Delete operation is provided on unsupported data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } // Structure used to send request to ODBC DBTableSchema kt_link_dbtableschema; @@ -85,13 +85,13 @@ UpplReturnCode Kt_Link::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (delete_db_status == ODBCM_RC_ROW_NOT_EXISTS) { pfc_log_error("given instance does not exist"); - delete_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + delete_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { // log error to log daemon - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else { pfc_log_info("Delete of a link in data_type(%d) is success", @@ -107,11 +107,11 @@ UpplReturnCode Kt_Link::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, * value_struct - the value for the kt link instance * data_type - UNC_DT_* , read allowed in state * operation_type-UNC_OP_*,type of operation - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Link::ReadInternal(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, @@ -130,7 +130,7 @@ UpplReturnCode Kt_Link::ReadInternal(OdbcmConnectionHandler *db_conn, void_val_struct = val_struct[0]; } uint32_t option = 0; - UpplReturnCode read_status = ReadLinkValFromDB(db_conn, key_struct, + UncRespCode read_status = ReadLinkValFromDB(db_conn, key_struct, void_val_struct, data_type, operation_type, @@ -140,7 +140,7 @@ UpplReturnCode Kt_Link::ReadInternal(OdbcmConnectionHandler *db_conn, option); key_val.clear(); val_struct.clear(); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { pfc_log_debug("Read operation is success"); for (unsigned int iIndex = 0 ; iIndex < vect_val_link_st.size(); ++iIndex) { @@ -164,11 +164,11 @@ UpplReturnCode Kt_Link::ReadInternal(OdbcmConnectionHandler *db_conn, * max_rep_ct - specifies number of rows to be returned * parent_call - indicates whether parent has called this readbulk * is_read_next - indicates whether this function is invoked from readnext - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -176,7 +176,7 @@ UpplReturnCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_bool_t parent_call, pfc_bool_t is_read_next, ReadRequest *read_req) { - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_link_t* obj_key_link= reinterpret_cast(key_struct); string str_controller_name = @@ -193,13 +193,13 @@ UpplReturnCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, // Not supported pfc_log_debug("ReadBulk operation is not allowed in %d data type", data_type); - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; pfc_log_debug("read_status=%d", read_status); return read_status; } if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct is 0"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } vector vect_val_link_st; vector vect_link_id; @@ -210,7 +210,7 @@ UpplReturnCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, vect_val_link_st, vect_link_id); pfc_log_debug("read_status from kt_link is %d", read_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { // For each link , read the values vector ::iterator vect_iter = vect_val_link_st.begin(); vector ::iterator link_iter = vect_link_id.begin(); @@ -241,10 +241,10 @@ UpplReturnCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, read_req->AddToBuffer(obj_sep_buffer); --max_rep_ct; if (max_rep_ct == 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } - } else if (read_status == UPPL_RC_ERR_DB_ACCESS) { + } else if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("Ktlink ReadBulk - Returning DB Access Error"); return read_status; } @@ -265,12 +265,12 @@ UpplReturnCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, is_read_next, read_req); pfc_log_debug("read_status from next kin Kt_Port is %d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } pfc_log_debug("link reached end of table"); pfc_log_debug("read_status=%d", read_status); - if (read_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { - read_status = UPPL_RC_SUCCESS; + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { + read_status = UNC_RC_SUCCESS; } return read_status; } @@ -284,11 +284,11 @@ UpplReturnCode Kt_Link::ReadBulk(OdbcmConnectionHandler *db_conn, * max_rep_ct- specifies number of rows to be returned * vect_val_link - indicates the fetched values from db of val_link type * vect_link_id - indicates the fetched link names from db - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Link::ReadBulkInternal( +UncRespCode Kt_Link::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, @@ -297,7 +297,7 @@ UpplReturnCode Kt_Link::ReadBulkInternal( vector &vect_link_id) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); void *val_struct = NULL; - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_link_dbtableschema; vector operator_vector; @@ -325,7 +325,7 @@ UpplReturnCode Kt_Link::ReadBulkInternal( for (; index < no_of_query ; ++index) { if (kt_link_dbtableschema.primary_keys_.size() <2) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; break; } // Read rows from DB @@ -336,18 +336,18 @@ UpplReturnCode Kt_Link::ReadBulkInternal( pfc_log_debug("GetBulkRows return: %d", read_db_status); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; // Update the primary key vector kt_link_dbtableschema.primary_keys_.pop_back(); pfc_log_debug( - "Primary key vector size %d", - static_cast(kt_link_dbtableschema.primary_keys_.size())); + "Primary key vector size %" + PFC_PFMT_SIZE_T, kt_link_dbtableschema.primary_keys_.size()); } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); break; } else if (read_db_status == ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; pfc_log_debug("Received success response from db"); uint32_t max_rep_ct_new = 0; FillLinkValueStructure(db_conn, kt_link_dbtableschema, @@ -365,15 +365,15 @@ UpplReturnCode Kt_Link::ReadBulkInternal( kt_link_dbtableschema.primary_keys_.pop_back(); } else { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; break; } } // for loop end if (vect_val_link_st.empty() && index == 4) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else if (!vect_val_link_st.empty()) { - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; } return read_status; @@ -387,16 +387,16 @@ UpplReturnCode Kt_Link::ReadBulkInternal( * value_struct - the value for the kt link instance * data_type - UNC_DT_*,type of database * operation_type - UNC_OP*,type of operation - * @return : UPPL_RC_SUCCESS is returned when the validation is successful - * UPPL_RC_ERR_* is returned when validation is failure + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure * */ -UpplReturnCode Kt_Link::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_info("Performing Syntax Validation of KT_LINK"); - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_ipcresp_t mandatory = PFC_TRUE; // Validate key structure @@ -405,34 +405,34 @@ UpplReturnCode Kt_Link::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, map attr_syntax_map = attr_syntax_map_all[UNC_KT_LINK]; IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->switch_id1); IS_VALID_STRING_KEY(LINK_SWITCH_ID1_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->port_id1); IS_VALID_STRING_KEY(LINK_PORT_ID1_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->switch_id2); IS_VALID_STRING_KEY(LINK_SWITCH_ID2_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->port_id2); IS_VALID_STRING_KEY(LINK_PORT_ID2_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate value structure @@ -444,8 +444,8 @@ UpplReturnCode Kt_Link::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, string value = reinterpret_cast(link_value->description); IS_VALID_STRING_VALUE(LINK_DESCRIPTION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } return ret_code; @@ -458,16 +458,16 @@ UpplReturnCode Kt_Link::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, * value_struct - specifies value of KT_LINK * operation - UNC_OP*,type of operation * data_type - UNC_DT*,type of database - * @return : UPPL_RC_SUCCESS if semantic valition is successful - * or UPPL_RC_ERR_* if failed + * @return : UNC_RC_SUCCESS if semantic valition is successful + * or UNC_UPPL_RC_ERR_* if failed * */ -UpplReturnCode Kt_Link::PerformSemanticValidation( +UncRespCode Kt_Link::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; pfc_log_debug("Inside PerformSemanticValidation of KT_LINK"); // Check whether the given instance of link exists in DB key_link_t *obj_key_link = reinterpret_cast(key_struct); @@ -482,17 +482,17 @@ UpplReturnCode Kt_Link::PerformSemanticValidation( link_vect_key_value.push_back(port_id1); link_vect_key_value.push_back(switch_id2); link_vect_key_value.push_back(port_id2); - UpplReturnCode key_status = IsKeyExists(db_conn, + UncRespCode key_status = IsKeyExists(db_conn, (unc_keytype_datatype_t)data_type, link_vect_key_value); pfc_log_debug("IsKeyExists status %d", key_status); // In case of Create operation, key should not exist if (operation == UNC_OP_CREATE) { - if (key_status == UPPL_RC_SUCCESS) { + if (key_status == UNC_RC_SUCCESS) { pfc_log_error("Key instance already exists"); pfc_log_error("Hence Create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; - } else if (key_status == UPPL_RC_ERR_DB_ACCESS) { + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; + } else if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; } else { @@ -502,19 +502,19 @@ UpplReturnCode Kt_Link::PerformSemanticValidation( } else if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { // In case of update/delete/read operation, key should exist - if (key_status == UPPL_RC_ERR_DB_ACCESS) { + if (key_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = key_status; - } else if (key_status != UPPL_RC_SUCCESS) { + } else if (key_status != UNC_RC_SUCCESS) { pfc_log_error("Key instance does not exist"); pfc_log_error("Hence update/delete/read operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { pfc_log_info("key instance exist update/del/read operation allowed"); } } - if (operation == UNC_OP_CREATE && status == UPPL_RC_SUCCESS) { + if (operation == UNC_OP_CREATE && status == UNC_RC_SUCCESS) { vector parent_vect_key_value; parent_vect_key_value.push_back(controller_name); Kt_Controller KtObj; @@ -522,12 +522,12 @@ UpplReturnCode Kt_Link::PerformSemanticValidation( if (data_type == UNC_DT_IMPORT) { parent_data_type = UNC_DT_RUNNING; } - UpplReturnCode parent_key_status = KtObj.IsKeyExists( + UncRespCode parent_key_status = KtObj.IsKeyExists( db_conn, (unc_keytype_datatype_t)parent_data_type, parent_vect_key_value); pfc_log_debug("Parent IsKeyExists status %d", parent_key_status); - if (parent_key_status != UPPL_RC_SUCCESS) { - status = UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; + if (parent_key_status != UNC_RC_SUCCESS) { + status = UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; } } pfc_log_debug("Return Code SemanticValidation: %d", status); @@ -540,17 +540,16 @@ UpplReturnCode Kt_Link::PerformSemanticValidation( * @param[in] : data_type-UNC_DT_*,type of database * key_struct-void* to kt key structure * value_struct-void* to kt value structure - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR*, - * UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*, + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Link::HandleOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct) { if (key_struct != NULL) { - FN_START_TIME("HandleOperStatus", "Link"); key_link_t *obj_key_link = reinterpret_cast(key_struct); string controller_name = (const char*)obj_key_link->ctr_key.controller_name; @@ -561,10 +560,10 @@ UpplReturnCode Kt_Link::HandleOperStatus(OdbcmConnectionHandler *db_conn, uint8_t ctrl_oper_status = 0; UpplLinkOperStatus link_oper_status = UPPL_LINK_OPER_UNKNOWN; Kt_Controller controller; - UpplReturnCode read_status = controller.GetOperStatus( + UncRespCode read_status = controller.GetOperStatus( db_conn, data_type, reinterpret_cast(&ctr_key), ctrl_oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { pfc_log_info("Controller's oper_status %d", ctrl_oper_status); if (ctrl_oper_status == (UpplControllerOperStatus) UPPL_CONTROLLER_OPER_UP) { @@ -577,16 +576,14 @@ UpplReturnCode Kt_Link::HandleOperStatus(OdbcmConnectionHandler *db_conn, // Update oper_status in link table read_status = SetOperStatus(db_conn, data_type, key_struct, link_oper_status); - if (read_status != UPPL_RC_SUCCESS && - read_status != UPPL_RC_ERR_NO_SUCH_INSTANCE) { + if (read_status != UNC_RC_SUCCESS && + read_status != UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { // log error pfc_log_error("oper_status update operation failed"); - FN_END_TIME("HandleOperStatus", "Link"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - FN_END_TIME("HandleOperStatus", "Link"); } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** SetOperStatus @@ -595,11 +592,11 @@ UpplReturnCode Kt_Link::HandleOperStatus(OdbcmConnectionHandler *db_conn, * @param[in] : key_struct-void* to link key strcuture * data_type-UNC_DT_*,type of database * oper_status-any value of UpplLinkOperStatus - * @return : UPPL_RC_SUCCESS/ERR*, UPPL_RC_SUCCESS is returned when the + * @return : UNC_RC_SUCCESS/ERR*, UNC_RC_SUCCESS is returned when the * response is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. */ -UpplReturnCode Kt_Link::SetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, UpplLinkOperStatus oper_status) { @@ -665,18 +662,18 @@ UpplReturnCode Kt_Link::SetOperStatus(OdbcmConnectionHandler *db_conn, kt_link_dbtableschema, db_conn); if (update_db_status == ODBCM_RC_ROW_NOT_EXISTS) { pfc_log_info("No instance available for update"); - return UPPL_RC_ERR_NO_SUCH_INSTANCE; + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else if (update_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("oper_status update operation failed"); - return UPPL_RC_ERR_DB_UPDATE; + return UNC_UPPL_RC_ERR_DB_UPDATE; } else { // Notify operstatus change to northbound uint8_t old_oper_status = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, old_oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { val_link_st old_val_link, new_val_link; memset(&old_val_link, 0, sizeof(old_val_link)); memset(&new_val_link, 0, sizeof(new_val_link)); @@ -687,9 +684,9 @@ UpplReturnCode Kt_Link::SetOperStatus(OdbcmConnectionHandler *db_conn, int err = 0; // Send notification to Northbound ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_LINK, err); - northbound_event_header rsh = {UNC_OP_UPDATE, + northbound_event_header rsh = {static_cast(UNC_OP_UPDATE), data_type, - UNC_KT_LINK}; + static_cast(UNC_KT_LINK)}; err = PhyUtil::sessOutNBEventHeader(ser_evt, rsh); err |= ser_evt.addOutput(*obj_key_link); err |= ser_evt.addOutput(new_val_link); @@ -697,7 +694,7 @@ UpplReturnCode Kt_Link::SetOperStatus(OdbcmConnectionHandler *db_conn, if (err == 0) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Notify operstatus modifications - UpplReturnCode status = (UpplReturnCode) physical_layer + UncRespCode status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); pfc_log_debug("Event notification status %d", status); } else { @@ -705,26 +702,26 @@ UpplReturnCode Kt_Link::SetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** IsKeyExists * @Description : This function checks whether the link_id exists in DB * @param[in] : data type - UNC_DT_*,type of database * key value - Contains link_id - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* based on operation type + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* based on operation type * */ -UpplReturnCode Kt_Link::IsKeyExists(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // void* key_struct; // key_link_t *obj_key_link = reinterpret_cast(key_struct); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_info("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = key_values[0]; @@ -788,12 +785,12 @@ UpplReturnCode Kt_Link::IsKeyExists(OdbcmConnectionHandler *db_conn, if (check_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - check_status = UPPL_RC_ERR_DB_ACCESS; + check_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (check_db_status == ODBCM_RC_ROW_EXISTS) { pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + check_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } pfc_log_debug("check_status = %d", check_status); return check_status; @@ -813,7 +810,7 @@ UpplReturnCode Kt_Link::IsKeyExists(OdbcmConnectionHandler *db_conn, * row_status-CsRowStatus value * is_filtering-flag to indicate whether filter option is enabled * is_state-flag to indicate whether data type is DT_STATE - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* * */ void Kt_Link::PopulateDBSchemaForKtTable( OdbcmConnectionHandler *db_conn, @@ -1099,8 +1096,8 @@ void Kt_Link::FillLinkValueStructure( vect_obj_val_link.push_back(obj_val_link); // populate key structure link_id.push_back(obj_key_link); - pfc_log_debug("result - vect_obj_val_link size: %d", - (unsigned int) vect_obj_val_link.size()); + pfc_log_debug("result - vect_obj_val_link size: %" + PFC_PFMT_SIZE_T, vect_obj_val_link.size()); } return; } @@ -1118,9 +1115,9 @@ void Kt_Link::FillLinkValueStructure( * sess-object of ServerSession where the arguments present * option1,option2-UNC_OPT1,OPT2_*,additional info for read operations * max_rep_ct-max no. of records to be read - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -1141,7 +1138,7 @@ UpplReturnCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - 0}; + static_cast(0)}; if (operation_type == UNC_OP_READ) { max_rep_ct = 1; } @@ -1149,19 +1146,19 @@ UpplReturnCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, key_link_t *obj_key_link = reinterpret_cast(key_struct); if (option1 != UNC_OPT1_NORMAL) { pfc_log_error("PerformRead provided on unsupported option1"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LINK); err |= sess.addOutput(*obj_key_link); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; // Read operations will return switch_st if ((unc_keytype_datatype_t)data_type == UNC_DT_STATE && option1 == UNC_OPT1_NORMAL) { @@ -1170,15 +1167,15 @@ UpplReturnCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, option2 != UNC_OPT2_MATCH_BOTH_SWITCH && option2 != UNC_OPT2_NONE) { pfc_log_error("PerformRead provided on unsupported option2"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION2; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION2; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LINK); err |= sess.addOutput(*obj_key_link); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } vector vect_link_id; vector vect_val_link; @@ -1197,16 +1194,16 @@ UpplReturnCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, int err = PhyUtil::sessOutRespHeader(sess, rsh); if (err != 0) { pfc_log_error("Failure in addOutput"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_error("Read operation failed with %d", read_status); sess.addOutput((uint32_t)UNC_KT_LINK); sess.addOutput(*obj_key_link); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } - pfc_log_debug("From db, vect_link_id size is %d", - static_cast(vect_link_id.size())); + pfc_log_debug("From db, vect_link_id size is %" + PFC_PFMT_SIZE_T, vect_link_id.size()); for (unsigned int index = 0; index < vect_link_id.size(); ++index) { @@ -1221,15 +1218,15 @@ UpplReturnCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, } else { // Invalid data type pfc_log_error("Read operation is provided on unsupported data type"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LINK); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ReadLinkValFromDB @@ -1246,11 +1243,11 @@ UpplReturnCode Kt_Link::PerformRead(OdbcmConnectionHandler *db_conn, * option1,option2-additional info for read operations,UNC_OPT1/OPT2_* * is_state-flag to indicate whether data type is DT_STATE * @return : Success or associated error code, - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Link::ReadLinkValFromDB( +UncRespCode Kt_Link::ReadLinkValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -1264,10 +1261,10 @@ UpplReturnCode Kt_Link::ReadLinkValFromDB( pfc_bool_t is_state) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; // Construct TableAttrSchema structure @@ -1300,15 +1297,16 @@ UpplReturnCode Kt_Link::ReadLinkValFromDB( vect_prim_key_operations, (unc_keytype_operation_t)operation_type, db_conn); } else if (operation_type == UNC_OP_READ_SIBLING) { - pfc_log_debug("Ktlink:Primarykeysize: %d", - (uint32_t)kt_link_dbtableschema.primary_keys_.size()); + pfc_log_debug("Ktlink:Primarykeysize: %" + PFC_PFMT_SIZE_T, + kt_link_dbtableschema.primary_keys_.size()); pfc_log_debug("Inside READ SIBLING part"); uint32_t index = 0; uint32_t no_of_query = 4; // Link has 4 primary keys other than controller for (; index < no_of_query ; ++index) { if (kt_link_dbtableschema.primary_keys_.size() < 2) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; break; } read_db_status = physical_layer->get_odbc_manager()-> \ @@ -1318,14 +1316,14 @@ UpplReturnCode Kt_Link::ReadLinkValFromDB( db_conn); kt_link_dbtableschema.primary_keys_.pop_back(); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status == ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; uint32_t max_rep_ct_new = 0; pfc_log_debug("Received success response from db"); FillLinkValueStructure(db_conn, kt_link_dbtableschema, @@ -1340,16 +1338,16 @@ UpplReturnCode Kt_Link::ReadLinkValFromDB( } max_rep_ct -= max_rep_ct_new; } else { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; return read_status; } } // for end if (vect_val_link_st.empty() && index == 4) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else if (!vect_val_link_st.empty()) { max_rep_ct = vect_val_link_st.size(); - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; } return read_status; } else { @@ -1362,14 +1360,14 @@ UpplReturnCode Kt_Link::ReadLinkValFromDB( // except read sibling - all other reads following block will fill the values if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; @@ -1380,12 +1378,12 @@ UpplReturnCode Kt_Link::ReadLinkValFromDB( max_rep_ct, operation_type, link_id); - pfc_log_debug("vect_val_link_st size: %d", - (unsigned int)vect_val_link_st.size()); - pfc_log_debug("link_id size: %d", (unsigned int)link_id.size()); + pfc_log_debug("vect_val_link_st size: %" + PFC_PFMT_SIZE_T, vect_val_link_st.size()); + pfc_log_debug("link_id size: %" PFC_PFMT_SIZE_T, link_id.size()); if (vect_val_link_st.empty()) { // Read failed , return error - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed after reading response"); return read_status; @@ -1436,16 +1434,16 @@ void Kt_Link::Fill_Attr_Syntax_Map() { * @param[in] : key_struct-void* to link key structure * val_link_valid_st-instance of val_link_st_t * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Link::GetLinkValidFlag( +UncRespCode Kt_Link::GetLinkValidFlag( OdbcmConnectionHandler *db_conn, void *key_struct, val_link_st_t &val_link_valid_st, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vectVal_link; vector vectkey_link; vectkey_link.push_back(key_struct); @@ -1453,7 +1451,7 @@ UpplReturnCode Kt_Link::GetLinkValidFlag( return_code = ReadInternal(db_conn, vectkey_link, vectVal_link, data_type, UNC_OP_READ); - if (return_code == UPPL_RC_SUCCESS) { + if (return_code == UNC_RC_SUCCESS) { val_link_st_t *obj_new_link_val_vect = reinterpret_cast (vectVal_link[0]); if (obj_new_link_val_vect != NULL) { @@ -1483,11 +1481,11 @@ UpplReturnCode Kt_Link::GetLinkValidFlag( * param[out]: * oper_status-indicates the oper status of link whether up or down * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. */ -UpplReturnCode Kt_Link::GetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Link::GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status) { @@ -1557,7 +1555,7 @@ UpplReturnCode Kt_Link::GetOperStatus(OdbcmConnectionHandler *db_conn, kt_link_dbtableschema, db_conn); if (update_db_status != ODBCM_RC_SUCCESS) { pfc_log_info("oper_status read operation failed %d", update_db_status); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper_status value @@ -1585,7 +1583,7 @@ UpplReturnCode Kt_Link::GetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** FrameValidValue @@ -1593,9 +1591,9 @@ UpplReturnCode Kt_Link::GetOperStatus(OdbcmConnectionHandler *db_conn, * @param[in] : attr_value-attribute value in string * obj_val_link-object of val_link_st * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ void Kt_Link::FrameValidValue(string attr_value, val_link_st &obj_val_link) { @@ -1624,9 +1622,9 @@ void Kt_Link::FrameValidValue(string attr_value, * vect_prim_keys-vector conatining link keys * vect_prim_keys_operation-instance of vector * @return : Success or associated error code - * UPPL_RC_SUCCESS is returned when the response + * UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ void Kt_Link::PopulatePrimaryKeys( uint32_t operation_type, diff --git a/coordinator/modules/uppl/itc_kt_logical_member_port.cc b/coordinator/modules/uppl/itc_kt_logical_member_port.cc index 4f428acc..ae79502b 100644 --- a/coordinator/modules/uppl/itc_kt_logical_member_port.cc +++ b/coordinator/modules/uppl/itc_kt_logical_member_port.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -46,22 +46,22 @@ Kt_LogicalMemberPort::~Kt_LogicalMemberPort() { * key_struct - the key for the new kt logicalmemberport instance * data_type - UNC_DT_* , delete only allowed in state * key_type-UNC_KT_LOGICAL_MEMBER_PORT,value of unc_key_type_t - * @return : UPPL_RC_SUCCESS is returned when the delete + * @return : UNC_RC_SUCCESS is returned when the delete * is done successfully. - * UPPL_RC_ERR_* is returned when the delete is error + * UNC_UPPL_RC_ERR_* is returned when the delete is error * */ -UpplReturnCode Kt_LogicalMemberPort::DeleteKeyInstance( +UncRespCode Kt_LogicalMemberPort::DeleteKeyInstance( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Check whether operation is allowed on the given DT type if (((unc_keytype_datatype_t)data_type != UNC_DT_STATE) && ((unc_keytype_datatype_t)data_type != UNC_DT_IMPORT)) { pfc_log_error("Delete operation is provided on unsupported data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } key_logical_member_port_t *obj_key_logical_member_port = @@ -133,14 +133,14 @@ UpplReturnCode Kt_LogicalMemberPort::DeleteKeyInstance( if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (delete_db_status == ODBCM_RC_ROW_NOT_EXISTS) { - delete_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + delete_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { // log error to log daemon pfc_log_error("DeleteOneRow error response from DB is %d", delete_db_status); - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else { pfc_log_info("Delete of a logical member port in data_type(%d) is success", @@ -162,11 +162,11 @@ UpplReturnCode Kt_LogicalMemberPort::DeleteKeyInstance( * max_rep_ct - specifies number of rows to be returned * parent_call - indicates whether parent has called this readbulk * is_read_next - indicates whether this function is invoked from readnext - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_LogicalMemberPort::ReadBulk( +UncRespCode Kt_LogicalMemberPort::ReadBulk( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, @@ -175,7 +175,7 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulk( pfc_bool_t parent_call, pfc_bool_t is_read_next, ReadRequest *read_req) { - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_logical_member_port_t* obj_key_logical_member_port = reinterpret_cast(key_struct); string switch_id = @@ -194,12 +194,12 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulk( // Not supported pfc_log_debug("ReadBulk operation is not allowed in %d data type", data_type); - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; pfc_log_debug("read_status=%d", read_status); return read_status; } if (max_rep_ct == 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } vector vect_logical_mem_port; // Read the controller values based on given key structure @@ -209,7 +209,7 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulk( vect_logical_mem_port); pfc_log_debug("read_status from _logical_member_port is %d", read_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { vector ::iterator logical_mem_port_iter = vect_logical_mem_port.begin(); for (; logical_mem_port_iter != vect_logical_mem_port.end(); @@ -237,7 +237,7 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulk( return read_status; } } - } else if (read_status == UPPL_RC_ERR_DB_ACCESS) { + } else if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("KtLogicalMemberPort ReadBulk - Returning DB Access Error"); return read_status; } @@ -268,12 +268,12 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulk( read_req); pfc_log_debug("read status from next kin Kt_LogicalPort is %d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } pfc_log_debug("log_mem_port reached end of table"); pfc_log_debug("read_status=%d", read_status); - if (read_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { - read_status = UPPL_RC_SUCCESS; + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { + read_status = UNC_RC_SUCCESS; } return read_status; } @@ -286,21 +286,21 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulk( * max_rep_ct - specifies number of rows to be returned * data_type-UNC_DT_*,type of database * vect_logical_mem_port-instance of vector - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_LogicalMemberPort::ReadBulkInternal( +UncRespCode Kt_LogicalMemberPort::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t max_rep_ct, vector &vect_logical_mem_port) { if (max_rep_ct <= 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_logical_member_port_dbtableschema; @@ -325,7 +325,7 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulkInternal( for (; index < no_of_query; ++index) { if (kt_logical_member_port_dbtableschema.primary_keys_.size() < 3) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; break; } // Read rows from DB @@ -335,20 +335,20 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulkInternal( (unc_keytype_operation_t)UNC_OP_READ_BULK, db_conn); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; // Update the primary key vector kt_logical_member_port_dbtableschema.primary_keys_.pop_back(); pfc_log_debug( - "Primary key vector size %d", - static_cast - (kt_logical_member_port_dbtableschema.primary_keys_.size())); + "Primary key vector size %" + PFC_PFMT_SIZE_T, + kt_logical_member_port_dbtableschema.primary_keys_.size()); } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); break; } else if (read_db_status == ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; uint32_t max_rep_ct_new = 0; pfc_log_debug("Received success response from db"); // From the values received from DB, populate val structure @@ -366,7 +366,7 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulkInternal( max_rep_ct -= max_rep_ct_new; kt_logical_member_port_dbtableschema.primary_keys_.pop_back(); } else { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed"); break; @@ -374,9 +374,9 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulkInternal( } // for end if (vect_logical_mem_port.empty() && index == 2) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else if (!vect_logical_mem_port.empty()) { - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; } return read_status; } @@ -389,21 +389,21 @@ UpplReturnCode Kt_LogicalMemberPort::ReadBulkInternal( * value_struct - the value for the kt logicalmemberport instance * data_type - UNC_DT_*,type of database * operation_type - UNC_OP*,type of operation - * @return : UPPL_RC_SUCCESS is returned when the validation is successful - * UPPL_RC_ERR_* is returned when validation is failure + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure * */ -UpplReturnCode Kt_LogicalMemberPort::PerformSyntaxValidation( +UncRespCode Kt_LogicalMemberPort::PerformSyntaxValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_info("Syntax Validation of KT_LOGICAL_MEMBER_PORT"); - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; if (val_struct != NULL) { pfc_log_error("KT_LOGICAL_MEMBER_PORT does not have any value structure"); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate Key Structure @@ -415,39 +415,39 @@ UpplReturnCode Kt_LogicalMemberPort::PerformSyntaxValidation( map attr_syntax_map = attr_syntax_map_all[UNC_KT_LOGICAL_MEMBER_PORT]; IS_VALID_STRING_KEY(LMP_SWITCH_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->physical_port_id); IS_VALID_STRING_KEY(LMP_PHYSICAL_PORT_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->logical_port_key.port_id); IS_VALID_STRING_KEY(LMP_LP_PORT_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast (key->logical_port_key.domain_key.domain_name); IS_VALID_STRING_KEY(DOMAIN_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key-> logical_port_key.domain_key.ctr_key.controller_name); IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } return ret_code; } @@ -459,18 +459,18 @@ UpplReturnCode Kt_LogicalMemberPort::PerformSyntaxValidation( * value_struct - specifies value of KTLOGICAL_MEMBER_PORT * operation - UNC_OP*,type of operation * data_type - UNC_DT*,type of database - * @return : UPPL_RC_SUCCESS if semantic valition is successful - * or UPPL_RC_ERR_* if failed + * @return : UNC_RC_SUCCESS if semantic valition is successful + * or UNC_UPPL_RC_ERR_* if failed * */ -UpplReturnCode Kt_LogicalMemberPort::PerformSemanticValidation( +UncRespCode Kt_LogicalMemberPort::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_debug("Inside PerformSemanticValidation of KT_LOGICAL_MEMBER_PORT"); - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; key_logical_member_port_t *obj_key_logical_member_port = reinterpret_cast(key_struct); @@ -494,48 +494,48 @@ UpplReturnCode Kt_LogicalMemberPort::PerformSemanticValidation( vect_key_value.push_back(switch_id); vect_key_value.push_back(physical_port_id); - UpplReturnCode KeyStatus = IsKeyExists(db_conn, + UncRespCode KeyStatus = IsKeyExists(db_conn, (unc_keytype_datatype_t)data_type, vect_key_value); pfc_log_debug("return value of IsKeyExists:%d", KeyStatus); - // KeyStatus = UPPL_RC_SUCCESS; //to be removed + // KeyStatus = UNC_RC_SUCCESS; //to be removed if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { - if (KeyStatus == UPPL_RC_ERR_DB_ACCESS) { + if (KeyStatus == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = KeyStatus; - } else if (KeyStatus != UPPL_RC_SUCCESS) { + } else if (KeyStatus != UNC_RC_SUCCESS) { pfc_log_info("LogicalMemberPort key does not exist and" " hence read/delete/update operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { pfc_log_info("key instance exist update/del/read operation allowed"); } } if (operation == UNC_OP_CREATE) { - if (KeyStatus == UPPL_RC_SUCCESS) { + if (KeyStatus == UNC_RC_SUCCESS) { pfc_log_info("LogicalMemberPort key already exist and" " hence create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; - } else if (KeyStatus == UPPL_RC_ERR_DB_ACCESS) { + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; + } else if (KeyStatus == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_error("DB Access failure"); status = KeyStatus; } else { pfc_log_info("key instance not exist create operation allowed"); } } - if (operation == UNC_OP_CREATE && status == UPPL_RC_SUCCESS) { + if (operation == UNC_OP_CREATE && status == UNC_RC_SUCCESS) { vector parent_vect_key_value; parent_vect_key_value.push_back(controller_name); parent_vect_key_value.push_back(domain_name); parent_vect_key_value.push_back(port_id); pfc_log_info("calling KtLogicalPort IsKeyExists function"); Kt_LogicalPort KtObj; - UpplReturnCode parent_key_status = KtObj.IsKeyExists( + UncRespCode parent_key_status = KtObj.IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, parent_vect_key_value); pfc_log_debug("Parent IsKeyExists status %d", parent_key_status); - if (parent_key_status != UPPL_RC_SUCCESS) { - status = UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; + if (parent_key_status != UNC_RC_SUCCESS) { + status = UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; } } pfc_log_debug("status before returning=%d", status); @@ -547,19 +547,19 @@ UpplReturnCode Kt_LogicalMemberPort::PerformSemanticValidation( * logicalmemberport_id exists in DB * @param[in] : data_type-UNC_DT_*,type of database * key_values-vector of strings containing key values - * @return : Success or associated error code,UPPL_RC_SUCCESS/UPPL_RC_ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_LogicalMemberPort::IsKeyExists( +UncRespCode Kt_LogicalMemberPort::IsKeyExists( OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { PhysicalLayer* physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_error("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = key_values[0]; @@ -618,12 +618,12 @@ UpplReturnCode Kt_LogicalMemberPort::IsKeyExists( if (check_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - check_status = UPPL_RC_ERR_DB_ACCESS; + check_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (check_db_status == ODBCM_RC_ROW_EXISTS) { pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + check_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } pfc_log_debug("check_status = %d", check_status); return check_status; @@ -642,7 +642,7 @@ UpplReturnCode Kt_LogicalMemberPort::IsKeyExists( * row_status- value of CsRowStatus * is_filtering-flag to indicate whether filter option is enabled * is_state-flag to indicate whether datatype is DT_STATE - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ void Kt_LogicalMemberPort::PopulateDBSchemaForKtTable( OdbcmConnectionHandler *db_conn, @@ -768,7 +768,7 @@ void Kt_LogicalMemberPort::PopulateDBSchemaForKtTable( * max_rep_ct-maximum no. of records to be read * operation_type-UNC_OP_*,type of database * logical_mem_port-instance of vector - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ void Kt_LogicalMemberPort::FillLogicalMemberPortValueStructure( OdbcmConnectionHandler *db_conn, @@ -854,7 +854,7 @@ void Kt_LogicalMemberPort::FillLogicalMemberPortValueStructure( } } logical_mem_port.push_back(obj_key_logical_mem_port); - pfc_log_debug("Vector size %zd", logical_mem_port.size()); + pfc_log_debug("Vector size %"PFC_PFMT_SIZE_T, logical_mem_port.size()); } return; } @@ -873,9 +873,9 @@ void Kt_LogicalMemberPort::FillLogicalMemberPortValueStructure( * operation_type-type of operation,UNC_OP_READ* * max_rep_ct-max.no of records to be read * @param[out]: sess-ServerSession object where the arguments present - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ -UpplReturnCode Kt_LogicalMemberPort::PerformRead( +UncRespCode Kt_LogicalMemberPort::PerformRead( OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, @@ -896,51 +896,51 @@ UpplReturnCode Kt_LogicalMemberPort::PerformRead( option1, option2, data_type, - 0}; + static_cast(0)}; if (operation_type == UNC_OP_READ) { max_rep_ct = 1; } - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_logical_member_port_t *obj_key_logical_member_port = reinterpret_cast(key_struct); if (option1 != UNC_OPT1_NORMAL) { pfc_log_error("Invalid option1 specified for read operation"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); err |= sess.addOutput(*obj_key_logical_member_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (option2 != UNC_OPT2_NONE) { pfc_log_error("Invalid option2 specified for read operation"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION2; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION2; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); err |= sess.addOutput(*obj_key_logical_member_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Read from DB directly for non state data types if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { pfc_log_error("Read operation is provided on unsupported data type"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); err |= sess.addOutput(*obj_key_logical_member_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } vector vect_logical_mem_port; read_status = ReadLogicalMemberPortValFromDB(db_conn, @@ -949,18 +949,18 @@ UpplReturnCode Kt_LogicalMemberPort::PerformRead( operation_type, max_rep_ct, vect_logical_mem_port); - pfc_log_debug("size of vect_logical_mem_port=%zd", - vect_logical_mem_port.size()); + pfc_log_debug("size of vect_logical_mem_port=%" + PFC_PFMT_SIZE_T, vect_logical_mem_port.size()); pfc_log_debug("read_status of ReadLogicalMemberPortValFromDB = %d", - read_status); + read_status); rsh.result_code = read_status; rsh.max_rep_count = max_rep_ct; int err = PhyUtil::sessOutRespHeader(sess, rsh); if (err != 0) { pfc_log_error("Failure in addOutput"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int index = 0; index < vect_logical_mem_port.size(); ++index) { @@ -975,7 +975,7 @@ UpplReturnCode Kt_LogicalMemberPort::PerformRead( sess.addOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); sess.addOutput(*obj_key_logical_member_port); } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ReadLogicalMemberPortValFromDB @@ -988,9 +988,9 @@ UpplReturnCode Kt_LogicalMemberPort::PerformRead( * max_rep_ct-max. no of records to be read * logical_mem_port-instance of vector * is_state-flag to indicate whether datatype is DT_STATE - * @return : Success or associated error code,UPPL_RC_SUCCESS/ERR* + * @return : Success or associated error code,UNC_RC_SUCCESS/ERR* * */ -UpplReturnCode Kt_LogicalMemberPort::ReadLogicalMemberPortValFromDB( +UncRespCode Kt_LogicalMemberPort::ReadLogicalMemberPortValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, @@ -1000,10 +1000,10 @@ UpplReturnCode Kt_LogicalMemberPort::ReadLogicalMemberPortValFromDB( pfc_bool_t is_state) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; // Common structures that will be used to send query to ODBC @@ -1037,7 +1037,7 @@ UpplReturnCode Kt_LogicalMemberPort::ReadLogicalMemberPortValFromDB( for (; index < no_of_query; ++index) { if (kt_logical_member_port_dbtableschema.primary_keys_.size() < 3) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; break; } pfc_log_debug("LMP:Read Sibling"); @@ -1062,25 +1062,25 @@ UpplReturnCode Kt_LogicalMemberPort::ReadLogicalMemberPortValFromDB( max_rep_ct -= max_rep_ct_new; // Update the primary key vector kt_logical_member_port_dbtableschema.primary_keys_.pop_back(); - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; // Update the primary key vector kt_logical_member_port_dbtableschema.primary_keys_.pop_back(); } } // for end if (logical_mem_port.empty() && index == 2) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else if (!logical_mem_port.empty()) { max_rep_ct = logical_mem_port.size(); - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; } return read_status; } else if (operation_type == UNC_OP_READ_SIBLING_BEGIN) { @@ -1093,14 +1093,14 @@ UpplReturnCode Kt_LogicalMemberPort::ReadLogicalMemberPortValFromDB( } if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_info("Read operation has failed with error %d", read_db_status); return read_status; @@ -1110,8 +1110,8 @@ UpplReturnCode Kt_LogicalMemberPort::ReadLogicalMemberPortValFromDB( max_rep_ct, operation_type, logical_mem_port); - pfc_log_debug("logical_mem_port size: %d", - (unsigned int)logical_mem_port.size()); + pfc_log_debug("logical_mem_port size: %" + PFC_PFMT_SIZE_T, logical_mem_port.size()); return read_status; } @@ -1152,11 +1152,11 @@ void Kt_LogicalMemberPort::Fill_Attr_Syntax_Map() { * val_struct - NULL * operation_type-UNC_OP_READ*,type of read operation * data_type - UNC_DT_* , read allowed in state,type of database - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_LogicalMemberPort::ReadInternal( +UncRespCode Kt_LogicalMemberPort::ReadInternal( OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, @@ -1170,17 +1170,17 @@ UpplReturnCode Kt_LogicalMemberPort::ReadInternal( // Get read response from database void *key_struct = key_val[0]; vector logical_mem_port; - UpplReturnCode read_status = ReadLogicalMemberPortValFromDB(db_conn, + UncRespCode read_status = ReadLogicalMemberPortValFromDB(db_conn, key_struct, data_type, operation_type, max_rep_ct, logical_mem_port); pfc_log_info( - "ReadLogicalMemberPortValFromDB returned %d with response size %d", - read_status, static_cast(logical_mem_port.size())); + "ReadLogicalMemberPortValFromDB returned %d with response size %" + PFC_PFMT_SIZE_T, read_status, logical_mem_port.size()); key_val.clear(); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int iIndex = 0 ; iIndex < logical_mem_port.size(); ++iIndex) { key_logical_member_port_t *key_mem_port = new diff --git a/coordinator/modules/uppl/itc_kt_logicalport.cc b/coordinator/modules/uppl/itc_kt_logicalport.cc index aea9c533..56fc1a46 100644 --- a/coordinator/modules/uppl/itc_kt_logicalport.cc +++ b/coordinator/modules/uppl/itc_kt_logicalport.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -90,22 +90,22 @@ Kt_Base* Kt_LogicalPort::GetChildClassPointer(KtLogicalPortChildClass KIndex) { * data type - UNC_DT_*,delete allowed only in STATE and IMPORT * key_type - indicates the key type * @return : indicates the delete status of the row - - * UPPL_RC_SUCCESS is returned when delete is done successfully. - * UPPL_RC_ERR_* is returned when delete is failed + * UNC_RC_SUCCESS is returned when delete is done successfully. + * UNC_UPPL_RC_ERR_* is returned when delete is failed **/ -UpplReturnCode Kt_LogicalPort::DeleteKeyInstance( +UncRespCode Kt_LogicalPort::DeleteKeyInstance( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Check whether operation is allowed on the given DT type if (((unc_keytype_datatype_t)data_type != UNC_DT_STATE) && ((unc_keytype_datatype_t)data_type != UNC_DT_IMPORT)) { pfc_log_error("Delete operation is provided on unsupported data type"); - delete_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + delete_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return delete_status; } else { pfc_log_debug("Delete instance for logical port is supported"); @@ -140,20 +140,20 @@ UpplReturnCode Kt_LogicalPort::DeleteKeyInstance( child[child_class] = GetChildClassPointer( (KtLogicalPortChildClass)child_class); if (child[child_class] != NULL) { - UpplReturnCode ch_delete_status = child[child_class]->DeleteKeyInstance( + UncRespCode ch_delete_status = child[child_class]->DeleteKeyInstance( db_conn, child_key_struct, data_type, UNC_KT_LOGICAL_MEMBER_PORT); delete child[child_class]; child[child_class] = NULL; FreeChildKeyStruct(child_class, child_key_struct); - if (ch_delete_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + if (ch_delete_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { pfc_log_debug("No child exists"); - } else if (ch_delete_status != UPPL_RC_SUCCESS) { + } else if (ch_delete_status != UNC_RC_SUCCESS) { // child delete failed, so return error pfc_log_error("Delete failed for child %d with error %d", child_class, ch_delete_status); - delete_status = UPPL_RC_ERR_CFG_SEMANTIC; + delete_status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; break; } } else { @@ -205,21 +205,21 @@ UpplReturnCode Kt_LogicalPort::DeleteKeyInstance( if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (delete_db_status == ODBCM_RC_ROW_NOT_EXISTS) { pfc_log_error("given instance does not exist"); - delete_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + delete_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { // log error to log daemon pfc_log_error("Delete operation has failed in logicalport table"); - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else { // deletion success send notification to boundary to // update operstatus to invalid - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; int err = InvokeBoundaryNotifyOperStatus(db_conn, data_type, key_struct); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error( "Delete instance: notify request for boundary is failed %d", err); } @@ -237,10 +237,10 @@ UpplReturnCode Kt_LogicalPort::DeleteKeyInstance( * operation_type - indicates the operation type supported i.e. * UNC_OP_READ * @return : It returns the read status of a row in logical port table - * UPPL_RC_SUCCESS - if read operation is success - * UPPL_RC_ERR_* - if read operation is a failure + * UNC_RC_SUCCESS - if read operation is success + * UNC_UPPL_RC_ERR_* - if read operation is a failure * */ -UpplReturnCode Kt_LogicalPort::ReadInternal(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_LogicalPort::ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, @@ -259,7 +259,7 @@ UpplReturnCode Kt_LogicalPort::ReadInternal(OdbcmConnectionHandler *db_conn, void_val_struct = val_struct[0]; } // Get read response from database - UpplReturnCode read_status = ReadLogicalPortValFromDB( + UncRespCode read_status = ReadLogicalPortValFromDB( db_conn, key_struct, void_val_struct, data_type, @@ -270,7 +270,7 @@ UpplReturnCode Kt_LogicalPort::ReadInternal(OdbcmConnectionHandler *db_conn, vect_logicalport_id); key_val.clear(); val_struct.clear(); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { pfc_log_debug("Read operation is success"); for (unsigned int iIndex = 0 ; iIndex < vect_val_logical_port_st.size(); ++iIndex) { @@ -300,10 +300,10 @@ UpplReturnCode Kt_LogicalPort::ReadInternal(OdbcmConnectionHandler *db_conn, * function is invoked from readnext * @return : It returns the read bulk operation status in * logical port table - * UPPL_RC_SUCCESS - if read operation is success - * UPPL_RC_ERR_* - if read operation is a failure + * UNC_RC_SUCCESS - if read operation is success + * UNC_UPPL_RC_ERR_* - if read operation is a failure **/ -UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -311,14 +311,14 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_bool_t parent_call, pfc_bool_t is_read_next, ReadRequest *read_req) { - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_logical_port_t obj_key_logical_port= *(reinterpret_cast(key_struct)); if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { // Not supported pfc_log_debug("ReadBulk operation is not allowed in %d data type", data_type); - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return read_status; } string str_controller_name = reinterpret_cast(obj_key_logical_port. @@ -334,7 +334,7 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, // Check for child call if (max_rep_ct == 0) { pfc_log_info("max_rep_ct is 0"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (child_index == -1 && !str_logicalport_id.empty()) { @@ -343,10 +343,10 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, vect_key_value.push_back(str_controller_name); vect_key_value.push_back(str_domain_name); vect_key_value.push_back(str_logicalport_id); - UpplReturnCode key_exist_status = IsKeyExists( + UncRespCode key_exist_status = IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, vect_key_value); - if (key_exist_status == UPPL_RC_SUCCESS) { + if (key_exist_status == UNC_RC_SUCCESS) { log_port_exists = PFC_TRUE; } } @@ -356,8 +356,8 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, max_rep_ct, vect_val_logical_port_st, vect_logicalport_id); - pfc_log_debug("Read status from logical_port is %d with result size %d", - read_status, static_cast(vect_logicalport_id.size())); + pfc_log_debug("Read status from logical_port is %d with result size %" + PFC_PFMT_SIZE_T, read_status, vect_logicalport_id.size()); if (log_port_exists == PFC_TRUE) { vect_logicalport_id.insert(vect_logicalport_id.begin(), obj_key_logical_port); @@ -365,7 +365,7 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, vect_val_logical_port_st.insert(vect_val_logical_port_st.begin(), dummy_val_log_port); } - if (read_status == UPPL_RC_SUCCESS || + if (read_status == UNC_RC_SUCCESS || log_port_exists == PFC_TRUE) { vector::iterator vect_iter = vect_val_logical_port_st.begin(); @@ -399,14 +399,15 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, --max_rep_ct; if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct reached zero, so returning"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } log_port_exists = PFC_FALSE; str_logicalport_id = reinterpret_cast((*logicalport_iter).port_id); int st_child_index = KIdxLogicalMemberPort; - pfc_log_debug("child_index=%d st_child_index=%d", child_index, st_child_index); + pfc_log_debug("child_index=%d st_child_index=%d", + child_index, st_child_index); /* (child_index >= 0 && child_index <= KIdxLogicalMemberPort) \ ? child_index+1 : KIdxLogicalMemberPort; @@ -426,7 +427,7 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, continue; } pfc_log_debug("Calling child %d read bulk", kIdx); - UpplReturnCode ch_read_status = child[kIdx]->ReadBulk( + UncRespCode ch_read_status = child[kIdx]->ReadBulk( db_conn, child_key_struct, data_type, max_rep_ct, @@ -441,13 +442,13 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, FreeChildKeyStruct(kIdx, child_key_struct); if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct reached zero, so returning"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } // reset child index child_index = -1; } - } else if (read_status == UPPL_RC_ERR_DB_ACCESS) { + } else if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("KtLogicalPort ReadBulk - Returning DB Access Error"); return read_status; } @@ -474,12 +475,12 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, read_req); pfc_log_debug("read status from next kin Kt_Domain is %d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } pfc_log_debug("logical port - reached end of table"); pfc_log_debug("read_status=%d", read_status); - if (read_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { - read_status = UPPL_RC_SUCCESS; + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { + read_status = UNC_RC_SUCCESS; } return read_status; } @@ -501,10 +502,10 @@ UpplReturnCode Kt_LogicalPort::ReadBulk(OdbcmConnectionHandler *db_conn, * of logical port * @return : It returns the read bulk operation status in logical port * table - * UPPL_RC_SUCCESS - if read operation is success - * UPPL_RC_ERR_* - if read operation is a failure + * UNC_RC_SUCCESS - if read operation is success + * UNC_UPPL_RC_ERR_* - if read operation is a failure **/ -UpplReturnCode Kt_LogicalPort::ReadBulkInternal( +UncRespCode Kt_LogicalPort::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -513,10 +514,10 @@ UpplReturnCode Kt_LogicalPort::ReadBulkInternal( vector &vect_val_logical_port, vector &vect_logical_port_id) { if (max_rep_ct <= 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_logicalport_dbtableschema; // Populate DBSchema for logicalport_table @@ -534,14 +535,14 @@ UpplReturnCode Kt_LogicalPort::ReadBulkInternal( (unc_keytype_operation_t)UNC_OP_READ_BULK, db_conn); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; @@ -567,17 +568,17 @@ UpplReturnCode Kt_LogicalPort::ReadBulkInternal( * data_type - indicates the data base type i.e UNC_DT_STATE * or UNC_DT_IMPORT * @return : Return code of the syntax validation will be sent - * UPPL_RC_SUCCESS - if Syntax Validation is success - * UPPL_RC_ERR_CFG_SYNTAX - if syntax validation fails + * UNC_RC_SUCCESS - if Syntax Validation is success + * UNC_UPPL_RC_ERR_CFG_SYNTAX - if syntax validation fails * */ -UpplReturnCode Kt_LogicalPort::PerformSyntaxValidation( +UncRespCode Kt_LogicalPort::PerformSyntaxValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_info("Syntax Validation of UNC_KT_LOGICAL_PORT"); - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_ipcresp_t mandatory = PFC_TRUE; map attr_syntax_map = attr_syntax_map_all[UNC_KT_LOGICAL_PORT]; @@ -586,20 +587,20 @@ UpplReturnCode Kt_LogicalPort::PerformSyntaxValidation( string value = reinterpret_cast(key->domain_key.ctr_key.controller_name); IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->domain_key.domain_name); IS_VALID_STRING_KEY(DOMAIN_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->port_id); IS_VALID_STRING_KEY(LP_PORT_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate value structure if (val_struct != NULL) { @@ -612,16 +613,16 @@ UpplReturnCode Kt_LogicalPort::PerformSyntaxValidation( string value = reinterpret_cast(val_lp->description); IS_VALID_STRING_VALUE(LP_DESCRIPTION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate port_type valid_val = PhyUtil::uint8touint(val_lp->valid[kIdxLogicalPortType]); if (valid_val == UNC_VF_VALID) { ret_code = ValidatePortType(val_lp->port_type); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } @@ -630,8 +631,8 @@ UpplReturnCode Kt_LogicalPort::PerformSyntaxValidation( valid_val = PhyUtil::uint8touint(val_lp->valid[kIdxLogicalPortSwitchId]); IS_VALID_STRING_VALUE(LP_SWITCH_ID_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate physical port id @@ -646,8 +647,8 @@ UpplReturnCode Kt_LogicalPort::PerformSyntaxValidation( valid[kIdxLogicalPortOperDownCriteria]); IS_VALID_INT_VALUE(LP_OPER_DOWN_CRITERIA_STR, val_lp->oper_down_criteria, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } return ret_code; @@ -665,17 +666,17 @@ UpplReturnCode Kt_LogicalPort::PerformSyntaxValidation( * data_type - indicates the data base type i.e UNC_DT_STATE * or UNC_DT_IMPORT * @return : return code of the semantic validation will be returned - * UPPL_RC_SUCCESS - if Semantic Validation is success - * UPPL_RC_ERR_* - if semantic validation is failure + * UNC_RC_SUCCESS - if Semantic Validation is success + * UNC_UPPL_RC_ERR_* - if semantic validation is failure **/ -UpplReturnCode Kt_LogicalPort::PerformSemanticValidation( +UncRespCode Kt_LogicalPort::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_info("Inside PerformSemanticValidation of KT_LOGICAL_PORT"); - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; key_logical_port *obj_key = reinterpret_cast(key_struct); @@ -689,41 +690,41 @@ UpplReturnCode Kt_LogicalPort::PerformSemanticValidation( sw_vect_key_value.push_back(domain_name); sw_vect_key_value.push_back(port_id); - UpplReturnCode KeyStatus = IsKeyExists( + UncRespCode KeyStatus = IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, sw_vect_key_value); pfc_log_debug("IsKeyExists status %d", KeyStatus); if (operation == UNC_OP_CREATE) { - if (KeyStatus == UPPL_RC_SUCCESS) { + if (KeyStatus == UNC_RC_SUCCESS) { pfc_log_error("Key instance already exists"); pfc_log_error("Hence create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; } else { pfc_log_info("key instance not exist create operation allowed"); } } else if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { // In case of update/delete/read operation, key should exist - if (KeyStatus != UPPL_RC_SUCCESS) { + if (KeyStatus != UNC_RC_SUCCESS) { pfc_log_error("Key instance does not exist"); pfc_log_error("Hence update/delete/read operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { pfc_log_info( "key instance exist update/del/read operation allowed"); } } - if (operation == UNC_OP_CREATE && status == UPPL_RC_SUCCESS) { + if (operation == UNC_OP_CREATE && status == UNC_RC_SUCCESS) { vector parent_vect_key_value; parent_vect_key_value.push_back(controller_name); parent_vect_key_value.push_back(domain_name); Kt_Ctr_Domain KtObj; - UpplReturnCode parent_key_status = KtObj.IsKeyExists( + UncRespCode parent_key_status = KtObj.IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, parent_vect_key_value); pfc_log_debug("Parent IsKeyExists status %d", parent_key_status); - if (parent_key_status != UPPL_RC_SUCCESS) { - status = UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; + if (parent_key_status != UNC_RC_SUCCESS) { + status = UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; } } pfc_log_debug("Return Code SemanticValidation: %d", status); @@ -742,34 +743,34 @@ UpplReturnCode Kt_LogicalPort::PerformSemanticValidation( * value_struct - void pointer to be type cast into logical * port value structure type * @return : the oper status result from db will be returned - * UPPL_RC_SUCCESS - in case oper status is received from DB - * UPPL_RC_ERR_* - if unable to receive oper status from DB + * UNC_RC_SUCCESS - in case oper status is received from DB + * UNC_UPPL_RC_ERR_* - if unable to receive oper status from DB **/ -UpplReturnCode Kt_LogicalPort::HandleDriverAlarms( +UncRespCode Kt_LogicalPort::HandleDriverAlarms( OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; // Following alarms are sent for kt_logicalport if (alarm_type != UNC_SUBDOMAIN_SPLIT) { pfc_log_info("%d alarm received for logical port is ignored", alarm_type); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("UNC_SUBDOMAIN_SPLIT alarm sent by driver"); uint8_t oper_status_db = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, oper_status_db); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("Unable to get current oper_status from db"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (oper_status_db == UPPL_LOGICAL_PORT_OPER_UNKNOWN) { pfc_log_info("Logical Port oper is unknown, not processing alarm"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } UpplLogicalPortOperStatus old_oper_status = (UpplLogicalPortOperStatus)oper_status_db; @@ -784,7 +785,7 @@ UpplReturnCode Kt_LogicalPort::HandleDriverAlarms( pfc_log_info("Oper_status to be set to db: %d", new_oper_status); if (new_oper_status == old_oper_status) { pfc_log_debug("Old and new oper status are same, so do nothing"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (new_oper_status == UPPL_LOGICAL_PORT_OPER_UP) { GetOperStatusFromOperDownCriteria(db_conn, data_type, @@ -795,21 +796,21 @@ UpplReturnCode Kt_LogicalPort::HandleDriverAlarms( pfc_log_info("Oper_status to be set to db: %d", new_oper_status); if (new_oper_status == old_oper_status) { pfc_log_debug("Old and new oper status are same, so do nothing"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Set oper_status update in DB status = SetOperStatus(db_conn, data_type, key_struct, NULL, new_oper_status); pfc_log_debug("Update oper_status return: %d", status); - if (status == UPPL_RC_SUCCESS) { + if (status == UNC_RC_SUCCESS) { // Call NotifyOperStatus of referred key types key_logical_port_t *key_lp = reinterpret_cast (key_struct); string controller_name = (const char*)(key_lp->domain_key.ctr_key.controller_name); vector ref_oper_status; - GET_ADD_CTRL_OPER_STATUS(controller_name); + GET_ADD_CTRL_OPER_STATUS(controller_name, ref_oper_status); ADD_LP_PORT_OPER_STATUS(*key_lp, - new_oper_status); + new_oper_status, ref_oper_status); status = NotifyOperStatus(db_conn, data_type, key_struct, val_struct, ref_oper_status); pfc_log_debug("Notify oper_status return: %d", status); @@ -827,24 +828,22 @@ UpplReturnCode Kt_LogicalPort::HandleDriverAlarms( * type * value struct - void pointer to be cast into logical port * value type - * @return : UPPL_RC_SUCCESS - if oper status update in db is successful - * UPPL_RC_ERR_* - if oper status update in db is failure + * @return : UNC_RC_SUCCESS - if oper status update in db is successful + * UNC_UPPL_RC_ERR_* - if oper status update in db is failure **/ -UpplReturnCode Kt_LogicalPort::HandleOperStatus( +UncRespCode Kt_LogicalPort::HandleOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status, unc_key_type_t caller_kt) { - FN_START_TIME("HandleOperStatus", "LogicalPort"); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; pfc_log_debug("LogicalPort Handle Oper Status Enter"); if (key_struct == NULL) { pfc_log_debug("Key struct is not available in request"); - return_code = UPPL_RC_ERR_BAD_REQUEST; - FN_END_TIME("HandleOperStatus", "LogicalPort"); + return_code = UNC_UPPL_RC_ERR_BAD_REQUEST; return return_code; } key_logical_port_t *obj_key_logical_port = @@ -894,19 +893,18 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( memset(&ctr_key, '\0', sizeof(key_ctr_t)); memcpy(ctr_key.controller_name, controller_name.c_str(), (controller_name.length())+1); - UpplReturnCode read_oper_status = get_oper_status( + UncRespCode read_oper_status = get_oper_status( ref_oper_status, UNC_KT_CONTROLLER, reinterpret_cast(&ctr_key), ctrl_oper_status); - if (read_oper_status != UPPL_RC_SUCCESS) { + if (read_oper_status != UNC_RC_SUCCESS) { Kt_Controller controller; - UpplReturnCode read_status = controller.GetOperStatus( + UncRespCode read_status = controller.GetOperStatus( db_conn, data_type, reinterpret_cast(&ctr_key), ctrl_oper_status); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("Controller's oper_status read returned failure"); - FN_END_TIME("HandleOperStatus", "LogicalPort"); return return_code; } } @@ -924,7 +922,6 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( // Notify referred classes return_code = NotifyOperStatus(db_conn, data_type, key_struct, NULL, ref_oper_status); - FN_END_TIME("HandleOperStatus", "LogicalPort"); return return_code; } pfc_log_info("Controller's oper_status %d", ctrl_oper_status); @@ -943,8 +940,8 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( UNC_KT_SWITCH, reinterpret_cast(&switch_key), switch_oper_status); - UpplReturnCode read_status = UPPL_RC_SUCCESS; - if (read_oper_status != UPPL_RC_SUCCESS) { + UncRespCode read_status = UNC_RC_SUCCESS; + if (read_oper_status != UNC_RC_SUCCESS) { // get switch oper status: logical_port_oper_status = UPPL_LOGICAL_PORT_OPER_UNKNOWN; @@ -953,8 +950,8 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( db_conn, data_type, reinterpret_cast(&switch_key), switch_oper_status); } - if (read_oper_status == UPPL_RC_SUCCESS || - read_status == UPPL_RC_SUCCESS) { + if (read_oper_status == UNC_RC_SUCCESS || + read_status == UNC_RC_SUCCESS) { pfc_log_info("switch oper_status %d", switch_oper_status); if (switch_oper_status == (UpplSwitchOperStatus) UPPL_SWITCH_OPER_UP) { @@ -992,7 +989,7 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( reinterpret_cast (&(*keyItr)), value_struct, logical_port_oper_status); - if (return_code != UPPL_RC_SUCCESS) { + if (return_code != UNC_RC_SUCCESS) { ++keyItr; continue; } @@ -1001,7 +998,7 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( } else if (caller_kt != UNC_KT_SWITCH) { // Check oper_status of associated port uint8_t port_oper_status = 0; - UpplReturnCode port_status = UPPL_RC_SUCCESS; + UncRespCode port_status = UNC_RC_SUCCESS; key_port_t obj_key_port; memset(&obj_key_port, '\0', sizeof(key_port_t)); memcpy(obj_key_port.sw_key.ctr_key.controller_name, @@ -1017,13 +1014,13 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( UNC_KT_PORT, reinterpret_cast(&obj_key_port), port_oper_status); - if (read_oper_status != UPPL_RC_SUCCESS) { + if (read_oper_status != UNC_RC_SUCCESS) { port_status = GetPortOperStatus( db_conn, obj_key_port, &port_oper_status, data_type); } - if ((read_oper_status == UPPL_RC_SUCCESS || - port_status == UPPL_RC_SUCCESS) && + if ((read_oper_status == UNC_RC_SUCCESS || + port_status == UNC_RC_SUCCESS) && port_oper_status == UPPL_PORT_OPER_DOWN) { logical_port_oper_status = UPPL_LOGICAL_PORT_OPER_DOWN; } @@ -1042,10 +1039,12 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( vector::iterator keyItr = vectLogicalPortKey.begin(); for (; keyItr != vectLogicalPortKey.end(); ++keyItr) { - if (return_code == UPPL_RC_SUCCESS) { + if (return_code == UNC_RC_SUCCESS) { // Call referred classes' notify oper_status functions key_logical_port_t key_lp = (*keyItr); - ADD_LP_PORT_OPER_STATUS(key_lp, logical_port_oper_status); + ADD_LP_PORT_OPER_STATUS(key_lp, + logical_port_oper_status, + ref_oper_status); return_code = NotifyOperStatus( db_conn, data_type, reinterpret_cast (&(*keyItr)), NULL, ref_oper_status); @@ -1058,7 +1057,6 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( pfc_log_debug("Logicalport sibling count is 0"); } pfc_log_debug("LogicalPort Handle Oper Status End"); - FN_END_TIME("HandleOperStatus", "LogicalPort"); return return_code; } @@ -1073,10 +1071,10 @@ UpplReturnCode Kt_LogicalPort::HandleOperStatus( * value type * logical_port_oper_status - indicates the logical port oper * status i.e. either UP or DOWN - * @return : UPPL_RC_SUCCESS - if port oper status is retrieved correctly - * UPPL_RC_ERR_* - if port oper status cannot be retrieved + * @return : UNC_RC_SUCCESS - if port oper status is retrieved correctly + * UNC_UPPL_RC_ERR_* - if port oper status cannot be retrieved **/ -UpplReturnCode Kt_LogicalPort::GetOperStatusFromOperDownCriteria( +UncRespCode Kt_LogicalPort::GetOperStatusFromOperDownCriteria( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, @@ -1090,10 +1088,10 @@ UpplReturnCode Kt_LogicalPort::GetOperStatusFromOperDownCriteria( value_struct, vectOperStatus, PFC_FALSE); // get oper down from DB - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; return_code = GetOperDownCriteria(db_conn, data_type, key_struct, oper_down_criteria); - if (return_code != UPPL_RC_SUCCESS) { + if (return_code != UNC_RC_SUCCESS) { pfc_log_info("Logicalport OperStatusFromOperDownCriteria read error"); return return_code; } @@ -1134,7 +1132,7 @@ UpplReturnCode Kt_LogicalPort::GetOperStatusFromOperDownCriteria( pfc_log_debug("Logicalport OperStatusFromOperDownCriteria Any status:%d", logical_port_oper_status); } else { - return_code = UPPL_RC_ERR_BAD_REQUEST; + return_code = UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_debug("Exit logical port OperStatusFromOperDownCriteria"); return return_code; @@ -1152,10 +1150,10 @@ UpplReturnCode Kt_LogicalPort::GetOperStatusFromOperDownCriteria( * vectOperStatus - vector to hold the oper status of port * is_delete_call - bool variable to check whether delete call * is madwe by the parent class - * @return : UPPL_RC_SUCCESS - if port oper status is read correctly - * UPPL_RC_ERR_* - if port oper status read returned failure + * @return : UNC_RC_SUCCESS - if port oper status is read correctly + * UNC_UPPL_RC_ERR_* - if port oper status read returned failure **/ -UpplReturnCode Kt_LogicalPort::HandleOperDownCriteriaFromPortStatus( +UncRespCode Kt_LogicalPort::HandleOperDownCriteriaFromPortStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, @@ -1163,11 +1161,11 @@ UpplReturnCode Kt_LogicalPort::HandleOperDownCriteriaFromPortStatus( vector &vectOperStatus, pfc_bool_t is_delete_call) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; pfc_log_debug("Entering Logical port Handle OperDownCriteriaFromPortStatus"); if (key_struct == NULL) { - return_code = UPPL_RC_ERR_BAD_REQUEST; + return_code = UNC_UPPL_RC_ERR_BAD_REQUEST; return return_code; } key_logical_port_t *obj_key_logical_port = @@ -1280,7 +1278,7 @@ UpplReturnCode Kt_LogicalPort::HandleOperDownCriteriaFromPortStatus( } } - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; Kt_Port port; key_port_t obj_key_port; string port_controller_name = (const char*) logical_memeber_port. @@ -1325,7 +1323,7 @@ UpplReturnCode Kt_LogicalPort::HandleOperDownCriteriaFromPortStatus( read_status = port.GetOperStatus( db_conn, data_type, reinterpret_cast(&obj_key_port), port_oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { pfc_log_debug("port oper_status in logport: %d", port_oper_status); vectOperStatus.push_back(port_oper_status); } else { @@ -1349,11 +1347,11 @@ UpplReturnCode Kt_LogicalPort::HandleOperDownCriteriaFromPortStatus( * key_struct - void pointer to be cast into logical port key * type * oper_down_criteria - specifies the oper down criteria - * @return : UPPL_RC_SUCCESS - if oper down read criteria from db is + * @return : UNC_RC_SUCCESS - if oper down read criteria from db is * success - * UPPL_RC_ERR_* - if oper down read criteria from db is failure + * UNC_UPPL_RC_ERR_* - if oper down read criteria from db is failure **/ -UpplReturnCode Kt_LogicalPort::GetOperDownCriteria( +UncRespCode Kt_LogicalPort::GetOperDownCriteria( OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, @@ -1417,7 +1415,7 @@ UpplReturnCode Kt_LogicalPort::GetOperDownCriteria( if (read_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("oper down criteria read operation failed"); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper_down_criteria value @@ -1447,7 +1445,7 @@ UpplReturnCode Kt_LogicalPort::GetOperDownCriteria( } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1456,15 +1454,15 @@ UpplReturnCode Kt_LogicalPort::GetOperDownCriteria( * or UNC_DT_IMPORT * key_struct - void pointer to be type cast into logical port * key type - * @return : UPPL_RC_SUCCESS - if boundary oper status is changed in DB - * UPPL_RC_ERR_* - if there are no boundaries associated with + * @return : UNC_RC_SUCCESS - if boundary oper status is changed in DB + * UNC_UPPL_RC_ERR_* - if there are no boundaries associated with * the controller name **/ -UpplReturnCode Kt_LogicalPort::InvokeBoundaryNotifyOperStatus( +UncRespCode Kt_LogicalPort::InvokeBoundaryNotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; key_logical_port_t *obj_key_logical_port = reinterpret_cast(key_struct); @@ -1476,11 +1474,13 @@ UpplReturnCode Kt_LogicalPort::InvokeBoundaryNotifyOperStatus( (const char*)obj_key_logical_port->port_id; vector ref_oper_status; // Get controller oper status - GET_ADD_CTRL_OPER_STATUS(controller_name); + GET_ADD_CTRL_OPER_STATUS(controller_name, ref_oper_status); uint8_t lp_oper_status = 0; read_status = GetOperStatus( db_conn, data_type, key_struct, lp_oper_status); - ADD_LP_PORT_OPER_STATUS(*obj_key_logical_port, lp_oper_status); + ADD_LP_PORT_OPER_STATUS(*obj_key_logical_port, + lp_oper_status, + ref_oper_status); // Notify UNC_KT_BOUNDARY Kt_Boundary boundary; val_boundary_t obj_val_boundary1; @@ -1529,18 +1529,18 @@ UpplReturnCode Kt_LogicalPort::InvokeBoundaryNotifyOperStatus( * port key type * value_struct - void pointer type to be type cast into logical * port key type - * @return : UPPL_RC_SUCCESS - if the oper status notification in key type + * @return : UNC_RC_SUCCESS - if the oper status notification in key type * boundary is changed successfully - * UPPL_RC_ERR_* - if the oper status notification in key type + * UNC_UPPL_RC_ERR_* - if the oper status notification in key type * boundary fails **/ -UpplReturnCode Kt_LogicalPort::NotifyOperStatus( +UncRespCode Kt_LogicalPort::NotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; key_logical_port_t *obj_key_logical_port = reinterpret_cast(key_struct); @@ -1612,11 +1612,11 @@ UpplReturnCode Kt_LogicalPort::NotifyOperStatus( * key_struct - void pointer type to be type cast into logical * port key type * oper_status - Stores the oper status received from DB - * @return : UPPL_RC_SUCCESS - if oper status is reads successfully from + * @return : UNC_RC_SUCCESS - if oper status is reads successfully from * the DB - * UPPL_RC_ERR_DB_GET if oper staus read operation failed from DB + * UNC_UPPL_RC_ERR_DB_GET if oper staus read operation failed from DB **/ -UpplReturnCode Kt_LogicalPort::GetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_LogicalPort::GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status) { @@ -1669,7 +1669,7 @@ UpplReturnCode Kt_LogicalPort::GetOperStatus(OdbcmConnectionHandler *db_conn, if (read_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("oper_status read operation failed"); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper_status value @@ -1699,7 +1699,7 @@ UpplReturnCode Kt_LogicalPort::GetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1714,7 +1714,7 @@ UpplReturnCode Kt_LogicalPort::GetOperStatus(OdbcmConnectionHandler *db_conn, * oper_statuus - value of oper status to be updated in DB * @return : Success or associated error code **/ -UpplReturnCode Kt_LogicalPort::SetOperStatus( +UncRespCode Kt_LogicalPort::SetOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, @@ -1727,7 +1727,7 @@ UpplReturnCode Kt_LogicalPort::SetOperStatus( reinterpret_cast(val_struct); // Get existing oper_status uint8_t old_oper_status = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, old_oper_status); vector vect_table_attr_schema; @@ -1786,9 +1786,9 @@ UpplReturnCode Kt_LogicalPort::SetOperStatus( vect_table_attr_schema); string valid_flag; // Update valid flag as well - UpplReturnCode get_ret = GetValidFlag(db_conn, data_type, + UncRespCode get_ret = GetValidFlag(db_conn, data_type, key_struct, &valid_flag); - if (get_ret == UPPL_RC_SUCCESS) { + if (get_ret == UNC_RC_SUCCESS) { string new_valid = valid_flag.substr(0, 5); new_valid += "1"; pfc_log_debug("New Valid to be set: %s", new_valid.c_str()); @@ -1813,10 +1813,10 @@ UpplReturnCode Kt_LogicalPort::SetOperStatus( } else if (update_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("oper_status update operation failed"); - return UPPL_RC_ERR_DB_UPDATE; + return UNC_UPPL_RC_ERR_DB_UPDATE; } else if (old_oper_status != oper_status) { // Notify operstatus change to northbound - if (read_status == UPPL_RC_SUCCESS && data_type != UNC_DT_IMPORT) { + if (read_status == UNC_RC_SUCCESS && data_type != UNC_DT_IMPORT) { val_logical_port_st old_val_logical_port, new_val_logical_port; memset(&old_val_logical_port, 0, sizeof(val_logical_port_st)); memset(&new_val_logical_port, 0, sizeof(val_logical_port_st)); @@ -1843,7 +1843,7 @@ UpplReturnCode Kt_LogicalPort::SetOperStatus( (IpctUtil::get_string(old_val_logical_port)).c_str()); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Notify operstatus modifications - UpplReturnCode status = (UpplReturnCode) physical_layer + UncRespCode status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); pfc_log_debug("Event notification status %d", status); } else { @@ -1851,7 +1851,7 @@ UpplReturnCode Kt_LogicalPort::SetOperStatus( } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1860,19 +1860,19 @@ UpplReturnCode Kt_LogicalPort::SetOperStatus( * or UNC_DT_IMPORT * key value - vector to hold the key structure values to be * checked in DB - * @return : UPPL_RC_SUCCESS - if the row exist in DB - * UPPL_RC_NO_SUCH_INSTANCE - if the row doesnt exist in DB + * @return : UNC_RC_SUCCESS - if the row exist in DB + * UNC_UPPL_RC_NO_SUCH_INSTANCE - if the row doesnt exist in DB **/ -UpplReturnCode Kt_LogicalPort::IsKeyExists( +UncRespCode Kt_LogicalPort::IsKeyExists( OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_error("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = key_values[0]; string domain_name = key_values[1]; @@ -1920,7 +1920,7 @@ UpplReturnCode Kt_LogicalPort::IsKeyExists( pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + check_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } return check_status; } @@ -1930,13 +1930,13 @@ UpplReturnCode Kt_LogicalPort::IsKeyExists( * given key struct, value struct, data_type, operation, * option1 and option * @param[in] : kt_logicalport_dbtableschema - object of type DBTableSchema - * key_struct - void pointer to be type cast into logical port key type - * val_struct - void pointer to be type cast into logical port value type - * operation_type - specifies the operation type i.e - * UNC_OP_READ or - * UNC_OP_READ_SIBLING_BEGIN etc - * option1/option2 - specifies any additional option for populating in DB - * vect_key_operations - vector of type ODBCMOperator + * key_struct - void pointer to be type cast into logical port key type + * val_struct - void pointer to be type cast into logical port value type + * operation_type - specifies the operation type i.e + * UNC_OP_READ or + * UNC_OP_READ_SIBLING_BEGIN etc + * option1/option2 - specifies any additional option for populating in DB + * vect_key_operations - vector of type ODBCMOperator * old_value_struct - holds the old value structure of the * logical port key type * row_status - enum indicating the row status of logicalport @@ -2281,8 +2281,12 @@ void Kt_LogicalPort::FillLogicalPortValueStructure( memset(lp_valid, '\0', sizeof(lp_valid)); PhyUtil::GetValueFromDbSchemaStr(tab_schema, lp_valid, DATATYPE_UINT8_ARRAY_6); - memset(obj_val_logical_port_st.valid, '\0', sizeof(obj_val_logical_port_st.valid)); - memset(obj_val_logical_port.valid, '\0', sizeof(obj_val_logical_port.valid)); + memset(obj_val_logical_port_st.valid, + '\0', + sizeof(obj_val_logical_port_st.valid)); + memset(obj_val_logical_port.valid, + '\0', + sizeof(obj_val_logical_port.valid)); FrameValidValue(reinterpret_cast (lp_valid), obj_val_logical_port_st, obj_val_logical_port); @@ -2301,10 +2305,10 @@ void Kt_LogicalPort::FillLogicalPortValueStructure( vect_obj_val_logical_port.push_back(obj_val_logical_port_st); // populate key structure vect_logical_port_id.push_back(obj_key_logical_port); - pfc_log_debug("result - vect_obj_val_logical_port size: %d", - (unsigned int) vect_obj_val_logical_port.size()); - pfc_log_debug("result - vect_logical_port_id size: %d", - (unsigned int) vect_logical_port_id.size()); + pfc_log_debug("result - vect_obj_val_logical_port size: %" + PFC_PFMT_SIZE_T, vect_obj_val_logical_port.size()); + pfc_log_debug("result - vect_logical_port_id size: %" + PFC_PFMT_SIZE_T, vect_logical_port_id.size()); } return; } @@ -2326,10 +2330,10 @@ void Kt_LogicalPort::FillLogicalPortValueStructure( * option1,option2 - specifies any additional condition for read * operation * max_rep_ct - indicates the maximum repetition count - * @return : UPPL_RC_SUCCESS - if the read operation is successful - * UPPL_RC_ERR_* - read operation failed + * @return : UNC_RC_SUCCESS - if the read operation is successful + * UNC_UPPL_RC_ERR_* - read operation failed **/ -UpplReturnCode Kt_LogicalPort::PerformRead( +UncRespCode Kt_LogicalPort::PerformRead( OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, @@ -2359,41 +2363,41 @@ UpplReturnCode Kt_LogicalPort::PerformRead( // Invalid operation if (option1 != UNC_OPT1_NORMAL) { pfc_log_error("PerformRead provided on unsupported option1"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LOGICAL_PORT); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (option2 != UNC_OPT2_NONE) { pfc_log_error("PerformRead provided on unsupported option2"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION2; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION2; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LOGICAL_PORT); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { pfc_log_error("Read operation is provided on unsupported data type"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_LOGICAL_PORT); err |= sess.addOutput(*obj_key_logical_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Read operations will return logical_port_st based on modified fd vector vect_logicalport_id; @@ -2413,11 +2417,11 @@ UpplReturnCode Kt_LogicalPort::PerformRead( int err = PhyUtil::sessOutRespHeader(sess, rsh); if (err != 0) { pfc_log_error("Failure in addOutput"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } pfc_log_debug("read status val in performread = %d", read_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int index = 0; index < vect_logicalport_id.size(); ++index) { sess.addOutput((uint32_t)UNC_KT_LOGICAL_PORT); @@ -2436,7 +2440,7 @@ UpplReturnCode Kt_LogicalPort::PerformRead( } pfc_log_debug("Perform Read completed"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ReadLogicalPortValFromDB * @Description : This function is used to read KT_LOGICAL_PORT instance in @@ -2455,10 +2459,10 @@ UpplReturnCode Kt_LogicalPort::PerformRead( * val_logical_port_st_t structure * logicalport_id - vector of type key_logical_port_t to store * the logical port id - * @return : UPPL_RC_SUCCESS - read operation is success - * UPPL_RC_ERR_DB_GET - read operation is failure + * @return : UNC_RC_SUCCESS - read operation is success + * UNC_UPPL_RC_ERR_DB_GET - read operation is failure **/ -UpplReturnCode Kt_LogicalPort::ReadLogicalPortValFromDB( +UncRespCode Kt_LogicalPort::ReadLogicalPortValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -2470,10 +2474,10 @@ UpplReturnCode Kt_LogicalPort::ReadLogicalPortValFromDB( vector &logicalport_id) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_logicalport_dbtableschema; void* old_value_struct; @@ -2496,14 +2500,14 @@ UpplReturnCode Kt_LogicalPort::ReadLogicalPortValFromDB( } if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; @@ -2513,12 +2517,13 @@ UpplReturnCode Kt_LogicalPort::ReadLogicalPortValFromDB( max_rep_ct, operation_type, logicalport_id); - pfc_log_debug("vect_val_logical_port_st size: %d", - (unsigned int)vect_val_logical_port_st.size()); - pfc_log_debug("logicalport_id size: %d", (unsigned int)logicalport_id.size()); + pfc_log_debug("vect_val_logical_port_st size: %" + PFC_PFMT_SIZE_T, vect_val_logical_port_st.size()); + pfc_log_debug("logicalport_id size: %" PFC_PFMT_SIZE_T, + logicalport_id.size()); if (vect_val_logical_port_st.empty()) { // Read failed , return error - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed after reading response"); return read_status; @@ -2765,15 +2770,15 @@ void Kt_LogicalPort::GetAllPortId(OdbcmConnectionHandler *db_conn, * logical port key type * val_logical_port_valid_st - value structure of logical port * key type - * @return : UPPL_RC_SUCCESS - value structure read from DB is success - * UPPL_RC_ERR_* - value structure read from DB is failure + * @return : UNC_RC_SUCCESS - value structure read from DB is success + * UNC_UPPL_RC_ERR_* - value structure read from DB is failure **/ -UpplReturnCode Kt_LogicalPort::GetLogicalPortValidFlag( +UncRespCode Kt_LogicalPort::GetLogicalPortValidFlag( OdbcmConnectionHandler *db_conn, void *key_struct, val_logical_port_st_t &val_logical_port_valid_st, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; // read the value structure from db vector vectVal_logicalport; vector vectkey_logicalport; @@ -2781,7 +2786,7 @@ UpplReturnCode Kt_LogicalPort::GetLogicalPortValidFlag( return_code = ReadInternal(db_conn, vectkey_logicalport, vectVal_logicalport, data_type, UNC_OP_READ); - if (return_code == UPPL_RC_SUCCESS) { + if (return_code == UNC_RC_SUCCESS) { val_logical_port_st_t *obj_new_logicalport_val_vect = reinterpret_cast (vectVal_logicalport[0]); if (obj_new_logicalport_val_vect != NULL) { @@ -2834,11 +2839,11 @@ void Kt_LogicalPort::FrameValidValue( * key_struct - void pointer type to be type cast to logical port * key structure * valid_flag - string pointer to hold the valid flag - * @return : UPPL_RC_SUCCESS - if valid flag is received from db - * UPPL_RC_DB_GET - if there is error in receiving the valid + * @return : UNC_RC_SUCCESS - if valid flag is received from db + * UNC_UPPL_RC_DB_GET - if there is error in receiving the valid * flag from DB **/ -UpplReturnCode Kt_LogicalPort::GetValidFlag( +UncRespCode Kt_LogicalPort::GetValidFlag( OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, @@ -2898,7 +2903,7 @@ UpplReturnCode Kt_LogicalPort::GetValidFlag( if (read_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("valid flag read operation failed"); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the valid value @@ -2927,7 +2932,7 @@ UpplReturnCode Kt_LogicalPort::GetValidFlag( } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -2937,18 +2942,18 @@ UpplReturnCode Kt_LogicalPort::GetValidFlag( * key_logical_port_t * port_oper_status - poiter to store the oper status * data_type - indicates the data base type - * @return : UPPL_RC_SUCCESS - if oper status value is received from DB - * UPPL_RC_ERR_* - if there is failure in receiving oper status + * @return : UNC_RC_SUCCESS - if oper status value is received from DB + * UNC_UPPL_RC_ERR_* - if there is failure in receiving oper status * value from DB **/ -UpplReturnCode Kt_LogicalPort::GetPortOperStatus( +UncRespCode Kt_LogicalPort::GetPortOperStatus( OdbcmConnectionHandler *db_conn, key_port_t &obj_key_port, uint8_t *port_oper_status, uint32_t data_type) { pfc_log_debug("Decide oper_status based on physical port oper_status"); Kt_Port port; - UpplReturnCode read_status = port.GetOperStatus( + UncRespCode read_status = port.GetOperStatus( db_conn, data_type, reinterpret_cast(&obj_key_port), *port_oper_status); pfc_log_debug("Oper Status return %d, value %d", read_status, @@ -2960,11 +2965,11 @@ UpplReturnCode Kt_LogicalPort::GetPortOperStatus( * @Description : This function gets all the logical ports associated with * given controller/domain/switch * @param[in] : controller_name - string to store the controller_name - * domain_name - string to store the domain_name - * switch_id - string to store the switch_id - * phy_port_id - string to store the physical port id - * vectLogicalPortKey - vector of type key_logical_port_t - * data_type - indicates the data base type UNC_DT_* + * domain_name - string to store the domain_name + * switch_id - string to store the switch_id + * phy_port_id - string to store the physical port id + * vectLogicalPortKey - vector of type key_logical_port_t + * data_type - indicates the data base type UNC_DT_* * @return : None **/ void Kt_LogicalPort::GetAllLogicalPort( @@ -3081,14 +3086,14 @@ void Kt_LogicalPort::GetAllLogicalPort( * @return : Success if port type is within allowed values or * else return failure **/ -UpplReturnCode Kt_LogicalPort::ValidatePortType(uint8_t port_type) { +UncRespCode Kt_LogicalPort::ValidatePortType(uint8_t port_type) { if (port_type == UPPL_LP_SWITCH || port_type == UPPL_LP_PHYSICAL_PORT || port_type == UPPL_LP_TRUNK_PORT || port_type == UPPL_LP_SUBDOMAIN || port_type == UPPL_LP_TUNNEL_ENDPOINT) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } pfc_log_info("Invalid Logical Port Type provided %d", port_type); - return UPPL_RC_ERR_CFG_SYNTAX; + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } diff --git a/coordinator/modules/uppl/itc_kt_port.cc b/coordinator/modules/uppl/itc_kt_port.cc index 7a19dd2c..df8401f5 100644 --- a/coordinator/modules/uppl/itc_kt_port.cc +++ b/coordinator/modules/uppl/itc_kt_port.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -19,9 +19,12 @@ #include "itc_kt_logicalport.hh" #include "itc_kt_link.hh" #include "odbcm_utils.hh" +#include "ipct_util.hh" #include "itc_read_request.hh" #include "odbcm_db_varbind.hh" using unc::uppl::PhysicalLayer; +using unc::uppl::IPCClientDriverHandler; + /** * @Description : This function initializes member variables * and fills the attribute syntax map used for validation @@ -50,22 +53,22 @@ Kt_Port::~Kt_Port() { * data_type - indicates the data base type,UNC_DT_* delete only * allowed in STATE * key_type - indicates the Key Type Class - * @return : UPPL_RC_SUCCESS is returned when the delete of a port in + * @return : UNC_RC_SUCCESS is returned when the delete of a port in * running db is successful - * UPPL_RC_ERR_* is returned when the delete is failure + * UNC_UPPL_RC_ERR_* is returned when the delete is failure * */ -UpplReturnCode Kt_Port::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Check whether operation is allowed on the given DT type if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE && (unc_keytype_datatype_t)data_type != UNC_DT_IMPORT) { pfc_log_error("Delete operation is provided on unsupported data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } key_port_t *obj_key_port= reinterpret_cast(key_struct); @@ -107,9 +110,9 @@ UpplReturnCode Kt_Port::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, vector val_struct; key_val.push_back(reinterpret_cast(&logical_port_key_obj)); val_struct.push_back(reinterpret_cast(&logical_port_st_val_obj)); - UpplReturnCode lp_read_status = logical_port_obj.ReadInternal( + UncRespCode lp_read_status = logical_port_obj.ReadInternal( db_conn, key_val, val_struct, data_type, UNC_OP_READ); - if (lp_read_status == UPPL_RC_SUCCESS) { + if (lp_read_status == UNC_RC_SUCCESS) { // form key struct with all required primary keys and call delete logical_port_obj.DeleteKeyInstance( db_conn, key_val[0], @@ -173,18 +176,18 @@ UpplReturnCode Kt_Port::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (delete_db_status == ODBCM_RC_ROW_NOT_EXISTS) { pfc_log_error("given instance does not exist"); - delete_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + delete_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { // log error to log daemon - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else { pfc_log_info("Delete of a port in data_type(%d) is success", data_type); - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } return delete_status; } @@ -197,11 +200,11 @@ UpplReturnCode Kt_Port::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, * read allowed in DT_STATE * operation_type - indicates the operation type for * read operation - * @return : UPPL_RC_SUCCESS is returned when read operation is success on + * @return : UNC_RC_SUCCESS is returned when read operation is success on * DT_STATE db - * UPPL_RC_ERR_* is returned when read operation is failure + * UNC_UPPL_RC_ERR_* is returned when read operation is failure **/ -UpplReturnCode Kt_Port::ReadInternal(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, @@ -219,7 +222,7 @@ UpplReturnCode Kt_Port::ReadInternal(OdbcmConnectionHandler *db_conn, if (!val_struct.empty()) { void_val_struct = val_struct[0]; } - UpplReturnCode read_status = ReadPortValFromDB(db_conn, + UncRespCode read_status = ReadPortValFromDB(db_conn, key_struct, void_val_struct, data_type, @@ -229,12 +232,12 @@ UpplReturnCode Kt_Port::ReadInternal(OdbcmConnectionHandler *db_conn, vect_port_id); key_val.clear(); val_struct.clear(); - pfc_log_info("ReadPortValFromDB returned %d with response size %d", - read_status, - static_cast(vect_val_port_st.size())); - if (read_status == UPPL_RC_SUCCESS) { - pfc_log_debug("ReadPortValFromDB returned %d with response size %d", - read_status, static_cast(vect_val_port_st.size())); + pfc_log_info("ReadPortValFromDB returned %d with response size %" + PFC_PFMT_SIZE_T, read_status, + vect_val_port_st.size()); + if (read_status == UNC_RC_SUCCESS) { + pfc_log_debug("ReadPortValFromDB returned %d with response size %" + PFC_PFMT_SIZE_T, read_status, vect_val_port_st.size()); for (unsigned int iIndex = 0 ; iIndex < vect_val_port_st.size(); ++iIndex) { key_port_t *key_port = new key_port_t(vect_port_id[iIndex]); @@ -258,11 +261,11 @@ UpplReturnCode Kt_Port::ReadInternal(OdbcmConnectionHandler *db_conn, * readbulk * is_read_next - indicates whether this function is invoked * from readnext - * @return : UPPL_RC_SUCCESS is returned when the read bulk operation is + * @return : UNC_RC_SUCCESS is returned when the read bulk operation is * success. - * UPPL_RC_ERR_* is returned when read bulk operation is failure. + * UNC_UPPL_RC_ERR_* is returned when read bulk operation is failure. **/ -UpplReturnCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -271,11 +274,11 @@ UpplReturnCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_bool_t is_read_next, ReadRequest *read_req) { pfc_log_info("Processing ReadBulk of Kt_Port"); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_port_t *obj_key_port= reinterpret_cast(key_struct); if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { // Not supported data type - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; pfc_log_error("Operation on given data type is not allowed"); return read_status; } @@ -289,7 +292,7 @@ UpplReturnCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, reinterpret_cast(&obj_key_port->port_id); if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct is zero"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } void *val_struct = NULL; vector vect_val_port_st; @@ -304,9 +307,9 @@ UpplReturnCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, vect_val_port_st, vect_port_id); - pfc_log_debug("Read status from port is %d with result size %d", - read_status, static_cast(vect_port_id.size())); - if (read_status == UPPL_RC_SUCCESS) { + pfc_log_debug("Read status from port is %d with result size %" + PFC_PFMT_SIZE_T, read_status, vect_port_id.size()); + if (read_status == UNC_RC_SUCCESS) { vector::iterator vect_iter = vect_val_port_st.begin(); vector ::iterator port_iter = @@ -339,7 +342,7 @@ UpplReturnCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, return read_status; } } - } else if (read_status == UPPL_RC_ERR_DB_ACCESS) { + } else if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("KtPort ReadBulk - Returning DB Access Error"); return read_status; } @@ -365,9 +368,9 @@ UpplReturnCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, is_read_next, read_req); pfc_log_debug("read status from next kin Kt_Switch is %d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**ReadBulkInternal @@ -381,12 +384,12 @@ UpplReturnCode Kt_Port::ReadBulk(OdbcmConnectionHandler *db_conn, * val_port_st_t from db * vect_port_id - stores the port_id values from the key * structure of kt port - * @return : UPPL_RC_SUCCESS is returned when the read bulk operation is + * @return : UNC_RC_SUCCESS is returned when the read bulk operation is * successful. - * UPPL_RC_ERR_* is returned when the read bulk operation is + * UNC_UPPL_RC_ERR_* is returned when the read bulk operation is * failure **/ -UpplReturnCode Kt_Port::ReadBulkInternal( +UncRespCode Kt_Port::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -395,10 +398,10 @@ UpplReturnCode Kt_Port::ReadBulkInternal( vector &vect_val_port, vector &vect_port_id) { if (max_rep_ct <= 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_port_dbtableschema; void *old_struct; @@ -418,14 +421,14 @@ UpplReturnCode Kt_Port::ReadBulkInternal( pfc_log_debug("GetBulkRows return: %d", read_db_status); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; @@ -446,16 +449,16 @@ UpplReturnCode Kt_Port::ReadBulkInternal( * key type port * operation_type - UNC_OP* - indicates the operation type * data_type - UNC_DT_* - indicates the data base type - * @return : UPPL_RC_SUCCESS is returned when the validation is successful - * UPPL_RC_ERR_* is returned when validation is failure + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure **/ -UpplReturnCode Kt_Port::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_info("Performing Syntax Validation of KT_PORT"); - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_bool_t mandatory = PFC_TRUE; map attr_syntax_map = attr_syntax_map_all[UNC_KT_PORT]; @@ -464,22 +467,22 @@ UpplReturnCode Kt_Port::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, key_port *key = reinterpret_cast(key_struct); string value = reinterpret_cast(key->sw_key.ctr_key.controller_name); IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate switch_id value = reinterpret_cast(key->sw_key.switch_id); IS_VALID_STRING_KEY(SWITCH_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate port_id value = reinterpret_cast(key->port_id); IS_VALID_STRING_KEY(PORT_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate value structure @@ -491,8 +494,8 @@ UpplReturnCode Kt_Port::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, valid_val = PhyUtil::uint8touint(value_port->valid[kIdxPortNumber]); IS_VALID_INT_VALUE(PORT_NUMBER_STR, value_port->port_number, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate description @@ -500,16 +503,16 @@ UpplReturnCode Kt_Port::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, string value = reinterpret_cast(value_port->description); IS_VALID_STRING_VALUE(PORT_DESCRIPTION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate admin_status valid_val = PhyUtil::uint8touint(value_port->valid[kIdxPortAdminStatus]); IS_VALID_INT_VALUE(PORT_ADMIN_STATUS_STR, value_port->admin_status, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate trunk_allowed_vlan @@ -517,8 +520,8 @@ UpplReturnCode Kt_Port::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, PhyUtil::uint8touint(value_port->valid[kIdxPortTrunkAllowedVlan]); IS_VALID_INT_VALUE(PORT_TRUNK_ALL_VLAN_STR, value_port->trunk_allowed_vlan, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } return ret_code; @@ -532,17 +535,17 @@ UpplReturnCode Kt_Port::PerformSyntaxValidation(OdbcmConnectionHandler *db_conn, * of key type port * operation_type - UNC_OP* - indicates the operation type * data_type - UNC_DT_* - indicates the data base type - * @return : UPPL_RC_SUCCESS is returned when the semantic validation is + * @return : UNC_RC_SUCCESS is returned when the semantic validation is * successful - * UPPL_RC_ERR_* is returned when semantic validation is failure + * UNC_UPPL_RC_ERR_* is returned when semantic validation is failure * */ -UpplReturnCode Kt_Port::PerformSemanticValidation( +UncRespCode Kt_Port::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; pfc_log_debug("Inside PerformSemanticValidation of KT_PORT"); // Check whether the given instance of port exists in DB key_port *obj_key_port = reinterpret_cast(key_struct); @@ -581,39 +584,39 @@ UpplReturnCode Kt_Port::PerformSemanticValidation( vect_key_value.push_back(switch_id); vect_key_value.push_back(port_id); - UpplReturnCode key_status = IsKeyExists( + UncRespCode key_status = IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, vect_key_value); pfc_log_debug("IsKeyExists status %d", key_status); // In case of create operation, key should not exist if (operation == UNC_OP_CREATE) { - if (key_status == UPPL_RC_SUCCESS) { + if (key_status == UNC_RC_SUCCESS) { pfc_log_error("Key instance already exists"); pfc_log_error("Hence create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; } else { pfc_log_info("key instance not exist create operation allowed"); } } else if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { // In case of update/delete/read operation, key should exist - if (key_status != UPPL_RC_SUCCESS) { + if (key_status != UNC_RC_SUCCESS) { pfc_log_error("Key instance does not exist"); pfc_log_error("Hence update/delete/read operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { pfc_log_info("key instance exist update/del/read operation allowed"); } } - if (operation == UNC_OP_CREATE && status == UPPL_RC_SUCCESS) { + if (operation == UNC_OP_CREATE && status == UNC_RC_SUCCESS) { vector parent_vect_key_value; parent_vect_key_value.push_back(controller_name); parent_vect_key_value.push_back(switch_id); Kt_Switch KtObj; - UpplReturnCode parent_key_status = KtObj.IsKeyExists( + UncRespCode parent_key_status = KtObj.IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, parent_vect_key_value); pfc_log_debug("Parent IsKeyExists status %d", parent_key_status); - if (parent_key_status != UPPL_RC_SUCCESS) { - status = UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; + if (parent_key_status != UNC_RC_SUCCESS) { + status = UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; } } pfc_log_debug("Return Code SemanticValidation: %d", status); @@ -633,17 +636,17 @@ UpplReturnCode Kt_Port::PerformSemanticValidation( * value_struct - void pointer to be type cast to port value * structure type * @return : the oper status result from db will be returned - * UPPL_RC_SUCCESS - in case oper status is received from DB - * UPPL_RC_ERR_* - in case unable to receive oper status from DB + * UNC_RC_SUCCESS - in case oper status is received from DB + * UNC_UPPL_RC_ERR_* - in case unable to receive oper status from DB **/ -UpplReturnCode Kt_Port::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; key_port_t *obj_key_port = reinterpret_cast(key_struct); string controller_name = @@ -661,11 +664,11 @@ UpplReturnCode Kt_Port::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, controller_name.length()+1); pfc_log_info("alarm sent by driver is: %d", alarm_type); uint64_t alarm_status_db = 0; - UpplReturnCode read_alarm_status = GetAlarmStatus(db_conn, data_type, + UncRespCode read_alarm_status = GetAlarmStatus(db_conn, data_type, key_struct, alarm_status_db); // Read old_alarm_status from db - if (read_alarm_status == UPPL_RC_SUCCESS) { + if (read_alarm_status == UNC_RC_SUCCESS) { uint64_t new_alarm_status = 0; uint64_t old_alarm_status = alarm_status_db; pfc_log_info("alarm_status received from db: %" PFC_PFMT_u64, @@ -716,7 +719,7 @@ UpplReturnCode Kt_Port::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, data_type, UNC_KT_PORT, old_val_struct); - if (status == UPPL_RC_SUCCESS && data_type != UNC_DT_IMPORT) { + if (status == UNC_RC_SUCCESS && data_type != UNC_DT_IMPORT) { // Send oper_status notification to northbound // Form value struct val_port_st old_val_port, new_val_port; @@ -733,9 +736,9 @@ UpplReturnCode Kt_Port::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, int err = 0; // Send notification to Northbound ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_PORT, err); - northbound_event_header rsh = {UNC_OP_UPDATE, + northbound_event_header rsh = {static_cast(UNC_OP_UPDATE), data_type, - UNC_KT_PORT}; + static_cast(UNC_KT_PORT)}; err = PhyUtil::sessOutNBEventHeader(ser_evt, rsh); err |= ser_evt.addOutput(*obj_key_port); err |= ser_evt.addOutput(new_val_port); @@ -743,11 +746,11 @@ UpplReturnCode Kt_Port::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, if (err == 0) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Notify operstatus modifications - status = (UpplReturnCode) physical_layer + status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); } else { pfc_log_error("Server Event addOutput failed"); - status = UPPL_RC_ERR_IPC_WRITE_ERROR; + status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } else { pfc_log_debug("Update alarm status in db status %d", status); @@ -770,19 +773,19 @@ UpplReturnCode Kt_Port::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, * @param[in] : data type - indicates the database type * key values - vector to store the primary key values of port * key type - * @return : UPPL_RC_SUCCESS - if the row exists in db with the key value + * @return : UNC_RC_SUCCESS - if the row exists in db with the key value * specified - * UPPL_RC_ERR_* - if the row doesn't exists in the specified DB + * UNC_UPPL_RC_ERR_* - if the row doesn't exists in the specified DB **/ -UpplReturnCode Kt_Port::IsKeyExists(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_error("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = key_values[0]; string switch_id = key_values[1]; @@ -827,12 +830,12 @@ UpplReturnCode Kt_Port::IsKeyExists(OdbcmConnectionHandler *db_conn, if (check_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - check_status = UPPL_RC_ERR_DB_ACCESS; + check_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (check_db_status == ODBCM_RC_ROW_EXISTS) { pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + check_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } pfc_log_debug("check_status = %d", check_status); return check_status; @@ -846,21 +849,19 @@ UpplReturnCode Kt_Port::IsKeyExists(OdbcmConnectionHandler *db_conn, * key_struct - void pointer to be type cast to port key type * value_struct - void pointer to be type cast to port value * structure type - * @return : UPPL_RC_SUCCESS - if the update operation of oper status + * @return : UNC_RC_SUCCESS - if the update operation of oper status * change in db is successful - * UPPL_RC_ERR* - if the update operation of oper status in db + * UNC_UPPL_RC_ERR* - if the update operation of oper status in db * is failure **/ -UpplReturnCode Kt_Port::HandleOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct) { - FN_START_TIME("HandleOperStatus", "Port"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; if (key_struct == NULL) { - FN_END_TIME("HandleOperStatus", "Port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } key_port_t *obj_key_port = @@ -878,15 +879,15 @@ UpplReturnCode Kt_Port::HandleOperStatus(OdbcmConnectionHandler *db_conn, uint8_t ctrl_oper_status = 0; UpplPortOperStatus port_oper_status = UPPL_PORT_OPER_UNKNOWN; Kt_Controller controller; - UpplReturnCode read_status = controller.GetOperStatus( + UncRespCode read_status = controller.GetOperStatus( db_conn, data_type, reinterpret_cast(&ctr_key), ctrl_oper_status); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("Controller's oper_status read returned failure"); return read_status; } pfc_log_debug("Controller's oper_status %d", ctrl_oper_status); vector ref_oper_status; - ADD_CTRL_OPER_STATUS(controller_name, ctrl_oper_status); + ADD_CTRL_OPER_STATUS(controller_name, ctrl_oper_status, ref_oper_status); if (ctrl_oper_status == (UpplControllerOperStatus) UPPL_CONTROLLER_OPER_UP) { pfc_log_info("Set Port oper status as up"); @@ -902,9 +903,9 @@ UpplReturnCode Kt_Port::HandleOperStatus(OdbcmConnectionHandler *db_conn, Kt_Switch switch1; read_status = switch1.GetOperStatus( db_conn, data_type, reinterpret_cast(&sw_key), switch_oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { pfc_log_debug("Switch's oper_status %d", switch_oper_status); - ADD_SWITCH_OPER_STATUS(sw_key, switch_oper_status); + ADD_SWITCH_OPER_STATUS(sw_key, switch_oper_status, ref_oper_status); if (switch_oper_status == (UpplSwitchOperStatus) UPPL_SWITCH_OPER_UP) { pfc_log_info("Set Port oper status as up"); @@ -1015,13 +1016,12 @@ UpplReturnCode Kt_Port::HandleOperStatus(OdbcmConnectionHandler *db_conn, key_port_t key_port = (*keyItr); ADD_PORT_OPER_STATUS( key_port, - port_oper_status); + port_oper_status, ref_oper_status); return_code = NotifyOperStatus( db_conn, data_type, reinterpret_cast (&(*keyItr)), NULL, ref_oper_status); pfc_log_debug("Notify Oper status return %d", return_code); } - FN_END_TIME("HandleOperStatus", "Port"); ClearOperStatusHolder(ref_oper_status); return return_code; } @@ -1034,18 +1034,18 @@ UpplReturnCode Kt_Port::HandleOperStatus(OdbcmConnectionHandler *db_conn, * key type's key structure * value_struct - void pointer to be type cast into respective * key type's value structure - * @return : UPPL_RC_SUCCESS - if the updation of oper status change in + * @return : UNC_RC_SUCCESS - if the updation of oper status change in * other key type is success - * UPPL_RC_ERR* - if the updation of oper status change in db + * UNC_UPPL_RC_ERR* - if the updation of oper status change in db * is failure **/ -UpplReturnCode Kt_Port::NotifyOperStatus( +UncRespCode Kt_Port::NotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct, vector &ref_oper_status) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; key_port_t *obj_key_port = reinterpret_cast(key_struct); @@ -1133,7 +1133,7 @@ UpplReturnCode Kt_Port::NotifyOperStatus( * structure * @return : oper_status - it stores the oper status returned from DB **/ -UpplReturnCode Kt_Port::GetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status) { @@ -1192,7 +1192,7 @@ UpplReturnCode Kt_Port::GetOperStatus(OdbcmConnectionHandler *db_conn, kt_port_dbtableschema, db_conn); if (update_db_status != ODBCM_RC_SUCCESS) { pfc_log_info("oper_status read operation failed %d", update_db_status); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper_status value @@ -1220,7 +1220,7 @@ UpplReturnCode Kt_Port::GetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1229,13 +1229,13 @@ UpplReturnCode Kt_Port::GetOperStatus(OdbcmConnectionHandler *db_conn, * key_struct - void pointer type to be type cast to port key * type structure * alarm status - stores the alarm status received from DB - * @return : UPPL_RC_SUCCESS - if the alarm status is received + * @return : UNC_RC_SUCCESS - if the alarm status is received * successfully from db - * UPPL_RC_ERR* - if there is failure in reading the value + * UNC_UPPL_RC_ERR* - if there is failure in reading the value * from DB **/ -UpplReturnCode Kt_Port::GetAlarmStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::GetAlarmStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint64_t &alarms_status) { @@ -1283,7 +1283,7 @@ UpplReturnCode Kt_Port::GetAlarmStatus(OdbcmConnectionHandler *db_conn, kt_port_dbtableschema, db_conn); if (update_db_status != ODBCM_RC_SUCCESS) { pfc_log_info("oper_status read operation failed %d", update_db_status); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper status value @@ -1311,7 +1311,7 @@ UpplReturnCode Kt_Port::GetAlarmStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1322,7 +1322,7 @@ UpplReturnCode Kt_Port::GetAlarmStatus(OdbcmConnectionHandler *db_conn, * oper_status - stores the oper status value to be updated in db * @return : oper_status **/ -UpplReturnCode Kt_Port::SetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, UpplPortOperStatus oper_status) { @@ -1380,14 +1380,14 @@ UpplReturnCode Kt_Port::SetOperStatus(OdbcmConnectionHandler *db_conn, } else if (update_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("oper_status update operation failed"); - return UPPL_RC_ERR_DB_UPDATE; + return UNC_UPPL_RC_ERR_DB_UPDATE; } else { // Notify operstatus change to northbound uint8_t old_oper_status = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, old_oper_status); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { val_port_st old_val_port, new_val_port; memset(&old_val_port, 0, sizeof(old_val_port)); memset(&new_val_port, 0, sizeof(new_val_port)); @@ -1398,9 +1398,9 @@ UpplReturnCode Kt_Port::SetOperStatus(OdbcmConnectionHandler *db_conn, int err = 0; // Send notification to Northbound ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_PORT, err); - northbound_event_header rsh = {UNC_OP_UPDATE, + northbound_event_header rsh = {static_cast(UNC_OP_UPDATE), data_type, - UNC_KT_PORT}; + static_cast(UNC_KT_PORT)}; err = PhyUtil::sessOutNBEventHeader(ser_evt, rsh); err |= ser_evt.addOutput(*obj_key_port); err |= ser_evt.addOutput(new_val_port); @@ -1408,7 +1408,7 @@ UpplReturnCode Kt_Port::SetOperStatus(OdbcmConnectionHandler *db_conn, if (err == 0) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Notify operstatus modifications - UpplReturnCode status = (UpplReturnCode) physical_layer + UncRespCode status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); pfc_log_debug("Event notification status %d", status); } else { @@ -1416,7 +1416,7 @@ UpplReturnCode Kt_Port::SetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1707,10 +1707,10 @@ void Kt_Port::FillPortValueStructure( vect_obj_val_port.push_back(obj_val_port); // populate key structure port_id.push_back(obj_key_port); - pfc_log_debug("result - vect_obj_val_port size: %d", - (unsigned int) vect_obj_val_port.size()); - pfc_log_debug("result - vect_port_id size: %d", - (unsigned int) port_id.size()); + pfc_log_debug("result - vect_obj_val_port size: %" + PFC_PFMT_SIZE_T, vect_obj_val_port.size()); + pfc_log_debug("result - vect_port_id size: %" + PFC_PFMT_SIZE_T, port_id.size()); } return; } @@ -1731,10 +1731,10 @@ void Kt_Port::FillPortValueStructure( * option1,option2 - specifies any additional condition for * read operation * max_rep_ct - indicates the maximum repetition count - * @return : UPPL_RC_SUCCESS - if the read operation is successful - * UPPL_RC_ERR_* - read operation failed + * @return : UNC_RC_SUCCESS - if the read operation is successful + * UNC_UPPL_RC_ERR_* - read operation failed **/ -UpplReturnCode Kt_Port::PerformRead(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Port::PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -1749,7 +1749,7 @@ UpplReturnCode Kt_Port::PerformRead(OdbcmConnectionHandler *db_conn, operation_type, data_type); key_port_t *obj_key_port = reinterpret_cast(key_struct); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; physical_response_header rsh = {session_id, configuration_id, operation_type, @@ -1757,120 +1757,346 @@ UpplReturnCode Kt_Port::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - read_status}; + static_cast(read_status)}; if (operation_type == UNC_OP_READ) { max_rep_ct = 1; } - if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { pfc_log_error("Read operation is provided on unsupported data type"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_PORT); err |= sess.addOutput(*obj_key_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } + return UNC_RC_SUCCESS; } - - if (option1 != UNC_OPT1_NORMAL) { + // U12 - Allowing UNC_OPT1_DETAIL for Port Statistics + if (option1 != UNC_OPT1_NORMAL && option1 != UNC_OPT1_DETAIL) { // Invalid operation pfc_log_error("PerformRead provided on unsupported option1"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_PORT); err |= sess.addOutput(*obj_key_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } - if (option2 != UNC_OPT2_NEIGHBOR && option2 != UNC_OPT2_NONE) { + if (option1 == UNC_OPT1_DETAIL && option2 != UNC_OPT2_NONE) { pfc_log_error("PerformRead provided on unsupported option2"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION2; + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION2; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_PORT); err |= sess.addOutput(*obj_key_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; - } - return UPPL_RC_SUCCESS; - } - - if (option2 == UNC_OPT2_NONE) { - // For DT_STATE with option2 as none, populate val_port_st - pfc_log_debug("Populating val_port_st from DB"); - vector vect_port_id; - vector vect_val_port_st; - read_status = ReadPortValFromDB(db_conn, key_struct, - val_struct, - data_type, - operation_type, - max_rep_ct, - vect_val_port_st, - vect_port_id); - rsh.result_code = read_status; - rsh.max_rep_count = max_rep_ct; - pfc_log_debug("read status val in performread = %d", read_status); - if (read_status != UPPL_RC_SUCCESS) { - rsh.max_rep_count = 0; - int err = PhyUtil::sessOutRespHeader(sess, rsh); - err |= sess.addOutput((uint32_t) UNC_KT_PORT); - err |= sess.addOutput(*obj_key_port); - if (err != 0) { - pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; - } - return UPPL_RC_SUCCESS; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } + return UNC_RC_SUCCESS; + } + // U12 End + + if (option2 != UNC_OPT2_NEIGHBOR && option2 != UNC_OPT2_NONE) { + pfc_log_error("PerformRead provided on unsupported option2"); + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION2; int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_PORT); + err |= sess.addOutput(*obj_key_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; - } - for (unsigned int index = 0; index < vect_port_id.size(); - ++index) { - sess.addOutput((uint32_t)UNC_KT_PORT); - sess.addOutput((key_port_t)vect_port_id[index]); - sess.addOutput(vect_val_port_st[index]); - if (index < vect_port_id.size() - 1) { - sess.addOutput(); // Seperator + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + + + // U12 START + string controller_name = (const char*)obj_key_port->sw_key. + ctr_key.controller_name; + ClientSession *cli_session = NULL; + if (option1 == UNC_OPT1_DETAIL && option2 == UNC_OPT2_NONE) { + pfc_log_info("Inside Detail:KT_PORT"); + // Not allowing the STANDBY request + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + if (physical_layer->get_physical_core()->get_system_state() == \ + UPPL_SYSTEM_ST_STANDBY) { + pfc_log_error("System is in Standby mode"); + rsh.result_code = UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; + rsh.max_rep_count = 0; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t) UNC_KT_PORT); + err |= sess.addOutput(*obj_key_port); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + + // Getting the Response from Driver + vector vect_val_port_st; + vector vect_port_id; + read_status = ReadPortValFromDB(db_conn, + obj_key_port, + val_struct, + data_type, + operation_type, + max_rep_ct, + vect_val_port_st, + vect_port_id); + rsh.max_rep_count = max_rep_ct; + if (vect_port_id.size() == 0 || vect_val_port_st.size() == 0) { + pfc_log_debug("U12:read vectors size is zero"); + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + } + pfc_log_debug("U12:read status val in PerformRead = %d", read_status); + if (read_status != UNC_RC_SUCCESS) { + rsh.result_code = read_status; + rsh.max_rep_count = 0; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t) UNC_KT_PORT); + err |= sess.addOutput(*obj_key_port); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + pfc_log_info("Filling the key structure and value into map"); + // Filling the key structure and value strucute to the map from DB + map nb_port_stats_map; + + for (unsigned int index = 0; index < vect_port_id.size(); + ++index) { + key_port_t obj_key_port = vect_port_id[index]; + string port_name = reinterpret_cast(obj_key_port.port_id); + pfc_log_debug("Inside the map %s", obj_key_port.port_id); + val_port_stats_t *ptr = new val_port_stats_t; + memset(ptr, 0, sizeof(val_port_stats_t)); + memcpy(&ptr->port_st_val, &vect_val_port_st[index] + , sizeof(val_port_st_t)); + ptr->valid[0] = 1; + nb_port_stats_map.insert(std::pair + (port_name, ptr)); + pfc_log_debug("Map size=%" PFC_PFMT_SIZE_T, nb_port_stats_map.size()); + } + + unc_keytype_ctrtype_t controller_type = UNC_CT_UNKNOWN; + // call GetControllerType controller type func + (unc_keytype_ctrtype_t)PhyUtil::get_controller_type( + db_conn, + controller_name, + controller_type, + UNC_DT_STATE); + pfc_log_debug("Port:controller type is %d ", controller_type); + if (controller_type == UNC_CT_PFC) { + UncRespCode driver_response = UNC_RC_SUCCESS; + pfc_log_info("Controller is PFC"); + UncRespCode err_resp = UNC_RC_SUCCESS; + IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, err_resp); + if (err_resp == 0) { + cli_session = pfc_drv_handler.ResetAndGetSession(); + // Creating a session to driver + string domain_id = ""; + int err = 0; + if (operation_type == UNC_OP_READ) { + driver_request_header rqh = {uint32_t(0), uint32_t(0), controller_name, + domain_id, static_cast(UNC_OP_READ), uint32_t(0), + static_cast(UNC_OPT1_DETAIL), + static_cast(UNC_OPT2_NONE), + static_cast(UNC_DT_STATE), + static_cast(UNC_KT_PORT)}; + err = PhyUtil::sessOutDriverReqHeader(*cli_session, rqh); + } else if (operation_type == UNC_OP_READ_SIBLING || + operation_type == UNC_OP_READ_SIBLING_BEGIN) { + driver_request_header rqh = {uint32_t(0), uint32_t(0), controller_name, + domain_id, static_cast(UNC_OP_READ), uint32_t(0), + static_cast(UNC_OPT1_DETAIL), + static_cast(UNC_OPT2_SIBLING_ALL), + static_cast(UNC_DT_STATE), + static_cast(UNC_KT_PORT)}; + err = PhyUtil::sessOutDriverReqHeader(*cli_session, rqh); + } + err |= cli_session->addOutput(*obj_key_port); + if (err == 0) { + driver_response_header rsp; + driver_response = pfc_drv_handler.SendReqAndGetResp(rsp); + if (driver_response == UNC_RC_SUCCESS) { + pfc_log_info("Filled te key structure and value into map"); + uint8_t response_count = cli_session->getResponseCount(); + pfc_log_info("Response count=%d", response_count); + if (response_count > 10) { + for (uint32_t idx = 11; + idx < response_count ; ) { + pfc_log_info("Reading stats from drv session %d", idx); + key_port_t key_port_drv_resp; + int err1 = cli_session->getResponse(idx++, key_port_drv_resp); + if (err1 != UNC_RC_SUCCESS) { + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + break; + } + string port_name = (const char*)key_port_drv_resp.port_id; + pfc_log_info("Key value struct from drv %s", port_name.c_str()); + val_port_stats_t port_stat_val; + memset(&port_stat_val, '\0', sizeof(val_port_stats_t)); + err1 = cli_session->getResponse(idx++, port_stat_val); + if (err1 != UNC_RC_SUCCESS) { + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + break; + } + map :: iterator it_port_key_val = + nb_port_stats_map.find(port_name); + if (it_port_key_val != nb_port_stats_map.end()) { + pfc_log_info("Found entry in nb_port_stats_map for %s", + port_name.c_str()); + val_port_stats_t *ptr = reinterpret_cast + (it_port_key_val->second); + memcpy(&port_stat_val.port_st_val, &ptr->port_st_val + , sizeof(port_stat_val.port_st_val)); + port_stat_val.valid[0] = 1; + memcpy(ptr, &port_stat_val, sizeof(port_stat_val)); + } + } + } else { + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + } else { + // do nothing + } + } else { + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + } else { + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + if (driver_response != UNC_RC_SUCCESS) { + rsh.result_code = driver_response; + rsh.max_rep_count = 0; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t) UNC_KT_PORT); + err |= sess.addOutput(*obj_key_port); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; } } - } else if (option2 == UNC_OPT2_NEIGHBOR) { - pfc_log_debug("Read neighbor details from DB"); - val_port_st_neighbor obj_neighbor; - memset(&obj_neighbor, '\0', sizeof(val_port_st_neighbor)); - read_status = ReadNeighbor( + int err = PhyUtil::sessOutRespHeader(sess, rsh); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + + for (unsigned int index = 0; index < vect_port_id.size(); + ++index) { + key_port_t obj_key_port = vect_port_id[index]; + string port_name = reinterpret_cast(obj_key_port.port_id); + pfc_log_debug("Inside the map %s", port_name.c_str()); + map :: iterator it_port_key_val; + it_port_key_val = nb_port_stats_map.find(port_name); + if (it_port_key_val == nb_port_stats_map.end()) { + pfc_log_debug("Skipping %s", port_name.c_str()); + continue; + } + val_port_stats_t *ptr = reinterpret_cast + (it_port_key_val->second); + if (ptr != NULL) { + err |= sess.addOutput((uint32_t)UNC_KT_PORT); + pfc_log_debug("%s", IpctUtil::get_string(obj_key_port).c_str()); + err |= sess.addOutput(obj_key_port); + pfc_log_debug("%s", IpctUtil::get_string(*ptr).c_str()); + err |= sess.addOutput(*ptr); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + if (index < vect_port_id.size() - 1) { + sess.addOutput(); // Seperator + } + delete ptr; + } + } + return UNC_RC_SUCCESS; + } + // U12 END + + if (option1 == UNC_OPT1_NORMAL && option2 == UNC_OPT2_NONE) { + // For DT_STATE with option2 as none, populate val_port_st + pfc_log_debug("Populating val_port_st from DB"); + vector vect_port_id; + vector vect_val_port_st; + read_status = ReadPortValFromDB(db_conn, key_struct, + val_struct, + data_type, + operation_type, + max_rep_ct, + vect_val_port_st, + vect_port_id); + rsh.result_code = read_status; + rsh.max_rep_count = max_rep_ct; + pfc_log_debug("read status val in performread = %d", read_status); + if (read_status != UNC_RC_SUCCESS) { + rsh.max_rep_count = 0; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t) UNC_KT_PORT); + err |= sess.addOutput(*obj_key_port); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + int err = PhyUtil::sessOutRespHeader(sess, rsh); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + for (unsigned int index = 0; index < vect_port_id.size(); + ++index) { + sess.addOutput((uint32_t)UNC_KT_PORT); + sess.addOutput((key_port_t)vect_port_id[index]); + sess.addOutput(vect_val_port_st[index]); + if (index < vect_port_id.size() - 1) { + sess.addOutput(); // Seperator + } + } + } else if (option1 == UNC_OPT1_NORMAL && option2 == UNC_OPT2_NEIGHBOR) { + pfc_log_debug("Read neighbor details from DB"); + val_port_st_neighbor obj_neighbor; + memset(&obj_neighbor, '\0', sizeof(val_port_st_neighbor)); + read_status = ReadNeighbor( db_conn, key_struct, val_struct, data_type, obj_neighbor); - pfc_log_debug("Return value for read operation %d", read_status); - rsh.result_code = read_status; - int err = PhyUtil::sessOutRespHeader(sess, rsh); - err |= sess.addOutput((uint32_t)UNC_KT_PORT); - err |= sess.addOutput(*obj_key_port); - if (err != 0) { - pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; - } - if (read_status == UPPL_RC_SUCCESS) { - err = sess.addOutput(obj_neighbor); + pfc_log_debug("Return value for read operation %d", read_status); + rsh.result_code = read_status; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_PORT); + err |= sess.addOutput(*obj_key_port); if (err != 0) { pfc_log_debug("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + if (read_status == UNC_RC_SUCCESS) { + err = sess.addOutput(obj_neighbor); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + } else { + pfc_log_info("Read operation on neighbor failed"); } - } else { - pfc_log_info("Read operation on neighbor failed"); } - } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1886,10 +2112,10 @@ UpplReturnCode Kt_Port::PerformRead(OdbcmConnectionHandler *db_conn, * vect_val_port - vector to store the val_port_st_t structure * port_id - vector of type key_port_t to store the * logical port id - * @return : UPPL_RC_SUCCESS - read operation is success - * UPPL_RC_ERR_DB_GET - read operation is failure + * @return : UNC_RC_SUCCESS - read operation is success + * UNC_UPPL_RC_ERR_DB_GET - read operation is failure **/ -UpplReturnCode Kt_Port::ReadPortValFromDB( +UncRespCode Kt_Port::ReadPortValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -1900,10 +2126,10 @@ UpplReturnCode Kt_Port::ReadPortValFromDB( vector &port_id) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; // Common structures that will be used to send query to ODBC // Structure used to send request to ODBC @@ -1928,15 +2154,15 @@ UpplReturnCode Kt_Port::ReadPortValFromDB( } if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed: %d", read_db_status); return read_status; @@ -1948,12 +2174,12 @@ UpplReturnCode Kt_Port::ReadPortValFromDB( max_rep_ct, UNC_OP_READ, port_id); - pfc_log_debug("vect_val_port_st size: %d", - (unsigned int)vect_val_port_st.size()); - pfc_log_debug("port_id size: %d", (unsigned int)port_id.size()); + pfc_log_debug("vect_val_port_st size: %" + PFC_PFMT_SIZE_T, vect_val_port_st.size()); + pfc_log_debug("port_id size: %" PFC_PFMT_SIZE_T, port_id.size()); if (vect_val_port_st.empty()) { // Read failed , return error - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed after reading response"); return read_status; @@ -1969,19 +2195,19 @@ UpplReturnCode Kt_Port::ReadPortValFromDB( * structure type * data_type - indicates the data base type * neighbor_obj - structure variable of type val_port_st_neighbor - * @return : UPPL_RC_SUCCESS - is returned if the read neighbor operation + * @return : UNC_RC_SUCCESS - is returned if the read neighbor operation * is success - * UPPL_RC_ERR* - is returned if the read neighbor operation is + * UNC_UPPL_RC_ERR* - is returned if the read neighbor operation is * failure **/ -UpplReturnCode Kt_Port::ReadNeighbor( +UncRespCode Kt_Port::ReadNeighbor( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, val_port_st_neighbor &neighbor_obj) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_port_t *obj_key_port= reinterpret_cast(key_struct); string controller_name = (const char*)obj_key_port-> sw_key.ctr_key.controller_name; @@ -1997,7 +2223,7 @@ UpplReturnCode Kt_Port::ReadNeighbor( vect_val_port, data_type, UNC_OP_READ); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { // unable to read value from Db for port pfc_log_info("Neighbour fails - unable to read port value"); return read_status; @@ -2007,7 +2233,7 @@ UpplReturnCode Kt_Port::ReadNeighbor( if (obj_val_st_port == NULL) { // unable to read value from Db for port pfc_log_info("Neighbour fails - unable to read port value"); - return UPPL_RC_ERR_NO_SUCH_INSTANCE; + return UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } val_port_t obj_val_port = obj_val_st_port->port; DBTableSchema kt_port_dbtableschema; @@ -2041,7 +2267,7 @@ UpplReturnCode Kt_Port::ReadNeighbor( GetOneRow((unc_keytype_datatype_t)data_type, kt_port_dbtableschema, db_conn); if (read_db_status == ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_SUCCESS; + read_status = UNC_RC_SUCCESS; // populate IPC value structure based on the response received from DB vector res_table_attr_schema = kt_port_dbtableschema.get_row_list().front(); @@ -2068,13 +2294,13 @@ UpplReturnCode Kt_Port::ReadNeighbor( } else { if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_info("No record to read in ReadNeighbor"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; pfc_log_info("ReadNeighbor operation has failed with %d", read_status); } } @@ -2169,17 +2395,17 @@ void Kt_Port::Fill_Attr_Syntax_Map() { * val_port_valid_st - structure variable of type * val_port_valid_st * new_valid_val - enum for valid flag - * @return : UPPL_RC_SUCCESS - if valid flag update is success + * @return : UNC_RC_SUCCESS - if valid flag update is success * UPL_RC_ERR_* - if valid flag update is failure **/ -UpplReturnCode Kt_Port::UpdatePortValidFlag( +UncRespCode Kt_Port::UpdatePortValidFlag( OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, val_port_st_t &val_port_valid_st, unc_keytype_validflag_t new_valid_val, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; // read the value structure from db void *obj_key_port_orig = key_struct; vector vect_key_port; @@ -2187,7 +2413,7 @@ UpplReturnCode Kt_Port::UpdatePortValidFlag( vector vect_val_port; return_code = ReadInternal(db_conn, vect_key_port, vect_val_port, data_type, UNC_OP_READ); - if (return_code != UPPL_RC_SUCCESS) { + if (return_code != UNC_RC_SUCCESS) { pfc_log_info("Read is not success"); return return_code; } @@ -2363,10 +2589,10 @@ UpplReturnCode Kt_Port::UpdatePortValidFlag( * val_struct - void pointer to be type cast to port value type * structure * valid_new - stores the valid flag to be updated in Db - * @return : UPPL_RC_SUCCESS - if port valid update operation is success - * UPPL_RC_ERR_* - if port valid update operation is failure + * @return : UNC_RC_SUCCESS - if port valid update operation is success + * UNC_UPPL_RC_ERR_* - if port valid update operation is failure **/ -UpplReturnCode Kt_Port::PopulateSchemaForValidFlag( +UncRespCode Kt_Port::PopulateSchemaForValidFlag( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -2427,9 +2653,9 @@ UpplReturnCode Kt_Port::PopulateSchemaForValidFlag( if (update_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("port valid update operation failed"); - return UPPL_RC_ERR_DB_UPDATE; + return UNC_UPPL_RC_ERR_DB_UPDATE; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -2478,16 +2704,22 @@ void Kt_Port::GetPortValStructure( stringstream &valid) { uint16_t valid_val = 0, prev_db_val = 0; unsigned int valid_value_struct = UNC_VF_VALID; + if (obj_val_port != NULL) { valid_value_struct = PhyUtil::uint8touint( obj_val_port->valid[kIdxPortSt]); } + string value = ""; // Port_number - if (obj_val_port != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint( + if (obj_val_port != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint( obj_val_port->port.valid[kIdxPortNumber]); - value = PhyUtil::uint8tostr(obj_val_port->port.port_number); + value = PhyUtil::uint32tostr(obj_val_port->port.port_number); + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2502,10 +2734,14 @@ void Kt_Port::GetPortValStructure( vect_table_attr_schema, vect_prim_keys, valid); value.clear(); // Description - if (obj_val_port != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint( - obj_val_port->port.valid[kIdxPortDescription]); - value = (const char*)obj_val_port->port.description; + if (obj_val_port != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint( + obj_val_port->port.valid[kIdxPortDescription]); + value = (const char*)obj_val_port->port.description; + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2520,10 +2756,14 @@ void Kt_Port::GetPortValStructure( vect_table_attr_schema, vect_prim_keys, valid); value.clear(); // Admin_status - if (obj_val_port != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint( - obj_val_port->port.valid[kIdxPortAdminStatus]); - value = PhyUtil::uint8tostr(obj_val_port->port.admin_status); + if (obj_val_port != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint( + obj_val_port->port.valid[kIdxPortAdminStatus]); + value = PhyUtil::uint8tostr(obj_val_port->port.admin_status); + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2538,11 +2778,15 @@ void Kt_Port::GetPortValStructure( vect_table_attr_schema, vect_prim_keys, valid); value.clear(); // trunk_allowed_vlan - if (obj_val_port != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint(obj_val_port->port.valid\ + if (obj_val_port != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint(obj_val_port->port.valid\ [kIdxPortTrunkAllowedVlan]); - value = PhyUtil::uint8tostr(obj_val_port->\ + value = PhyUtil::uint16tostr(obj_val_port->\ port.trunk_allowed_vlan); + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2738,9 +2982,9 @@ void Kt_Port::GetPortStateValStructure( * @Description : This function performs oper status handling for sub domain * @param[in] : data_type - indicates the data base type * controller_name, switch_name and physical_port id - * @return : UPPL_RC_SUCCESS + * @return : UNC_RC_SUCCESS **/ -UpplReturnCode Kt_Port::SubDomainOperStatusHandling( +UncRespCode Kt_Port::SubDomainOperStatusHandling( OdbcmConnectionHandler *db_conn, uint32_t data_type, string controller_name, @@ -2786,7 +3030,7 @@ UpplReturnCode Kt_Port::SubDomainOperStatusHandling( db_conn); if (db_status != ODBCM_RC_SUCCESS) { pfc_log_debug("No associated logical member port"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // To traverse the list list > ::iterator iter_list; @@ -2831,14 +3075,14 @@ UpplReturnCode Kt_Port::SubDomainOperStatusHandling( log_port_id.c_str(), log_port_id.length()+1); vector ref_oper_status; - GET_ADD_CTRL_OPER_STATUS(controller_name); + GET_ADD_CTRL_OPER_STATUS(controller_name, ref_oper_status); Kt_LogicalPort log_port_obj; - UpplReturnCode return_code = log_port_obj.HandleOperStatus( + UncRespCode return_code = log_port_obj.HandleOperStatus( db_conn, data_type, reinterpret_cast (&logical_port_key), NULL, ref_oper_status, UNC_KT_PORT); pfc_log_debug("HandleOperStatus for logical port class %d", return_code); ClearOperStatusHolder(ref_oper_status); } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } diff --git a/coordinator/modules/uppl/itc_kt_root.cc b/coordinator/modules/uppl/itc_kt_root.cc index 11eaa13e..a6504193 100644 --- a/coordinator/modules/uppl/itc_kt_root.cc +++ b/coordinator/modules/uppl/itc_kt_root.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -77,10 +77,10 @@ Kt_Base* Kt_Root::GetChildClassPointer(KtRootChildClass KIndex) { * configuration_id-ipc configuration id used for TC validation * data_type-UNC_DT_*,type of database * sess-ServerSession object where the request argument present - * @return : UPPL_RC_ERR_OPERATION_NOT_ALLOWED + * @return : UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED * */ -UpplReturnCode Kt_Root::Create(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Root::Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -94,15 +94,15 @@ UpplReturnCode Kt_Root::Create(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; + UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; pfc_log_debug("Create Operation not allowed on KT_ROOT"); int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t) UNC_KT_ROOT); err |= sess.addOutput(*reinterpret_cast(key_struct)); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } @@ -114,9 +114,9 @@ UpplReturnCode Kt_Root::Create(OdbcmConnectionHandler *db_conn, * configuration_id-ipc configuration id used for TC validation * data_type-UNC_DT_*,type of database * sess-ServerSession object where the request argument present - * @return : UPPL_RC_ERR_OPERATION_NOT_ALLOWED + * @return : UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED * */ -UpplReturnCode Kt_Root::Update(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Root::Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -131,15 +131,15 @@ UpplReturnCode Kt_Root::Update(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; + UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; pfc_log_debug("Update Operation not allowed on KT_ROOT"); int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t) UNC_KT_ROOT); err |= sess.addOutput(*reinterpret_cast(key_struct)); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } @@ -151,9 +151,9 @@ UpplReturnCode Kt_Root::Update(OdbcmConnectionHandler *db_conn, * configuration_id-ipc configuration id used for TC validation * data_type-UNC_DT_*,type of database * sess-ServerSession object where the request argument present - * @return : UPPL_RC_ERR_OPERATION_NOT_ALLOWED + * @return : UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED * */ -UpplReturnCode Kt_Root::Delete(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Root::Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -167,15 +167,15 @@ UpplReturnCode Kt_Root::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; + UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; pfc_log_debug("Delete Operation not allowed on KT_ROOT"); int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t) UNC_KT_ROOT); err |= sess.addOutput(*reinterpret_cast(key_struct)); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**ReadBulk @@ -193,11 +193,11 @@ UpplReturnCode Kt_Root::Delete(OdbcmConnectionHandler *db_conn, * bool parent_call-flag to indicate whether function called by parent * bool is_read_next-flag to indicate whether requested operation is * UNC_OP_READ_NEXT - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Root::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Root::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -206,11 +206,11 @@ UpplReturnCode Kt_Root::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_bool_t is_read_next, ReadRequest *read_req) { pfc_log_debug("Inside ReadBulk of Kt_ROOT"); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; if (max_rep_ct == 0) { - // Count is 0, return UPPL_RC_SUCCESS + // Count is 0, return UNC_RC_SUCCESS pfc_log_debug("KT_ROOT - Count is 0, return Success"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if ((unc_keytype_datatype_t)data_type == UNC_DT_CANDIDATE || (unc_keytype_datatype_t)data_type == UNC_DT_RUNNING || @@ -244,16 +244,16 @@ UpplReturnCode Kt_Root::ReadBulk(OdbcmConnectionHandler *db_conn, delete child[kIdx]; child[kIdx] = NULL; if (max_rep_ct <= 0) { - // Count reached 0, return UPPL_RC_SUCCESS - return UPPL_RC_SUCCESS; + // Count reached 0, return UNC_RC_SUCCESS + return UNC_RC_SUCCESS; } } } else { pfc_log_debug( "READ_NEXT and READ_BULK operations are not allowed on the data types" " other than DT_CANDIDATE, DT_RUNNING, DT_STARTUP and DT_STATE"); - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; - return UPPL_RC_SUCCESS; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_RC_SUCCESS; } pfc_log_debug("read_status=%d", read_status); return read_status; diff --git a/coordinator/modules/uppl/itc_kt_state_base.cc b/coordinator/modules/uppl/itc_kt_state_base.cc index 29d319dd..f21bf12a 100644 --- a/coordinator/modules/uppl/itc_kt_state_base.cc +++ b/coordinator/modules/uppl/itc_kt_state_base.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -41,9 +41,9 @@ Kt_State_Base::Kt_State_Base() { * data_type - UNC_DT_* , Create only allowed in running/state/import * key_type-UNC_KT_*,any value of unc_key_type_t * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR_* is returned. + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR_* is returned. * */ -UpplReturnCode Kt_State_Base::Create(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_State_Base::Create(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -52,7 +52,7 @@ UpplReturnCode Kt_State_Base::Create(OdbcmConnectionHandler *db_conn, uint32_t key_type, ServerSession &sess) { pfc_log_error("Create not allowed from VTN"); - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; // Populate the response to be sent in ServerSession physical_response_header rsh = {session_id, @@ -62,7 +62,7 @@ UpplReturnCode Kt_State_Base::Create(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; + UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput(key_type); @@ -98,9 +98,9 @@ UpplReturnCode Kt_State_Base::Create(OdbcmConnectionHandler *db_conn, if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - create_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + create_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - create_status = UPPL_RC_SUCCESS; + create_status = UNC_RC_SUCCESS; } return create_status; } @@ -112,15 +112,15 @@ UpplReturnCode Kt_State_Base::Create(OdbcmConnectionHandler *db_conn, * value_struct - the values for the new kt instance * data_type - UNC_DT_* , Create only allowed in running/state/import * key_type-UNC_KT_*,any value of unc_key_type_t - * @return : UPPL_RC_SUCCESS is returned when the create is success - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * @return : UNC_RC_SUCCESS is returned when the create is success + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_State_Base::CreateKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_State_Base::CreateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode create_status = UPPL_RC_SUCCESS; + UncRespCode create_status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); pfc_log_debug("Create instance of Kt: %d", key_type); @@ -129,7 +129,7 @@ UpplReturnCode Kt_State_Base::CreateKeyInstance(OdbcmConnectionHandler *db_conn, ((unc_keytype_datatype_t)data_type != UNC_DT_IMPORT)) { pfc_log_error("Create operation is provided on unsupported data type %d", data_type); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } // Structure used to send request to ODBC @@ -151,11 +151,11 @@ UpplReturnCode Kt_State_Base::CreateKeyInstance(OdbcmConnectionHandler *db_conn, if (create_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - create_status = UPPL_RC_ERR_DB_ACCESS; + create_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon pfc_log_error("Create operation has failed"); - create_status = UPPL_RC_ERR_DB_CREATE; + create_status = UNC_UPPL_RC_ERR_DB_CREATE; } } else { pfc_log_info("Create of a kt %d in data_type %d is success", key_type, @@ -174,11 +174,11 @@ UpplReturnCode Kt_State_Base::CreateKeyInstance(OdbcmConnectionHandler *db_conn, * data_type - UNC_DT_* , Update only allowed in running/state/import * key_type-UNC_KT_*,any value of unc_key_type_t * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_State_Base::Update(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_State_Base::Update(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -187,7 +187,7 @@ UpplReturnCode Kt_State_Base::Update(OdbcmConnectionHandler *db_conn, uint32_t key_type, ServerSession &sess) { pfc_log_error("Update not allowed from VTN"); - UpplReturnCode update_status = UPPL_RC_SUCCESS; + UncRespCode update_status = UNC_RC_SUCCESS; // Populate the response to be sent in ServerSession physical_response_header rsh = {session_id, @@ -197,7 +197,7 @@ UpplReturnCode Kt_State_Base::Update(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; + UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput(key_type); @@ -233,9 +233,9 @@ UpplReturnCode Kt_State_Base::Update(OdbcmConnectionHandler *db_conn, if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - update_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + update_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - update_status = UPPL_RC_SUCCESS; + update_status = UNC_RC_SUCCESS; } return update_status; } @@ -249,24 +249,24 @@ UpplReturnCode Kt_State_Base::Update(OdbcmConnectionHandler *db_conn, * data_type - UNC_DT_* , update only allowed in running/state/import * key_type-UNC_KT_*,any value of unc_key_type_t * old_val_struct-void * to switch value structure - * @return : UPPL_RC_SUCCESS is returned when the update + * @return : UNC_RC_SUCCESS is returned when the update * is done successfully. - * UPPL_RC_ERR_* is returned when the update is error + * UNC_UPPL_RC_ERR_* is returned when the update is error * */ -UpplReturnCode Kt_State_Base::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_State_Base::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t data_type, uint32_t key_type, void* &old_val_struct) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode update_status = UPPL_RC_SUCCESS; + UncRespCode update_status = UNC_RC_SUCCESS; // Check whether operation is allowed on the given DT type if (((unc_keytype_datatype_t)data_type != UNC_DT_STATE) && ((unc_keytype_datatype_t)data_type != UNC_DT_IMPORT)) { pfc_log_error("Update operation is provided on unsupported data type %d", data_type); - update_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + update_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return update_status; } pfc_bool_t is_state = PFC_FALSE; @@ -291,12 +291,12 @@ UpplReturnCode Kt_State_Base::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, if (update_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - update_status = UPPL_RC_ERR_DB_ACCESS; + update_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (update_db_status != ODBCM_RC_SUCCESS) { // log error to log daemon pfc_log_error("UpdateOneRow error response from DB is %d", update_db_status); - update_status = UPPL_RC_ERR_DB_UPDATE; + update_status = UNC_UPPL_RC_ERR_DB_UPDATE; } else { pfc_log_info("Update of kt in data type %d is success", data_type); @@ -314,11 +314,11 @@ UpplReturnCode Kt_State_Base::UpdateKeyInstance(OdbcmConnectionHandler *db_conn, * data_type - UNC_DT_* , delete only allowed in running/state/import, * key_type-UNC_KT_*,any value of unc_key_type_t * sess - ipc server session where the response has to be added - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_State_Base::Delete(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_State_Base::Delete(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -326,7 +326,7 @@ UpplReturnCode Kt_State_Base::Delete(OdbcmConnectionHandler *db_conn, uint32_t key_type, ServerSession &sess) { pfc_log_error("Delete not allowed from VTN"); - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; // Populate the response to be sent in ServerSession physical_response_header rsh = {session_id, @@ -336,7 +336,7 @@ UpplReturnCode Kt_State_Base::Delete(OdbcmConnectionHandler *db_conn, 0, 0, data_type, - UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; + UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED}; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput(key_type); @@ -372,9 +372,9 @@ UpplReturnCode Kt_State_Base::Delete(OdbcmConnectionHandler *db_conn, if (err != 0) { pfc_log_error("Server session addOutput failed, so return IPC_WRITE_ERROR"); - delete_status = UPPL_RC_ERR_IPC_WRITE_ERROR; + delete_status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } return delete_status; } @@ -388,10 +388,10 @@ UpplReturnCode Kt_State_Base::Delete(OdbcmConnectionHandler *db_conn, * oper_type-UNC_OP_*,type of operation * data_type-UNC_DT_*,type of database * key_type-UNC_KT_*,any value of unc_key_type_t - * @return : UPPL_RC_SUCCESS if events are handled successfully or - * UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS if events are handled successfully or + * UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_State_Base::HandleDriverEvents( +UncRespCode Kt_State_Base::HandleDriverEvents( OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t oper_type, @@ -399,7 +399,7 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( uint32_t key_type, void* old_val_struct, void* new_val_struct) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); string controller_name = ""; string event_details = ""; // for sending event handling alarm @@ -415,17 +415,17 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( parent_data_type = UNC_DT_RUNNING; } unc_keytype_ctrtype_t controller_type; - UpplReturnCode retcode = PhyUtil::get_controller_type( + UncRespCode retcode = PhyUtil::get_controller_type( db_conn, controller_name, controller_type, (unc_keytype_datatype_t)parent_data_type); // Check whether operation is allowed on the given DT type - if (retcode != UPPL_RC_SUCCESS) { + if (retcode != UNC_RC_SUCCESS) { pfc_log_error("Error getting the controller type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; - } else if (retcode == UPPL_RC_SUCCESS && + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } else if (retcode == UNC_RC_SUCCESS && controller_type == UNC_CT_UNKNOWN) { pfc_log_error("Unknown domain cannot be operated from driver"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } event_details = "KT_CTR_DOMAIN"; break; @@ -470,17 +470,19 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( } status = ValidateRequest(db_conn, key_struct, new_val_struct, oper_type, data_type, key_type); - if (status != UPPL_RC_SUCCESS) { + if (status != UNC_RC_SUCCESS) { pfc_log_info( "HandleDriverEvents validation failed with %d " "for operation %d with data type %d", status, oper_type, data_type); - if ((oper_type == UNC_OP_CREATE && status != UPPL_RC_ERR_INSTANCE_EXISTS) || - ((oper_type == UNC_OP_UPDATE || oper_type == UNC_OP_DELETE) && - status != UPPL_RC_ERR_NO_SUCH_INSTANCE)) { + if ((oper_type == UNC_OP_CREATE && status != + UNC_UPPL_RC_ERR_INSTANCE_EXISTS) || + ((oper_type == UNC_OP_UPDATE || + oper_type == UNC_OP_DELETE) && + status != UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE)) { // Raise validation failure alarm - UpplReturnCode alarm_status = physical_layer->get_physical_core()-> + UncRespCode alarm_status = physical_layer->get_physical_core()-> RaiseEventHandlingAlarm(controller_name); - if (alarm_status == UPPL_RC_SUCCESS) { + if (alarm_status == UNC_RC_SUCCESS) { alarm_status = physical_layer->get_physical_core()-> SendEventHandlingFailureAlarm(controller_name, event_details); @@ -504,7 +506,7 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( key_type == UNC_KT_LOGICAL_MEMBER_PORT) { pfc_log_error("Update operation is provided on unsupported key type %d", key_type); - status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return status; } // Call UpdateKeyInstance to update kt value in DB @@ -517,10 +519,10 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( pfc_log_debug("Call DeleteKeyInstance to delete kt in DB"); status = DeleteKeyInstance(db_conn, key_struct, data_type, key_type); } - if (status != UPPL_RC_SUCCESS) { - UpplReturnCode alarm_status = physical_layer->get_physical_core()-> + if (status != UNC_RC_SUCCESS) { + UncRespCode alarm_status = physical_layer->get_physical_core()-> RaiseEventHandlingAlarm(controller_name); - if (alarm_status == UPPL_RC_SUCCESS) { + if (alarm_status == UNC_RC_SUCCESS) { alarm_status = physical_layer->get_physical_core()-> SendEventHandlingFailureAlarm(controller_name, event_details); @@ -528,9 +530,9 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( alarm_status); } } else { - UpplReturnCode alarm_status = physical_layer->get_physical_core()-> + UncRespCode alarm_status = physical_layer->get_physical_core()-> ClearEventHandlingAlarm(controller_name); - if (alarm_status == UPPL_RC_SUCCESS) { + if (alarm_status == UNC_RC_SUCCESS) { alarm_status = physical_layer->get_physical_core()-> SendEventHandlingSuccessAlarm(controller_name, event_details); @@ -557,15 +559,15 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( if (err != 0) { pfc_log_error( "Server Event addOutput failed, return IPC_WRITE_ERROR"); - status = UPPL_RC_ERR_IPC_WRITE_ERROR; + status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { // Call IPC server to post the event - status = (UpplReturnCode) physical_layer + status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); } } // Perform for oper_status handling - UpplReturnCode oper_status_handle = HandleOperStatus(db_conn, key_struct, + UncRespCode oper_status_handle = HandleOperStatus(db_conn, key_struct, oper_type, data_type, key_type, @@ -575,7 +577,7 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( } // Old value structure memory clean up if (oper_type == UNC_OP_UPDATE) { - if(old_value_struct != NULL) { + if (old_value_struct != NULL) { ClearValueStructure(key_type, old_value_struct); old_value_struct = NULL; @@ -593,17 +595,17 @@ UpplReturnCode Kt_State_Base::HandleDriverEvents( * data_type-UNC_DT_*,type of database * key_type-UNC_KT_*,any value of unc_key_type_t * controller_name-controller id - * @return : UPPL_RC_SUCCESS if oper status changes are handled - * successfully or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS if oper status changes are handled + * successfully or UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t oper_type, uint32_t data_type, uint32_t key_type, void* new_val_struct, string controller_name) { - UpplReturnCode oper_return = UPPL_RC_SUCCESS; + UncRespCode oper_return = UNC_RC_SUCCESS; // logical port oper status handling if (key_type == UNC_KT_LOGICAL_MEMBER_PORT && (oper_type == UNC_OP_CREATE || oper_type == UNC_OP_DELETE)) { @@ -626,7 +628,7 @@ UpplReturnCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, port_id.c_str(), port_id.length()+1); vector ref_oper_status; - GET_ADD_CTRL_OPER_STATUS(controller_name); + GET_ADD_CTRL_OPER_STATUS(controller_name, ref_oper_status); Kt_LogicalPort logical_port; oper_return = logical_port.HandleOperStatus( db_conn, @@ -646,7 +648,7 @@ UpplReturnCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, if (valid_val == UNC_VF_VALID) { key_port_t port_key = *(reinterpret_cast(key_struct)); vector ref_oper_status; - GET_ADD_CTRL_OPER_STATUS(controller_name); + GET_ADD_CTRL_OPER_STATUS(controller_name, ref_oper_status); // Get Switch oper status key_switch_t switch_key; Kt_Switch kt_switch; @@ -660,7 +662,7 @@ UpplReturnCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, reinterpret_cast(&switch_key), switch_oper_status); pfc_log_debug("Switch read_status %d, oper_status %d", read_status, switch_oper_status); - ADD_SWITCH_OPER_STATUS(switch_key, switch_oper_status); + ADD_SWITCH_OPER_STATUS(switch_key, switch_oper_status, ref_oper_status); // Get port oper status uint8_t port_oper_status = 0; read_status = kt_port.GetOperStatus( @@ -669,7 +671,7 @@ UpplReturnCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, pfc_log_debug("Port read_status %d, oper_status %d", read_status, port_oper_status); ADD_PORT_OPER_STATUS( - port_key, port_oper_status); + port_key, port_oper_status, ref_oper_status); oper_return = kt_port.NotifyOperStatus(db_conn, data_type, key_struct, new_val_struct, @@ -688,7 +690,7 @@ UpplReturnCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, key_switch_t switch_key = *(reinterpret_cast(key_struct)); vector ref_oper_status; - GET_ADD_CTRL_OPER_STATUS(controller_name); + GET_ADD_CTRL_OPER_STATUS(controller_name, ref_oper_status); // Get Switch oper status uint8_t switch_oper_status = 0; read_status = kt_switch.GetOperStatus( @@ -697,7 +699,7 @@ UpplReturnCode Kt_State_Base::HandleOperStatus(OdbcmConnectionHandler *db_conn, pfc_log_debug("Switch read_status %d, oper_status %d", read_status, switch_oper_status); ADD_SWITCH_OPER_STATUS(switch_key, - switch_oper_status); + switch_oper_status, ref_oper_status); oper_return = kt_switch.NotifyOperStatus(db_conn, data_type, key_struct, new_val_struct, diff --git a/coordinator/modules/uppl/itc_kt_switch.cc b/coordinator/modules/uppl/itc_kt_switch.cc index 0e3426de..fe7519dd 100644 --- a/coordinator/modules/uppl/itc_kt_switch.cc +++ b/coordinator/modules/uppl/itc_kt_switch.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -12,7 +12,7 @@ * @file itc_kt_switch.cc * */ - +#include "ipc_client_configuration_handler.hh" #include "itc_kt_switch.hh" #include "itc_kt_controller.hh" #include "itc_kt_ctr_domain.hh" @@ -20,11 +20,12 @@ #include "itc_kt_port.hh" #include "itc_kt_link.hh" #include "odbcm_utils.hh" +#include "ipct_util.hh" #include "itc_read_request.hh" #include "odbcm_db_varbind.hh" using unc::uppl::PhysicalLayer; using unc::uppl::ODBCMUtils; - +using unc::uppl::IPCClientDriverHandler; /** Constructor * @Description : This function instantiates child key instances for * kt_switch @@ -88,21 +89,21 @@ Kt_Base* Kt_Switch::GetChildClassPointer(KtSwitchChildClass KIndex) { * @param[in] : key_struct - key for the switch instance * data_type - UNC_DT_* , delete only allowed in STATE * key_type-UNC_KT_SWITCH,value of unc_key_type_t - * @return : UPPL_RC_SUCCESS is returned when the delete + * @return : UNC_RC_SUCCESS is returned when the delete * is done successfully. - * UPPL_RC_ERR_* is returned when the delete is error + * UNC_UPPL_RC_ERR_* is returned when the delete is error * */ -UpplReturnCode Kt_Switch::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t key_type) { - UpplReturnCode delete_status = UPPL_RC_SUCCESS; + UncRespCode delete_status = UNC_RC_SUCCESS; // Check whether operation is allowed on the given DT type // if is_internal is set as true, the notification is received from driver if (((unc_keytype_datatype_t)data_type != UNC_DT_STATE) && ((unc_keytype_datatype_t)data_type != UNC_DT_IMPORT)) { pfc_log_error("Delete operation is provided on unsupported data type"); - return UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } key_switch_t *obj_key_switch = reinterpret_cast(key_struct); @@ -145,15 +146,15 @@ UpplReturnCode Kt_Switch::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, delete child[child_class]; child[child_class] = NULL; FreeChildKeyStruct(child_class, child_key_struct); - if (delete_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + if (delete_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { pfc_log_debug("No child instance for switch"); } - if (delete_status != UPPL_RC_ERR_NO_SUCH_INSTANCE && - delete_status != UPPL_RC_SUCCESS) { + if (delete_status != UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE && + delete_status != UNC_RC_SUCCESS) { // child delete , failed so return error pfc_log_error("Delete failed for child with %d with error %d", child_class, delete_status); - delete_status = UPPL_RC_ERR_CFG_SEMANTIC; + delete_status = UNC_UPPL_RC_ERR_CFG_SEMANTIC; break; } } @@ -192,9 +193,9 @@ UpplReturnCode Kt_Switch::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, vector val_struct; key_val.push_back(reinterpret_cast(&logical_port_key_obj)); val_struct.push_back(reinterpret_cast(&logical_port_val_obj)); - UpplReturnCode lp_read_status = logical_port_obj.ReadInternal( + UncRespCode lp_read_status = logical_port_obj.ReadInternal( db_conn, key_val, val_struct, data_type, UNC_OP_READ); - if (lp_read_status == UPPL_RC_SUCCESS) { + if (lp_read_status == UNC_RC_SUCCESS) { // form key struct with all required primary keys and call delete logical_port_obj.DeleteKeyInstance( db_conn, key_val[0], @@ -252,16 +253,16 @@ UpplReturnCode Kt_Switch::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, if (delete_db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - delete_status = UPPL_RC_ERR_DB_ACCESS; + delete_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else { // log error to log daemon pfc_log_error("Delete operation has failed in switch common table"); - delete_status = UPPL_RC_ERR_DB_DELETE; + delete_status = UNC_UPPL_RC_ERR_DB_DELETE; } } else { pfc_log_info("Delete of a switch in data_type(%d) is success", data_type); - delete_status = UPPL_RC_SUCCESS; + delete_status = UNC_RC_SUCCESS; } return delete_status; } @@ -272,11 +273,11 @@ UpplReturnCode Kt_Switch::DeleteKeyInstance(OdbcmConnectionHandler *db_conn, * value_struct - value for kt switch instance * data_type - UNC_DT_* , read allowed in STATE * operation_type-type of operation,can be UNC_OP_READ* - * @return : UPPL_RC_SUCCESS is returned when the response is added to + * @return : UNC_RC_SUCCESS is returned when the response is added to * ipc session successfully - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess. + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess. * */ -UpplReturnCode Kt_Switch::ReadInternal(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::ReadInternal(OdbcmConnectionHandler *db_conn, vector &key_val, vector &val_struct, uint32_t data_type, @@ -294,7 +295,7 @@ UpplReturnCode Kt_Switch::ReadInternal(OdbcmConnectionHandler *db_conn, if (!val_struct.empty()) { void_val_struct = val_struct[0]; } - UpplReturnCode read_status = ReadSwitchValFromDB(db_conn, + UncRespCode read_status = ReadSwitchValFromDB(db_conn, key_struct, void_val_struct, data_type, @@ -304,7 +305,7 @@ UpplReturnCode Kt_Switch::ReadInternal(OdbcmConnectionHandler *db_conn, vect_switch_id); key_val.clear(); val_struct.clear(); - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { for (unsigned int iIndex = 0 ; iIndex < vect_val_switch_st.size(); ++iIndex) { key_switch_t *key_switch = new key_switch_t(vect_switch_id[iIndex]); @@ -326,11 +327,11 @@ UpplReturnCode Kt_Switch::ReadInternal(OdbcmConnectionHandler *db_conn, * max_rep_ct - specifies no of rows to be returned * parent_call - indicates whether parent has called this read bulk * is_read_next - indicates whether this function is invoked from read_next - * @return : UPPL_RC_SUCCESS is returned when the response is added to + * @return : UNC_RC_SUCCESS is returned when the response is added to * ipc session successfully - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess * */ -UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, void* key_struct, uint32_t data_type, uint32_t &max_rep_ct, @@ -339,14 +340,14 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, pfc_bool_t is_read_next, ReadRequest *read_req) { pfc_log_info("Processing ReadBulk of Kt_Switch"); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; key_switch_t obj_key_switch = *(reinterpret_cast(key_struct)); if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { // Not supported pfc_log_debug("ReadBulk operation is not allowed in %d data type", data_type); - read_status = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + read_status = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; return read_status; } string str_switch_id = @@ -358,7 +359,7 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, vector vect_switch_id; if (max_rep_ct == 0) { pfc_log_info("max_rep_ct is 0"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Check for child call if (child_index == -1 && @@ -367,10 +368,10 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, vector vect_key_value; vect_key_value.push_back(str_controller_name); vect_key_value.push_back(str_switch_id); - UpplReturnCode key_exist_status = IsKeyExists( + UncRespCode key_exist_status = IsKeyExists( db_conn, (unc_keytype_datatype_t)data_type, vect_key_value); - if (key_exist_status == UPPL_RC_SUCCESS) { + if (key_exist_status == UNC_RC_SUCCESS) { switch_exists = PFC_TRUE; } } @@ -387,7 +388,7 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, val_switch_st_t dummy_val_switch; vect_val_switch.insert(vect_val_switch.begin(), dummy_val_switch); } - if (read_status == UPPL_RC_SUCCESS || + if (read_status == UNC_RC_SUCCESS || switch_exists == PFC_TRUE) { // For each switch , read the child's attributes vector ::iterator vect_iter = vect_val_switch.begin(); @@ -417,7 +418,7 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, read_req->AddToBuffer(obj_sep_buffer); --max_rep_ct; if (max_rep_ct == 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } switch_exists = PFC_FALSE; @@ -438,7 +439,7 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, continue; } pfc_log_debug("Switch Calling child %d read bulk", kIdx); - UpplReturnCode ch_read_status = child[kIdx]->ReadBulk( + UncRespCode ch_read_status = child[kIdx]->ReadBulk( db_conn, child_key_struct, data_type, max_rep_ct, @@ -453,7 +454,7 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, FreeChildKeyStruct(kIdx, child_key_struct); if (max_rep_ct == 0) { pfc_log_debug("max_rep_ct reached zero, so returning"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } str_switch_id = fKey; @@ -481,15 +482,15 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, is_read_next, read_req); pfc_log_debug("read_status from next kin Kt_Ctr is %d", read_status); - return UPPL_RC_SUCCESS; - } else if (read_status == UPPL_RC_ERR_DB_ACCESS) { + return UNC_RC_SUCCESS; + } else if (read_status == UNC_UPPL_RC_ERR_DB_ACCESS) { pfc_log_debug("KtSwitch ReadBulk - Returning DB Access Error"); return read_status; } pfc_log_debug("switch reached end of table"); pfc_log_debug("read_status=%d", read_status); - if (read_status == UPPL_RC_ERR_NO_SUCH_INSTANCE) { - read_status = UPPL_RC_SUCCESS; + if (read_status == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { + read_status = UNC_RC_SUCCESS; } return read_status; } @@ -503,11 +504,11 @@ UpplReturnCode Kt_Switch::ReadBulk(OdbcmConnectionHandler *db_conn, * max_rep_ct - specified no of rows to be returned * vect_val_switch - indicated the fetched values from db of val_switch type * vect_switch_id - indicated the fetched switch id from db - * @return : UPPL_RC_SUCCESS is returned when the response is added to + * @return : UNC_RC_SUCCESS is returned when the response is added to * ipc session successfully - * UPPL_RC_ERR_* is returned when ipc response could not be added to sess + * UNC_UPPL_RC_ERR_* is returned when ipc response could not be added to sess * */ -UpplReturnCode Kt_Switch::ReadBulkInternal( +UncRespCode Kt_Switch::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -516,10 +517,10 @@ UpplReturnCode Kt_Switch::ReadBulkInternal( vector &vect_val_switch, vector &vect_switch_id) { if (max_rep_ct <= 0) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; DBTableSchema kt_switch_dbtableschema; // Populate DBSchema for switch_table @@ -539,14 +540,14 @@ UpplReturnCode Kt_Switch::ReadBulkInternal( pfc_log_debug("GetBulkRows return: %d", read_db_status); if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; @@ -566,17 +567,17 @@ UpplReturnCode Kt_Switch::ReadBulkInternal( * value_struct - value for kt switch instance * operation - UNC_OP_*,type of operation * data_type - UNC_DT_*,type of database - * @return : UPPL_RC_SUCCESS is returned when the validation is successful - * UPPL_RC_ERR_* is returned when validation is failure or associated error code + * @return : UNC_RC_SUCCESS is returned when the validation is successful + * UNC_UPPL_RC_ERR_* is returned when validation is failure or associated error code * */ -UpplReturnCode Kt_Switch::PerformSyntaxValidation( +UncRespCode Kt_Switch::PerformSyntaxValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { pfc_log_info("Inside PerformSyntax Validation of KT_SWITCH"); - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_ipcresp_t mandatory = PFC_TRUE; // Validate Key Structure @@ -585,14 +586,14 @@ UpplReturnCode Kt_Switch::PerformSyntaxValidation( map attr_syntax_map = attr_syntax_map_all[UNC_KT_SWITCH]; IS_VALID_STRING_KEY(CTR_NAME_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } value = reinterpret_cast(key->switch_id); IS_VALID_STRING_KEY(SWITCH_ID_STR, value, operation, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // Validate Value structure @@ -605,8 +606,8 @@ UpplReturnCode Kt_Switch::PerformSyntaxValidation( string value = reinterpret_cast(value_switch->description); IS_VALID_STRING_VALUE(SWITCH_DESCRIPTION_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate model @@ -614,16 +615,16 @@ UpplReturnCode Kt_Switch::PerformSyntaxValidation( value = reinterpret_cast(value_switch->model); IS_VALID_STRING_VALUE(SWITCH_MODEL_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate IP Address valid_val = PhyUtil::uint8touint(value_switch->valid[kIdxSwitchIPAddress]); IS_VALID_IPV4_VALUE(SWITCH_IP_ADDRESS_STR, value_switch->ip_address, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate ipv6 Address @@ -631,8 +632,8 @@ UpplReturnCode Kt_Switch::PerformSyntaxValidation( PhyUtil::uint8touint(value_switch->valid[kIdxSwitchIPV6Address]); IS_VALID_IPV6_VALUE(SWITCH_IPV6_ADDRESS_STR, value_switch->ipv6_address, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate admin_status @@ -640,8 +641,8 @@ UpplReturnCode Kt_Switch::PerformSyntaxValidation( PhyUtil::uint8touint(value_switch->valid[kIdxSwitchAdminStatus]); IS_VALID_INT_VALUE(SWITCH_ADMIN_STATUS_STR, value_switch->admin_status, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } // validate domain Name @@ -649,8 +650,8 @@ UpplReturnCode Kt_Switch::PerformSyntaxValidation( value = reinterpret_cast(value_switch->domain_name); IS_VALID_STRING_VALUE(SWITCH_DOMAIN_NAME_STR, value, operation, valid_val, ret_code, mandatory); - if (ret_code != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CFG_SYNTAX; + if (ret_code != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CFG_SYNTAX; } } return ret_code; @@ -663,16 +664,16 @@ UpplReturnCode Kt_Switch::PerformSyntaxValidation( * value_struct - specifies value of KT_SWITCH * operation - UNC_OP*,type of operation * data_type - UNC_DT*,type of database - * @return : UPPL_RC_SUCCESS if semantic validation is successful - * or UPPL_RC_ERR_* if failed + * @return : UNC_RC_SUCCESS if semantic validation is successful + * or UNC_UPPL_RC_ERR_* if failed * */ -UpplReturnCode Kt_Switch::PerformSemanticValidation( +UncRespCode Kt_Switch::PerformSemanticValidation( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, uint32_t operation, uint32_t data_type) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; pfc_log_debug("Inside PerformSemanticValidation of KT_SWITCH"); // Check whether the given instance of switch in DB key_switch_t *obj_key_switch = reinterpret_cast(key_struct); @@ -682,17 +683,17 @@ UpplReturnCode Kt_Switch::PerformSemanticValidation( vector switch_vect_key_value; switch_vect_key_value.push_back(controller_name); switch_vect_key_value.push_back(switch_id); - UpplReturnCode key_status = IsKeyExists(db_conn, + UncRespCode key_status = IsKeyExists(db_conn, (unc_keytype_datatype_t)data_type, switch_vect_key_value); pfc_log_debug("IsKeyExists status %d", key_status); // In case of create operation, key should not exist if (operation == UNC_OP_CREATE) { - if (key_status == UPPL_RC_SUCCESS) { + if (key_status == UNC_RC_SUCCESS) { pfc_log_error("Key instance already exists"); pfc_log_error("Hence create operation not allowed"); - status = UPPL_RC_ERR_INSTANCE_EXISTS; + status = UNC_UPPL_RC_ERR_INSTANCE_EXISTS; } else { pfc_log_info("key instance not exist create operation allowed"); } @@ -700,16 +701,16 @@ UpplReturnCode Kt_Switch::PerformSemanticValidation( } else if (operation == UNC_OP_UPDATE || operation == UNC_OP_DELETE || operation == UNC_OP_READ) { // In case of update/delete/read operation, key should exist - if (key_status != UPPL_RC_SUCCESS) { + if (key_status != UNC_RC_SUCCESS) { pfc_log_error("Key instance does not exist"); pfc_log_error("Hence update/delete/read operation not allowed"); - status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } else { pfc_log_info("key instance exist update/del/read operation allowed"); } } - if (operation == UNC_OP_CREATE && status == UPPL_RC_SUCCESS) { + if (operation == UNC_OP_CREATE && status == UNC_RC_SUCCESS) { vector parent_vect_key_value; parent_vect_key_value.push_back(controller_name); Kt_Controller KtObj; @@ -717,12 +718,12 @@ UpplReturnCode Kt_Switch::PerformSemanticValidation( if (data_type == UNC_DT_IMPORT) { parent_data_type = UNC_DT_RUNNING; } - UpplReturnCode parent_key_status = KtObj.IsKeyExists( + UncRespCode parent_key_status = KtObj.IsKeyExists( db_conn, (unc_keytype_datatype_t)parent_data_type, parent_vect_key_value); pfc_log_debug("Parent IsKeyExists status %d", parent_key_status); - if (parent_key_status != UPPL_RC_SUCCESS) { - status = UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; + if (parent_key_status != UNC_RC_SUCCESS) { + status = UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST; } } pfc_log_debug("status of SemanticValidation before returning=%d", status); @@ -737,16 +738,16 @@ UpplReturnCode Kt_Switch::PerformSemanticValidation( * operation - contains UNC_OP_CREATE or UNC_OP_DELETE * key_struct - indicate key instance of KT_SWITCH * value_struct - indicates the alarm value structure - * @return : UPPL_RC_SUCCESS if alarm is handled successfully or - * UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS if alarm is handled successfully or + * UNC_UPPL_RC_ERR* * */ -UpplReturnCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, uint32_t data_type, uint32_t alarm_type, uint32_t oper_type, void* key_struct, void* val_struct) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; key_switch_t *obj_key_switch = reinterpret_cast(key_struct); string controller_name = @@ -761,11 +762,11 @@ UpplReturnCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, pfc_log_info("alarm sent by driver is: %d", alarm_type); // Read old_alarm_status from db uint64_t alarm_status_db = 0; - UpplReturnCode read_alarm_status = GetAlarmStatus(db_conn, + UncRespCode read_alarm_status = GetAlarmStatus(db_conn, data_type, key_struct, alarm_status_db); - if (read_alarm_status != UPPL_RC_SUCCESS) { + if (read_alarm_status != UNC_RC_SUCCESS) { pfc_log_info("Reading alarm status from db failed with %d", read_alarm_status); return status; @@ -796,7 +797,7 @@ UpplReturnCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, } if (old_alarm_status == new_alarm_status) { pfc_log_info("old and new alarms status are same, so return"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Call UpdateKeyInstance to update the new alarm status and // new oper status value in DB @@ -816,7 +817,7 @@ UpplReturnCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, data_type, UNC_KT_SWITCH, old_value_struct); - if (status == UPPL_RC_SUCCESS && data_type != UNC_DT_IMPORT) { + if (status == UNC_RC_SUCCESS && data_type != UNC_DT_IMPORT) { // Send oper_status notification to north bound // From value_struct val_switch_st old_val_switch, new_val_switch; @@ -829,9 +830,9 @@ UpplReturnCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, new_val_switch.valid[kIdxSwitchAlarmStatus] = UNC_VF_VALID; int err = 0; ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_SWITCH, err); - northbound_event_header rsh = {UNC_OP_UPDATE, + northbound_event_header rsh = {static_cast(UNC_OP_UPDATE), data_type, - UNC_KT_SWITCH}; + static_cast(UNC_KT_SWITCH)}; err = PhyUtil::sessOutNBEventHeader(ser_evt, rsh); err |= ser_evt.addOutput(*obj_key_switch); err |= ser_evt.addOutput(new_val_switch); @@ -839,13 +840,13 @@ UpplReturnCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, if (err == 0) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Notify operstatus modifications - status = (UpplReturnCode) physical_layer + status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); pfc_log_info("Update alarm send status to NB: %d", status); } else { pfc_log_info("Error creating ServerEvent object"); - status = UPPL_RC_ERR_IPC_WRITE_ERROR; + status = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } else { pfc_log_info("Update alarm status in db status %d", status); @@ -863,19 +864,19 @@ UpplReturnCode Kt_Switch::HandleDriverAlarms(OdbcmConnectionHandler *db_conn, * @Description : This function checks whether the controller_id exists in DB * @param[in] : data_type - UNC_DT_*,type of database * key_values - contains switch_id - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* based in operation type + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* based in operation type * */ -UpplReturnCode Kt_Switch::IsKeyExists(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::IsKeyExists(OdbcmConnectionHandler *db_conn, unc_keytype_datatype_t data_type, const vector &key_values) { pfc_log_debug("Inside IsKeyExists"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode check_status = UPPL_RC_SUCCESS; + UncRespCode check_status = UNC_RC_SUCCESS; if (key_values.empty()) { // No key given, return failure pfc_log_error("No key given. Returning error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = key_values[0]; @@ -915,12 +916,12 @@ UpplReturnCode Kt_Switch::IsKeyExists(OdbcmConnectionHandler *db_conn, if (check_db_status == ODBCM_RC_CONNECTION_ERROR) { // log error to log daemon pfc_log_error("DB connection not available or cannot access DB"); - check_status = UPPL_RC_ERR_DB_ACCESS; + check_status = UNC_UPPL_RC_ERR_DB_ACCESS; } else if (check_db_status == ODBCM_RC_ROW_EXISTS) { pfc_log_debug("DB returned success for Row exists"); } else { pfc_log_info("DB Returned failure for IsRowExists"); - check_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + check_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } pfc_log_debug("check_status = %d", check_status); return check_status; @@ -939,7 +940,7 @@ UpplReturnCode Kt_Switch::IsKeyExists(OdbcmConnectionHandler *db_conn, * row_status- value of CsRowStatus * is_filtering-flag to indicate whether filter option enabled * is_state-flag to indicate whether data_type is DT_STATE - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR* * */ void Kt_Switch::PopulateDBSchemaForKtTable( OdbcmConnectionHandler *db_conn, @@ -1021,9 +1022,12 @@ void Kt_Switch::PopulateDBSchemaForKtTable( valid); if (read_sibling == true || (!switch_id.empty())) { vect_prim_keys.push_back(SWITCH_ID_STR); - } else if(read_sibling == false) + } else if (read_sibling == false) { vect_prim_keys.push_back(SWITCH_ID_STR); - pfc_log_debug("operation_type=%d read_sibling=%d vect_prim_keys.size=%d", operation_type, read_sibling, (uint32_t)vect_prim_keys.size()); + } + pfc_log_debug("operation_type=%d read_sibling=%d vect_prim_keys.size=%" + PFC_PFMT_SIZE_T, operation_type, read_sibling, + vect_prim_keys.size()); PhyUtil::reorder_col_attrs(vect_prim_keys, vect_table_attr_schema); kt_switch_dbtableschema.set_table_name(unc::uppl::SWITCH_TABLE); kt_switch_dbtableschema.set_primary_keys(vect_prim_keys); @@ -1191,8 +1195,8 @@ void Kt_Switch::FillSwitchValueStructure( } } vect_obj_val_switch.push_back(obj_val_switch); - pfc_log_debug("result - vect_obj_val_switch size: %d", - (unsigned int) vect_obj_val_switch.size()); + pfc_log_debug("result - vect_obj_val_switch size: %" + PFC_PFMT_SIZE_T, vect_obj_val_switch.size()); } return; } @@ -1209,9 +1213,9 @@ void Kt_Switch::FillSwitchValueStructure( * sess - ipc server session where the response has to be added * option1, option2 - additional condition associated with read operation * max_rep_ct - specifies no of rows to be returned - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR_* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR_* * */ -UpplReturnCode Kt_Switch::PerformRead(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::PerformRead(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t configuration_id, void* key_struct, @@ -1232,45 +1236,207 @@ UpplReturnCode Kt_Switch::PerformRead(OdbcmConnectionHandler *db_conn, option1, option2, data_type, - 0}; + static_cast(0)}; if (operation_type == UNC_OP_READ) { max_rep_ct = 1; } key_switch_t *obj_key_switch = reinterpret_cast(key_struct); + string controller_name = (const char*)obj_key_switch-> + ctr_key.controller_name; // Invalid Operation if (option1 != UNC_OPT1_NORMAL) { - pfc_log_error("Invalid option1 specified for read operation"); - rsh.result_code = UPPL_RC_ERR_INVALID_OPTION1; + if (!(option1 == UNC_OPT1_DETAIL && operation_type == UNC_OP_READ)) { + pfc_log_error("Invalid option1 specified for read operation"); + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION1; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_SWITCH); + err |= sess.addOutput(*obj_key_switch); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + } + if (option2 != UNC_OPT2_NONE) { + pfc_log_error("Invalid option2 specified for read operation"); + rsh.result_code = UNC_UPPL_RC_ERR_INVALID_OPTION2; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_SWITCH); err |= sess.addOutput(*obj_key_switch); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if ((unc_keytype_datatype_t)data_type != UNC_DT_STATE) { pfc_log_error("Read operation is provided on unsuported data type"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; int err = PhyUtil::sessOutRespHeader(sess, rsh); err |= sess.addOutput((uint32_t)UNC_KT_SWITCH); err |= sess.addOutput(*obj_key_switch); if (err != 0) { pfc_log_error("addOutput failed for physical_response_header"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } + // U12 begin + if (operation_type == UNC_OP_READ && option1 == UNC_OPT1_DETAIL + && option2 == UNC_OPT2_NONE) { + // Not allowing the stand by request + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + if (physical_layer->get_physical_core()->get_system_state() == \ + UPPL_SYSTEM_ST_STANDBY) { + pfc_log_error("System is in Standby mode"); + rsh.result_code = UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; + rsh.max_rep_count = 0; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t) UNC_KT_SWITCH); + err |= sess.addOutput(*obj_key_switch); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + + // Getting the state values from DB + vector vect_switch_id; + vector vect_val_switch_st; + UncRespCode read_status = ReadSwitchValFromDB(db_conn, + obj_key_switch, + val_struct, + data_type, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + + if (read_status != UNC_RC_SUCCESS) { + rsh.result_code = read_status; + rsh.max_rep_count = 0; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t) UNC_KT_SWITCH); + err |= sess.addOutput(*obj_key_switch); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } - UpplReturnCode read_status = UPPL_RC_SUCCESS; + // Checking if key strucute is not present + if (vect_switch_id.size() == 0 || vect_val_switch_st.size() == 0) { + rsh.result_code = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; + int err = sess.addOutput((uint32_t) UNC_KT_SWITCH); + err |= sess.addOutput(*obj_key_switch); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + val_switch_st_detail_t val_switch_detail; + memset(&val_switch_detail, 0, sizeof(val_switch_st_detail_t)); + string domain_id = ""; + ClientSession *cli_session = NULL; + unc_keytype_ctrtype_t controller_type = UNC_CT_UNKNOWN; + UncRespCode ret_code = PhyUtil::get_controller_type( + db_conn, + controller_name, + controller_type, + UNC_DT_STATE); + if (ret_code == UNC_RC_SUCCESS && controller_type == UNC_CT_PFC) { + UncRespCode err_drv = UNC_RC_SUCCESS; + UncRespCode driver_response = UNC_RC_SUCCESS; + IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, err_drv); + cli_session = pfc_drv_handler.ResetAndGetSession(); + driver_request_header rqh = {(uint32_t)0, (uint32_t)0, controller_name, + domain_id, operation_type, (uint32_t)0, + static_cast(UNC_OPT1_DETAIL), + static_cast(UNC_OPT2_NONE), + static_cast(UNC_DT_STATE), + static_cast(UNC_KT_SWITCH)}; + int err = PhyUtil::sessOutDriverReqHeader(*cli_session, rqh); + if (err == UNC_RC_SUCCESS) { + // get the response from driver and the fill the result in the session + err = cli_session->addOutput(*obj_key_switch); + if (err == 0) { + driver_response_header rsp; + driver_response = pfc_drv_handler.SendReqAndGetResp(rsp); + if (driver_response == UNC_RC_SUCCESS) { + // Add the response in the session object + key_switch_t key_switch_drv; + int err1 = cli_session->getResponse(11, key_switch_drv); + pfc_log_info("key value is %s", + reinterpret_cast(key_switch_drv.switch_id)); + if (err1 != UNC_RC_SUCCESS) { + pfc_log_error("Read operation has failed" + "after reading response of key"); + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + if (memcmp(key_switch_drv.switch_id, + vect_switch_id[0].switch_id, + sizeof(key_switch_drv.switch_id)) == 0) { + err1 = cli_session->getResponse(12, val_switch_detail); + pfc_log_info("got the Values from the driver"); + if (err1 != UNC_RC_SUCCESS) { + pfc_log_error("Read operation has failed" + "after reading response of val"); + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + } + } + } else { + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + } else { + driver_response = UNC_UPPL_RC_ERR_DRIVER_COMMUNICATION_FAILURE; + } + if (driver_response != UNC_RC_SUCCESS) { + pfc_log_error("Driver communication failures %d", driver_response); + rsh.result_code = driver_response; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t)UNC_KT_SWITCH); + err |= sess.addOutput(*obj_key_switch); + if (err != 0) { + pfc_log_error("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + } + pfc_log_info("Received the values from state DB"); + memcpy(&val_switch_detail.switch_st_val, &vect_val_switch_st[0], + sizeof(val_switch_detail.switch_st_val)); + val_switch_detail.valid[0] = 1; + pfc_log_info("Key matched from DB and Driver"); + rsh.result_code = UNC_RC_SUCCESS; + int err = PhyUtil::sessOutRespHeader(sess, rsh); + err |= sess.addOutput((uint32_t) UNC_KT_SWITCH); + err |= sess.addOutput(*obj_key_switch); + err |= sess.addOutput(val_switch_detail); + pfc_log_debug("Key Structure: %s", + IpctUtil::get_string(*obj_key_switch).c_str()); + pfc_log_debug("Val structre: %s", + IpctUtil::get_string(val_switch_detail).c_str()); + if (err != 0) { + pfc_log_debug("addOutput failed for physical_response_header"); + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; + } + return UNC_RC_SUCCESS; + } + // U12 end // Read operations will return switch_st based on modified fd vector vect_switch_id; vector vect_val_switch_st; + UncRespCode read_status = UNC_RC_SUCCESS; read_status = ReadSwitchValFromDB(db_conn, key_struct, val_struct, data_type, @@ -1281,14 +1447,14 @@ UpplReturnCode Kt_Switch::PerformRead(OdbcmConnectionHandler *db_conn, PFC_FALSE); rsh.result_code = read_status; rsh.max_rep_count = max_rep_ct; - if (read_status == UPPL_RC_SUCCESS) { + if (read_status == UNC_RC_SUCCESS) { int err = PhyUtil::sessOutRespHeader(sess, rsh); if (err != 0) { pfc_log_error("Failure in addOutput"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - pfc_log_debug("From db, vect_switch_id size is %d", - static_cast(vect_switch_id.size())); + pfc_log_debug("From db, vect_switch_id size is %" + PFC_PFMT_SIZE_T, vect_switch_id.size()); for (unsigned int index = 0; index < vect_switch_id.size(); ++index) { @@ -1306,12 +1472,12 @@ UpplReturnCode Kt_Switch::PerformRead(OdbcmConnectionHandler *db_conn, err |= sess.addOutput(*obj_key_switch); if (err != 0) { pfc_log_error("Failure in addOutput"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } pfc_log_debug("Read operation status = %d", read_status); } - pfc_log_debug("Return Value for read operation %d", UPPL_RC_SUCCESS); - return UPPL_RC_SUCCESS; + pfc_log_debug("Return Value for read operation %d", UNC_RC_SUCCESS); + return UNC_RC_SUCCESS; } /** ReadSwitchValFromDB @@ -1325,9 +1491,9 @@ UpplReturnCode Kt_Switch::PerformRead(OdbcmConnectionHandler *db_conn, * vect_val_switch_st - vector of type val_switch_st * switch_id - vector of type key_switch * is_state - bool variable to specify the state - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR_* + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR_* * */ -UpplReturnCode Kt_Switch::ReadSwitchValFromDB( +UncRespCode Kt_Switch::ReadSwitchValFromDB( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -1339,10 +1505,10 @@ UpplReturnCode Kt_Switch::ReadSwitchValFromDB( pfc_bool_t is_state) { if (operation_type < UNC_OP_READ) { // Unsupported operation type for this function - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode read_status = UPPL_RC_SUCCESS; + UncRespCode read_status = UNC_RC_SUCCESS; ODBCM_RC_STATUS read_db_status = ODBCM_RC_SUCCESS; // Common structures that will be used to send query to ODBC @@ -1368,14 +1534,14 @@ UpplReturnCode Kt_Switch::ReadSwitchValFromDB( } if (read_db_status == ODBCM_RC_RECORD_NOT_FOUND) { pfc_log_debug("No record found"); - read_status = UPPL_RC_ERR_NO_SUCH_INSTANCE; + read_status = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; return read_status; } else if (read_db_status == ODBCM_RC_CONNECTION_ERROR) { - read_status = UPPL_RC_ERR_DB_ACCESS; + read_status = UNC_UPPL_RC_ERR_DB_ACCESS; pfc_log_error("Read operation has failed with error %d", read_db_status); return read_status; } else if (read_db_status != ODBCM_RC_SUCCESS) { - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; pfc_log_info("Read operation status from odbcm = %d", read_db_status); return read_status; } @@ -1386,11 +1552,11 @@ UpplReturnCode Kt_Switch::ReadSwitchValFromDB( max_rep_ct, operation_type, vect_switch_id); - pfc_log_debug("vect_val_switch_st size: %d", - (unsigned int)vect_val_switch_st.size()); + pfc_log_debug("vect_val_switch_st size: %" + PFC_PFMT_SIZE_T, vect_val_switch_st.size()); if (vect_val_switch_st.empty()) { // Read failed , return error - read_status = UPPL_RC_ERR_DB_GET; + read_status = UNC_UPPL_RC_ERR_DB_GET; // log error to log daemon pfc_log_error("Read operation has failed after reading response"); return read_status; @@ -1513,19 +1679,17 @@ void Kt_Switch::Fill_Attr_Syntax_Map() { * @param[in]: data_type-type of database,UNC_DT_* * key_struct - key structure of kt switch * value_struct - value structure of kt switch - * @return: UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return: UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ -UpplReturnCode Kt_Switch::HandleOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::HandleOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, void *value_struct) { - FN_START_TIME("HandleOperStatus", "Switch"); PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; if (key_struct == NULL) { - return_code = UPPL_RC_ERR_BAD_REQUEST; - FN_END_TIME("HandleOperStatus", "Switch"); + return_code = UNC_UPPL_RC_ERR_BAD_REQUEST; return return_code; } key_switch_t *obj_key_switch = @@ -1540,15 +1704,15 @@ UpplReturnCode Kt_Switch::HandleOperStatus(OdbcmConnectionHandler *db_conn, uint8_t ctrl_oper_status = 0; UpplSwitchOperStatus switch_oper_status = UPPL_SWITCH_OPER_UNKNOWN; Kt_Controller controller; - UpplReturnCode read_status = controller. + UncRespCode read_status = controller. GetOperStatus(db_conn, data_type, reinterpret_cast(&ctr_key), ctrl_oper_status); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("Controller's oper_status read returned failure"); return read_status; } vector ref_oper_status; - ADD_CTRL_OPER_STATUS(controller_name, ctrl_oper_status); + ADD_CTRL_OPER_STATUS(controller_name, ctrl_oper_status, ref_oper_status); pfc_log_info("Controller's oper_status %d", ctrl_oper_status); if (ctrl_oper_status == (UpplControllerOperStatus) UPPL_CONTROLLER_OPER_UP) { @@ -1641,13 +1805,12 @@ UpplReturnCode Kt_Switch::HandleOperStatus(OdbcmConnectionHandler *db_conn, vectSwitchKey.begin(); for (; keyItr != vectSwitchKey.end(); ++keyItr) { key_switch_t objKeySwitch = *keyItr; - ADD_SWITCH_OPER_STATUS(objKeySwitch, switch_oper_status); + ADD_SWITCH_OPER_STATUS(objKeySwitch, switch_oper_status, ref_oper_status); return_code = NotifyOperStatus(db_conn, data_type, reinterpret_cast (&objKeySwitch), NULL, ref_oper_status); pfc_log_debug("Notify Oper status return %d", return_code); } - FN_END_TIME("HandleOperStatus", "Switch"); ClearOperStatusHolder(ref_oper_status); return return_code; } @@ -1658,15 +1821,15 @@ UpplReturnCode Kt_Switch::HandleOperStatus(OdbcmConnectionHandler *db_conn, * @param[in] : key_struct - key structure of kt switch * values_struct - value structure of kt switch * data_type-UNC_DT_*,type of database - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ -UpplReturnCode Kt_Switch::NotifyOperStatus( +UncRespCode Kt_Switch::NotifyOperStatus( OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, void* value_struct, vector &ref_oper_status) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; key_switch_t *obj_key_switch = reinterpret_cast(key_struct); string switch_id = (const char*)obj_key_switch->switch_id; @@ -1731,9 +1894,9 @@ UpplReturnCode Kt_Switch::NotifyOperStatus( * @param[in]: key_struct - key structure of kt switch * oper_status - specifies the oper status * data_type-UNC_DT_*,type of database - * @return: UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return: UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ -UpplReturnCode Kt_Switch::GetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::GetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint8_t &oper_status) { @@ -1777,7 +1940,7 @@ UpplReturnCode Kt_Switch::GetOperStatus(OdbcmConnectionHandler *db_conn, kt_switch_dbtableschema, db_conn); if (update_db_status != ODBCM_RC_SUCCESS) { pfc_log_info("oper_status read operation failed %d", update_db_status); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper status value list < vector >& res_switch_row_list = @@ -1805,7 +1968,7 @@ UpplReturnCode Kt_Switch::GetOperStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** SetOperStatus @@ -1813,9 +1976,9 @@ UpplReturnCode Kt_Switch::GetOperStatus(OdbcmConnectionHandler *db_conn, * @param[in]: key_struct - key structure of kt switch * oper_status - specifies the oper status of kt switch * data_type-UNC_DT_*,type of database - * @return: UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return: UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ -UpplReturnCode Kt_Switch::SetOperStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::SetOperStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void *key_struct, UpplSwitchOperStatus oper_status) { @@ -1823,10 +1986,10 @@ UpplReturnCode Kt_Switch::SetOperStatus(OdbcmConnectionHandler *db_conn, key_switch_t *obj_key_switch = reinterpret_cast(key_struct); uint8_t old_oper_status = 0; - UpplReturnCode read_status = GetOperStatus(db_conn, data_type, + UncRespCode read_status = GetOperStatus(db_conn, data_type, key_struct, old_oper_status); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("Unable to get the old oper status of switch"); return read_status; } @@ -1870,7 +2033,7 @@ UpplReturnCode Kt_Switch::SetOperStatus(OdbcmConnectionHandler *db_conn, } else if (update_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("oper_status update operation failed"); - return UPPL_RC_ERR_DB_UPDATE; + return UNC_UPPL_RC_ERR_DB_UPDATE; } else { // Notify operstatus change to northbound val_switch_st old_val_switch, new_val_switch; @@ -1883,9 +2046,9 @@ UpplReturnCode Kt_Switch::SetOperStatus(OdbcmConnectionHandler *db_conn, int err = 0; // Send notification to Northbound ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_SWITCH, err); - northbound_event_header rsh = {UNC_OP_UPDATE, + northbound_event_header rsh = {static_cast(UNC_OP_UPDATE), data_type, - UNC_KT_SWITCH}; + static_cast(UNC_KT_SWITCH)}; err = PhyUtil::sessOutNBEventHeader(ser_evt, rsh); err |= ser_evt.addOutput(*obj_key_switch); err |= ser_evt.addOutput(new_val_switch); @@ -1893,14 +2056,14 @@ UpplReturnCode Kt_Switch::SetOperStatus(OdbcmConnectionHandler *db_conn, if (err == 0) { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); // Notify operstatus modifications - UpplReturnCode status = (UpplReturnCode) physical_layer + UncRespCode status = (UncRespCode) physical_layer ->get_ipc_connection_manager()->SendEvent(&ser_evt); pfc_log_debug("Event notification status %d", status); } else { pfc_log_info("Error creating ServerEvent object"); } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** GetAlarmStatus @@ -1908,10 +2071,10 @@ UpplReturnCode Kt_Switch::SetOperStatus(OdbcmConnectionHandler *db_conn, * @param[in]: key_struct - key structure of kt switch * alarm status - specifies the alarm status * data_type - UNC_DT_*,type of database - * @return: UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return: UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ -UpplReturnCode Kt_Switch::GetAlarmStatus(OdbcmConnectionHandler *db_conn, +UncRespCode Kt_Switch::GetAlarmStatus(OdbcmConnectionHandler *db_conn, uint32_t data_type, void* key_struct, uint64_t &alarms_status) { @@ -1955,7 +2118,7 @@ UpplReturnCode Kt_Switch::GetAlarmStatus(OdbcmConnectionHandler *db_conn, kt_switch_dbtableschema, db_conn); if (update_db_status != ODBCM_RC_SUCCESS) { pfc_log_info("oper_status read operation failed %d", update_db_status); - return UPPL_RC_ERR_DB_GET; + return UNC_UPPL_RC_ERR_DB_GET; } // read the oper status value @@ -1984,7 +2147,7 @@ UpplReturnCode Kt_Switch::GetAlarmStatus(OdbcmConnectionHandler *db_conn, } } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** UpdateSwitchValidFlag @@ -1993,22 +2156,22 @@ UpplReturnCode Kt_Switch::GetAlarmStatus(OdbcmConnectionHandler *db_conn, * val_struct-value instance for KT_SWITCH * val_switch_valid_st-pointer to val_switch_st_t * @param[out]: new_valid_val-any value of unc_keytype_validflag_t - * @return: UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return: UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ -UpplReturnCode Kt_Switch::UpdateSwitchValidFlag( +UncRespCode Kt_Switch::UpdateSwitchValidFlag( OdbcmConnectionHandler *db_conn, void *key_struct, void *val_struct, val_switch_st_t &val_switch_valid_st, unc_keytype_validflag_t new_valid_val, uint32_t data_type) { - UpplReturnCode return_code = UPPL_RC_SUCCESS; + UncRespCode return_code = UNC_RC_SUCCESS; vector vect_switch_key; vector vect_switch_val; vect_switch_key.push_back(key_struct); vect_switch_val.push_back(val_struct); return_code = ReadInternal(db_conn, vect_switch_key, vect_switch_val, data_type, UNC_OP_READ); - if (return_code != UPPL_RC_SUCCESS) { + if (return_code != UNC_RC_SUCCESS) { return return_code; } val_switch_st_t *obj_val_switch = @@ -2166,9 +2329,9 @@ UpplReturnCode Kt_Switch::UpdateSwitchValidFlag( * @param[in] : key_struct-void* to switch key instance * value_struct-void* to switch value instance * valid_new-string indicating the valid flag - * @return :Success or associated error code,UPPL_RC_SUCCESS/UPPL_RC_ERR_* + * @return :Success or associated error code,UNC_RC_SUCCESS/UNC_UPPL_RC_ERR_* */ -UpplReturnCode Kt_Switch::PopulateSchemaForValidFlag( +UncRespCode Kt_Switch::PopulateSchemaForValidFlag( OdbcmConnectionHandler *db_conn, void* key_struct, void* val_struct, @@ -2211,16 +2374,16 @@ UpplReturnCode Kt_Switch::PopulateSchemaForValidFlag( if (update_db_status != ODBCM_RC_SUCCESS) { // log error pfc_log_error("domain id update operation failed"); - return UPPL_RC_ERR_DB_UPDATE; + return UNC_UPPL_RC_ERR_DB_UPDATE; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** FrameValidValue * @Description : This function converts the string value from db to uint8 * @param[in] : attr_value-string containg the attribute value * obj_val_switch- object of val_switch_st - * @return : Success or associated error code,UPPL_RC_SUCCESS/UPPL_RC_ERR_* + * @return : Success or associated error code,UNC_RC_SUCCESS/UNC_UPPL_RC_ERR_* * */ void Kt_Switch::FrameValidValue(string attr_value, val_switch_st &obj_val_switch) { @@ -2248,7 +2411,7 @@ void Kt_Switch::FrameValidValue(string attr_value, * val_switch_valid_st-instance of val_switch_st_t * valid-stringstream instance * operation_type - UNC_OP*,type of operation requested - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ void Kt_Switch::GetSwitchValStructure( OdbcmConnectionHandler *db_conn, @@ -2260,16 +2423,22 @@ void Kt_Switch::GetSwitchValStructure( stringstream &valid) { uint16_t valid_val = 0, prev_db_val = 0; unsigned int valid_value_struct = UNC_VF_VALID; + if (obj_val_switch != NULL) { valid_value_struct = PhyUtil::uint8touint( obj_val_switch->valid[kIdxSwitch]); } + string value; // Description - if (obj_val_switch != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. + if (obj_val_switch != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. valid[kIdxSwitchDescription]); - value = (const char*)obj_val_switch->switch_val.description; + value = (const char*)obj_val_switch->switch_val.description; + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2285,10 +2454,14 @@ void Kt_Switch::GetSwitchValStructure( vect_table_attr_schema, vect_prim_keys, valid); value.clear(); // model - if (obj_val_switch != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. + if (obj_val_switch != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. valid[kIdxSwitchModel]); - value = (const char*)obj_val_switch->switch_val.model; + value = (const char*)obj_val_switch->switch_val.model; + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2305,15 +2478,19 @@ void Kt_Switch::GetSwitchValStructure( // Ip_address char *ip_value = new char[16]; memset(ip_value, '\0', 16); - if (obj_val_switch != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint( + if (obj_val_switch != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint( obj_val_switch->switch_val. valid[kIdxSwitchIPAddress]); - pfc_log_debug("ip_address : %d", + pfc_log_debug("ip_address : %d", obj_val_switch->switch_val.ip_address.s_addr); - inet_ntop(AF_INET, &obj_val_switch->switch_val.ip_address, + inet_ntop(AF_INET, &obj_val_switch->switch_val.ip_address, ip_value, INET_ADDRSTRLEN); - pfc_log_debug("ip_address: %s", ip_value); + pfc_log_debug("ip_address: %s", ip_value); + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2331,11 +2508,15 @@ void Kt_Switch::GetSwitchValStructure( // IPV6 Address ip_value = new char[16]; memset(ip_value, '\0', 16); - if (obj_val_switch != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. + if (obj_val_switch != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. valid[kIdxSwitchIPV6Address]); - inet_ntop(AF_INET6, &obj_val_switch->switch_val.ipv6_address, + inet_ntop(AF_INET6, &obj_val_switch->switch_val.ipv6_address, ip_value, INET6_ADDRSTRLEN); + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2351,11 +2532,15 @@ void Kt_Switch::GetSwitchValStructure( delete []ip_value; value.clear(); // Admin Status - if (obj_val_switch != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. + if (obj_val_switch != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. valid[kIdxSwitchAdminStatus]); - value = PhyUtil::uint8tostr(obj_val_switch-> + value = PhyUtil::uint8tostr(obj_val_switch-> switch_val.admin_status); + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2370,10 +2555,14 @@ void Kt_Switch::GetSwitchValStructure( vect_table_attr_schema, vect_prim_keys, valid); value.clear(); // Domain Name - if (obj_val_switch != NULL && valid_value_struct == UNC_VF_VALID) { - valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. + if (obj_val_switch != NULL) { + if (valid_value_struct == UNC_VF_VALID) { + valid_val = PhyUtil::uint8touint(obj_val_switch->switch_val. valid[kIdxSwitchDomainName]); - value = (const char*)obj_val_switch->switch_val.domain_name; + value = (const char*)obj_val_switch->switch_val.domain_name; + } else if (valid_value_struct == UNC_VF_VALID_NO_VALUE) { + valid_val = UNC_VF_VALID_NO_VALUE; + } if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( @@ -2398,7 +2587,7 @@ void Kt_Switch::GetSwitchValStructure( * val_switch_valid_st-instance of val_switch_st_t * valid-stringstream instance * operation_type - UNC_OP*,type of operation - * @return : UPPL_RC_SUCCESS or UPPL_RC_ERR*,Success or associated error code + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_ERR*,Success or associated error code * */ void Kt_Switch::GetSwitchStateValStructure( OdbcmConnectionHandler *db_conn, @@ -2420,7 +2609,7 @@ void Kt_Switch::GetSwitchStateValStructure( if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( - val_switch_valid_st->switch_val.valid[kIdxSwitchOperStatus]); + val_switch_valid_st->valid[kIdxSwitchOperStatus]); } } else { valid_val = UPPL_NO_VAL_STRUCT; @@ -2440,7 +2629,7 @@ void Kt_Switch::GetSwitchStateValStructure( if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( - val_switch_valid_st->switch_val.valid[kIdxSwitchManufacturer]); + val_switch_valid_st->valid[kIdxSwitchManufacturer]); } } else { valid_val = UPPL_NO_VAL_STRUCT; @@ -2460,7 +2649,7 @@ void Kt_Switch::GetSwitchStateValStructure( if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( - val_switch_valid_st->switch_val.valid[kIdxSwitchHardware]); + val_switch_valid_st->valid[kIdxSwitchHardware]); } } else { valid_val = UPPL_NO_VAL_STRUCT; @@ -2480,7 +2669,7 @@ void Kt_Switch::GetSwitchStateValStructure( if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( - val_switch_valid_st->switch_val.valid[kIdxSwitchSoftware]); + val_switch_valid_st->valid[kIdxSwitchSoftware]); } } else { valid_val = UPPL_NO_VAL_STRUCT; @@ -2500,7 +2689,7 @@ void Kt_Switch::GetSwitchStateValStructure( if (operation_type == UNC_OP_UPDATE) { prev_db_val = PhyUtil::uint8touint( - val_switch_valid_st->switch_val.valid[kIdxSwitchAlarmStatus]); + val_switch_valid_st->valid[kIdxSwitchAlarmStatus]); } } else { valid_val = UPPL_NO_VAL_STRUCT; diff --git a/coordinator/modules/uppl/itc_notification_request.cc b/coordinator/modules/uppl/itc_notification_request.cc index 4cd281ee..33fc9d6c 100644 --- a/coordinator/modules/uppl/itc_notification_request.cc +++ b/coordinator/modules/uppl/itc_notification_request.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -54,20 +54,20 @@ pfc_bool_t NotificationRequest::ProcessEvent(const IpcEvent &event) { pfc_ipcevtype_t event_type(event.getType()); if (event_type == UNC_PHYSICAL_EVENTS || event_type == UNC_CTLR_STATE_EVENTS) { - UpplReturnCode err = ProcessNotificationEvents(event); - if (err != UPPL_RC_SUCCESS) { + UncRespCode err = ProcessNotificationEvents(event); + if (err != UNC_RC_SUCCESS) { pfc_log_error("ProcessNotificationEvents failed error no: %d", err); return PFC_FALSE; } } else if (event_type == UNC_ALARMS) { - UpplReturnCode err = ProcessAlarmEvents(event); - if (err != UPPL_RC_SUCCESS) { + UncRespCode err = ProcessAlarmEvents(event); + if (err != UNC_RC_SUCCESS) { pfc_log_error("ProcessAlarmEvents failed error no: %d", err); return PFC_FALSE; } } else { pfc_log_error("Invalid event type error no: %d", - UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED); + UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED); return PFC_FALSE; } return PFC_TRUE; @@ -86,7 +86,7 @@ pfc_bool_t NotificationRequest::ProcessEvent(const IpcEvent &event) { * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest::InvokeKtDriverEvent( +UncRespCode NotificationRequest::InvokeKtDriverEvent( OdbcmConnectionHandler *db_conn, uint32_t operation, uint32_t data_type, @@ -95,7 +95,7 @@ UpplReturnCode NotificationRequest::InvokeKtDriverEvent( void *old_val_struct, uint32_t key_type) { Kt_State_Base *ObjStateNotify = NULL; - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; switch (key_type) { case UNC_KT_PORT: { ObjStateNotify = new Kt_Port(); @@ -119,7 +119,7 @@ UpplReturnCode NotificationRequest::InvokeKtDriverEvent( } default: { pfc_log_error("Invalid key type\n"); - return UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; } } switch (operation) { @@ -158,7 +158,7 @@ UpplReturnCode NotificationRequest::InvokeKtDriverEvent( { pfc_log_error("Invalid operation type\n"); delete ObjStateNotify; - return UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; } } return status; @@ -170,23 +170,23 @@ UpplReturnCode NotificationRequest::InvokeKtDriverEvent( * @param[in]:event- an object of IpcEvent,contains the event posted by driver. * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest::ProcessNotificationEvents( +UncRespCode NotificationRequest::ProcessNotificationEvents( const IpcEvent &event) { pfc_log_info("Inside ProcessNotificationEvents of NotificationRequest"); - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; ClientSession sess(event.getSession()); /*validate valid response count for Notification event structure*/ uint32_t resp_count = sess.getResponseCount(); if (resp_count < (uint32_t)6) { pfc_log_error("Invalid event structure - Resp Count %d", resp_count); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } driver_event_header event_header; uint32_t header_parse = PhyUtil::sessGetDriverEventHeader(sess, event_header); if (header_parse != 0) { pfc_log_error("Unable to parse event header successfully"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } uint32_t data_type = event_header.data_type; uint32_t operation = event_header.operation; @@ -197,7 +197,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( status = ProcessPortEvents(&sess, data_type, operation); - if (status == UPPL_RC_ERR_BAD_REQUEST) { + if (status == UNC_UPPL_RC_ERR_BAD_REQUEST) { return status; } break; @@ -207,7 +207,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( status = ProcessSwitchEvents(&sess, data_type, operation); - if (status == UPPL_RC_ERR_BAD_REQUEST) { + if (status == UNC_UPPL_RC_ERR_BAD_REQUEST) { return status; } break; @@ -217,7 +217,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( status = ProcessLinkEvents(&sess, data_type, operation); - if (status == UPPL_RC_ERR_BAD_REQUEST) { + if (status == UNC_UPPL_RC_ERR_BAD_REQUEST) { return status; } break; @@ -227,7 +227,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( status = ProcessControllerEvents(&sess, data_type, operation); - if (status == UPPL_RC_ERR_BAD_REQUEST) { + if (status == UNC_UPPL_RC_ERR_BAD_REQUEST) { return status; } break; @@ -237,7 +237,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( status = ProcessDomainEvents(&sess, data_type, operation); - if (status == UPPL_RC_ERR_BAD_REQUEST) { + if (status == UNC_UPPL_RC_ERR_BAD_REQUEST) { return status; } break; @@ -247,7 +247,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( status = ProcessLogicalPortEvents(&sess, data_type, operation); - if (status == UPPL_RC_ERR_BAD_REQUEST) { + if (status == UNC_UPPL_RC_ERR_BAD_REQUEST) { return status; } break; @@ -257,7 +257,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( status = ProcessLogicalMemeberPortEvents(&sess, data_type, operation); - if (status == UPPL_RC_ERR_BAD_REQUEST) { + if (status == UNC_UPPL_RC_ERR_BAD_REQUEST) { return status; } break; @@ -265,7 +265,7 @@ UpplReturnCode NotificationRequest::ProcessNotificationEvents( default: { pfc_log_error("Invalid key type\n"); - return UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; } } return status; @@ -296,32 +296,32 @@ void NotificationRequest::GetNotificationDT(OdbcmConnectionHandler *db_conn, * @param[in]:event-an object of IpcEvent,contains the event posted by driver * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { +UncRespCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { pfc_log_info("Inside ProcessAlarmEvents of NotificationRequest"); // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock( PhysicalLayer::get_events_done_lock_(), PFC_FALSE); // read lock - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; ClientSession sess(event.getSession()); /*validate valid response count for Notification event structure*/ uint32_t resp_count = sess.getResponseCount(); if (resp_count < (uint32_t)7) { pfc_log_error("Invalid alarm structure"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } /*Get key type, operation type and alarm type from IpcEvent*/ driver_alarm_header alarm_header; uint32_t header_parse = PhyUtil::sessGetDriverAlarmHeader(sess, alarm_header); if (header_parse != 0) { pfc_log_error("Unable to parse alarms header successfully"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } uint32_t data_type = alarm_header.data_type; pfc_log_debug("Alarm Type %d", alarm_header.alarm_type); @@ -332,15 +332,21 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { int read_err = sess.getResponse((uint32_t)6, key_ctr); if (read_err != 0) { pfc_log_error("Key not received for controller"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(key_ctr).c_str()); + if ((alarm_header.operation != UNC_OP_CREATE) && + (alarm_header.operation != UNC_OP_DELETE)) { + pfc_log_info("Invalid alarm operation : %d", + alarm_header.operation); + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; + } if (alarm_header.alarm_type == UNC_PHYS_PATH_FAULT) { val_phys_path_fault_alarm_t val_ctr_alarm_struct; int read_err = sess.getResponse((uint32_t)7, val_ctr_alarm_struct); if (read_err != 0) { pfc_log_error("Value not received for controller"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } string controller_name = reinterpret_cast (key_ctr.controller_name); @@ -355,7 +361,7 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { } else { pfc_log_info("Invalid alarm type for UNC_KT_CONTROLLER: %d", alarm_header.alarm_type); - return UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } } else if (alarm_header.key_type == UNC_KT_CTR_DOMAIN) { /*process domain related alarm*/ @@ -364,17 +370,23 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { int read_err = sess.getResponse((uint32_t)6, key_ctr_domain); if (read_err != 0) { pfc_log_error("Key not received for ctr domain"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(key_ctr_domain).c_str()); - Kt_Base *NotifyDomain = new Kt_Ctr_Domain(); - if (NotifyDomain == NULL) { - pfc_log_error("Memory not allocated for Notifydomain"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + if ((alarm_header.operation != UNC_OP_CREATE) && + (alarm_header.operation != UNC_OP_DELETE)) { + pfc_log_info("Invalid alarm operation : %d", + alarm_header.operation); + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } if (alarm_header.alarm_type == UNC_COREDOMAIN_SPLIT) { string controller_name = reinterpret_cast (key_ctr_domain.ctr_key.controller_name); + Kt_Base *NotifyDomain = new Kt_Ctr_Domain(); + if (NotifyDomain == NULL) { + pfc_log_error("Memory not allocated for Notifydomain"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } GetNotificationDT(&db_conn, controller_name, data_type); status = NotifyDomain->HandleDriverAlarms( &db_conn, data_type, alarm_header.alarm_type, alarm_header.operation, @@ -385,8 +397,7 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { } else { pfc_log_info("Invalid alarm type for UNC_KT_CTR_DOMAIN: %d", alarm_header.alarm_type); - delete NotifyDomain; - return UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } } else if (alarm_header.key_type == UNC_KT_LOGICAL_PORT) { /*process logical port related alarm*/ @@ -395,17 +406,23 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { int read_err = sess.getResponse((uint32_t)6, key_logicalport); if (read_err != 0) { pfc_log_error("Key not received for logical port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(key_logicalport).c_str()); - Kt_Base *NotifyLogicalPort = new Kt_LogicalPort(); - if (NotifyLogicalPort == NULL) { - pfc_log_error("Memory not allocated for NotifyLogicalPort"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + if ((alarm_header.operation != UNC_OP_CREATE) && + (alarm_header.operation != UNC_OP_DELETE)) { + pfc_log_info("Invalid alarm operation : %d", + alarm_header.operation); + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } if (alarm_header.alarm_type == UNC_SUBDOMAIN_SPLIT) { string controller_name = reinterpret_cast (key_logicalport.domain_key.ctr_key.controller_name); + Kt_Base *NotifyLogicalPort = new Kt_LogicalPort(); + if (NotifyLogicalPort == NULL) { + pfc_log_error("Memory not allocated for NotifyLogicalPort"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } GetNotificationDT(&db_conn, controller_name, data_type); status = NotifyLogicalPort->HandleDriverAlarms( &db_conn, data_type, alarm_header.alarm_type, alarm_header.operation, @@ -416,8 +433,7 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { } else { pfc_log_info("Invalid alarm type for UNC_KT_LOGICAL_PORT: %d", alarm_header.alarm_type); - delete NotifyLogicalPort; - return UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } } else if (alarm_header.key_type == UNC_KT_PORT) { /*process port related alarm*/ @@ -426,19 +442,25 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { int read_err = sess.getResponse((uint32_t)6, port_key); if (read_err != 0) { pfc_log_error("Key not received for port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(port_key).c_str()); - Kt_Base *NotifyPort = new Kt_Port(); - if (NotifyPort == NULL) { - pfc_log_error("Memory not allocated for NotifyPort"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + if ((alarm_header.operation != UNC_OP_CREATE) && + (alarm_header.operation != UNC_OP_DELETE)) { + pfc_log_info("Invalid alarm operation : %d", + alarm_header.operation); + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } if ((alarm_header.alarm_type == UNC_DEFAULT_FLOW) || (alarm_header.alarm_type == UNC_PORT_DIRECTION) || (alarm_header.alarm_type == UNC_PORT_CONGES)) { string controller_name = reinterpret_cast (port_key.sw_key.ctr_key.controller_name); + Kt_Base *NotifyPort = new Kt_Port(); + if (NotifyPort == NULL) { + pfc_log_error("Memory not allocated for NotifyPort"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } GetNotificationDT(&db_conn, controller_name, data_type); status = NotifyPort->HandleDriverAlarms( &db_conn, data_type, alarm_header.alarm_type, alarm_header.operation, @@ -449,8 +471,7 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { } else { pfc_log_info("Invalid alarm type for UNC_KT_PORT: %d", alarm_header.alarm_type); - delete NotifyPort; - return UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } } else if (alarm_header.key_type == UNC_KT_SWITCH) { /*process controller related alarm*/ @@ -459,18 +480,24 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { int read_err = sess.getResponse((uint32_t)6, switch_key); if (read_err != 0) { pfc_log_error("Key not received for switch"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(switch_key).c_str()); - Kt_Base *NotifySwitch = new Kt_Switch(); - if (NotifySwitch == NULL) { - pfc_log_error("Memory not allocated for NotifySwitch"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + if ((alarm_header.operation != UNC_OP_CREATE) && + (alarm_header.operation != UNC_OP_DELETE)) { + pfc_log_info("Invalid alarm operation : %d", + alarm_header.operation); + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } if ((alarm_header.alarm_type == UNC_FLOW_ENT_FULL) || (alarm_header.alarm_type == UNC_OFS_LACK_FEATURES)) { string controller_name = reinterpret_cast (switch_key.ctr_key.controller_name); + Kt_Base *NotifySwitch = new Kt_Switch(); + if (NotifySwitch == NULL) { + pfc_log_error("Memory not allocated for NotifySwitch"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } GetNotificationDT(&db_conn, controller_name, data_type); status = NotifySwitch->HandleDriverAlarms( &db_conn, data_type, alarm_header.alarm_type, alarm_header.operation, @@ -481,8 +508,7 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { } else { pfc_log_info("Invalid alarm type for UNC_KT_SWITCH: %d", alarm_header.alarm_type); - delete NotifySwitch; - return UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_NOTIFICATION_NOT_SUPPORTED; } } else { pfc_log_info("Invalid key type : %d", alarm_header.key_type); @@ -498,26 +524,26 @@ UpplReturnCode NotificationRequest::ProcessAlarmEvents(const IpcEvent &event) { * operation-type of operation UNC_OP_CREATE/UPDATE/DELETE * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest::ProcessPortEvents( +UncRespCode NotificationRequest::ProcessPortEvents( ClientSession *sess, uint32_t data_type, uint32_t operation) { // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock( PhysicalLayer::get_events_done_lock_(), PFC_FALSE); // read lock - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; key_port_t port_key; memset(&port_key, '\0', sizeof(key_port_t)); int read_err = sess->getResponse((uint32_t)5, port_key); if (read_err != 0) { pfc_log_error("Key not received for port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(port_key).c_str()); string controller_name = reinterpret_cast @@ -529,7 +555,7 @@ UpplReturnCode NotificationRequest::ProcessPortEvents( read_err = sess->getResponse((uint32_t)6, new_val_port); if (read_err != 0) { pfc_log_error("New value not received for port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("NEWVAL: %s", IpctUtil::get_string(new_val_port).c_str()); } @@ -538,7 +564,7 @@ UpplReturnCode NotificationRequest::ProcessPortEvents( read_err = sess->getResponse((uint32_t)7, old_val_port); if (read_err != 0) { pfc_log_error("Old value not received for port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("OLDVAL: %s", IpctUtil::get_string(old_val_port).c_str()); @@ -560,27 +586,27 @@ UpplReturnCode NotificationRequest::ProcessPortEvents( * operation-type of operation UNC_OP_CREATE/UPDATE/DELETE * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest::ProcessSwitchEvents( +UncRespCode NotificationRequest::ProcessSwitchEvents( ClientSession *sess, uint32_t data_type, uint32_t operation) { // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock( PhysicalLayer::get_events_done_lock_(), PFC_FALSE); // read lock - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; /*process switch add, switch update and switch delete events*/ key_switch_t switch_key; memset(&switch_key, '\0', sizeof(key_switch_t)); int read_err = sess->getResponse((uint32_t)5, switch_key); if (read_err != 0) { pfc_log_error("Key not received for switch"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(switch_key).c_str()); string controller_name = reinterpret_cast @@ -593,7 +619,7 @@ UpplReturnCode NotificationRequest::ProcessSwitchEvents( read_err = sess->getResponse((uint32_t)6, new_val_switch); if (read_err != 0) { pfc_log_error("New value not received for switch"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("NEWVAL: %s", IpctUtil::get_string(new_val_switch).c_str()); @@ -602,7 +628,7 @@ UpplReturnCode NotificationRequest::ProcessSwitchEvents( read_err = sess->getResponse((uint32_t)7, old_val_switch); if (read_err != 0) { pfc_log_error("Old value not received for switch"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("OLDVAL: %s", IpctUtil::get_string(old_val_switch).c_str()); @@ -624,27 +650,27 @@ UpplReturnCode NotificationRequest::ProcessSwitchEvents( * operation-type of operation UNC_OP_CREATE/UPDATE/DELETE * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest:: ProcessLinkEvents( +UncRespCode NotificationRequest:: ProcessLinkEvents( ClientSession *sess, uint32_t data_type, uint32_t operation) { // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock( PhysicalLayer::get_events_done_lock_(), PFC_FALSE); // read lock - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; /*process link add, link update and link delete events*/ key_link_t key_link; memset(&key_link, '\0', sizeof(key_link_t)); int read_err = sess->getResponse((uint32_t)5, key_link); if (read_err != 0) { pfc_log_error("Key not received for link"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(key_link).c_str()); string controller_name = reinterpret_cast @@ -655,7 +681,7 @@ UpplReturnCode NotificationRequest:: ProcessLinkEvents( read_err = sess->getResponse((uint32_t)6, new_val_link); if (read_err != 0) { pfc_log_error("New value not received for link"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("NEWVAL: %s", IpctUtil::get_string(new_val_link).c_str()); @@ -664,7 +690,7 @@ UpplReturnCode NotificationRequest:: ProcessLinkEvents( read_err = sess->getResponse((uint32_t)7, old_val_link); if (read_err != 0) { pfc_log_error("Old value not received for link"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("OLDVAL: %s", IpctUtil::get_string(old_val_link).c_str()); @@ -685,11 +711,11 @@ UpplReturnCode NotificationRequest:: ProcessLinkEvents( * operation-type of operation UNC_OP_CREATE/UPDATE/DELETE * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest:: ProcessControllerEvents( +UncRespCode NotificationRequest:: ProcessControllerEvents( ClientSession *sess, uint32_t data_type, uint32_t operation) { - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; /*process controller add, controller update and controller delete events*/ key_ctr_t key_ctr; memset(&key_ctr, '\0', sizeof(key_ctr_t)); @@ -697,29 +723,29 @@ UpplReturnCode NotificationRequest:: ProcessControllerEvents( int read_err = sess->getResponse((uint32_t)5, key_ctr); if (read_err != 0) { pfc_log_error("Key not received for controller"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(key_ctr).c_str()); Kt_Controller NotifyController; read_err = sess->getResponse((uint32_t)6, new_val_ctr); if (read_err != 0) { pfc_log_error("New value not received for controller"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("NEWVAL: %s", IpctUtil::get_string(new_val_ctr).c_str()); read_err = sess->getResponse((uint32_t)7, old_val_ctr); if (read_err != 0) { pfc_log_error("Old value not received for controller"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("OLDVAL: %s", IpctUtil::get_string(old_val_ctr).c_str()); pfc_bool_t is_events_done = PFC_FALSE; uint8_t driver_oper_status = new_val_ctr.oper_status; - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } if (driver_oper_status == CONTROLLER_EVENTS_DONE) { // CONTROLLER_OPER_UP can be set @@ -737,22 +763,22 @@ UpplReturnCode NotificationRequest:: ProcessControllerEvents( if (is_controller_in_audit == PFC_TRUE) { pfc_log_debug("Calling MergeAuditDbToRunning"); // To cancel the already running timer in Audit - UpplReturnCode cancel_ret = ipc_mgr->CancelTimer(controller_name); - if (cancel_ret != UPPL_RC_SUCCESS) { + UncRespCode cancel_ret = ipc_mgr->CancelTimer(controller_name); + if (cancel_ret != UNC_RC_SUCCESS) { pfc_log_info("Failure in cancelling timer for controller %s", controller_name.c_str()); } AuditRequest audit_req; - UpplReturnCode merge_auditdb = + UncRespCode merge_auditdb = audit_req.MergeAuditDbToRunning(&db_conn, reinterpret_cast (key_ctr.controller_name)); - if (merge_auditdb != UPPL_RC_SUCCESS) { + if (merge_auditdb != UNC_RC_SUCCESS) { pfc_log_info("Merge of audit and running db failed"); } } else { pfc_log_info("End of events received non-audit controller %s", controller_name.c_str()); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } is_events_done = PFC_TRUE; } @@ -777,27 +803,27 @@ UpplReturnCode NotificationRequest:: ProcessControllerEvents( * operation-type of operation UNC_OP_CREATE/UPDATE/DELETE * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest:: ProcessDomainEvents( +UncRespCode NotificationRequest:: ProcessDomainEvents( ClientSession *sess, uint32_t data_type, uint32_t operation) { // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock( PhysicalLayer::get_events_done_lock_(), PFC_FALSE); // read lock - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; /*process domain add, domain update and domain delete events*/ key_ctr_domain_t key_ctr_domain; memset(&key_ctr_domain, '\0', sizeof(key_ctr_domain_t)); int read_err = sess->getResponse((uint32_t)5, key_ctr_domain); if (read_err != 0) { pfc_log_error("Key not received for controller"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(key_ctr_domain).c_str()); string controller_name = reinterpret_cast @@ -808,7 +834,7 @@ UpplReturnCode NotificationRequest:: ProcessDomainEvents( read_err = sess->getResponse((uint32_t)6, new_val_ctr_domain_t); if (read_err != 0) { pfc_log_error("New value not received for ctr domain"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("NEWVAL: %s", IpctUtil::get_string(new_val_ctr_domain_t).c_str()); @@ -829,26 +855,26 @@ UpplReturnCode NotificationRequest:: ProcessDomainEvents( * operation-type of operation UNC_OP_CREATE/UPDATE/DELETE * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest:: ProcessLogicalPortEvents( +UncRespCode NotificationRequest:: ProcessLogicalPortEvents( ClientSession *sess, uint32_t data_type, uint32_t operation) { // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock( PhysicalLayer::get_events_done_lock_(), PFC_FALSE); // read lock - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; key_logical_port_t key_logical_port; memset(&key_logical_port, '\0', sizeof(key_logical_port_t)); int read_err = sess->getResponse((uint32_t)5, key_logical_port); if (read_err != 0) { pfc_log_error("Key not received for logical port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(key_logical_port).c_str()); string controller_name = reinterpret_cast @@ -859,7 +885,7 @@ UpplReturnCode NotificationRequest:: ProcessLogicalPortEvents( read_err = sess->getResponse((uint32_t)6, new_val_logical_port_t); if (read_err != 0) { pfc_log_error("New value not received for logical port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("NEWVAL: %s", IpctUtil::get_string(new_val_logical_port_t).c_str()); @@ -881,26 +907,26 @@ UpplReturnCode NotificationRequest:: ProcessLogicalPortEvents( * operation-type of operation UNC_OP_CREATE/UPDATE/DELETE * @return :Success or associated error code **/ -UpplReturnCode NotificationRequest:: ProcessLogicalMemeberPortEvents( +UncRespCode NotificationRequest:: ProcessLogicalMemeberPortEvents( ClientSession *sess, uint32_t data_type, uint32_t operation) { // Check for MergeImportRunning Lock ScopedReadWriteLock eventDoneLock( PhysicalLayer::get_events_done_lock_(), PFC_FALSE); // read lock - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteSb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_error("Error in opening DB connection"); - return UPPL_RC_ERR_DB_ACCESS; + return UNC_UPPL_RC_ERR_DB_ACCESS; } - UpplReturnCode status = UPPL_RC_SUCCESS; + UncRespCode status = UNC_RC_SUCCESS; key_logical_member_port_t logical_member_port_key; memset(&logical_member_port_key, '\0', sizeof(key_logical_member_port_t)); int read_err = sess->getResponse((uint32_t)5, logical_member_port_key); if (read_err != 0) { pfc_log_error("Key not received for logical port"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_info("%s", IpctUtil::get_string(logical_member_port_key).c_str()); string controller_name = @@ -911,7 +937,7 @@ UpplReturnCode NotificationRequest:: ProcessLogicalMemeberPortEvents( Kt_State_Base *NotifyLogicalMemberPort = new Kt_LogicalMemberPort(); if (NotifyLogicalMemberPort == NULL) { pfc_log_error("Memory not allocated for NotifyLogicalMemberPort_\n"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } status = NotifyLogicalMemberPort->HandleDriverEvents( &db_conn, reinterpret_cast(&logical_member_port_key), diff --git a/coordinator/modules/uppl/itc_read_request.cc b/coordinator/modules/uppl/itc_read_request.cc index 6586c4ff..a5319916 100644 --- a/coordinator/modules/uppl/itc_read_request.cc +++ b/coordinator/modules/uppl/itc_read_request.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -16,6 +16,8 @@ #include "itc_kt_base.hh" #include "itc_kt_root.hh" #include "itc_kt_controller.hh" +#include "itc_kt_dataflow.hh" +#include "itc_kt_ctr_dataflow.hh" #include "itc_kt_switch.hh" #include "itc_read_request.hh" #include "itc_kt_boundary.hh" @@ -54,17 +56,28 @@ ReadRequest::~ReadRequest() { * the read operation * @param[in] : session - Object of ServerSession where the request * argument present - * @return : UPPL_RC_SUCCESS if processing the Read request is successful - * or UPPL_RC_ERR_* in case of failure + * @return : UNC_RC_SUCCESS if processing the Read request is successful + * or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, +UncRespCode ReadRequest::ProcessReq(ServerSession &session, physical_request_header &obj_req_hdr) { + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + PhysicalCore* physical_core = physical_layer->get_physical_core(); + if (physical_core->system_transit_state_ == true) { + pfc_log_error("UNC is in state transit mode "); + return UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + Kt_Base *KtObj = NULL; - UpplReturnCode resp_code = UPPL_RC_SUCCESS, return_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS, return_code = UNC_RC_SUCCESS; physical_response_header rsh; PhyUtil::getRespHeaderFromReqHeader(obj_req_hdr, rsh); - OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadOnly, resp_code); - if (resp_code != UPPL_RC_SUCCESS) { + OdbcmConnectionHandler *db_conn = NULL; + OPEN_DB_CONNECTION_WITH_POOL(unc::uppl::kOdbcmConnReadOnly, + resp_code, db_conn, + obj_req_hdr.client_sess_id, + obj_req_hdr.config_id); + if (resp_code != UNC_RC_SUCCESS) { pfc_log_error("DB Connection failure for operation %d", obj_req_hdr.operation); int err = PhyUtil::sessOutRespHeader(session, rsh); @@ -82,30 +95,58 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, obj_req_hdr.operation == UNC_OP_READ_SIBLING || obj_req_hdr.operation == UNC_OP_READ_SIBLING_BEGIN || obj_req_hdr.operation == UNC_OP_READ_SIBLING_COUNT) { - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; } KtObj = new Kt_Root(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_Root"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } memset(&key_root_obj, 0, sizeof(key_root_t)); // The root key in request is not considered key_struct = static_cast (&key_root_obj); break; + + case UNC_KT_DATAFLOW: + if ((obj_req_hdr.operation != UNC_OP_READ) || + (obj_req_hdr.data_type != UNC_DT_STATE)) { + pfc_log_error("KtDataflow supports only Read Operation"); + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + GetDataflowStructure(session, key_struct, rsh); + KtObj = new Kt_Dataflow(); + if (KtObj == NULL) { + pfc_log_error("Memory not allocated for Kt_Dataflow"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } + break; + case UNC_KT_CONTROLLER: KtObj = new Kt_Controller(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_Controller"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetControllerStructure(session, key_struct, val_struct, rsh); break; + case UNC_KT_CTR_DATAFLOW: + if ((obj_req_hdr.operation != UNC_OP_READ) || + (obj_req_hdr.data_type != UNC_DT_STATE)) { + pfc_log_error("Kt_Ctr_Dataflow supports only Read Operation"); + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + } + GetCtrDataflowStructure(session, key_struct, rsh); + KtObj = new Kt_Ctr_Dataflow(); + if (KtObj == NULL) { + pfc_log_error("Memory not allocated for Kt_Ctr_Dataflow"); + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + } + break; case UNC_KT_CTR_DOMAIN: KtObj = new Kt_Ctr_Domain(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_Ctr_Domain"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetDomainStructure(session, key_struct, val_struct, rsh); break; @@ -113,7 +154,7 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, KtObj = new Kt_LogicalPort(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_LogicalPort"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetLogicalPortStructure(session, key_struct, val_struct, rsh); break; @@ -121,7 +162,7 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, KtObj = new Kt_LogicalMemberPort(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_LogicalMemberPort"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetLogicalMemberPortStructure(session, key_struct, val_struct, rsh); break; @@ -129,7 +170,7 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, KtObj = new Kt_Switch(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_Switch"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetSwitchStructure(session, key_struct, val_struct, rsh); break; @@ -137,7 +178,7 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, KtObj = new Kt_Port(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_Port"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetPortStructure(session, key_struct, val_struct, rsh); break; @@ -145,7 +186,7 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, KtObj = new Kt_Link(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_Link"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetLinkStructure(session, key_struct, val_struct, rsh); break; @@ -153,15 +194,15 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, KtObj = new Kt_Boundary(); if (KtObj == NULL) { pfc_log_error("Memory not allocated for Kt_Boundary"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } GetBoundaryStructure(session, key_struct, val_struct, rsh); break; default: - rsh.result_code = UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; + rsh.result_code = UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; break; } - if (rsh.result_code != UPPL_RC_SUCCESS) { + if (rsh.result_code != UNC_RC_SUCCESS) { if (KtObj != NULL) { delete KtObj; KtObj = NULL; @@ -169,9 +210,9 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, pfc_log_info("Read service failed with error %d", rsh.result_code); int err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return_code = UPPL_RC_ERR_IPC_WRITE_ERROR; + return_code = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - return_code = UPPL_RC_SUCCESS; + return_code = UNC_RC_SUCCESS; } return return_code; } @@ -183,7 +224,7 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, case UNC_OP_READ_SIBLING: case UNC_OP_READ_SIBLING_COUNT: // form validate request for READ operation - resp_code = KtObj->ValidateRequest(&db_conn, + resp_code = KtObj->ValidateRequest(db_conn, key_struct, NULL, obj_req_hdr.operation, @@ -191,10 +232,10 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, obj_req_hdr.key_type); break; default: - resp_code = UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + resp_code = UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; break; } - if (resp_code != UPPL_RC_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { // validation failed call add out put rsh.result_code = resp_code; pfc_log_error("read validation failed"); @@ -204,12 +245,12 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, &session, key_struct); } if (err != 0) { - return_code = UPPL_RC_ERR_IPC_WRITE_ERROR; + return_code = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - return_code = UPPL_RC_SUCCESS; + return_code = UNC_RC_SUCCESS; } } else { - return_code = ProcessReadOperation(&db_conn, session, KtObj, obj_req_hdr, + return_code = ProcessReadOperation(db_conn, session, KtObj, obj_req_hdr, key_struct, val_struct, obj_req_hdr.operation); } @@ -232,10 +273,10 @@ UpplReturnCode ReadRequest::ProcessReq(ServerSession &session, * KtObj - Object of the base class to invoke appropriate * Kt class * obj_req_hdr - object of physical request header - * @return : UPPL_RC_SUCCESS if processing the Read request is successful - * or UPPL_RC_ERR_* in case of failure + * @return : UNC_RC_SUCCESS if processing the Read request is successful + * or UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode ReadRequest::ProcessReadOperation( +UncRespCode ReadRequest::ProcessReadOperation( OdbcmConnectionHandler *db_conn, ServerSession &session, Kt_Base *KtObj, @@ -243,7 +284,7 @@ UpplReturnCode ReadRequest::ProcessReadOperation( void* key_struct, void* val_struct, uint32_t operation_type) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS, return_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS, return_code = UNC_RC_SUCCESS; pfc_bool_t response_sent = PFC_FALSE; uint32_t max_rep_ct = obj_req_hdr.max_rep_count; switch (operation_type) { @@ -263,10 +304,11 @@ UpplReturnCode ReadRequest::ProcessReadOperation( case UNC_OP_READ_NEXT: // Invoke Read Next operation for respective KT class resp_code = KtObj->ReadNext(db_conn, + obj_req_hdr.client_sess_id, key_struct, obj_req_hdr.data_type, this); - if (resp_code == UPPL_RC_SUCCESS) { + if (resp_code == UNC_RC_SUCCESS) { response_sent = PFC_TRUE; return_code = FrameReadBulkResponse(session, obj_req_hdr.client_sess_id, @@ -292,7 +334,7 @@ UpplReturnCode ReadRequest::ProcessReadOperation( false, false, this); - if (resp_code == UPPL_RC_SUCCESS) { + if (resp_code == UNC_RC_SUCCESS) { response_sent = PFC_TRUE; return_code = FrameReadBulkResponse(session, obj_req_hdr.client_sess_id, @@ -347,7 +389,7 @@ UpplReturnCode ReadRequest::ProcessReadOperation( response_sent = PFC_TRUE; break; default: - resp_code = UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + resp_code = UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; break; } if (!response_sent) { @@ -359,9 +401,9 @@ UpplReturnCode ReadRequest::ProcessReadOperation( err |= KtObj->AddKeyStructuretoSession(obj_req_hdr.key_type, &session, key_struct); if (err != 0) { - return_code = UPPL_RC_ERR_IPC_WRITE_ERROR; + return_code = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } else { - return_code = UPPL_RC_SUCCESS; + return_code = UNC_RC_SUCCESS; } } return return_code; @@ -378,12 +420,12 @@ UpplReturnCode ReadRequest::ProcessReadOperation( * data_type - UNC_DT_* specifies the database type * option1,option2 - specifies any additional * condition for read operation - * @return : UPPL_RC_SUCCESS is returned when the response is added + * @return : UNC_RC_SUCCESS is returned when the response is added * to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not + * UNC_UPPL_RC_ERR_* is returned when ipc response could not * be added to sess. * */ -UpplReturnCode ReadRequest::FrameReadBulkResponse(ServerSession &session, +UncRespCode ReadRequest::FrameReadBulkResponse(ServerSession &session, uint32_t session_id, uint32_t config_id, uint32_t operation, @@ -407,7 +449,7 @@ UpplReturnCode ReadRequest::FrameReadBulkResponse(ServerSession &session, rsh.max_rep_count = max_rep_ct; if (vect_bulk_read_buffer.empty()) { pfc_log_debug("No instances available to read"); - rsh.result_code = UPPL_RC_ERR_NO_SUCH_INSTANCE; + rsh.result_code = UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE; } int err = PhyUtil::sessOutRespHeader(session, rsh); iter = vect_bulk_read_buffer.begin(); @@ -449,10 +491,10 @@ UpplReturnCode ReadRequest::FrameReadBulkResponse(ServerSession &session, } if (err != 0) { pfc_log_error("Server session addOutput failed"); - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**GetControllerStructure @@ -485,6 +527,46 @@ void ReadRequest::GetControllerStructure(ServerSession &session, return; } +/**GetDataflowStructure + * @Description : This function is to get the value structure of the Dataflow + * @param[in] : session - Object of ServerSession where the request + * argument present + * key_struct - the key for the kt_Dataflow instance + * val_struct - the value structure for the ktDataflow + * &rsh - object of the physical response header + * @return : void + * */ +void ReadRequest::GetDataflowStructure(ServerSession &session, + void * &key_struct, + physical_response_header &rsh) { + // populate key_ctr structure + memset(&key_dataflow_obj, 0, sizeof(key_dataflow_t)); + rsh.result_code = session.getArgument(8, key_dataflow_obj); + pfc_log_info("%s", DataflowCmn::get_string(key_dataflow_obj).c_str()); + key_struct = static_cast (&key_dataflow_obj); + return; +} + +/**GetCtrDataflowStructure + * @Description : This function is to get the value structure of the CtrDataflow + * @param[in] : session - Object of ServerSession where the request + * argument present + * key_struct - the key for the kt_Ctr_Dataflow instance + * val_struct - the value structure for the ktCtrDataflow + * &rsh - object of the physical response header + * @return : void + * */ +void ReadRequest::GetCtrDataflowStructure(ServerSession &session, + void * &key_struct, + physical_response_header &rsh) { + // populate key_ctr structure + memset(&key_ctr_dataflow_obj, 0, sizeof(key_ctr_dataflow_t)); + rsh.result_code = session.getArgument(8, key_ctr_dataflow_obj); + key_struct = static_cast (&key_ctr_dataflow_obj); + pfc_log_info("%s", DataflowCmn::get_string(key_ctr_dataflow_obj).c_str()); + return; +} + /**GetDomainStructure * @Description : This function is to get the value structure of the domain * @param[in] : session - Object of ServerSession where the request diff --git a/coordinator/modules/uppl/itc_state_change.cc b/coordinator/modules/uppl/itc_state_change.cc index cdb6bdb4..7bcce9da 100644 --- a/coordinator/modules/uppl/itc_state_change.cc +++ b/coordinator/modules/uppl/itc_state_change.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -49,10 +49,10 @@ SystemStateChangeRequest::~SystemStateChangeRequest() { * Gets the controller list from database and send the DELETE * request to driver * @param[in] : None - * @return : UPPL_RC_SUCCESS if the system state is changed to standby - * or UPPL_RC_ERR_* if the switchover fails + * @return : UNC_RC_SUCCESS if the system state is changed to standby + * or UNC_UPPL_RC_ERR_* if the switchover fails * */ -UpplReturnCode SystemStateChangeRequest::SystemStateChangeToStandBy( +UncRespCode SystemStateChangeRequest::SystemStateChangeToStandBy( OdbcmConnectionHandler *db_conn) { pfc_log_info("Start SystemStateChangeToStandBy"); Kt_Controller kt_ctr; @@ -60,24 +60,24 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToStandBy( key_ctr_t key_ctr_obj; memset(&key_ctr_obj, 0, sizeof(key_ctr_obj)); vect_ctr_key.push_back(reinterpret_cast(&key_ctr_obj)); - UpplReturnCode read_status = kt_ctr.ReadInternal(db_conn, vect_ctr_key, + UncRespCode read_status = kt_ctr.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_RUNNING, UNC_OP_READ_SIBLING_BEGIN); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("read from running db is %d", read_status); // Check for entries in candidate db return read_status; } - UpplReturnCode err = UPPL_RC_SUCCESS; + UncRespCode err = UNC_RC_SUCCESS; IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Cannot open session to PFC driver"); return err; } - err = UPPL_RC_SUCCESS; + err = UNC_RC_SUCCESS; IPCClientDriverHandler vnp_drv_handler(UNC_CT_VNP, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Cannot open session to VNP driver"); return err; } @@ -117,7 +117,7 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToStandBy( UNC_DT_RUNNING, UNC_KT_CONTROLLER}; int err = PhyUtil::sessOutDriverReqHeader(*cli_session, rqh); err |= cli_session->addOutput(*ctr_key); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_info("Could not open driver ipc session"); // Release memory allocated for key struct delete ctr_key; @@ -128,7 +128,7 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToStandBy( continue; } // Send the request to driver - UpplReturnCode driver_response = UPPL_RC_SUCCESS; + UncRespCode driver_response = UNC_RC_SUCCESS; driver_response_header rsp; if (controller_type == UNC_CT_PFC) { driver_response = pfc_drv_handler.SendReqAndGetResp(rsp); @@ -138,7 +138,7 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToStandBy( } pfc_log_debug("driver_response is %d", driver_response); - if (driver_response != UPPL_RC_SUCCESS) { + if (driver_response != UNC_RC_SUCCESS) { pfc_log_info( "Controller disconnect request failed at " "driver with error %d", driver_response); @@ -153,8 +153,11 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToStandBy( PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); PhysicalCore* physical_core = physical_layer->get_physical_core(); physical_core->set_system_state(UPPL_SYSTEM_ST_STANDBY); + // To clear the internal alarm details holding map + physical_core->alarm_status_map_.clear(); + pfc_log_info("SystemStateChangeToStandby returned SUCCESS"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**SystemStateChangeToActive @@ -162,40 +165,48 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToStandBy( * Gets the controller list from database and send the CREATE * request to driver * @param[in] : None - * @return : UPPL_RC_SUCCESS if the system state is changed to active - * or UPPL_RC_ERR_* if the switchover fails + * @return : UNC_RC_SUCCESS if the system state is changed to active + * or UNC_UPPL_RC_ERR_* if the switchover fails * */ -UpplReturnCode SystemStateChangeRequest::SystemStateChangeToActive( +UncRespCode SystemStateChangeRequest::SystemStateChangeToActive( OdbcmConnectionHandler *db_conn) { pfc_log_info("Start SystemStateChangeToActive"); /* Get all the controller entry from running db */ + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + PhysicalCore* physical_core = physical_layer->get_physical_core(); + // To clear the internal alarm details holding map + physical_core->alarm_status_map_.clear(); Kt_Controller kt_ctr; vector vect_ctr_key, vect_ctr_val; key_ctr_t key_ctr_obj; memset(&key_ctr_obj, '\0', sizeof(key_ctr_t)); vect_ctr_key.push_back(reinterpret_cast(&key_ctr_obj)); - UpplReturnCode read_status = kt_ctr.ReadInternal(db_conn, vect_ctr_key, + UncRespCode read_status = kt_ctr.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_RUNNING, UNC_OP_READ_SIBLING_BEGIN); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("read from running db is %d", read_status); // Check for entries in candidate db return SendCandidateInfoToLogical(db_conn); } - UpplReturnCode err = UPPL_RC_SUCCESS; + UncRespCode err = UNC_RC_SUCCESS; IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Cannot open session to PFC driver"); return err; } - err = UPPL_RC_SUCCESS; + err = UNC_RC_SUCCESS; IPCClientDriverHandler vnp_drv_handler(UNC_CT_VNP, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Cannot open session to VNP driver"); return err; } + pfc_log_debug("Setting system_transit_state_ to be true:%d", + physical_core->system_transit_state_); + physical_core->system_transit_state_ = true; // for sending recovery + // alarm to node manager. for (uint32_t ctrIndex = 0; ctrIndex < vect_ctr_key.size(); ctrIndex ++) { key_ctr_t *ctr_key = @@ -207,27 +218,37 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToActive( unc_keytype_ctrtype_t controller_type = (unc_keytype_ctrtype_t) (PhyUtil::uint8touint(obj_val_ctr->controller.type)); + std::string alarm_category = "1"; + std::string map_key = ""; + map_key.append(controller_name).append("#").append(alarm_category); + physical_core->alarm_status_map_.insert( + std::pair (map_key, true)); + alarm_category = "3"; + map_key = ""; + map_key.append(controller_name).append("#").append(alarm_category); + physical_core->alarm_status_map_.insert( + std::pair (map_key, true)); if (controller_type != UNC_CT_UNKNOWN) { pfc_log_info("Set the oper Status of controller as down %s", controller_name.c_str()); uint8_t oper_status = UPPL_CONTROLLER_OPER_DOWN; - UpplReturnCode operation_status = kt_ctr.SetOperStatus( + UncRespCode operation_status = kt_ctr.SetOperStatus( db_conn, UNC_DT_RUNNING, vect_ctr_key[ctrIndex], oper_status); - if (operation_status != UPPL_RC_SUCCESS) { + if (operation_status != UNC_RC_SUCCESS) { pfc_log_error("Unable to set the oper status of controller as down"); } } // Sending the Controller Update Information to Logical Layer - UpplReturnCode upll_result = kt_ctr.SendUpdatedControllerInfoToUPLL( + UncRespCode upll_result = kt_ctr.SendUpdatedControllerInfoToUPLL( UNC_DT_CANDIDATE, UNC_OP_CREATE, UNC_KT_CONTROLLER, vect_ctr_key[ctrIndex], reinterpret_cast(&obj_val_ctr->controller)); - if (upll_result != UPPL_RC_SUCCESS) { + if (upll_result != UNC_RC_SUCCESS) { pfc_log_info("Failed to send the controller %s in candidate to UPLL", controller_name.c_str()); } @@ -237,7 +258,7 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToActive( UNC_KT_CONTROLLER, vect_ctr_key[ctrIndex], reinterpret_cast(&obj_val_ctr->controller)); - if (upll_result != UPPL_RC_SUCCESS) { + if (upll_result != UNC_RC_SUCCESS) { pfc_log_info("Failed to send the controller %s in running to UPLL", controller_name.c_str()); } @@ -267,7 +288,7 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToActive( int err = PhyUtil::sessOutDriverReqHeader(*cli_session, rqh); err |= cli_session->addOutput(*ctr_key); err |= cli_session->addOutput(obj_val_ctr->controller); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Could not add objects to driver ipc session"); // Release memory allocated for key struct delete ctr_key; @@ -279,7 +300,7 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToActive( } pfc_log_info("Sending connect request to driver"); // Send the request to driver - UpplReturnCode driver_response = UPPL_RC_SUCCESS; + UncRespCode driver_response = UNC_RC_SUCCESS; driver_response_header rsp; if (controller_type == UNC_CT_PFC) { driver_response = pfc_drv_handler.SendReqAndGetResp(rsp); @@ -289,7 +310,7 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToActive( } pfc_log_debug("driver_response is %d", driver_response); - if (err !=0 || driver_response != UPPL_RC_SUCCESS) { + if (err !=0 || driver_response != UNC_RC_SUCCESS) { pfc_log_error( "Could not connect to controller %s, driver returned error %d", controller_name.c_str(), driver_response); @@ -302,17 +323,18 @@ UpplReturnCode SystemStateChangeRequest::SystemStateChangeToActive( obj_val_ctr = NULL; } pfc_log_info("SystemStateChangeToActive returned SUCCESS"); - return UPPL_RC_SUCCESS; + physical_core->system_transit_state_ = false; + return UNC_RC_SUCCESS; } /**SendCandidateInfoToLogical * @Description : This function gets the controller list from candidate database * and send the update request to logical * @param[in] : None - * @return : UPPL_RC_SUCCESS if the logical is updated - * or UPPL_RC_ERR_* if the update fails + * @return : UNC_RC_SUCCESS if the logical is updated + * or UNC_UPPL_RC_ERR_* if the update fails * */ -UpplReturnCode SystemStateChangeRequest::SendCandidateInfoToLogical( +UncRespCode SystemStateChangeRequest::SendCandidateInfoToLogical( OdbcmConnectionHandler *db_conn) { /* Get all the controller entry from candidate db */ Kt_Controller kt_ctr; @@ -320,13 +342,13 @@ UpplReturnCode SystemStateChangeRequest::SendCandidateInfoToLogical( key_ctr_t key_ctr_obj; memset(&key_ctr_obj, '\0', sizeof(key_ctr_t)); vect_ctr_key.push_back(reinterpret_cast(&key_ctr_obj)); - UpplReturnCode read_status = kt_ctr.ReadInternal(db_conn, vect_ctr_key, + UncRespCode read_status = kt_ctr.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_CANDIDATE, UNC_OP_READ_SIBLING_BEGIN); - if (read_status != UPPL_RC_SUCCESS) { + if (read_status != UNC_RC_SUCCESS) { pfc_log_info("read from candidate db is %d", read_status); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } for (uint32_t ctrIndex = 0; ctrIndex < vect_ctr_key.size(); @@ -338,13 +360,13 @@ UpplReturnCode SystemStateChangeRequest::SendCandidateInfoToLogical( val_ctr_st_t *obj_val_ctr = reinterpret_cast(vect_ctr_val[ctrIndex]); // Sending the Controller Update Information to Logical Layer - UpplReturnCode upll_result = kt_ctr.SendUpdatedControllerInfoToUPLL( + UncRespCode upll_result = kt_ctr.SendUpdatedControllerInfoToUPLL( UNC_DT_CANDIDATE, UNC_OP_CREATE, UNC_KT_CONTROLLER, vect_ctr_key[ctrIndex], reinterpret_cast(&obj_val_ctr->controller)); - if (upll_result != UPPL_RC_SUCCESS) { + if (upll_result != UNC_RC_SUCCESS) { pfc_log_info("Failed to send the controller %s in candidate to UPLL", controller_name.c_str()); } @@ -355,7 +377,7 @@ UpplReturnCode SystemStateChangeRequest::SendCandidateInfoToLogical( delete obj_val_ctr; obj_val_ctr = NULL; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } // namespace uppl } // namespace unc diff --git a/coordinator/modules/uppl/itc_transaction_request.cc b/coordinator/modules/uppl/itc_transaction_request.cc index 3a871785..f5982ac1 100644 --- a/coordinator/modules/uppl/itc_transaction_request.cc +++ b/coordinator/modules/uppl/itc_transaction_request.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -26,6 +26,8 @@ #include "ipc_client_configuration_handler.hh" #include "ipct_util.hh" +using unc::tclib::TcLibModule; + /**TransactionRequest * @Description : This function initializes the member data * @param[in] : None @@ -48,26 +50,26 @@ TransactionRequest::~TransactionRequest() { * from the Candidate Database with respect to row status * @param[in] : row_status - Denotes the row status of the kt_controller, * kt_domain and kt_boundary - * @return : UPPL_RC_SUCCESS if the modified configuration obtained or - * UPPL_RC_ERR_* for failure + * @return : UNC_RC_SUCCESS if the modified configuration obtained or + * UNC_UPPL_RC_ERR_* for failure */ -UpplReturnCode TransactionRequest::GetModifiedConfiguration( +UncRespCode TransactionRequest::GetModifiedConfiguration( OdbcmConnectionHandler *db_conn, CsRowStatus row_status) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; ret_code = GetModifiedController(db_conn, row_status); - if (ret_code != UPPL_RC_SUCCESS) { + if (ret_code != UNC_RC_SUCCESS) { return ret_code; } ret_code = GetModifiedDomain(db_conn, row_status); - if (ret_code != UPPL_RC_SUCCESS) { + if (ret_code != UNC_RC_SUCCESS) { return ret_code; } ret_code = GetModifiedBoundary(db_conn, row_status); - if (ret_code != UPPL_RC_SUCCESS) { + if (ret_code != UNC_RC_SUCCESS) { return ret_code; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** StartTransaction @@ -79,12 +81,12 @@ UpplReturnCode TransactionRequest::GetModifiedConfiguration( * the candidate database and send the configuration to driver * @param[in] : session_id - ipc session id used for TC validation * config_id - configuration id used for TC validation - * @return : UPPL_RC_SUCCESS if the start Transaction is success and set + * @return : UNC_RC_SUCCESS if the start Transaction is success and set * the trans_state as TRANS_START_SUCCESS or returns - * UPPL_RC_ERR_* if the start transaction is failed and set + * UNC_UPPL_RC_ERR_* if the start transaction is failed and set * the trans_state as TRANS_START_FAILURE * */ -UpplReturnCode TransactionRequest::StartTransaction( +UncRespCode TransactionRequest::StartTransaction( OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t config_id) { @@ -92,10 +94,8 @@ UpplReturnCode TransactionRequest::StartTransaction( get_physical_core(); InternalTransactionCoordinator *itc_trans = physical_core->get_internal_transaction_coordinator(); - vectorvec_controller_oflow; - vectorvec_controller_vnp; - pfc_log_info("TransactionRequest::StartTransaction-------"); + pfc_log_info("TransactionRequest::StartTransaction"); pfc_log_debug("trans_state()= %d", itc_trans->trans_state()); if (itc_trans->trans_state() == TRANS_END) { pfc_log_debug("Inside itc_trans->trans_state() == TRANS_END"); @@ -103,53 +103,37 @@ UpplReturnCode TransactionRequest::StartTransaction( ClearMaps(); // Getting the Created configurations if ((GetModifiedConfiguration(db_conn, - CREATED) != UPPL_RC_SUCCESS)) { + CREATED) != UNC_RC_SUCCESS)) { pfc_log_debug("Inside GetCreatedUpdatedConfiguration CREATE !=" - "UPPL_RC_SUCCESS"); + "UNC_RC_SUCCESS"); itc_trans->set_trans_state(TRANS_END); - return UPPL_RC_ERR_TRANSACTION_START; + return UNC_UPPL_RC_ERR_TRANSACTION_START; } // Getting the Updated configurations and sending to driver if ((GetModifiedConfiguration(db_conn, - UPDATED) != UPPL_RC_SUCCESS)) { + UPDATED) != UNC_RC_SUCCESS)) { pfc_log_debug("Inside GetCreatedUpdatedConfiguration UPDATE !=" - "UPPL_RC_SUCCESS"); + "UNC_RC_SUCCESS"); itc_trans->set_trans_state(TRANS_END); - return UPPL_RC_ERR_TRANSACTION_START; + return UNC_UPPL_RC_ERR_TRANSACTION_START; } // Getting the Deleted configurations and sending to driver if ((GetModifiedConfiguration(db_conn, - DELETED) != UPPL_RC_SUCCESS)) { - pfc_log_debug("Inside GetDeletedConfiguration != UPPL_RC_SUCCESS"); + DELETED) != UNC_RC_SUCCESS)) { + pfc_log_debug("Inside GetDeletedConfiguration != UNC_RC_SUCCESS"); itc_trans->set_trans_state(TRANS_END); - return UPPL_RC_ERR_TRANSACTION_START; + return UNC_UPPL_RC_ERR_TRANSACTION_START; } } else { pfc_log_debug("Inside itc_trans->trans_state() != TRANS_END"); itc_trans->set_trans_state(TRANS_END); - return UPPL_RC_ERR_INVALID_TRANSACT_START_REQ; - } - // Assigning the modified controllers in vector - vec_controller_oflow.assign(set_controller_oflow.begin(), - set_controller_oflow.end()); - vec_controller_vnp.assign(set_controller_vnp.begin(), - set_controller_vnp.end()); - // Storing the Drivers and associated controllers in the Map - if (!vec_controller_oflow.empty()) { - driver_controller_info_map_.insert( - std::pair >(UNC_CT_PFC, vec_controller_oflow) ); - } - if (!vec_controller_vnp.empty()) { - driver_controller_info_map_.insert( - std::pair >(UNC_CT_VNP, vec_controller_vnp) ); + return UNC_UPPL_RC_ERR_INVALID_TRANSACT_START_REQ; } itc_trans->set_trans_state(TRANS_START_SUCCESS); pfc_log_debug("TransactionRequest::StartTransaction::trans_state()= %d", itc_trans->trans_state()); - pfc_log_info("TransactionRequest::StartTransaction is Successful-------"); - return UPPL_RC_SUCCESS; + pfc_log_info("TransactionRequest::StartTransaction is Successful"); + return UNC_RC_SUCCESS; } /**HandleVoteRequest @@ -161,10 +145,10 @@ UpplReturnCode TransactionRequest::StartTransaction( * @param[in] : session_id - ipc session id used for TC validation * config_id - configuration id used for TC validation * @param[out] : driver_info - map that contains the updated controller list - * @return : UPPL_RC_SUCCESS if VoteRequest is successfull or - * UPPL_RC_ERR_* if VoteRequest is failed + * @return : UNC_RC_SUCCESS if VoteRequest is successfull or + * UNC_UPPL_RC_ERR_* if VoteRequest is failed * */ -UpplReturnCode TransactionRequest::HandleVoteRequest(uint32_t session_id, +UncRespCode TransactionRequest::HandleVoteRequest(uint32_t session_id, uint32_t config_id, TcDriverInfoMap &driver_info) { @@ -172,7 +156,7 @@ UpplReturnCode TransactionRequest::HandleVoteRequest(uint32_t session_id, get_physical_core(); InternalTransactionCoordinator *itc_trans = physical_core->get_internal_transaction_coordinator(); - pfc_log_info("TransactionRequest::HandleVoteRequest-------"); + pfc_log_info("TransactionRequest::HandleVoteRequest"); pfc_log_debug("trans_state()= %d", itc_trans->trans_state()); if (itc_trans->trans_state() == TRANS_START_SUCCESS) { @@ -182,12 +166,12 @@ UpplReturnCode TransactionRequest::HandleVoteRequest(uint32_t session_id, itc_trans->set_trans_state(VOTE_WAIT_DRIVER_RESULT); } else { pfc_log_debug("Inside itc_trans->trans_state() != TRANS_START_SUCCESS"); - return UPPL_RC_ERR_VOTE_INVALID_REQ; + return UNC_UPPL_RC_ERR_VOTE_INVALID_REQ; } pfc_log_debug("TransactionRequest::VoteRequest:trans_state()= %d", itc_trans->trans_state()); - pfc_log_info("TransactionRequest::VoteRequest is Successful-------"); - return UPPL_RC_SUCCESS; + pfc_log_info("TransactionRequest::VoteRequest is Successful"); + return UNC_RC_SUCCESS; } /** HandleDriverResult @@ -201,10 +185,10 @@ UpplReturnCode TransactionRequest::HandleVoteRequest(uint32_t session_id, * phase - specifies the TC commit phase type.Its a enum value * driver_result - specifies the TC commit phase result. * Its a enum value - * @return : UPPL_RC_SUCCESS if the HandleDriverResult is successful or - * returns UPPL_RC_ERR_* if HandleDriverResult is failed + * @return : UNC_RC_SUCCESS if the HandleDriverResult is successful or + * returns UNC_UPPL_RC_ERR_* if HandleDriverResult is failed **/ -UpplReturnCode TransactionRequest::HandleDriverResult( +UncRespCode TransactionRequest::HandleDriverResult( OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t config_id, @@ -214,7 +198,7 @@ UpplReturnCode TransactionRequest::HandleDriverResult( get_physical_core(); InternalTransactionCoordinator *itc_trans = physical_core->get_internal_transaction_coordinator(); - pfc_log_info("TransactionRequest::HandleDriverResult-------"); + pfc_log_info("TransactionRequest::HandleDriverResult"); pfc_log_debug("trans_state()= %d", itc_trans->trans_state()); pfc_log_debug("phase = %d", phase); @@ -224,11 +208,11 @@ UpplReturnCode TransactionRequest::HandleDriverResult( pfc_log_debug("itc_trans->trans_state() == VOTE_WAIT_DRIVER_RESULT"); itc_trans->set_trans_state(VOTE_SUCCESS); pfc_log_info( - "TransactionRequest::HandleDriverResult:VotePhase is Successful----"); + "TransactionRequest::HandleDriverResult:VotePhase is Successful"); pfc_log_debug("TransactionRequest::HandleDriverResult:trans_state()= %d", itc_trans->trans_state()); } else { - return UPPL_RC_ERR_VOTE_INVALID_REQ; + return UNC_UPPL_RC_ERR_VOTE_INVALID_REQ; } } if (phase == unc::tclib::TC_COMMIT_GLOBAL_COMMIT_PHASE && @@ -243,9 +227,43 @@ UpplReturnCode TransactionRequest::HandleDriverResult( boundary_updated.empty()) { itc_trans->set_trans_state(GLOBAL_COMMIT_SUCCESS); pfc_log_info("CommitPhase:There are no modified configurations\n"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } +/* + // check whether it is already in running db otherwise delete + // the entries from the vector + vector :: iterator it_controller1 = + controller_deleted.begin(); + for ( ; it_controller1 != controller_deleted.end();) { + pfc_log_debug( + "Checking the deleted entries in running database:Inside for loop"); + + key_ctr_t key_ctr_obj = *it_controller1; + vector vect_ctr_key_value; + string controller_name = reinterpret_cast + (key_ctr_obj.controller_name); + pfc_log_debug( + "DeletedControlleris %s", key_ctr_obj.controller_name); + vect_ctr_key_value.push_back(controller_name); + Kt_Controller kt_controller; + UncRespCode key_exist_running = kt_controller.IsKeyExists( + db_conn, UNC_DT_RUNNING, + vect_ctr_key_value); + if (key_exist_running == UNC_RC_SUCCESS) { + ++it_controller1; + continue; + } else if (key_exist_running == UNC_UPPL_RC_ERR_DB_ACCESS) { + pfc_log_fatal( + "TransactionRequest:Connection Error"); + return UNC_UPPL_RC_ERR_DB_ACCESS; + } else { + pfc_log_debug( + "Controller entry is not available in running"); + it_controller1 = controller_deleted.erase(it_controller1); + } + } +*/ /* Storing the Old values of updated controller */ vector :: iterator it_controller = controller_updated.begin(); @@ -260,7 +278,7 @@ UpplReturnCode TransactionRequest::HandleDriverResult( vect_ctr_key.push_back(reinterpret_cast(&key_ctr_obj)); if (kt_controller.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_RUNNING, - UNC_OP_READ) != UPPL_RC_SUCCESS) { + UNC_OP_READ) != UNC_RC_SUCCESS) { // Remove the updated key from updated vector it_controller = controller_updated.erase(it_controller); continue; @@ -291,7 +309,7 @@ UpplReturnCode TransactionRequest::HandleDriverResult( if (kt_domain.ReadInternal(db_conn, vect_domain_key, vect_domain_val_st, UNC_DT_RUNNING, - UNC_OP_READ) != UPPL_RC_SUCCESS) { + UNC_OP_READ) != UNC_RC_SUCCESS) { // Remove the updated key from updated vector it_domain = domain_updated.erase(it_domain); continue; @@ -322,7 +340,7 @@ UpplReturnCode TransactionRequest::HandleDriverResult( if (kt_boundary.ReadInternal(db_conn, vect_boundary_key, vect_boundary_val_st, UNC_DT_RUNNING, - UNC_OP_READ) != UPPL_RC_SUCCESS) { + UNC_OP_READ) != UNC_RC_SUCCESS) { // Remove the updated key from updated vector it_boundary = boundary_updated.erase(it_boundary); continue; @@ -344,10 +362,10 @@ UpplReturnCode TransactionRequest::HandleDriverResult( pfc_log_info("Configuration Committed Successfully"); } else if (db_commit_status == ODBCM_RC_CONNECTION_ERROR) { pfc_log_fatal("Committing Configuration Failed - DB Access Error"); - return UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING; + return UNC_UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING; } else { pfc_log_fatal("Committing Configuration Failed"); - return UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING; + return UNC_UPPL_RC_ERR_FATAL_COPYDB_CANDID_RUNNING; } // For all deleted controllers, remove the state entries as well it_controller = controller_deleted.begin(); @@ -360,9 +378,18 @@ UpplReturnCode TransactionRequest::HandleDriverResult( ODBCM_RC_STATUS clear_status = PhysicalLayer::get_instance()->get_odbc_manager()-> ClearOneInstance(UNC_DT_STATE, controller_name, db_conn); - if (clear_status != ODBCM_RC_SUCCESS) { - pfc_log_info("State DB clearing failed"); + if (clear_status != ODBCM_RC_SUCCESS) { + pfc_log_fatal("Error during Clearing the state db"); + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_name.c_str(), + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_CLEAR_DB; } + // remove the deleted controller entry from alarm_status_map + physical_core->remove_ctr_from_alarm_status_map(controller_name, "1"); + physical_core->remove_ctr_from_alarm_status_map(controller_name, "3"); } itc_trans->set_trans_state(GLOBAL_COMMIT_SUCCESS); pfc_log_debug("TransactionRequest::HandleDriverResult:trans_state()= %d", @@ -380,11 +407,11 @@ UpplReturnCode TransactionRequest::HandleDriverResult( if (kt_boundary.ReadInternal(db_conn, vect_boundary_key, vect_boundary_val_st, UNC_DT_RUNNING, - UNC_OP_READ) != UPPL_RC_SUCCESS) { + UNC_OP_READ) != UNC_RC_SUCCESS) { continue; } vector ref_oper_status; - UpplReturnCode operstatus_return = + UncRespCode operstatus_return = kt_boundary.HandleOperStatus( db_conn, UNC_DT_RUNNING, reinterpret_cast(&key_boundary_obj), @@ -410,25 +437,25 @@ UpplReturnCode TransactionRequest::HandleDriverResult( } pfc_log_info("Starting to send the Notification after" " committing configuration"); - UpplReturnCode notfn_status = SendControllerNotification(db_conn, + UncRespCode notfn_status = SendControllerNotification(db_conn, vec_old_val_ctr); - if (notfn_status != UPPL_RC_SUCCESS) { + if (notfn_status != UNC_RC_SUCCESS) { return notfn_status; } notfn_status = SendDomainNotification(db_conn, vec_old_val_ctr_domain); - if (notfn_status != UPPL_RC_SUCCESS) { + if (notfn_status != UNC_RC_SUCCESS) { return notfn_status; } notfn_status = SendBoundaryNotification(db_conn, vec_old_val_boundary); - if (notfn_status != UPPL_RC_SUCCESS) { + if (notfn_status != UNC_RC_SUCCESS) { return notfn_status; } } if (phase != unc::tclib::TC_COMMIT_VOTE_PHASE && phase != unc::tclib::TC_COMMIT_GLOBAL_COMMIT_PHASE) { - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**HandleGlobalCommitRequest @@ -439,11 +466,11 @@ UpplReturnCode TransactionRequest::HandleDriverResult( * @param[in] : session_id - ipc session id used for TC validation * config_id - configuration id used for TC validation * @param[out] : driver_info - contains the controller list - * @return : UPPL_RC_SUCCESS if the HandleGlobalCommitRequest is - * successful or returns UPPL_RC_ERR_* if + * @return : UNC_RC_SUCCESS if the HandleGlobalCommitRequest is + * successful or returns UNC_UPPL_RC_ERR_* if * HandleGlobalCommitRequest is failed * */ -UpplReturnCode TransactionRequest::HandleGlobalCommitRequest( +UncRespCode TransactionRequest::HandleGlobalCommitRequest( uint32_t session_id, uint32_t config_id, TcDriverInfoMap @@ -452,7 +479,7 @@ UpplReturnCode TransactionRequest::HandleGlobalCommitRequest( get_physical_core(); InternalTransactionCoordinator *itc_trans = physical_core->get_internal_transaction_coordinator(); - pfc_log_info("TransactionRequest::HandleGlobalCommitRequest-------"); + pfc_log_info("TransactionRequest::HandleGlobalCommitRequest"); pfc_log_debug("trans_state()= %d", itc_trans->trans_state()); if (itc_trans->trans_state() == VOTE_SUCCESS) { @@ -461,12 +488,12 @@ UpplReturnCode TransactionRequest::HandleGlobalCommitRequest( itc_trans->set_trans_state(GLOBAL_COMMIT_WAIT_DRIVER_RESULT); } else { pfc_log_debug("itc_trans->trans_state() != VOTE_SUCCESS"); - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } pfc_log_debug( "TransactionRequest::HandleGlobalCommitRequest:trans_state()= %d", itc_trans->trans_state()); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** AbortTransaction @@ -475,10 +502,10 @@ UpplReturnCode TransactionRequest::HandleGlobalCommitRequest( * @param[in] : session_id - ipc session id used for TC validation * config_id - configuration id used for TC validation * operation_phase - denotes the TC commit operation phase - * @return : UPPL_RC_SUCCESS if the AbortTransaction is successful or - * returns UPPL_RC_ERR_* if AbortTransaction is failed + * @return : UNC_RC_SUCCESS if the AbortTransaction is successful or + * returns UNC_UPPL_RC_ERR_* if AbortTransaction is failed * */ -UpplReturnCode TransactionRequest::AbortTransaction(uint32_t session_id, +UncRespCode TransactionRequest::AbortTransaction(uint32_t session_id, uint32_t config_id, TcCommitOpAbortPhase operation_phase) { @@ -496,7 +523,7 @@ UpplReturnCode TransactionRequest::AbortTransaction(uint32_t session_id, pfc_log_info("AbortTxn COMMIT_VOTE_REQ - Nothing to do"); } itc_trans-> set_trans_state(TRANS_END); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** EndTransaction @@ -507,55 +534,53 @@ UpplReturnCode TransactionRequest::AbortTransaction(uint32_t session_id, * @param[in] : session_id - ipc session id used for TC validation * config_id - configuration id used for TC validation * trans_res - specifies the TC transaction end result - * @return : UPPL_RC_SUCCESS if the EndTransaction is successful or - * returns UPPL_RC_ERR_* if EndTransaction is failed + * @return : UNC_RC_SUCCESS if the EndTransaction is successful or + * returns UNC_UPPL_RC_ERR_* if EndTransaction is failed * */ -UpplReturnCode TransactionRequest::EndTransaction( +UncRespCode TransactionRequest::EndTransaction( OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t config_id, TcTransEndResult trans_res ) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; PhysicalCore *physical_core = PhysicalLayer::get_instance()-> get_physical_core(); InternalTransactionCoordinator *itc_trans = physical_core->get_internal_transaction_coordinator(); - pfc_log_info("TransactionRequest::EndTransaction-------"); + pfc_log_info("TransactionRequest::EndTransaction"); pfc_log_debug("trans_state()= %d", itc_trans->trans_state()); // Checking the result of the Transaction if (trans_res == unc::tclib::TRANS_END_FAILURE) { itc_trans->set_trans_state(TRANS_END); pfc_log_info("End Transaction:FailureResponse from TC\n"); ClearMaps(); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } // Checking whether there is any modified controller configuration if (controller_deleted.empty() && controller_created.empty() && controller_updated.empty()) { itc_trans->set_trans_state(TRANS_END); pfc_log_info("End Transaction:No Modified configurations\n"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } string controller_name = ""; string driver_name = ""; unc_keytype_ctrtype_t controller_type; key_ctr_t key_ctr_obj; Kt_Controller kt_controller; - UpplReturnCode err = UPPL_RC_SUCCESS; + UncRespCode err = UNC_RC_SUCCESS; IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_fatal("Cannot open session to PFC driver"); return err; } - err = UPPL_RC_SUCCESS; IPCClientDriverHandler vnp_drv_handler(UNC_CT_VNP, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_fatal("Cannot open session to VNP driver"); return err; } - err = UPPL_RC_SUCCESS; IPCClientDriverHandler odc_drv_handler(UNC_CT_ODC, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_fatal("Cannot open session to ODC driver"); return err; } @@ -563,7 +588,7 @@ UpplReturnCode TransactionRequest::EndTransaction( vector :: iterator it_controller = controller_deleted.begin(); for ( ; it_controller != controller_deleted.end(); ++it_controller) { key_ctr_obj = *it_controller; - UpplReturnCode logical_result = + UncRespCode logical_result = kt_controller.SendUpdatedControllerInfoToUPLL( UNC_DT_RUNNING, UNC_OP_DELETE, @@ -577,7 +602,7 @@ UpplReturnCode TransactionRequest::EndTransaction( controller_type = (unc_keytype_ctrtype_t)controller_type_map[controller_name]; if (physical_core->GetDriverName(controller_type, driver_name) - != UPPL_RC_SUCCESS) { + != UNC_RC_SUCCESS) { pfc_log_debug("Unable to get the Driver Name from Physical Core"); continue; } @@ -590,7 +615,7 @@ UpplReturnCode TransactionRequest::EndTransaction( } else if (controller_type == UNC_CT_VNP) { pfc_log_debug("VNP Controller Type"); cli_session = vnp_drv_handler.ResetAndGetSession(); - } else if (controller_type == UNC_CT_ODC ) { + } else if ( controller_type == UNC_CT_ODC ) { pfc_log_debug("ODC Controller Type"); cli_session = odc_drv_handler.ResetAndGetSession(); } else { @@ -607,18 +632,16 @@ UpplReturnCode TransactionRequest::EndTransaction( err |= cli_session->addOutput(key_ctr_obj); pfc_log_info("%s", IpctUtil::get_string(key_ctr_obj).c_str()); // Send the request to driver - UpplReturnCode driver_response = UPPL_RC_SUCCESS; + UncRespCode driver_response = UNC_RC_SUCCESS; driver_response_header rsp; if (controller_type == UNC_CT_PFC) { driver_response = pfc_drv_handler.SendReqAndGetResp(rsp); - } - if (controller_type == UNC_CT_VNP) { + } else if (controller_type == UNC_CT_VNP) { driver_response = vnp_drv_handler.SendReqAndGetResp(rsp); - } - if (controller_type == UNC_CT_ODC ) { + } else if (controller_type == UNC_CT_ODC) { driver_response = odc_drv_handler.SendReqAndGetResp(rsp); } - if (err != 0 || driver_response != UPPL_RC_SUCCESS) { + if (err != 0 || driver_response != UNC_RC_SUCCESS) { pfc_log_error("Delete response from driver for controller %s" "is %d err=%d", controller_name.c_str(), driver_response, err); } @@ -659,10 +682,6 @@ void TransactionRequest::ClearMaps() { if (!boundary_created.empty()) boundary_created.clear(); if (!boundary_updated.empty()) boundary_updated.clear(); if (!boundary_deleted.empty()) boundary_deleted.clear(); - /* Clearing the contents of the previously stored controllers - * related to specific type */ - if (!set_controller_oflow.empty()) set_controller_oflow.clear(); - if (!set_controller_vnp.empty())set_controller_vnp.clear(); } /**SendControllerNotification @@ -670,10 +689,10 @@ void TransactionRequest::ClearMaps() { * the modified controllers * @param[in] : vec_old_val_ctr - Vector for storing the old value struct * of the controller - * @return : UPPL_RC_SUCCESS if the notification of modified controllers - * success or returns UPPL_RC_ERR_* if its failed + * @return : UNC_RC_SUCCESS if the notification of modified controllers + * success or returns UNC_UPPL_RC_ERR_* if its failed * */ -UpplReturnCode TransactionRequest::SendControllerNotification( +UncRespCode TransactionRequest::SendControllerNotification( OdbcmConnectionHandler *db_conn, vector vec_old_val_ctr) { // Sending the notification of deleted controllers @@ -686,7 +705,7 @@ UpplReturnCode TransactionRequest::SendControllerNotification( key_ctr_t key_ctr_obj = *it_controller; pfc_log_debug("Sending Notification for Deleted Controller: %s", key_ctr_obj.controller_name); - UpplReturnCode nofn_status = + UncRespCode nofn_status = kt_controller.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_CONTROLLER, @@ -704,13 +723,13 @@ UpplReturnCode TransactionRequest::SendControllerNotification( key_ctr_obj.controller_name); vector vect_ctr_key, vect_ctr_val; vect_ctr_key.push_back(reinterpret_cast(&key_ctr_obj)); - UpplReturnCode retCode = kt_controller.ReadInternal(db_conn, + UncRespCode retCode = kt_controller.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_CANDIDATE, UNC_OP_READ); - if (retCode == UPPL_RC_SUCCESS) { - UpplReturnCode nofn_status = + if (retCode == UNC_RC_SUCCESS) { + UncRespCode nofn_status = kt_controller.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_CONTROLLER, @@ -731,10 +750,10 @@ UpplReturnCode TransactionRequest::SendControllerNotification( delete ctr_val; ctr_val = NULL; } - } else if (retCode == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + } else if (retCode == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { // Do nothing } else { - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } } // Sending the notification of updated Controller @@ -749,13 +768,13 @@ UpplReturnCode TransactionRequest::SendControllerNotification( key_ctr_obj.controller_name); vector vect_ctr_key, vect_ctr_val; vect_ctr_key.push_back(reinterpret_cast(&key_ctr_obj)); - UpplReturnCode retCode = kt_controller.ReadInternal(db_conn, + UncRespCode retCode = kt_controller.ReadInternal(db_conn, vect_ctr_key, vect_ctr_val, UNC_DT_CANDIDATE, UNC_OP_READ); - if (retCode == UPPL_RC_SUCCESS) { - UpplReturnCode nofn_status = + if (retCode == UNC_RC_SUCCESS) { + UncRespCode nofn_status = kt_controller.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_CONTROLLER, @@ -784,13 +803,13 @@ UpplReturnCode TransactionRequest::SendControllerNotification( delete ctr_old_val; ctr_old_val = NULL; } - } else if (retCode == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + } else if (retCode == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { // Do nothing } else { - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**SendDomainNotification @@ -798,10 +817,10 @@ UpplReturnCode TransactionRequest::SendControllerNotification( * the modified domain * @param[in] : vec_old_val_ctr - Vector for storing the old value struct * of the domain - * @return : UPPL_RC_SUCCESS if the notification of modified domain - * success or returns UPPL_RC_ERR_* if its failed + * @return : UNC_RC_SUCCESS if the notification of modified domain + * success or returns UNC_UPPL_RC_ERR_* if its failed * */ -UpplReturnCode TransactionRequest::SendDomainNotification( +UncRespCode TransactionRequest::SendDomainNotification( OdbcmConnectionHandler *db_conn, vector vec_old_val_ctr_domain) { /*Sending the notification of deleted unknown domain */ @@ -816,7 +835,7 @@ UpplReturnCode TransactionRequest::SendDomainNotification( int ret_notfn = kt_domain.InvokeBoundaryNotifyOperStatus( db_conn, UNC_DT_RUNNING, key_ctr_domain_ptr); pfc_log_debug("Boundary Invoke Operation return %d", ret_notfn); - UpplReturnCode nofn_status = + UncRespCode nofn_status = kt_domain.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_CTR_DOMAIN, @@ -842,14 +861,14 @@ UpplReturnCode TransactionRequest::SendDomainNotification( vect_key_struct.push_back(key_ctr_domain_ptr); pfc_log_debug("TxnClass:Controllername: %s", key_ctr_domain_obj.ctr_key.controller_name); - UpplReturnCode retCode = kt_domain.ReadInternal(db_conn, vect_key_struct, + UncRespCode retCode = kt_domain.ReadInternal(db_conn, vect_key_struct, vect_new_val, UNC_DT_CANDIDATE, UNC_OP_READ); - if (retCode == UPPL_RC_SUCCESS) { + if (retCode == UNC_RC_SUCCESS) { void *val_ctr_domain_new = vect_new_val[0]; - UpplReturnCode nofn_status = + UncRespCode nofn_status = kt_domain.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_CTR_DOMAIN, @@ -878,10 +897,10 @@ UpplReturnCode TransactionRequest::SendDomainNotification( delete val_domain_old; val_domain_old = NULL; } - } else if (retCode == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + } else if (retCode == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { // Do nothing } else { - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } } /* Sending the notification of created unknown domain */ @@ -898,13 +917,13 @@ UpplReturnCode TransactionRequest::SendDomainNotification( db_conn, UNC_DT_RUNNING, reinterpret_cast(&key_ctr_domain_obj)); pfc_log_debug("Domain Invoke Operation return %d", ret_notfn); - UpplReturnCode retCode = kt_domain.ReadInternal(db_conn, vect_key_domain, + UncRespCode retCode = kt_domain.ReadInternal(db_conn, vect_key_domain, vect_val_domain, UNC_DT_CANDIDATE, UNC_OP_READ); - if (retCode == UPPL_RC_SUCCESS) { + if (retCode == UNC_RC_SUCCESS) { void *val_ctr_domain_new = vect_val_domain[0]; - UpplReturnCode nofn_status = + UncRespCode nofn_status = kt_domain.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_CTR_DOMAIN, @@ -926,13 +945,13 @@ UpplReturnCode TransactionRequest::SendDomainNotification( delete val_domain; val_domain = NULL; } - } else if (retCode == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + } else if (retCode == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { // Do nothing } else { - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**SendBoundaryNotification @@ -940,10 +959,10 @@ UpplReturnCode TransactionRequest::SendDomainNotification( * the modified boundary * @param[in] : vec_old_val_ctr - Vector for storing the old value struct * of the boundary - * @return : UPPL_RC_SUCCESS if the notification of modified boundary - * success or returns UPPL_RC_ERR_* if its failed + * @return : UNC_RC_SUCCESS if the notification of modified boundary + * success or returns UNC_UPPL_RC_ERR_* if its failed * */ -UpplReturnCode TransactionRequest::SendBoundaryNotification( +UncRespCode TransactionRequest::SendBoundaryNotification( OdbcmConnectionHandler *db_conn, vector vec_old_val_boundary) { /*Sending the notification of deleted boundary */ @@ -953,7 +972,7 @@ UpplReturnCode TransactionRequest::SendBoundaryNotification( for (; it_boundary != boundary_deleted.end(); ++it_boundary) { key_boundary_t key_boundary_obj = *it_boundary; void *key_boundary_ptr = reinterpret_cast(&key_boundary_obj); - UpplReturnCode nofn_status = + UncRespCode nofn_status = kt_boundary.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_BOUNDARY, @@ -973,15 +992,15 @@ UpplReturnCode TransactionRequest::SendBoundaryNotification( vector vect_boundary_val_st; vect_boundary_key.push_back(reinterpret_cast(&key_boundary_obj)); - UpplReturnCode retCode = kt_boundary.ReadInternal(db_conn, + UncRespCode retCode = kt_boundary.ReadInternal(db_conn, vect_boundary_key, vect_boundary_val_st, UNC_DT_CANDIDATE, UNC_OP_READ); - if (retCode == UPPL_RC_SUCCESS) { + if (retCode == UNC_RC_SUCCESS) { void *val_boundary_new = reinterpret_cast (&new_val_boundary); - UpplReturnCode nofn_status = + UncRespCode nofn_status = kt_boundary.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_BOUNDARY, @@ -1002,10 +1021,10 @@ UpplReturnCode TransactionRequest::SendBoundaryNotification( delete val_boundary; val_boundary = NULL; } - } else if (retCode == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + } else if (retCode == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { // Do nothing } else { - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } } // Sending the notification of updated boundary @@ -1021,13 +1040,13 @@ UpplReturnCode TransactionRequest::SendBoundaryNotification( vector vect_boundary_val_st; key_boundary_t key_boundary_obj = *it_boundary; vect_boundary_key.push_back(reinterpret_cast(&key_boundary_obj)); - UpplReturnCode retCode = kt_boundary.ReadInternal(db_conn, + UncRespCode retCode = kt_boundary.ReadInternal(db_conn, vect_boundary_key, vect_boundary_val_st, UNC_DT_CANDIDATE, UNC_OP_READ); - if (retCode == UPPL_RC_SUCCESS) { - UpplReturnCode nofn_status = + if (retCode == UNC_RC_SUCCESS) { + UncRespCode nofn_status = kt_boundary.ConfigurationChangeNotification( (uint32_t)UNC_DT_RUNNING, (uint32_t)UNC_KT_BOUNDARY, @@ -1056,13 +1075,13 @@ UpplReturnCode TransactionRequest::SendBoundaryNotification( delete val_boundary_old; val_boundary_old = NULL; } - } else if (retCode == UPPL_RC_ERR_NO_SUCH_INSTANCE) { + } else if (retCode == UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { // Do nothing } else { - return UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; + return UNC_UPPL_RC_ERR_COMMIT_OPERATION_NOT_ALLOWED; } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**SendControllerInfo @@ -1079,20 +1098,19 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, uint32_t session_id, uint32_t config_id) { vector controller_info; - UpplReturnCode err = UPPL_RC_SUCCESS; + UncRespCode err = UNC_RC_SUCCESS; IPCClientDriverHandler pfc_drv_handler(UNC_CT_PFC, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Cannot open session to PFC driver"); return; } - err = UPPL_RC_SUCCESS; IPCClientDriverHandler vnp_drv_handler(UNC_CT_VNP, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Cannot open session to VNP driver"); return; } IPCClientDriverHandler odc_drv_handler(UNC_CT_ODC, err); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_error("Cannot open session to VNP driver"); return; } @@ -1113,12 +1131,12 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, controller_name.c_str()); vector vect_key_ctr, vect_ctr_val; vect_key_ctr.push_back(reinterpret_cast(&key_ctr_obj)); - UpplReturnCode retCode = kt_controller.ReadInternal(db_conn, + UncRespCode retCode = kt_controller.ReadInternal(db_conn, vect_key_ctr, vect_ctr_val, UNC_DT_CANDIDATE, UNC_OP_READ); - if (retCode != UPPL_RC_SUCCESS) { + if (retCode != UNC_RC_SUCCESS) { pfc_log_debug("ReadInternal failed for controller"); continue; } @@ -1130,7 +1148,7 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, continue; } // Inform logical - UpplReturnCode logical_result = + UncRespCode logical_result = kt_controller.SendUpdatedControllerInfoToUPLL( UNC_DT_RUNNING, operation_type, @@ -1143,7 +1161,7 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, (unc_keytype_ctrtype_t) (PhyUtil::uint8touint(val_ctr_new->controller.type)); if (physical_core->GetDriverName(controller_type, driver_name) - != UPPL_RC_SUCCESS) { + != UNC_RC_SUCCESS) { pfc_log_debug("TxnEnd:Unable to get Driver Name from Physical Core"); delete val_ctr_new; val_ctr_new = NULL; @@ -1164,7 +1182,7 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, } else if (controller_type == UNC_CT_VNP) { pfc_log_debug("VNP Controller type"); cli_session = vnp_drv_handler.ResetAndGetSession(); - } else if (controller_type == UNC_CT_ODC ) { + } else if ( controller_type == UNC_CT_ODC ) { pfc_log_debug("ODC Controller type"); cli_session = odc_drv_handler.ResetAndGetSession(); } else { @@ -1193,7 +1211,7 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, pfc_log_info("%s", IpctUtil::get_string(key_ctr_obj).c_str()); pfc_log_info("%s", IpctUtil::get_string(*val_ctr_new).c_str()); // Send the request to driver - UpplReturnCode driver_response = UPPL_RC_SUCCESS; + UncRespCode driver_response = UNC_RC_SUCCESS; driver_response_header rsp; if (controller_type == UNC_CT_PFC) { @@ -1202,7 +1220,7 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, if (controller_type == UNC_CT_VNP) { driver_response = vnp_drv_handler.SendReqAndGetResp(rsp); } - if (controller_type == UNC_CT_ODC ) { + if ( controller_type == UNC_CT_ODC ) { driver_response = odc_drv_handler.SendReqAndGetResp(rsp); } delete val_ctr_new; @@ -1213,7 +1231,7 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, delete ctr_key; ctr_key = NULL; } - if (err != 0 || driver_response != UPPL_RC_SUCCESS) { + if (err != 0 || driver_response != UNC_RC_SUCCESS) { pfc_log_error("Create request to Driver failed for controller %s" " with response %d, err=%d", controller_name.c_str(), driver_response, err); @@ -1227,13 +1245,13 @@ void TransactionRequest::SendControllerInfo(OdbcmConnectionHandler *db_conn, * from the Candidate Database. * @param[in] : row_status - specifies the row status of modified * row of kt_controller - * @return : UPPL_RC_SUCCESS if GetModifiedControllers is successful or - * UPPL_RC_ERR_* in case of failure + * @return : UNC_RC_SUCCESS if GetModifiedControllers is successful or + * UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode TransactionRequest::GetModifiedController( +UncRespCode TransactionRequest::GetModifiedController( OdbcmConnectionHandler *db_conn, CsRowStatus row_status) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; unc_keytype_ctrtype_t controller_type; pfc_log_info("Get Modified Controller for Row Status: %d", row_status); @@ -1244,8 +1262,16 @@ UpplReturnCode TransactionRequest::GetModifiedController( db_conn, vec_key_ctr_modified, row_status); pfc_log_debug("Controller:GetModifiedRows return code = %d", ret_code); - if (ret_code == UPPL_RC_ERR_DB_ACCESS) { - return ret_code; + if (ret_code == UNC_UPPL_RC_ERR_DB_ACCESS || + ret_code == UNC_UPPL_RC_ERR_DB_GET) { + pfc_log_info( + "Error retrieving GetModifiedRows, return txn error"); + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo("", + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_TRANSACTION_START; } for (uint32_t config_count = 0; \ config_count < vec_key_ctr_modified.size(); config_count++) { @@ -1262,21 +1288,26 @@ UpplReturnCode TransactionRequest::GetModifiedController( // check whether it is already in running vector vect_ctr_key_value; vect_ctr_key_value.push_back(controller_name); - UpplReturnCode key_exist_running = kt_controller.IsKeyExists( + UncRespCode key_exist_running = kt_controller.IsKeyExists( db_conn, UNC_DT_RUNNING, vect_ctr_key_value); - if (key_exist_running == UPPL_RC_ERR_DB_ACCESS) { + if (key_exist_running == UNC_UPPL_RC_ERR_DB_ACCESS) { // Error retrieving information from database, send failure pfc_log_info( "Error retrieving information from running db, return txn error"); - return UPPL_RC_ERR_TRANSACTION_START; - } else if (key_exist_running != UPPL_RC_SUCCESS) { + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_name.c_str(), + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_TRANSACTION_START; + } else if (key_exist_running != UNC_RC_SUCCESS) { pfc_log_debug( "Controller entry in is not available in running"); } if (row_status == CREATED) { controller_created.push_back(*ptr_key_ctr); - if (key_exist_running == UPPL_RC_SUCCESS) { + if (key_exist_running == UNC_RC_SUCCESS) { controller_deleted.push_back(*ptr_key_ctr); is_controller_recreated = PFC_TRUE; } @@ -1284,7 +1315,7 @@ UpplReturnCode TransactionRequest::GetModifiedController( if (row_status == UPDATED) controller_updated.push_back(*ptr_key_ctr); if (row_status == DELETED) { - if (key_exist_running == UPPL_RC_SUCCESS) { + if (key_exist_running == UNC_RC_SUCCESS) { controller_deleted.push_back(*ptr_key_ctr); } } @@ -1293,12 +1324,7 @@ UpplReturnCode TransactionRequest::GetModifiedController( ptr_key_ctr = NULL; if (PhyUtil::get_controller_type( db_conn, controller_name, - controller_type, UNC_DT_CANDIDATE) == UPPL_RC_SUCCESS) { - if (controller_type == UNC_CT_PFC) { - set_controller_oflow.insert(controller_name); - } else if (controller_type == UNC_CT_VNP) { - set_controller_vnp.insert(controller_name); - } + controller_type, UNC_DT_CANDIDATE) == UNC_RC_SUCCESS) { if (row_status == DELETED) { pfc_log_debug( "Controller %s of type %d is marked for DELETION", @@ -1307,25 +1333,35 @@ UpplReturnCode TransactionRequest::GetModifiedController( } } else { pfc_log_info("Error retrieving controller type from candidate"); - return UPPL_RC_ERR_TRANSACTION_START; + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_name.c_str(), + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_TRANSACTION_START; } if (is_controller_recreated == PFC_TRUE) { // Get existing controller type from RUNNING if (PhyUtil::get_controller_type( db_conn, controller_name, - controller_type, UNC_DT_RUNNING) == UPPL_RC_SUCCESS) { + controller_type, UNC_DT_RUNNING) == UNC_RC_SUCCESS) { pfc_log_debug( "Controller %s of type %d is marked for RECREATION", controller_name.c_str(), controller_type); controller_type_map[controller_name] = controller_type; } else { pfc_log_info("Error retrieving controller type from running"); - return UPPL_RC_ERR_TRANSACTION_START; + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_name.c_str(), + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_TRANSACTION_START; } } } pfc_log_debug("Modified Controllers Iterated properly"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**GetModifiedDomain @@ -1333,13 +1369,13 @@ UpplReturnCode TransactionRequest::GetModifiedController( * from the Candidate Database. * @param[in] : row_status - specifies the row status of modified * row of kt_domain - * @return : UPPL_RC_SUCCESS if GetModifiedDomain is successful or - * UPPL_RC_ERR_* in case of failure + * @return : UNC_RC_SUCCESS if GetModifiedDomain is successful or + * UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode TransactionRequest::GetModifiedDomain( +UncRespCode TransactionRequest::GetModifiedDomain( OdbcmConnectionHandler *db_conn, CsRowStatus row_status) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_log_info("Get Modified Domain for Row Status: %d", row_status); /* Getting the Modified Unknown Domain Configuration */ Kt_Ctr_Domain kt_ctr_domain; @@ -1348,7 +1384,15 @@ UpplReturnCode TransactionRequest::GetModifiedDomain( db_conn, vec_key_ctr_domain_modified, row_status); pfc_log_debug("Domain:GetModifiedRows return code = %d", ret_code); - if (ret_code == UPPL_RC_ERR_DB_ACCESS) { + if (ret_code == UNC_UPPL_RC_ERR_DB_ACCESS || + ret_code == UNC_UPPL_RC_ERR_DB_GET) { + pfc_log_info( + "Error retrieving GetModifiedRows, return txn error"); + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo("", + UNC_RC_INTERNAL_ERR, + 0); return ret_code; } for (uint32_t config_count = 0; \ @@ -1375,16 +1419,22 @@ UpplReturnCode TransactionRequest::GetModifiedDomain( vect_domain_key_value.push_back( (const char*)ptr_key_ctr_domain->ctr_key.controller_name); vect_domain_key_value.push_back(domain_name); - UpplReturnCode key_exist_running = kt_ctr_domain.IsKeyExists( + UncRespCode key_exist_running = kt_ctr_domain.IsKeyExists( db_conn, UNC_DT_RUNNING, vect_domain_key_value); - if (key_exist_running == UPPL_RC_SUCCESS) { + if (key_exist_running == UNC_RC_SUCCESS) { domain_deleted.push_back(*ptr_key_ctr_domain); - } else if (key_exist_running == UPPL_RC_ERR_DB_ACCESS) { + } else if (key_exist_running == UNC_UPPL_RC_ERR_DB_ACCESS) { // Error retrieving information from database, send failure pfc_log_info( "Error retrieving information from running db, return txn error"); - return UPPL_RC_ERR_TRANSACTION_START; + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo( + (const char*)ptr_key_ctr_domain->ctr_key.controller_name, + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_TRANSACTION_START; } else { pfc_log_debug( "Deleted entry in candidate is not available in running-ignoring"); @@ -1395,7 +1445,7 @@ UpplReturnCode TransactionRequest::GetModifiedDomain( ptr_key_ctr_domain = NULL; } pfc_log_debug("Modified Domain iterated properly"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**GetModifiedBoundary @@ -1403,13 +1453,13 @@ UpplReturnCode TransactionRequest::GetModifiedDomain( * from the Candidate Database. * @param[in] : row_status - specifies the row status of modified * row of kt_boundary - * @return : UPPL_RC_SUCCESS if GetModifiedBoundary is successful or - * UPPL_RC_ERR_* in case of failure + * @return : UNC_RC_SUCCESS if GetModifiedBoundary is successful or + * UNC_UPPL_RC_ERR_* in case of failure * */ -UpplReturnCode TransactionRequest::GetModifiedBoundary( +UncRespCode TransactionRequest::GetModifiedBoundary( OdbcmConnectionHandler *db_conn, CsRowStatus row_status) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; pfc_log_info("Get Modified Boundary for Row Status: %d", row_status); // Getting the Modified Boundary Configuration Kt_Boundary kt_boundary; @@ -1418,13 +1468,21 @@ UpplReturnCode TransactionRequest::GetModifiedBoundary( db_conn, vec_key_boundary_modified, row_status); pfc_log_debug("Controller:GetModifiedRows return code = %d", ret_code); - if (ret_code == UPPL_RC_ERR_DB_ACCESS) { - return ret_code; + if (ret_code == UNC_UPPL_RC_ERR_DB_ACCESS || + ret_code == UNC_UPPL_RC_ERR_DB_GET) { + pfc_log_info( + "Error retrieving GetModifiedRows from running db, return txn error"); + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo("", + UNC_RC_INTERNAL_ERR, + 0); + return UNC_UPPL_RC_ERR_TRANSACTION_START; } for (uint32_t config_count = 0; \ - config_count < vec_key_boundary_modified.size(); config_count++) { + config_count < vec_key_boundary_modified.size(); config_count++) { key_boundary_t *ptr_key_boundary = reinterpret_cast - (vec_key_boundary_modified[config_count]); + (vec_key_boundary_modified[config_count]); if (ptr_key_boundary == NULL) { continue; } @@ -1437,16 +1495,22 @@ UpplReturnCode TransactionRequest::GetModifiedBoundary( vector vect_bdry_key_value; vect_bdry_key_value.push_back( (const char*)ptr_key_boundary->boundary_id); - UpplReturnCode key_exist_running = kt_boundary.IsKeyExists( + UncRespCode key_exist_running = kt_boundary.IsKeyExists( db_conn, UNC_DT_RUNNING, vect_bdry_key_value); - if (key_exist_running == UPPL_RC_SUCCESS) { + if (key_exist_running == UNC_RC_SUCCESS) { boundary_deleted.push_back(*ptr_key_boundary); - } else if (key_exist_running == UPPL_RC_ERR_DB_ACCESS) { + } else if (key_exist_running == UNC_UPPL_RC_ERR_DB_ACCESS) { // Error retrieving information from database, send failure pfc_log_info( "Error retrieving information from running db, return txn error"); - return UPPL_RC_ERR_TRANSACTION_START; + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo("", + UNC_RC_INTERNAL_ERR, + 0); + + return UNC_UPPL_RC_ERR_TRANSACTION_START; } else { pfc_log_debug( "Deleted entry in candidate is not available in running-ignoring"); @@ -1457,5 +1521,5 @@ UpplReturnCode TransactionRequest::GetModifiedBoundary( ptr_key_boundary = NULL; } pfc_log_debug("Modified Boundary iterated properly"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } diff --git a/coordinator/modules/uppl/odbcm_bind_controller.cc b/coordinator/modules/uppl/odbcm_bind_controller.cc index 93e149c3..6f0d9026 100644 --- a/coordinator/modules/uppl/odbcm_bind_controller.cc +++ b/coordinator/modules/uppl/odbcm_bind_controller.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -385,7 +385,7 @@ ODBCM_RC_STATUS DBVarbind::bind_controller_table_output( log_flag = 0; } break; - case CTR_ACTUAL_VERSION: + case CTR_ACTUAL_VERSION: if ((*i).request_attribute_type == DATATYPE_UINT8_ARRAY_32) { odbc_rc = BindCol_SQL_VARCHAR( r_hstmt, @@ -609,7 +609,7 @@ ODBCM_RC_STATUS DBVarbind::fill_controller_table( ODBCM_MEMSET(&p_ctr_table->senable_audit, 0, sizeof(SQLSMALLINT)); p_ctr_table->senable_audit = audit_value.value; odbcm_debug_info("ODBCM::DBVarbind::fill:CTR_TABLE: " - "enable_audit = %d", p_ctr_table->senable_audit); + "senable_audit = %d", p_ctr_table->senable_audit); } break; case CTR_ACTUAL_VERSION: diff --git a/coordinator/modules/uppl/odbcm_bind_port.cc b/coordinator/modules/uppl/odbcm_bind_port.cc index f33a55a9..4ae0e240 100644 --- a/coordinator/modules/uppl/odbcm_bind_port.cc +++ b/coordinator/modules/uppl/odbcm_bind_port.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -222,6 +222,7 @@ ODBCM_RC_STATUS DBVarbind::bind_port_table_input( break; case PORT_SPEED: if ((*i).request_attribute_type == DATATYPE_UINT64) { + *p_speed_len = sizeof(SQLLEN); odbc_rc = BindInputParameter_SQL_BINARY( r_hstmt, ++col_no, @@ -236,6 +237,7 @@ ODBCM_RC_STATUS DBVarbind::bind_port_table_input( break; case PORT_ALARM_STATUS: if ((*i).request_attribute_type == DATATYPE_UINT64) { + *p_alarms_status_len = sizeof(SQLLEN); odbc_rc = BindInputParameter_SQL_BINARY( r_hstmt, ++col_no, diff --git a/coordinator/modules/uppl/odbcm_bind_switch.cc b/coordinator/modules/uppl/odbcm_bind_switch.cc index 402347e0..ebfb2132 100644 --- a/coordinator/modules/uppl/odbcm_bind_switch.cc +++ b/coordinator/modules/uppl/odbcm_bind_switch.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -245,6 +245,7 @@ ODBCM_RC_STATUS DBVarbind::bind_switch_table_input( break; case SWITCH_ALARM_STATUS: if ((*i).request_attribute_type == DATATYPE_UINT64) { + *p_alarms_status_len = sizeof(SQLLEN); odbc_rc = BindInputParameter_SQL_BINARY( r_hstmt, ++col_no, diff --git a/coordinator/modules/uppl/odbcm_connection.cc b/coordinator/modules/uppl/odbcm_connection.cc index cb540fe3..9e093345 100644 --- a/coordinator/modules/uppl/odbcm_connection.cc +++ b/coordinator/modules/uppl/odbcm_connection.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -26,10 +26,12 @@ using unc::uppl::ODBCMTable; using unc::uppl::QueryFactory; using unc::uppl::QueryProcessor; using unc::uppl::DBVarbind; +using unc::uppl::ODBCMUtils; extern pfc_cfdef_t odbcm_cfdef; /* static variable initialization */ ODBCManager *ODBCManager::ODBCManager_ = NULL; +int ODBCMUtils::sem_id = 0; /** * @Description : Constructor function which creates/initializes @@ -42,7 +44,8 @@ ODBCManager::ODBCManager() // initialize the ODBCMInit flag IsODBCManager_initialized(0), /** Initialize the ODBCManager members */ - phy_conn_env_(NULL) { + phy_conn_env_(NULL), + conn_max_limit_(0) { rw_nb_conn_obj_ = NULL; rw_sb_conn_obj_ = NULL; } @@ -67,6 +70,10 @@ ODBCManager::~ODBCManager() { db_table_list_map_.clear(); /**to clear the OdbcmSQLStateMap elements*/ ODBCMUtils::ClearOdbcmSQLStateMap(); + + FreeingConnections(true); + ODBCMUtils::del_semvalue(); + /** Free the uppl db connection and environments */ ODBCM_RC_STATUS rw_disconn_status = CloseRwConnection(); pfc_log_debug("ODBCM::ODBCManager::CloseRwConnection Status %d", @@ -365,7 +372,7 @@ ODBCM_RC_STATUS ODBCManager::OpenDBConnection( return ODBCM_RC_SUCCESS; } if (set_rw_connection_handle_(conn_handle) != ODBCM_RC_SUCCESS) { - pfc_log_error("ODBCM::ODBCManager::OpenDBConnection: " + pfc_log_fatal("ODBCM::ODBCManager::OpenDBConnection: " "Error in set_rw_connection_handle_ "); return ODBCM_RC_CONNECTION_ERROR; } @@ -382,7 +389,7 @@ ODBCM_RC_STATUS ODBCManager::OpenDBConnection( return ODBCM_RC_SUCCESS; } if (set_rw_connection_handle_(conn_handle) != ODBCM_RC_SUCCESS) { - pfc_log_error("ODBCM::ODBCManager::OpenDBConnection: " + pfc_log_fatal("ODBCM::ODBCManager::OpenDBConnection: " "Error in set_rw_connection_handle_ "); return ODBCM_RC_CONNECTION_ERROR; } @@ -409,7 +416,7 @@ ODBCM_RC_STATUS ODBCManager::OpenDBConnection( pfc_log_error("ODBCM::ODBCManager::OpenDBConnection: " "Invalid connection type %d !! ", conn_obj->get_conn_type()); - break; + return ODBCM_RC_CONNECTION_ERROR; } // ************************************************************************* // Set the matching condition for using an existing connection in the pool @@ -507,6 +514,277 @@ ODBCM_RC_STATUS ODBCManager::OpenDBConnection( conn_obj->get_conn_type()); return ODBCM_RC_SUCCESS; } +/** + @Description : When NB request comes, this function assigns db conn. + * to service the request. If the free pool has connection, + * that shall be assigned, if free pool does not have conn. + * it will create and assign new connection, if the exisitng + * no. of conns. not reached to conn.max.limit.if max conn.limit + * reached, subsequent requests shall wait (using semaphore) for + * db connection. + * If read request from configure mode shall be serviced by + * RW conn. only. + * @param[in] : uint32_t session_id, uint32_t config_id + * @param[out] : OdbcmConnectionHandler *&db_conn + * @return : ODBCM_RC_STATUS + **/ +ODBCM_RC_STATUS ODBCManager::AssignDBConnection( + OdbcmConnectionHandler *&db_conn, + uint32_t session_id, uint32_t config_id) { + pfc_log_trace("Entered into AssignDBConnection" + " session_id = %d, config_id = %d", session_id, config_id); + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + UncRespCode db_ret = UNC_RC_SUCCESS; + /**RW conn shall be reused for READ which is op belongs to same session*/ + physical_layer->db_conpool_mutex_.lock(); + if (config_id > 0) { + pfc_log_trace("RW conn req. for config mode READ operation"); + if (rw_nb_conn_obj_ != NULL) { + db_conn = rw_nb_conn_obj_; + pfc_log_trace("RW conn is assigned for READ operation"); + } else { /*if RW connection not available allocate conn handle and return*/ + pfc_log_trace("RW conn is NULL !!, Allocate RW connection and store/" + "assign for read req."); + rw_nb_conn_obj_ = new OdbcmConnectionHandler( + unc::uppl::kOdbcmConnReadWriteNb, + db_ret, + PhysicalLayer::get_instance()->get_odbc_manager()); + if (db_ret == UNC_RC_SUCCESS && rw_nb_conn_obj_ != NULL) { + db_conn = rw_nb_conn_obj_; + } else { + pfc_log_error("RW connection assignation failed!! conn. not available"); + return ODBCM_RC_CONNECTION_ERROR; + } + pfc_log_trace("RW conn is allocated and assigned for READ operation"); + } + physical_layer->db_conpool_mutex_.unlock(); + return ODBCM_RC_SUCCESS; + } + // if config id < 0 - READ operation + if (!conpool_free_list_.empty()) { + // take connection from list assign to request. + db_conn = conpool_free_list_.front(); + pfc_log_trace("Free %" PFC_PFMT_SIZE_T " RO conn(s) available in conn pool " + "and 1 is assigned for READ operation", conpool_free_list_.size()); + db_conn->set_using_session_id(session_id); + conpool_inuse_map_[session_id] = db_conn; + conpool_free_list_.pop_front(); // free pool is poped + pfc_log_trace("Existing RO conn is assgined for request sess_id = %d", + session_id); + } else { + pfc_log_trace("Free RO conn is NOT available in conn pool"); + // create new connection if no.of conn does not reach conn_max_limit + pfc_log_debug("In use conn pool size = %" PFC_PFMT_SIZE_T, + conpool_inuse_map_.size()); + pfc_log_debug("max allowed no. of conn = %d", conn_max_limit_); + if (conpool_inuse_map_.size() < conn_max_limit_) { + db_conn = new OdbcmConnectionHandler(unc::uppl::kOdbcmConnReadOnly, + db_ret, PhysicalLayer::get_instance()->get_odbc_manager()); + if (db_ret != UNC_RC_SUCCESS) { + pfc_log_error("db RO connection creation is failed.!!"); + // In case of error in Read connection, all unused Read connections + physical_layer->db_conpool_mutex_.unlock(); + return ODBCM_RC_CONNECTION_ERROR; + } + + conpool_inuse_map_[session_id] = db_conn; + pfc_log_trace("RO conn is created and assgined for request sess_id = %d", + session_id); + } else { + /*put request on WAIT state using semaphore. WAIT state shall be + * release !SEM_UP() after any one of the read connection is freed */ + + ODBCMUtils::sem_id = semget((key_t)1234, 1, 0666 | IPC_CREAT); + pfc_log_trace("READ will be blocked by Semaphore SEM_ID = %d", + ODBCMUtils::sem_id); + do { + if (!ODBCMUtils::set_semvalue(0)) { // request will be blocked + pfc_log_info("Semaphore initialized failed!"); + physical_layer->db_conpool_mutex_.unlock(); + return ODBCM_RC_FAILED; + } + pfc_log_trace("READ Entered into WAIT state" + " session_id = %d, config_id = %d", session_id, config_id); + physical_layer->db_conpool_mutex_.unlock(); + if (!ODBCMUtils::SEM_DOWN()) { + pfc_log_debug("entering critical section failed!"); + return ODBCM_RC_FAILED; + } + pfc_log_trace("SEM UP is done!! DB Connection will be assigned... "); + physical_layer->db_conpool_mutex_.lock(); + // take connection from list assign to request. + if (conpool_free_list_.empty()) { + pfc_log_info("After SEM release, no conn available in free pool"); + } + } while (conpool_free_list_.empty()); + db_conn = conpool_free_list_.front(); + pfc_log_trace("Free %" PFC_PFMT_SIZE_T " RO conn(s) available" + " in conn pool and 1 is assigned for READ operation", + conpool_free_list_.size()); + conpool_inuse_map_[session_id] = db_conn; + conpool_free_list_.pop_front(); // free pool is poped + pfc_log_trace("Freed RO conn is assgined for request sess_id = %d", + session_id); + } + } + physical_layer->db_conpool_mutex_.unlock(); + if (db_conn == NULL) { + pfc_log_info("After SEM release, db_conn is NULL"); + return ODBCM_RC_FAILED; + } + pfc_log_debug("db_conn type is %d", db_conn->get_conn_type()); + return ODBCM_RC_SUCCESS; +} + + +/** +* @Description : when the read request completes the operation, the db conn +* will be pooled instead of disconnect and free them. if any +* read request waiting for db conn. signal will be passed to +* that request (by semaphore) +* @param[in] : OdbcmConnectionHandler *&conn_obj, uint32_t session_id, +* uint32_t config_id +* @return : ODBCM_RC_STATUS +**/ +ODBCM_RC_STATUS ODBCManager::PoolDBConnection(OdbcmConnectionHandler *&conn_obj, + uint32_t session_id, uint32_t config_id) { + pfc_log_trace("PoolDBConnection - session_id = %d, config_id = %d", + session_id, config_id); + if (config_id > 0) { // RW conn is used for configure sess. READ, NO-POOL. + pfc_log_debug("Read uses RWconn,NO-POOL required (ENDTRANS-ROLLBACK DONE)"); + SQLHDBC conn_handle = conn_obj->get_conn_handle(); + ODBCM_ROLLBACK_TRANSACTION(conn_handle); + return ODBCM_RC_SUCCESS; + } + + // Freeing erroneous db connections + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + if (!err_connx_list_.empty()) { + physical_layer->db_conpool_mutex_.lock(); + pfc_log_debug("Erroneous %" PFC_PFMT_SIZE_T + " RO Connection is present and about to free", + err_connx_list_.size()); + std::list::iterator err_iter; + err_iter = err_connx_list_.begin(); + std::map::iterator cpool_iter = + conpool_inuse_map_.begin(); + for ( ; err_iter != err_connx_list_.end(); err_iter++) { + if (!conpool_inuse_map_.empty()) { + cpool_iter = conpool_inuse_map_.find(*err_iter); + pfc_log_info("error conn found in pool map is %d", session_id); + if (cpool_iter != conpool_inuse_map_.end()) { + SQLHDBC conn_handle = conn_obj->get_conn_handle(); + ODBCM_ROLLBACK_TRANSACTION(conn_handle); + delete (*cpool_iter).second; + conpool_inuse_map_.erase(cpool_iter); + pfc_log_debug("Err DB Conn is freed now..(ENDTRANS-ROLLBACK DONE)!!"); + } + } + } + err_connx_list_.clear(); + physical_layer->db_conpool_mutex_.unlock(); + } + + PhysicalCore* physical_core = physical_layer->get_physical_core(); + if (physical_core->system_transit_state_ == true) { + pfc_log_info("UNC is in transit state"); + FreeingConnections(false); + return ODBCM_RC_FAILED; + } + physical_layer->db_conpool_mutex_.lock(); + + std::map::iterator cpool_iter = + conpool_inuse_map_.begin(); + bool process_waiting = false; + + if (!conpool_inuse_map_.empty()) { + cpool_iter = conpool_inuse_map_.find(session_id); + pfc_log_info("session id to find conn in pool map is %d", session_id); + } else { + pfc_log_error("conpool_inuse_map_ is empty !!"); + cpool_iter = conpool_inuse_map_.end(); + } + + if (conpool_inuse_map_.size() >= conn_max_limit_) { + process_waiting = true; + pfc_log_trace("Another READ shall be waiting for free DB conn !!"); + } + + if (cpool_iter != conpool_inuse_map_.end()) { + SQLHDBC conn_handle = conn_obj->get_conn_handle(); + ODBCM_ROLLBACK_TRANSACTION(conn_handle); + conpool_free_list_.push_back(conn_obj); + conpool_inuse_map_.erase(cpool_iter); + pfc_log_debug("DB Conn is pooled now..(ENDTRANS-ROLLBACK DONE)!!"); + } else { /*could be error case*/ + // free all unused db connections + while (!conpool_free_list_.empty()) { + delete conpool_free_list_.back(); + conpool_free_list_.pop_back(); + } + ODBCMUtils::del_semvalue(); + pfc_log_error("DB Conn RECALL error!! all read connection shall be freed"); + } + + if (process_waiting == true) { + pfc_log_info("release the critical section ! SEM_UP - session_id"); + if (!ODBCMUtils::SEM_UP()) { + pfc_log_info("leaving from critical section failed!"); + physical_layer->db_conpool_mutex_.unlock(); + return ODBCM_RC_FAILED; + } + pfc_log_trace("semaphore UP is happened to signal the waiting req"); + } + physical_layer->db_conpool_mutex_.unlock(); + return ODBCM_RC_SUCCESS; +} + +/** +* @Description : this function will free the existing connections +* if the IsAllOrUnused is true, used, unused conn. +* will be freed and closed permanentely. +* if the IsAllOrUnused is false, only unused conn. +* will be freed and closed permanentely. +* @param[in] : bool IsAllOrUnused +* @return : ODBCM_RC_STATUS +**/ +ODBCM_RC_STATUS ODBCManager::FreeingConnections(bool IsAllOrUnused) { + pfc_log_trace("Freeing unused Connections ... "); + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + physical_layer->db_conpool_mutex_.lock(); + + if (!conpool_free_list_.empty()) { + pfc_log_debug("Unused %" PFC_PFMT_SIZE_T + " RO Connection is present and about to free", + conpool_free_list_.size()); + std::list::iterator cpoolfree_iter; + cpoolfree_iter = conpool_free_list_.begin(); + for ( ; cpoolfree_iter != conpool_free_list_.end(); cpoolfree_iter++) { + delete *cpoolfree_iter; // destructor intern calls the closeDBconnection + pfc_log_debug("Unused RO Connection is freed"); + } + conpool_free_list_.clear(); + } + + if (IsAllOrUnused != false) { /*All conn. freed including used one */ + pfc_log_trace("Freeing used Connections ... "); + std::map::iterator cpoolinuse_iter; + if (!conpool_inuse_map_.empty()) { + pfc_log_debug("used %"PFC_PFMT_SIZE_T + " RO Connection is present and about to free", + conpool_inuse_map_.size()); + cpoolinuse_iter = conpool_inuse_map_.begin(); + for ( ; cpoolinuse_iter != conpool_inuse_map_.end(); cpoolinuse_iter++) { + delete (*cpoolinuse_iter).second; // destructor intern calls + // the closeDBconnection + pfc_log_debug("used RO Connection is freed"); + } + conpool_inuse_map_.clear(); + } + } + physical_layer->db_conpool_mutex_.unlock(); + return ODBCM_RC_SUCCESS; +} /** * @Description : This function will close the existing database connection @@ -526,13 +804,13 @@ ODBCM_RC_STATUS ODBCManager::CloseDBConnection( return ODBCM_RC_SUCCESS; } pfc_log_debug("Read Write connection will not be closed now"); - ODBCM_RC_STATUS status = ODBCM_RC_SUCCESS; - ODBCM_END_TRANSACTION(conn_handle, SQL_ROLLBACK); - return status; + ODBCM_ROLLBACK_TRANSACTION(conn_handle); + return ODBCM_RC_SUCCESS; } /* to disconnect */ if (NULL != conn_handle) { SQLRETURN odbc_rc = 0; + ODBCM_ROLLBACK_TRANSACTION(conn_handle); odbc_rc = SQLDisconnect(conn_handle); odbc_rc = SQLFreeHandle(SQL_HANDLE_DBC, conn_handle); conn_handle = NULL; diff --git a/coordinator/modules/uppl/odbcm_db_varbind.cc b/coordinator/modules/uppl/odbcm_db_varbind.cc index da6ba773..6f077b5d 100644 --- a/coordinator/modules/uppl/odbcm_db_varbind.cc +++ b/coordinator/modules/uppl/odbcm_db_varbind.cc @@ -293,8 +293,8 @@ void DBVarbind::BindingInput(int table_id) { } } *p_switch_id1_len = ODBCM_SIZE_256; - *p_ipv6_len = ODBCM_SIZE_16; - *p_alarms_status_len = ODBCM_SIZE_16; + *p_ipv6_len = sizeof(SQLLEN); + *p_alarms_status_len = sizeof(SQLLEN); BindINParameter = &DBVarbind::bind_switch_table_input; break; case PORT_TABLE: @@ -311,9 +311,9 @@ void DBVarbind::BindingInput(int table_id) { } *p_switch_id1_len = ODBCM_SIZE_256; *p_logicalport_id1_len = ODBCM_SIZE_320; - *p_alarms_status_len = ODBCM_SIZE_16; + *p_alarms_status_len = sizeof(SQLLEN); *p_mac_len = ODBCM_SIZE_6; - *p_speed_len = ODBCM_SIZE_16; + *p_speed_len = sizeof(SQLLEN); BindINParameter = &DBVarbind::bind_port_table_input; break; case LINK_TABLE: @@ -456,8 +456,8 @@ void DBVarbind::BindingOutput(int table_id) { } } *p_switch_id1_len = ODBCM_SIZE_256; - *p_ipv6_len = ODBCM_SIZE_16; - *p_alarms_status_len = ODBCM_SIZE_16; + *p_ipv6_len = sizeof(SQLLEN); + *p_alarms_status_len = sizeof(SQLLEN); ODBCM_MEMSET(p_switch_table, 0, sizeof(switch_table_t)); BindOUTParameter = &DBVarbind::bind_switch_table_output; break; @@ -475,9 +475,9 @@ void DBVarbind::BindingOutput(int table_id) { } *p_switch_id1_len = ODBCM_SIZE_256; *p_logicalport_id1_len = ODBCM_SIZE_320; - *p_alarms_status_len = ODBCM_SIZE_16; + *p_alarms_status_len = sizeof(SQLLEN); *p_mac_len = ODBCM_SIZE_6; - *p_speed_len = ODBCM_SIZE_16; + *p_speed_len = sizeof(SQLLEN); ODBCM_MEMSET(p_port_table, 0, sizeof(port_table_t)); BindOUTParameter = &DBVarbind::bind_port_table_output; break; diff --git a/coordinator/modules/uppl/odbcm_mgr.cc b/coordinator/modules/uppl/odbcm_mgr.cc index 24176cb8..21e43bb4 100644 --- a/coordinator/modules/uppl/odbcm_mgr.cc +++ b/coordinator/modules/uppl/odbcm_mgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -80,7 +80,11 @@ ODBCM_RC_STATUS ODBCManager::ODBCM_Initialize() { "Could not allocate connection environment !!"); return ODBCM_RC_CONNECTION_ERROR; } - + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + PhysicalCore* physical_core = physical_layer->get_physical_core(); + conn_max_limit_ = physical_core->uppl_max_ro_db_connections_; + pfc_log_debug("conn_max_limit__ (from conf file) = %d", + conn_max_limit_); pfc_log_info("ODBCM::ODBCManager::Initialize: " "ODBCM initialized !!!"); /**set Flag for the status of init*/ @@ -129,7 +133,7 @@ ODBCM_RC_STATUS ODBCManager::CreateOneRow(unc_keytype_datatype_t db_name, * query processor and db_varbind objects */ HSTMT create_stmt = NULL; SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); - ODBCM_STATEMENT_CREATE(rw_conn_handle, create_stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, create_stmt, odbc_rc); QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); QueryProcessor *query_processor = NULL; @@ -273,11 +277,11 @@ ODBCM_RC_STATUS ODBCManager::CreateOneRow(unc_keytype_datatype_t db_name, CREATEONEROW, create_stmt); if (status == ODBCM_RC_SUCCESS) { /** Commit all active transactions on this connection */ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_debug("ODBCM::ODBCManager::CreateOneRow:row is created"); } else { /** Rollback all active transactions on this connection */ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_debug("ODBCM::ODBCManager::CreateOneRow:row is not created"); } } else { @@ -308,7 +312,8 @@ ODBCM_RC_STATUS ODBCManager::DeleteOneRow(unc_keytype_datatype_t db_name, DBTableSchema &db_table_schema, OdbcmConnectionHandler *conn_obj ) { PHY_FINI_READ_LOCK(); - string delete_query = ""; // receiving the query from queryfactory + string delete_query = ""; // receiving the query + // from queryfactory SQLRETURN odbc_rc = ODBCM_RC_SUCCESS; // SQL API rc ODBCM_RC_STATUS status = ODBCM_RC_SUCCESS; // other method rc ODBCMTable table_id = UNKNOWN_TABLE; @@ -328,7 +333,7 @@ ODBCM_RC_STATUS ODBCManager::DeleteOneRow(unc_keytype_datatype_t db_name, * query processor and db_varbind objects */ HSTMT delete_stmt = NULL; SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); - ODBCM_STATEMENT_CREATE(rw_conn_handle, delete_stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, delete_stmt, odbc_rc); QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); QueryProcessor *query_processor = NULL; @@ -406,7 +411,7 @@ ODBCM_RC_STATUS ODBCManager::DeleteOneRow(unc_keytype_datatype_t db_name, return status; } pfc_log_debug("ODBCM::ODBCManager::DeleteOneRow: " - "row_list size : %d ", static_cast(rlist.size())); + "row_list size : %" PFC_PFMT_SIZE_T, rlist.size()); // db_table_schema.PrintDBTableSchema(); if (rlist.size() > 1) { pfc_log_debug("ODBCM::ODBCManager::DeleteOneRow: " @@ -455,11 +460,11 @@ ODBCM_RC_STATUS ODBCManager::DeleteOneRow(unc_keytype_datatype_t db_name, } if (status == ODBCM_RC_SUCCESS) { /** Commit all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_debug("ODBCM::ODBCManager::DeleteOneRow:row is deleted"); } else { /** Rollback all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_debug("ODBCM::ODBCManager::DeleteOneRow:row is not deleted"); } } else { @@ -510,7 +515,7 @@ ODBCM_RC_STATUS ODBCManager::UpdateOneRow(unc_keytype_datatype_t db_name, /** Allocation for sql stmt */ HSTMT update_stmt = NULL; SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); - ODBCM_STATEMENT_CREATE(rw_conn_handle, update_stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, update_stmt, odbc_rc); /** Create query_factory, query processor, dbvarbind obj */ QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); @@ -601,8 +606,8 @@ ODBCM_RC_STATUS ODBCManager::UpdateOneRow(unc_keytype_datatype_t db_name, std::vector< TableAttrSchema >::iterator iter_vector; uint32_t pkey_size = primarykeys.size(); pfc_log_debug("ODBCM::ODBCManager::UpdateOneRow: " - "primary keys size %d, rowlist vector size %d", - pkey_size, static_cast((*iter).size())); + "primary keys size %d, rowlist vector size %" PFC_PFMT_SIZE_T, + pkey_size, (*iter).size()); iter_vector = (*iter).begin(); for (uint32_t loop = 0; loop < (*iter).size(); loop++) { @@ -620,7 +625,7 @@ ODBCM_RC_STATUS ODBCManager::UpdateOneRow(unc_keytype_datatype_t db_name, return status; } else { pfc_log_debug("ODBCM::ODBCManager::UpdateOneRow: " - "Vector size with pkeys %d", static_cast((*iter).size())); + "Vector size with pkeys %" PFC_PFMT_SIZE_T, (*iter).size()); if ((*iter).size() >= pkey_size) { uint32_t index = 0; for (iter_vector = (*iter).begin(); @@ -634,7 +639,7 @@ ODBCM_RC_STATUS ODBCManager::UpdateOneRow(unc_keytype_datatype_t db_name, } pfc_log_debug("ODBCM::ODBCManager::UpdateOneRow: primary keys" " value are removed from attributes_vector to skip from update." - " vector size = %d", static_cast((*iter).size())); + " vector size = %" PFC_PFMT_SIZE_T, (*iter).size()); } } } else { @@ -643,7 +648,7 @@ ODBCM_RC_STATUS ODBCManager::UpdateOneRow(unc_keytype_datatype_t db_name, iter = rlist.begin(); if (iter != rlist.end()) { pfc_log_debug("ODBCM::ODBCManager::UpdateOneRow: " - "rowlist vector size: %d", static_cast((*iter).size())); + "rowlist vector size: %" PFC_PFMT_SIZE_T, (*iter).size()); /** To filling the values into binded structure variables */ status = (db_varbind->*db_varbind->FillINPUTValues)((*iter)); if (status != ODBCM_RC_SUCCESS) { @@ -673,11 +678,11 @@ ODBCM_RC_STATUS ODBCManager::UpdateOneRow(unc_keytype_datatype_t db_name, CREATEONEROW, update_stmt); if (status == ODBCM_RC_SUCCESS) { /** Commit all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_info("ODBCM::ODBCManager::UpdateOneRow:row is updated"); } else { /** Rollback all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_info("ODBCM::ODBCManager::UpdateOneRow:row is not updated"); } } else { @@ -708,7 +713,8 @@ ODBCM_RC_STATUS ODBCManager::GetOneRow( DBTableSchema &db_table_schema, OdbcmConnectionHandler *conn_obj) { PHY_FINI_READ_LOCK(); /** Initialise the local variables */ - string getone_query = ""; /* to receive the query from queryfactory */ + string getone_query = ""; // to receive the + // query from queryfactory SQLRETURN odbc_rc = ODBCM_RC_SUCCESS; // SQL API rc ODBCM_RC_STATUS status = ODBCM_RC_SUCCESS; // Other method rc ODBCMTable table_id = UNKNOWN_TABLE; @@ -716,7 +722,7 @@ ODBCM_RC_STATUS ODBCManager::GetOneRow( HSTMT read_stmt = NULL; /* statement for getonerow */ SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); - ODBCM_STATEMENT_CREATE(ro_conn_handle, read_stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, read_stmt, odbc_rc); /** DBTableSchema row_list - get from parameter */ std::list < std::vector >& rlist = @@ -749,6 +755,10 @@ ODBCM_RC_STATUS ODBCManager::GetOneRow( /* prepare the sql statement using constructed sql string */ status = query_processor->PrepareQueryStatement( getone_query, read_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } + if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::GetOneRow: " "Error in preparing query statement: %s" @@ -823,6 +833,9 @@ ODBCM_RC_STATUS ODBCManager::GetOneRow( } /** Execute the ReadDBQuery with the above statement */ status = query_processor->ExecuteReadDBQuery(GETONEROW, read_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } if (status != ODBCM_RC_SUCCESS && status != ODBCM_RC_SUCCESS_WITH_INFO) { pfc_log_debug("ODBCM::ODBCManager::GetOneRow: " @@ -895,7 +908,7 @@ ODBCM_RC_STATUS ODBCManager::ClearOneRow(unc_keytype_datatype_t db_name, /** statement for clearonerow */ HSTMT clearone_stmt = NULL; SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); - ODBCM_STATEMENT_CREATE(rw_conn_handle, clearone_stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, clearone_stmt, odbc_rc); /** Create query_factory and query processor objects */ QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); @@ -985,11 +998,11 @@ ODBCM_RC_STATUS ODBCManager::ClearOneRow(unc_keytype_datatype_t db_name, CLEARONEROW, clearone_stmt); if (status == ODBCM_RC_SUCCESS) { /** Commit all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_info("ODBCM::ODBCManager::ClearOneRow:row is cleared"); } else { /** Rollback all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_info("ODBCM::ODBCManager::ClearOneRow:row is not cleared"); } } else { @@ -1031,7 +1044,7 @@ ODBCM_RC_STATUS ODBCManager::IsRowExists( /** Statement for isrowexists */ HSTMT rowexists_stmt = NULL; SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); - ODBCM_STATEMENT_CREATE(ro_conn_handle, rowexists_stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, rowexists_stmt, odbc_rc); /** Create query_factory and query processor objects */ QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); @@ -1056,6 +1069,10 @@ ODBCM_RC_STATUS ODBCManager::IsRowExists( /** Prepare the query statement */ status = query_processor->PrepareQueryStatement( query, rowexists_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } + if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::IsRowExists: " "Error in preparing query statement"); @@ -1144,6 +1161,9 @@ ODBCM_RC_STATUS ODBCManager::IsRowExists( * string from queryfactory */ status = query_processor->ExecuteGroupOperationQuery(ISROWEXISTS, rowexists_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } if ((status == ODBCM_RC_ROW_EXISTS || status == ODBCM_RC_SUCCESS) && db_varbind->p_isrowexists->is_exists == EXISTS && db_varbind->p_isrowexists->cs_row_status != UNKNOWN) { @@ -1225,7 +1245,7 @@ ODBCM_RC_STATUS ODBCManager::GetBulkRows( * was successfully created */ HSTMT read_stmt = NULL; SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); - ODBCM_STATEMENT_CREATE(ro_conn_handle, read_stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, read_stmt, odbc_rc); /** Create query_factory and query processor objects */ QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); @@ -1256,6 +1276,10 @@ ODBCM_RC_STATUS ODBCManager::GetBulkRows( /* prepare sql statment with constructed query string */ status = query_processor->PrepareQueryStatement( getbulk_query, read_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } + if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::GetBulkRows: " "Error in preparing query statement: %s", @@ -1326,6 +1350,9 @@ ODBCM_RC_STATUS ODBCManager::GetBulkRows( } /** Execute the ReadDBQuery with the above statement */ status = query_processor->ExecuteReadDBQuery(GETBULKROWS, read_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } /** Fill the database output in dbtableschema */ if (status != ODBCM_RC_SUCCESS) { pfc_log_debug("ODBCM::ODBCManager::GetBulkRows: " @@ -1340,6 +1367,10 @@ ODBCM_RC_STATUS ODBCManager::GetBulkRows( /** Fetch the no. of row return in last executed query */ odbc_rc = SQLRowCount(read_stmt, &row_count); ODBCM_PROCESS_HANDLE_CHECK(read_stmt, odbc_rc); + + if (odbc_rc == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } if (odbc_rc != ODBCM_RC_SUCCESS && odbc_rc != ODBCM_RC_SUCCESS_WITH_INFO) { pfc_log_debug("ODBCM::ODBCManager::GetBulkRows: " @@ -1427,8 +1458,8 @@ ODBCM_RC_STATUS ODBCManager::GetBulkRows( } } db_table_schema.set_row_list(rlist); - pfc_log_debug("ODBCM::ODBCManager::GetBulkRows:dbtableschema list size: %d", - static_cast(db_table_schema.row_list_.size())); + pfc_log_debug("ODBCM::ODBCManager::GetBulkRows:dbtableschema list size: %" + PFC_PFMT_SIZE_T, db_table_schema.row_list_.size()); status = ODBCM_RC_SUCCESS; // db_table_schema.PrintDBTableSchema(); /* Freeing all allocated memory */ @@ -1472,7 +1503,7 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingCount( HSTMT stmt = NULL; // statement for getsiblingcount SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); /* Do sql allocate for sql stmt */ - ODBCM_STATEMENT_CREATE(ro_conn_handle, stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, stmt, odbc_rc); /** Create query_factory and query processor objects */ QueryFactory *query_factory = NULL; @@ -1509,6 +1540,10 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingCount( } /* Prepare the query statement */ status = query_processor->PrepareQueryStatement(QUERY, stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } + if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::GetSiblingCount: Error in " "preparing query statement: %s", @@ -1622,7 +1657,7 @@ ODBCM_RC_STATUS ODBCManager::GetRowCount( count = 0; SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); /** Do sql allocate for sql stmt */ - ODBCM_STATEMENT_CREATE(ro_conn_handle, stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, stmt, odbc_rc); /** Create query_factory and query processor objects */ ODBCM_CREATE_OBJECT(query_factory, QueryFactory); ODBCM_CREATE_OBJECT(query_processor, QueryProcessor); @@ -1727,7 +1762,7 @@ ODBCM_RC_STATUS ODBCManager::GetModifiedRows( HSTMT get_stmt = NULL; SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); /* Do sql allocate for sql stmt */ - ODBCM_STATEMENT_CREATE(ro_conn_handle, get_stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, get_stmt, odbc_rc); QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); @@ -1769,6 +1804,10 @@ ODBCM_RC_STATUS ODBCManager::GetModifiedRows( /* Prepare the query statement */ status = query_processor->PrepareQueryStatement(QUERY, get_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } + if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::GetModifiedRows: " "Error in preparing query statement: %s", @@ -1808,6 +1847,9 @@ ODBCM_RC_STATUS ODBCManager::GetModifiedRows( /** Fetch the no. of row return in last executed query */ odbc_rc = SQLRowCount(get_stmt, &iRow_count); ODBCM_PROCESS_HANDLE_CHECK(get_stmt, odbc_rc); + if (odbc_rc == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } if (odbc_rc != ODBCM_RC_SUCCESS && odbc_rc != ODBCM_RC_SUCCESS_WITH_INFO) { pfc_log_debug("ODBCM::ODBCManager::GetModifiedRows: " @@ -1897,8 +1939,8 @@ ODBCM_RC_STATUS ODBCManager::GetModifiedRows( db_table_schema.set_row_list(rlist); pfc_log_debug("ODBCM::ODBCManager::GetModifiedRows:" - "dbtableschema list size: %d", - static_cast(db_table_schema.row_list_.size())); + "dbtableschema list size: %" PFC_PFMT_SIZE_T, + db_table_schema.row_list_.size()); status = ODBCM_RC_SUCCESS; // db_table_schema.PrintDBTableSchema(); /** Freeing all allocated memory */ @@ -1944,7 +1986,7 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingCount( HSTMT stmt = NULL; SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); /* sql handle allocate for sql stmt */ - ODBCM_STATEMENT_CREATE(ro_conn_handle, stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, stmt, odbc_rc); /** Create query_factory object */ QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); @@ -1982,6 +2024,10 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingCount( } /** Prepare the query statement */ status = query_processor->PrepareQueryStatement(QUERY, stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } + if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::GetSiblingCount(with filter): " "Error in preparing statement: %s", @@ -2026,6 +2072,9 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingCount( } status = query_processor->ExecuteReadDBQuery( GETSIBLINGCOUNT_FILTER, stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } if (status != ODBCM_RC_SUCCESS) { pfc_log_debug("ODBCM::ODBCManager::GetSiblingCount(with filter): " "ExecuteReadDBQuery status %s", @@ -2115,7 +2164,7 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingRows( HSTMT get_stmt = NULL; SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); /* Do sql allocate for sql stmt */ - ODBCM_STATEMENT_CREATE(ro_conn_handle, get_stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, get_stmt, odbc_rc); QueryFactory *query_factory = NULL; ODBCM_CREATE_OBJECT(query_factory, QueryFactory); @@ -2154,6 +2203,10 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingRows( /** prepare sql statment with constructed query string */ status = query_processor->PrepareQueryStatement(QUERY, get_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } + if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::GetSiblingRows: " "Error in preparing query statement: %s", @@ -2225,6 +2278,9 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingRows( /** Execute the ReadDBQuery with the above statement */ status = query_processor->ExecuteReadDBQuery( GETSIBLINGROWS, get_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } /** Fill the database output in dbtableschema */ if (status != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCM::ODBCManager::GetSiblingRows: " @@ -2240,6 +2296,9 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingRows( * executed query */ odbc_rc = SQLRowCount(get_stmt, &iRow_count); ODBCM_PROCESS_HANDLE_CHECK(get_stmt, odbc_rc); + if (odbc_rc == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } if (odbc_rc != ODBCM_RC_SUCCESS && odbc_rc != ODBCM_RC_SUCCESS_WITH_INFO) { pfc_log_debug("ODBCM::ODBCManager::GetSiblingRows: " @@ -2325,8 +2384,8 @@ ODBCM_RC_STATUS ODBCManager::GetSiblingRows( db_table_schema.set_row_list(rlist); pfc_log_debug("ODBCM::ODBCManager::GetSiblingRows: " - "dbtableschema list size:%d", - static_cast(db_table_schema.row_list_.size())); + "dbtableschema list size:%" PFC_PFMT_SIZE_T, + db_table_schema.row_list_.size()); status = ODBCM_RC_SUCCESS; // db_table_schema.PrintDBTableSchema(); /* Freeing all allocated memory */ diff --git a/coordinator/modules/uppl/odbcm_mgr_dboperations.cc b/coordinator/modules/uppl/odbcm_mgr_dboperations.cc index 8d6a69fe..039f1c30 100644 --- a/coordinator/modules/uppl/odbcm_mgr_dboperations.cc +++ b/coordinator/modules/uppl/odbcm_mgr_dboperations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -70,7 +70,7 @@ ODBCM_RC_STATUS ODBCManager::ClearDatabase(unc_keytype_datatype_t db_name, SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); /** Allocate for db statement handle */ - ODBCM_STATEMENT_CREATE(rw_conn_handle, clear_stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, clear_stmt, odbc_rc); /** Create query_factory and query processor objects */ ODBCM_CREATE_OBJECT(query_factory, QueryFactory); ODBCM_CREATE_OBJECT(query_processor, QueryProcessor); @@ -92,11 +92,11 @@ ODBCM_RC_STATUS ODBCManager::ClearDatabase(unc_keytype_datatype_t db_name, CLEARDATABASE, cleardb_query, clear_stmt); if (status == ODBCM_RC_SUCCESS) { /** Commit all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_info("ODBCM::ODBCManager::ClearDatabase:database is cleared"); } else { /** Rollback all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_info("ODBCM::ODBCManager::ClearDatabase:database is not cleared"); } /* Freeing all allocated memory */ @@ -142,7 +142,7 @@ ODBCM_RC_STATUS ODBCManager::CopyDatabase( } SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); /** Create p_query_factory and query processor objects */ - ODBCM_STATEMENT_CREATE(rw_conn_handle, copy_stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, copy_stmt, odbc_rc); ODBCM_CREATE_OBJECT(p_query_factory, QueryFactory); ODBCM_CREATE_OBJECT(query_processor, QueryProcessor); /** Set the FPTR */ @@ -162,11 +162,11 @@ ODBCM_RC_STATUS ODBCManager::CopyDatabase( COPYDATABASE, p_copydb_query, copy_stmt); if (status == ODBCM_RC_SUCCESS) { /** Commit all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_info("ODBCM::ODBCManager::CopyDatabase:database is copied"); } else { /** Rollback all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_info("ODBCM::ODBCManager::CopyDatabase:database is not copied"); } /* Freeing all allocated memory */ @@ -202,7 +202,7 @@ ODBCM_RC_STATUS ODBCManager::IsCandidateDirty( SQLHDBC ro_conn_handle = conn_obj->get_conn_handle(); /** Allocate for db statement handle */ - ODBCM_STATEMENT_CREATE(ro_conn_handle, isdirty_stmt); + ODBCM_STATEMENT_CREATE(ro_conn_handle, isdirty_stmt, odbc_rc); /** Create query_factory and query processor objects */ ODBCM_CREATE_OBJECT(query_factory, QueryFactory); ODBCM_CREATE_OBJECT(query_processor, QueryProcessor); @@ -222,6 +222,9 @@ ODBCM_RC_STATUS ODBCManager::IsCandidateDirty( /** Execute the query statements as a single transaction */ status = query_processor->ExecuteTransaction( ISCANDIDATEDIRTY, query, isdirty_stmt); + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } if ((status == ODBCM_RC_STMT_ERROR) || (status == ODBCM_RC_DATA_ERROR)) { pfc_log_error("ODBCM::ODBCManager::IsCandidateDirty: " @@ -282,7 +285,7 @@ ODBCM_RC_STATUS ODBCManager::CommitAllConfiguration( } SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); /** Create query_factory and query processor objects */ - ODBCM_STATEMENT_CREATE(rw_conn_handle, commit_stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, commit_stmt, odbc_rc); ODBCM_CREATE_OBJECT(query_factory, QueryFactory); ODBCM_CREATE_OBJECT(query_processor, QueryProcessor); /** Fptr for queryfactory to construct COMMITALLCONFIG query */ @@ -336,12 +339,12 @@ ODBCM_RC_STATUS ODBCManager::CommitAllConfiguration( } if (status == ODBCM_RC_SUCCESS) { /** Commit all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_info("ODBCM::ODBCManager::CommitAllConfiguration: " "ODBCM level commit is completed"); } else { /** Rollback all active transactions on this connection*/ - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_info("ODBCM::ODBCManager::CommitAllConfiguration: " "ODBCM level commit is not completed"); } @@ -375,7 +378,7 @@ ODBCM_RC_STATUS ODBCManager::ClearOneInstance( SQLHDBC rw_conn_handle = conn_obj->get_conn_handle(); /** Do sql allocate for sql stmt */ - ODBCM_STATEMENT_CREATE(rw_conn_handle, stmt); + ODBCM_STATEMENT_CREATE(rw_conn_handle, stmt, odbc_rc); /** Create query_factory and query processor objects */ ODBCM_CREATE_OBJECT(query_factory, QueryFactory); ODBCM_CREATE_OBJECT(query_processor, QueryProcessor); @@ -397,11 +400,11 @@ ODBCM_RC_STATUS ODBCManager::ClearOneInstance( status = query_processor->ExecuteTransaction( CLEARONEINSTANCE, QUERY, stmt); if (status == ODBCM_RC_SUCCESS) { - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_COMMIT, status); pfc_log_info("ODBCM::ODBCManager::ClearOneInstance: " "given one instance is cleared"); } else { - ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK); + ODBCM_END_TRANSACTION(rw_conn_handle, SQL_ROLLBACK, status); pfc_log_info("ODBCM::ODBCManager::ClearOneInstance: " "given one instance is not cleared"); } @@ -413,6 +416,9 @@ ODBCM_RC_STATUS ODBCManager::ClearOneInstance( delete []QUERY; QUERY = NULL; } + if (status == ODBCM_RC_CONNECTION_ERROR) { + err_connx_list_.push_back(conn_obj->get_using_session_id()); + } return status; } /**EOF*/ diff --git a/coordinator/modules/uppl/odbcm_query_factory.cc b/coordinator/modules/uppl/odbcm_query_factory.cc index 891261cc..e0428738 100644 --- a/coordinator/modules/uppl/odbcm_query_factory.cc +++ b/coordinator/modules/uppl/odbcm_query_factory.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -1003,8 +1003,8 @@ SQLQUERY* QueryFactory::operation_iscandidatedirty() { db_table_list_map = p_odbc_mgr->get_db_table_list_map_(); if (db_table_list_map.size() <= 0) { pfc_log_debug("ODBCM::QueryFactory::IsCandidateDirty: " - "Table list size is invalid:%d", - static_cast(db_table_list_map.size())); + "Table list size is invalid:%" PFC_PFMT_SSIZE_T, + db_table_list_map.size()); delete []p_cand_db; return NULL; } @@ -1144,6 +1144,13 @@ SQLQUERY QueryFactory::operation_getbulkrows(unc_keytype_datatype_t db_name, GetTableName(db_table_schema.table_name_); if (db_table_schema.primary_keys_.size() != 0) { getbulk_query << getbulk_where.str(); + if (db_name == UNC_DT_CANDIDATE) { + getbulk_query << " and cs_row_status != " << DELETED; + pfc_log_debug("Excluding Deleted rows of Candidate"); + } + } else if (db_name == UNC_DT_CANDIDATE) { + getbulk_query << " where cs_row_status != " << DELETED; + pfc_log_debug("Excluding(Else) Deleted rows of Candidate"); } getbulk_query << getOrderByString(db_table_schema.table_name_, db_table_schema.primary_keys_) << " ASC "; @@ -1472,7 +1479,7 @@ SQLQUERY QueryFactory::operation_getsiblingrows( getsibling_query << " FROM " << prefix << ODBCManager::get_ODBCManager()-> GetTableName(db_table_schema.table_name_); if (db_table_schema.primary_keys_.size() != 0) { - getsibling_query << getsibling_where.str(); + getsibling_query << getsibling_where.str(); } getsibling_query << getOrderByString(db_table_schema.table_name_, db_table_schema.primary_keys_); @@ -1578,8 +1585,8 @@ SQLQUERY* QueryFactory::operation_commit_all_config( /** Table list is empty, return NULL */ if (db_table_list_map.size() <= 0) { pfc_log_debug("ODBCM::QueryFactory::CommitAllConfiguration: " - "Table list size is invalid:%d", - static_cast(db_table_list_map.size())); + "Table list size is invalid:%" PFC_PFMT_SSIZE_T, + db_table_list_map.size()); delete []p_commit_db; return NULL; } diff --git a/coordinator/modules/uppl/odbcm_query_processor.cc b/coordinator/modules/uppl/odbcm_query_processor.cc index a8d42f77..dcb2a011 100644 --- a/coordinator/modules/uppl/odbcm_query_processor.cc +++ b/coordinator/modules/uppl/odbcm_query_processor.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -301,8 +301,8 @@ ODBCM_RC_STATUS QueryProcessor::ExecuteTransaction( ODBCMUtils::get_RC_Details(odbc_rc).c_str()); return (ODBCM_RC_STATUS)odbc_rc; } - pfc_log_debug("ODBCM::QueryProcessor::ExecuteTransaction: " - "%ld rows with cs_row_status not as APPLIED", row_count); + pfc_log_debug("ODBCM::QueryProcessor::ExecuteTransaction: %ld" + " rows with cs_row_status not as APPLIED", row_count); /* Close the cursor */ odbc_rc = SQLCloseCursor(hstmt); // ODBCM_PROCESS_HANDLE_CHECK(hstmt, odbc_rc); diff --git a/coordinator/modules/uppl/odbcm_utils.cc b/coordinator/modules/uppl/odbcm_utils.cc index 9828a684..f1664dc2 100644 --- a/coordinator/modules/uppl/odbcm_utils.cc +++ b/coordinator/modules/uppl/odbcm_utils.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,6 +15,7 @@ #include #include "odbcm_common.hh" #include "odbcm_utils.hh" +#include "physicallayer.hh" #include "physical_common_def.hh" #include "odbcm_db_varbind.hh" @@ -619,6 +620,12 @@ ODBCM_RC_STATUS ODBCMUtils::OdbcmHandleDiagnosticsPrint( if (rc != ODBCM_RC_FAILED) { if (rc == ODBCM_RC_COMMON_LINK_FAILURE) { pfc_log_error("ODBCM::ODBCMUtills:: ODBCM_RC_COMMON_LINK_FAILURE"); + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + PhysicalCore* physical_core = physical_layer->get_physical_core(); + physical_layer->get_odbc_manager()->FreeingConnections(false); + if (physical_core->system_transit_state_ == true) { + return ODBCM_RC_FAILED; + } return ODBCM_RC_CONNECTION_ERROR; } pfc_log_debug("ODBCM::ODBCMUtils::SQLGetDiagRec: SQLState: %s," @@ -762,5 +769,70 @@ void ODBCMUtils::OdbcmTransRollback(SQLHANDLE hdbc) { } } +/** +*@Description : db connection pool - semaphore access + initializes semaphore using SETVAL +*@param[in] : int val +*@return : int +*/ +int ODBCMUtils::set_semvalue(int val) { + union semun sem_union; // sem_union; + + sem_union.val = val; + if ( semctl ( sem_id, 0, SETVAL, sem_union ) == -1 ) return ( 0 ); + return 1; +} + +/** +*@Description : delete semaphore +*@param[in] : None +*@return : int +*/ +int ODBCMUtils::del_semvalue() { + union semun sem_union; // sem_union; + + sem_union.val = 1; + if ( semctl ( sem_id, 0, IPC_RMID, sem_union ) == -1 ) return ( 0 ); + return 1; +} + +/** +*@Description : set semaphore down +*@param[in] : None +*@return : int +*/ +int ODBCMUtils::SEM_DOWN() { + struct sembuf b; + + b.sem_num = 0; + b.sem_op = -1; // P(), i.e. down() + b.sem_flg = SEM_UNDO; + if (semop(sem_id, &b, 1)== -1) { + pfc_log_debug("Semaphore DOWN() failed!"); + return 0; + } + + return 1; +} + +/** +*@Description : set semaphore up +*@param[in] : None +*@return : int +*/ +int ODBCMUtils::SEM_UP() { + struct sembuf b; + + b.sem_num = 0; /* Operate on semaphore 0 */ + /* Wait for value to equal 0 */ + b.sem_op = 1; // V(), i.e. UP() + b.sem_flg = SEM_UNDO; + if (semop(sem_id, &b, 1)== -1) { + pfc_log_debug("Semaphore UP() failed!"); + return 0; + } + return 1; +} + } // namespace uppl } // namespace unc diff --git a/coordinator/modules/uppl/phy_util.cc b/coordinator/modules/uppl/phy_util.cc index 7b02751c..9f561e65 100644 --- a/coordinator/modules/uppl/phy_util.cc +++ b/coordinator/modules/uppl/phy_util.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -24,15 +24,16 @@ using unc::uppl::ODBCMTableColumns; /* * Set UINT8 value to the specified TableAttrSchema. */ -#define TABLE_ATTR_SCHEMA_UINT8_SET(schema, len, str, bufsize) \ - do { \ - ColumnAttrValue *__v= \ - new ColumnAttrValue ; \ - strncpy(reinterpret_cast(__v->value), (str).c_str(), \ - (bufsize)); \ - (schema).p_table_attribute_value = __v; \ - (schema).table_attribute_length = (len); \ - } while (0) +#define TABLE_ATTR_SCHEMA_UINT8_SET(schema, len, str, bufsize) \ + do { \ + ColumnAttrValue *__v= \ + new ColumnAttrValue ; \ + memset(__v->value, 0, bufsize); \ + strncpy(reinterpret_cast(__v->value), (str).c_str(), \ + (len)+1); \ + (schema).p_table_attribute_value = __v; \ + (schema).table_attribute_length = (len); \ + } while (0) /**getRespHeaderFromReqHeader * @Description : This function is for giving response to logical using @@ -65,19 +66,19 @@ int PhyUtil::sessOutRespHeader(ServerSession& sess, const physical_response_header& rsh) { int err = 0; err = sess.addOutput(rsh.client_sess_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.addOutput(rsh.config_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.addOutput(rsh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.addOutput(rsh.max_rep_count); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.addOutput(rsh.option1); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.addOutput(rsh.option2); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.addOutput(rsh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.addOutput(rsh.result_code); printRespHeader(rsh); return err; @@ -135,19 +136,19 @@ int PhyUtil::sessGetReqHeader(ServerSession& sess, physical_request_header& rqh) { int err = 0; err = sess.getArgument(0, rqh.client_sess_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.getArgument(1, rqh.config_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.getArgument(2, rqh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.getArgument(3, rqh.max_rep_count); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.getArgument(4, rqh.option1); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.getArgument(5, rqh.option2); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.getArgument(6, rqh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = sess.getArgument(7, rqh.key_type); return err; } @@ -164,19 +165,19 @@ int PhyUtil::sessOutReqHeader(ClientSession& cli_sess, const physical_request_header& rqh) { int err = 0; err = cli_sess.addOutput(rqh.client_sess_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.config_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.max_rep_count); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.option1); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.option2); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.key_type); return err; } @@ -193,19 +194,19 @@ int PhyUtil::sessGetRespHeader(ClientSession& cli_sess, physical_response_header& rsh) { int err = 0; err = cli_sess.getResponse(0, rsh.client_sess_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(1, rsh.config_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(2, rsh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(3, rsh.max_rep_count); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(4, rsh.option1); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(5, rsh.option2); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(6, rsh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(7, rsh.result_code); return err; } @@ -266,23 +267,23 @@ int PhyUtil::sessOutDriverReqHeader(ClientSession& cli_sess, const driver_request_header& rqh) { int err = 0; err = cli_sess.addOutput(rqh.client_sess_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.config_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.controller_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.domain_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.max_rep_count); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.option1); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.option2); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.key_type); if (err == 0) { printDriverReqHeader(rqh); @@ -302,26 +303,26 @@ int PhyUtil::sessGetDriverRespHeader(ClientSession& cli_sess, driver_response_header& rsh) { int err = 0; err = cli_sess.getResponse(0, rsh.client_sess_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(1, rsh.config_id); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; const char* arr; err = cli_sess.getResponse(2, arr); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; rsh.controller_id = arr; err = cli_sess.getResponse(3, arr); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; rsh.domain_id = arr; err = cli_sess.getResponse(4, rsh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(5, rsh.max_rep_count); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(6, rsh.option1); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(7, rsh.option2); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(8, rsh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.getResponse(9, rsh.result_code); if (err == 0) { printDriverRespHeader(rsh); @@ -342,29 +343,29 @@ int PhyUtil::sessGetDriverEventHeader(ClientSession& cli_sess, int err = 0; const char* val; err = cli_sess.getResponse(0, val); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading controller"); return err; } rsh.controller_id = val; err = cli_sess.getResponse(1, val); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading domain"); return err; } rsh.domain_id = val; err = cli_sess.getResponse(2, rsh.operation); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading operation"); return err; } err = cli_sess.getResponse(3, rsh.data_type); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading data_type"); return err; } err = cli_sess.getResponse(4, rsh.key_type); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading key_type"); return err; } @@ -392,34 +393,34 @@ int PhyUtil::sessGetDriverAlarmHeader(ClientSession& cli_sess, int err = 0; const char* val; err = cli_sess.getResponse(0, val); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading controller"); return err; } rsh.controller_id = val; err = cli_sess.getResponse(1, val); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading domain"); return err; } rsh.domain_id = val; err = cli_sess.getResponse(2, rsh.operation); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading operation"); return err; } err = cli_sess.getResponse(3, rsh.data_type); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading data_type"); return err; } err = cli_sess.getResponse(4, rsh.key_type); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading key_type"); return err; } err = cli_sess.getResponse(5, rsh.alarm_type); - if (err != UPPL_RC_SUCCESS) { + if (err != UNC_RC_SUCCESS) { pfc_log_debug("error reading alarm_type"); return err; } @@ -447,9 +448,9 @@ int PhyUtil::sessOutNBEventHeader(ServerEvent& cli_sess, const northbound_event_header& rqh) { int err = 0; err = cli_sess.addOutput(rqh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.key_type); stringstream ss; ss << "Event from UPPL :" << endl @@ -472,11 +473,11 @@ int PhyUtil::sessOutNBAlarmHeader(ServerEvent& cli_sess, const northbound_alarm_header& rqh) { int err = 0; err = cli_sess.addOutput(rqh.operation); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.data_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.key_type); - if (err != UPPL_RC_SUCCESS) return err; + if (err != UNC_RC_SUCCESS) return err; err = cli_sess.addOutput(rqh.alarm_type); stringstream ss; ss << "Alarm from UPPL :" << endl @@ -513,6 +514,18 @@ string PhyUtil::uint16tostr(const uint16_t& c) { return str1; } +/**uint32tostr + * @Description : This function does the conversion of type uint32 to string + * @param[in] : c - varaiable of type uint32 + * @return : string + * */ +string PhyUtil::uint32tostr(const uint32_t& c) { + char str[20]; + snprintf(str, sizeof(str), "%d", c); + string str1 = str; + return str1; +} + /**uint64tostr * @Description : This function does the conversion of type uint64 to string * @param[in] : c - varaiable of type uint64 @@ -561,7 +574,7 @@ uint64_t PhyUtil::strtouint64(const string& str) { * attr_value - Value of the attribute * attr_length - length of the attribute * attr_type - DATATYPE_* datatype of the attribute - * @param[out] : vect_attr - vector that contains all details of attributes + * @param[out] : vect_attr - vector that contains all details of attributes * @return : void * */ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, string attr_value, @@ -572,38 +585,38 @@ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, string attr_value, table_attr_schema.table_attribute_name = attr_name; switch (attr_type) { case DATATYPE_UINT16: - { - ColumnAttrValue *value = new ColumnAttrValue ; - value->value = strtouint(attr_value); - table_attr_schema.p_table_attribute_value = value; - break; - } + { + ColumnAttrValue *value = new ColumnAttrValue ; + value->value = strtouint(attr_value); + table_attr_schema.p_table_attribute_value = value; + break; + } case DATATYPE_UINT64: - { - ColumnAttrValue *value = new ColumnAttrValue ; - value->value = strtouint64(attr_value); - table_attr_schema.p_table_attribute_value = value; - break; - } + { + ColumnAttrValue *value = new ColumnAttrValue ; + value->value = strtouint64(attr_value); + table_attr_schema.p_table_attribute_value = value; + break; + } case DATATYPE_UINT32: - { - ColumnAttrValue *value = new ColumnAttrValue ; - value->value = strtouint(attr_value); - table_attr_schema.p_table_attribute_value = value; - break; - } + { + ColumnAttrValue *value = new ColumnAttrValue ; + value->value = strtouint(attr_value); + table_attr_schema.p_table_attribute_value = value; + break; + } case DATATYPE_IPV4: - { - ColumnAttrValue *value= - new ColumnAttrValue ; - value->value = 0; - if (!attr_value.empty()) { - value->value = inet_addr(attr_value.c_str()); + { + ColumnAttrValue *value= + new ColumnAttrValue ; + value->value = 0; + if (!attr_value.empty()) { + value->value = inet_addr(attr_value.c_str()); + } + pfc_log_debug("ip address to db: %d", value->value); + table_attr_schema.p_table_attribute_value = value; + break; } - pfc_log_debug("ip address to db: %d", value->value); - table_attr_schema.p_table_attribute_value = value; - break; - } case DATATYPE_UINT8_ARRAY_2: TABLE_ATTR_SCHEMA_UINT8_SET(table_attr_schema, attr_length, attr_value, @@ -702,7 +715,7 @@ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, uint8_t* attr_value, } break; default: - break; + break; } table_attr_schema.request_attribute_type = attr_type; vect_attr.push_back(table_attr_schema); @@ -752,19 +765,19 @@ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, empty.length(), attr_type, vect_attr); } else if (operation_type == UNC_OP_CREATE && - in_valid_val == UNC_VF_INVALID) { + in_valid_val == UNC_VF_INVALID) { pfc_log_debug("Attribute '%s' is not given in create request", attr_name_str.c_str()); out_valid_value << UNC_VF_INVALID; } else if ((operation_type == UNC_OP_CREATE || - operation_type == UNC_OP_UPDATE) && - in_valid_val == UPPL_NO_VAL_STRUCT) { + operation_type == UNC_OP_UPDATE) && + in_valid_val == UPPL_NO_VAL_STRUCT) { out_valid_value << UNC_VF_VALID; PhyUtil::FillDbSchema(attr_name, attr_value, attr_value.length(), attr_type, vect_attr); } else if (operation_type == UNC_OP_UPDATE && - in_valid_val == UNC_VF_VALID_NO_VALUE) { + in_valid_val == UNC_VF_VALID_NO_VALUE) { // empty value - value to be deleted pfc_log_debug("Attribute '%s' value is to be deleted in update request", attr_name_str.c_str()); @@ -772,15 +785,15 @@ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, PhyUtil::FillDbSchema(attr_name, empty, empty.length(), attr_type, vect_attr); - if(attr_name==unc::uppl::CTR_ENABLE_AUDIT) { + if (attr_name == unc::uppl::CTR_ENABLE_AUDIT) { out_valid_value << UNC_VF_VALID; - } else { + } else { out_valid_value << UNC_VF_INVALID; } } else if (operation_type == UNC_OP_CREATE) { out_valid_value << in_valid_val; } else if (operation_type == UNC_OP_UPDATE && - in_valid_val == UNC_VF_INVALID) { + in_valid_val == UNC_VF_INVALID) { pfc_log_debug( "Attribute '%s' not given in Update Request. Retain db valid", attr_name_str.c_str()); @@ -832,13 +845,13 @@ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, empty.length(), attr_type, vect_attr); } else if (operation_type == UNC_OP_CREATE && - in_valid_val == UNC_VF_INVALID) { + in_valid_val == UNC_VF_INVALID) { pfc_log_debug("Attribute '%s' is not given in create request", attr_name_str.c_str()); out_valid_value << UNC_VF_INVALID; } else if ((operation_type == UNC_OP_CREATE || - operation_type == UNC_OP_UPDATE) && - in_valid_val == UPPL_NO_VAL_STRUCT) { + operation_type == UNC_OP_UPDATE) && + in_valid_val == UPPL_NO_VAL_STRUCT) { pfc_log_debug("Attribute '%s' is not given in create/update request", attr_name_str.c_str()); out_valid_value << UNC_VF_VALID; @@ -846,7 +859,7 @@ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, attr_length, attr_type, vect_attr); } else if (operation_type == UNC_OP_UPDATE && - in_valid_val == UNC_VF_VALID_NO_VALUE) { + in_valid_val == UNC_VF_VALID_NO_VALUE) { // empty value - value to be deleted pfc_log_debug("Attribute '%s' value is to be deleted in update request", attr_name_str.c_str()); @@ -858,7 +871,7 @@ void PhyUtil::FillDbSchema(ODBCMTableColumns attr_name, } else if (operation_type == UNC_OP_CREATE) { out_valid_value << in_valid_val; } else if (operation_type == UNC_OP_UPDATE && - in_valid_val == UNC_VF_INVALID) { + in_valid_val == UNC_VF_INVALID) { pfc_log_debug( "Attribute '%s' not given in Update Request. Retain db valid", attr_name_str.c_str()); @@ -881,55 +894,55 @@ void PhyUtil::GetValueFromDbSchema(const TableAttrSchema& table_attr_schema, stringstream ss; switch (attr_type) { case DATATYPE_UINT16: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - ss << value->value; - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + ss << value->value; + break; + } case DATATYPE_UINT64: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - ss << value->value; - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + ss << value->value; + break; + } case DATATYPE_UINT32: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - ss << value->value; - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + ss << value->value; + break; + } case DATATYPE_IPV4: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - pfc_log_debug("Received ip value from DB: %d", value->value); - if (value->value > 0) { - struct sockaddr_in ipv4_addr; - memset(&ipv4_addr, 0, sizeof(sockaddr_in)); - ipv4_addr.sin_addr.s_addr = value->value; - ss << inet_ntoa(ipv4_addr.sin_addr); - pfc_log_debug("ip address from db: %d", ipv4_addr.sin_addr.s_addr); - } else { - string empty = ""; - ss << empty; + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + pfc_log_debug("Received ip value from DB: %d", value->value); + if (value->value > 0) { + struct sockaddr_in ipv4_addr; + memset(&ipv4_addr, 0, sizeof(sockaddr_in)); + ipv4_addr.sin_addr.s_addr = value->value; + ss << inet_ntoa(ipv4_addr.sin_addr); + pfc_log_debug("ip address from db: %d", ipv4_addr.sin_addr.s_addr); + } else { + string empty = ""; + ss << empty; + } + break; } - break; - } case DATATYPE_IPV6: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - ss << value->value; - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + ss << value->value; + break; + } default: break; } @@ -950,102 +963,102 @@ void PhyUtil::GetValueFromDbSchemaStr(const TableAttrSchema& table_attr_schema, AttributeDataType attr_type) { switch (attr_type) { case DATATYPE_UINT8_ARRAY_2: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_3: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_6: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - memcpy(attr_value, value->value, 6); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + memcpy(attr_value, value->value, 6); + break; + } case DATATYPE_UINT8_ARRAY_8: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_9: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_11: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_16: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_32: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_128: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_256: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_257: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } case DATATYPE_UINT8_ARRAY_320: - { - ColumnAttrValue *value = - (ColumnAttrValue *) - table_attr_schema.p_table_attribute_value; - memcpy(attr_value, value->value, strlen((const char*)value->value)+1); - break; - } + { + ColumnAttrValue *value = + (ColumnAttrValue *) + table_attr_schema.p_table_attribute_value; + memcpy(attr_value, value->value, strlen((const char*)value->value)+1); + break; + } default: break; } @@ -1058,17 +1071,17 @@ void PhyUtil::GetValueFromDbSchemaStr(const TableAttrSchema& table_attr_schema, * datatype - UNC_DT_* specifies the datatype * @param[out] : controller_type - UNC_CT_* Type of the controller(UNKNOWN, * PFC,VNP) - * @return : UPPL_RC_SUCCESS is returned when the response + * @return : UNC_RC_SUCCESS is returned when the response * is added to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not + * UNC_UPPL_RC_ERR_* is returned when ipc response could not * be added to session. * */ -UpplReturnCode PhyUtil::get_controller_type( +UncRespCode PhyUtil::get_controller_type( OdbcmConnectionHandler *db_conn, string controller_name, unc_keytype_ctrtype_t& controller_type, unc_keytype_datatype_t datatype) { - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; string type = ""; // Creating the Physical Layer instance PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); @@ -1090,16 +1103,16 @@ UpplReturnCode PhyUtil::get_controller_type( dbtableschema_obj.set_table_name(unc::uppl::CTR_TABLE); dbtableschema_obj.PushBackToRowList(vect_table_attr_schema); ODBCM_RC_STATUS db_status = physical_layer->get_odbc_manager()-> \ - GetOneRow(datatype, dbtableschema_obj, db_conn); + GetOneRow(datatype, dbtableschema_obj, db_conn); if (db_status == ODBCM_RC_CONNECTION_ERROR) { // log fatal error to log daemon pfc_log_fatal("DB connection not available or cannot access DB"); - ret_code = UPPL_RC_ERR_DB_ACCESS; + ret_code = UNC_UPPL_RC_ERR_DB_ACCESS; return ret_code; } else if (db_status != ODBCM_RC_SUCCESS) { string log_msg = "Unable to get controller type from the database"; pfc_log_error((const char *)log_msg.c_str()); - ret_code = UPPL_RC_ERR_DB_GET; + ret_code = UNC_UPPL_RC_ERR_DB_GET; return ret_code; } list< vector >& row_list_iter = @@ -1143,7 +1156,7 @@ void PhyUtil::reorder_col_attrs( for ( ; tab_iter != vect_table_attr_schema.end(); ++tab_iter) { TableAttrSchema col_attr = (*tab_iter); if (key_attr_name == ODBCManager::get_ODBCManager()->GetColumnName( - col_attr.table_attribute_name)) { + col_attr.table_attribute_name)) { vect_table_attr_schema.erase(tab_iter); vect_table_attr_schema.insert(vect_table_attr_schema.begin(), col_attr); @@ -1189,9 +1202,9 @@ bool PhyUtil::IsValidValue(uint32_t operation_type, bool PhyUtil::IsFilteringOperation(uint32_t operation_type, unsigned int valid) { if ((operation_type == UNC_OP_READ || - operation_type == UNC_OP_READ_SIBLING_BEGIN || - operation_type == UNC_OP_READ_SIBLING || - operation_type == UNC_OP_READ_SIBLING_COUNT) && + operation_type == UNC_OP_READ_SIBLING_BEGIN || + operation_type == UNC_OP_READ_SIBLING || + operation_type == UNC_OP_READ_SIBLING_COUNT) && valid == UNC_VF_VALID) { return true; } else { diff --git a/coordinator/modules/uppl/physical_core.cc b/coordinator/modules/uppl/physical_core.cc index 591a264b..072aea56 100644 --- a/coordinator/modules/uppl/physical_core.cc +++ b/coordinator/modules/uppl/physical_core.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,6 +15,7 @@ #include #include +#include #include #include #include "physical_core.hh" @@ -57,28 +58,29 @@ PhysicalCore* PhysicalCore::get_physical_core() { * config, sends event subscription to driver */ -UpplReturnCode PhysicalCore::InitializePhysical() { +UncRespCode PhysicalCore::InitializePhysical() { // initialize the class member data // Create new internal transaction coordinator object + pfc_log_debug("system_transit_state_ :%d", system_transit_state_); internal_transaction_coordinator_ = InternalTransactionCoordinator:: get_internaltransactioncoordinator(); if (internal_transaction_coordinator_ == NULL) { pfc_log_error("Memory not allocated for internal_transaction_coordinator_"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } // Read config from file - UpplReturnCode ret = ReadConfigFile(); + UncRespCode ret = ReadConfigFile(); pfc_log_debug("Read Configuration return %d", ret); - if (ret != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CONF_FILE_READ; + if (ret != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CONF_FILE_READ; } // Call function to load static capability file ret = ReadCtrlrStaticCapability(); pfc_log_debug("Static Capability return %d", ret); - if (ret != UPPL_RC_SUCCESS) { - return UPPL_RC_ERR_CAP_FILE_READ; + if (ret != UNC_RC_SUCCESS) { + return UNC_UPPL_RC_ERR_CAP_FILE_READ; } // initialize alarm object @@ -86,7 +88,7 @@ UpplReturnCode PhysicalCore::InitializePhysical() { alarm_ret = pfc::alarm::pfc_alarm_initialize(&fd); pfc_log_debug("PFC Alarm intialization return %d", alarm_ret); if (alarm_ret != pfc::alarm::ALM_OK) { - return UPPL_RC_ERR_ALARM_API; + return UNC_UPPL_RC_ERR_ALARM_API; } else { // clear all alarms pfc::alarm::pfc_alarm_clear(UNCCID_PHYSICAL); @@ -95,9 +97,9 @@ UpplReturnCode PhysicalCore::InitializePhysical() { pfc_bool_t event_ret = RegisterStateHandlers(); pfc_log_debug("State handlers registration return %d", event_ret); if (event_ret == PFC_TRUE) { - ret = UPPL_RC_SUCCESS; + ret = UNC_RC_SUCCESS; } else { - ret = UPPL_RC_FAILURE; + ret = UNC_UPPL_RC_FAILURE; } TcApiCommonRet ret_code = unc::tclib::TC_API_COMMON_SUCCESS; @@ -107,10 +109,10 @@ UpplReturnCode PhysicalCore::InitializePhysical() { ret_code = tclib_ptr->TcLibRegisterHandler(this); pfc_log_info("TcLibRegisterHandler returned %u.", ret_code); if (ret_code != unc::tclib::TC_API_COMMON_SUCCESS) { - ret = UPPL_RC_FAILURE; + ret = UNC_UPPL_RC_FAILURE; } } else { - ret = UPPL_RC_FAILURE; + ret = UNC_UPPL_RC_FAILURE; } return ret; } @@ -119,18 +121,18 @@ UpplReturnCode PhysicalCore::InitializePhysical() { * @Description : This function finalizes physical core members */ -UpplReturnCode PhysicalCore::FinalizePhysical() { +UncRespCode PhysicalCore::FinalizePhysical() { // Finalize the class member data ctr_cap_map_.clear(); // IPC Event handler removal is taken care by ipc library itself during fini /* Cancel the event Subscription from driver - UpplReturnCode ret = CancelEventSubscripInDriver(); */ - UpplReturnCode ret = UPPL_RC_FAILURE; + UncRespCode ret = CancelEventSubscripInDriver(); */ + UncRespCode ret = UNC_UPPL_RC_FAILURE; pfc_bool_t event_ret = UnRegisterStateHandlers(); if (event_ret == PFC_TRUE) { - ret = UPPL_RC_SUCCESS; + ret = UNC_RC_SUCCESS; } else { - ret = UPPL_RC_FAILURE; + ret = UNC_UPPL_RC_FAILURE; } if (internal_transaction_coordinator_ != NULL) @@ -148,11 +150,11 @@ UpplReturnCode PhysicalCore::FinalizePhysical() { * @Description : This function reads config from file */ -UpplReturnCode PhysicalCore::ReadConfigFile() { +UncRespCode PhysicalCore::ReadConfigFile() { // Config file reading PhysicalLayer* physical_layer = PhysicalLayer::get_instance(); if (physical_layer == NULL) { - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } pfc::core::ModuleConfBlock ipcblock(IPC_PARAMS_BLK); @@ -194,7 +196,16 @@ UpplReturnCode PhysicalCore::ReadConfigFile() { audit_notfn_timeout_ = ipcblock.getUint32("audit_notfn_timeout", 30); unknown_controller_count_ = ipcblock.getUint32("unknown_controller_count", 1); - return UPPL_RC_SUCCESS; + uppl_max_dataflowtraversal_ = ipcblock.getUint32( + "uppl_max_dataflowtraversal", 1000); + pfc_log_debug("uppl_max_dataflowtraversal_ - red from uppl.conf = %d", + uppl_max_dataflowtraversal_); + uppl_max_ro_db_connections_ = ipcblock.getUint32( + "uppl_max_ro_db_connections", 100); + pfc_log_debug("uppl_max_ro_db_connections_ - red from uppl.conf = %d", + uppl_max_ro_db_connections_); + + return UNC_RC_SUCCESS; } /** @@ -202,7 +213,7 @@ UpplReturnCode PhysicalCore::ReadConfigFile() { * capability map */ -UpplReturnCode PhysicalCore::ReadCtrlrStaticCapability() { +UncRespCode PhysicalCore::ReadCtrlrStaticCapability() { // Read the capability info from the static config file string conf_file_path = string(UNC_MODULEDIR) + string("/uppl_ctr_capability.conf"); @@ -230,9 +241,9 @@ UpplReturnCode PhysicalCore::ReadCtrlrStaticCapability() { int kVersArraySize = cObjs[iter].arraySize("version_supported"); for (int idx = 0; idx < kVersArraySize; ++idx) { version = cObjs[iter].getStringAt("version_supported", idx, 0); - UpplReturnCode parse_ret = UPPL_RC_SUCCESS; + UncRespCode parse_ret = UNC_RC_SUCCESS; ControllerVersion ctr_obj(version, parse_ret); - if (parse_ret != UPPL_RC_SUCCESS) { + if (parse_ret != UNC_RC_SUCCESS) { return parse_ret; } int kAttribArraySize = cObjs[iter].arraySize("attribute_name"); @@ -246,25 +257,25 @@ UpplReturnCode PhysicalCore::ReadCtrlrStaticCapability() { ctr_cap_map_[ctr_obj].insert(std::make_pair(keys, vals)); } } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** * @Description : This function validates key type controller capability map */ -UpplReturnCode PhysicalCore::ValidateKeyTypeInCtrlrCap(string version, +UncRespCode PhysicalCore::ValidateKeyTypeInCtrlrCap(string version, uint32_t key_type) { /* check whether the version provided in request is available in capability * controller map */ PhysicalLayer* physical_layer = PhysicalLayer::get_instance(); if (physical_layer == NULL) { - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } - UpplReturnCode parse_ret = UPPL_RC_SUCCESS; + UncRespCode parse_ret = UNC_RC_SUCCESS; ControllerVersion obj(version, parse_ret); - if (parse_ret != UPPL_RC_SUCCESS) { + if (parse_ret != UNC_RC_SUCCESS) { return parse_ret; } cap_key_struct keystructvar; @@ -284,16 +295,16 @@ UpplReturnCode PhysicalCore::ValidateKeyTypeInCtrlrCap(string version, if (iter_key_type_map_ != key_type_map.end()) { pfc_log_debug("Found key_type is %d", (iter_key_type_map_)->first.key_type); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } else { pfc_log_info("Key Type not supported"); - return UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_KEYTYPE_NOT_SUPPORTED; } } else { pfc_log_info("Version not supported"); - return UPPL_RC_ERR_VERSION_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_VERSION_NOT_SUPPORTED; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -301,22 +312,22 @@ UpplReturnCode PhysicalCore::ValidateKeyTypeInCtrlrCap(string version, * type is available in controller capability map */ -UpplReturnCode PhysicalCore::ValidateAttribInCtrlrCap(string version, +UncRespCode PhysicalCore::ValidateAttribInCtrlrCap(string version, uint32_t key_type, string attribute_name) { - UpplReturnCode ret = ValidateKeyTypeInCtrlrCap(version, key_type); + UncRespCode ret = ValidateKeyTypeInCtrlrCap(version, key_type); PhysicalLayer* physical_layer = PhysicalLayer::get_instance(); if (physical_layer == NULL) { - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } pfc_log_debug("ValidateKeyTypeInCtrlrCap ret = %d\n", ret); - if (ret != UPPL_RC_SUCCESS) { + if (ret != UNC_RC_SUCCESS) { pfc_log_debug("ValidateKeyTypeInCtrlrCap ret = %d\n", ret); return ret; } - UpplReturnCode parse_ret = UPPL_RC_SUCCESS; + UncRespCode parse_ret = UNC_RC_SUCCESS; ControllerVersion obj(version, parse_ret); - if (parse_ret != UPPL_RC_SUCCESS) { + if (parse_ret != UNC_RC_SUCCESS) { return parse_ret; } cap_iter iter_cap_map = GetVersionIterator(obj); @@ -332,16 +343,16 @@ UpplReturnCode PhysicalCore::ValidateAttribInCtrlrCap(string version, pfc_log_debug("Found key_type is %d", (iter_key_type_map_)->first.key_type); cap_value_struct vs = (iter_key_type_map_)->second; - pfc_log_debug("vector size is %zd", (vs.attrs).size()); + pfc_log_debug("vector size is %"PFC_PFMT_SIZE_T, (vs.attrs).size()); pfc_log_debug("Attribute_name to search is %s", attribute_name.c_str()); for (uint32_t idx = 0; idx < (vs.attrs).size(); ++idx) { if ((vs.attrs[idx]).attr_name == attribute_name) { - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } } pfc_log_info("attribute not supported"); - return UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; + return UNC_UPPL_RC_ERR_ATTRIBUTE_NOT_SUPPORTED; } /** @@ -349,12 +360,12 @@ UpplReturnCode PhysicalCore::ValidateAttribInCtrlrCap(string version, * key type */ -UpplReturnCode PhysicalCore::GetScalabilityNumber(string version, +UncRespCode PhysicalCore::GetScalabilityNumber(string version, uint32_t key_type, uint32_t &scalability_num) { - UpplReturnCode parse_ret = UPPL_RC_SUCCESS; + UncRespCode parse_ret = UNC_RC_SUCCESS; ControllerVersion obj(version, parse_ret); - if (parse_ret != UPPL_RC_SUCCESS) { + if (parse_ret != UNC_RC_SUCCESS) { return parse_ret; } @@ -371,11 +382,11 @@ UpplReturnCode PhysicalCore::GetScalabilityNumber(string version, scalability_num = ((iter_key_type_map_)->second.scalability_num); pfc_log_debug("Scalability number for key type %d is %d", key_type, scalability_num); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } else { pfc_log_info("PhysicalCore::GetScalabilityNumber ret = %d", - UPPL_RC_ERR_VERSION_NOT_SUPPORTED); - return UPPL_RC_ERR_VERSION_NOT_SUPPORTED; + UNC_UPPL_RC_ERR_VERSION_NOT_SUPPORTED); + return UNC_UPPL_RC_ERR_VERSION_NOT_SUPPORTED; } } @@ -384,12 +395,12 @@ UpplReturnCode PhysicalCore::GetScalabilityNumber(string version, * through IPCConnectionManager */ -UpplReturnCode PhysicalCore::SendEventSubscripToDriver() { +UncRespCode PhysicalCore::SendEventSubscripToDriver() { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); if (physical_layer == NULL) { - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } - UpplReturnCode ret = physical_layer->get_ipc_connection_manager()-> + UncRespCode ret = physical_layer->get_ipc_connection_manager()-> SendEventSubscription(); return ret; } @@ -399,12 +410,12 @@ UpplReturnCode PhysicalCore::SendEventSubscripToDriver() { * Driver through IPCConnectionManager */ -UpplReturnCode PhysicalCore::CancelEventSubscripInDriver() { +UncRespCode PhysicalCore::CancelEventSubscripInDriver() { PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); if (physical_layer == NULL) { - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } - UpplReturnCode ret = physical_layer->get_ipc_connection_manager()-> + UncRespCode ret = physical_layer->get_ipc_connection_manager()-> CancelEventSubscription(); return ret; } @@ -413,20 +424,20 @@ UpplReturnCode PhysicalCore::CancelEventSubscripInDriver() { * @Description : This function validates the config ID by TC library API */ -UpplReturnCode PhysicalCore::ValidateConfigId(uint32_t session_id, +UncRespCode PhysicalCore::ValidateConfigId(uint32_t session_id, uint32_t config_id) { TcLibModule* tclib_ptr = static_cast (TcLibModule::getInstance(TCLIB_MODULE_NAME)); uint8_t resp = tclib_ptr->TcLibValidateUpdateMsg(session_id, config_id); - UpplReturnCode return_code = UPPL_RC_FAILURE; + UncRespCode return_code = UNC_UPPL_RC_FAILURE; pfc_log_debug("Validation of config/session id with TC returned %d", resp); if (resp == unc::tclib::TC_API_COMMON_SUCCESS) { - return_code = UPPL_RC_SUCCESS; + return_code = UNC_RC_SUCCESS; } else if (resp == unc::tclib::TC_INVALID_CONFIG_ID) { - return_code = UPPL_RC_ERR_INVALID_CONFIGID; + return_code = UNC_UPPL_RC_ERR_INVALID_CONFIGID; } else if (resp == unc::tclib::TC_INVALID_SESSION_ID) { - return_code = UPPL_RC_ERR_INVALID_SESSIONID; + return_code = UNC_UPPL_RC_ERR_INVALID_SESSIONID; } // return the response received return return_code; @@ -438,36 +449,36 @@ UpplReturnCode PhysicalCore::ValidateConfigId(uint32_t session_id, * @param[in] : operation_type - type of operation requested */ -UpplReturnCode PhysicalCore::ValidateStandbyRequests(uint32_t operation_type) { +UncRespCode PhysicalCore::ValidateStandbyRequests(uint32_t operation_type) { // Throw error when non-READ* requests are received in standby if (get_system_state() == UPPL_SYSTEM_ST_STANDBY && (operation_type < UNC_OP_READ || operation_type > UNC_OP_READ_SIBLING_COUNT)) { pfc_log_info("operation not supported in standby"); - return UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; + return UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** * @Description : This function gives the corresponding for controller type */ -UpplReturnCode PhysicalCore::GetDriverName( +UncRespCode PhysicalCore::GetDriverName( unc_keytype_ctrtype_t controller_type, string &driver_name) { map::iterator iter_drv_name_map = drv_name_map_.find(controller_type); if (iter_drv_name_map == drv_name_map_.end()) { pfc_log_info("Controller type not found"); - return UPPL_RC_FAILURE; + return UNC_UPPL_RC_FAILURE; } if (iter_drv_name_map->second == "") { pfc_log_info("Driver name empty"); - return UPPL_RC_FAILURE; + return UNC_UPPL_RC_FAILURE; } driver_name = iter_drv_name_map->second; - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -486,11 +497,11 @@ TcCommonRet PhysicalCore::HandleCommitTransactionStart(uint32_t session_id, } OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->transaction_req()-> + UncRespCode resp = internal_transaction_coordinator_->transaction_req()-> StartTransaction(&db_conn, session_id, config_id); pfc_log_debug("HandleCommitTransactionStart return code %d", resp); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -515,13 +526,13 @@ TcCommonRet PhysicalCore::HandleAuditTransactionStart( } pfc_log_debug("Received HandleAuditTransactionStart from TC"); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> StartAuditTransaction(session_id, ctrl_type, controller_id); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -546,13 +557,13 @@ TcCommonRet PhysicalCore::HandleCommitTransactionEnd( } OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->transaction_req()-> + UncRespCode resp = internal_transaction_coordinator_->transaction_req()-> EndTransaction(&db_conn, session_id, config_id, trans_res); pfc_log_debug("HandleCommitTransactionEnd response %d", resp); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -578,13 +589,13 @@ TcCommonRet PhysicalCore::HandleAuditTransactionEnd( } pfc_log_debug("Received HandleAuditTransactionEnd from TC"); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> EndAuditTransaction(session_id, ctrl_type, controller_id); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -610,13 +621,13 @@ TcCommonRet PhysicalCore::HandleCommitVoteRequest( // Call ITC transaction handler function // ITC to fill driver_info map while sending response pfc_log_debug("Received vote request. Calling HandleVoteRequest"); - UpplReturnCode resp = internal_transaction_coordinator_->transaction_req()-> + UncRespCode resp = internal_transaction_coordinator_->transaction_req()-> HandleVoteRequest(session_id, config_id, driver_info); pfc_log_debug("HandleVoteRequest response %d", resp); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -643,14 +654,14 @@ TcCommonRet PhysicalCore::HandleAuditVoteRequest( OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); pfc_log_debug("Received HandleAuditVoteRequest from TC"); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> HandleAuditVoteRequest(&db_conn, session_id, driver_id, controller_id, driver_info); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -675,13 +686,13 @@ TcCommonRet PhysicalCore::HandleCommitGlobalCommit( } // Call ITC transaction handler function // ITC to fill driver_info map while sending response - UpplReturnCode resp = internal_transaction_coordinator_->transaction_req()-> + UncRespCode resp = internal_transaction_coordinator_->transaction_req()-> HandleGlobalCommitRequest(session_id, config_id, driver_info); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -708,7 +719,7 @@ TcCommonRet PhysicalCore::HandleAuditGlobalCommit( } pfc_log_debug("Received HandleAuditGlobalCommit from TC"); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> HandleAuditGlobalCommit(session_id, driver_id, controller_id, @@ -716,7 +727,7 @@ TcCommonRet PhysicalCore::HandleAuditGlobalCommit( audit_result); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -745,14 +756,14 @@ TcCommonRet PhysicalCore::HandleCommitDriverResult( PFC_TRUE); // write lock OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->transaction_req()-> + UncRespCode resp = internal_transaction_coordinator_->transaction_req()-> HandleDriverResult(&db_conn, session_id, config_id, commitphase, driver_result); pfc_log_debug("HandleCommitDriverResult response %d", resp); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -779,14 +790,14 @@ TcCommonRet PhysicalCore::HandleAuditDriverResult( } pfc_log_debug("Received HandleAuditDriverResult from TC"); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> HandleAuditDriverResult(session_id, controller_id, commitphase, driver_result, audit_result); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -811,12 +822,12 @@ TcCommonRet PhysicalCore::HandleAuditStart(uint32_t session_id, OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); pfc_log_debug("Received HandleAuditStart from TC"); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> StartAudit(&db_conn, ctrl_type, controller_id); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -842,13 +853,13 @@ TcCommonRet PhysicalCore::HandleAuditEnd(uint32_t session_id, pfc_log_debug("Received HandleAuditEnd from TC"); OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> EndAudit(&db_conn, ctrl_type, controller_id, audit_result); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -870,11 +881,11 @@ TcCommonRet PhysicalCore::HandleSaveConfiguration(uint32_t session_id) { } OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->db_config_req()-> + UncRespCode resp = internal_transaction_coordinator_->db_config_req()-> SaveRunningToStartUp(&db_conn); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -896,11 +907,11 @@ TcCommonRet PhysicalCore::HandleClearStartup(uint32_t session_id) { } OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->db_config_req()-> + UncRespCode resp = internal_transaction_coordinator_->db_config_req()-> ClearStartUpDb(&db_conn); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -927,7 +938,7 @@ TcCommonRet PhysicalCore::HandleAbortCandidate(uint32_t session_id, AbortCandidateDb(&db_conn); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -954,7 +965,7 @@ TcCommonRet PhysicalCore::HandleAuditConfig(unc_keytype_datatype_t db_target, OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); pfc_log_debug("Received HandleAuditConfig from TC"); // Call ITC transaction handler function - UpplReturnCode resp = UPPL_RC_SUCCESS; + UncRespCode resp = UNC_RC_SUCCESS; if (fail_oper == TC_OP_CANDIDATE_COMMIT) { uint32_t session_id = 0; uint32_t config_id = 0; @@ -962,14 +973,14 @@ TcCommonRet PhysicalCore::HandleAuditConfig(unc_keytype_datatype_t db_target, TransactionRequest *txn_req = internal_transaction_coordinator_->transaction_req(); resp = txn_req->StartTransaction(&db_conn, session_id, config_id); - if (resp != UPPL_RC_SUCCESS) { + if (resp != UNC_RC_SUCCESS) { pfc_log_error("HandleAuditConfig - StartTransaction failed with %d", resp); return unc::tclib::TC_FAILURE; } resp = txn_req->HandleVoteRequest(session_id, config_id, driver_info); - if (resp != UPPL_RC_SUCCESS) { + if (resp != UNC_RC_SUCCESS) { pfc_log_error("HandleAuditConfig - Vote failed with %d", resp); return unc::tclib::TC_FAILURE; @@ -979,7 +990,7 @@ TcCommonRet PhysicalCore::HandleAuditConfig(unc_keytype_datatype_t db_target, TcCommitPhaseResult driver_result; resp = txn_req->HandleDriverResult(&db_conn, session_id, config_id, phase, driver_result); - if (resp != UPPL_RC_SUCCESS) { + if (resp != UNC_RC_SUCCESS) { pfc_log_error("HandleAuditConfig - DriverResult VOTE PH failed with %d", resp); return unc::tclib::TC_FAILURE; @@ -987,7 +998,7 @@ TcCommonRet PhysicalCore::HandleAuditConfig(unc_keytype_datatype_t db_target, resp = txn_req->HandleGlobalCommitRequest(session_id, config_id, driver_info); - if (resp != UPPL_RC_SUCCESS) { + if (resp != UNC_RC_SUCCESS) { pfc_log_error("HandleAuditConfig - GlobalCommit failed with %d", resp); return unc::tclib::TC_FAILURE; @@ -996,14 +1007,14 @@ TcCommonRet PhysicalCore::HandleAuditConfig(unc_keytype_datatype_t db_target, phase = unc::tclib::TC_COMMIT_GLOBAL_COMMIT_PHASE; resp = txn_req->HandleDriverResult(&db_conn, session_id, config_id, phase, driver_result); - if (resp != UPPL_RC_SUCCESS) { + if (resp != UNC_RC_SUCCESS) { pfc_log_error("HandleAuditConfig - DriverResult COM PH failed with %d", resp); return unc::tclib::TC_FAILURE; } TcTransEndResult trans_res = unc::tclib::TRANS_END_SUCCESS; resp = txn_req->EndTransaction(&db_conn, session_id, config_id, trans_res); - if (resp != UPPL_RC_SUCCESS) { + if (resp != UNC_RC_SUCCESS) { pfc_log_error("HandleAuditConfig - EndTransaction COM PH failed with %d", resp); return unc::tclib::TC_FAILURE; @@ -1022,11 +1033,11 @@ TcCommonRet PhysicalCore::HandleAuditConfig(unc_keytype_datatype_t db_target, } else if (fail_oper == TC_OP_USER_AUDIT || fail_oper == TC_OP_DRIVER_AUDIT) { // Do nothing - resp = UPPL_RC_SUCCESS; + resp = UNC_RC_SUCCESS; } // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -1050,12 +1061,12 @@ TcCommonRet PhysicalCore::HandleCommitGlobalAbort( return unc::tclib::TC_FAILURE; } // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->transaction_req()-> + UncRespCode resp = internal_transaction_coordinator_->transaction_req()-> AbortTransaction(session_id, config_id, fail_phase); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -1080,14 +1091,14 @@ TcCommonRet PhysicalCore::HandleAuditGlobalAbort( return unc::tclib::TC_FAILURE; } // Call ITC transaction handler function - UpplReturnCode resp = internal_transaction_coordinator_->audit_req()-> + UncRespCode resp = internal_transaction_coordinator_->audit_req()-> HandleAuditAbort(session_id, ctrl_type, controller_id, operation_phase); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -1110,11 +1121,11 @@ TcCommonRet PhysicalCore::HandleSetup() { OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function // Copy startup to candidate and running and commit - UpplReturnCode resp = internal_transaction_coordinator_->db_config_req()-> + UncRespCode resp = internal_transaction_coordinator_->db_config_req()-> LoadAndCommitStartup(&db_conn); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return unc::tclib::TC_SUCCESS; } else { return unc::tclib::TC_FAILURE; @@ -1138,11 +1149,11 @@ TcCommonRet PhysicalCore::HandleSetupComplete() { OPEN_DB_CONNECTION_TC_REQUEST(unc::uppl::kOdbcmConnReadWriteNb); // Call ITC transaction handler function // Copy startup to candidate and running and commit - UpplReturnCode resp = internal_transaction_coordinator_-> + UncRespCode resp = internal_transaction_coordinator_-> system_state_change_req()->SystemStateChangeToActive(&db_conn); pfc_log_debug("ReturnCode of SystemStateChangeToActive %d", resp); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { pfc_log_debug("Returning Success to Tclib"); return unc::tclib::TC_SUCCESS; } else { @@ -1160,20 +1171,39 @@ unc_keytype_ctrtype_t PhysicalCore::HandleGetControllerType( string controller_id) { // call util function to get controller type unc_keytype_ctrtype_t controller_type = UNC_CT_UNKNOWN; - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteNb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { - return controller_type; + if (db_ret != UNC_RC_SUCCESS) { + pfc_log_error("db cxn open error"); + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_id.c_str(), + UNC_RC_INTERNAL_ERR, + 0); + return UNC_CT_UNKNOWN; } - UpplReturnCode resp = PhyUtil::get_controller_type(&db_conn, + UncRespCode resp = PhyUtil::get_controller_type(&db_conn, controller_id, controller_type, UNC_DT_CANDIDATE); // convert the error code returned by ITC to TC error code - if (resp == UPPL_RC_SUCCESS) { + if (resp == UNC_RC_SUCCESS) { return controller_type; + } else if (resp == UNC_UPPL_RC_ERR_DB_GET) { + pfc_log_error("Unknown controller-id"); + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_id.c_str(), + UNC_RC_NO_SUCH_INSTANCE, + 0); + return UNC_CT_UNKNOWN; } else { - pfc_log_warn("Error reading controller type from DB"); + pfc_log_error("DB access error"); + TcLibModule* tclib_ptr = static_cast + (TcLibModule::getInstance(TCLIB_MODULE_NAME)); + tclib_ptr->TcLibWriteControllerInfo(controller_id.c_str(), + UNC_RC_INTERNAL_ERR, + 0); return UNC_CT_UNKNOWN; } } @@ -1211,14 +1241,34 @@ list PhysicalCore::GetControllerVersionList() { * as down */ -UpplReturnCode PhysicalCore::SendControllerDisconnectAlarm( - string controller_id) { +UncRespCode PhysicalCore::SendControllerDisconnectAlarm( + string controller_id) { + if (system_transit_state_ == true && + get_system_state() == UPPL_SYSTEM_ST_ACTIVE) { + pfc_log_info("System is in active->standby transition," + " so don't send disconnect alarm"); + return UNC_RC_SUCCESS; + } if (get_system_state() == UPPL_SYSTEM_ST_STANDBY) { - // system is in standby pfc_log_info("System is in standby"); pfc_log_info("ControllerDisconnect alarm not sent to node manager"); - return UPPL_RC_SUCCESS; - } + return UNC_RC_SUCCESS; + } + // By alarm definition,alarm category =1 for connect/disconnect alarm + std::string alarm_category = "1"; + std::string map_key = ""; + map_key.append(controller_id).append("#").append(alarm_category); + std::map::iterator alarm_map_iter; + alarm_map_iter = alarm_status_map_.find(map_key); + if (alarm_map_iter != alarm_status_map_.end()) { /*there is an entry found*/ + // Do nothing in this case, just return + pfc_log_debug("controller entry is available in alarm_status_map_" + " - NOT send alarm again"); + return UNC_UPPL_RC_ERR_INSTANCE_EXISTS; + } + alarm_status_map_.insert(std::pair (map_key, true)); + pfc_log_debug("Controller inserted into alarm_status_map_:%s", + map_key.c_str()); string vtn_name = ""; const std::string& alm_msg = "Controller disconnected - " + controller_id; const std::string& alm_msg_summary = "Controller disconnected"; @@ -1242,13 +1292,13 @@ UpplReturnCode PhysicalCore::SendControllerDisconnectAlarm( if (ret != pfc::alarm::ALM_OK) { delete []data->alarm_key; delete data; - return UPPL_RC_ERR_ALARM_API; + return UNC_UPPL_RC_ERR_ALARM_API; } delete []data->alarm_key; delete data; pfc_log_info("Sent Controller Disconnected alarm - %s", controller_id.c_str()); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1259,12 +1309,25 @@ UpplReturnCode PhysicalCore::SendControllerDisconnectAlarm( * as up */ -UpplReturnCode PhysicalCore::SendControllerConnectAlarm(string controller_id) { +UncRespCode PhysicalCore::SendControllerConnectAlarm(string controller_id) { + pfc_log_debug("controller_name:%s", controller_id.c_str()); if (get_system_state() == UPPL_SYSTEM_ST_STANDBY) { // system is in standby pfc_log_info("System is in standby"); pfc_log_info("ControllerConnect alarm not sent to node manager"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; + } + std::string alarm_category = "1"; // as per alarm definition, + // alarm category is 1 for connect/disconnect alarm + std::map::iterator alarm_map_iter; + std::string map_key = ""; + map_key.append(controller_id).append("#").append(alarm_category); + alarm_map_iter = alarm_status_map_.find(map_key); + if (alarm_map_iter == alarm_status_map_.end()) { /*there is no entry*/ + // Do nothing, return + pfc_log_debug("no controller entry found in alarm_status_map_ " + "- NOT send alarm"); + return UNC_RC_SUCCESS; } string vtn_name = ""; const std::string& alm_msg = "Controller connected - " + controller_id; @@ -1287,15 +1350,24 @@ UpplReturnCode PhysicalCore::SendControllerConnectAlarm(string controller_id) { alm_msg_summary, data, fd); if (ret != pfc::alarm::ALM_OK) { + pfc_log_debug("return UNC_UPPL_RC_ERR_ALARM_API"); delete []data->alarm_key; delete data; - return UPPL_RC_ERR_ALARM_API; + return UNC_UPPL_RC_ERR_ALARM_API; } + pfc_log_debug("Sending alarm successfully"); delete []data->alarm_key; delete data; + if (!alarm_status_map_.empty()) { + if (alarm_map_iter != alarm_status_map_.end()) { /*there is no entry*/ + pfc_log_debug("Clearing an element from map:%s", + alarm_map_iter->first.c_str()); + alarm_status_map_.erase(alarm_map_iter); + } + } pfc_log_info("Sent Controller Connected alarm - %s", controller_id.c_str()); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } @@ -1306,15 +1378,35 @@ UpplReturnCode PhysicalCore::SendControllerConnectAlarm(string controller_id) { * handling fails */ -UpplReturnCode +UncRespCode PhysicalCore::SendEventHandlingFailureAlarm(string controller_id, string event_details) { + if (system_transit_state_ == true && + get_system_state() == UPPL_SYSTEM_ST_ACTIVE) { + pfc_log_info("System is in active->standby transition," + " so don't send failure alarm"); + return UNC_RC_SUCCESS; + } if (get_system_state() == UPPL_SYSTEM_ST_STANDBY) { - // system is in standby pfc_log_info("System is in standby"); pfc_log_info("Event Handling Failure alarm not sent to node manager"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } + + std::string alarm_category = "3"; // as per alarm definition,alarm category + // is 3 for event handling success/failure alarm + std::string map_key = ""; + map_key.append(controller_id).append("#").append(alarm_category); + std::map::iterator alarm_map_iter; + alarm_map_iter = alarm_status_map_.find(map_key); + if (alarm_map_iter != alarm_status_map_.end()) { /*there is an entry found*/ + // Do nothing in this case, just return + pfc_log_debug("controller entry is available in alarm_status_map_" + " - NOT send alarm again"); + return UNC_UPPL_RC_ERR_INSTANCE_EXISTS; + } + alarm_status_map_.insert(std::pair (map_key, true)); + string vtn_name = ""; const std::string& alm_msg = "Event Handling failure - " + event_details; @@ -1340,13 +1432,13 @@ PhysicalCore::SendEventHandlingFailureAlarm(string controller_id, if (ret != pfc::alarm::ALM_OK) { delete []data->alarm_key; delete data; - return UPPL_RC_ERR_ALARM_API; + return UNC_UPPL_RC_ERR_ALARM_API; } delete []data->alarm_key; delete data; pfc_log_info("Sent Event Handling Failure alarm - %s , %s", controller_id.c_str(), event_details.c_str()); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1355,15 +1447,29 @@ PhysicalCore::SendEventHandlingFailureAlarm(string controller_id, * This is a clearance alarm for EVENT_HANDLING_FAILURE alarm */ -UpplReturnCode +UncRespCode PhysicalCore::SendEventHandlingSuccessAlarm(string controller_id, string event_details) { if (get_system_state() == UPPL_SYSTEM_ST_STANDBY) { // system is in standby pfc_log_info("System is in standby"); pfc_log_info("Event handling Success alarm not sent to node manager"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } + + std::string alarm_category = "3"; // as per alarm definition, + // alarm category is 3 for event handling success/failure alarm + std::map::iterator alarm_map_iter; + std::string map_key = ""; + map_key.append(controller_id).append("#").append(alarm_category); + alarm_map_iter = alarm_status_map_.find(map_key); + if (alarm_map_iter == alarm_status_map_.end()) { /*there is no entry*/ + // Do nothing, return + pfc_log_debug("no controller entry found in alarm_status_map_ " + "- NOT send alarm"); + return UNC_RC_SUCCESS; + } + string vtn_name = ""; const std::string& alm_msg = "Event handling success - " + event_details; const std::string& alm_msg_summary = @@ -1387,13 +1493,20 @@ PhysicalCore::SendEventHandlingSuccessAlarm(string controller_id, if (ret != pfc::alarm::ALM_OK) { delete []data->alarm_key; delete data; - return UPPL_RC_ERR_ALARM_API; + return UNC_UPPL_RC_ERR_ALARM_API; } delete []data->alarm_key; delete data; + if (!alarm_status_map_.empty()) { + if (alarm_map_iter != alarm_status_map_.end()) { /*there is no entry*/ + pfc_log_debug("Clearing an element from map:%s", + alarm_map_iter->first.c_str()); + alarm_status_map_.erase(alarm_map_iter); + } + } pfc_log_info("Sent Event Handling Success alarm - %s , %s", controller_id.c_str(), event_details.c_str()); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -1420,27 +1533,27 @@ cap_iter PhysicalCore::GetVersionIterator(ControllerVersion version_in) { * * @Description : This function checks whether event handling failure alarm * is already raised for a controller * * * @param[in] : controller_name - * * * @return : UPPL_RC_SUCCESS or UPPL_RC_FAILURE + * * * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_FAILURE * */ -UpplReturnCode PhysicalCore::RaiseEventHandlingAlarm(string controller_name) { +UncRespCode PhysicalCore::RaiseEventHandlingAlarm(string controller_name) { if (find(event_handling_controller_alarm_.begin(), event_handling_controller_alarm_.end(), controller_name) != event_handling_controller_alarm_.end()) { pfc_log_info("Alarm already raised for this controller id"); - return UPPL_RC_FAILURE; + return UNC_UPPL_RC_FAILURE; } pfc_log_debug("Adding the controller_id in the alarm_raised vector"); event_handling_controller_alarm_.push_back(controller_name); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /** ClearEventHandlingAlarm * * @Description : This function checks whether event handling success alarm * is already raised for a controller * * * @param[in] : controller_name - * * * @return : UPPL_RC_SUCCESS or UPPL_RC_FAILURE + * * * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_FAILURE * */ -UpplReturnCode PhysicalCore::ClearEventHandlingAlarm(string controller_name) { +UncRespCode PhysicalCore::ClearEventHandlingAlarm(string controller_name) { vector::iterator alarm_raised_iter = find(event_handling_controller_alarm_.begin(), event_handling_controller_alarm_.end(), @@ -1449,11 +1562,55 @@ UpplReturnCode PhysicalCore::ClearEventHandlingAlarm(string controller_name) { pfc_log_debug(" Failure Alarm already raised for this controller id"); event_handling_controller_alarm_.erase(alarm_raised_iter); pfc_log_debug("Clearing the alarm"); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } pfc_log_info("Ignoring the clearance alarm"); - return UPPL_RC_FAILURE; + return UNC_UPPL_RC_FAILURE; +} + +/** + * @Description : This function checks whether controller_name key + * is exists in the alarm_status_map_ and remove that. + * (it checks alarm_category 1 and 3) + * @param[in] : controller_name + * @return : UNC_RC_SUCCESS or UNC_UPPL_RC_FAILURE + */ + +UncRespCode PhysicalCore::remove_ctr_from_alarm_status_map( + std::string controller_name, std::string alarm_category) { + std::string map_key = ""; + map_key.append(controller_name).append("#").append(alarm_category); + std::map::iterator alarm_map_iter; + alarm_map_iter = alarm_status_map_.find(map_key); + if (alarm_map_iter != alarm_status_map_.end()) { + // send recovery alarm and delete the entry + if (alarm_category.compare("1") == 0) + SendControllerConnectAlarm(controller_name); + else // alarm_category == "3" + SendEventHandlingSuccessAlarm(controller_name, "KT_CONTROLLER - DELETE"); + + pfc_log_debug("controller key is deleted in alarm_status_map_"); + return UNC_RC_SUCCESS; + } + pfc_log_debug("controller key is not found alarm_status_map_"); + return UNC_UPPL_RC_FAILURE; } + +/** + * @Description : This function get and return the capa module instance + * @param[in] : None + * @return : CapaIntf + */ + +unc::capa::CapaIntf *PhysicalCore::GetCapaInterface() { + unc::capa::CapaIntf *capa = reinterpret_cast( + pfc::core::Module::getInstance("capa")); + if (capa == NULL) { + pfc_log_error("CapaModule is not found in UPPL daemon"); + } + return capa; +} + } // namespace uppl } // namespace unc diff --git a/coordinator/modules/uppl/physical_itc.cc b/coordinator/modules/uppl/physical_itc.cc index 9b8a3eb6..7e15d3a3 100644 --- a/coordinator/modules/uppl/physical_itc.cc +++ b/coordinator/modules/uppl/physical_itc.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -137,19 +137,19 @@ SystemStateChangeRequest * argument present * session_id - ipc session id used for TC validation * config_id - configuration id used for TC validation - * @return : UPPL_RC_SUCCESS - will be returned if the config ID + * @return : UNC_RC_SUCCESS - will be returned if the config ID * and session ID are valid - * UPPL_RC_ERR_INVALID_CONFIGID will be returned if - * config id is invalid or UPPL_RC_ERR_INVALID_SESSIONID + * UNC_UPPL_RC_ERR_INVALID_CONFIGID will be returned if + * config id is invalid or UNC_UPPL_RC_ERR_INVALID_SESSIONID * will be returned if session id is invalid **/ -UpplReturnCode InternalTransactionCoordinator::PerformConfigIdValidation( +UncRespCode InternalTransactionCoordinator::PerformConfigIdValidation( ServerSession &session, uint32_t sessionId, uint32_t configId) { // pass config id received in the message to the physical core for validation - UpplReturnCode validation_status = PhysicalLayer::get_instance() \ + UncRespCode validation_status = PhysicalLayer::get_instance() \ ->get_physical_core() \ ->ValidateConfigId(sessionId, configId); return validation_status; @@ -161,14 +161,14 @@ UpplReturnCode InternalTransactionCoordinator::PerformConfigIdValidation( * id must be 0. For READ operations the service id must be 1 * @param[in] : session - Object of ServerSession service_id - type of ipc service id - * @return : UPPL_RC_SUCCESS - will be returned if service id validation - * is success for appropriate operation type else UPPL_RC_ERR_* + * @return : UNC_RC_SUCCESS - will be returned if service id validation + * is success for appropriate operation type else UNC_UPPL_RC_ERR_* * will be returned. **/ -UpplReturnCode InternalTransactionCoordinator::ProcessReq( +UncRespCode InternalTransactionCoordinator::ProcessReq( ServerSession &session, pfc_ipcid_t service_id) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS; int err = 0; if (service_id == 1 || service_id == 0) { // create request header object to get arguments from session @@ -176,35 +176,35 @@ UpplReturnCode InternalTransactionCoordinator::ProcessReq( int parse_ret = PhyUtil::sessGetReqHeader(session, obj_req_hdr); if (parse_ret != 0) { pfc_log_error("Unable to parse ipc structure. BAD_REQUEST error"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } PhyUtil::printReqHeader(obj_req_hdr); physical_response_header rsh; PhyUtil::getRespHeaderFromReqHeader(obj_req_hdr, rsh); // get system state to discard the config requests in case of standby - UpplReturnCode standby_status = UPPL_RC_SUCCESS; + UncRespCode standby_status = UNC_RC_SUCCESS; standby_status = PhysicalLayer::get_instance()->get_physical_core() \ ->ValidateStandbyRequests(obj_req_hdr.operation); - if (standby_status != UPPL_RC_SUCCESS) { - rsh.result_code = UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; + if (standby_status != UNC_RC_SUCCESS) { + rsh.result_code = UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY; pfc_log_error("Config not allowed in standby"); err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (obj_req_hdr.data_type < UNC_DT_STATE || obj_req_hdr.data_type > UNC_DT_AUDIT) { - rsh.result_code = UPPL_RC_ERR_DATATYPE_NOT_SUPPORTED; + rsh.result_code = UNC_UPPL_RC_ERR_DATATYPE_NOT_SUPPORTED; pfc_log_error("datatype not supported"); err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } switch (obj_req_hdr.operation) { case UNC_OP_CREATE: @@ -213,16 +213,16 @@ UpplReturnCode InternalTransactionCoordinator::ProcessReq( if (service_id != 0) { pfc_log_error( "Config Operation is provided with ServiceId other than 0"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } resp_code = ProcessConfigRequest(session, obj_req_hdr, rsh); break; case UNC_OP_CONTROL: pfc_log_info("Inside control request request - NOT_SUPPORTED"); - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } break; case UNC_OP_READ: @@ -234,18 +234,18 @@ UpplReturnCode InternalTransactionCoordinator::ProcessReq( if (service_id != 1) { pfc_log_error( "Read Operation is provided with ServiceId other than 1"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } resp_code = ProcessReadRequest(session, obj_req_hdr, rsh); break; default: - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED; pfc_log_error("Operation not supported"); err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } else if (service_id == 2) { uint32_t operation; @@ -264,7 +264,7 @@ UpplReturnCode InternalTransactionCoordinator::ProcessReq( default: pfc_log_error("Operation not allowed due to bad request type"); session.addOutput(operation); - session.addOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_SUPPORTED); + session.addOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_SUPPORTED); } } return resp_code; @@ -274,20 +274,20 @@ UpplReturnCode InternalTransactionCoordinator::ProcessReq( * @Description : This function process the received notification event * by creating notify req object * @param[in] : object of IpcEvent class - * @return : UPPL_RC_SUCCESS is returned when the response is added + * @return : UNC_RC_SUCCESS is returned when the response is added * to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not + * UNC_UPPL_RC_ERR_* is returned when ipc response could not * be added to sess. **/ -UpplReturnCode InternalTransactionCoordinator::ProcessEvent( +UncRespCode InternalTransactionCoordinator::ProcessEvent( const IpcEvent &event) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS; + UncRespCode resp_code = UNC_RC_SUCCESS; NotificationRequest notify_req; pfc_bool_t resp = notify_req.ProcessEvent(event); if (resp == PFC_TRUE) { - resp_code = UPPL_RC_SUCCESS; + resp_code = UNC_RC_SUCCESS; } else { - resp_code = UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; + resp_code = UNC_UPPL_RC_ERR_NOTIFICATION_HANDLING_FAILED; } return resp_code; } @@ -299,29 +299,29 @@ UpplReturnCode InternalTransactionCoordinator::ProcessEvent( * argument present * obj_req_hdr - object of physical request header * &rsh - object of the physical response header - * @return : UPPL_RC_SUCCESS if validation of config_id is success - * or UPPL_RC_ERR_* if validation fails. + * @return : UNC_RC_SUCCESS if validation of config_id is success + * or UNC_UPPL_RC_ERR_* if validation fails. **/ -UpplReturnCode InternalTransactionCoordinator::ProcessConfigRequest( +UncRespCode InternalTransactionCoordinator::ProcessConfigRequest( ServerSession &session, physical_request_header &obj_req_hdr, physical_response_header &rsh) { - UpplReturnCode resp_code = UPPL_RC_SUCCESS; - UpplReturnCode validate_status = PerformConfigIdValidation( + UncRespCode resp_code = UNC_RC_SUCCESS; + UncRespCode validate_status = PerformConfigIdValidation( session, obj_req_hdr.client_sess_id, obj_req_hdr.config_id); - if (validate_status != UPPL_RC_SUCCESS) { - if (validate_status == UPPL_RC_ERR_INVALID_CONFIGID) { + if (validate_status != UNC_RC_SUCCESS) { + if (validate_status == UNC_UPPL_RC_ERR_INVALID_CONFIGID) { pfc_log_error("ITC::Process Req:: Config id validation failed"); } - if (validate_status == UPPL_RC_ERR_INVALID_SESSIONID) { + if (validate_status == UNC_UPPL_RC_ERR_INVALID_SESSIONID) { pfc_log_error("ITC::Process Req:: Session id validation failed"); } rsh.result_code = validate_status; int err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } return resp_code; } @@ -329,15 +329,15 @@ UpplReturnCode InternalTransactionCoordinator::ProcessConfigRequest( set_config_request_status(true); // create configuration req object to invoke processreq function. ConfigurationRequest configuration_req; - resp_code = (UpplReturnCode) configuration_req.ProcessReq(session, + resp_code = (UncRespCode) configuration_req.ProcessReq(session, obj_req_hdr); set_config_request_status(false); } else { - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; pfc_log_error("Parallel Config operations are not allowed"); int err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } } return resp_code; @@ -350,10 +350,10 @@ UpplReturnCode InternalTransactionCoordinator::ProcessConfigRequest( * argument present * obj_req_hdr - object of physical request header * &rsh - object of the physical response header - * @return : UPPL_RC_SUCCESS if validation of config_id is success - * or UPPL_RC_ERR_* if validation fails. + * @return : UNC_RC_SUCCESS if validation of config_id is success + * or UNC_UPPL_RC_ERR_* if validation fails. **/ -UpplReturnCode InternalTransactionCoordinator::ProcessReadRequest( +UncRespCode InternalTransactionCoordinator::ProcessReadRequest( ServerSession &session, physical_request_header &obj_req_hdr, physical_response_header &rsh) { @@ -361,37 +361,37 @@ UpplReturnCode InternalTransactionCoordinator::ProcessReadRequest( obj_req_hdr.data_type == UNC_DT_RUNNING || obj_req_hdr.data_type == UNC_DT_CANDIDATE || obj_req_hdr.data_type == UNC_DT_STARTUP)) { - rsh.result_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + rsh.result_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; pfc_log_error("operation not allowed for this dt state"); int err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } if (obj_req_hdr.data_type == UNC_DT_CANDIDATE) { - UpplReturnCode validate_status = PerformConfigIdValidation( + UncRespCode validate_status = PerformConfigIdValidation( session, obj_req_hdr.client_sess_id, obj_req_hdr.config_id); - if (validate_status != UPPL_RC_SUCCESS) { - if (validate_status == UPPL_RC_ERR_INVALID_CONFIGID) { + if (validate_status != UNC_RC_SUCCESS) { + if (validate_status == UNC_UPPL_RC_ERR_INVALID_CONFIGID) { pfc_log_error("ITC::Process Req:: Config id validation failed"); } - if (validate_status == UPPL_RC_ERR_INVALID_SESSIONID) { + if (validate_status == UNC_UPPL_RC_ERR_INVALID_SESSIONID) { pfc_log_error("ITC::Process Req:: Session id validation failed"); } rsh.result_code = validate_status; int err = PhyUtil::sessOutRespHeader(session, rsh); if (err != 0) { - return UPPL_RC_ERR_IPC_WRITE_ERROR; + return UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } } // Form read request object to invoke process request function ReadRequest read_req; - return (UpplReturnCode) read_req.ProcessReq(session, obj_req_hdr); + return (UncRespCode) read_req.ProcessReq(session, obj_req_hdr); } /**ProcessImportRequest @@ -400,22 +400,22 @@ UpplReturnCode InternalTransactionCoordinator::ProcessReadRequest( * @param[in] : session - Object of ServerSession where the request * argument present * operation - UNC_OP_* specifies the operation - * @return : UPPL_RC_SUCCESS is returned when the response is added + * @return : UNC_RC_SUCCESS is returned when the response is added * to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not + * UNC_UPPL_RC_ERR_* is returned when ipc response could not * be added to sess. **/ -UpplReturnCode InternalTransactionCoordinator::ProcessImportRequest( +UncRespCode InternalTransactionCoordinator::ProcessImportRequest( ServerSession &session, uint32_t operation) { if (PhysicalLayer::get_instance()->get_physical_core() ->get_system_state() == UPPL_SYSTEM_ST_STANDBY) { pfc_log_info("Import Operations not allowed in standby"); session.addOutput(operation); - session.addOutput(UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY); - return UPPL_RC_SUCCESS; + session.addOutput(UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY); + return UNC_RC_SUCCESS; } - UpplReturnCode ret_code = UPPL_RC_SUCCESS; + UncRespCode ret_code = UNC_RC_SUCCESS; key_ctr_t obj_key_ctr; memset(&obj_key_ctr, 0, sizeof(key_ctr_t)); if (operation == UNC_OP_IMPORT_CONTROLLER_CONFIG) { @@ -425,18 +425,18 @@ UpplReturnCode InternalTransactionCoordinator::ProcessImportRequest( if (err != 0) { pfc_log_info( "ctr_name is not present in UNC_OP_IMPORT_CONTROLLER_CONFIG"); - return UPPL_RC_ERR_BAD_REQUEST; + return UNC_UPPL_RC_ERR_BAD_REQUEST; } pfc_log_debug("Controller name received %s", ctr_name); memcpy(obj_key_ctr.controller_name, ctr_name, strlen(ctr_name)+1); } if (config_request_status() == true) { - ret_code = UPPL_RC_ERR_OPERATION_NOT_ALLOWED; + ret_code = UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED; pfc_log_error("Import not allowed- operation in progress"); } else { - UpplReturnCode db_ret = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteNb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_fatal("DB Connection failure for operation %d", operation); return db_ret; @@ -445,7 +445,7 @@ UpplReturnCode InternalTransactionCoordinator::ProcessImportRequest( ImportRequest import_req; ret_code = import_req.ProcessRequest(&db_conn, operation, obj_key_ctr); - if (ret_code == UPPL_RC_SUCCESS) { + if (ret_code == UNC_RC_SUCCESS) { if (operation == UNC_OP_IMPORT_CONTROLLER_CONFIG) { controller_in_import_ = (const char*) obj_key_ctr.controller_name; } else if (operation == UNC_OP_CLEAR_IMPORT_CONFIG) { @@ -455,7 +455,7 @@ UpplReturnCode InternalTransactionCoordinator::ProcessImportRequest( } session.addOutput(operation); session.addOutput((uint32_t)ret_code); - return UPPL_RC_SUCCESS; + return UNC_RC_SUCCESS; } /**ProcessIsCandidateDirty @@ -464,17 +464,17 @@ UpplReturnCode InternalTransactionCoordinator::ProcessImportRequest( * @param[in] : session - Object of ServerSession where the request * argument present * operation - UNC_OP_* specifies the operation - * @return : UPPL_RC_SUCCESS is returned when the response is added + * @return : UNC_RC_SUCCESS is returned when the response is added * to ipc session successfully. - * UPPL_RC_ERR_* is returned when ipc response could not + * UNC_UPPL_RC_ERR_* is returned when ipc response could not * be added to sess. **/ -UpplReturnCode InternalTransactionCoordinator::ProcessIsCandidateDirty( +UncRespCode InternalTransactionCoordinator::ProcessIsCandidateDirty( ServerSession &session, uint32_t operation) { - UpplReturnCode db_ret = UPPL_RC_SUCCESS, resp_code = UPPL_RC_SUCCESS; + UncRespCode db_ret = UNC_RC_SUCCESS, resp_code = UNC_RC_SUCCESS; OPEN_DB_CONNECTION(unc::uppl::kOdbcmConnReadWriteNb, db_ret); - if (db_ret != UPPL_RC_SUCCESS) { + if (db_ret != UNC_RC_SUCCESS) { pfc_log_fatal("DB Connection failure for operation %d", operation); return db_ret; @@ -486,14 +486,14 @@ UpplReturnCode InternalTransactionCoordinator::ProcessIsCandidateDirty( if (db_status == ODBCM_RC_CANDIDATE_DIRTY) { dirty_status = 1; } else if (db_status != ODBCM_RC_SUCCESS) { - resp_code = UPPL_RC_ERR_DB_GET; + resp_code = UNC_UPPL_RC_ERR_DB_GET; } int err = session.addOutput(operation); err |= session.addOutput((uint32_t)resp_code); err |= session.addOutput(dirty_status); if (err != 0) { pfc_log_info("Error in sending IsCandidateDirty response"); - resp_code = UPPL_RC_ERR_IPC_WRITE_ERROR; + resp_code = UNC_UPPL_RC_ERR_IPC_WRITE_ERROR; } return resp_code; } diff --git a/coordinator/modules/uppl/physicallayer.cc b/coordinator/modules/uppl/physicallayer.cc index 45c78cbe..22b599ae 100644 --- a/coordinator/modules/uppl/physicallayer.cc +++ b/coordinator/modules/uppl/physicallayer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -45,6 +45,9 @@ Mutex PhysicalLayer::notification_manager_mutex_; // Static variable for mutex obj use in ODBCManager class Mutex PhysicalLayer::ODBCManager_mutex_; +// Static variable for mutex obj use in ODBC connection pool access +Mutex PhysicalLayer::db_conpool_mutex_; + ReadWriteLock PhysicalLayer::phy_fini_db_lock_; ReadWriteLock PhysicalLayer::phy_fini_phycore_lock_; ReadWriteLock PhysicalLayer::phy_fini_event_lock_; @@ -63,7 +66,7 @@ uint8_t PhysicalLayer::phyFiniFlag = 0; pfc_bool_t PhysicalLayer::init() { pfc_log_info("Physical Layer init() called"); uint8_t init_status = InitializePhysicalSubModules(); - if (init_status != UPPL_RC_SUCCESS) { + if (init_status != UNC_RC_SUCCESS) { pfc_log_warn("Init failed with %d", init_status); return PFC_FALSE; } @@ -86,8 +89,8 @@ pfc_bool_t PhysicalLayer::fini() { ScopedReadWriteLock ipcFiniLock(PhysicalLayer::get_phy_fini_phycore_lock_(), PFC_TRUE); } - UpplReturnCode fini_status = FinalizePhysicalSubModules(); - if (fini_status != UPPL_RC_SUCCESS) { + UncRespCode fini_status = FinalizePhysicalSubModules(); + if (fini_status != UNC_RC_SUCCESS) { pfc_log_warn("Fini failed with %d", fini_status); return PFC_FALSE; } @@ -122,33 +125,33 @@ PhysicalLayer* PhysicalLayer::get_instance() { *@Description : This function instantiates objects for the classes * PhysicalCore, IPCConnectionManager and ODBCManager. *@param[in] : None - *@return : UPPL_RC_SUCCESS is returned if all sub modules are initialized + *@return : UNC_RC_SUCCESS is returned if all sub modules are initialized * successfully - * otherwise UPPL_RC_ERR* is returned to denote error + * otherwise UNC_UPPL_RC_ERR* is returned to denote error **/ -UpplReturnCode PhysicalLayer::InitializePhysicalSubModules() { - UpplReturnCode ret = UPPL_RC_SUCCESS; - UpplReturnCode resp = UPPL_RC_SUCCESS; +UncRespCode PhysicalLayer::InitializePhysicalSubModules() { + UncRespCode ret = UNC_RC_SUCCESS; + UncRespCode resp = UNC_RC_SUCCESS; pfc_log_debug("Initialising IPCConnectionManager submodule"); ipc_connection_manager_= new IPCConnectionManager(); if (ipc_connection_manager_ == NULL) { pfc_log_error("Memory not allocated for ipc_connection_manager_"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } ipc_connection_manager_->InitializeIpcServerClient(); pfc_log_info("IPCConnectionManager submodule initialised"); physical_core_ = PhysicalCore::get_physical_core(); if (physical_core_ == NULL) { pfc_log_error("Memory not allocated for physical_core_"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } pfc_log_debug("Initialising PhysicalCore submodule"); ret = physical_core_->InitializePhysical(); - if (ret != UPPL_RC_SUCCESS) { + if (ret != UNC_RC_SUCCESS) { pfc_log_error("Physical core initialise failed"); resp = FinalizePhysicalSubModules(); - if (resp != UPPL_RC_SUCCESS) return resp; + if (resp != UNC_RC_SUCCESS) return resp; return ret; } pfc_log_info("Physical Core initialised"); @@ -156,14 +159,14 @@ UpplReturnCode PhysicalLayer::InitializePhysicalSubModules() { odbc_manager_= ODBCManager::get_ODBCManager(); if (odbc_manager_ == NULL) { pfc_log_error("Memory not allocated for odbc_manager_"); - return UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; + return UNC_UPPL_RC_ERR_FATAL_RESOURCE_ALLOCATION; } ODBCM_RC_STATUS odbc_ret = odbc_manager_->ODBCM_Initialize(); if (odbc_ret != ODBCM_RC_SUCCESS) { pfc_log_error("ODBCManager initialise failed"); resp = FinalizePhysicalSubModules(); - if (resp != UPPL_RC_SUCCESS) return resp; - ret = UPPL_RC_FAILURE; + if (resp != UNC_RC_SUCCESS) return resp; + ret = UNC_UPPL_RC_FAILURE; return ret; // Returns success code } pfc_log_info("ODBCManager initialised"); @@ -176,13 +179,13 @@ UpplReturnCode PhysicalLayer::InitializePhysicalSubModules() { classes PhysicalCore, IPCConnectionManager and ODBCManager *@param[in] : None - *@return : UPPL_RC_SUCCESS is returned if all sub modules are finalized + *@return : UNC_RC_SUCCESS is returned if all sub modules are finalized * successfully - * otherwise UPPL_RC_ERR* is returned to denote error + * otherwise UNC_UPPL_RC_ERR* is returned to denote error **/ -UpplReturnCode PhysicalLayer::FinalizePhysicalSubModules() { - UpplReturnCode response = UPPL_RC_SUCCESS; - UpplReturnCode ret = UPPL_RC_SUCCESS; +UncRespCode PhysicalLayer::FinalizePhysicalSubModules() { + UncRespCode response = UNC_RC_SUCCESS; + UncRespCode ret = UNC_RC_SUCCESS; { ScopedReadWriteLock eventFiniLock(PhysicalLayer::get_phy_fini_event_lock_(), PFC_TRUE); @@ -192,7 +195,7 @@ UpplReturnCode PhysicalLayer::FinalizePhysicalSubModules() { ipc_connection_manager_ = NULL; } } - if (ret != UPPL_RC_SUCCESS) { + if (ret != UNC_RC_SUCCESS) { pfc_log_error("IPCConnectionManager's Finalize failed"); response = ret; } @@ -201,7 +204,7 @@ UpplReturnCode PhysicalLayer::FinalizePhysicalSubModules() { ScopedReadWriteLock pcFiniLock(PhysicalLayer::get_phy_fini_phycore_lock_(), PFC_TRUE); ret = physical_core_->FinalizePhysical(); - if (ret != UPPL_RC_SUCCESS) { + if (ret != UNC_RC_SUCCESS) { pfc_log_error("Physical Core's Finalize failed"); response = ret; } @@ -244,7 +247,7 @@ pfc_ipcresp_t PhysicalLayer::ipcService(ServerSession &session, pfc_ipcid_t service_id) { pfc_log_info("PhysicalLayer::ipcService is called with service id %d", service_id); - PHY_FINI_IPC_LOCK(UPPL_RC_ERR_SHUTTING_DOWN); + PHY_FINI_IPC_LOCK(UNC_UPPL_RC_ERR_SHUTTING_DOWN); return ipc_connection_manager_->get_ipc_server_handler()-> IpcService(session, service_id); } diff --git a/coordinator/modules/uppl/unc_state_handler.cc b/coordinator/modules/uppl/unc_state_handler.cc index 1172a916..4362f037 100644 --- a/coordinator/modules/uppl/unc_state_handler.cc +++ b/coordinator/modules/uppl/unc_state_handler.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -45,13 +45,24 @@ void UncStateHandler::unc_act_event_handler_fn(pfc::core::Event* Event) { lock_.lock(); pfc_log_info("State change to Active received from Daemon"); if (system_state_ == UPPL_SYSTEM_ST_STANDBY) { + PhysicalLayer *physical_layer = PhysicalLayer::get_instance(); + PhysicalCore* physical_core = physical_layer->get_physical_core(); + physical_core->system_transit_state_ = true; + // Close the existing rw connections if any after switch over ODBCM_RC_STATUS close_rw_handle = PhysicalLayer::get_instance()->get_odbc_manager()->CloseRwConnection(); pfc_log_debug("Rw Connection Handle Free status %d", close_rw_handle); + // All existing Read only connections will be freed when transiting to ACT + ODBCM_RC_STATUS close_ro_handle = + PhysicalLayer::get_instance()-> + get_odbc_manager()->FreeingConnections(false); + pfc_log_debug("RO Connection Handle(s) Free status %d", + close_ro_handle); + physical_core->system_transit_state_ = false; set_system_state(UPPL_SYSTEM_ST_ACTIVE); // Send event subscription to driver - UpplReturnCode ret = PhysicalCore::get_physical_core()-> + UncRespCode ret = PhysicalCore::get_physical_core()-> SendEventSubscripToDriver(); pfc_log_debug("Event subscription return %d", ret); // clear all alarms diff --git a/coordinator/modules/uppl/uppl.cfdef b/coordinator/modules/uppl/uppl.cfdef index 0fa09b4d..71ac17f2 100644 --- a/coordinator/modules/uppl/uppl.cfdef +++ b/coordinator/modules/uppl/uppl.cfdef @@ -1,5 +1,5 @@ % -% Copyright (c) 2012-2013 NEC Corporation +% Copyright (c) 2012-2014 NEC Corporation % All rights reserved. % % This program and the accompanying materials are made available under the @@ -26,4 +26,6 @@ defblock ipc_params { uppl_ipc_service_ids = BYTE[]; audit_notfn_timeout = UINT32; unknown_controller_count = UINT32; + uppl_max_dataflowtraversal = UINT32; + uppl_max_ro_db_connections = UINT32; } diff --git a/coordinator/modules/uppl/uppl.conf b/coordinator/modules/uppl/uppl.conf index f404ea2d..2bb4776b 100644 --- a/coordinator/modules/uppl/uppl.conf +++ b/coordinator/modules/uppl/uppl.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -26,4 +26,6 @@ ipc_params { audit_notfn_timeout = 30; unknown_controller_count = 1; + uppl_max_dataflowtraversal = 1000; + uppl_max_ro_db_connections = 100; } diff --git a/coordinator/modules/uppl/uppl.dep b/coordinator/modules/uppl/uppl.dep index ed2f2be9..f4162598 100644 --- a/coordinator/modules/uppl/uppl.dep +++ b/coordinator/modules/uppl/uppl.dep @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -11,3 +11,5 @@ tclib alarm clstat +capa +dataflow diff --git a/coordinator/modules/uppl/uppl_ctr_capability.conf b/coordinator/modules/uppl/uppl_ctr_capability.conf index 83155b5b..ae476680 100644 --- a/coordinator/modules/uppl/uppl_ctr_capability.conf +++ b/coordinator/modules/uppl/uppl_ctr_capability.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2012-2013 NEC Corporation +# Copyright (c) 2012-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -13,7 +13,7 @@ # e.g. "5.0" version_list { - version = ["5.0"]; + version = ["5.0", "5.1"]; } kt_cap_map_list { @@ -27,6 +27,6 @@ kt_cap "KT_CONTROLLER" { attribute_name = ["type","description","ip_address", "ip_prefix_len", "user", "password", "enable_audit", "version"]; - version_supported = ["5.0"]; + version_supported = ["5.0.0.0, 5.1.0.0"]; scalability_num = 50; } diff --git a/coordinator/modules/usess/include/usess.hh b/coordinator/modules/usess/include/usess.hh index 956fbc55..c190e95e 100644 --- a/coordinator/modules/usess/include/usess.hh +++ b/coordinator/modules/usess/include/usess.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -76,8 +76,7 @@ namespace usess { // ------------------------------------------------------------- // Class definition // ------------------------------------------------------------- -class Usess : public pfc::core::Module -{ +class Usess : public pfc::core::Module { public: Usess(const pfc_modattr_t *attr); ~Usess(void); @@ -93,7 +92,7 @@ class Usess : public pfc::core::Module private: - static usess_ipc_err_e (Usess::*IpcHandler[])( + static usess_ipc_err_e(Usess::*IpcHandler[])( pfc::core::ipc::ServerSession&); // Processing function of IPC Service. diff --git a/coordinator/modules/usess/include/usess_base_common.hh b/coordinator/modules/usess/include/usess_base_common.hh index 68e09132..5dc62b43 100644 --- a/coordinator/modules/usess/include/usess_base_common.hh +++ b/coordinator/modules/usess/include/usess_base_common.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -10,14 +10,15 @@ #ifndef _USESS_BASE_COMMON_HH_ #define _USESS_BASE_COMMON_HH_ +#include #include "usess_def.hh" namespace unc { namespace usess { -class UsessBaseCommon -{ -public: +class UsessBaseCommon { +public + : UsessBaseCommon(void); ~UsessBaseCommon(void); @@ -32,7 +33,6 @@ public: const std::string& hash_key) const; bool CheckRegular(const char* check_str, const std::string& regular_str) const; - }; } // namespace usess diff --git a/coordinator/modules/usess/include/usess_conf_common.hh b/coordinator/modules/usess/include/usess_conf_common.hh index 4762f313..c5f045d3 100644 --- a/coordinator/modules/usess/include/usess_conf_common.hh +++ b/coordinator/modules/usess/include/usess_conf_common.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -28,8 +28,7 @@ typedef struct { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessConfCommon -{ +class UsessConfCommon { public: UsessConfCommon(void); ~UsessConfCommon(void); diff --git a/coordinator/modules/usess/include/usess_conf_enable.hh b/coordinator/modules/usess/include/usess_conf_enable.hh index fb0f4252..29ad2e28 100644 --- a/coordinator/modules/usess/include/usess_conf_enable.hh +++ b/coordinator/modules/usess/include/usess_conf_enable.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,6 +10,7 @@ #ifndef _USESS_CONF_ENABLE_HH_ #define _USESS_CONF_ENABLE_HH_ +#include #include "usess_def.hh" namespace unc { @@ -32,8 +33,7 @@ typedef struct { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessConfEnable -{ +class UsessConfEnable { public: // ----------------------------- // class method. diff --git a/coordinator/modules/usess/include/usess_conf_session.hh b/coordinator/modules/usess/include/usess_conf_session.hh index bbd0416b..7e0fc173 100644 --- a/coordinator/modules/usess/include/usess_conf_session.hh +++ b/coordinator/modules/usess/include/usess_conf_session.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -63,8 +63,7 @@ typedef struct { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessConfSession -{ +class UsessConfSession { public: UsessConfSession(void); ~UsessConfSession(void); diff --git a/coordinator/modules/usess/include/usess_conf_user.hh b/coordinator/modules/usess/include/usess_conf_user.hh index 47cb5b69..0a1876b2 100644 --- a/coordinator/modules/usess/include/usess_conf_user.hh +++ b/coordinator/modules/usess/include/usess_conf_user.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,6 +10,7 @@ #ifndef _USESS_CONF_USER_HH_ #define _USESS_CONF_USER_HH_ +#include #include "usess_def.hh" namespace unc { @@ -37,9 +38,9 @@ typedef struct { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessConfUser -{ -public: +class UsessConfUser { +public + : UsessConfUser(void); ~UsessConfUser(void); diff --git a/coordinator/modules/usess/include/usess_def.hh b/coordinator/modules/usess/include/usess_def.hh index 1ecfbe3d..ab787ba6 100644 --- a/coordinator/modules/usess/include/usess_def.hh +++ b/coordinator/modules/usess/include/usess_def.hh @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -96,4 +96,4 @@ namespace usess { } // namespace usess } // namespace unc -#endif // _USESS_DEF_HH_ +#endif // _USESS_DEF_HH_ diff --git a/coordinator/modules/usess/include/usess_enable.hh b/coordinator/modules/usess/include/usess_enable.hh index 20ee598a..faf9c161 100644 --- a/coordinator/modules/usess/include/usess_enable.hh +++ b/coordinator/modules/usess/include/usess_enable.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -38,8 +38,7 @@ typedef enum { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessEnable : public UsessBaseCommon -{ +class UsessEnable : public UsessBaseCommon { public: UsessEnable(mgmtdb::MgmtDatabase& database); ~UsessEnable(void); diff --git a/coordinator/modules/usess/include/usess_session.hh b/coordinator/modules/usess/include/usess_session.hh index 9cc625f9..fad45e68 100644 --- a/coordinator/modules/usess/include/usess_session.hh +++ b/coordinator/modules/usess/include/usess_session.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -28,8 +28,7 @@ namespace usess { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessSession : public UsessBaseCommon -{ +class UsessSession : public UsessBaseCommon { public: UsessSession(const UsessConfSession& conf); UsessSession(const UsessConfSession& conf, diff --git a/coordinator/modules/usess/include/usess_sessions.hh b/coordinator/modules/usess/include/usess_sessions.hh index 484283cd..2161dbaf 100644 --- a/coordinator/modules/usess/include/usess_sessions.hh +++ b/coordinator/modules/usess/include/usess_sessions.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,6 +10,8 @@ #ifndef _USESS_SESSIONS_HH_ #define _USESS_SESSIONS_HH_ +#include +#include #include "usess_def.hh" #include "usess_conf_session.hh" #include "usess_session.hh" @@ -51,8 +53,7 @@ typedef std::vector usess_session_list_v; // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessSessions -{ +class UsessSessions { public: UsessSessions(void); ~UsessSessions(void); @@ -92,7 +93,6 @@ class UsessSessions UsessConfSession conf_; // allocated session id. uint32_t allocated_sess_id_[ID_NUM]; - }; } // namespace usess diff --git a/coordinator/modules/usess/include/usess_user.hh b/coordinator/modules/usess/include/usess_user.hh index 07ab9e07..373dedb6 100644 --- a/coordinator/modules/usess/include/usess_user.hh +++ b/coordinator/modules/usess/include/usess_user.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,6 +10,7 @@ #ifndef _USESS_USER_HH_ #define _USESS_USER_HH_ +#include #include "usess_def.hh" #include "usess_conf_user.hh" #include "mgmt_database.hh" @@ -42,8 +43,7 @@ typedef enum { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessUser : public UsessBaseCommon -{ +class UsessUser : public UsessBaseCommon { public: // ----------------------------- // class method. diff --git a/coordinator/modules/usess/include/usess_users.hh b/coordinator/modules/usess/include/usess_users.hh index 17b399f9..eb55867c 100644 --- a/coordinator/modules/usess/include/usess_users.hh +++ b/coordinator/modules/usess/include/usess_users.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -10,7 +10,7 @@ #ifndef _USESS_USERS_HH_ #define _USESS_USERS_HH_ - +#include #include "usess_def.hh" #include "usess_conf_user.hh" #include "usess_user.hh" @@ -21,8 +21,7 @@ namespace usess { // ------------------------------------------------------------- // Class declaration. // ------------------------------------------------------------- -class UsessUsers -{ +class UsessUsers { public: UsessUsers(mgmtdb::MgmtDatabase& database); ~UsessUsers(void); diff --git a/coordinator/modules/usess/usess.cc b/coordinator/modules/usess/usess.cc index ff3d50d3..9cf8642a 100644 --- a/coordinator/modules/usess/usess.cc +++ b/coordinator/modules/usess/usess.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -16,8 +16,7 @@ namespace usess { #define CLASS_NAME "Usess" // IPC handler function table. -usess_ipc_err_e (Usess::*Usess::IpcHandler[])(pfc::core::ipc::ServerSession&) = -{ +usess_ipc_err_e (Usess::*Usess::IpcHandler[])(pfc::core::ipc::ServerSession&) = { &Usess::UsessSessAddHandler, &Usess::UsessSessDelHandler, &Usess::UsessSessTypeDelHandler, @@ -35,11 +34,10 @@ usess_ipc_err_e (Usess::*Usess::IpcHandler[])(pfc::core::ipc::ServerSession&) = * @brief Constructor. * @param attr : module attribute. * @return nothing. - * @note + * @note */ Usess::Usess(const pfc_modattr_t *attr) - : pfc::core::Module(attr), users_(database_), enable_(database_) -{ + : pfc::core::Module(attr), users_(database_), enable_(database_) { event_id_conf_reload_ = EVHANDLER_ID_INVALID; } @@ -48,10 +46,9 @@ Usess::Usess(const pfc_modattr_t *attr) * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -Usess::~Usess(void) -{ +Usess::~Usess(void) { } @@ -60,10 +57,9 @@ Usess::~Usess(void) * @param nothing. * @return PFC_TRUE : Success. * PFC_FALSE : Failure. - * @note + * @note */ -pfc_bool_t Usess::init(void) -{ +pfc_bool_t Usess::init(void) { // event mask value. pfc::core::EventMask reload_mask(PFC_MODEVENT_TYPE_RELOAD); // event handler. @@ -116,10 +112,12 @@ pfc_bool_t Usess::init(void) L_FUNCTION_COMPLETE(); return PFC_TRUE; -unlock_end: +unlock_end + : USESS_UNLOCK(); -proc_end: +proc_end + : fini(); return PFC_FALSE; } @@ -130,10 +128,9 @@ proc_end: * @param nothing. * @return PFC_TRUE : Success. * PFC_FALSE : Failure. - * @note + * @note */ -pfc_bool_t Usess::fini(void) -{ +pfc_bool_t Usess::fini(void) { // area of return value. int remove_handler_rtn = -1; pfc_bool_t err_code = PFC_TRUE; @@ -192,11 +189,10 @@ pfc_bool_t Usess::fini(void) * USESS_E_INVALID_USER : Invalid user name. * USESS_E_INVALID_PASSWD : Invalid password. * USESS_E_SESS_OVER : Over the number of user sessions. - * @note + * @note */ pfc_ipcresp_t Usess::ipcService(pfc::core::ipc::ServerSession &ipcsess, - pfc_ipcid_t service) -{ + pfc_ipcid_t service) { // area of return value. usess_ipc_err_e rtn = USESS_E_NG; @@ -216,7 +212,8 @@ pfc_ipcresp_t Usess::ipcService(pfc::core::ipc::ServerSession &ipcsess, L_FUNCTION_COMPLETE(); rtn = USESS_E_OK; -proc_end: +proc_end + : return static_cast(rtn); } @@ -225,10 +222,9 @@ proc_end: * @brief Receive of configuration reload event. * @param event : [IN] event object. * @return nothing. - * @note + * @note */ -void Usess::ReloadConfEventHandler(pfc::core::Event* event) -{ +void Usess::ReloadConfEventHandler(pfc::core::Event* event) { pfc_evtype_t event_type = 0; // area of return value. usess_ipc_err_e err_code = USESS_E_OK; @@ -247,7 +243,7 @@ void Usess::ReloadConfEventHandler(pfc::core::Event* event) // Configuration file reload. // ------------------------------------------------------------- int_rtn = reloadConf(); - GOTO_IF((int_rtn != 0), proc_end, + GOTO_IF((int_rtn != 0), proc_end, "Failed reload configuration. err=%d (%s)", int_rtn, strerror(int_rtn)); @@ -277,7 +273,8 @@ void Usess::ReloadConfEventHandler(pfc::core::Event* event) } return; -proc_end: +proc_end + : return; } @@ -286,11 +283,10 @@ proc_end: * @brief Called from IPC service handler, and add the session. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessSessAddHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { // area of IPC send/receive data. usess_ipc_req_sess_add_t receive_data; usess_ipc_sess_id_t send_data; @@ -356,11 +352,13 @@ usess_ipc_err_e Usess::UsessSessAddHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : database_.Disconnect(); USESS_UNLOCK(); -proc_end: +proc_end + : // erase of password data area. memset(receive_data.sess_passwd, 0x00, sizeof(receive_data.sess_passwd)); memset(passwd, 0x00, sizeof(passwd)); @@ -373,11 +371,10 @@ proc_end: * @brief Called from IPC service handler, and delete the session. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessSessDelHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_req_sess_del_t receive_data; int ipc_rtn = -1; @@ -410,10 +407,12 @@ usess_ipc_err_e Usess::UsessSessDelHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : USESS_UNLOCK(); -proc_end: +proc_end + : return err_code; } @@ -423,11 +422,10 @@ proc_end: * and delete the session of Specified session type. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessSessTypeDelHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_req_sess_type_del_t receive_data; int ipc_rtn = -1; @@ -454,10 +452,12 @@ usess_ipc_err_e Usess::UsessSessTypeDelHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : USESS_UNLOCK(); -proc_end: +proc_end + : return err_code; } @@ -465,11 +465,10 @@ proc_end: * @brief Called from IPC service handler, perform enable authentication. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessEnableHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_req_sess_enable_t receive_data; UsessSession *sess = NULL; char passwd[73] = {'\0'}; @@ -524,11 +523,13 @@ usess_ipc_err_e Usess::UsessEnableHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : database_.Disconnect(); USESS_UNLOCK(); -proc_end: +proc_end + : // erase of password data area. memset(receive_data.enable_passwd, 0x00, sizeof(receive_data.enable_passwd)); memset(passwd, 0x00, sizeof(passwd)); @@ -541,11 +542,10 @@ proc_end: * @brief Called from IPC service handler, perform disable authentication. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessDisableHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_sess_id_t receive_data; UsessSession *sess = NULL; @@ -582,10 +582,12 @@ usess_ipc_err_e Usess::UsessDisableHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : USESS_UNLOCK(); -proc_end: +proc_end + : return err_code; } @@ -594,11 +596,10 @@ proc_end: * @brief Called from IPC service handler, send session count. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessSessCountHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_sess_id_t receive_data; uint32_t send_data; @@ -635,10 +636,12 @@ usess_ipc_err_e Usess::UsessSessCountHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : USESS_UNLOCK(); -proc_end: +proc_end + : return err_code; } @@ -647,11 +650,10 @@ proc_end: * @brief Called from IPC service handler, send session list. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessSessListHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_sess_id_t receive_data; usess_session_list_v info_list; @@ -692,10 +694,12 @@ usess_ipc_err_e Usess::UsessSessListHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : USESS_UNLOCK(); -proc_end: +proc_end + : return err_code; } @@ -704,11 +708,10 @@ proc_end: * @brief Called from IPC service handler, send session detail. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UsessSessDetailHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_req_sess_detail_t receive_data; usess_session_list_v info_list; @@ -747,10 +750,12 @@ usess_ipc_err_e Usess::UsessSessDetailHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : USESS_UNLOCK(); -proc_end: +proc_end + : return err_code; } @@ -759,11 +764,10 @@ proc_end: * @brief Called from IPC service handler, change user password. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UserUserPasswdHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_req_user_passwd_t receive_data; UsessUser user(database_); UsessSession *sess = NULL; @@ -822,11 +826,13 @@ usess_ipc_err_e Usess::UserUserPasswdHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : database_.Disconnect(); USESS_UNLOCK(); -proc_end: +proc_end + : // erase of password data area. memset(receive_data.sess_passwd, 0x00, sizeof(receive_data.sess_passwd)); memset(passwd, 0x00, sizeof(passwd)); @@ -839,11 +845,10 @@ proc_end: * @brief Called from IPC service handler, change enable password. * @param ipcsess : [IN/OUT] IPC service handler context. * @return Processing result. - * @note + * @note */ usess_ipc_err_e Usess::UserEnablePasswdHandler( - pfc::core::ipc::ServerSession& ipcsess) -{ + pfc::core::ipc::ServerSession& ipcsess) { usess_ipc_req_enable_passwd_t receive_data; UsessSession *sess = NULL; char passwd[73] = {'\0'}; @@ -893,11 +898,13 @@ usess_ipc_err_e Usess::UserEnablePasswdHandler( L_FUNCTION_COMPLETE(); return USESS_E_OK; -unlock_end: +unlock_end + : database_.Disconnect(); USESS_UNLOCK(); -proc_end: +proc_end + : // erase of password data area. memset(receive_data.enable_passwd, 0x00, sizeof(receive_data.enable_passwd)); memset(passwd, 0x00, sizeof(passwd)); @@ -906,7 +913,7 @@ proc_end: } -} // namespace usess -} // namespace unc +} // namespace usess +} // namespace unc PFC_MODULE_IPC_DECL(unc::usess::Usess, kUsessIpcNipcs); diff --git a/coordinator/modules/usess/usess_base_common.cc b/coordinator/modules/usess/usess_base_common.cc index 517a8f5e..bab5334a 100644 --- a/coordinator/modules/usess/usess_base_common.cc +++ b/coordinator/modules/usess/usess_base_common.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -23,20 +23,18 @@ namespace usess { * @brief Constructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessBaseCommon::UsessBaseCommon(void) -{ +UsessBaseCommon::UsessBaseCommon(void) { } /* * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessBaseCommon::~UsessBaseCommon(void) -{ +UsessBaseCommon::~UsessBaseCommon(void) { } /* @@ -46,11 +44,10 @@ UsessBaseCommon::~UsessBaseCommon(void) * hash_type : [IN] hash type. * hash_str : [OUT]hash string. * @return nothing. - * @note + * @note */ void UsessBaseCommon::Hash(const char* str, const std::string& hash_key, - const hash_type_e hash_type, std::string& hash_str) const -{ + const hash_type_e hash_type, std::string& hash_str) const { char salt[128]; // parameter check. @@ -76,11 +73,10 @@ void UsessBaseCommon::Hash(const char* str, const std::string& hash_key, * hash_type : [IN] hash type. * hash_str : [OUT]hash string. * @return nothing. - * @note + * @note */ void UsessBaseCommon::Hash(const char* str, const pfc_timespec_t& hash_key, - const hash_type_e hash_type, std::string& hash_str) const -{ + const hash_type_e hash_type, std::string& hash_str) const { char salt[128]; // parameter check. @@ -104,11 +100,10 @@ void UsessBaseCommon::Hash(const char* str, const pfc_timespec_t& hash_key, * salt : [IN] hash salt. * hash_str : [OUT]hash string. * @return nothing. - * @note + * @note */ void UsessBaseCommon::Hash(const char* str, - const std::string& salt, std::string& hash_str) const -{ + const std::string& salt, std::string& hash_str) const { // parameter check. if (salt.empty()) { hash_str.erase(); @@ -126,11 +121,10 @@ void UsessBaseCommon::Hash(const char* str, * hash_str : [IN] comparison hash string. * salt : [IN] hash salt. * @return nothing. - * @note + * @note */ bool UsessBaseCommon::CheckDigest(const char* str, - const std::string& hash_str, const std::string& salt) const -{ + const std::string& hash_str, const std::string& salt) const { std::string cmp_str; @@ -150,11 +144,10 @@ bool UsessBaseCommon::CheckDigest(const char* str, * regular_str : [IN] regular pattern string. * @return true : match. * false : no match. - * @note + * @note */ bool UsessBaseCommon::CheckRegular(const char* check_str, - const std::string& regular_str) const -{ + const std::string& regular_str) const { regex_t preg; size_t nmatch = strlen(check_str) + 1; regmatch_t pmatch[nmatch]; @@ -182,16 +175,16 @@ bool UsessBaseCommon::CheckRegular(const char* check_str, // Check the number of matched characters. GOTO_IF((pmatch[0].rm_so != 0 || pmatch[0].rm_eo != (int)strlen(check_str)), - err_end, "%s", "no match."); + err_end, "%s", "no match."); regfree(&preg); L_FUNCTION_COMPLETE(); return true; -err_end: +err_end + : regfree(&preg); return false; - } } // namespace usess diff --git a/coordinator/modules/usess/usess_conf_common.cc b/coordinator/modules/usess/usess_conf_common.cc index a6d91b36..c1eceb68 100644 --- a/coordinator/modules/usess/usess_conf_common.cc +++ b/coordinator/modules/usess/usess_conf_common.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -31,10 +31,9 @@ const usess_conf_common_t UsessConfCommon::kDefaultConf_ = { * @brief Constructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessConfCommon::UsessConfCommon(void) -{ +UsessConfCommon::UsessConfCommon(void) { data_ = kDefaultConf_; } @@ -42,20 +41,18 @@ UsessConfCommon::UsessConfCommon(void) * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessConfCommon::~UsessConfCommon(void) -{ +UsessConfCommon::~UsessConfCommon(void) { } /* * @brief Configuration file data load. * @param nothing. * @return Processing result. - * @note + * @note */ -usess_ipc_err_e UsessConfCommon::LoadConf(void) -{ +usess_ipc_err_e UsessConfCommon::LoadConf(void) { pfc::core::ModuleConfBlock conf_block(kConfBlockName_); @@ -83,10 +80,9 @@ usess_ipc_err_e UsessConfCommon::LoadConf(void) * @brief configuration data access. * @param nothing. * @return Processing result. - * @note + * @note */ -const usess_conf_common_t& UsessConfCommon::data(void) const -{ +const usess_conf_common_t& UsessConfCommon::data(void) const { return data_; } diff --git a/coordinator/modules/usess/usess_conf_enable.cc b/coordinator/modules/usess/usess_conf_enable.cc index a21ae9e2..d39c9adc 100644 --- a/coordinator/modules/usess/usess_conf_enable.cc +++ b/coordinator/modules/usess/usess_conf_enable.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -35,10 +35,9 @@ const usess_conf_enable_t UsessConfEnable::kDefaultConf_ = { * @brief Constructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessConfEnable::UsessConfEnable(void) -{ +UsessConfEnable::UsessConfEnable(void) { data_ = kDefaultConf_; } @@ -47,10 +46,9 @@ UsessConfEnable::UsessConfEnable(void) * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessConfEnable::~UsessConfEnable(void) -{ +UsessConfEnable::~UsessConfEnable(void) { } @@ -58,10 +56,9 @@ UsessConfEnable::~UsessConfEnable(void) * @brief Configuration file data load. * @param nothing. * @return Processing result. - * @note + * @note */ -usess_ipc_err_e UsessConfEnable::LoadConf(void) -{ +usess_ipc_err_e UsessConfEnable::LoadConf(void) { pfc::core::ModuleConfBlock conf_block(kConfBlockName_); @@ -92,10 +89,9 @@ usess_ipc_err_e UsessConfEnable::LoadConf(void) * @brief configuration data access. * @param nothing. * @return Processing result. - * @note + * @note */ -const usess_conf_enable_t& UsessConfEnable::data(void) const -{ +const usess_conf_enable_t& UsessConfEnable::data(void) const { return data_; } diff --git a/coordinator/modules/usess/usess_conf_session.cc b/coordinator/modules/usess/usess_conf_session.cc index 89ed58d7..49167b72 100644 --- a/coordinator/modules/usess/usess_conf_session.cc +++ b/coordinator/modules/usess/usess_conf_session.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -26,8 +26,7 @@ const char* UsessConfSession::kConfMapKey_[ID_NUM] = {"cli", "web_api", "web_ui", "fixed"}; // configuration data default value. -const usess_conf_session_t UsessConfSession::UsessConfSession::kDefaultConf_ = -{ +const usess_conf_session_t UsessConfSession::UsessConfSession::kDefaultConf_ = { {true, 64}, // .global {{{ 1, 127}, {true, 16}}, // .local[0] CLI connect. {{1024, 65535}, {true, 64}}, // .local[1] WEB API connect. @@ -45,8 +44,7 @@ const usess_conf_session_t UsessConfSession::UsessConfSession::kDefaultConf_ = * @return nothing. * @note */ -UsessConfSession::UsessConfSession(void) -{ +UsessConfSession::UsessConfSession(void) { data_ = kDefaultConf_; } @@ -57,8 +55,7 @@ UsessConfSession::UsessConfSession(void) * @return nothing. * @note */ -UsessConfSession::~UsessConfSession(void) -{ +UsessConfSession::~UsessConfSession(void) { } @@ -68,8 +65,7 @@ UsessConfSession::~UsessConfSession(void) * @return Processing result. * @note */ -usess_ipc_err_e UsessConfSession::LoadConf(void) -{ +usess_ipc_err_e UsessConfSession::LoadConf(void) { pfc::core::ModuleConfBlock global(kConfBlockName_); pfc::core::ModuleConfBlock cli(kConfMapName_, kConfMapKey_[ID_CLI]); @@ -137,8 +133,7 @@ usess_ipc_err_e UsessConfSession::LoadConf(void) * @return Processing result. * @note */ -const usess_conf_session_t& UsessConfSession::data(void) const -{ +const usess_conf_session_t& UsessConfSession::data(void) const { return data_; } diff --git a/coordinator/modules/usess/usess_conf_user.cc b/coordinator/modules/usess/usess_conf_user.cc index 083a14d8..a05eea84 100644 --- a/coordinator/modules/usess/usess_conf_user.cc +++ b/coordinator/modules/usess/usess_conf_user.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -24,7 +24,7 @@ const char* UsessConfUser::kConfBlockName_ = "usess_conf_user"; const usess_conf_user_t UsessConfUser::kDefaultConf_ = { HASH_TYPE_MD5, // .hash_type 32, // .user_length - "[[:alpha:]_][[:alnum:]_]+",// .user_regular + "[[:alpha:]_][[:alnum:]_]+", // .user_regular 72, // .passwd_length "[[:alnum:][:graph:]]+" // .passwd_regular }; @@ -36,10 +36,9 @@ const usess_conf_user_t UsessConfUser::kDefaultConf_ = { * @brief Constructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessConfUser::UsessConfUser(void) -{ +UsessConfUser::UsessConfUser(void) { data_ = kDefaultConf_; } @@ -48,10 +47,9 @@ UsessConfUser::UsessConfUser(void) * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessConfUser::~UsessConfUser(void) -{ +UsessConfUser::~UsessConfUser(void) { } @@ -59,10 +57,9 @@ UsessConfUser::~UsessConfUser(void) * @brief Configuration file data load. * @param nothing. * @return Processing result. - * @note + * @note */ -usess_ipc_err_e UsessConfUser::LoadConf(void) -{ +usess_ipc_err_e UsessConfUser::LoadConf(void) { pfc::core::ModuleConfBlock conf_block(kConfBlockName_); @@ -97,10 +94,9 @@ usess_ipc_err_e UsessConfUser::LoadConf(void) * @brief configuration data access. * @param nothing. * @return Processing result. - * @note + * @note */ -const usess_conf_user_t& UsessConfUser::data(void) const -{ +const usess_conf_user_t& UsessConfUser::data(void) const { return data_; } diff --git a/coordinator/modules/usess/usess_enable.cc b/coordinator/modules/usess/usess_enable.cc index a668b4b7..5e4a2fa1 100644 --- a/coordinator/modules/usess/usess_enable.cc +++ b/coordinator/modules/usess/usess_enable.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -21,10 +21,9 @@ namespace usess { * @brief Constructor. * @param database : database instance. * @return nothing. - * @note + * @note */ -UsessEnable::UsessEnable(mgmtdb::MgmtDatabase& database) : database_(database) -{ +UsessEnable::UsessEnable(mgmtdb::MgmtDatabase& database) : database_(database) { } @@ -32,10 +31,9 @@ UsessEnable::UsessEnable(mgmtdb::MgmtDatabase& database) : database_(database) * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessEnable::~UsessEnable(void) -{ +UsessEnable::~UsessEnable(void) { } @@ -44,10 +42,9 @@ UsessEnable::~UsessEnable(void) * @param nothing. * @return true : success * false : failure - * @note + * @note */ -bool UsessEnable::Init(void) -{ +bool UsessEnable::Init(void) { usess_ipc_err_e rtn = USESS_E_NG; @@ -65,10 +62,9 @@ bool UsessEnable::Init(void) * @param nothing. * @return true : success * false : failure - * @note + * @note */ -bool UsessEnable::Fini(void) -{ +bool UsessEnable::Fini(void) { return true; } @@ -80,15 +76,13 @@ bool UsessEnable::Fini(void) * @return USESS_E_OK : Privilege success * USESS_E_INVALID_PRIVILEGE : Invalid privilege. * USESS_E_NG : Error - * @note + * @note */ usess_ipc_err_e UsessEnable::Privilege(const enable_privilege_e mode, - const usess_ipc_res_sess_info_t& sess) -{ + const usess_ipc_res_sess_info_t& sess) { L_FUNCTION_START(); - switch(mode) { - + switch (mode) { // Enable authority. case kPrivilegeEnable: @@ -128,11 +122,10 @@ usess_ipc_err_e UsessEnable::Privilege(const enable_privilege_e mode, * @return USESS_E_OK : Authentication success * USESS_E_INVALID_PASSWD : Invalid password * USESS_E_NG : Error - * @note + * @note */ usess_ipc_err_e UsessEnable::Authenticate(const enable_authenticate_e mode, - const usess_ipc_res_sess_info_t& sess, const char* passwd) -{ + const usess_ipc_res_sess_info_t& sess, const char* passwd) { int16_t fetch_type[] = {SQL_INTEGER, SQL_VARCHAR}; std::string uname; std::string sql_statement; @@ -143,8 +136,7 @@ usess_ipc_err_e UsessEnable::Authenticate(const enable_authenticate_e mode, L_FUNCTION_START(); - switch(mode) { - + switch (mode) { // Enable password Authentication. case kAuthenticateEnable: @@ -203,10 +195,9 @@ usess_ipc_err_e UsessEnable::Authenticate(const enable_authenticate_e mode, * @return USESS_E_OK : Change password success * USESS_E_INVALID_PASSWD : Invalid password * USESS_E_NG : Error - * @note + * @note */ -usess_ipc_err_e UsessEnable::ChangePassword(const char* passwd) -{ +usess_ipc_err_e UsessEnable::ChangePassword(const char* passwd) { mgmtdb::db_err_e db_rtn = mgmtdb::DB_E_NG; std::string sql_statement; std::string hash_passwd; @@ -253,10 +244,9 @@ usess_ipc_err_e UsessEnable::ChangePassword(const char* passwd) * @param nothing. * @return USESS_E_OK : Success * USESS_E_NG : Error - * @note + * @note */ -usess_ipc_err_e UsessEnable::LoadConf(void) -{ +usess_ipc_err_e UsessEnable::LoadConf(void) { usess_ipc_err_e func_rtn; @@ -276,10 +266,9 @@ usess_ipc_err_e UsessEnable::LoadConf(void) * @param nothing. * @return true : check ok. * false : abnormal password. - * @note + * @note */ -bool UsessEnable::CheckPassword(const char* passwd) -{ +bool UsessEnable::CheckPassword(const char* passwd) { // length check. if (strlen(passwd) > conf_.data().passwd_length) return false; // character code check. diff --git a/coordinator/modules/usess/usess_session.cc b/coordinator/modules/usess/usess_session.cc index 3346dc47..93de6494 100644 --- a/coordinator/modules/usess/usess_session.cc +++ b/coordinator/modules/usess/usess_session.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -18,15 +18,13 @@ namespace usess { * @brief Constructor. * @param conf : [IN] configuration data. * @return nothing. - * @note + * @note */ -UsessSession::UsessSession(const UsessConfSession& conf) : conf_(conf) -{ +UsessSession::UsessSession(const UsessConfSession& conf) : conf_(conf) { } UsessSession::UsessSession(const UsessConfSession& conf, - const usess_ipc_res_sess_info_t& sess) : conf_(conf) -{ + const usess_ipc_res_sess_info_t& sess) : conf_(conf) { sess_ = sess; } @@ -35,10 +33,9 @@ UsessSession::UsessSession(const UsessConfSession& conf, * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessSession::~UsessSession(void) -{ +UsessSession::~UsessSession(void) { } /* @@ -46,10 +43,9 @@ UsessSession::~UsessSession(void) * @param sess_mode : [IN] session mode. * @return USESS_E_OK : Success * USESS_E_NG : Error - * @note + * @note */ -usess_ipc_err_e UsessSession::TransitMode(const usess_mode_e sess_mode) -{ +usess_ipc_err_e UsessSession::TransitMode(const usess_mode_e sess_mode) { tc::TcApiRet tc_rtn = tc::TC_API_COMMON_FAILURE; tc::TcModule *tc_instance = NULL; @@ -63,7 +59,6 @@ usess_ipc_err_e UsessSession::TransitMode(const usess_mode_e sess_mode) // TC notification if (sess_mode == USESS_MODE_OPER) { - // Get TC module instance. tc_instance = (tc::TcModule *)pfc::core::Module::getInstance("tc"); RETURN_IF((tc_instance == NULL), USESS_E_NG, @@ -71,9 +66,9 @@ usess_ipc_err_e UsessSession::TransitMode(const usess_mode_e sess_mode) // release configuration mode session. tc_rtn = tc_instance->TcReleaseSession(sess_.sess.id); - WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && tc_rtn == tc::TC_INVALID_PARAM), + WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && + tc_rtn == tc::TC_INVALID_PARAM), "Without notification to TC. id=%d err=%d", sess_.sess.id, tc_rtn); - } // modify session mode. @@ -88,10 +83,9 @@ usess_ipc_err_e UsessSession::TransitMode(const usess_mode_e sess_mode) * @brief Get session data. * @param nothing. * @return session data. - * @note + * @note */ -const usess_ipc_res_sess_info_t& UsessSession::sess(void) -{ +const usess_ipc_res_sess_info_t& UsessSession::sess(void) { return sess_; } diff --git a/coordinator/modules/usess/usess_sessions.cc b/coordinator/modules/usess/usess_sessions.cc index 0566fd74..0c83c29a 100644 --- a/coordinator/modules/usess/usess_sessions.cc +++ b/coordinator/modules/usess/usess_sessions.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -20,13 +20,11 @@ namespace usess { * @return nothing. * @note */ -UsessSessions::UsessSessions(void) -{ +UsessSessions::UsessSessions(void) { table_.clear(); for (int loop = 0; loop < ID_NUM; ++loop) { allocated_sess_id_[loop] = USESS_ID_INVALID; } - } /* @@ -35,8 +33,7 @@ UsessSessions::UsessSessions(void) * @return nothing. * @note */ -UsessSessions::~UsessSessions(void) -{ +UsessSessions::~UsessSessions(void) { } /* @@ -46,8 +43,7 @@ UsessSessions::~UsessSessions(void) * false : failure * @note */ -bool UsessSessions::Init(void) -{ +bool UsessSessions::Init(void) { usess_ipc_err_e rtn = USESS_E_NG; L_FUNCTION_START(); @@ -73,8 +69,7 @@ bool UsessSessions::Init(void) * false : failure * @note */ -bool UsessSessions::Fini(void) -{ +bool UsessSessions::Fini(void) { usess_ipc_err_e func_rtn = USESS_E_NG; @@ -104,8 +99,7 @@ bool UsessSessions::Fini(void) * @note */ usess_ipc_err_e UsessSessions::Add(const usess_ipc_req_sess_add_t& add_sess, - UsessUser user, usess_ipc_sess_id_t& sess_id) -{ + UsessUser user, usess_ipc_sess_id_t& sess_id) { usess_ipc_res_sess_info_t sess_data; usess_type_e sess_type; int rtn = -1; @@ -168,8 +162,7 @@ usess_ipc_err_e UsessSessions::Add(const usess_ipc_req_sess_add_t& add_sess, * USESS_E_NG : Error * @note */ -usess_ipc_err_e UsessSessions::Del(const usess_ipc_sess_id_t& target) -{ +usess_ipc_err_e UsessSessions::Del(const usess_ipc_sess_id_t& target) { tc::TcApiRet tc_rtn = tc::TC_API_COMMON_FAILURE; tc::TcModule *tc_instance = NULL; // TC module instance. @@ -186,7 +179,8 @@ usess_ipc_err_e UsessSessions::Del(const usess_ipc_sess_id_t& target) // release configuration mode session. tc_rtn = tc_instance->TcReleaseSession(target.id); - WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && tc_rtn != tc::TC_INVALID_PARAM), + WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && + tc_rtn != tc::TC_INVALID_PARAM), "Without notification to TC. id=%d err=%d", target.id, tc_rtn); // session delete. @@ -205,8 +199,7 @@ usess_ipc_err_e UsessSessions::Del(const usess_ipc_sess_id_t& target) * USESS_E_NG : Error * @note */ -usess_ipc_err_e UsessSessions::Del(const usess_type_e target_sess_type) -{ +usess_ipc_err_e UsessSessions::Del(const usess_type_e target_sess_type) { usess_session_table_t::iterator it; tc::TcApiRet tc_rtn = tc::TC_API_COMMON_FAILURE; tc::TcModule *tc_instance = NULL; // TC module instance. @@ -232,7 +225,8 @@ usess_ipc_err_e UsessSessions::Del(const usess_type_e target_sess_type) // TC notification. release configuration mode session. tc_rtn = tc_instance->TcReleaseSession(it->second.sess().sess.id); - WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && tc_rtn != tc::TC_INVALID_PARAM), + WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && + tc_rtn != tc::TC_INVALID_PARAM), "Without notification to TC. id=%d err=%d", it->second.sess().sess.id, tc_rtn); @@ -254,8 +248,7 @@ usess_ipc_err_e UsessSessions::Del(const usess_type_e target_sess_type) * USESS_E_NG : Error * @note */ -usess_ipc_err_e UsessSessions::Del(void) -{ +usess_ipc_err_e UsessSessions::Del(void) { usess_session_table_t::iterator it; tc::TcApiRet tc_rtn = tc::TC_API_COMMON_FAILURE; tc::TcModule *tc_instance = NULL; // TC module instance. @@ -273,7 +266,8 @@ usess_ipc_err_e UsessSessions::Del(void) for (it = table_.begin(); it != table_.end(); ++it) { // TC notification. release configuration mode session. tc_rtn = tc_instance->TcReleaseSession(it->second.sess().sess.id); - WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && tc_rtn != tc::TC_INVALID_PARAM), + WARN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && + tc_rtn != tc::TC_INVALID_PARAM), "Without notification to TC. id=%d err=%d", it->second.sess().sess.id, tc_rtn); } @@ -296,8 +290,7 @@ usess_ipc_err_e UsessSessions::Del(void) * @note */ usess_ipc_err_e UsessSessions::GetSession( - const usess_ipc_sess_id_t& target, UsessSession** sess) -{ + const usess_ipc_sess_id_t& target, UsessSession** sess) { usess_session_table_t::iterator it; @@ -321,8 +314,7 @@ usess_ipc_err_e UsessSessions::GetSession( * @return session count. * @note */ -uint32_t UsessSessions::GetCount(void) -{ +uint32_t UsessSessions::GetCount(void) { L_FUNCTION_START(); L_FUNCTION_COMPLETE(); return table_.size(); @@ -339,8 +331,7 @@ uint32_t UsessSessions::GetCount(void) * @note */ usess_ipc_err_e UsessSessions::GetList(const usess_ipc_sess_id_t& target, - usess_session_list_v& info_list) -{ + usess_session_list_v& info_list) { usess_session_table_t::iterator it; tc::TcApiRet tc_rtn = tc::TC_API_COMMON_FAILURE; uint32_t session_id = 0; @@ -368,7 +359,7 @@ usess_ipc_err_e UsessSessions::GetList(const usess_ipc_sess_id_t& target, // set configration status. tc_rtn = tc_instance->TcGetConfigSession(&session_id, &config_id); - RETURN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && + RETURN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && tc_rtn != tc::TC_NO_CONFIG_SESSION && tc_rtn != tc::TC_INVALID_UNC_STATE), USESS_E_NG, "Get configuration session to TC. err=%d", tc_rtn); @@ -389,8 +380,7 @@ usess_ipc_err_e UsessSessions::GetList(const usess_ipc_sess_id_t& target, * USESS_E_NG : Error * @note */ -usess_ipc_err_e UsessSessions::GetList(usess_session_list_v& info_list) -{ +usess_ipc_err_e UsessSessions::GetList(usess_session_list_v& info_list) { usess_session_table_t::iterator it; tc::TcApiRet tc_rtn = tc::TC_API_COMMON_FAILURE; uint32_t session_id = 0; @@ -407,7 +397,7 @@ usess_ipc_err_e UsessSessions::GetList(usess_session_list_v& info_list) // set configration status. tc_rtn = tc_instance->TcGetConfigSession(&session_id, &config_id); - RETURN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && + RETURN_IF((tc_rtn != tc::TC_API_COMMON_SUCCESS && tc_rtn != tc::TC_NO_CONFIG_SESSION && tc_rtn != tc::TC_INVALID_UNC_STATE), USESS_E_NG, "Get configuration session to TC. err=%d", tc_rtn); @@ -443,8 +433,7 @@ usess_ipc_err_e UsessSessions::GetList(usess_session_list_v& info_list) * @note */ usess_ipc_err_e UsessSessions::Privilege(const session_privilege_e mode, - const usess_ipc_sess_id_t& current, const usess_ipc_sess_id_t& target) -{ + const usess_ipc_sess_id_t& current, const usess_ipc_sess_id_t& target) { usess_session_table_t::iterator current_it; usess_ipc_err_e err_code = USESS_E_NG; @@ -455,7 +444,6 @@ usess_ipc_err_e UsessSessions::Privilege(const session_privilege_e mode, // check current session for not fixed session ID. if (current.id < conf_.data().local[ID_FIXED].range.start || current.id > conf_.data().local[ID_FIXED].range.end) { - // get current session. current_it = table_.find(current.id); RETURN_IF((current_it == table_.end()), USESS_E_INVALID_SESSID, @@ -479,7 +467,7 @@ usess_ipc_err_e UsessSessions::Privilege(const session_privilege_e mode, // Privilege check. err_code = USESS_E_INVALID_PRIVILEGE; - switch(mode) { + switch (mode) { case kPrivilegeSessDel: // delete session. if (current_it->second.sess().sess_mode == USESS_MODE_OPER) { if (current.id == target.id) { @@ -526,8 +514,7 @@ usess_ipc_err_e UsessSessions::Privilege(const session_privilege_e mode, * USESS_E_NG : Error * @note */ -usess_ipc_err_e UsessSessions::LoadConf(void) -{ +usess_ipc_err_e UsessSessions::LoadConf(void) { usess_ipc_err_e func_rtn = USESS_E_NG; L_FUNCTION_START(); @@ -547,8 +534,7 @@ usess_ipc_err_e UsessSessions::LoadConf(void) * @note Do not check the maximum number of sessions. */ const usess_ipc_sess_id_t UsessSessions::GetNewSessionId( - usess_type_e sess_type) -{ + usess_type_e sess_type) { usess_ipc_sess_id_t sess = {0}; usess_conf_session_parameter_t info; uint32_t* allocated_id = NULL; @@ -605,8 +591,7 @@ const usess_ipc_sess_id_t UsessSessions::GetNewSessionId( * false : over session count. * @note */ -bool UsessSessions::CheckSessTypeCount(usess_type_e sess_type) -{ +bool UsessSessions::CheckSessTypeCount(usess_type_e sess_type) { usess_session_table_t::iterator it; usess_session_table_t::iterator lower_it; usess_session_table_t::iterator upper_it; @@ -629,7 +614,6 @@ bool UsessSessions::CheckSessTypeCount(usess_type_e sess_type) // get range of session ID. info = conf_.data().local[CONF_LOCAL_ID(sess_type)]; if (info.connect.limited == true) { - // count number of sessions lower_it = table_.lower_bound(info.range.start); upper_it = table_.upper_bound(info.range.end); @@ -653,8 +637,7 @@ bool UsessSessions::CheckSessTypeCount(usess_type_e sess_type) * false : check ng. * @note */ -bool UsessSessions::IsSessType(usess_type_e type) const -{ +bool UsessSessions::IsSessType(usess_type_e type) const { return ((type == USESS_TYPE_UNKNOWN) ||(type == USESS_TYPE_CLI) || (type == USESS_TYPE_CLI_DAEMON) || (type == USESS_TYPE_WEB_API) || (type == USESS_TYPE_WEB_UI)); @@ -667,8 +650,7 @@ bool UsessSessions::IsSessType(usess_type_e type) const * false : invalid range. * @note */ -bool UsessSessions::IsUserType(user_type_e type) const -{ +bool UsessSessions::IsUserType(user_type_e type) const { return ((type == USER_TYPE_UNKNOWN) || (type == USER_TYPE_OPER) || (type == USER_TYPE_ADMIN)); } diff --git a/coordinator/modules/usess/usess_user.cc b/coordinator/modules/usess/usess_user.cc index e01e353a..5f4c2a09 100644 --- a/coordinator/modules/usess/usess_user.cc +++ b/coordinator/modules/usess/usess_user.cc @@ -1,7 +1,7 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html @@ -27,11 +27,10 @@ namespace usess { * @brief Constructor. * @param database : database instance. * @return nothing. - * @note + * @note */ UsessUser::UsessUser(mgmtdb::MgmtDatabase& database) : name(), passwd_digest(), - expiration(), created(), modified(), database_(database) -{ + expiration(), created(), modified(), database_(database) { // initialize class data member. passwd_type = HASH_TYPE_UNKNOWN; type = USER_TYPE_UNKNOWN; @@ -42,10 +41,9 @@ UsessUser::UsessUser(mgmtdb::MgmtDatabase& database) : name(), passwd_digest(), * @brief Destructor. * @param nothing. * @return nothing. - * @note + * @note */ -UsessUser::~UsessUser(void) -{ +UsessUser::~UsessUser(void) { } /* @@ -54,10 +52,9 @@ UsessUser::~UsessUser(void) * @return USESS_E_OK : Success. * USESS_E_INVALID_USER : Invalid user name. * USESS_E_NG : Error. - * @note + * @note */ -usess_ipc_err_e UsessUser::Retrieve(const std::string& name) -{ +usess_ipc_err_e UsessUser::Retrieve(const std::string& name) { int16_t fetch_type[] = {SQL_VARCHAR, SQL_INTEGER, SQL_VARCHAR, SQL_INTEGER}; usess_ipc_err_e func_rtn = USESS_E_NG; mgmtdb::db_err_e db_rtn = mgmtdb::DB_E_NG; @@ -81,7 +78,8 @@ usess_ipc_err_e UsessUser::Retrieve(const std::string& name) db_rtn = database_.Exec(sql_statement, false, sizeof(fetch_type)/sizeof(fetch_type[0]), fetch_type, exec_value); RETURN_IF((db_rtn != mgmtdb::DB_E_OK || exec_value.size() == 0), - USESS_E_INVALID_USER, "Failure select sql exec(tbl_unc_usess_user). err=%d", + USESS_E_INVALID_USER, + "Failure select sql exec(tbl_unc_usess_user). err=%d", db_rtn); // Save the user data to class members. @@ -101,26 +99,25 @@ usess_ipc_err_e UsessUser::Retrieve(const std::string& name) * USESS_E_INVALID_MODE : Invalid session mode. * USESS_E_INVALID_USER : Invalid user. * USESS_E_NG : Error - * @note + * @note */ usess_ipc_err_e UsessUser::Privilege(const user_privilege_e mode, - const usess_ipc_res_sess_info_t& sess) -{ + const usess_ipc_res_sess_info_t& sess) { std::string uname; L_FUNCTION_START(); - switch(mode) { - + switch (mode) { // Change UNC user password. case kPrivilegeUserPasswd: // check session mode. - RETURN_IF((sess.sess_mode != USESS_MODE_ENABLE), USESS_E_INVALID_MODE, + RETURN_IF(((sess.sess_mode != USESS_MODE_ENABLE) && + ((sess.sess_mode != USESS_MODE_OPER))), USESS_E_INVALID_MODE, "Invalid session mode. [%d]", sess.sess_mode); + // check user name. uname = CAST_IPC_STRING(sess.sess_uname); - // check user name.(only session mode=oper) RETURN_IF((name.compare(uname) != 0), USESS_E_INVALID_USER, "Invalid user name. [%s]", uname.c_str()); break; @@ -144,19 +141,16 @@ usess_ipc_err_e UsessUser::Privilege(const user_privilege_e mode, * USESS_E_INVALID_PASSWD : Invalid password. * USESS_E_INVALID_PRIVILEGE : Invalid privilege. * USESS_E_NG : Error - * @note + * @note */ usess_ipc_err_e UsessUser::Authenticate(const user_authenticate_e mode, const usess_type_e sess_type, - const char* passwd) -{ + const char* passwd) { L_FUNCTION_START(); - switch(mode) { - + switch (mode) { // UNC user authority. case kAuthenticateSessAdd: - // If sessio type is "USESS_TYPE_CLI" or "USESS_TYPE_CLI_DAEMON", // If user name is "UNC_CLI_ADMIN", // password authentication is unnecessary. @@ -192,10 +186,9 @@ usess_ipc_err_e UsessUser::Authenticate(const user_authenticate_e mode, * @return USESS_E_OK : Change password success. * USESS_E_INVALID_PASSWD : Invalid password. * USESS_E_NG : Error. - * @note + * @note */ -usess_ipc_err_e UsessUser::ChangePassword(const char* passwd) -{ +usess_ipc_err_e UsessUser::ChangePassword(const char* passwd) { mgmtdb::db_err_e db_rtn = mgmtdb::DB_E_NG; std::string sql_statement; std::string hash_passwd; @@ -240,10 +233,9 @@ usess_ipc_err_e UsessUser::ChangePassword(const char* passwd) * @param conf_data : configuration data. * @return USESS_E_OK : Success. * USESS_E_NG : Error. - * @note + * @note */ -usess_ipc_err_e UsessUser::SetConf(UsessConfUser& conf_data) -{ +usess_ipc_err_e UsessUser::SetConf(UsessConfUser& conf_data) { conf_ = conf_data; return USESS_E_OK; } @@ -254,10 +246,9 @@ usess_ipc_err_e UsessUser::SetConf(UsessConfUser& conf_data) * @param nothing. * @return true : check ok. * false : abnormal user name. - * @note + * @note */ -bool UsessUser::CheckUserName(const std::string& name) -{ +bool UsessUser::CheckUserName(const std::string& name) { // length check. if (name.length() > conf_.data().user_length) return false; // character code check. @@ -272,10 +263,9 @@ bool UsessUser::CheckUserName(const std::string& name) * @param nothing. * @return true : check ok. * false : abnormal password. - * @note + * @note */ -bool UsessUser::CheckPassword(const char* passwd) -{ +bool UsessUser::CheckPassword(const char* passwd) { // length check. if (strlen(passwd) > conf_.data().passwd_length) return false; // character code check. @@ -291,11 +281,10 @@ bool UsessUser::CheckPassword(const char* passwd) * @return USESS_E_OK : Success. * USESS_E_INVALID_USER : Invalid user name. * USESS_E_NG : Error. - * @note + * @note */ usess_ipc_err_e UsessUser::SetUserData( - const mgmtdb::mgmtdb_variant_v& exec_value) -{ + const mgmtdb::mgmtdb_variant_v& exec_value) { // Error, if count of columns and exec_value.size() is not equal. RETURN_IF((exec_value.size() != 1 || exec_value[0].size() != 4), USESS_E_NG, "abnormal column counts. count=%" PFC_PFMT_SIZE_T ", %" @@ -314,5 +303,5 @@ usess_ipc_err_e UsessUser::SetUserData( return USESS_E_OK; } -} // namespace so } // namespace usess +} // namespace unc diff --git a/coordinator/modules/usess/usess_users.cc b/coordinator/modules/usess/usess_users.cc index a2fac411..8ce620bb 100644 --- a/coordinator/modules/usess/usess_users.cc +++ b/coordinator/modules/usess/usess_users.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -23,8 +23,7 @@ namespace usess { * @return nothing. * @note */ -UsessUsers::UsessUsers(mgmtdb::MgmtDatabase& database) : database_(database) -{ +UsessUsers::UsessUsers(mgmtdb::MgmtDatabase& database) : database_(database) { } @@ -34,8 +33,7 @@ UsessUsers::UsessUsers(mgmtdb::MgmtDatabase& database) : database_(database) * @return nothing. * @note */ -UsessUsers::~UsessUsers(void) -{ +UsessUsers::~UsessUsers(void) { } @@ -46,8 +44,7 @@ UsessUsers::~UsessUsers(void) * false : failure * @note */ -bool UsessUsers::Init(void) -{ +bool UsessUsers::Init(void) { usess_ipc_err_e rtn = USESS_E_NG; @@ -60,7 +57,6 @@ bool UsessUsers::Init(void) L_FUNCTION_COMPLETE(); return true; - } @@ -71,8 +67,7 @@ bool UsessUsers::Init(void) * false : failure * @note */ -bool UsessUsers::Fini(void) -{ +bool UsessUsers::Fini(void) { L_FUNCTION_START(); L_FUNCTION_COMPLETE(); return true; @@ -88,8 +83,7 @@ bool UsessUsers::Fini(void) * USESS_E_NG : Error * @note */ -usess_ipc_err_e UsessUsers::GetUser(const std::string& name, UsessUser& user) -{ +usess_ipc_err_e UsessUsers::GetUser(const std::string& name, UsessUser& user) { usess_ipc_err_e func_rtn; L_FUNCTION_START(); @@ -110,8 +104,7 @@ usess_ipc_err_e UsessUsers::GetUser(const std::string& name, UsessUser& user) * USESS_E_NG : Error * @note */ -usess_ipc_err_e UsessUsers::LoadConf(void) -{ +usess_ipc_err_e UsessUsers::LoadConf(void) { usess_ipc_err_e func_rtn; diff --git a/coordinator/modules/vtncacheutil/confignode.cc b/coordinator/modules/vtncacheutil/confignode.cc index a3126586..839acf24 100644 --- a/coordinator/modules/vtncacheutil/confignode.cc +++ b/coordinator/modules/vtncacheutil/confignode.cc @@ -74,9 +74,9 @@ ConfigNode::ConfigNode() : operation_(0) { * @brief : Method to retrieve each node from the Keytree and populate in the vector * @param[in] : ConfigNode value_list - * @retval : DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_RC_SUCCESS */ -drv_resp_code_t ConfigNode::get_node_list( +UncRespCode ConfigNode::get_node_list( std::vector& value_list) { ODC_FUNC_TRACE; @@ -84,7 +84,7 @@ drv_resp_code_t ConfigNode::get_node_list( // from the root node or to the recursive caller if (child_list_.empty()) { pfc_log_debug("%s: No child list", PFC_FUNCNAME); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } // Get the child list of each node @@ -111,7 +111,7 @@ drv_resp_code_t ConfigNode::get_node_list( } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -148,9 +148,9 @@ void ConfigNode::print(int level_index) { * : from the the cache and insert key into erased_key_list before * : doing delete operation * @param[in] : confignode *, erased_key_list(vector contain structure) - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t ConfigNode::delete_child_node(ConfigNode *node_ptr, +UncRespCode ConfigNode::delete_child_node(ConfigNode *node_ptr, std::vector& erased_key_list) { ODC_FUNC_TRACE; std::map >::iterator itr; @@ -159,13 +159,13 @@ drv_resp_code_t ConfigNode::delete_child_node(ConfigNode *node_ptr, if (node_ptr == NULL) { pfc_log_error("%s : ConfigNode is NULL", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } itr = child_list_.find(node_ptr->get_type_name()); if (itr == itr_end) { pfc_log_error("no such configuration present"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } else { std::vector& node_list = itr->second; if (!node_list.empty()) { @@ -184,16 +184,16 @@ drv_resp_code_t ConfigNode::delete_child_node(ConfigNode *node_ptr, } } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : This method traverse the child list if parent have and delete * :the nodes * @param[in] : erased_key_list - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t ConfigNode::clear_child_list(std::vector& +UncRespCode ConfigNode::clear_child_list(std::vector& erased_key_list) { ODC_FUNC_TRACE; if (!child_list_.empty()) { @@ -220,15 +220,15 @@ drv_resp_code_t ConfigNode::clear_child_list(std::vector& } } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : This method inserts the node in the cache * @param[in] : confignode * - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t ConfigNode::add_child_to_list(ConfigNode *node_ptr) { +UncRespCode ConfigNode::add_child_to_list(ConfigNode *node_ptr) { ODC_FUNC_TRACE; std::map >::iterator itr; @@ -237,7 +237,7 @@ drv_resp_code_t ConfigNode::add_child_to_list(ConfigNode *node_ptr) { if (node_ptr == NULL) { pfc_log_error("%s : ConfigNode is NULL", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } itr = child_list_.find(node_ptr->get_type_name()); @@ -261,7 +261,7 @@ drv_resp_code_t ConfigNode::add_child_to_list(ConfigNode *node_ptr) { std::vector& node_list = itr->second; node_list.push_back(node_ptr); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** diff --git a/coordinator/modules/vtncacheutil/include/confignode.hh b/coordinator/modules/vtncacheutil/include/confignode.hh index c52b7728..3b9f5b68 100644 --- a/coordinator/modules/vtncacheutil/include/confignode.hh +++ b/coordinator/modules/vtncacheutil/include/confignode.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -62,9 +62,9 @@ class ConfigNode { * @brief : Method to retrieve node from the Keytree and populate in * the vector value_list * param[in] : value_list(vector of ConfigNode*) - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS) + * @retval : UncRespCode(UNC_RC_SUCCESS) */ - drv_resp_code_t get_node_list(std::vector& value_list); + UncRespCode get_node_list(std::vector& value_list); /** * @brief : This virtual method returns the Keytype of a node @@ -101,24 +101,24 @@ class ConfigNode { /** * @brief : This method Adds the node under the given parent in cache * param[in] : confignode * - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS) + * @retval : UncRespCode(UNC_RC_SUCCESS) */ - drv_resp_code_t add_child_to_list(ConfigNode *node_ptr); + UncRespCode add_child_to_list(ConfigNode *node_ptr); /** * @brief : This method delete the node from cache * param[in] : confignode *, vector - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS) + * @retval : UncRespCode(UNC_RC_SUCCESS) */ - drv_resp_code_t delete_child_node(ConfigNode *node_ptr, + UncRespCode delete_child_node(ConfigNode *node_ptr, std::vector&); /** * @brief : This method deletes the nodes under the given parent from cache * param[in] : vector - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS) + * @retval : UncRespCode(UNC_RC_SUCCESS) */ - drv_resp_code_t clear_child_list(std::vector&); + UncRespCode clear_child_list(std::vector&); /** * @brief : This method prints each node information diff --git a/coordinator/modules/vtncacheutil/include/keytree.hh b/coordinator/modules/vtncacheutil/include/keytree.hh index 26d297bd..388d4aab 100644 --- a/coordinator/modules/vtncacheutil/include/keytree.hh +++ b/coordinator/modules/vtncacheutil/include/keytree.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -46,55 +46,55 @@ class KeyTree { /** * @brief : Method to add confignode lists to the cache for Audit * @param [in] : value_list(contain multiple nodes in a vector) - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE) + * @retval : UncRespCode(UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC) */ - drv_resp_code_t append_audit_configuration_list( + UncRespCode append_audit_configuration_list( const std::vector&value_list); /** * @brief : Method to add individual confignode to the cache for Audit * @param [in] : value_node - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE) + * @retval : UncRespCode(UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC) */ - drv_resp_code_t append_audit_node(ConfigNode* value_node); + UncRespCode append_audit_node(ConfigNode* value_node); /** * @brief : Method to add list of confignode to the cache to support * physical node audit * @param [in] : value_list(a vector contain list of confignodes) - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS) + * @retval : UncRespCode(UNC_RC_SUCCESS) */ - drv_resp_code_t append_physical_attribute_configuration_list( + UncRespCode append_physical_attribute_configuration_list( const std::vector&value_list); /** * @brief : Method to add individual confignode to the cache for physical * node * @param [in] : value_node - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE) + * @retval : UncRespCode(UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC) */ - drv_resp_code_t append_Physical_attribute_node(ConfigNode* value_node); + UncRespCode append_Physical_attribute_node(ConfigNode* value_node); /** * @brief : Method to update individual confignode to the cache for * physical node * @param [in] : child_ptr - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE) + * @retval : UncRespCode(UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC) */ - drv_resp_code_t update_physical_attribute_node(ConfigNode* child_ptr); + UncRespCode update_physical_attribute_node(ConfigNode* child_ptr); /** * @brief : Method to delete individual confignode to the cache for * physical node * @param [in] : child_ptr - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE) + * @retval : UncRespCode(UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC) */ - drv_resp_code_t delete_physical_attribute_node(ConfigNode* child_ptr); + UncRespCode delete_physical_attribute_node(ConfigNode* child_ptr); /** * @brief : Method to return existing node from cache as per new compare @@ -109,10 +109,10 @@ class KeyTree { /** * @brief : Method to add individual confignode to the cache for Audit * @param [in] : value_node - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE) + * @retval : UncRespCode(UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC) */ - drv_resp_code_t append_commit_node(ConfigNode* value_node); + UncRespCode append_commit_node(ConfigNode* value_node); /** * @brief : Method to create the iterator of Keytree @@ -180,9 +180,9 @@ class KeyTree { * @brief : Method to traverse the tree in DFS order and populate * the nodes into the vector * @param [in] : value_list - * @retval : DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_RC_SUCCESS */ - drv_resp_code_t get_nodelist_keytree(); + UncRespCode get_nodelist_keytree(); /** * @brief : Method to return the Parent given the child_type * @param [in] : child_type @@ -193,10 +193,10 @@ class KeyTree { /** * @brief : Method to add individual Config node to the cache * @param [in] : child_ptr - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS/ - * DRVAPI_RESPONSE_FAILURE) + * @retval : UncRespCode(UNC_RC_SUCCESS/ + * UNC_DRV_RC_ERR_GENERIC) */ - drv_resp_code_t add_node_to_tree(ConfigNode* child_ptr); + UncRespCode add_node_to_tree(ConfigNode* child_ptr); /** * @brief : Method to search and retrieve the node from the search map @@ -209,9 +209,9 @@ class KeyTree { /** * @brief : Method to insert node to the search map * @param [in] : child_ptr - * @retval : drv_resp_code_t(DRVAPI_RESPONSE_SUCCESS) + * @retval : UncRespCode(UNC_RC_SUCCESS) */ - drv_resp_code_t add_child_to_hash(ConfigNode* child_ptr); + UncRespCode add_child_to_hash(ConfigNode* child_ptr); /** diff --git a/coordinator/modules/vtncacheutil/include/vtn_conf_utility.hh b/coordinator/modules/vtncacheutil/include/vtn_conf_utility.hh index b90f0fc6..69b6d7f3 100644 --- a/coordinator/modules/vtncacheutil/include/vtn_conf_utility.hh +++ b/coordinator/modules/vtncacheutil/include/vtn_conf_utility.hh @@ -177,7 +177,7 @@ class ConfUtil { * @retval : search key - string */ static std::string get_search_key(const key_vlan_map_t &key, - const val_vlan_map_t &val) { + const pfcdrv_val_vlan_map_t &val) { ODC_FUNC_TRACE; std::string key_str(reinterpret_cast (key.vbr_key.vtn_key.vtn_name)); @@ -189,7 +189,7 @@ class ConfUtil { } else { key_str += std::string("ANY."); char buff[10]; - snprintf(buff, sizeof(buff), "%u", val.vlan_id); + snprintf(buff, sizeof(buff), "%u", val.vm.vlan_id); key_str += std::string(buff); } return key_str; diff --git a/coordinator/modules/vtncacheutil/keytree.cc b/coordinator/modules/vtncacheutil/keytree.cc index 91fe9c18..bca1086a 100644 --- a/coordinator/modules/vtncacheutil/keytree.cc +++ b/coordinator/modules/vtncacheutil/keytree.cc @@ -89,9 +89,9 @@ unc_key_type_t KeyTree::get_parenttype(unc_key_type_t child_type) { * @brief : Method to traverse the tree and populate the nodes into * the vector * @param [in] : value_list - * @retval : DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_RC_SUCCESS */ -drv_resp_code_t KeyTree::get_nodelist_keytree() { +UncRespCode KeyTree::get_nodelist_keytree() { ODC_FUNC_TRACE; cfg_node_list_.clear(); return node_tree_.get_node_list(cfg_node_list_); @@ -100,12 +100,12 @@ drv_resp_code_t KeyTree::get_nodelist_keytree() { /** * @brief : Method to add individual confignode to the cache for commit * @param [in] : value_node - * @retval : DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval : UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ -drv_resp_code_t KeyTree::append_commit_node(ConfigNode* value_node) { +UncRespCode KeyTree::append_commit_node(ConfigNode* value_node) { ODC_FUNC_TRACE; cfg_node_list_.push_back(value_node); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -144,12 +144,12 @@ void KeyTree::clear_root_cache() { * @brief : Method to add confignode lists to the cache for * : Physical nodes * @param [in] : value_list - * @retval : ERR_ADD_CHILD_TO_TREE_FAILED / DRVAPI_RESPONSE_SUCCESSS + * @retval : ERR_ADD_CHILD_TO_TREE_FAILED / UNC_RC_SUCCESSS */ -drv_resp_code_t KeyTree::append_physical_attribute_configuration_list( +UncRespCode KeyTree::append_physical_attribute_configuration_list( const std::vector&value_list) { ODC_FUNC_TRACE; - drv_resp_code_t err = DRVAPI_RESPONSE_FAILURE; + UncRespCode err = UNC_DRV_RC_ERR_GENERIC; ConfigNode* tmp_cfgnode_ptr = NULL; std::vector::const_iterator it = value_list.begin(); std::vector::const_iterator itr_end = value_list.end(); @@ -158,56 +158,56 @@ drv_resp_code_t KeyTree::append_physical_attribute_configuration_list( if (*it == NULL) { pfc_log_error("RunningConfig::%s:%d: ConfigNode is NULL", PFC_FUNCNAME, __LINE__); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } tmp_cfgnode_ptr = *it; err = append_audit_node(tmp_cfgnode_ptr); - if (DRVAPI_RESPONSE_SUCCESS != err) { + if (UNC_RC_SUCCESS != err) { pfc_log_error("%s: AddChildToTree faild err=%d", PFC_FUNCNAME, err); tmp_cfgnode_ptr = NULL; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : Method to add individual confignode to the cache for * : Physical node * @param [in] : value_node - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t KeyTree::append_Physical_attribute_node( +UncRespCode KeyTree::append_Physical_attribute_node( ConfigNode* value_node) { ODC_FUNC_TRACE; - drv_resp_code_t err = DRVAPI_RESPONSE_FAILURE; + UncRespCode err = UNC_DRV_RC_ERR_GENERIC; err = append_audit_node(value_node); - if (DRVAPI_RESPONSE_SUCCESS != err) { + if (UNC_RC_SUCCESS != err) { pfc_log_error("%s: AddChildToTree faild err=%d", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : Method to update confignode to the cache for physical-node * @param [in] : child_ptr(confignode) - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t KeyTree:: update_physical_attribute_node( +UncRespCode KeyTree:: update_physical_attribute_node( ConfigNode* child_ptr) { ODC_FUNC_TRACE; if (NULL == child_ptr) { pfc_log_error("update_port_to_list:Child Node is NULL!!!!!!"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc_key_type_t key_type = child_ptr->get_type_name(); std::string key_name= child_ptr->get_key_name(); ConfigNode* old_cfgptr = get_node_from_hash(key_name, key_type); if (NULL == old_cfgptr) { pfc_log_error("no such configuration exist in cache"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string type_check = TypeToStrFun(child_ptr->get_type_name()); pfc_log_info("type check for port/switch %s", type_check.c_str()); @@ -244,24 +244,24 @@ drv_resp_code_t KeyTree:: update_physical_attribute_node( old_link_ptr->set_val_structure(update_link_ptr->get_val_structure()); } else { pfc_log_error("unmatched update request"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : Method to delete confignode from the cache for physical node * @param [in] : child_ptr(confignode) - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t KeyTree:: delete_physical_attribute_node( +UncRespCode KeyTree:: delete_physical_attribute_node( ConfigNode* child_ptr) { ODC_FUNC_TRACE; - drv_resp_code_t err = DRVAPI_RESPONSE_FAILURE; + UncRespCode err = UNC_DRV_RC_ERR_GENERIC; if (NULL == child_ptr) { pfc_log_error("delete_port_to_list:Child Node is NULL!!!!!!"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string parent_key = child_ptr->get_parent_key_name(); unc_key_type_t parent_type = get_parenttype(child_ptr->get_type_name()); @@ -270,14 +270,14 @@ drv_resp_code_t KeyTree:: delete_physical_attribute_node( if (NULL == parent_ptr) { pfc_log_error("Parent:%s Not Present for:%s", parent_key.c_str(), child_ptr->get_key_generate().c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } unc_key_type_t key_type = child_ptr->get_type_name(); std::string key_name= child_ptr->get_key_name(); ConfigNode* old_cfgptr = get_node_from_hash(key_name, key_type); if (NULL == old_cfgptr) { pfc_log_error("no such configuration exist in cache"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string type_check = TypeToStrFun(child_ptr->get_type_name()); pfc_log_info("type check for port/switch %s", type_check.c_str()); @@ -285,15 +285,15 @@ drv_resp_code_t KeyTree:: delete_physical_attribute_node( if ((type_check == "UNC_KT_PORT") || (type_check == "UNC_KT_SWITCH") || (type_check == "UNC_KT_LINK")) { err = parent_ptr->delete_child_node(old_cfgptr, erased_key_list); - if ( DRVAPI_RESPONSE_SUCCESS != err ) { + if ( UNC_RC_SUCCESS != err ) { pfc_log_error("delete_child_to_list Faild for:%s!!!!", child_ptr->get_key_generate().c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } cfg_node_list_.clear(); } else { pfc_log_error("unmatched delete request"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::vector:: iterator itr_err = erased_key_list.begin(); for (; itr_err != erased_key_list.end(); ++itr_err) { @@ -301,7 +301,7 @@ drv_resp_code_t KeyTree:: delete_physical_attribute_node( itr_err->key_type); ConfigHashArr[itr_err->key_type].erase(itr_err->key); } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -334,12 +334,12 @@ pfc_bool_t KeyTree::compare_is_physical_node_found( /** * @brief : Method to add confignode lists to the cache for Audit * @param [in] : value_list - * @retval : ERR_ADD_CHILD_TO_TREE_FAILED / DRVAPI_RESPONSE_SUCCESSS + * @retval : ERR_ADD_CHILD_TO_TREE_FAILED / UNC_RC_SUCCESSS */ -drv_resp_code_t KeyTree::append_audit_configuration_list( +UncRespCode KeyTree::append_audit_configuration_list( const std::vector&value_list) { ODC_FUNC_TRACE; - drv_resp_code_t err = DRVAPI_RESPONSE_FAILURE; + UncRespCode err = UNC_DRV_RC_ERR_GENERIC; ConfigNode* tmp_cfgnode_ptr = NULL; std::vector::const_iterator it = value_list.begin(); @@ -350,29 +350,29 @@ drv_resp_code_t KeyTree::append_audit_configuration_list( if (*it == NULL) { pfc_log_error("RunningConfig::%s:%d: ConfigNode is NULL", PFC_FUNCNAME, __LINE__); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } tmp_cfgnode_ptr = *it; err = append_audit_node(tmp_cfgnode_ptr); - if (DRVAPI_RESPONSE_SUCCESS != err) { + if (UNC_RC_SUCCESS != err) { pfc_log_error("%s: AddChildToTree faild err=%d", PFC_FUNCNAME, err); tmp_cfgnode_ptr = NULL; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : Method to add individual confignode to the cache for Audit * @param [in] : value_node - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t KeyTree::append_audit_node( +UncRespCode KeyTree::append_audit_node( ConfigNode* value_node) { ODC_FUNC_TRACE; - drv_resp_code_t err = DRVAPI_RESPONSE_FAILURE; + UncRespCode err = UNC_DRV_RC_ERR_GENERIC; ConfigNode* tmp_cfgnode_ptr = NULL; ConfigNode* real_cfgnode_ptr= NULL; @@ -392,10 +392,10 @@ drv_resp_code_t KeyTree::append_audit_node( pfc_log_debug("%s: Parent Type Check %s ", PFC_FUNCNAME, tmp_cfgnode_ptr->get_parent_key_name().c_str()); err = add_node_to_tree(tmp_cfgnode_ptr); - if (DRVAPI_RESPONSE_SUCCESS != err) { + if (UNC_RC_SUCCESS != err) { pfc_log_error("%s: AddChildToTree faild err=%d", PFC_FUNCNAME, err); tmp_cfgnode_ptr = NULL; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } else { pfc_log_debug("%s: Node already Present in Tree...", PFC_FUNCNAME); @@ -404,19 +404,19 @@ drv_resp_code_t KeyTree::append_audit_node( real_cfgnode_ptr = NULL; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : Method to add node to the cache and search map by validation * @param [in] : value_list - * @retval : DRVAPI_RESPONSE_SUCCESSS/DRVAPI_RESPONSE_FAILURE + * @retval : UNC_RC_SUCCESSS/UNC_DRV_RC_ERR_GENERIC */ -drv_resp_code_t KeyTree::add_node_to_tree(ConfigNode* child_ptr) { +UncRespCode KeyTree::add_node_to_tree(ConfigNode* child_ptr) { ODC_FUNC_TRACE; if (NULL == child_ptr) { pfc_log_error("add_node_to_tree:Child Node is NULL!!!!!!"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::string parent_key = child_ptr->get_parent_key_name(); unc_key_type_t parent_type = get_parenttype(child_ptr->get_type_name()); @@ -426,24 +426,24 @@ drv_resp_code_t KeyTree::add_node_to_tree(ConfigNode* child_ptr) { if (NULL == parent_ptr) { pfc_log_error("Parent:%s Not Present for:%s", parent_key.c_str(), child_ptr->get_key_generate().c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Add the new node to child list of the parentnode using parent_ptr - drv_resp_code_t err = parent_ptr->add_child_to_list(child_ptr); - if ( DRVAPI_RESPONSE_SUCCESS != err ) { + UncRespCode err = parent_ptr->add_child_to_list(child_ptr); + if ( UNC_RC_SUCCESS != err ) { pfc_log_error("add_node_to_tree:add_child_to_list Faild for:%s!!!!", child_ptr->get_key_generate().c_str()); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } // Add the new node to the search map err = add_child_to_hash(child_ptr); - if ( DRVAPI_RESPONSE_SUCCESS == err ) { + if ( UNC_RC_SUCCESS == err ) { pfc_log_debug("add_node_to_tree:add_child_to_hash Succed for: %s!!!!", child_ptr->get_key_generate().c_str()); cfgnode_count_++; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -468,15 +468,15 @@ ConfigNode* KeyTree::get_node_from_hash( /** * @brief : Method to insert node to the search map * @param [in] : child_ptr - * @retval : DRVAPI_RESPONSE_SUCCESSS + * @retval : UNC_RC_SUCCESSS */ -drv_resp_code_t KeyTree::add_child_to_hash(ConfigNode* child_ptr) { +UncRespCode KeyTree::add_child_to_hash(ConfigNode* child_ptr) { ODC_FUNC_TRACE; unc_key_type_t key_type = child_ptr->get_type_name(); std::string key = child_ptr->get_key_generate(); ConfigHashArr[key_type].insert(std::pair (key, child_ptr)); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } } // namespace vtndrvcache diff --git a/coordinator/modules/vtndrvintf/controller_fw.cc b/coordinator/modules/vtndrvintf/controller_fw.cc index 4b5c5a0b..40f8194f 100644 --- a/coordinator/modules/vtndrvintf/controller_fw.cc +++ b/coordinator/modules/vtndrvintf/controller_fw.cc @@ -285,10 +285,10 @@ void ReadConfig::GetPhysicalConfig() { * not found from list,it's consider as new controller and * add it to list * @param[in] : controller_name, controller*, driver* - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t ControllerFramework::UpdateControllerConfiguration( +UncRespCode ControllerFramework::UpdateControllerConfiguration( std::string& controller_name, controller* controller_instance, driver* driver_instance, const key_ctr_t& key_ctr, const val_ctr_t& val_ctr) { @@ -365,15 +365,15 @@ drv_resp_code_t ControllerFramework::UpdateControllerConfiguration( PFC_FUNCNAME, controller_name.c_str()); } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief : This function removes the existing controller from list * @param[in] : controller_name - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t +UncRespCode ControllerFramework::RemoveControllerConfiguration( std::string& controller_name, controller* controller_instance, @@ -384,7 +384,7 @@ ControllerFramework::RemoveControllerConfiguration( if (controller_list.size() == 0) { pfc_log_error("Controller name not found .List is Empty"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::map::iterator @@ -402,10 +402,10 @@ ControllerFramework::RemoveControllerConfiguration( pfc_log_debug("Existing controller configuration gets removed"); } else { pfc_log_error("controller not found"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -413,9 +413,9 @@ ControllerFramework::RemoveControllerConfiguration( * @brief : This function gets the driver type for the appropriate * controllers * @param[in] : controller_name, controller**, driver** - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t ControllerFramework::GetDriverByControllerName( +UncRespCode ControllerFramework::GetDriverByControllerName( std::string& controller_name, controller** controller_instance, driver** driver_instance) { @@ -428,7 +428,7 @@ drv_resp_code_t ControllerFramework::GetDriverByControllerName( if (controller_list_iterator == controller_list.end()) { pfc_log_error("controller name not found"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } controller_container = controller_list_iterator->second; @@ -438,9 +438,9 @@ drv_resp_code_t ControllerFramework::GetDriverByControllerName( if ((NULL == *controller_instance) || (NULL == *driver_instance)) { pfc_log_error("controller instance or driver instance is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } @@ -448,23 +448,23 @@ drv_resp_code_t ControllerFramework::GetDriverByControllerName( * @brief : This function stores the driver instance for the appropriate * controller type in map * @param[in] : controller_type, driver* - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t ControllerFramework::RegisterDriver( +UncRespCode ControllerFramework::RegisterDriver( unc_keytype_ctrtype_t controller_type, driver* driver_instance) { ODC_FUNC_TRACE; if (NULL == driver_instance) { pfc_log_error("RegisterDriver:Driver instance is NULL"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } controller_list_rwlock_.lock(); driver_container.insert(std::make_pair(controller_type, driver_instance)); controller_list_rwlock_.unlock(); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -472,9 +472,9 @@ drv_resp_code_t ControllerFramework::RegisterDriver( * for the appropriate without acquiring the lock controllers * @param[in] : controller_name, controller*, driver* * @param[out]: driver* - * @retval : DRVAPI_RESPONSE_FAILURE / DRVAPI_RESPONSE_SUCCESS + * @retval : UNC_DRV_RC_ERR_GENERIC / UNC_RC_SUCCESS */ -drv_resp_code_t ControllerFramework::GetControllerInstance( +UncRespCode ControllerFramework::GetControllerInstance( std::string& controller_name, controller** controller_instance, driver** driver_instance) { @@ -487,7 +487,7 @@ drv_resp_code_t ControllerFramework::GetControllerInstance( if (controller_list_iterator == controller_list.end()) { pfc_log_error("Controller Name not found in the list"); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } controller_container = controller_list_iterator->second; @@ -498,7 +498,7 @@ drv_resp_code_t ControllerFramework::GetControllerInstance( PFC_VERIFY(*controller_instance != NULL); PFC_VERIFY(*driver_instance != NULL); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** diff --git a/coordinator/modules/vtndrvintf/include/controller_fw.hh b/coordinator/modules/vtndrvintf/include/controller_fw.hh index e4afeca7..520021a7 100644 --- a/coordinator/modules/vtndrvintf/include/controller_fw.hh +++ b/coordinator/modules/vtndrvintf/include/controller_fw.hh @@ -89,7 +89,7 @@ class ControllerFramework { * @param[in] - controller name ,controller**, driver** * @retval - VTN_DRV_RET_FAILURE/VTN_DRV_RET_SUCCESS */ - drv_resp_code_t GetDriverByControllerName(std::string& controller_name, + UncRespCode GetDriverByControllerName(std::string& controller_name, controller**, driver**); /** @@ -125,7 +125,7 @@ class ControllerFramework { * @param[in] - controller name, controller*, driver* * @retval - VTN_DRV_RET_FAILURE/ VTN_DRV_RET_SUCCESS */ - drv_resp_code_t UpdateControllerConfiguration(std::string& controller_name, + UncRespCode UpdateControllerConfiguration(std::string& controller_name, controller*, driver*, const key_ctr_t& key_ctr, const val_ctr_t& val_ctr); @@ -135,7 +135,7 @@ class ControllerFramework { * @param[in] - controller name, controller*, driver* * @retval - VTN_DRV_RET_FAILURE/ VTN_DRV_RET_SUCCESS */ - drv_resp_code_t RemoveControllerConfiguration(std::string& controller_name, + UncRespCode RemoveControllerConfiguration(std::string& controller_name, controller*, driver*); /** @@ -150,7 +150,7 @@ class ControllerFramework { * @param[in] - controller type, driver* * @retval - VTN_DRV_RET_FAILURE/ VTN_DRV_RET_SUCCESS */ - drv_resp_code_t RegisterDriver(unc_keytype_ctrtype_t controller_type, + UncRespCode RegisterDriver(unc_keytype_ctrtype_t controller_type, driver*); @@ -161,7 +161,7 @@ class ControllerFramework { * @param[out] - controller**, driver** * @retval - VTN_DRV_RET_FAILURE/ VTN_DRV_RET_SUCCESS */ - drv_resp_code_t GetControllerInstance(std::string& controller_name, + UncRespCode GetControllerInstance(std::string& controller_name, controller**, driver**); /** diff --git a/coordinator/modules/vtndrvintf/include/driver/driver_command.hh b/coordinator/modules/vtndrvintf/include/driver/driver_command.hh index 6d4c4519..2ea9e990 100644 --- a/coordinator/modules/vtndrvintf/include/driver/driver_command.hh +++ b/coordinator/modules/vtndrvintf/include/driver/driver_command.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,9 +37,9 @@ class driver_command { * @brief - Method to revoke the commit with triggring audit for any failed Operation * @param[in]- controller pointer - * @retval - DRVAPI_RESPONSE_SUCCESS + * @retval - UNC_RC_SUCCESS */ - virtual drv_resp_code_t revoke(unc::driver::controller* ctr_ptr) { + virtual UncRespCode revoke(unc::driver::controller* ctr_ptr) { pfc_log_debug("%s Entering function", PFC_FUNCNAME); // Send start audit notification to TC @@ -54,7 +54,7 @@ class driver_command { ptr_tclib_key_data->TcLibAuditControllerRequest(controller_name); pfc_log_debug("%s Exiting function", PFC_FUNCNAME); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -62,9 +62,9 @@ class driver_command { * @param[in] - controller pointer * @param[in] - parent key type pointer * @param[out] - list of configurations - * @retval - DRVAPI_RESPONSE_SUCCESS / DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS / UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t fetch_config(unc::driver::controller* ctr, + virtual UncRespCode fetch_config(unc::driver::controller* ctr, void* parent_key, std::vector&) = 0; }; @@ -77,23 +77,23 @@ class vtn_driver_command: public driver_command { /** * @brief - Method to create VTN in the controller * @param[in]- key_vtn_t, val_vtn_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t create_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, + virtual UncRespCode create_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, unc::driver::controller*)=0; /** * @brief - Method to update VTN in the controller * @param[in]- key_vtn_t, val_vtn_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t update_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, + virtual UncRespCode update_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, unc::driver::controller*)=0; /** * @brief - Method to delete VTN in the controller * @param[in]- key_vtn_t, val_vtn_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t delete_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, + virtual UncRespCode delete_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, unc::driver::controller*)=0; /** * @brief - Method to return the Keytype @@ -113,24 +113,24 @@ class vbr_driver_command: public driver_command { /** * @brief - Method to create Vbridge in the controller * @param[in]- key_vbr_t, val_vbr_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t create_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, + virtual UncRespCode create_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, unc::driver::controller*) = 0; /** * @brief - Method to update Vbridge in the controller * @param[in]- key_vbr_t, val_vbr_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t update_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, + virtual UncRespCode update_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, unc::driver::controller*) = 0; /** * @brief - Method to delete Vbridge in the controller * @param[in]- key_vbr_t, val_vbr_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t delete_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, + virtual UncRespCode delete_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, unc::driver::controller*)=0; /** * @brief - Method to return the Keytype @@ -150,25 +150,25 @@ class vbrif_driver_command: public driver_command { /** * @brief - Method to create Vbr Interface in the controller * @param[in]- key_vbr_if_t, pfcdrv_val_vbr_if_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t create_cmd(key_vbr_if_t& key, + virtual UncRespCode create_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, unc::driver::controller *conn)=0; /** * @brief - Method to update Vbr Interface in the controller * @param[in]- key_vbr_if_t, pfcdrv_val_vbr_if_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t update_cmd(key_vbr_if_t& key, + virtual UncRespCode update_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, unc::driver::controller *conn) = 0; /** * @brief - Method to delete Vbr Interface in the controller * @param[in]- key_vbr_if_t, pfcdrv_val_vbr_if_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t delete_cmd(key_vbr_if_t& key, + virtual UncRespCode delete_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, unc::driver::controller *conn) = 0; /** @@ -186,29 +186,29 @@ class vbrvlanmap_driver_command: public driver_command { /** * @brief - Method to create Vbr Vlan-Map in the controller * @param[in]- key_vlan_map_t, val_vlan_map_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t create_cmd(key_vlan_map_t& key, - val_vlan_map_t& val, - unc::driver::controller *conn)=0; + virtual UncRespCode create_cmd(key_vlan_map_t& key, + pfcdrv_val_vlan_map_t& val, + unc::driver::controller *conn)=0; /** * @brief - Method to update Vbr Vlan-Map in the controller * @param[in]- key_vlan_map_t, val_vlan_map_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t update_cmd(key_vlan_map_t& key, - val_vlan_map_t& val, - unc::driver::controller *conn) = 0; + virtual UncRespCode update_cmd(key_vlan_map_t& key, + pfcdrv_val_vlan_map_t& val, + unc::driver::controller *conn) = 0; /** * @brief - Method to delete Vbr Vlan-Map in the controller * @param[in]- key_vlan_map_t, val_vlan_map_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t delete_cmd(key_vlan_map_t& key, - val_vlan_map_t& val, - unc::driver::controller *conn) = 0; + virtual UncRespCode delete_cmd(key_vlan_map_t& key, + pfcdrv_val_vlan_map_t& val, + unc::driver::controller *conn) = 0; /** * @brief - Method to return the Keytype @@ -228,31 +228,31 @@ class controller_command: public driver_command { /** * @brief - Method to create controller configuration * @param[in]- key_ctr_t, val_ctr_t, controller* - * @retval - DRVAPI_RESPONSE_FAILURE + * @retval - UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t create_cmd(key_ctr_t& key, + UncRespCode create_cmd(key_ctr_t& key, val_ctr_t & val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /** * @brief - Method to update controller configuration * @param[in]- key_ctr_t, val_ctr_t, controller* - * @retval - DRVAPI_RESPONSE_FAILURE + * @retval - UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t update_cmd(key_ctr_t & key, + UncRespCode update_cmd(key_ctr_t & key, val_ctr_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /** * @brief - Method to update controller configuration * @param[in]- key_ctr_t, val_ctr_t, controller* - * @retval - DRVAPI_RESPONSE_FAILURE + * @retval - UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_cmd(key_ctr_t & key, + UncRespCode delete_cmd(key_ctr_t & key, val_ctr_t & val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /** @@ -273,9 +273,9 @@ class root_driver_command : public driver_command { /** * @brief - Method to form the create command for Audit * @param[in]- key_root_t, val_root_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t + virtual UncRespCode create_cmd(key_root_t& key, val_root_t & val, unc::driver::controller *conn) = 0; @@ -283,9 +283,9 @@ class root_driver_command : public driver_command { /** * @brief - Method to form the KT_ROOT update oommand * @param[in]- key_root_t, val_root_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t + virtual UncRespCode update_cmd(key_root_t& key, val_root_t & val, unc::driver::controller *conn) = 0; @@ -293,9 +293,9 @@ class root_driver_command : public driver_command { /** * @brief - Method to form the KT_ROOT delete oommand * @param[in]- key_root_t, val_root_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t + virtual UncRespCode delete_cmd(key_root_t& key, val_root_t & val, unc::driver::controller *conn)=0; @@ -303,18 +303,18 @@ class root_driver_command : public driver_command { /** * @brief - Method to read configurations during Audit * @param[in]- vector, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t + virtual UncRespCode read_root_child(std::vector&, unc::driver::controller*) = 0; /** * @brief - Method to read configurations from controller during Audit * @param[in]- vector, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - virtual drv_resp_code_t + virtual UncRespCode read_all_child(unc::vtndrvcache::ConfigNode*, std::vector&, unc::driver::controller*)=0; diff --git a/coordinator/modules/vtndrvintf/include/kt_handler.hh b/coordinator/modules/vtndrvintf/include/kt_handler.hh index 138fa61b..991b64e2 100644 --- a/coordinator/modules/vtndrvintf/include/kt_handler.hh +++ b/coordinator/modules/vtndrvintf/include/kt_handler.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -29,9 +29,9 @@ class KtHandler { * @param[in] - ControllerFramework pointer * @param[in] - ServerSession, * @param[in] - key interface request header - * @retval - drv_resp_code_t + * @retval - UncRespCode */ - virtual drv_resp_code_t handle_request(pfc::core::ipc::ServerSession &sess, + virtual UncRespCode handle_request(pfc::core::ipc::ServerSession &sess, odl_drv_request_header_t &request_header, ControllerFramework*) = 0; @@ -40,9 +40,9 @@ class KtHandler { * @param[in] - ConfigNode pointer * @param[in] - controller pointer * @param[in] - driver pointer - * @retval - drv_resp_code_t + * @retval - UncRespCode */ - virtual drv_resp_code_t execute_cmd(unc::vtndrvcache::ConfigNode *cfgptr, + virtual UncRespCode execute_cmd(unc::vtndrvcache::ConfigNode *cfgptr, unc::driver::controller* ctl_ptr, unc::driver::driver* drv_ptr)=0; diff --git a/coordinator/modules/vtndrvintf/include/request_template.hh b/coordinator/modules/vtndrvintf/include/request_template.hh index 39b4cf87..cb9a019e 100644 --- a/coordinator/modules/vtndrvintf/include/request_template.hh +++ b/coordinator/modules/vtndrvintf/include/request_template.hh @@ -45,9 +45,9 @@ class KtRequestHandler : public KtHandler { /** * @brief - This method handles request received from platform layer * @param[in]- ServerSession, odl_drv_request_header_t,ControllerFramework* - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ - drv_resp_code_t + UncRespCode handle_request(pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, unc::driver::ControllerFramework* ctrl_int); @@ -55,9 +55,9 @@ class KtRequestHandler : public KtHandler { /** * @brief - This method forms the command from ConfigNode pointer * @param[in]- ConfigNode*, controller*, driver* - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ - drv_resp_code_t + UncRespCode execute_cmd(unc::vtndrvcache::ConfigNode *cfgptr, unc::driver::controller* ctl_ptr, unc::driver::driver* drv_ptr); @@ -65,7 +65,7 @@ class KtRequestHandler : public KtHandler { /** * @brief - This method retrieves the key and val structures * @param[in] - ServerSession, odl_drv_request_header_t,key,val - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ @@ -85,7 +85,7 @@ class KtRequestHandler : public KtHandler { private: - drv_resp_code_t + UncRespCode parse_request(pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, key &key_generic_, @@ -95,10 +95,10 @@ class KtRequestHandler : public KtHandler { * @brief - This method executes the Create,Delete,Update and Read requests of * Keytypes * @param[in]- ServerSession, odl_drv_request_header_t, ControllerFramework* - * drv_resp_code_t,key,val - * @retval - drv_resp_code_t + * UncRespCode,key,val + * @retval - UncRespCode **/ - drv_resp_code_t + UncRespCode execute(pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, unc::driver::ControllerFramework* ctrl_int, @@ -109,34 +109,34 @@ class KtRequestHandler : public KtHandler { * @brief - This method handles response from controller * and send response to platform layer * @param[in] - ServerSession, odl_drv_request_header_t,ControllerFramework*, - * key,val,drv_resp_code_t - * @retval - drv_resp_code_t + * key,val,UncRespCode + * @retval - UncRespCode **/ - drv_resp_code_t + UncRespCode handle_response(pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, unc::driver::ControllerFramework* ctrl_int, key &key_generic_, val &val_generic_, - drv_resp_code_t &resp_code_); + UncRespCode &resp_code_); /** * @brief - This method creates the Response Header * @param[in]- odl_drv_response_header_t, - * odl_drv_request_header_t,drv_resp_code_t + * odl_drv_request_header_t,UncRespCode * @retval - void */ void create_response_header(unc::driver::odl_drv_request_header_t &reqhdr, unc::driver::odl_drv_response_header_t &resphdr, - drv_resp_code_t &resp_code_); + UncRespCode &resp_code_); /** * @brief - This method populates the Response Header * @param[in]- ServerSession, odl_drv_response_header_t - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ - drv_resp_code_t + UncRespCode populate_response_header(pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_response_header_t &resp_hdr); @@ -218,10 +218,10 @@ get_val_struct(unc::vtndrvcache::ConfigNode *cfgptr) { /** * @brief - This method retrieves the key and val structures * @param[in] - ServerSession, odl_drv_request_header_t,key,val - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ template -drv_resp_code_t +UncRespCode KtRequestHandler::parse_request( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, @@ -230,24 +230,24 @@ KtRequestHandler::parse_request( if (sess.getArgument(INPUT_KEY_STRUCT_INDEX, key_generic_)) { pfc_log_debug("%s: Exting Function.getArg Failed to read key struct." " rc=%u", PFC_FUNCNAME, 2); - return DRVAPI_RESPONSE_MISSING_KEY_STRUCT; + return UNC_DRV_RC_MISSING_KEY_STRUCT; } if (sess.getArgument(INPUT_VAL_STRUCT_INDEX, val_generic_)) { pfc_log_debug("%s: No value struct present.", PFC_FUNCNAME); } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief - This method executes the Create,Delete,Update requests of * Keytypes * @param[in]- ServerSession, odl_drv_request_header_t, ControllerFramework* - * drv_resp_code_t,key,val - * @retval - drv_resp_code_t + * UncRespCode,key,val + * @retval - UncRespCode **/ template -drv_resp_code_t +UncRespCode KtRequestHandler::execute( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, @@ -262,7 +262,7 @@ KtRequestHandler::execute( unc::driver::controller* ctrl_ptr = NULL; - drv_resp_code_t resp_code_ = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code_ = UNC_DRV_RC_ERR_GENERIC; controller_operation util_obj(ctrl_int, WRITE_TO_CONTROLLER, ctrl_name); ctrl_ptr = util_obj.get_controller_handle(); @@ -277,7 +277,7 @@ KtRequestHandler::execute( // check controller connection status, if down send disconnected pfc_log_debug("%s Controller status is down, send disconnected", PFC_FUNCNAME); - return DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED; + return UNC_RC_CTR_DISCONNECTED; } unc::driver::driver_command * drv_command_ptr_ = @@ -306,7 +306,7 @@ KtRequestHandler::execute( delete command_ptr_; if (ctrl_ptr->controller_cache != NULL) delete ctrl_ptr->controller_cache; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t size = ctrl_ptr->controller_cache->cfg_list_count(); @@ -317,7 +317,7 @@ KtRequestHandler::execute( size = ctrl_ptr->controller_cache->cfg_list_count(); pfc_log_debug("after add .... size is %d", size); - if (resp_code_ != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ != UNC_RC_SUCCESS) { pfc_log_debug("%s:Exiting Function. AppendCommitNode fail", PFC_FUNCNAME); if (cfgptr != NULL) @@ -326,7 +326,7 @@ KtRequestHandler::execute( return resp_code_; } else { pfc_log_debug("Caching Success"); - resp_code_= DRVAPI_RESPONSE_SUCCESS; + resp_code_= UNC_RC_SUCCESS; } } else { switch (request_header.header.operation) { @@ -360,7 +360,7 @@ KtRequestHandler::execute( pfc_log_debug("%s: Invalid operation ", PFC_FUNCNAME); - resp_code_ = DRVAPI_RESPONSE_INVALID_OPERATION; + resp_code_ = UNC_DRV_RC_INVALID_OPERATION; break; } @@ -373,10 +373,10 @@ KtRequestHandler::execute( * @brief - This method is the Template Specialization for parsing * KT_Controller structures(Key,Val) * @param[in] - ServerSession, odl_drv_request_header_t,key_ctr_t,val_ctr_t - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ template<> -drv_resp_code_t +UncRespCode KtRequestHandler::parse_request( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, @@ -389,7 +389,7 @@ KtRequestHandler::parse_request( pfc_log_error("%s: GetArgument failed to read key struct " "for UNC_KT_CONTROLLER (err = %u)", PFC_FUNCNAME, ret_value); - return DRVAPI_RESPONSE_MISSING_KEY_STRUCT; + return UNC_DRV_RC_MISSING_KEY_STRUCT; } if ((request_header.header.operation == UNC_OP_CREATE) @@ -399,39 +399,39 @@ KtRequestHandler::parse_request( pfc_log_error("%s: GetArgument failed to read value struct " "for UNC_KT_CONTROLLER (err = %u)", PFC_FUNCNAME, ret_value); - return DRVAPI_RESPONSE_MISSING_VAL_STRUCT; + return UNC_DRV_RC_MISSING_VAL_STRUCT; } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief - This method is template Specialization for parsing KT_ROOT * @param[in] - ServerSession,odl_drv_request_header_t,key_root_t * val_root_t - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ template<> -drv_resp_code_t +UncRespCode KtRequestHandler::parse_request( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, key_root_t &key_generic_, val_root_t &val_generic_) { request_header.key_type = UNC_KT_ROOT; - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief - This method is the template Specialization for * KT ROOT command Execution * @param[in]- ServerSession, odl_drv_request_header_t, ControllerFramework* - * drv_resp_code_t,key_root_t,val_root_t - * @retval - drv_resp_code_t + * UncRespCode,key_root_t,val_root_t + * @retval - UncRespCode **/ template<> -drv_resp_code_t +UncRespCode KtRequestHandler::execute( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, @@ -444,7 +444,7 @@ KtRequestHandler::execute( unc::driver::driver* drv_ptr = NULL; unc::driver::controller* ctrl_ptr = NULL; - drv_resp_code_t resp_code_ = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code_ = UNC_DRV_RC_ERR_GENERIC; controller_operation util_obj(ctrl_int, WRITE_TO_CONTROLLER, ctrl_name); ctrl_ptr = util_obj.get_controller_handle(); @@ -490,7 +490,7 @@ KtRequestHandler::execute( // fetch all root child configuration resp_code_ = drv_command_ptr_->fetch_config(ctrl_ptr, NULL, cfg_list); pfc_log_debug("vtn resp_code_%u", resp_code_); - if (resp_code_ != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ != UNC_RC_SUCCESS) { pfc_log_error("%s:GetDriverByControllerName failed VTN .rt,%u", PFC_FUNCNAME, resp_code_); delete drv_command_ptr_; @@ -526,7 +526,7 @@ KtRequestHandler::execute( parent_key, cfg_list); pfc_log_debug("resp_code_%u", resp_code_); - if (resp_code_!= DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_!= UNC_RC_SUCCESS) { pfc_log_error("%s:GetDriverByControllerName failed .rt,%u", PFC_FUNCNAME, resp_code_); delete drv_command_ptr_; @@ -568,11 +568,11 @@ KtRequestHandler::get_handler(unc_key_type_t keytype) { /** * @brief - This method is the template Specialization for KT Controller command Execution * @param[in]- ServerSession, odl_drv_request_header_t, ControllerFramework* - * drv_resp_code_t,key_root_t,val_root_t - * @retval - drv_resp_code_t + * UncRespCode,key_root_t,val_root_t + * @retval - UncRespCode **/ template<> -drv_resp_code_t +UncRespCode KtRequestHandler::execute( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, @@ -584,7 +584,7 @@ KtRequestHandler::execute( unc::driver::controller* ctl_ptr = NULL; std::string ctrl_name = std::string(request_header.controller_name); - drv_resp_code_t resp_code_ = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code_ = UNC_DRV_RC_ERR_GENERIC; switch (request_header.header.operation) { case UNC_OP_CREATE: { pfc_log_debug("%s: Creates new controller ", PFC_FUNCNAME); @@ -594,9 +594,9 @@ KtRequestHandler::execute( PFC_ASSERT(drv_ptr != NULL); ctl_ptr = drv_ptr->add_controller(key_generic_, val_generic_); if (ctl_ptr != NULL) { - resp_code_ = DRVAPI_RESPONSE_SUCCESS; + resp_code_ = UNC_RC_SUCCESS; } else { - resp_code_ = DRVAPI_RESPONSE_FAILURE; + resp_code_ = UNC_DRV_RC_ERR_GENERIC; return resp_code_; } ctrl_int->AddController(ctrl_name, ctl_ptr, drv_ptr); @@ -635,7 +635,7 @@ KtRequestHandler::execute( } default: { pfc_log_debug("%s: Operation not Support ", PFC_FUNCNAME); - resp_code_ = DRVAPI_RESPONSE_INVALID_OPERATION; + resp_code_ = UNC_DRV_RC_INVALID_OPERATION; break; } } @@ -645,17 +645,17 @@ KtRequestHandler::execute( /** * @brief - This method handles request received from platform layer * @param[in]- ServerSession, odl_drv_request_header_t,ControllerFramework* - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ template -drv_resp_code_t +UncRespCode KtRequestHandler::handle_request( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, unc::driver::ControllerFramework* ctrl_int) { ODC_FUNC_TRACE; - drv_resp_code_t resp_code_ = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code_ = UNC_DRV_RC_ERR_GENERIC; key key_generic_; val val_generic_; memset(&key_generic_, 0, sizeof(key)); @@ -666,10 +666,10 @@ KtRequestHandler::handle_request( resp_code_ = parse_request(sess, request_header, key_generic_, val_generic_); - if (resp_code_ == DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ == UNC_RC_SUCCESS) { resp_code_ = execute(sess, request_header, ctrl_int, key_generic_, val_generic_); - if (resp_code_ != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ != UNC_RC_SUCCESS) { pfc_log_error("%s: execute return err with resp_code(err = %u)", PFC_FUNCNAME, resp_code_); } @@ -681,7 +681,7 @@ KtRequestHandler::handle_request( resp_code_ = handle_response(sess, request_header, ctrl_int, key_generic_, val_generic_, resp_code_); - if (resp_code_ != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ != UNC_RC_SUCCESS) { pfc_log_error("%s:. Failed to send response(err = %u)", PFC_FUNCNAME, resp_code_); } @@ -692,10 +692,10 @@ KtRequestHandler::handle_request( /** * @brief - This method forms the command from ConfigNode pointer * @param[in]- ConfigNode*, controller*, driver* - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ template -drv_resp_code_t +UncRespCode KtRequestHandler::execute_cmd( unc::vtndrvcache::ConfigNode *cfgptr, unc::driver::controller* conn, @@ -705,7 +705,7 @@ KtRequestHandler::execute_cmd( dynamic_cast * > (cfgptr); - drv_resp_code_t resp_code_ = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code_ = UNC_DRV_RC_ERR_GENERIC; PFC_ASSERT(cache_element_ptr != NULL); @@ -744,7 +744,7 @@ KtRequestHandler::execute_cmd( break; default: pfc_log_error("%s: Invalid operation ", PFC_FUNCNAME); - resp_code_ = DRVAPI_RESPONSE_INVALID_OPERATION; + resp_code_ = UNC_DRV_RC_INVALID_OPERATION; pfc_log_debug("deleted config_cmd_ptr"); delete config_cmd_ptr; @@ -754,7 +754,7 @@ KtRequestHandler::execute_cmd( } // Revoke the commit with triggring audit for any failed Operation - if (resp_code_ != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ != UNC_RC_SUCCESS) { pfc_log_debug("Revoke the commit with triggring audit"); config_cmd_ptr->revoke(conn); } @@ -769,26 +769,26 @@ KtRequestHandler::execute_cmd( * @brief - This method handles response from controller, * doesnot support audit * @param[in] - ServerSession, odl_drv_request_header_t,ControllerFramework*, - * key,val,drv_resp_code_t - * @retval - drv_resp_code_t + * key,val,UncRespCode + * @retval - UncRespCode **/ template -drv_resp_code_t +UncRespCode KtRequestHandler::handle_response( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, unc::driver::ControllerFramework* ctrl_int, key &key_generic_, val &val_generic_, - drv_resp_code_t &controller_resp_code_ ) { + UncRespCode &controller_resp_code_ ) { ODC_FUNC_TRACE; unc::driver::odl_drv_response_header_t resp_hdr; uint32_t err_= 0; create_response_header(request_header, resp_hdr, controller_resp_code_); - drv_resp_code_t resp_code_ = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code_ = UNC_DRV_RC_ERR_GENERIC; resp_code_ = populate_response_header(sess, resp_hdr); - if (resp_code_ != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ != UNC_RC_SUCCESS) { pfc_log_error("%s: populate_response_header failed with ret_code ,%u", PFC_FUNCNAME, resp_code_); return resp_code_; @@ -798,51 +798,51 @@ KtRequestHandler::handle_response( if (err_ != 0) { pfc_log_error("%s: Failed to send resp code:(err = %d)", PFC_FUNCNAME, resp_code_); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } err_ = sess.addOutput((uint32_t) resp_hdr.key_type); if (err_ != 0) { pfc_log_error("%s: Failed to send driver data key type: (err = %d)", PFC_FUNCNAME, resp_code_); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (resp_hdr.header.data_type != UNC_DT_RUNNING) { uint32_t ret_code = sess.addOutput(key_generic_); if (ret_code) { pfc_log_error("%s: addOutput failed with ret_code ,%u", PFC_FUNCNAME, ret_code); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief - This method handles response from controller for Audit * @param[in] - ServerSession, odl_drv_request_header_t,ControllerFramework*, - * key_root_t,val_root_t,drv_resp_code_t - * @retval - drv_resp_code_t + * key_root_t,val_root_t,UncRespCode + * @retval - UncRespCode **/ template<> -drv_resp_code_t +UncRespCode KtRequestHandler::handle_response( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_request_header_t &request_header, unc::driver::ControllerFramework* ctrl_int, key_root_t &key_generic_, val_root_t &val_generic_, - drv_resp_code_t &controller_resp_code_ ) { + UncRespCode &controller_resp_code_ ) { ODC_FUNC_TRACE; controller* ctr = NULL; memset(&key_generic_, 0, sizeof(key_root_t)); unc::driver::odl_drv_response_header_t resp_hdr; create_response_header(request_header, resp_hdr, controller_resp_code_); - drv_resp_code_t resp_code_ = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code_ = UNC_DRV_RC_ERR_GENERIC; resp_code_ = populate_response_header(sess, resp_hdr); - if (resp_code_ != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code_ != UNC_RC_SUCCESS) { pfc_log_error("%s: populate_response_header failed" "with ret_code root ,%u", PFC_FUNCNAME, resp_code_); return resp_code_; @@ -856,18 +856,18 @@ KtRequestHandler::handle_response( if (ctr != NULL) { if (ctr->controller_cache == NULL) { pfc_log_error("Not getting controller_cache "); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } uint32_t size = ctr->controller_cache->audit_cfg_list_count(); pfc_log_debug("config node size is %d for controller %s", size, ctr_name.c_str()); // Not Success and Error Case check for Reps if ((size == 0) && - (resp_hdr.result == DRVAPI_RESPONSE_NO_SUCH_INSTANCE)) { + (resp_hdr.result == UNC_RC_NO_SUCH_INSTANCE)) { pfc_log_debug("%s: Value list empty and Response" "header success", PFC_FUNCNAME); pfc_log_debug("%s: Adding Root key only", PFC_FUNCNAME); - sess.addOutput((uint32_t) DRVAPI_RESPONSE_NO_SUCH_INSTANCE); + sess.addOutput((uint32_t) UNC_RC_NO_SUCH_INSTANCE); sess.addOutput((uint32_t) UNC_KT_ROOT); sess.addOutput(key_generic_); @@ -876,8 +876,8 @@ KtRequestHandler::handle_response( ctr->controller_cache = NULL; pfc_log_trace("ResponseHandler::%s Exiting", PFC_FUNCNAME); - return DRVAPI_RESPONSE_SUCCESS; - } else if (resp_hdr.result != DRVAPI_RESPONSE_SUCCESS) { + return UNC_RC_SUCCESS; + } else if (resp_hdr.result != UNC_RC_SUCCESS) { pfc_log_debug("%s: Response header result Error", PFC_FUNCNAME); pfc_log_debug("%s: Adding Root Key only", PFC_FUNCNAME); @@ -888,7 +888,7 @@ KtRequestHandler::handle_response( delete ctr->controller_cache; ctr->controller_cache = NULL; pfc_log_trace("ResponseHandler::%s Exiting", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } std::auto_ptr @@ -899,7 +899,7 @@ KtRequestHandler::handle_response( if (err_ != 0) { pfc_log_fatal("%s: Failed to send resp code audit:(err = %d)", PFC_FUNCNAME, err_); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } bool first = true; @@ -913,7 +913,7 @@ KtRequestHandler::handle_response( delete ctr->controller_cache; ctr->controller_cache = NULL; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } if (first) { first = false; @@ -931,7 +931,7 @@ KtRequestHandler::handle_response( delete ctr->controller_cache; ctr->controller_cache = NULL; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("Add key type success"); @@ -947,7 +947,7 @@ KtRequestHandler::handle_response( delete ctr->controller_cache; ctr->controller_cache = NULL; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("Add key success"); @@ -958,7 +958,7 @@ KtRequestHandler::handle_response( delete ctr->controller_cache; ctr->controller_cache = NULL; - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("Add val success"); } // for loop @@ -967,21 +967,21 @@ KtRequestHandler::handle_response( ctr->controller_cache = NULL; } else { pfc_log_error("%s: ctr is NULL", PFC_FUNCNAME); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } pfc_log_debug("UNC_DT_RUNNING processing complete"); } else { pfc_log_error("%s: unsupported datatype %u", PFC_FUNCNAME, resp_hdr.header.data_type); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief - This method creates the Response Header * @param[in]- odl_drv_response_header_t, - * odl_drv_request_header_t,drv_resp_code_t + * odl_drv_request_header_t,UncRespCode * @retval - void */ template @@ -989,7 +989,7 @@ void KtRequestHandler::create_response_header( unc::driver::odl_drv_request_header_t &reqhdr, unc::driver::odl_drv_response_header_t &resphdr, - drv_resp_code_t &resp_code_) { + UncRespCode &resp_code_) { memset(&resphdr, 0, sizeof(resphdr)); /* Copy parameters from the request header to the response header. */ @@ -1024,16 +1024,16 @@ KtRequestHandler::create_response_header( /** * @brief - This method populates the Response Header * @param[in]- ServerSession, odl_drv_response_header_t - * @retval - drv_resp_code_t + * @retval - UncRespCode **/ template -drv_resp_code_t +UncRespCode KtRequestHandler::populate_response_header( pfc::core::ipc::ServerSession &sess, unc::driver::odl_drv_response_header_t &resp_hdr) { ODC_FUNC_TRACE; - uint32_t err = DRVAPI_RESPONSE_FAILURE; + uint32_t err = UNC_DRV_RC_ERR_GENERIC; const char* ctr_name = reinterpret_cast (resp_hdr.controller_name); @@ -1057,7 +1057,7 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send client session id: (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends config_id */ @@ -1065,7 +1065,7 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send configurationid: (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends controller_name */ @@ -1075,7 +1075,7 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send controller id: (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends domain-id*/ @@ -1084,7 +1084,7 @@ KtRequestHandler::populate_response_header( err = sess.addOutput(domain_id); if (err) { pfc_log_fatal("%s: Failed to send domain id:(err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends operation */ @@ -1092,7 +1092,7 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send driver data operation (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends max-rep-count */ @@ -1100,7 +1100,7 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send driver data max_rep_count: (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends option1 */ @@ -1108,7 +1108,7 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send driver data option1 : (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends option2 */ @@ -1116,7 +1116,7 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send driver data option2 : (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } /* Sends data type */ @@ -1124,10 +1124,10 @@ KtRequestHandler::populate_response_header( if (err) { pfc_log_fatal("%s: Failed to send driver data data_type: (err = %d)", PFC_FUNCNAME, err); - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** diff --git a/coordinator/modules/vtndrvintf/include/vtn_drv_transaction_handle.hh b/coordinator/modules/vtndrvintf/include/vtn_drv_transaction_handle.hh index 67988bf0..d1db4afe 100644 --- a/coordinator/modules/vtndrvintf/include/vtn_drv_transaction_handle.hh +++ b/coordinator/modules/vtndrvintf/include/vtn_drv_transaction_handle.hh @@ -256,6 +256,24 @@ class DriverTxnInterface : public unc::tclib::TcLibInterface { return unc::tclib::TC_SUCCESS; } + /** + * @brief Handling of audit start in driver modules for audit operation + * @param[in] session_id + * session on which audit request sent (user audit) + * session id will be 0 for driver audit + * @param[in] ctr_type controller type openflow/overlay/legacy + * @param[in] controller_id controller id intended for audit + * @param[in] force_reconnect set to audit controller after reconnecting. + * @retval TC_SUCCESS audit start success + * @retval TC_FAILURE audit start failed + */ + unc::tclib::TcCommonRet HandleAuditStart(uint32_t session_id, + unc_keytype_ctrtype_t ctr_type, + std::string controller_id, + pfc_bool_t force_reconnect) { + return unc::tclib::TC_SUCCESS; + } + /** * @brief - Handles Audit end * @param[in] - session id diff --git a/coordinator/modules/vtndrvintf/vtn_drv_module.cc b/coordinator/modules/vtndrvintf/vtn_drv_module.cc index a6a37fde..28f358b4 100644 --- a/coordinator/modules/vtndrvintf/vtn_drv_module.cc +++ b/coordinator/modules/vtndrvintf/vtn_drv_module.cc @@ -111,7 +111,7 @@ pfc_bool_t VtnDrvIntf::init(void) { vbrif_req)); KtHandler* vbrvlanmap_req = new unc::driver::KtRequestHandler (NULL); if (NULL == vbrvlanmap_req) { @@ -172,7 +172,7 @@ pfc_ipcresp_t VtnDrvIntf::ipcService(pfc::core::ipc::ServerSession &sess, pfc::core::ipc::ServerSession* p_sess=&sess; odl_drv_request_header_t request_hdr; - drv_resp_code_t resp_code = DRVAPI_RESPONSE_FAILURE; + UncRespCode resp_code = UNC_DRV_RC_ERR_GENERIC; memset(&request_hdr, 0, sizeof(request_hdr)); VtnDrvRetEnum result = get_request_header(p_sess, request_hdr); @@ -199,11 +199,11 @@ pfc_ipcresp_t VtnDrvIntf::ipcService(pfc::core::ipc::ServerSession &sess, } resp_code = hnd_ptr->handle_request(sess, request_hdr, ctrl_inst_); - if (resp_code != DRVAPI_RESPONSE_SUCCESS) { + if (resp_code != UNC_RC_SUCCESS) { pfc_log_debug("handle_request fail for key:%d", request_hdr.key_type); return PFC_IPCRESP_FATAL; } - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } diff --git a/coordinator/modules/vtndrvintf/vtn_drv_transaction_handle.cc b/coordinator/modules/vtndrvintf/vtn_drv_transaction_handle.cc index af8c96f5..3e005b93 100644 --- a/coordinator/modules/vtndrvintf/vtn_drv_transaction_handle.cc +++ b/coordinator/modules/vtndrvintf/vtn_drv_transaction_handle.cc @@ -85,7 +85,7 @@ unc::tclib::TcCommonRet DriverTxnInterface::HandleCommitGlobalCommit( pfc_log_debug("%s Controller status is down, send disconnected", \ PFC_FUNCNAME); tclib_ptr->TcLibWriteControllerInfo(ctr_name, - (uint32_t)DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED, 0); + (uint32_t)UNC_RC_CTR_DISCONNECTED, 0); continue; } } @@ -104,7 +104,7 @@ unc::tclib::TcCommonRet DriverTxnInterface::HandleCommitGlobalCommit( pfc_log_debug("TcLibWriteControllerInfo for controller:%s", ctr_name.c_str()); tclib_ptr->TcLibWriteControllerInfo(ctr_name, - (uint32_t)DRVAPI_RESPONSE_SUCCESS, 0); + (uint32_t)UNC_RC_SUCCESS, 0); } } if (Abort == PFC_TRUE) @@ -225,7 +225,7 @@ unc::tclib::TcCommonRet DriverTxnInterface::HandleCommitVoteRequest( std::string ctr_name; driver* drv = NULL; controller* ctr = NULL; - uint32_t retc = DRVAPI_RESPONSE_FAILURE; + uint32_t retc = UNC_DRV_RC_ERR_GENERIC; ctr_iter iter; unc::tclib::TcCommonRet ret_code = unc::tclib::TC_SUCCESS; unc::tclib::TcLibModule* tclib_ptr = @@ -245,7 +245,7 @@ unc::tclib::TcCommonRet DriverTxnInterface::HandleCommitVoteRequest( pfc_log_debug("%s Controller status is down, send disconnected", \ PFC_FUNCNAME); tclib_ptr->TcLibWriteControllerInfo(ctr_name, - (uint32_t)DRVAPI_RESPONSE_CONTROLLER_DISCONNECTED, 0); + (uint32_t)UNC_RC_CTR_DISCONNECTED, 0); ret_code = unc::tclib::TC_SUCCESS; continue; } @@ -265,7 +265,7 @@ unc::tclib::TcCommonRet DriverTxnInterface::HandleCommitVoteRequest( pfc_log_debug("Exiting HandleCommitVoteRequest"); return unc::tclib::TC_FAILURE; } else { - retc = DRVAPI_RESPONSE_SUCCESS; + retc = UNC_RC_SUCCESS; } } if (ret_code == unc::tclib::TC_SUCCESS) { @@ -293,7 +293,7 @@ unc::tclib::TcCommonRet DriverTxnInterface::HandleCommitCache controller* ctr, driver* drv) { ODC_FUNC_TRACE; - uint32_t retc = DRVAPI_RESPONSE_FAILURE; + uint32_t retc = UNC_DRV_RC_ERR_GENERIC; unc::tclib::TcCommonRet ret_code = unc::tclib::TC_FAILURE; PFC_ASSERT(ctr != NULL); @@ -322,7 +322,7 @@ unc::tclib::TcCommonRet DriverTxnInterface::HandleCommitCache } PFC_ASSERT(hnd_ptr != NULL); retc = hnd_ptr->execute_cmd(cfgnode, ctr, drv); - if (retc == DRVAPI_RESPONSE_SUCCESS) + if (retc == UNC_RC_SUCCESS) ret_code = unc::tclib::TC_SUCCESS; // any command execution failed for controller write the error to Tclib if (ret_code != unc::tclib::TC_SUCCESS) { diff --git a/coordinator/sql/create_uppl_tables.sql b/coordinator/sql/create_uppl_tables.sql index f47dae40..3a6a2121 100644 --- a/coordinator/sql/create_uppl_tables.sql +++ b/coordinator/sql/create_uppl_tables.sql @@ -1,5 +1,5 @@ -- --- Copyright (c) 2012-2013 NEC Corporation +-- Copyright (c) 2012-2014 NEC Corporation -- All rights reserved. -- -- This program and the accompanying materials are made available under the @@ -30,9 +30,10 @@ create table if not exists s_controller_table ( enable_audit smallint default 0, actual_version varchar(32), oper_status smallint default 0, - valid char(9), + port integer, + valid char(10), cs_row_status smallint, - cs_attr char(9) + cs_attr char(10) ); create table if not exists s_ctr_domain_table( @@ -73,9 +74,10 @@ create table if not exists c_controller_table ( enable_audit smallint default 0, actual_version varchar(32), oper_status smallint default 0, - valid char(9), + port integer, + valid char(10), cs_row_status smallint, - cs_attr char(9) + cs_attr char(10) ); create table if not exists c_ctr_domain_table( @@ -116,9 +118,10 @@ create table if not exists r_controller_table ( enable_audit smallint default 0, actual_version varchar(32), oper_status smallint default 0, - valid char(9), + port integer, + valid char(10), cs_row_status smallint default 5, - cs_attr char(9) + cs_attr char(10) ); create table if not exists r_ctr_domain_table( diff --git a/coordinator/sql/os_vtn_db_create.sql b/coordinator/sql/os_vtn_db_create.sql new file mode 100644 index 00000000..26b5f886 --- /dev/null +++ b/coordinator/sql/os_vtn_db_create.sql @@ -0,0 +1,95 @@ +-- +-- Copyright (c) 2013-2014 NEC Corporation +-- All rights reserved. +-- +-- This program and the accompanying materials are made available under the +-- terms of the Eclipse Public License v1.0 which accompanies this +-- distribution, and is available at http://www.eclipse.org/legal/epl-v10.html +-- + +CREATE TABLE os_controller_tbl +( + os_controller_id character varying(31) NOT NULL, + os_controller_counter integer NOT NULL DEFAULT 1, + CONSTRAINT pk_os_controller PRIMARY KEY (os_controller_counter), + CONSTRAINT ck_os_controller CHECK (os_controller_counter = 1) +); + +CREATE TABLE os_free_counter_tbl +( + os_res_id character varying(7) NOT NULL, + os_vtn_name character varying(31) NOT NULL, + os_res_counter integer NOT NULL, + CONSTRAINT pk_os_free_counter PRIMARY KEY (os_vtn_name, os_res_id, os_res_counter) +); + +CREATE TABLE os_vtn_tbl +( + os_vtn_id integer NOT NULL, + os_vtn_name character varying(31) NOT NULL, + CONSTRAINT pk_os_vtn PRIMARY KEY (os_vtn_name), + CONSTRAINT max_val CHECK (os_vtn_id >= 0) +); + +CREATE TABLE os_vbr_tbl +( + os_vbr_id integer NOT NULL, + os_vtn_name character varying(31) NOT NULL, + os_vbr_name character varying(31) NOT NULL, + CONSTRAINT pk_os_vbr PRIMARY KEY (os_vtn_name, os_vbr_name), + CONSTRAINT fk_os_vbr FOREIGN KEY (os_vtn_name) + REFERENCES os_vtn_tbl (os_vtn_name) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT max_val CHECK (os_vbr_id >= 0) +); + +CREATE TABLE os_vbr_if_tbl +( + os_vbr_if_id integer NOT NULL, + os_vtn_name character varying(31) NOT NULL, + os_vbr_name character varying(31) NOT NULL, + os_vbr_if_name character varying(31) NOT NULL, + os_map_type character(7) NOT NULL, + os_logical_port_id character varying(319) NOT NULL, + CONSTRAINT pk_os_vbr_if PRIMARY KEY (os_vtn_name, os_vbr_name, os_vbr_if_name), + CONSTRAINT fk_os_vbr_if FOREIGN KEY (os_vtn_name, os_vbr_name) + REFERENCES os_vbr_tbl (os_vtn_name, os_vbr_name) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT max_val CHECK (os_vbr_if_id >= 0) +); + +CREATE TABLE os_vrt_tbl +( + os_vtn_name character varying(31) NOT NULL, + os_vrt_name character varying(31) NOT NULL, + CONSTRAINT pk_os_vrt PRIMARY KEY (os_vtn_name, os_vrt_name), + CONSTRAINT fk_os_vrt FOREIGN KEY (os_vtn_name) + REFERENCES os_vtn_tbl (os_vtn_name) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT uk_vtn_name UNIQUE (os_vtn_name) +); + +CREATE TABLE os_vrt_if_tbl +( + os_vrt_if_id integer NOT NULL, + os_vtn_name character varying(31) NOT NULL, + os_vrt_name character varying(31) NOT NULL, + os_vrt_if_name character varying(31) NOT NULL, + os_vbr_name character varying(31) NOT NULL, + CONSTRAINT pk_os_vrt_if PRIMARY KEY (os_vtn_name, os_vrt_name, os_vrt_if_name), + CONSTRAINT fk_os_vrt_if FOREIGN KEY (os_vtn_name, os_vrt_name) + REFERENCES os_vrt_tbl (os_vtn_name, os_vrt_name) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT max_val CHECK (os_vrt_if_id > 0) +); + +CREATE TABLE os_vrt_route_tbl +( + os_vtn_name character varying(31) NOT NULL, + os_vrt_name character varying(31) NOT NULL, + os_vrt_route_name character varying(47) NOT NULL, + CONSTRAINT pk_os_vrt_route PRIMARY KEY (os_vtn_name, os_vrt_name, os_vrt_route_name), + CONSTRAINT fk_os_vrt_route FOREIGN KEY (os_vtn_name, os_vrt_name) + REFERENCES os_vrt_tbl (os_vtn_name, os_vrt_name) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +); diff --git a/coordinator/sql/tc.sql b/coordinator/sql/tc.sql index 3e4f78d0..28fd4b17 100644 --- a/coordinator/sql/tc.sql +++ b/coordinator/sql/tc.sql @@ -1,5 +1,5 @@ -- --- Copyright (c) 2012-2013 NEC Corporation +-- Copyright (c) 2012-2014 NEC Corporation -- All rights reserved. -- -- This program and the accompanying materials are made available under the @@ -15,6 +15,7 @@ CREATE TABLE TC_UNC_CONF_TABLE ( CREATE TABLE TC_RECOVERY_TABLE ( database integer DEFAULT 0, -- database to be audited date_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -- timestamp + failover_instance integer DEFAULT 0, -- num of failovers occured operation integer DEFAULT 0 -- operation that caused failover ); diff --git a/coordinator/sql/upll_create_table.sql b/coordinator/sql/upll_create_table.sql index a33514b3..36f9c86a 100644 --- a/coordinator/sql/upll_create_table.sql +++ b/coordinator/sql/upll_create_table.sql @@ -1,5 +1,5 @@ -- --- Copyright (c) 2012-2013 NEC Corporation +-- Copyright (c) 2012-2014 NEC Corporation -- All rights reserved. -- -- This program and the accompanying materials are made available under the @@ -84,10 +84,12 @@ CREATE TABLE su_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 3, cs_vlanid smallint default 3, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -1064,7 +1066,8 @@ CREATE TABLE ca_vbr_tbl ( cs_host_addr smallint default 3, cs_host_addr_mask smallint default 3, flags smallint default 0, - PRIMARY KEY(vtn_name, vbridge_name)); + PRIMARY KEY(vtn_name, vbridge_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vbr_vlanmap_tbl ( vtn_name varchar(32) default ' ', @@ -1072,13 +1075,16 @@ CREATE TABLE ca_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 3, cs_vlanid smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); + PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid), + FOREIGN KEY(vtn_name, vbridge_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_if_tbl ( vtn_name varchar(32) default ' ', @@ -1114,7 +1120,8 @@ CREATE TABLE ca_vbr_if_tbl ( cs_logical_port_id smallint default 3, cs_vlanid smallint default 3, cs_tagged smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, if_name)); + PRIMARY KEY(vtn_name, vbridge_name, if_name), + FOREIGN KEY(vtn_name, vbridge_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vrt_tbl ( vtn_name varchar(32) default ' ', @@ -1136,7 +1143,8 @@ CREATE TABLE ca_vrt_tbl ( cs_domain_id smallint default 3, cs_vrt_description smallint default 3, cs_dhcprelay_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name)); + PRIMARY KEY(vtn_name, vrouter_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vrt_if_tbl ( vtn_name varchar(32) default ' ', @@ -1164,7 +1172,8 @@ CREATE TABLE ca_vrt_if_tbl ( cs_mask smallint default 3, cs_mac_addr smallint default 3, cs_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, if_name)); + PRIMARY KEY(vtn_name, vrouter_name, if_name), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_vnode_rename_tbl ( ctrlr_vtn_name varchar(32) default ' ', @@ -1212,7 +1221,8 @@ CREATE TABLE ca_vlink_tbl ( cs_boundary_name smallint default 3, cs_vlanid smallint default 3, cs_description smallint default 3, - PRIMARY KEY(vtn_name, vlink_name)); + PRIMARY KEY(vtn_name, vlink_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vlink_rename_tbl ( ctrlr_vtn_name varchar(32) default ' ', @@ -1237,7 +1247,8 @@ CREATE TABLE ca_static_ip_route_tbl ( valid_metric smallint default 0, cs_rowstatus smallint default 3, cs_metric smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, dst_ip_addr, mask, next_hop_addr, nwm_name)); + PRIMARY KEY(vtn_name, vrouter_name, dst_ip_addr, mask, next_hop_addr, nwm_name), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_dhcp_relay_server_tbl ( vtn_name varchar(32) default ' ', @@ -1247,7 +1258,8 @@ CREATE TABLE ca_dhcp_relay_server_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, server_ip_addr)); + PRIMARY KEY(vtn_name, vrouter_name, server_ip_addr), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_dhcp_relay_if_tbl ( vtn_name varchar(32) default ' ', @@ -1257,7 +1269,8 @@ CREATE TABLE ca_dhcp_relay_if_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vrouter_name, if_name)); + PRIMARY KEY(vtn_name, vrouter_name, if_name), + FOREIGN KEY(vtn_name, vrouter_name) REFERENCES ca_vrt_tbl(vtn_name, vrouter_name)); CREATE TABLE ca_vbr_nwmon_grp_tbl ( vtn_name varchar(32) default ' ', @@ -1272,7 +1285,8 @@ CREATE TABLE ca_vbr_nwmon_grp_tbl ( valid_oper_status smallint default 0, cs_rowstatus smallint default 3, cs_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, nwm_name)); + PRIMARY KEY(vtn_name, vbridge_name, nwm_name), + FOREIGN KEY(vtn_name, vbridge_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_nwmon_host_tbl ( vtn_name varchar(32) default ' ', @@ -1298,7 +1312,8 @@ CREATE TABLE ca_vbr_nwmon_host_tbl ( cs_failure_count smallint default 3, cs_recovery_count smallint default 3, cs_wait_time smallint default 3, - PRIMARY KEY(vtn_name, vbridge_name, nwm_name, host_address)); + PRIMARY KEY(vtn_name, vbridge_name, nwm_name, host_address), + FOREIGN KEY(vtn_name, vbridge_name, nwm_name) REFERENCES ca_vbr_nwmon_grp_tbl(vtn_name, vbridge_name, nwm_name)); CREATE TABLE ca_vunknown_tbl ( vtn_name varchar(32) default ' ', @@ -1314,7 +1329,8 @@ CREATE TABLE ca_vunknown_tbl ( cs_description smallint default 3, cs_type smallint default 3, cs_domain_id smallint default 3, - PRIMARY KEY(vtn_name, vunknown_name)); + PRIMARY KEY(vtn_name, vunknown_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vunknown_if_tbl ( vtn_name varchar(32) default ' ', @@ -1329,7 +1345,8 @@ CREATE TABLE ca_vunknown_if_tbl ( cs_rowstatus smallint default 3, cs_description smallint default 3, cs_admin_status smallint default 3, - PRIMARY KEY(vtn_name, vunknown_name, if_name)); + PRIMARY KEY(vtn_name, vunknown_name, if_name), + FOREIGN KEY(vtn_name, vunknown_name) REFERENCES ca_vunknown_tbl(vtn_name, vunknown_name)); CREATE TABLE ca_vtep_tbl ( vtn_name varchar(32) default ' ', @@ -1348,7 +1365,8 @@ CREATE TABLE ca_vtep_tbl ( cs_description smallint default 3, cs_controller_name smallint default 3, cs_domain_id smallint default 3, - PRIMARY KEY(vtn_name, vtep_name)); + PRIMARY KEY(vtn_name, vtep_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtep_if_tbl ( vtn_name varchar(32) default ' ', @@ -1378,7 +1396,8 @@ CREATE TABLE ca_vtep_if_tbl ( cs_logical_port_id smallint default 3, cs_vlanid smallint default 3, cs_tagged smallint default 3, - PRIMARY KEY(vtn_name, vtep_name, if_name)); + PRIMARY KEY(vtn_name, vtep_name, if_name), + FOREIGN KEY(vtn_name, vtep_name) REFERENCES ca_vtep_tbl(vtn_name, vtep_name)); CREATE TABLE ca_vtep_grp_tbl ( vtn_name varchar(32) default ' ', @@ -1391,7 +1410,8 @@ CREATE TABLE ca_vtep_grp_tbl ( cs_rowstatus smallint default 3, cs_controller_name smallint default 3, cs_description smallint default 3, - PRIMARY KEY(vtn_name, vtepgrp_name)); + PRIMARY KEY(vtn_name, vtepgrp_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtep_grp_mem_tbl ( vtn_name varchar(32) default ' ', @@ -1401,7 +1421,8 @@ CREATE TABLE ca_vtep_grp_mem_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vtepgrp_name, vtepgrp_member_name)); + PRIMARY KEY(vtn_name, vtepgrp_name, vtepgrp_member_name), + FOREIGN KEY(vtn_name, vtepgrp_name) REFERENCES ca_vtep_grp_tbl(vtn_name, vtepgrp_name)); CREATE TABLE ca_vtunnel_tbl ( vtn_name varchar(32) default ' ', @@ -1429,7 +1450,8 @@ CREATE TABLE ca_vtunnel_tbl ( cs_underlay_vtn_name smallint default 3, cs_vtepgrp_name smallint default 3, cs_label smallint default 3, - PRIMARY KEY(vtn_name, vtunnel_name)); + PRIMARY KEY(vtn_name, vtunnel_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtunnel_if_tbl ( vtn_name varchar(32) default ' ', @@ -1459,7 +1481,8 @@ CREATE TABLE ca_vtunnel_if_tbl ( cs_logical_port_id smallint default 3, cs_vlanid smallint default 3, cs_tagged smallint default 3, - PRIMARY KEY(vtn_name, vtunnel_name, if_name)); + PRIMARY KEY(vtn_name, vtunnel_name, if_name), + FOREIGN KEY(vtn_name, vtunnel_name) REFERENCES ca_vtunnel_tbl(vtn_name, vtunnel_name)); CREATE TABLE ca_flowlist_tbl ( flowlist_name varchar(33) default ' ', @@ -1557,7 +1580,8 @@ CREATE TABLE ca_flowlist_entry_tbl ( cs_icmp_code smallint default 3, cs_icmpv6_type smallint default 3, cs_icmpv6_code smallint default 3, - PRIMARY KEY(flowlist_name, sequence_num)); + PRIMARY KEY(flowlist_name, sequence_num), + FOREIGN KEY(flowlist_name) REFERENCES ca_flowlist_tbl(flowlist_name)); CREATE TABLE ca_flowlist_entry_ctrlr_tbl ( flowlist_name varchar(33) default ' ', @@ -1690,7 +1714,8 @@ CREATE TABLE ca_policingprofile_entry_tbl ( cs_red_priority smallint default 3, cs_red_dscp smallint default 3, cs_red_drop smallint default 3, - PRIMARY KEY(policingprofile_name, sequence_num)); + PRIMARY KEY(policingprofile_name, sequence_num), + FOREIGN KEY(policingprofile_name) REFERENCES ca_policingprofile_tbl(policingprofile_name)); CREATE TABLE ca_policingprofile_entry_ctrlr_tbl ( policingprofile_name varchar(33) default ' ', @@ -1741,7 +1766,8 @@ CREATE TABLE ca_vtn_flowfilter_tbl ( direction smallint default 0, flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, direction)); + PRIMARY KEY(vtn_name, direction), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtn_flowfilter_ctrlr_tbl ( vtn_name varchar(32) default ' ', @@ -1773,7 +1799,8 @@ CREATE TABLE ca_vtn_flowfilter_entry_tbl ( cs_nwn_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, direction, sequence_num), + FOREIGN KEY(vtn_name, direction) REFERENCES ca_vtn_flowfilter_tbl(vtn_name, direction)); CREATE TABLE ca_vtn_flowfilter_entry_ctrlr_tbl ( vtn_name varchar(32) default ' ', @@ -1803,7 +1830,8 @@ CREATE TABLE ca_vbr_flowfilter_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, direction)); + PRIMARY KEY(vtn_name, vbr_name, direction), + FOREIGN KEY(vtn_name, vbr_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_flowfilter_entry_tbl ( vtn_name varchar(32) default ' ', @@ -1841,7 +1869,8 @@ CREATE TABLE ca_vbr_flowfilter_entry_tbl ( cs_nwm_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, vbr_name, direction, sequence_num), + FOREIGN KEY(vtn_name, vbr_name, direction) REFERENCES ca_vbr_flowfilter_tbl(vtn_name, vbr_name, direction)); CREATE TABLE ca_vbr_if_flowfilter_tbl ( vtn_name varchar(32) default ' ', @@ -1852,7 +1881,8 @@ CREATE TABLE ca_vbr_if_flowfilter_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction)); + PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction), + FOREIGN KEY(vtn_name, vbr_name, vbr_if_name) REFERENCES ca_vbr_if_tbl(vtn_name, vbridge_name, if_name)); CREATE TABLE ca_vbr_if_flowfilter_entry_tbl ( vtn_name varchar(32) default ' ', @@ -1891,7 +1921,8 @@ CREATE TABLE ca_vbr_if_flowfilter_entry_tbl ( cs_nwm_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, vbr_name, vbr_if_name, direction, sequence_num), + FOREIGN KEY(vtn_name, vbr_name, vbr_if_name, direction) REFERENCES ca_vbr_if_flowfilter_tbl(vtn_name, vbr_name, vbr_if_name, direction)); CREATE TABLE ca_vrt_if_flowfilter_tbl ( vtn_name varchar(32) default ' ', @@ -1902,7 +1933,8 @@ CREATE TABLE ca_vrt_if_flowfilter_tbl ( domain_id varchar(32) default ' ', flags smallint default 0, cs_rowstatus smallint default 3, - PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction)); + PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction), + FOREIGN KEY(vtn_name, vrt_name, vrt_if_name) REFERENCES ca_vrt_if_tbl(vtn_name, vrouter_name, if_name)); CREATE TABLE ca_vrt_if_flowfilter_entry_tbl ( vtn_name varchar(32) default ' ', @@ -1941,7 +1973,8 @@ CREATE TABLE ca_vrt_if_flowfilter_entry_tbl ( cs_nwm_name smallint default 3, cs_dscp smallint default 3, cs_priority smallint default 3, - PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction, sequence_num)); + PRIMARY KEY(vtn_name, vrt_name, vrt_if_name, direction, sequence_num), + FOREIGN KEY(vtn_name, vrt_name, vrt_if_name, direction) REFERENCES ca_vrt_if_flowfilter_tbl(vtn_name, vrt_name, vrt_if_name, direction)); CREATE TABLE ca_vtn_policingmap_tbl ( vtn_name varchar(32) default ' ', @@ -1950,7 +1983,8 @@ CREATE TABLE ca_vtn_policingmap_tbl ( valid_policername smallint default 0, cs_rowstatus smallint default 3, cs_policername smallint default 3, - PRIMARY KEY(vtn_name)); + PRIMARY KEY(vtn_name), + FOREIGN KEY(vtn_name) REFERENCES ca_vtn_tbl(vtn_name)); CREATE TABLE ca_vtn_policingmap_ctrlr_tbl ( vtn_name varchar(32) default ' ', @@ -1973,7 +2007,8 @@ CREATE TABLE ca_vbr_policingmap_tbl ( valid_policername smallint default 0, cs_rowstatus smallint default 3, cs_policername smallint default 3, - PRIMARY KEY(vtn_name, vbr_name)); + PRIMARY KEY(vtn_name, vbr_name), + FOREIGN KEY(vtn_name, vbr_name) REFERENCES ca_vbr_tbl(vtn_name, vbridge_name)); CREATE TABLE ca_vbr_if_policingmap_tbl ( vtn_name varchar(32) default ' ', @@ -1986,7 +2021,8 @@ CREATE TABLE ca_vbr_if_policingmap_tbl ( valid_policername smallint default 0, cs_rowstatus smallint default 3, cs_policername smallint default 3, - PRIMARY KEY(vtn_name, vbr_name, vbr_if_name)); + PRIMARY KEY(vtn_name, vbr_name, vbr_if_name), + FOREIGN KEY(vtn_name, vbr_name, vbr_if_name) REFERENCES ca_vbr_if_tbl(vtn_name, vbridge_name, if_name)); CREATE TABLE ca_ctrlr_tbl ( name varchar(32) default ' ', @@ -2069,10 +2105,12 @@ CREATE TABLE ru_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 3, cs_vlanid smallint default 3, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -2113,8 +2151,6 @@ CREATE TABLE ru_vbr_if_tbl ( cs_tagged smallint default 3, PRIMARY KEY(vtn_name, vbridge_name, if_name)); -CREATE INDEX index_for_show_perf ON ru_vbr_if_tbl (vtn_name, vex_name, valid_vex_name); - CREATE TABLE ru_vrt_tbl ( vtn_name varchar(32) default ' ', vrouter_name varchar(32) default ' ', @@ -3059,10 +3095,12 @@ CREATE TABLE im_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 1, cs_vlanid smallint default 1, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -4047,10 +4085,12 @@ CREATE TABLE au_vbr_vlanmap_tbl ( logical_port_id varchar(320) default ' ', logical_port_id_valid smallint default 0, vlanid integer default 0, + bdry_ref_count bigint default 0, controller_name varchar(32) default ' ', domain_id varchar(32) default ' ', flags smallint default 0, valid_vlanid smallint default 0, + valid_bdry_ref_count smallint default 0, cs_rowstatus smallint default 1, cs_vlanid smallint default 1, PRIMARY KEY(vtn_name, vbridge_name, logical_port_id, logical_port_id_valid)); @@ -4962,3 +5002,10 @@ CREATE TABLE au_vbr_if_policingmap_tbl ( cs_rowstatus smallint default 1, cs_policername smallint default 1, PRIMARY KEY(vtn_name, vbr_name, vbr_if_name)); + +CREATE INDEX ca_vbr_if_tbl_semindex ON ca_vbr_if_tbl USING btree (logical_port_id, controller_name, domain_id, valid_portmap, valid_logical_port_id); +CREATE INDEX ca_policingprofile_entry_tbl_semindex ON ca_policingprofile_entry_tbl USING btree (flowlist, valid_flowlist); +CREATE INDEX ca_vtn_policingmap_tbl_semindex ON ca_vtn_policingmap_tbl USING btree (policername, valid_policername); +CREATE INDEX ca_vbr_policingmap_tbl_semindex ON ca_vbr_policingmap_tbl USING btree (policername, valid_policername); +CREATE INDEX ca_vbr_if_policingmap_tbl_semindex ON ca_vbr_if_policingmap_tbl USING btree (policername, valid_policername); +CREATE INDEX ru_vbr_if_tbl_showindex ON ru_vbr_if_tbl (vtn_name, vex_name, valid_vex_name); \ No newline at end of file diff --git a/coordinator/test/modules/odcdriver/ut/odc_link_ut.cc b/coordinator/test/modules/odcdriver/ut/odc_link_ut.cc index fd4556df..98c9ad96 100644 --- a/coordinator/test/modules/odcdriver/ut/odc_link_ut.cc +++ b/coordinator/test/modules/odcdriver/ut/odc_link_ut.cc @@ -28,7 +28,7 @@ TEST(odcdriver_link, test_link_null_resp) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcLink obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); delete ctr->physical_port_cache; delete ctr; ctr= NULL; @@ -50,7 +50,7 @@ TEST(odcdriver_link, test_link_invalid_resp) { const pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcLink obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -75,7 +75,7 @@ TEST(odcdriver_link, test_link_data_add_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; delete ctr; @@ -101,7 +101,7 @@ TEST(odcdriver_link, test_link_data_add) { int flag = 1; pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); unc::vtndrvcache::ConfigNode *cfgnode_cache = NULL; @@ -161,7 +161,7 @@ TEST(odcdriver_link, test_link_data_add_wrong_resp) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; delete ctr; @@ -185,7 +185,7 @@ TEST(odcdriver_link, test_link_data_add_resp) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); @@ -259,13 +259,13 @@ TEST(odcdriver_link, test_link_data_add_resp_dynamically) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::string LINK_RESP_ADD_DYNAMICALLY = "172.16.0.35"; inet_aton(LINK_RESP_ADD_DYNAMICALLY.c_str(), &val_ctr.ip_address); cache_empty = PFC_FALSE; ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); @@ -329,12 +329,12 @@ TEST(odcdriver_link, pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); inet_aton(LINK_RESP_ADD.c_str(), &val_ctr.ip_address); cache_empty = PFC_FALSE; ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); @@ -409,13 +409,13 @@ TEST(odcdriver_link, pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); inet_aton(LINK_RESP_UPDATE.c_str(), &val_ctr.ip_address); cache_empty = PFC_FALSE; ctr->update_ctr(key_ctr, val_ctr); ctr->set_connection_status(0); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); unc::vtndrvcache::ConfigNode *cfgnode_cache = NULL; @@ -477,14 +477,14 @@ TEST(odcdriver_link, test_link_data_update_dynamically) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::string LINK_RESP_ONE_LINK = "172.16.0.32"; inet_aton(LINK_RESP_ONE_LINK.c_str(), &val_ctr.ip_address); cache_empty = PFC_FALSE; ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); int flag = 1; std::auto_ptr @@ -548,13 +548,13 @@ TEST(odcdriver_link, test_link_data_delete) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); std::string LINK_RESP_DELETE = "172.16.0.37"; inet_aton(LINK_RESP_DELETE.c_str(), &val_ctr.ip_address); cache_empty = PFC_FALSE; ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -580,7 +580,7 @@ TEST(odcdriver_link, test_link_no_data) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -606,7 +606,7 @@ TEST(odcdriver_link, test_link_edge_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -632,7 +632,7 @@ TEST(odcdriver_link, test_link_tail_node_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -658,7 +658,7 @@ TEST(odcdriver_link, test_link_node_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -683,7 +683,7 @@ TEST(odcdriver_link, test_link_node_id_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -709,7 +709,7 @@ TEST(odcdriver_link, test_link_tail_id_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -736,7 +736,7 @@ TEST(odcdriver_link, test_link_head_node_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -761,7 +761,7 @@ TEST(odcdriver_link, test_link_head_id_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -787,7 +787,7 @@ TEST(odcdriver_link, test_link_head_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -813,7 +813,7 @@ TEST(odcdriver_link, test_link_head_node_resp_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -839,7 +839,7 @@ TEST(odcdriver_link, test_link_head_node_prop_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -865,7 +865,7 @@ TEST(odcdriver_link, test_link_head_node_prop_namewrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -891,7 +891,7 @@ TEST(odcdriver_link, test_link_head_node_prop_name_value_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -918,7 +918,7 @@ TEST(odcdriver_link, test_link_head_node_prop_state_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -946,7 +946,7 @@ TEST(odcdriver_link, test_link_head_node_prop_state_value_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -972,7 +972,7 @@ TEST(odcdriver_link, test_link_head_node_prop_config_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -999,7 +999,7 @@ TEST(odcdriver_link, test_link_head_node_prop_config_value_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -1026,7 +1026,7 @@ TEST(odcdriver_link, test_link_edge_prop_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj_link.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -1056,7 +1056,7 @@ TEST(odcdriver_link, pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); int flag = 1; for (cfgnode_cache = itr_ptr->PhysicalNodeFirstItem(); itr_ptr->IsDone() == false; @@ -1100,7 +1100,7 @@ TEST(odcdriver_link, inet_aton(LINK_RESP_UPDATE_LINK.c_str(), &val_ctr.ip_address); cache_empty = PFC_FALSE; ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); int flag1 = 1; for (cfgnode_cache = itr_ptr1->PhysicalNodeFirstItem(); @@ -1165,10 +1165,10 @@ TEST(odcdriver_link, pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); cache_empty = PFC_FALSE; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); int flag = 1; for (cfgnode_cache = itr_ptr->PhysicalNodeFirstItem(); itr_ptr->IsDone() == false; @@ -1233,10 +1233,10 @@ TEST(odcdriver_link, pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcLink obj_link(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); cache_empty = PFC_FALSE; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_link.fetch_config(ctr, cache_empty)); int flag = 1; for (cfgnode_cache = itr_ptr->PhysicalNodeFirstItem(); itr_ptr->IsDone() == false; diff --git a/coordinator/test/modules/odcdriver/ut/odc_port_ut.cc b/coordinator/test/modules/odcdriver/ut/odc_port_ut.cc index 0c4f3b23..10176c56 100644 --- a/coordinator/test/modules/odcdriver/ut/odc_port_ut.cc +++ b/coordinator/test/modules/odcdriver/ut/odc_port_ut.cc @@ -43,19 +43,19 @@ TEST(odcdriver_port, test_port_one_add) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_RESP_ONE.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); inet_aton(PORT_RESP_TWO.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; @@ -86,7 +86,7 @@ TEST(odcdriver_port, test_port_null_resp) { const pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -115,7 +115,7 @@ TEST(odcdriver_port, test_port_invalid_resp) { const pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -145,7 +145,7 @@ TEST(odcdriver_port, test_port_data_add) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); key_ctr_t key_ctr_update; val_ctr_t val_ctr_update; @@ -158,7 +158,7 @@ TEST(odcdriver_port, test_port_data_add) { ctr->update_ctr(key_ctr_update, val_ctr_update); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); int flag = 1; @@ -203,7 +203,7 @@ TEST(odcdriver_port, test_port_data_add) { strncpy(reinterpret_cast (key_switch.switch_id), switch_id.c_str(), strlen(switch_id.c_str())); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; @@ -234,7 +234,7 @@ TEST(odcdriver_port, test_port_data_delete) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); key_ctr_t key_ctr_update; val_ctr_t val_ctr_update; @@ -247,7 +247,7 @@ TEST(odcdriver_port, test_port_data_delete) { ctr->update_ctr(key_ctr_update, val_ctr_update); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); int flag = 1; std::auto_ptr @@ -295,7 +295,7 @@ TEST(odcdriver_port, test_port_data_delete) { // Fills Key Structure strncpy(reinterpret_cast (key_switch.switch_id), switch_id.c_str(), strlen(switch_id.c_str())); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; @@ -327,7 +327,7 @@ TEST(odcdriver_port, test_port_data_update) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); key_ctr_t key_ctr_update; val_ctr_t val_ctr_update; @@ -340,7 +340,7 @@ TEST(odcdriver_port, test_port_data_update) { ctr->update_ctr(key_ctr_update, val_ctr_update); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); int flag = 1; std::auto_ptr @@ -385,7 +385,7 @@ TEST(odcdriver_port, test_port_data_update) { inet_aton(SWITCH_RESP.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); // Fills Key Structure strncpy(reinterpret_cast (key_switch.switch_id), switch_id.c_str(), @@ -394,7 +394,7 @@ TEST(odcdriver_port, test_port_data_update) { std::string PORT_RESP_UPDATE = "172.16.0.24"; inet_aton(PORT_RESP_UPDATE.c_str(), &val_ctr_update.ip_address); ctr->update_ctr(key_ctr_update, val_ctr_update); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); flag = 1; @@ -466,7 +466,7 @@ TEST(odcdriver_port, test_port_data_update__empty) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); key_ctr_t key_ctr_update; val_ctr_t val_ctr_update; @@ -479,7 +479,7 @@ TEST(odcdriver_port, test_port_data_update__empty) { ctr->update_ctr(key_ctr_update, val_ctr_update); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); int flag = 1; std::auto_ptr @@ -522,7 +522,7 @@ TEST(odcdriver_port, test_port_data_update__empty) { inet_aton(SWITCH_RESP.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); // Fills Key Structure strncpy(reinterpret_cast (key_switch.switch_id), switch_id.c_str(), @@ -531,7 +531,7 @@ TEST(odcdriver_port, test_port_data_update__empty) { std::string PORT_RESP_EMPTY = "172.16.0.26"; inet_aton(PORT_RESP_EMPTY.c_str(), &val_ctr_update.ip_address); ctr->update_ctr(key_ctr_update, val_ctr_update); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); cfgnode_cache = NULL; @@ -577,14 +577,14 @@ TEST(odcdriver_port, test_port_resp_one) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_RESP_ONE.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); int flag = 1; @@ -649,12 +649,12 @@ TEST(odcdriver_port, test_port_resp_conn_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_CONN_PROP_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -688,12 +688,12 @@ TEST(odcdriver_port, test_port_conn_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_CONN_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -727,12 +727,12 @@ TEST(odcdriver_port, test_port_connwrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_CONN_NODE_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -766,12 +766,12 @@ TEST(odcdriver_port, test_port_conn_type_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_CONN_TYPE_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -805,12 +805,12 @@ TEST(odcdriver_port, test_port_node_id_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_ID_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -845,12 +845,12 @@ TEST(odcdriver_port, test_port_node_conn_id_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_CONN_ID_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -884,12 +884,12 @@ TEST(odcdriver_port, test_port_node_id_SW_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_ID_SW.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -923,12 +923,12 @@ TEST(odcdriver_port, test_port_node_prop_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_PROP_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -962,12 +962,12 @@ TEST(odcdriver_port, test_port_node_prop_name_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_PROP_NAME_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -1001,12 +1001,12 @@ TEST(odcdriver_port, test_port_node_prop_name_value_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_PROP_NAME_VALUE_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -1040,12 +1040,12 @@ TEST(odcdriver_port, test_port_node_prop_state_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_PROP_STATE_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -1079,12 +1079,12 @@ TEST(odcdriver_port, test_port_node_prop_config_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_PROP_CONFIG_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -1118,12 +1118,12 @@ TEST(odcdriver_port, test_port_node_prop_bandwidth_wrong) { pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_NODE_PROP_BANDWIDTH_WRONG.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_switch, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -1158,14 +1158,14 @@ TEST(odcdriver_port, test_port_resp_conf_unknown) { ctr->set_connection_status(1); pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_RESP_ONE.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_switch, cache_empty)); int flag = 1; std::auto_ptr @@ -1234,14 +1234,14 @@ TEST(odcdriver_port, test_port_resp_parent_sw_NULL) { ctr->set_connection_status(1); pfc_bool_t cache_empty = PFC_TRUE; unc::odcdriver::OdcSwitch obj_sw(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj_sw.fetch_config(ctr, cache_empty)); inet_aton(PORT_RESP_ONE.c_str(), &val_ctr.ip_address); ctr->update_ctr(key_ctr, val_ctr); unc::odcdriver::OdcPort obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, NULL, cache_empty)); delete ctr->physical_port_cache; delete ctr; diff --git a/coordinator/test/modules/odcdriver/ut/odc_switch_ut.cc b/coordinator/test/modules/odcdriver/ut/odc_switch_ut.cc index 1a31d206..853e6d21 100644 --- a/coordinator/test/modules/odcdriver/ut/odc_switch_ut.cc +++ b/coordinator/test/modules/odcdriver/ut/odc_switch_ut.cc @@ -28,7 +28,7 @@ TEST(odcdriver_switch, test_switch_null_resp) { pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); delete ctr->physical_port_cache; delete ctr; ctr= NULL; @@ -48,7 +48,7 @@ TEST(odcdriver_switch, test_switch_invalid_resp) { pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); delete ctr->physical_port_cache; delete ctr; ctr= NULL; @@ -68,7 +68,7 @@ TEST(odcdriver_switch, test_switch_data) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, cache_empty)); int flag = 1; std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); @@ -112,7 +112,7 @@ TEST(odcdriver_switch, test_switch_data_update) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, cache_empty)); int flag = 1; std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); @@ -147,7 +147,7 @@ TEST(odcdriver_switch, test_switch_data_update) { unc::driver::VtnDrvIntf::stub_loadVtnDrvModule(); flag = 1; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, cache_empty)); for (cfgnode_cache = itr_ptr->PhysicalNodeFirstItem(); itr_ptr->IsDone() == false; cfgnode_cache = itr_ptr->NextItem() ) { @@ -196,7 +196,7 @@ TEST(odcdriver_switch, test_switch_data_delete) { pfc_bool_t cache_empty = PFC_FALSE; unc::restjson::ConfFileValues_t conf_file; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, cache_empty)); int flag = 1; std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); @@ -229,7 +229,7 @@ TEST(odcdriver_switch, test_switch_data_delete) { unc::driver::VtnDrvIntf::stub_loadVtnDrvModule(); flag = 1; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, cache_empty)); for (cfgnode_cache = itr_ptr->PhysicalNodeFirstItem(); itr_ptr->IsDone() == false; cfgnode_cache = itr_ptr->NextItem() ) { @@ -273,7 +273,7 @@ TEST(odcdriver_switch, test_switch_data_update_same) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, cache_empty)); int flag = 1; std::auto_ptr itr_ptr(ctr->physical_port_cache->create_iterator()); @@ -300,7 +300,7 @@ TEST(odcdriver_switch, test_switch_data_update_same) { flag = 1; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, cache_empty)); for (cfgnode_cache = itr_ptr->PhysicalNodeFirstItem(); itr_ptr->IsDone() == false; cfgnode_cache = itr_ptr->NextItem() ) { @@ -346,7 +346,7 @@ TEST(odcdriver_switch, test_switch_resp_nodeprop_wrong) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); delete ctr->physical_port_cache; delete ctr; @@ -367,7 +367,7 @@ TEST(odcdriver_switch, test_switch_resp_node_prop_node_wrong) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -390,7 +390,7 @@ TEST(odcdriver_switch, test_switch_resp_node_prop_id_wrong) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; @@ -413,7 +413,7 @@ TEST(odcdriver_switch, test_switch_node_prop_id_wrong) { unc::restjson::ConfFileValues_t conf_file; pfc_bool_t cache_empty = PFC_FALSE; unc::odcdriver::OdcSwitch obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, cache_empty)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, cache_empty)); unc::driver::VtnDrvIntf::stub_unloadVtnDrvModule(); delete ctr->physical_port_cache; diff --git a/coordinator/test/modules/odcdriver/ut/odc_vbr_if_ut.cc b/coordinator/test/modules/odcdriver/ut/odc_vbr_if_ut.cc index aebf099b..525a478b 100644 --- a/coordinator/test/modules/odcdriver/ut/odc_vbr_if_ut.cc +++ b/coordinator/test/modules/odcdriver/ut/odc_vbr_if_ut.cc @@ -50,7 +50,7 @@ TEST(odcdriver, create_cmd_valid) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -93,7 +93,7 @@ TEST(odcdriver, create_cmd_valid_admin_disable) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -135,7 +135,7 @@ TEST(odcdriver, create_cmd_invalid_resp) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -175,7 +175,7 @@ TEST(odcdriver, update_cmd_invalid_resp) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -215,7 +215,7 @@ TEST(odcdriver, delete_cmd_invalid_resp) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -256,7 +256,7 @@ TEST(odcdriver, create_cmd_null_resp) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -298,7 +298,7 @@ TEST(odcdriver, update_cmd_null_resp) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -340,7 +340,7 @@ TEST(odcdriver, delete_cmd_null_resp) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -380,7 +380,7 @@ TEST(odcdriver, create_cmd_empty_vtn) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -419,7 +419,7 @@ TEST(odcdriver, create_cmd_empty_vbr) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -457,7 +457,7 @@ TEST(odcdriver, create_cmd_empty_vbr_if) { std::string descp = "desc"; strncpy(reinterpret_cast(vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -496,7 +496,7 @@ TEST(odcdriver, create_cmd_port_map_valid_no_values) { (vbrif_val.val_vbrif.description), descp.c_str(), sizeof(vbrif_val.val_vbrif.description)-1); vbrif_val.val_vbrif.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); if (ctr != NULL) { delete ctr; @@ -544,7 +544,7 @@ TEST(odcdriver, create_cmd_port_map_valid_values) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -592,7 +592,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_values) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -639,7 +639,7 @@ TEST(odcdriver, create_cmd_port_map_valid_invalid_logical_port) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -684,7 +684,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_invalid_port_values) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -730,7 +730,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_invalid_logical_port) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -779,7 +779,7 @@ TEST(odcdriver, create_cmd_port_map_invalid_data) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -827,7 +827,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_vlanid_zero) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -875,7 +875,7 @@ TEST(odcdriver, create_cmd_port_map_in_diff_format) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -924,7 +924,7 @@ TEST(odcdriver, create_cmd_port_map_in_proper_format_invalid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -972,7 +972,7 @@ TEST(odcdriver, create_cmd_port_map_in_diff_format_invalid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1020,7 +1020,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_invlanid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1069,7 +1069,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_vlanid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1119,7 +1119,7 @@ TEST(odcdriver, update_cmd_port_map_valid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1168,7 +1168,7 @@ TEST(odcdriver, update_cmd_no_port_map) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1221,7 +1221,7 @@ TEST(odcdriver, update_cmd_port_map_delete_resp_null) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1272,7 +1272,7 @@ TEST(odcdriver, update_cmd_port_map_invalid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1319,7 +1319,7 @@ TEST(odcdriver, update_cmd_port_map_valid_vlan) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1367,7 +1367,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_null_resp) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1417,7 +1417,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_invalid_logical) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1465,7 +1465,7 @@ TEST(odcdriver, create_cmd_port_map_valid_with_no_port_name) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1510,7 +1510,7 @@ TEST(odcdriver, create_cmd_port_map_invalid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)-1); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1554,7 +1554,7 @@ TEST(odcdriver, create_cmd_port_map_invalid_portmap) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.create_cmd + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd (vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1598,7 +1598,7 @@ TEST(odcdriver, update_cmd_port_map_portmap_invalid) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd (vbrif_key, vbrif_val, ctr)); delete ctr; @@ -1643,7 +1643,7 @@ TEST(odcdriver, update_cmd_port_map_portmap) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1687,7 +1687,7 @@ TEST(odcdriver, update_cmd_port_map_portmap_failure) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1734,7 +1734,7 @@ TEST(odcdriver, update_cmd_port_map_update_portmap) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1779,7 +1779,7 @@ TEST(odcdriver, update_cmd_empty_vtnname) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1824,7 +1824,7 @@ TEST(odcdriver, delete_cmd_empty_vtnname) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1869,7 +1869,7 @@ TEST(odcdriver, update_cmd_delete_portmap) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1915,7 +1915,7 @@ TEST(odcdriver, update_cmd_vbrif_success_portmap_failure) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1964,7 +1964,7 @@ TEST(odcdriver, update_cmd_vbrif_success_portmap_delete_failure) { strncpy(reinterpret_cast(vbrif_val.val_vbrif.portmap.logical_port_id), logical_port.c_str(), sizeof(vbrif_val.val_vbrif.portmap.logical_port_id)); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(vbrif_key, vbrif_val, ctr)); delete ctr; } @@ -1995,7 +1995,7 @@ TEST(odcdriver, fetch_config) { new unc::odcdriver::OdcController(key_ctr, val_ctr); std::vector cfgnode_vector; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_vbr, cfgnode_vector)); EXPECT_EQ(1U, cfgnode_vector.size()); for ( std::vector::iterator it = @@ -2035,7 +2035,7 @@ TEST(odcdriver, fetch_config_empty_vtn) { new unc::odcdriver::OdcController(key_ctr, val_ctr); std::vector cfgnode_vector; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_vbr, cfgnode_vector)); EXPECT_EQ(0U, cfgnode_vector.size()); for ( std::vector::iterator it = @@ -2075,7 +2075,7 @@ TEST(odcdriver, fetch_config_empty_vtn_data) { new unc::odcdriver::OdcController(key_ctr, val_ctr); std::vector cfgnode_vector; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_vbr, cfgnode_vector)); EXPECT_EQ(0U, cfgnode_vector.size()); for ( std::vector::iterator it = @@ -2116,7 +2116,7 @@ TEST(odcdriver, fetch_config_null_response) { new unc::odcdriver::OdcController(key_ctr, val_ctr); std::vector cfgnode_vector; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_vbr, cfgnode_vector)); EXPECT_EQ(0U, cfgnode_vector.size()); for ( std::vector::iterator it = @@ -2156,7 +2156,7 @@ TEST(odcdriver, fetch_config_invalid_resp) { new unc::odcdriver::OdcController(key_ctr, val_ctr); std::vector cfgnode_vector; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_vbr, cfgnode_vector)); EXPECT_EQ(0U, cfgnode_vector.size()); for ( std::vector::iterator it = @@ -2196,7 +2196,7 @@ TEST(odcdriver, fetch_config_with_portmap) { new unc::odcdriver::OdcController(key_ctr, val_ctr); std::vector cfgnode_vector; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_vbr, cfgnode_vector)); EXPECT_EQ(1U, cfgnode_vector.size()); for ( std::vector::iterator it = @@ -2236,7 +2236,7 @@ TEST(odcdriver, fetch_config_with_portmap_no_vlan) { new unc::odcdriver::OdcController(key_ctr, val_ctr); std::vector cfgnode_vector; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_vbr, cfgnode_vector)); EXPECT_EQ(1U, cfgnode_vector.size()); for ( std::vector::iterator it = diff --git a/coordinator/test/modules/odcdriver/ut/odc_vbr_ut.cc b/coordinator/test/modules/odcdriver/ut/odc_vbr_ut.cc index 5c919ee8..925b335a 100644 --- a/coordinator/test/modules/odcdriver/ut/odc_vbr_ut.cc +++ b/coordinator/test/modules/odcdriver/ut/odc_vbr_ut.cc @@ -41,7 +41,7 @@ TEST(odcdriver, test_create_cmd_vbr) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.create_cmd(key_vbr, val_vbr, ctr)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; } @@ -73,7 +73,7 @@ TEST(odcdriver, test_delete_cmd_vbr) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.delete_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -107,7 +107,7 @@ TEST(odcdriver, test_update_cmd_vbr) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -142,7 +142,7 @@ TEST(odcdriver, test_invalid_vtnname_create_cmd_vbr) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -176,7 +176,7 @@ TEST(odcdriver, test_create_cmd_invalid_vbr_name) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.create_cmd(key_vbr, val_vbr, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(key_vbr, val_vbr, ctr)); delete ctr; } TEST(odcdriver, test_invalid_vtnname_update_cmd) { @@ -207,7 +207,7 @@ TEST(odcdriver, test_invalid_vtnname_update_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.update_cmd(key_vbr, val_vbr, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; } @@ -240,7 +240,7 @@ TEST(odcdriver, test_update_cmd_invalid_vbr_name) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -275,7 +275,7 @@ TEST(odcdriver, test_invalid_vtnname_delete_cmd_vbr) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -309,7 +309,7 @@ TEST(odcdriver, test_delete_cmd_invalid_vbr_name) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.delete_cmd(key_vbr, val_vbr, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; } @@ -343,7 +343,7 @@ TEST(odcdriver, test_delete_cmd_invalid) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -376,7 +376,7 @@ TEST(odcdriver, test_create_cmd_invalid) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -412,7 +412,7 @@ TEST(odcdriver, test_update_cmd_invalid) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -446,7 +446,7 @@ TEST(odcdriver, test_create_cmd_null_resp) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -480,7 +480,7 @@ TEST(odcdriver, test_update_cmd_null_resp) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -513,7 +513,7 @@ TEST(odcdriver, test_delete_cmd_null_resp) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(key_vbr, val_vbr, ctr)); delete ctr; ctr = NULL; @@ -539,7 +539,7 @@ TEST(odcdriver, test_get_vbr_list_empty_vtn_name) { conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); std::vector value_list; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_vtn, value_list)); for ( std::vector::iterator it = value_list.begin(); it != value_list.end(); ++it ) { @@ -571,7 +571,7 @@ TEST(odcdriver, test_get_vbr_list_null_resp) { conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); std::vector value_list; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_vtn, value_list)); EXPECT_EQ(0U, value_list.size()); for ( std::vector::iterator it = @@ -604,7 +604,7 @@ TEST(odcdriver, test_get_vbr_list_invalid_resp) { conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); std::vector value_list; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, &key_vtn, value_list)); EXPECT_EQ(0U, value_list.size()); for ( std::vector::iterator it = @@ -637,7 +637,7 @@ TEST(odcdriver, test_get_vbr_list_valid_resp) { conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); std::vector value_list; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_vtn, value_list)); EXPECT_EQ(2U, value_list.size()); for ( std::vector::iterator it = @@ -671,7 +671,7 @@ TEST(odcdriver, test_get_vbr_list_valid_resp_no_vbr) { conf_file.password = "admin"; unc::odcdriver::OdcVbrCommand obj(conf_file); std::vector value_list; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, &key_vtn, value_list)); EXPECT_EQ(0U, value_list.size()); for ( std::vector::iterator it = diff --git a/coordinator/test/modules/odcdriver/ut/odc_vbr_vlanmap_ut.cc b/coordinator/test/modules/odcdriver/ut/odc_vbr_vlanmap_ut.cc index dca60909..529be14e 100644 --- a/coordinator/test/modules/odcdriver/ut/odc_vbr_vlanmap_ut.cc +++ b/coordinator/test/modules/odcdriver/ut/odc_vbr_vlanmap_ut.cc @@ -41,10 +41,10 @@ TEST(odcdriver, test_fetch_conf_vtn_name_empty) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -82,10 +82,10 @@ TEST(odcdriver, test_fetch_conf_vbr_name_empty) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -122,10 +122,10 @@ TEST(odcdriver, test_fetch_conf_null_response) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -162,9 +162,9 @@ TEST(odcdriver, test_fetch_conf_null_response_data) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -204,9 +204,9 @@ TEST(odcdriver, test_fetch_conf_not_found_response) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -244,9 +244,9 @@ TEST(odcdriver, test_fetch_conf_service_unavilable_response) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -284,9 +284,9 @@ TEST(odcdriver, test_fetch_conf_empty_response) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_val); + EXPECT_EQ(UNC_RC_SUCCESS, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -323,9 +323,9 @@ TEST(odcdriver, test_fetch_conf_vlanmap_incorrect_response) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -363,9 +363,9 @@ TEST(odcdriver, test_fetch_conf_vlanmap_incorrect_response_body) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_val); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_val); EXPECT_EQ(0U, cfgnode_vector.size()); if (ctr != NULL) { @@ -403,9 +403,9 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_val); + EXPECT_EQ(UNC_RC_SUCCESS, ret_val); EXPECT_EQ(2U, cfgnode_vector.size()); uint vlan_id = 0; std::string logical_id = ""; @@ -416,9 +416,9 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp) { unc::vtndrvcache::ConfigNode *cfg_node = *it; if (cfg_node != NULL) { unc::vtndrvcache::CacheElementUtil< - key_vlan_map_t, val_vlan_map_t, uint32_t> *cache_util_ptr = + key_vlan_map_t, pfcdrv_val_vlan_map_t, uint32_t> *cache_util_ptr = static_cast *>(cfg_node); + key_vlan_map_t, pfcdrv_val_vlan_map_t, uint32_t> *>(cfg_node); if (cache_util_ptr == NULL) { return; } @@ -429,13 +429,13 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp) { vlan_id = 7; } key_vlan_map_t *vlanmap_key = cache_util_ptr->get_key_structure(); - val_vlan_map_t *vlanmap_val = cache_util_ptr->get_val_structure(); + pfcdrv_val_vlan_map_t *vlanmap_val = cache_util_ptr->get_val_structure(); if ((vlanmap_key == NULL) || (vlanmap_val == NULL)) { pfc_log_error("key or val strucure is NULL"); return; } - uint vlan_id_ctr = vlanmap_val->vlan_id; + uint vlan_id_ctr = vlanmap_val->vm.vlan_id; std::string logical_port_ctr = reinterpret_cast (vlanmap_key->logical_port_id); EXPECT_EQ(vlan_id_ctr , vlan_id); @@ -491,15 +491,15 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp_max_vlanid) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_val); + EXPECT_EQ(UNC_RC_SUCCESS, ret_val); EXPECT_EQ(2U, cfgnode_vector.size()); std::string logical_id = ""; key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); key_vlan_map.logical_port_id_valid = 1; pfc_bool_t is_switch_exist = PFC_FALSE; std::string port_id = ""; @@ -509,8 +509,8 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp_max_vlanid) { switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 65535; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + val_vlan_map.vm.vlan_id = 65535; + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, ctr, is_switch_exist, port_id)); @@ -563,9 +563,9 @@ TEST(odcdriver, test_fetch_conf_already_exist_vector) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_val); + EXPECT_EQ(UNC_RC_SUCCESS, ret_val); EXPECT_EQ(2U, cfgnode_vector.size()); for ( std::vector::iterator it = cfgnode_vector.begin(); it != cfgnode_vector.end(); ++it ) { @@ -611,15 +611,15 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp_max_vlan_id_any) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); std::vector cfgnode_vector; - drv_resp_code_t ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, + UncRespCode ret_val = odc_vbr_vlanmap.fetch_config(ctr, &key_vbr, cfgnode_vector); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_val); + EXPECT_EQ(UNC_RC_SUCCESS, ret_val); EXPECT_EQ(2U, cfgnode_vector.size()); std::string logical_id = ""; key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); key_vlan_map.logical_port_id_valid = 0; pfc_bool_t is_switch_exist = PFC_FALSE; std::string port_id = ""; @@ -629,8 +629,8 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp_max_vlan_id_any) { switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 65535; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + val_vlan_map.vm.vlan_id = 65535; + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, ctr, is_switch_exist, port_id)); EXPECT_EQ(is_switch_exist, PFC_FALSE); for ( std::vector::iterator it = @@ -648,9 +648,9 @@ TEST(odcdriver, test_fetch_conf_vlanmap_resp_max_vlan_id_any) { TEST(odcdriver, test_validate_vlan_switch_requested_incorrect_vlan_parse) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); key_ctr_t key_ctr; val_ctr_t val_ctr; @@ -663,7 +663,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_incorrect_vlan_parse) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -682,7 +682,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_incorrect_vlan_parse) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(is_switch_exist, PFC_FALSE); @@ -694,9 +694,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_incorrect_vlan_parse) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_ANY) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -715,7 +715,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_ANY) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -734,7 +734,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_ANY) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(is_switch_exist, PFC_FALSE); @@ -746,9 +746,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_ANY) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_sw) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -767,7 +767,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_sw) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -786,7 +786,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_sw) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(is_switch_exist, PFC_FALSE); @@ -798,9 +798,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_sw) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vtn) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -819,7 +819,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vtn) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -840,7 +840,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vtn) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(is_switch_exist, PFC_FALSE); @@ -852,9 +852,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vtn) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vbr) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -873,7 +873,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vbr) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -894,7 +894,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vbr) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(is_switch_exist, PFC_FALSE); @@ -906,9 +906,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_same_diff_vbr) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -927,7 +927,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -948,7 +948,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); if (ctr != NULL) { @@ -959,9 +959,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_sw_exist) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -980,7 +980,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_sw_exist) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1001,7 +1001,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_sw_exist) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_RC_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_TRUE, is_switch_exist); @@ -1014,9 +1014,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_sw_exist) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_any_exist) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -1035,7 +1035,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_any_exist) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1056,7 +1056,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_any_exist) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_RC_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_FALSE, is_switch_exist); @@ -1068,9 +1068,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_any_exist) { TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_vbr) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -1089,7 +1089,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_vbr) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1110,7 +1110,7 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_vbr) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_FALSE, is_switch_exist); @@ -1122,9 +1122,9 @@ TEST(odcdriver, test_validate_vlan_switch_requested_vlan_diff_vbr) { TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_wrong) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -1143,7 +1143,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_wrong) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1163,7 +1163,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_wrong) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_FALSE, is_switch_exist); @@ -1174,9 +1174,9 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_wrong) { } TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -1195,7 +1195,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1215,7 +1215,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_FALSE, is_switch_exist); @@ -1226,9 +1226,9 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same) { } TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_sw) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -1247,7 +1247,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_sw) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 10; + val_vlan_map.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1267,7 +1267,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_sw) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_FALSE, is_switch_exist); @@ -1278,9 +1278,9 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_sw) { } TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_ANY) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -1299,7 +1299,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_ANY) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 220; + val_vlan_map.vm.vlan_id = 220; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1320,7 +1320,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_ANY) { conf_file.user_name = ""; conf_file.password = ""; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_RC_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_TRUE, is_switch_exist); @@ -1333,9 +1333,9 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_same_ANY) { TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_diff_SW) { key_vlan_map_t key_vlan_map; - val_vlan_map_t val_vlan_map; + pfcdrv_val_vlan_map_t val_vlan_map; memset(&key_vlan_map, 0, sizeof(key_vlan_map_t)); - memset(&val_vlan_map, 0, sizeof(val_vlan_map_t)); + memset(&val_vlan_map, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbrname = "vbr1"; strncpy(reinterpret_cast(key_vlan_map.vbr_key.vbridge_name), vbrname.c_str(), sizeof(vbrname.c_str())); @@ -1354,7 +1354,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_diff_SW) { (key_vlan_map.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - val_vlan_map.vlan_id = 220; + val_vlan_map.vm.vlan_id = 220; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); @@ -1375,7 +1375,7 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_diff_SW) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( + EXPECT_EQ(UNC_RC_SUCCESS, odc_vbr_vlanmap.validate_vlan_exist( key_vlan_map, val_vlan_map, switch_id, odc_ctr, is_switch_exist, port_id)); EXPECT_EQ(PFC_FALSE, is_switch_exist); @@ -1389,12 +1389,12 @@ TEST(odcdriver, test_validate_vlan_ANY_requested_vlan_diff_SW) { TEST(odcdriver, test_create_command_null_resp) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); std::string NULL_RESPONSE = "172.16.0.0"; @@ -1413,7 +1413,7 @@ TEST(odcdriver, test_create_command_null_resp) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1425,7 +1425,7 @@ TEST(odcdriver, test_create_command_null_resp) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1434,11 +1434,11 @@ TEST(odcdriver, test_create_command_null_resp) { TEST(odcdriver_mod, test_create_command_invalidreq) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); @@ -1457,7 +1457,7 @@ TEST(odcdriver_mod, test_create_command_invalidreq) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1468,7 +1468,7 @@ TEST(odcdriver_mod, test_create_command_invalidreq) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1477,11 +1477,11 @@ TEST(odcdriver_mod, test_create_command_invalidreq) { TEST(odcdriver, test_create_cmd_invalid_vbrname) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); @@ -1501,7 +1501,7 @@ TEST(odcdriver, test_create_cmd_invalid_vbrname) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1512,7 +1512,7 @@ TEST(odcdriver, test_create_cmd_invalid_vbrname) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1520,11 +1520,11 @@ TEST(odcdriver, test_create_cmd_invalid_vbrname) { TEST(odcdriver, test_create_cmd_invalid_vtnname) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); @@ -1543,7 +1543,7 @@ TEST(odcdriver, test_create_cmd_invalid_vtnname) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1554,7 +1554,7 @@ TEST(odcdriver, test_create_cmd_invalid_vtnname) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1562,14 +1562,14 @@ TEST(odcdriver, test_create_cmd_invalid_vtnname) { TEST(odcdriver, test_create_cmd_invalid_format) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); - vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; std::string CREATE_201 = "172.16.0.1"; inet_aton(CREATE_201.c_str(), &val_ctr.ip_address); @@ -1586,7 +1586,7 @@ TEST(odcdriver, test_create_cmd_invalid_format) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1597,7 +1597,7 @@ TEST(odcdriver, test_create_cmd_invalid_format) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1606,14 +1606,14 @@ TEST(odcdriver, test_create_cmd_invalid_format) { TEST(odcdriver, test_create_cmd) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); - vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; std::string CREATE_201 = "172.16.0.1"; inet_aton(CREATE_201.c_str(), &val_ctr.ip_address); @@ -1630,7 +1630,7 @@ TEST(odcdriver, test_create_cmd) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1641,7 +1641,7 @@ TEST(odcdriver, test_create_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1649,14 +1649,14 @@ TEST(odcdriver, test_create_cmd) { TEST(odcdriver, test_create_cmd_logicalport_in_diff_format) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); - vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; std::string CREATE_201 = "172.16.0.1"; inet_aton(CREATE_201.c_str(), &val_ctr.ip_address); @@ -1673,7 +1673,7 @@ TEST(odcdriver, test_create_cmd_logicalport_in_diff_format) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1684,7 +1684,7 @@ TEST(odcdriver, test_create_cmd_logicalport_in_diff_format) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1692,14 +1692,14 @@ TEST(odcdriver, test_create_cmd_logicalport_in_diff_format) { TEST(odcdriver, test_create_cmd_logicalport_in_diff_format_invalid) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); - vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; std::string CREATE_201 = "172.16.0.1"; inet_aton(CREATE_201.c_str(), &val_ctr.ip_address); @@ -1716,7 +1716,7 @@ TEST(odcdriver, test_create_cmd_logicalport_in_diff_format_invalid) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1727,7 +1727,7 @@ TEST(odcdriver, test_create_cmd_logicalport_in_diff_format_invalid) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1735,11 +1735,11 @@ TEST(odcdriver, test_create_cmd_logicalport_in_diff_format_invalid) { TEST(odcdriver, test_create_cmd_validatevlan_failure) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); @@ -1758,7 +1758,7 @@ TEST(odcdriver, test_create_cmd_validatevlan_failure) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 65535; + vlanmap_val.vm.vlan_id = 65535; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1769,7 +1769,7 @@ TEST(odcdriver, test_create_cmd_validatevlan_failure) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1777,14 +1777,14 @@ TEST(odcdriver, test_create_cmd_validatevlan_failure) { TEST(odcdriver, test_update_cmd_vbrvlanmap) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); - vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; std::string CREATE_201 = "172.16.0.1"; inet_aton(CREATE_201.c_str(), &val_ctr.ip_address); @@ -1801,7 +1801,7 @@ TEST(odcdriver, test_update_cmd_vbrvlanmap) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1812,7 +1812,7 @@ TEST(odcdriver, test_update_cmd_vbrvlanmap) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1820,11 +1820,11 @@ TEST(odcdriver, test_update_cmd_vbrvlanmap) { TEST(odcdriver, test_create_cmd_validate_fail) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); std::string CREATE_201 = "172.16.0.1"; @@ -1843,7 +1843,7 @@ TEST(odcdriver, test_create_cmd_validate_fail) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 65535; + vlanmap_val.vm.vlan_id = 65535; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1854,7 +1854,7 @@ TEST(odcdriver, test_create_cmd_validate_fail) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1862,11 +1862,11 @@ TEST(odcdriver, test_create_cmd_validate_fail) { TEST(odcdriver, test_create_cmd_validate_failure) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); std::string VLAN_MAP_RESP_ANY_0 = "172.16.0.18"; @@ -1887,7 +1887,7 @@ TEST(odcdriver, test_create_cmd_validate_failure) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 65535; + vlanmap_val.vm.vlan_id = 65535; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1898,7 +1898,7 @@ TEST(odcdriver, test_create_cmd_validate_failure) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1906,11 +1906,11 @@ TEST(odcdriver, test_create_cmd_validate_failure) { TEST(odcdriver, test_create_cmd_validate_logicalportid_fail) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); std::string CREATE_201 = "172.16.0.1"; @@ -1929,7 +1929,7 @@ TEST(odcdriver, test_create_cmd_validate_logicalportid_fail) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 10; + vlanmap_val.vm.vlan_id = 10; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1940,7 +1940,7 @@ TEST(odcdriver, test_create_cmd_validate_logicalportid_fail) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1948,14 +1948,14 @@ TEST(odcdriver, test_create_cmd_validate_logicalportid_fail) { TEST(odcdriver, test_create_cmd_UNTAGGED) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); - vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; std::string CREATE_201 = "172.16.0.1"; inet_aton(CREATE_201.c_str(), &val_ctr.ip_address); @@ -1972,7 +1972,7 @@ TEST(odcdriver, test_create_cmd_UNTAGGED) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 65535; + vlanmap_val.vm.vlan_id = 65535; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -1983,7 +1983,7 @@ TEST(odcdriver, test_create_cmd_UNTAGGED) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -1991,14 +1991,14 @@ TEST(odcdriver, test_create_cmd_UNTAGGED) { TEST(odcdriver, test_create_update_invalid) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); - vlanmap_val.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_INVALID; + vlanmap_val.vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_INVALID; std::string CREATE_201 = "172.16.0.1"; inet_aton(CREATE_201.c_str(), &val_ctr.ip_address); @@ -2015,7 +2015,7 @@ TEST(odcdriver, test_create_update_invalid) { (vlanmap_key.logical_port_id), switch_id.c_str(), strlen(switch_id.c_str())); - vlanmap_val.vlan_id = 65535; + vlanmap_val.vm.vlan_id = 65535; unc::driver::controller* ctr = new unc::odcdriver::OdcController(key_ctr, val_ctr); if (ctr == NULL) { @@ -2026,7 +2026,7 @@ TEST(odcdriver, test_create_update_invalid) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(vlanmap_key, vlanmap_val, ctr)); delete ctr; ctr = NULL; @@ -2069,7 +2069,7 @@ TEST(odcdriver, test_delete_existing_vlan_map_null_strid) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.del_existing_vlanmap(vlanmap_key , ctr , str_mapping_id)); delete ctr; ctr = NULL; @@ -2110,7 +2110,7 @@ TEST(odcdriver, test_delete_existing_vlan_map_url_empty) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.del_existing_vlanmap(vlanmap_key , ctr , str_mapping_id)); delete ctr; ctr = NULL; @@ -2152,7 +2152,7 @@ TEST(odcdriver, test_delete_existing_vlan_map_resp_null) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.del_existing_vlanmap(vlanmap_key , ctr , str_mapping_id)); delete ctr; ctr = NULL; @@ -2195,7 +2195,7 @@ TEST(odcdriver, test_delete_existing_vlan_map__success) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, obj.del_existing_vlanmap(vlanmap_key , ctr , str_mapping_id)); delete ctr; ctr = NULL; @@ -2239,7 +2239,7 @@ TEST(odcdriver, test_delete_existing_vlan_map__not_202) { conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.del_existing_vlanmap(vlanmap_key , ctr , str_mapping_id)); delete ctr; ctr = NULL; @@ -2489,11 +2489,11 @@ TEST(odcdriver, test_generate_vlanmap_id_logical_port_id_invalid) { TEST(odcdriver, test_delete_cmd_invalid_logicalport_id_1) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); memset(&key_ctr, 0, sizeof(key_ctr_t)); memset(&val_ctr, 0, sizeof(val_ctr_t)); std::string vtn_name = "vtn1"; @@ -2514,10 +2514,10 @@ TEST(odcdriver, test_delete_cmd_invalid_logicalport_id_1) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - drv_resp_code_t ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, + UncRespCode ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, ctr); - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); if (ctr != NULL) { delete ctr; ctr = NULL; @@ -2526,7 +2526,7 @@ TEST(odcdriver, test_delete_cmd_invalid_logicalport_id_1) { TEST(odcdriver, test_delete_cmd_invalid_logicalport_id_2) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&key_ctr, 0, sizeof(key_ctr_t)); @@ -2535,7 +2535,7 @@ TEST(odcdriver, test_delete_cmd_invalid_logicalport_id_2) { inet_aton(ip_add.c_str(), &val_ctr.ip_address); memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vtn_name = "vtn1"; std::string vbr_name = "vbr1"; std::string logical_id = "SW-00:00:00:00:00:00:00:02"; @@ -2559,10 +2559,10 @@ TEST(odcdriver, test_delete_cmd_invalid_logicalport_id_2) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - drv_resp_code_t ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, + UncRespCode ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, ctr); - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); if (ctr != NULL) { delete ctr; ctr = NULL; @@ -2570,7 +2570,7 @@ TEST(odcdriver, test_delete_cmd_invalid_logicalport_id_2) { } TEST(odcdriver, test_delete_cmd_httpresponse_error) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&key_ctr, 0, sizeof(key_ctr_t)); @@ -2579,7 +2579,7 @@ TEST(odcdriver, test_delete_cmd_httpresponse_error) { inet_aton(ip_add.c_str(), &val_ctr.ip_address); memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vtn_name = "vtn1"; std::string vbr_name = "vbr1"; std::string logical_id = "SW-00:00:00:00:00:00:00:02"; @@ -2603,9 +2603,9 @@ TEST(odcdriver, test_delete_cmd_httpresponse_error) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - drv_resp_code_t ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, + UncRespCode ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, ctr); - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); if (ctr != NULL) { delete ctr; ctr = NULL; @@ -2614,7 +2614,7 @@ TEST(odcdriver, test_delete_cmd_httpresponse_error) { TEST(odcdriver, test_delete_cmd_invalid_http_responce) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&key_ctr, 0, sizeof(key_ctr_t)); @@ -2623,7 +2623,7 @@ TEST(odcdriver, test_delete_cmd_invalid_http_responce) { inet_aton(ip_add.c_str(), &val_ctr.ip_address); memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vtn_name = "vtn1"; std::string vbr_name = "vbr1"; std::string logical_id = "SW-00:00:00:00:00:00:00:02"; @@ -2647,9 +2647,9 @@ TEST(odcdriver, test_delete_cmd_invalid_http_responce) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - drv_resp_code_t ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, + UncRespCode ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, ctr); - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); if (ctr != NULL) { delete ctr; ctr = NULL; @@ -2658,7 +2658,7 @@ TEST(odcdriver, test_delete_cmd_invalid_http_responce) { TEST(odcdriver, test_delete_cmd_vtn_name_empty) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&key_ctr, 0, sizeof(key_ctr_t)); @@ -2667,7 +2667,7 @@ TEST(odcdriver, test_delete_cmd_vtn_name_empty) { inet_aton(ip_add.c_str(), &val_ctr.ip_address); memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vbr_name = "vbr1"; std::string logical_id = "SW-00:00:00:00:00:00:00:02"; std::string vlan_id = "20"; @@ -2688,9 +2688,9 @@ TEST(odcdriver, test_delete_cmd_vtn_name_empty) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - drv_resp_code_t ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, + UncRespCode ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, ctr); - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); if (ctr != NULL) { delete ctr; ctr = NULL; @@ -2699,7 +2699,7 @@ TEST(odcdriver, test_delete_cmd_vtn_name_empty) { TEST(odcdriver, test_delete_cmd_valid) { key_vlan_map_t vlanmap_key; - val_vlan_map_t vlanmap_val; + pfcdrv_val_vlan_map_t vlanmap_val; key_ctr_t key_ctr; val_ctr_t val_ctr; memset(&key_ctr, 0, sizeof(key_ctr_t)); @@ -2708,7 +2708,7 @@ TEST(odcdriver, test_delete_cmd_valid) { inet_aton(ip_add.c_str(), &val_ctr.ip_address); memset(&vlanmap_key, 0, sizeof(key_vlan_map_t)); - memset(&vlanmap_val, 0, sizeof(val_vlan_map_t)); + memset(&vlanmap_val, 0, sizeof(pfcdrv_val_vlan_map_t)); std::string vtn_name = "vtn1"; std::string vbr_name = "vbr1"; std::string logical_id = "SW-00:00:00:00:00:00:00:02"; @@ -2732,9 +2732,9 @@ TEST(odcdriver, test_delete_cmd_valid) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVbrVlanMapCommand odc_vbr_vlanmap(conf_file); - drv_resp_code_t ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, + UncRespCode ret_val = odc_vbr_vlanmap.delete_cmd(vlanmap_key, vlanmap_val, ctr); - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); if (ctr != NULL) { delete ctr; ctr = NULL; diff --git a/coordinator/test/modules/odcdriver/ut/odc_vtn_ut.cc b/coordinator/test/modules/odcdriver/ut/odc_vtn_ut.cc index 49c388ac..ea827a56 100644 --- a/coordinator/test/modules/odcdriver/ut/odc_vtn_ut.cc +++ b/coordinator/test/modules/odcdriver/ut/odc_vtn_ut.cc @@ -34,7 +34,7 @@ TEST(odcdriver, test_in_valid_vtnname_empty_create_cmd) { conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE , obj.create_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC , obj.create_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -62,7 +62,7 @@ TEST(odcdriver, test_in_valid_vtnname_empty_update_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE , obj.update_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC , obj.update_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -87,7 +87,7 @@ TEST(odcdriver, test_in_valid_vtnname_empty_delete_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE , obj.delete_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC , obj.delete_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; @@ -115,7 +115,7 @@ TEST(odcdriver, test_invalid_ipaddress_empty_create_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE , obj.create_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC , obj.create_cmd(key_vtn, val_vtn, ctr)); if (ctr != NULL) { delete ctr; ctr= NULL; @@ -145,7 +145,7 @@ TEST(odcdriver, test_null_response_update_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE , + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC , obj.update_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; @@ -174,7 +174,7 @@ TEST(odcdriver, test_null_response_delete_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE , + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC , obj.delete_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; @@ -207,7 +207,7 @@ TEST(odcdriver, test_delete_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.delete_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.delete_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -240,7 +240,7 @@ TEST(odcdriver, test_delete_cmd_failure) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.delete_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.delete_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -269,7 +269,7 @@ TEST(odcdriver, invalid_response_create_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.create_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.create_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -296,7 +296,7 @@ TEST(odcdriver, invalid_response_update_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.update_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.update_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -327,7 +327,7 @@ TEST(odcdriver, test_update_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.update_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.update_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -357,7 +357,7 @@ TEST(odcdriver, test_valid_create_cmd) { conf_file.user_name = "admin"; conf_file.password = "admin"; unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.create_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.create_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } @@ -395,7 +395,7 @@ TEST(odcdriver, read_all_valid_) { unc::odcdriver::OdcVtnCommand obj(conf_file); std::vector value_list; void *ptr = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, obj.fetch_config(ctr, ptr, value_list)); + EXPECT_EQ(UNC_RC_SUCCESS, obj.fetch_config(ctr, ptr, value_list)); EXPECT_EQ(2U, value_list.size()); for ( std::vector::iterator it = value_list.begin(); it != value_list.end(); ++it ) { @@ -439,7 +439,7 @@ TEST(odcdriver, read_all_invalid_resp) { unc::odcdriver::OdcVtnCommand obj(conf_file); std::vector value_list; void *ptr = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, obj.fetch_config(ctr, ptr, value_list)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, ptr, value_list)); EXPECT_EQ(0U, value_list.size()); for ( std::vector::iterator it = value_list.begin(); it != value_list.end(); ++it ) { @@ -483,7 +483,7 @@ TEST(odcdriver, get_vtn_list_invalid_resp) { unc::odcdriver::OdcVtnCommand obj(conf_file); std::vector value_list; void *ptr = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, obj.fetch_config(ctr, ptr, value_list)); EXPECT_EQ(0U, value_list.size()); for ( std::vector::iterator it = @@ -528,7 +528,7 @@ TEST(odcdriver, read_all_valid_resp_no_vtn) { unc::odcdriver::OdcVtnCommand obj(conf_file); std::vector value_list; void *ptr = NULL; - EXPECT_EQ(16, obj.fetch_config(ctr, ptr, value_list)); + EXPECT_EQ(UNC_RC_NO_SUCH_INSTANCE, obj.fetch_config(ctr, ptr, value_list)); EXPECT_EQ(0U, value_list.size()); for ( std::vector::iterator it = value_list.begin(); it != value_list.end(); ++it ) { @@ -572,7 +572,7 @@ TEST(odcdriver, test_create_cmd_controller_username) { pass.c_str(), sizeof(val_ctr.password)-1); unc::odcdriver::OdcVtnCommand obj(conf_file); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE , obj.create_cmd(key_vtn, val_vtn, ctr)); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC , obj.create_cmd(key_vtn, val_vtn, ctr)); delete ctr; ctr= NULL; } diff --git a/coordinator/test/modules/stub/ContrllerFrameworkStub/controller_fw.hh b/coordinator/test/modules/stub/ContrllerFrameworkStub/controller_fw.hh index e05b57bd..d6f394e1 100644 --- a/coordinator/test/modules/stub/ContrllerFrameworkStub/controller_fw.hh +++ b/coordinator/test/modules/stub/ContrllerFrameworkStub/controller_fw.hh @@ -24,14 +24,14 @@ class ControllerFramework { ~ControllerFramework() {} - drv_resp_code_t GetDriverByControllerName(std::string& controller_name, + UncRespCode GetDriverByControllerName(std::string& controller_name, controller** ctl, driver** drv) { pfc_log_info("%s: res_code:%u ", PFC_FUNCNAME, res_code); if (res_code) - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; *ctl = controller::create_controll(); *drv = driver::create_driver(); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } @@ -39,13 +39,13 @@ class ControllerFramework { controller* ctl , driver* drv) { } - drv_resp_code_t UpdateControllerConfiguration(std::string& controller_name, + UncRespCode UpdateControllerConfiguration(std::string& controller_name, controller*, driver*, const key_ctr&, const val_ctr&) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t RemoveControllerConfiguration(std::string& controller_name) { - return DRVAPI_RESPONSE_SUCCESS; + UncRespCode RemoveControllerConfiguration(std::string& controller_name) { + return UNC_RC_SUCCESS; } @@ -56,23 +56,23 @@ class ControllerFramework { void RegisterDriver(unc_keytype_ctrtype_t controller_type, driver*) { } - drv_resp_code_t GetControllerInstance( + UncRespCode GetControllerInstance( std::string& controller_name, controller** controller_instance, driver** driver_instance) { if (res_code) - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; *controller_instance = controller::create_controll(); *driver_instance = driver::create_driver(); - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t + UncRespCode RemoveControllerConfiguration( std::string& controller_name, controller* controller_instance, driver* driver_instance) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } static void set_result(uint32_t resp); static void set_root_result(uint32_t resp); diff --git a/coordinator/test/modules/stub/ContrllerFrameworkStub/driver/driver_command.hh b/coordinator/test/modules/stub/ContrllerFrameworkStub/driver/driver_command.hh index 44975df1..ddba938c 100644 --- a/coordinator/test/modules/stub/ContrllerFrameworkStub/driver/driver_command.hh +++ b/coordinator/test/modules/stub/ContrllerFrameworkStub/driver/driver_command.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -26,10 +26,10 @@ class driver_command { virtual ~driver_command() { } virtual unc_key_type_t get_key_type()=0; - virtual drv_resp_code_t revoke(unc::driver::controller* ctr_ptr) { - return DRVAPI_RESPONSE_SUCCESS; + virtual UncRespCode revoke(unc::driver::controller* ctr_ptr) { + return UNC_RC_SUCCESS; } - virtual drv_resp_code_t fetch_config(unc::driver::controller* ctr, + virtual UncRespCode fetch_config(unc::driver::controller* ctr, void* parent_key, std::vector&) = 0; }; @@ -37,136 +37,136 @@ class driver_command { class vtn_driver_command: public driver_command { public: - drv_resp_code_t create_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, + UncRespCode create_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, controller*) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t update_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, + UncRespCode update_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, controller*) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t delete_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, + UncRespCode delete_cmd(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, controller*) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t validate_op(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, + UncRespCode validate_op(key_vtn_t& keyvtn_, val_vtn_t& valvtn_, controller*, uint32_t op) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } unc_key_type_t get_key_type() { return UNC_KT_VTN; } - drv_resp_code_t fetch_config( + UncRespCode fetch_config( unc::driver::controller* ctr, void* parent_key, std::vector&) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } }; class vbr_driver_command: public driver_command { public: - drv_resp_code_t create_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, + UncRespCode create_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, unc::driver::controller*) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t update_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, + UncRespCode update_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, unc::driver::controller*) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t delete_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, + UncRespCode delete_cmd(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, unc::driver::controller*) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t validate_op(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, + UncRespCode validate_op(key_vbr_t& keyvbr_, val_vbr_t& valvbr_, unc::driver::controller*, uint32_t op) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } unc_key_type_t get_key_type() { return UNC_KT_VBRIDGE; } - drv_resp_code_t fetch_config( + UncRespCode fetch_config( unc::driver::controller* ctr, void* parent_key, std::vector&) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } }; class vbrif_driver_command: public driver_command { public: - drv_resp_code_t create_cmd(key_vbr_if_t& key, + UncRespCode create_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t update_cmd(key_vbr_if_t& key, + UncRespCode update_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t delete_cmd(key_vbr_if_t& key, + UncRespCode delete_cmd(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t validate_op(key_vbr_if_t& key, + UncRespCode validate_op(key_vbr_if_t& key, pfcdrv_val_vbr_if_t& val, unc::driver::controller* ctr, uint32_t op) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } unc_key_type_t get_key_type() { return UNC_KT_VBR_IF; } - drv_resp_code_t fetch_config( + UncRespCode fetch_config( unc::driver::controller* ctr, void* parent_key, std::vector&) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } }; class controller_command: public driver_command { public: - drv_resp_code_t create_cmd(key_ctr_t& key, + UncRespCode create_cmd(key_ctr_t& key, val_ctr_t & val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t update_cmd(key_ctr_t & key, + UncRespCode update_cmd(key_ctr_t & key, val_ctr_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t delete_cmd(key_ctr_t & key, + UncRespCode delete_cmd(key_ctr_t & key, val_ctr_t & val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t validate_op(key_ctr_t & key, + UncRespCode validate_op(key_ctr_t & key, val_ctr_t& val, unc::driver::controller* ctr, uint32_t op) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } unc_key_type_t get_key_type() { return UNC_KT_CONTROLLER; } - drv_resp_code_t fetch_config( + UncRespCode fetch_config( unc::driver::controller* ctr, void* parent_key, std::vector&) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } }; @@ -175,34 +175,34 @@ class controller_command: public driver_command { /** * @brief - Method to create Vbr VLAN-Map in the controller * @param[in]- key_vlan_map_t, val_vlan_map_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t create_cmd(key_vlan_map_t& key, + UncRespCode create_cmd(key_vlan_map_t& key, val_vlan_map_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief - Method to update Vbr VLAN-Map in the controller * @param[in]- key_vlan_map_t, val_vlan_map_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t update_cmd(key_vlan_map_t& key, + UncRespCode update_cmd(key_vlan_map_t& key, val_vlan_map_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** * @brief - Method to delete Vbr VLAN-Map in the controller * @param[in]- key_vlan_map_t, val_vlan_map_t, controller* - * @retval - DRVAPI_RESPONSE_SUCCESS/DRVAPI_RESPONSE_FAILURE + * @retval - UNC_RC_SUCCESS/UNC_DRV_RC_ERR_GENERIC */ - drv_resp_code_t delete_cmd(key_vlan_map_t& key, + UncRespCode delete_cmd(key_vlan_map_t& key, val_vlan_map_t& val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } /** @@ -218,62 +218,62 @@ class controller_command: public driver_command { class root_driver_command : public driver_command { public: - drv_resp_code_t + UncRespCode create_cmd(key_root_t& key, val_root_t & val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t + UncRespCode update_cmd(key_root_t& key, val_root_t & val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t + UncRespCode delete_cmd(key_root_t& key, val_root_t & val, unc::driver::controller *conn) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t + UncRespCode validate_op(key_root_t& key, unc::driver::val_root_t & val, unc::driver::controller *conn, uint32_t op) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } - drv_resp_code_t + UncRespCode read_root_child(std::vector&, unc::driver::controller*) { if (set_root_child == 1) { - return DRVAPI_RESPONSE_NO_SUCH_INSTANCE; + return UNC_RC_NO_SUCH_INSTANCE; } else if (set_root_child == 2) { - return DRVAPI_RESPONSE_FAILURE; + return UNC_DRV_RC_ERR_GENERIC; } else { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } } - drv_resp_code_t + UncRespCode read_all_child(unc::vtndrvcache::ConfigNode*, std::vector&, unc::driver::controller*) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } unc_key_type_t get_key_type() { return UNC_KT_ROOT; } - drv_resp_code_t fetch_config( + UncRespCode fetch_config( unc::driver::controller* ctr, void* parent_key, std::vector&) { - return DRVAPI_RESPONSE_SUCCESS; + return UNC_RC_SUCCESS; } static uint32_t set_root_child; diff --git a/coordinator/test/modules/stub/ContrllerFrameworkStub/kt_handler.hh b/coordinator/test/modules/stub/ContrllerFrameworkStub/kt_handler.hh index 8ad6ff9b..d4e6cc06 100644 --- a/coordinator/test/modules/stub/ContrllerFrameworkStub/kt_handler.hh +++ b/coordinator/test/modules/stub/ContrllerFrameworkStub/kt_handler.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -20,11 +20,11 @@ namespace unc { namespace driver { class KtHandler { public: - virtual drv_resp_code_t handle_request(pfc::core::ipc::ServerSession &sess, + virtual UncRespCode handle_request(pfc::core::ipc::ServerSession &sess, odl_drv_request_header_t &request_header, ControllerFramework* crtl_fw)=0; - virtual drv_resp_code_t execute_cmd(unc::vtndrvcache::ConfigNode *cfgptr, + virtual UncRespCode execute_cmd(unc::vtndrvcache::ConfigNode *cfgptr, unc::driver::controller* ctl_ptr, unc::driver::driver* drv_ptr)=0; diff --git a/coordinator/test/modules/stub/ODBC/include/odbcm_mgr.hh b/coordinator/test/modules/stub/ODBC/include/odbcm_mgr.hh index 71791e75..6c4b7e28 100644 --- a/coordinator/test/modules/stub/ODBC/include/odbcm_mgr.hh +++ b/coordinator/test/modules/stub/ODBC/include/odbcm_mgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -70,6 +70,13 @@ class ODBCManager { /**close the connection at the end of application, free the allocated * handlers and environment */ ODBCM_RC_STATUS CloseDBConnection(OdbcmConnectionHandler *conn_obj); + + ODBCM_RC_STATUS AssignDBConnection(OdbcmConnectionHandler *&db_conn, + uint32_t session_id, uint32_t config_id = 0); + ODBCM_RC_STATUS PoolDBConnection(OdbcmConnectionHandler *&conn_obj, + uint32_t session_id, uint32_t config_id = 0); + ODBCM_RC_STATUS FreeingConnections(bool IsAllOrUnused); + /** getter method for db_table_list_map_ private member*/ std::map >& get_db_table_list_map_(); /** getter method for odbcm_tables_column_map_ private member*/ diff --git a/coordinator/test/modules/stub/ODBC/odbcm_mgr_stub.cc b/coordinator/test/modules/stub/ODBC/odbcm_mgr_stub.cc index 22fc27ba..933f8816 100644 --- a/coordinator/test/modules/stub/ODBC/odbcm_mgr_stub.cc +++ b/coordinator/test/modules/stub/ODBC/odbcm_mgr_stub.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -69,6 +69,23 @@ ODBCManager::CloseDBConnection(OdbcmConnectionHandler *conn_obj) { return ODBCM_RC_SUCCESS; } +ODBCM_RC_STATUS +ODBCManager:: AssignDBConnection(OdbcmConnectionHandler *&db_conn, + uint32_t session_id, uint32_t config_id) { + return ODBCM_RC_SUCCESS; +} + +ODBCM_RC_STATUS +ODBCManager::PoolDBConnection(OdbcmConnectionHandler *&conn_obj, + uint32_t session_id, uint32_t config_id) { + return ODBCM_RC_SUCCESS; +} + +ODBCM_RC_STATUS +ODBCManager::FreeingConnections(bool IsAllOrUnused) { + return ODBCM_RC_SUCCESS; +} + std::string ODBCManager::GetTableName(ODBCMTable table_id) { switch (table_id) { @@ -150,7 +167,7 @@ ODBCManager::ClearOneRow(unc_keytype_datatype_t, DBTableSchema&, ODBCM_RC_STATUS ODBCManager::GetSiblingCount(unc_keytype_datatype_t, DBTableSchema&, - uint32_t &count, OdbcmConnectionHandler *conn_obj) { + uint32_t &count, OdbcmConnectionHandler *conn_obj) { count = sibling_count; return stub_getMappedResultCode(ODBCManager::GETSIBLINGCOUNT); } diff --git a/coordinator/test/modules/stub/capa_module/capa_intf.hh b/coordinator/test/modules/stub/capa_module/capa_intf.hh new file mode 100644 index 00000000..f5674092 --- /dev/null +++ b/coordinator/test/modules/stub/capa_module/capa_intf.hh @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef CAPA_INTF_HH_ +#define CAPA_INTF_HH_ + +#include + +#include "unc/config.h" +#include "unc/keytype.h" + +namespace unc { +namespace capa { + +class CapaIntf { + public: + virtual ~CapaIntf() {} + virtual bool GetInstanceCount(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, + unc_key_type_t keytype, + uint32_t &instance_count) = 0; + virtual bool GetCreateCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, + unc_key_type_t keytype, + uint32_t *instance_count, + uint32_t *num_attrs, + const uint8_t **attrs) = 0; + virtual bool GetUpdateCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, + unc_key_type_t keytype, + uint32_t *num_attrs, + const uint8_t **attrs) = 0; + + virtual bool GetReadCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, + unc_key_type_t keytype, + uint32_t *num_attrs, + const uint8_t **attrs) = 0; + + virtual bool GetStateCapability(unc_keytype_ctrtype_t ctrlr_type, + const std::string &version, + unc_key_type_t keytype, + uint32_t *num_attrs, + const uint8_t **attrs) = 0; + + static const uint32_t kNumberOfAvailability = 4; +}; + // NOLINT +} /* namespace capctrl */ +} /* namespace unc */ + +#endif // CAPA_INTF_HH_ diff --git a/coordinator/test/modules/stub/dal/dal_dml_intf.hh b/coordinator/test/modules/stub/dal/dal_dml_intf.hh index 66139c38..b60a1dde 100644 --- a/coordinator/test/modules/stub/dal/dal_dml_intf.hh +++ b/coordinator/test/modules/stub/dal/dal_dml_intf.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -676,11 +676,11 @@ class DalDmlIntf { * dummy address. Do not pass NULL address. * */ - virtual DalResultCode CopyModifiedRecords( - const UpllCfgType dest_cfg_type, - const UpllCfgType src_cfg_type, - const DalTableIndex table_index, - const DalBindInfo *output_and_match_attr_info)= 0; + virtual DalResultCode CopyModifiedRecords(const UpllCfgType dest_cfg_type, + const UpllCfgType src_cfg_type, + const DalTableIndex table_index, + const DalBindInfo *bind_info, + const unc_keytype_operation_t op) const = 0; /** * CopyMatchingRecords diff --git a/coordinator/test/modules/stub/dal/dal_odbc_mgr.cc b/coordinator/test/modules/stub/dal/dal_odbc_mgr.cc index d66ad665..5a5533fe 100644 --- a/coordinator/test/modules/stub/dal/dal_odbc_mgr.cc +++ b/coordinator/test/modules/stub/dal/dal_odbc_mgr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,6 +25,17 @@ DalOdbcMgr::DalOdbcMgr(void) { DalOdbcMgr::~DalOdbcMgr(void) { } +DalOdbcMgr* DalOdbcMgr::GetAlarmRwConn() { + return new DalOdbcMgr(); +} + +upll_rc_t DalOdbcMgr::DalTxClose(DalOdbcMgr *dom, bool commit) { + return UPLL_RC_SUCCESS; +} + +void ReleaseRwConn(DalOdbcMgr *dom) { +} + DalResultCode DalOdbcMgr::Init(void) { return stub_getMappedResultCode(DalOdbcMgr::INIT); } @@ -163,9 +174,11 @@ DalResultCode DalOdbcMgr::CopyEntireRecords( } DalResultCode DalOdbcMgr::CopyModifiedRecords( - const UpllCfgType dest_cfg_type, const UpllCfgType src_cfg_type, - const DalTableIndex table_index, - const DalBindInfo *output_and_match_attr_info) { + const UpllCfgType dest_cfg_type, + const UpllCfgType src_cfg_type, + const DalTableIndex table_index, + const DalBindInfo *bind_info, + const unc_keytype_operation_t op) const { return stub_getMappedResultCode(DalOdbcMgr::COPY_MODIFY); } diff --git a/coordinator/test/modules/stub/dal/dal_odbc_mgr.hh b/coordinator/test/modules/stub/dal/dal_odbc_mgr.hh index cd181cd9..c08372f0 100644 --- a/coordinator/test/modules/stub/dal/dal_odbc_mgr.hh +++ b/coordinator/test/modules/stub/dal/dal_odbc_mgr.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,6 +25,7 @@ #include #include #include +#include using namespace std; @@ -69,6 +70,7 @@ public: DalOdbcMgr(void); ~DalOdbcMgr(void); + DalOdbcMgr *GetAlarmRwConn(); DalResultCode Init(void); DalResultCode ConnectToDb(const DalConnType conn_type) const; @@ -76,7 +78,14 @@ public: DalResultCode CommitTransaction() const; DalResultCode RollbackTransaction() const; + upll_rc_t DalTxClose(DalOdbcMgr *dom, bool commit); + void ReleaseRwConn(DalOdbcMgr *dom); + + DalConnType get_conn_type(); + inline void ClearDirty() const { } + + inline DalConnState get_conn_state() { return conn_state_; } DalResultCode GetSingleRecord( const UpllCfgType cfg_type, const DalTableIndex table_index, @@ -153,10 +162,11 @@ public: const DalTableIndex table_index, const DalBindInfo *output_attr_info); - DalResultCode CopyModifiedRecords( - const UpllCfgType dest_cfg_type, const UpllCfgType src_cfg_type, - const DalTableIndex table_index, - const DalBindInfo *output_and_match_attr_info); + DalResultCode CopyModifiedRecords(const UpllCfgType dest_cfg_type, + const UpllCfgType src_cfg_type, + const DalTableIndex table_index, + const DalBindInfo *bind_info, + const unc_keytype_operation_t op) const ; DalResultCode CopyModifiedInsertRecords( const UpllCfgType dest_cfg_type, const UpllCfgType src_cfg_type, @@ -195,6 +205,8 @@ public: static void stub_setSiblingCount(uint32_t sibling_count1) { sibling_count_ = sibling_count1; } + void MakeAllDirty() const { } + static void clearStubData() { method_resultcode_map.clear(); @@ -212,6 +224,7 @@ public: private: DalResultCode stub_getMappedResultCode(Method) const; + inline DalResultCode initCursor(DalCursor **cursor, const DalBindInfo *info, Method type) const { @@ -237,6 +250,7 @@ private: static bool exists_; static uint32_t sibling_count_; mutable DalConnType conn_type_; + mutable DalConnState conn_state_; static map resultcodes; static uint32_t count; }; // class DalOdbcMgr diff --git a/coordinator/test/modules/stub/dal/dal_schema.hh b/coordinator/test/modules/stub/dal/dal_schema.hh index abac2388..8a735dce 100644 --- a/coordinator/test/modules/stub/dal/dal_schema.hh +++ b/coordinator/test/modules/stub/dal/dal_schema.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -134,16 +134,19 @@ enum kVbrVlanMapIndex { kDbiLogicalPortId, kDbiLogicalPortIdValid, kDbiVlanid, + kDbiBdryRefCount, kDbiCtrlrName, kDbiDomainId, kDbiVbrVlanMapFlags, kDbiValidVlanid, + kDbiValidBdryRefCount, kDbiCsRowStatus, kDbiCsVlanid, kDbiVbrVlanMapNumCols }; } + namespace vbridge_interface { static const uint8_t kVbrIfNumPks = 3; enum kVbrIfIndex { diff --git a/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_client.hh b/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_client.hh index 2376e5b6..0f129870 100644 --- a/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_client.hh +++ b/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_client.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -81,13 +81,18 @@ class ClientSession { int addOutput(const std::string &data); int addOutput(const uint8_t *data, uint32_t length); int addOutput(const pfc_ipcstdef_t &def, pfc_cptr_t data); - int addOutput(val_logical_port_st&); - int addOutput(val_logical_port&); - int addOutput(key_boundary_t&); + int addOutput(val_logical_port_st&); + int addOutput(val_logical_port&); + int addOutput(key_boundary_t&); int addOutput(val_ctr&); int addOutput(key_logical_port); - int addOutput(key_ctr&); + int addOutput(key_ctr&); int addOutput(void); + int addOutput(key_port&); + int addOutput(key_switch&); + int addOutput(key_ctr_dataflow&); + int addOutput(key_dataflow&); + int getResponse(uint32_t index, int8_t &data); int getResponse(uint32_t index, uint8_t &data); @@ -110,19 +115,27 @@ class ClientSession { pfc_ptr_t datap); - int getResponse(uint32_t, val_ctr_domain_st&); - int getResponse(uint32_t, val_port_st&); - int getResponse(uint32_t, key_switch_t&); - int getResponse(uint32_t, val_phys_path_fault_alarm_t&); - int getResponse(uint32_t, key_ctr&); + int getResponse(uint32_t, val_ctr_domain_st&); + int getResponse(uint32_t, val_port_st&); + int getResponse(uint32_t, key_switch_t&); + int getResponse(uint32_t, val_phys_path_fault_alarm_t&); + int getResponse(uint32_t, key_ctr&); int getResponse(uint32_t, key_ctr_domain_t&); int getResponse(uint32_t, val_switch_st&); int getResponse(uint32_t, val_link_st&); int getResponse(uint32_t, val_ctr_st&); int getResponse(uint32_t, key_link_t&); int getResponse(uint32_t, key_port_t&); - - + int getResponse(uint32_t, val_port_stats_t&); + int getResponse(uint32_t, val_switch_st_detail_t&); + int getResponse(uint32_t, val_df_data_flow_st_t&); + int getResponse(uint32_t, key_dataflow_t&); + int getResponse(uint32_t, pfcdrv_network_mon_alarm_data_t&); + int getResponse(uint32_t, key_vtn&); + int getResponse(uint32_t, pfcdrv_policier_alarm_data_t&); + int getResponse(uint32_t, val_path_fault_alarm_t&); + int getResponse(uint32_t, key_boundary_t&); + int getResponse(uint32_t, val_boundary_st_t&); uint32_t getResponseCount(void); int getResponseType(uint32_t index, pfc_ipctype_t& type); diff --git a/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_server.hh b/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_server.hh index 4e08a337..b65aabd6 100644 --- a/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_server.hh +++ b/coordinator/test/modules/stub/include/cxx/pfcxx/ipc_server.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -50,7 +50,6 @@ class ServerSession { */ int setTimeout(const pfc_timespec_t *timeout = NULL); int getClientAddress(pfc_ipccladdr_t &claddr); - int addOutput(int8_t data); int addOutputInt8(int8_t data); int addOutput(uint8_t data); @@ -104,13 +103,17 @@ class ServerSession { int addOutput(key_root& data); int addOutput(val_path_fault_alarm_t& data); int addOutput(val_port_st_neighbor& data); - - int addOutput(val_vbr_if_t&); - int addOutput(key_vbr_if_t&); - int addOutput(val_vbr_t&); - int addOutput(key_vbr_t&); - int addOutput(val_vtn_t&); - int addOutput(key_vtn_t&); + int addOutput(val_port_stats&); + int addOutput(val_vbr_if_t&); + int addOutput(key_vbr_if_t&); + int addOutput(val_vbr_t&); + int addOutput(key_vbr_t&); + int addOutput(val_vtn_t&); + int addOutput(key_vtn_t&); + int addOutput(key_dataflow&); + int addOutput(val_switch_st_detail_t&); + int addOutput(val_df_data_flow_st_t&); + int addOutput(key_ctr_dataflow&); int getArgument(uint32_t index, int8_t &data); int getArgument(uint32_t index, uint8_t &data); @@ -152,7 +155,8 @@ class ServerSession { int getArgument(int index, val_port_st_t& key); int getArgument(int index, key_link_t& key); int getArgument(int index, val_link_st_t& key); - + int getArgument(int, key_ctr_dataflow_t&); + int getArgument(int, key_dataflow_t&); uint32_t getArgCount(void); int getArgType(uint32_t index, pfc_ipctype_t &type); diff --git a/coordinator/test/modules/stub/include/cxx/pfcxx/synch.hh b/coordinator/test/modules/stub/include/cxx/pfcxx/synch.hh new file mode 100644 index 00000000..6f3dfff6 --- /dev/null +++ b/coordinator/test/modules/stub/include/cxx/pfcxx/synch.hh @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef _PFCXX_SYNCH_HH +#define _PFCXX_SYNCH_HH + +/* + * Definitions for thread synchronization utilities in the C++ world. + */ + +namespace pfc { +namespace core { + +/* + * Mutex + */ +class Mutex +{ +public: + /* + * Create a new mutex object. + */ + Mutex(void) + { + } + + /* + * Destructor of a mutex object. + */ + ~Mutex(void) + { + } + + /* + * Acquire the mutex lock. + */ + inline void + lock(void) + { + } + + inline int + trylock(void) + { + return 1; + } + + inline int + timedlock(const pfc_timespec_t &timeout) + { + return 1; + } + + inline void + unlock(void) + { + } + +protected: + explicit Mutex(bool recursive) + { + } +}; + +class ScopedMutex +{ +public: + explicit ScopedMutex(Mutex &m) + { + } + + ~ScopedMutex() + { + } + + inline void + unlock(void) + { + } + +}; + +class ReadWriteLock +{ +public: + ReadWriteLock(void) + { + } + + ~ReadWriteLock(void) + { + } + + inline void + rdlock(void) + { + } + + inline int + tryrdlock(void) + { + return 1; + } + + inline int + timedrdlock(const pfc_timespec_t &timeout) + { + return 1; + } + + inline void + wrlock(void) + { + } + + inline int + trywrlock(void) + { + return 1; + } + + inline int + timedwrlock(const pfc_timespec_t &timeout) + { + return 1; + } + + inline void + unlock(void) + { + } + +}; + +class Semaphore +{ +public: + explicit Semaphore(unsigned int value) + { + } + + ~Semaphore(void) + { + } + + inline void + post(void) + { + } + + inline void + wait(void) + { + } + + inline int + trywait(void) + { + return 1; + } + + inline int + timedwait(const pfc_timespec_t &timeout) + { + return 1; + } + + inline int + getvalue(void) + { + return 1; + } + +}; + +class Condition +{ + public: + Condition(void) + { + } + + ~Condition(void) + { + } + + inline void + signal(void) + { + } + + inline void + broadcast(void) + { + } + inline void + wait(Mutex &m) + { + } + + inline int + timedwait(Mutex &m, const pfc_timespec_t &timeout) + { + return 1; + } + + private: + /* PFC cond object. */ + pfc_cond_t _cond; +}; + +} // core +} // pfc + +#endif /* !_PFCXX_SYNCH_HH */ diff --git a/coordinator/test/modules/stub/include/uncxx/dataflow.hh b/coordinator/test/modules/stub/include/uncxx/dataflow.hh new file mode 100644 index 00000000..996747b7 --- /dev/null +++ b/coordinator/test/modules/stub/include/uncxx/dataflow.hh @@ -0,0 +1,266 @@ +/* + * Copyright (c) 2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef UNC_DATAFLOW_UTIL_HH_ +#define UNC_DATAFLOW_UTIL_HH_ + +#include +#include +#include +#include +#include +#include +#include +#include + +using std::vector; +using std::map; +using std::stack; +using std::string; +using std::stringstream; +using std::endl; +using pfc::core::ipc::ServerSession; +using pfc::core::ipc::ClientSession; + +#include "unc_dataflow.h" + +#define kMaxLenCtrlrDomId 31 + +namespace unc { +namespace dataflow { + +enum IpctStructNum { + kidx_val_df_data_flow_cmn = 0, + kidx_val_vtn_dataflow_cmn +}; + +struct key_vtn_ctrlr_dataflow { + key_vtn vtn_key; + uint8_t ctrlr[32]; + uint8_t domain[32]; + uint16_t vlanid; + uint8_t src_mac_address[6]; + key_vtn_ctrlr_dataflow(key_vtn_dataflow_t *key_vtn_df, uint8_t *in_ctrlr, + uint8_t *in_dom) { + vtn_key = key_vtn_df->vtn_key; + vlanid = key_vtn_df->vlanid; + memcpy(ctrlr, in_ctrlr, sizeof(ctrlr)); + memcpy(domain, in_dom, sizeof(domain)); + memcpy(src_mac_address, key_vtn_df->src_mac_address, sizeof(src_mac_address)); + + } +}; + + +typedef struct actions_vect_st { + UncDataflowFlowActionType action_type; + void *action_st_ptr; +} val_actions_vect_st; + +class AddlData { + public: + AddlData(); + ~AddlData(); + uint32_t reason; + uint32_t controller_count; + uint32_t max_dom_traversal_count; + uint32_t current_traversal_count; + map traversed_controllers; + string nonpfc_ingr_bdry_id; +}; + +class DataflowDummy : public pfc::core::Module { + public: + + pfc_bool_t init() { + return true; + } + pfc_bool_t fini() { + return true; + } + private: + static DataflowDummy* dataflow_dummy_; +}; + +class DataflowCmn; + +class DataflowDetail { + public: + DataflowDetail(IpctStructNum df_type, unc_keytype_ctrtype_t ctr_type = UNC_CT_PFC) { + } + ~DataflowDetail() { + } + // Read the DataflowCmn details from session as mentioned in FD API doc + int sessReadDataflow(ClientSession& sess, uint32_t& getres_pos) { + return 1; + } + val_df_data_flow_cmn_t *df_common; + val_vtn_dataflow_cmn_t *vtn_df_common; + map matches; + vector actions; + vector path_infos; + vector vtn_path_infos; + void *ckv_egress; + uint32_t flow_traversed; + IpctStructNum st_num_; +}; + +class DataflowCmn { + public: + DataflowCmn(bool isHead, DataflowDetail *df_segm) { + } + ~DataflowCmn() { + } + DataflowDetail *df_segment; + bool is_head; + map output_matches; + vector next; + DataflowCmn *head; + AddlData *addl_data; + uint32_t total_flow_count; + bool is_vlan_src_mac_changed_; + DataflowCmn *parent_node; + + std::string ToStr() { + return "aa"; + } + // Write the DataflowCmn details into session as mentioned in FD API doc + int sessOutDataflow(ServerSession& sess, int& putresp_pos) { + return 1; + } + // Append given nextCtrlrFlow to 'next' vector + UncDataflowReason appendFlow(DataflowCmn* nextCtrlrFlow + , map & ctrlr_dom_count_map) { + return UNC_DF_RES_SUCCESS; + } + + // check given 'output_matches' against 'matches' + bool check_match_condition(map output_matches) { + return true; + } + // Apply 'actions' to 'matches' and fill 'output_matches' + void apply_action(){} + bool CompareDataflow(DataflowCmn *otherflow) { return true; } + + static string get_string(const AddlData *ptr) { return "dummy"; } + static string get_string(const key_dataflow_t &k) { return "dummy" ; } + static string get_string(const key_ctr_dataflow_t &k) { return "dummy" ; } + + static string get_string(const val_df_data_flow_cmn_t &val_obj) { return "dummy" ;} + + static string get_string(const val_df_flow_match_t &val_obj) { return "dummy" ; } + static string get_string(const val_df_flow_match_in_port_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_match_dl_addr_t &val_obj) { return "dummy" ; } + static string get_string(const val_df_flow_match_dl_type_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_match_vlan_id_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_match_vlan_pcp_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_match_ip_tos_t &val_obj) { return "dummy" ; } + static string get_string(const val_df_flow_match_ip_proto_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_match_ipv4_addr_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_match_tp_port_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_match_ipv6_addr_t &val_obj){ return "dummy"; } + + static string get_string(const val_df_flow_action_t &val_obj){ return "dummy"; } + static string get_string(const val_df_flow_action_output_port_t &val_obj){ return "dummy"; } + static string get_string(const val_df_flow_action_enqueue_port_t &val_obj){ return "dummy"; } + static string get_string(const val_df_flow_action_set_dl_addr_t &val_obj){ return "dummy"; } + static string get_string(const val_df_flow_action_set_vlan_id_t &val_obj){ return "dummy"; } + static string get_string(const val_df_flow_action_set_vlan_pcp_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_action_set_ipv4_t &val_obj){ return "dummy"; } + static string get_string(const val_df_flow_action_set_ip_tos_t &val_obj){ return "dummy"; } + static string get_string(const val_df_flow_action_set_tp_port_t &val_obj) { return "dummy"; } + static string get_string(const val_df_flow_action_set_ipv6_t &val_obj) { return "dummy"; } + + static string get_string(const val_df_data_flow_path_info_t &val_obj) { return "dummy"; } + static bool Compare(const key_dataflow_t& lhs, const key_dataflow_t& rhs) { return true; } + void deep_copy() {} + /* VTN */ + static string get_string(const key_vtn_dataflow_t &k) { return "dummy"; } + static string get_string(const val_vtn_dataflow_path_info_t &val_obj) { return "dummy"; } + static string get_string(const val_vtn_dataflow_cmn_t &val_obj) { return "dummy"; } + static bool Compare(const key_vtn_ctrlr_dataflow& lhs, const key_vtn_ctrlr_dataflow& rhs) { return false;} + bool CompareVtnDataflow(DataflowCmn *otherflow) { return true; } + +}; + +struct KeyDataflowCmp { + bool operator()(const key_dataflow_t& lhs, const key_dataflow_t& rhs) { + return false; + } +}; + + + +struct KeyVtnDataflowCmp { + bool operator()(const key_vtn_ctrlr_dataflow &lhs, const key_vtn_ctrlr_dataflow &rhs) { + return false; + } +}; + +class DataflowUtil { + public: + ~DataflowUtil() { } + // Write the DataflowCmn details into NB session as mentioned in FD API doc + int sessOutDataflows(ServerSession& sess) { return 1; } + + // Method for PFCDriver module. Write the DataflowCmn details + // into physical session as mentioned in FD API doc + int sessOutDataflowsFromDriver(ServerSession& sess) { return 1; } + uint32_t storeFlowDetails(key_dataflow_t, vector ) { return 1; } + + uint32_t get_total_flow_count() { return 1;} + // Append given firstCtrlrFlow to 'firstCtrlrFlows' vector + uint32_t appendFlow(DataflowCmn* firstCtrlrFlow) { return 1;} + + static string get_string(const val_df_data_flow_t &val_obj) { return "dummy"; } + static string get_string(const val_df_data_flow_st_t &val_obj) { return "dummy"; } + static string get_string(const val_vtn_dataflow_t &val_obj) { return "dummy"; } + static bool checkMacAddress(uint8_t macaddr[6], uint8_t macaddr_mask[6] + , uint8_t checkmacaddr[6]) { return true; } + static bool checkMacAddress(uint8_t macaddr[6], uint8_t macaddr_mask[6] + , uint8_t checkmacaddr[6] + , uint8_t checkmacaddr_mask[6]) { return true; } + static bool checkIPv4Address(in_addr ipaddr, in_addr ip_mask + , in_addr checkipaddr) { return true; } + static bool checkIPv4Address(uint32_t ipaddr, uint32_t ip_mask + , uint32_t checkipaddr) { return true; } + static bool checkByte(uint8_t ipaddr, uint8_t ip_mask + , uint8_t checkipaddr) { return true; } + static bool checkByte(uint8_t ipaddr, uint8_t ip_mask + , uint8_t checkipaddr, uint8_t chk_ip_mask) { return true; } + static bool checkIPv4Address(in_addr ipaddr, in_addr ip_mask + , in_addr checkipaddr, in_addr chk_ip_mask) { return true; } + static bool checkIPv4Address(uint32_t ipaddr, uint32_t ip_mask + , uint32_t checkipaddr, uint32_t chk_ip_mask) { return true; } + static bool checkIPv6Address(in6_addr ipv6addr, in6_addr ipv6_mask + , in6_addr checkipv6addr) { return true; } + static bool checkIPv6Address(in6_addr ipv6addr, in6_addr ipv6_mask + , in6_addr checkipv6addr, in6_addr chk_ipv6_mask) { return true; } + static string getipstring(in_addr ipnaddr, int radix) { return "dummy"; } + static string getipstring(uint32_t ipaddr, int radix) { return "dummy"; } + static string getbytestring(uint8_t ipaddr, int radix) { return "dummy"; } + + vector* get_firstCtrlrFlows() { + return &firstCtrlrFlows; + }; + std::map* get_ctrlr_dom_count_map() { + return &ctrlr_dom_count_map; + }; + std::map, KeyDataflowCmp > pfc_flows; + std::map, KeyVtnDataflowCmp > upll_pfc_flows; + std::map ctrlr_dom_count_map; + private: + vector firstCtrlrFlows; +}; + +} // namespace dataflow +} // namespace unc + +#endif // UNC_DATAFLOW_UTIL_HH_ diff --git a/coordinator/test/modules/stub/include/uncxx/unc_dataflow.h b/coordinator/test/modules/stub/include/uncxx/unc_dataflow.h new file mode 100644 index 00000000..45fd25fc --- /dev/null +++ b/coordinator/test/modules/stub/include/uncxx/unc_dataflow.h @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef _UNC_DATAFLOW_H_ +#define _UNC_DATAFLOW_H_ + +/** + * @brief UNC Dataflow Header + * @file unc_dataflow.h + * @author HCL + * @date Sep-2013 + * @version SYSTEM:UNC 1.0 + * + */ + +typedef enum { + kidxDfDataFlowReason = 0, + kidxDfDataFlowControllerCount +} unc_val_df_dataflow_index; + +typedef enum { + kidxDfDataFlowStPackets = 0, + kidxDfDataFlowStOctets, + kidxDfDataFlowStDuration +} unc_val_df_dataflow_st_index; + +typedef enum { + kidxDfDataFlowPathInfoSwitchId = 0, + kidxDfDataFlowPathInfoInPort, + kidxDfDataFlowPathInfoOutPort +} unc_val_df_dataflow_path_info_index; + +typedef enum { + kidxDfDataFlowControllerName = 0, + kidxDfDataFlowControllerType, + kidxDfDataFlowFlowId, + kidxDfDataFlowStatus, + kidxDfDataFlowFlowType, + kidxDfDataFlowPolicyIndex, + kidxDfDataFlowVtnId, + kidxDfDataFlowIngressSwitchId, + kidxDfDataFlowInPort, + kidxDfDataFlowInStationId, + kidxDfDataFlowInDomain, + kidxDfDataFlowEgressSwitchId, + kidxDfDataFlowOutPort, + kidxDfDataFlowOutStationId, + kidxDfDataFlowOutDomain, + kidxDfDataFlowPathInfoCount, + kidxDfDataFlowMatchCount, + kidxDfDataFlowActionCount +} unc_val_df_dataflow_cmn_index; + +typedef enum { + UNC_DF_RES_SUCCESS = 0, + /* If traversed PFC version is 5.0 */ + UNC_DF_RES_OPERATION_NOT_SUPPORTED, + /* If flow count exceeds across a boundary by certain limit */ + UNC_DF_RES_EXCEEDS_FLOW_LIMIT, + /* If traversed PFC is disconnected */ + UNC_DF_RES_CTRLR_DISCONNECTED, + /* If flow traversal exceeds by certain hop limit */ + UNC_DF_RES_EXCEEDS_HOP_LIMIT, + /* If target controller is not able to find for a VNP/BYPASS */ + UNC_DF_RES_DST_NOT_REACHED, + /* If flow not found in target PFC */ + UNC_DF_RES_FLOW_NOT_FOUND, + /* If any system level error at UNC */ + UNC_DF_RES_SYSTEM_ERROR +}UncDataflowReason; + +typedef enum { + UNC_DF_STAT_INIT = 0, + UNC_DF_STAT_ACTIVATING, + UNC_DF_STAT_ACTIVE, + UNC_DF_STAT_SWITCHING +}UncDataflowStatus; + +typedef enum { + UNC_DF_TYPE_VTN = 0 +}UncDataflowFlowType; + +typedef enum { + UNC_MATCH_IN_PORT = 0, + UNC_MATCH_DL_SRC, + UNC_MATCH_DL_DST, + UNC_MATCH_DL_TYPE, + UNC_MATCH_VLAN_ID, + UNC_MATCH_VLAN_PCP, + UNC_MATCH_IP_TOS, + UNC_MATCH_IP_PROTO, + UNC_MATCH_IPV4_SRC, + UNC_MATCH_IPV4_DST, + UNC_MATCH_IPV6_SRC, + UNC_MATCH_IPV6_DST, + UNC_MATCH_TP_SRC, + UNC_MATCH_TP_DST +}UncDataflowFlowMatchType; + +typedef enum { + UNC_MATCH_MASK_INVALID = 0, + UNC_MATCH_MASK_VALID +}UncDataflowFlowMatchMask; + +typedef enum { + UNC_ACTION_OUTPUT = 0, + UNC_ACTION_SET_ENQUEUE, + UNC_ACTION_SET_DL_SRC, + UNC_ACTION_SET_DL_DST, + UNC_ACTION_SET_VLAN_ID, + UNC_ACTION_SET_VLAN_PCP, + UNC_ACTION_STRIP_VLAN, + UNC_ACTION_SET_IPV4_SRC, + UNC_ACTION_SET_IPV4_DST, + UNC_ACTION_SET_IP_TOS, + UNC_ACTION_SET_TP_SRC, + UNC_ACTION_SET_TP_DST, + UNC_ACTION_SET_IPV6_SRC, + UNC_ACTION_SET_IPV6_DST +}UncDataflowFlowActionType; + +#endif // _UNC_DATAFLOW_H_ + diff --git a/coordinator/test/modules/stub/misc/ipc_client.cc b/coordinator/test/modules/stub/misc/ipc_client.cc index 274cd308..063e2b9e 100644 --- a/coordinator/test/modules/stub/misc/ipc_client.cc +++ b/coordinator/test/modules/stub/misc/ipc_client.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -255,8 +255,25 @@ ClientSession::addOutput(val_logical_port_st&) { return addOutPut_; } +int +ClientSession::addOutput(key_port&) { + return addOutPut_; +} + +int +ClientSession::addOutput(key_switch&) { + return addOutPut_; +} +int +ClientSession::addOutput(key_ctr_dataflow&) { + return addOutPut_; +} +int +ClientSession::addOutput(key_dataflow&) { + return addOutPut_; +} void ClientSession::stub_setAddOutput(uint32_t data) { @@ -362,6 +379,7 @@ ClientSession::addOutput(const pfc_ipcstdef_t& /*def*/, pfc_cptr_t /*data*/) { return addOutPut_; } + void ClientSession::stub_setAddOutput(int result) { addOutPut_ = result; @@ -529,8 +547,40 @@ ClientSession::getResponse(uint32_t index, key_logical_member_port_t& data) { return responseResult_; } +int +ClientSession::getResponse(unsigned int, val_port_stats& data) { + return responseResult_; +} +int +ClientSession::getResponse(uint32_t, val_switch_st_detail&) { + return responseResult_; +} +int +ClientSession::getResponse(uint32_t, val_df_data_flow_st_t&) { + return responseResult_; +} + +int +ClientSession::getResponse(unsigned int, key_dataflow&) { + return responseResult_; +} + +int +ClientSession::getResponse(unsigned int, key_vtn&) { + return responseResult_; +} + +int +ClientSession::getResponse(unsigned int, pfcdrv_network_mon_alarm_data&) { + return responseResult_; +} + +int +ClientSession::getResponse(unsigned int, pfcdrv_policier_alarm_data&) { + return responseResult_; +} void ClientSession::stub_setResponse(int result) { diff --git a/coordinator/test/modules/stub/misc/ipc_server.cc b/coordinator/test/modules/stub/misc/ipc_server.cc index eacb9a31..8e095f7d 100644 --- a/coordinator/test/modules/stub/misc/ipc_server.cc +++ b/coordinator/test/modules/stub/misc/ipc_server.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -340,6 +340,27 @@ int ServerSession::addOutput(val_boundary&) { return addOutPut_; } + +int +ServerSession::addOutput(key_dataflow&) { + return addOutPut_; +} + +int +ServerSession::addOutput(val_port_stats&) { + return addOutPut_; +} + +int +ServerSession::addOutput(val_switch_st_detail&) { + return addOutPut_; +} + +int +ServerSession::addOutput(val_df_data_flow_st_t&) { + return addOutPut_; +} + int ServerSession::addOutput(key_root_t&) { // return addOutPut_; @@ -351,15 +372,21 @@ ServerSession::addOutput(key_root_t&) { return local; } } + int ServerSession::addOutput(val_path_fault_alarm_t&) { return addOutPut_; } + int ServerSession::addOutput(val_port_st_neighbor&) { return addOutPut_; } +int +ServerSession::addOutput(key_ctr_dataflow&) { + return addOutPut_; +} int ServerSession::addOutput(key_vtn_t&) { @@ -646,6 +673,11 @@ ServerSession::getArgument(int index, val_vbr_t& data) { } } +int +ServerSession::getArgument(int, key_ctr_dataflow&) { + return result_; +} + int ServerSession::getArgument(int /*index*/, key_vbr_if_t& /*data*/) { return result_; @@ -655,8 +687,10 @@ ServerSession::getArgument(int /*index*/, val_vbr_if_t& /*data*/) { return result_; } - - +int +ServerSession::getArgument(int, key_dataflow&) { + return result_; +} int ServerSession::getArgument(int /*index*/, pfcdrv_val_vbr_if_t& /*data*/) { @@ -743,7 +777,7 @@ ServerSession::clearStubData(void) { } int ServerEvent::serverEventErr_= 0; -int ServerEvent::postResult_= 1; +int ServerEvent::postResult_= UNC_UPPL_RC_FAILURE; void ServerEvent::stub_setserverEventErr(int err) { serverEventErr_ = err; diff --git a/coordinator/test/modules/stub/stub_oper_utils.cc b/coordinator/test/modules/stub/stub_oper_utils.cc index 05f32a96..437bd9c0 100644 --- a/coordinator/test/modules/stub/stub_oper_utils.cc +++ b/coordinator/test/modules/stub/stub_oper_utils.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -45,11 +45,11 @@ TcOperRet TcDbHandler::GetConfTable(pfc_bool_t* auto_save) { } /*methods to access TC_RECOVERY_TABLE*/ TcOperRet TcDbHandler::UpdateRecoveryTable(unc_keytype_datatype_t data_base, - TcServiceType operation) { + TcServiceType operation, uint32_t failover_instance) { return TCOPER_RET_SUCCESS; } TcOperRet TcDbHandler::GetRecoveryTable(unc_keytype_datatype_t* db, - TcServiceType* oper) { + TcServiceType* oper, uint32_t* failover_instance) { return TCOPER_RET_SUCCESS; } /*checks whether the row exists with a diff --git a/coordinator/test/modules/stub/tclib_module/tclib_module.cc b/coordinator/test/modules/stub/tclib_module/tclib_module.cc index 3b717810..67766244 100644 --- a/coordinator/test/modules/stub/tclib_module/tclib_module.cc +++ b/coordinator/test/modules/stub/tclib_module/tclib_module.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -43,6 +43,8 @@ TcApiCommonRet TcLibModule::TcLibAuditControllerRequest return stub_getMappedResultCode(TcLibModule::AUDIT_CONTROLLER); } +void TcLibModule::GetSessionAttributes(uint32_t* session_id, uint32_t* config_id) { +} TcApiCommonRet TcLibModule::TcLibValidateUpdateMsg (uint32_t sessionid, uint32_t configid) { diff --git a/coordinator/test/modules/stub/tclib_module/tclib_module.hh b/coordinator/test/modules/stub/tclib_module/tclib_module.hh index 7191ede2..0e71d1cb 100644 --- a/coordinator/test/modules/stub/tclib_module/tclib_module.hh +++ b/coordinator/test/modules/stub/tclib_module/tclib_module.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -109,6 +109,8 @@ class TcLibModule : public pfc::core::Module { pfc_ipcstdef_t value_def, void* key_data, void* value_data); + void GetSessionAttributes(uint32_t* session_id, uint32_t* config_id); + private: TcCommonRet ValidateOperTypeSequence(TcMsgOperType oper_type); diff --git a/coordinator/test/modules/tc/ut/test_tcauditoperations.cc b/coordinator/test/modules/tc/ut/test_tcauditoperations.cc index a2d27207..dfdf8c61 100644 --- a/coordinator/test/modules/tc/ut/test_tcauditoperations.cc +++ b/coordinator/test/modules/tc/ut/test_tcauditoperations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -44,7 +44,7 @@ TEST(TcAuditOperations, TcGetMinArgCount) { unc_map_, audit_); int argcount = tc_auditoperations.TestTcGetMinArgCount(); - EXPECT_EQ(3, argcount); + EXPECT_EQ(4, argcount); DEL_AUDIT_PARAMS(); } @@ -59,7 +59,7 @@ TEST(TcAuditOperations, TcCheckOperArgCount) { EXPECT_EQ(TC_OPER_INVALID_INPUT, tc_auditoperations.TcCheckOperArgCount(avail_count)); - avail_count = 3; + avail_count = 4; EXPECT_EQ(TC_OPER_SUCCESS, tc_auditoperations.TcCheckOperArgCount(avail_count)); DEL_AUDIT_PARAMS(); diff --git a/coordinator/test/modules/tc/ut/test_tcautosaveoperations.hh b/coordinator/test/modules/tc/ut/test_tcautosaveoperations.hh index 4903c5be..3b5aa631 100644 --- a/coordinator/test/modules/tc/ut/test_tcautosaveoperations.hh +++ b/coordinator/test/modules/tc/ut/test_tcautosaveoperations.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,7 @@ TcChannelNameMap unc_map_; #define DEL_AUDIT_PARAMS() \ delete tc_lock_; \ -tc_lock_ =NULL ; +tc_lock_ =NULL; /*class to test TcSaveOperations*/ diff --git a/coordinator/test/modules/tc/ut/test_tcconfigoperations.cc b/coordinator/test/modules/tc/ut/test_tcconfigoperations.cc index 2e838f41..f5c0ae84 100644 --- a/coordinator/test/modules/tc/ut/test_tcconfigoperations.cc +++ b/coordinator/test/modules/tc/ut/test_tcconfigoperations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -61,11 +61,13 @@ TEST(TcConfigOperations, TcValidateOperType) { unc_map_); tc_configoperations.tc_oper_ = TC_OP_RUNNING_SAVE; - EXPECT_EQ(TC_INVALID_OPERATION_TYPE, tc_configoperations.TcValidateOperType()); + EXPECT_EQ(TC_INVALID_OPERATION_TYPE, + tc_configoperations.TcValidateOperType()); tc_configoperations.tc_oper_ = TC_OP_CLEAR_STARTUP; // change -11 to define - EXPECT_EQ(TC_INVALID_OPERATION_TYPE, tc_configoperations.TcValidateOperType()); + EXPECT_EQ(TC_INVALID_OPERATION_TYPE, + tc_configoperations.TcValidateOperType()); DEL_AUDIT_PARAMS(); } @@ -77,7 +79,8 @@ TEST(TcConfigOperations, TcValidateOperType_Failure) { db_handler, unc_map_); // Check return value and change to define - EXPECT_EQ(TC_INVALID_OPERATION_TYPE, tc_configoperations.TcValidateOperType()); + EXPECT_EQ(TC_INVALID_OPERATION_TYPE, + tc_configoperations.TcValidateOperType()); DEL_AUDIT_PARAMS(); } @@ -214,10 +217,10 @@ TEST(TcConfigOperations, HandleLockRet) { EXPECT_EQ(TC_OPER_FAILURE, tc_configoperations.HandleLockRet(ret)); ret = TC_LOCK_INVALID_SESSION_ID; - EXPECT_EQ(5, tc_configoperations.HandleLockRet(ret)); + EXPECT_EQ(104, tc_configoperations.HandleLockRet(ret)); ret = TC_LOCK_INVALID_CONFIG_ID; - EXPECT_EQ(3, tc_configoperations.HandleLockRet(ret)); + EXPECT_EQ(102, tc_configoperations.HandleLockRet(ret)); DEL_AUDIT_PARAMS(); } diff --git a/coordinator/test/modules/tc/ut/test_tcconfigoperations.hh b/coordinator/test/modules/tc/ut/test_tcconfigoperations.hh index c1c1c634..c77e6e1c 100644 --- a/coordinator/test/modules/tc/ut/test_tcconfigoperations.hh +++ b/coordinator/test/modules/tc/ut/test_tcconfigoperations.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,7 @@ TcChannelNameMap unc_map_; #define DEL_AUDIT_PARAMS() \ delete tc_lock_; \ -tc_lock_ =NULL ; +tc_lock_ =NULL; /*class to test TcConfigOperations*/ diff --git a/coordinator/test/modules/tc/ut/test_tcdboperations.cc b/coordinator/test/modules/tc/ut/test_tcdboperations.cc index c596f8b6..2019bb39 100644 --- a/coordinator/test/modules/tc/ut/test_tcdboperations.cc +++ b/coordinator/test/modules/tc/ut/test_tcdboperations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -50,7 +50,7 @@ TEST(TcDbOperations, TcValidateOperType) { &sess_, db_handler, unc_map_); - stub_srv_uint32=1; + stub_srv_uint32 = 1; tc_dboperations.tc_oper_ = TC_OP_RUNNING_SAVE; EXPECT_EQ(TC_OPER_SUCCESS, tc_dboperations.TcValidateOperType()); diff --git a/coordinator/test/modules/tc/ut/test_tcdboperations.hh b/coordinator/test/modules/tc/ut/test_tcdboperations.hh index 9718a48c..68a6545e 100644 --- a/coordinator/test/modules/tc/ut/test_tcdboperations.hh +++ b/coordinator/test/modules/tc/ut/test_tcdboperations.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,7 +35,7 @@ TcChannelNameMap unc_map_; #define DEL_AUDIT_PARAMS() \ delete tc_lock_; \ -tc_lock_ =NULL ; +tc_lock_ =NULL; /*class to test TcDbOperations*/ diff --git a/coordinator/test/modules/tc/ut/test_tcmsg.hh b/coordinator/test/modules/tc/ut/test_tcmsg.hh index dcd94bd3..71f28afe 100644 --- a/coordinator/test/modules/tc/ut/test_tcmsg.hh +++ b/coordinator/test/modules/tc/ut/test_tcmsg.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -139,7 +139,6 @@ class Test2phase : public TwoPhaseCommit { TcOperRet TestGetControllerInfo(pfc::core::ipc::ClientSession* sess) { return GetControllerInfo(sess); } - }; diff --git a/coordinator/test/modules/tc/ut/test_tcreadoperations.cc b/coordinator/test/modules/tc/ut/test_tcreadoperations.cc index c49932e1..06ebcb92 100644 --- a/coordinator/test/modules/tc/ut/test_tcreadoperations.cc +++ b/coordinator/test/modules/tc/ut/test_tcreadoperations.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -33,7 +33,7 @@ TEST(TcReadOperations, TcGetMinArgCount) { unc_map_, readq_); int argcount = tc_readoperations.TestTcGetMinArgCount(); EXPECT_EQ(2, argcount); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcCheckOperArgCount) { @@ -50,7 +50,7 @@ TEST(TcReadOperations, TcCheckOperArgCount) { avail_count = 2; EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcCheckOperArgCount(avail_count)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcCheckOperArgCount_ReadAcquire) { @@ -70,7 +70,7 @@ TEST(TcReadOperations, TcCheckOperArgCount_ReadAcquire) { avail_count = UNC_READ_OPER_ARG_COUNT_MAX; EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcCheckOperArgCount(avail_count)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcCheckOperArgCount_ReadRelease) { @@ -91,7 +91,7 @@ TEST(TcReadOperations, TcCheckOperArgCount_ReadRelease) { avail_count = UNC_READ_RELEASE_ARG_COUNT+1; EXPECT_EQ(TC_OPER_INVALID_INPUT, tc_readoperations.TcCheckOperArgCount(avail_count)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcCheckOperArgCount_Success) { @@ -103,7 +103,7 @@ TEST(TcReadOperations, TcCheckOperArgCount_Success) { uint32_t avail_count = 2; EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcCheckOperArgCount(avail_count)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcValidateOperType) { @@ -116,7 +116,7 @@ TEST(TcReadOperations, TcValidateOperType) { tc_readoperations.tc_oper_ = TC_OP_READ_ACQUIRE; EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcValidateOperType()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcValidateOperType_Failure) { @@ -127,7 +127,7 @@ TEST(TcReadOperations, TcValidateOperType_Failure) { unc_map_, readq_); EXPECT_EQ(TC_INVALID_OPERATION_TYPE, tc_readoperations.TcValidateOperType()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, HandleMsgRet_Fatal) { @@ -139,7 +139,7 @@ TEST(TcReadOperations, HandleMsgRet_Fatal) { unc_map_, readq_); // check code change define value EXPECT_EQ(TC_SYSTEM_FAILURE, tc_readoperations.HandleMsgRet(msgret)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, HandleMsgRet_Abort) { @@ -150,7 +150,7 @@ TEST(TcReadOperations, HandleMsgRet_Abort) { db_handler, unc_map_, readq_); EXPECT_EQ(TC_OPER_ABORT, tc_readoperations.HandleMsgRet(msgret)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, HandleMsgRet_Success) { @@ -161,7 +161,7 @@ TEST(TcReadOperations, HandleMsgRet_Success) { db_handler, unc_map_, readq_); EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.HandleMsgRet(msgret)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcValidateOperParams) { @@ -171,7 +171,7 @@ TEST(TcReadOperations, TcValidateOperParams) { db_handler, unc_map_, readq_); EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcValidateOperParams()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcValidateOperParams_ReadRelease) { @@ -186,7 +186,7 @@ TEST(TcReadOperations, TcValidateOperParams_ReadRelease) { EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcValidateOperParams()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcValidateOperParams_RetFailure) { @@ -197,7 +197,7 @@ TEST(TcReadOperations, TcValidateOperParams_RetFailure) { db_handler, unc_map_, readq_); EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcValidateOperParams()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcValidateOperParams_OperFailure) { @@ -222,7 +222,7 @@ TEST(TcReadOperations, TcValidateOperParams_OperFailure) { tc_readoperations.arg_timeout_ = PFC_TRUE; stub_srv_uint32 = -1; EXPECT_EQ(TC_OPER_FAILURE, tc_readoperations.TcValidateOperParams()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, TcValidateOperParams_OperFailureWithTimeout) { @@ -238,7 +238,7 @@ TEST(TcReadOperations, TcValidateOperParams_OperFailureWithTimeout) { tc_readoperations.timeout_ = 10; tc_readoperations.read_handle_ = NULL; EXPECT_EQ(TC_OPER_FAILURE, tc_readoperations.TcValidateOperParams()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } @@ -300,7 +300,7 @@ TEST(TcReadOperations, TcGetExclusion_ReadAcquire_Success) { tc_readoperations.tclock_ = tc_lock_; // Check error Code and change EXPECT_EQ(TC_OPER_FAILURE, tc_readoperations.TcGetExclusion()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } @@ -319,7 +319,7 @@ TEST(TcReadOperations, TcReleaseExclusion) { db_handler, unc_map_, readq); EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.TcReleaseExclusion()); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, HandleLockRet) { @@ -341,7 +341,7 @@ TEST(TcReadOperations, HandleLockRet) { ret = TC_LOCK_INVALID_SESSION_ID; // CHange to define - EXPECT_EQ(5, tc_readoperations.HandleLockRet(ret)); + EXPECT_EQ(104, tc_readoperations.HandleLockRet(ret)); ret = TC_LOCK_ALREADY_ACQUIRED; EXPECT_EQ(TC_SESSION_ALREADY_ACTIVE, tc_readoperations.HandleLockRet(ret)); @@ -387,7 +387,7 @@ TEST(TcReadOperations, SendAdditionalResponse_Success) { unc_map_, readq_); EXPECT_EQ(TC_OPER_SUCCESS, tc_readoperations.SendAdditionalResponse(oper_stat)); - DEL_AUDIT_PARAMS(); + DEL_AUDIT_PARAMS(); } TEST(TcReadOperations, SendAdditionalResponse_Failure) { diff --git a/coordinator/test/modules/tc/ut/test_tcreadoperations.hh b/coordinator/test/modules/tc/ut/test_tcreadoperations.hh index 630970e7..2b1f5a95 100644 --- a/coordinator/test/modules/tc/ut/test_tcreadoperations.hh +++ b/coordinator/test/modules/tc/ut/test_tcreadoperations.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,7 +36,7 @@ TcTaskqUtil* readq_= NULL; #define DEL_AUDIT_PARAMS() \ delete tc_lock_; \ -tc_lock_ =NULL ; +tc_lock_ =NULL; /*class to test TcReadOperations*/ diff --git a/coordinator/test/modules/tc/ut/test_tcstartupoperations.hh b/coordinator/test/modules/tc/ut/test_tcstartupoperations.hh index f48db5ac..a0c2e699 100644 --- a/coordinator/test/modules/tc/ut/test_tcstartupoperations.hh +++ b/coordinator/test/modules/tc/ut/test_tcstartupoperations.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -37,7 +37,7 @@ pfc_bool_t is_switch = true; #define DEL_AUDIT_PARAMS() \ delete tc_lock_; \ -tc_lock_ =NULL ; +tc_lock_ =NULL; /*class to test TcStartupOperations*/ class TestTcStartUpOperations : public TcStartUpOperations { diff --git a/coordinator/test/modules/upll/ut/Makefile b/coordinator/test/modules/upll/ut/Makefile index ce444c0b..94808821 100644 --- a/coordinator/test/modules/upll/ut/Makefile +++ b/coordinator/test/modules/upll/ut/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2013 NEC Corporation +# Copyright (c) 2013-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -22,32 +22,38 @@ TCLIB_STUBDIR = $(COMMON_STUB_PATH)/stub/tclib_module CAPA_STUBDIR = $(COMMON_STUB_PATH)/stub/capa_module DAL_STUBDIR = $(COMMON_STUB_PATH)/stub/dal MISC_STUBDIR = $(COMMON_STUB_PATH)/stub/misc +CLSTAT_STUBDIR = $(COMMON_STUB_PATH)/stub/clstat +VLANMAP_STUBDIR = $(COMMON_STUB_PATH)/upll/ut +CLSTAT_SRCDIR = $(MODULE_SRCROOT)/clstat UPLL_SRCDIR = $(MODULE_SRCROOT)/upll CAPA_SRCDIR = $(MODULE_SRCROOT)/capa DAL_SRCDIR = $(MODULE_SRCROOT)/dal TCLIB_SRCDIR = $(MODULE_SRCROOT)/tclib ALARM_SRCDIR = $(MODULE_SRCROOT)/alarm + # Define a list of directories that contain source files. -ALT_SRCDIRS = $(UPLL_SRCDIR) $(CAPA_STUBDIR) $(DAL_STUBDIR) -ALT_SRCDIRS += $(TCLIB_STUBDIR) $(MISC_STUBDIR) +ALT_SRCDIRS = $(CLSTAT_STUBDIR) $(UPLL_SRCDIR) $(CAPA_STUBDIR) $(DAL_STUBDIR) +ALT_SRCDIRS += $(TCLIB_STUBDIR) $(MISC_STUBDIR) $(CLSTAT_SRCDIR) $(VLANMAP_STUBDIR) UT_INCDIRS_PREP = ${COMMON_STUB_PATH} $(COMMON_STUB_PATH)/stub/include $(COMMON_STUB_PATH)/stub/include/core_include UTXX_INCDIRS_PREP = $(TCLIB_STUBDIR) UTXX_INCDIRS_PREP += $(CAPA_STUBDIR) +UTXX_INCDIRS_PREP += $(CLSTAT_STUBDIR) UTXX_INCDIRS_PREP += $(DAL_STUBDIR) UTXX_INCDIRS_PREP += $(DAL_STUBDIR)/include +UTXX_INCDIRS_PREP += $(VLANMAP_STUBDIR) -#UTXX_INCDIRS_PREP = $(CONTROLLER_STUBDIR)/driver - EXTRA_CXX_INCDIRS = $(MODULE_SRCROOT) EXTRA_CXX_INCDIRS += $(CAPA_SRCDIR)/include +EXTRA_CXX_INCDIRS += $(CLSTAT_SRCDIR)/. +EXTRA_CXX_INCDIRS += $(CLSTAT_SRCDIR)/include EXTRA_CXX_INCDIRS += $(UPLL_SRCDIR) EXTRA_CXX_INCDIRS += $(UPLL_SRCDIR)/include -EXTRA_CXX_INCDIRS += $(DAL_SRCDIR) +EXTRA_CXX_INCDIRS += $(DAL_SRCDIR)/. EXTRA_CXX_INCDIRS += $(TCLIB_SRCDIR)/include EXTRA_CXX_INCDIRS += $(ALARM_SRCDIR)/include @@ -60,13 +66,13 @@ UPLL_SOURCES += ctrlr_mgr.cc UPLL_SOURCES += key_tree.cc UPLL_SOURCES += tclib_intf_impl.cc UPLL_SOURCES += momgr_intf.cc -UPLL_SOURCES += momgr_impl.cc UPLL_SOURCES += tx_mgr.cc UPLL_SOURCES += config_lock.cc UPLL_SOURCES += kt_util.cc UPLL_SOURCES += vtn_momgr.cc UPLL_SOURCES += vbr_momgr.cc UPLL_SOURCES += vbr_if_momgr.cc +UPLL_SOURCES += momgr_impl.cc UPLL_SOURCES += vlanmap_momgr.cc UPLL_SOURCES += nwm_momgr.cc UPLL_SOURCES += nwm_host_momgr.cc @@ -103,6 +109,10 @@ UPLL_SOURCES += vtep_grp_momgr.cc UPLL_SOURCES += vtepgrp_mem_momgr.cc UPLL_SOURCES += vtunnel_momgr.cc UPLL_SOURCES += vtunnel_if_momgr.cc +UPLL_SOURCES += dbconn_mgr.cc +UPLL_SOURCES += vtn_dataflow_momgr.cc +UPLL_SOURCES += ipc_client_handler.cc +UPLL_SOURCES += config_svc.cc CAPA_SOURCES = capa_module_stub.cc DAL_SOURCES = dal_odbc_mgr.cc dal_bind_info.cc dal_schema.cc @@ -112,9 +122,10 @@ MISC_SOURCES = ipc_client.cc ipc_server.cc module.cc alarm.cc UT_SOURCES = vtn_momgr_ut.cc UT_SOURCES += vbr_momgr_ut.cc UT_SOURCES += vbr_if_momgr_ut.cc +UT_SOURCES += vlanmap_ut.cc CXX_SOURCES = $(UT_SOURCES) util.cc -CXX_SOURCES += $(UPLL_SOURCES) $(CAPA_SOURCES) $(DAL_SOURCES) +CXX_SOURCES += $(UPLL_SOURCES) $(CAPA_SOURCES) $(DAL_SOURCES) CXX_SOURCES += $(TCLIB_SOURCES) $(MISC_SOURCES) EXTRA_CXXFLAGS += -fprofile-arcs -ftest-coverage diff --git a/coordinator/test/modules/upll/ut/ut_stub.h b/coordinator/test/modules/upll/ut/ut_stub.h index ef2a7493..184f98f3 100644 --- a/coordinator/test/modules/upll/ut/ut_stub.h +++ b/coordinator/test/modules/upll/ut/ut_stub.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -15,13 +15,15 @@ */ #ifdef __cplusplus +#include "stub/clstat/clstat_api.h" #include "stub/include/cxx/pfcxx/ipc_server.hh" #include "stub/include/cxx/pfcxx/ipc_client.hh" +#include "stub/include/cxx/pfcxx/synch.hh" #include "stub/include/cxx/pfcxx/module.hh" #include "stub/dal/dal_cursor.hh" +#include "stub/dal/dal_odbc_mgr.hh" #include "stub/dal/dal_dml_intf.hh" #include "stub/dal/dal_bind_info.hh" -#include "stub/dal/dal_odbc_mgr.hh" #include "stub/dal/dal_schema.hh" #include "stub/tclib_module/tclib_module.hh" diff --git a/coordinator/test/modules/upll/ut/vbr_if_momgr_ut.cc b/coordinator/test/modules/upll/ut/vbr_if_momgr_ut.cc index 1a8747ba..1cca3ea7 100644 --- a/coordinator/test/modules/upll/ut/vbr_if_momgr_ut.cc +++ b/coordinator/test/modules/upll/ut/vbr_if_momgr_ut.cc @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -46,8 +45,7 @@ using namespace pfc::core; using namespace unc::upll::dal::schema::table; class VbrIfMoMgrTest - : public UpllTestEnv -{ + : public UpllTestEnv { }; static void GetKeyStruct(key_vbr_if *&kst) { @@ -64,10 +62,9 @@ static void GetKeyStruct(key_vbr_if *&kst) { if_name, strlen(if_name)+1); } -static void GetValStruct(val_vbr_if *&vst) -{ +static void GetValStruct(val_vbr_if *&vst) { const char *desc = "thisisvbridge"; - const char *logical_port_id ="lport1"; + const char *logical_port_id = "lport1"; vst = ZALLOC_TYPE(val_vbr_if); for (unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(vst->valid); ++loop) { @@ -82,8 +79,8 @@ static void GetValStruct(val_vbr_if *&vst) vst->admin_status = UPLL_ADMIN_ENABLE; strncpy(reinterpret_cast(vst->description), desc, strlen(desc)+1); - vst->portmap.vlan_id=1; - vst->portmap.tagged=1; + vst->portmap.vlan_id = 1; + vst->portmap.tagged = 1; for (unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(vst->portmap.valid); ++loop) { vst->portmap.valid[loop] = UNC_VF_VALID; @@ -97,19 +94,17 @@ static void GetValStruct(val_vbr_if *&vst) logical_port_id, strlen(logical_port_id)+1); } -static void GetKeyValStruct(key_vbr_if *&kst, val_vbr_if *&vst) -{ +static void GetKeyValStruct(key_vbr_if *&kst, val_vbr_if *&vst) { GetKeyStruct(kst); GetValStruct(vst); } -static void GetValDrvStruct(val_drv_vbr_if *&vst) -{ +static void GetValDrvStruct(val_drv_vbr_if *&vst) { const char *vex_name = "Vex_1"; const char *vex_if_name = "Vex if_1"; const char *vex_link_name = "Vex link_1"; const char *desc = "thisisvbridge"; - const char *logical_port_id ="lport1"; + const char *logical_port_id = "lport1"; vst = ZALLOC_TYPE(val_drv_vbr_if); strncpy(reinterpret_cast(vst->vex_name), vex_name, @@ -134,11 +129,11 @@ static void GetValDrvStruct(val_drv_vbr_if *&vst) vst->vbr_if_val.cs_attr[loop] = UNC_CS_APPLIED; } - vst->vbr_if_val.admin_status=UPLL_ADMIN_ENABLE; + vst->vbr_if_val.admin_status = UPLL_ADMIN_ENABLE; strncpy(reinterpret_cast(vst->vbr_if_val.description), desc, strlen(desc)+1); - vst->vbr_if_val.portmap.vlan_id=1; - vst->vbr_if_val.portmap.tagged=0; + vst->vbr_if_val.portmap.vlan_id = 1; + vst->vbr_if_val.portmap.tagged = 0; for (unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(vst->vbr_if_val.portmap.valid); ++loop) { @@ -153,8 +148,7 @@ static void GetValDrvStruct(val_drv_vbr_if *&vst) logical_port_id, strlen(logical_port_id)+1); } -static void GetKeyValDrvStruct(key_vbr_if *&kst, val_drv_vbr_if *&vst) -{ +static void GetKeyValDrvStruct(key_vbr_if *&kst, val_drv_vbr_if *&vst) { GetKeyStruct(kst); GetValDrvStruct(vst); } @@ -168,11 +162,14 @@ TEST_F(VbrIfMoMgrTest, DupConfigKeyVal_ReqInvalidKT) { ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VTN, + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbrIf, key, tmp); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.DupConfigKeyVal(okey,req,MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete req; delete okey; } @@ -185,11 +182,14 @@ TEST_F(VbrIfMoMgrTest, DupConfigKeyVal_SuccessMAINTBL) { GetKeyValStruct(key, val); ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, tmp); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.DupConfigKeyVal(okey,req,MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete req; delete okey; } @@ -198,14 +198,17 @@ TEST_F(VbrIfMoMgrTest, DupConfigKeyVal_Error) { VbrIfMoMgr obj; ConfigKeyVal *okey = NULL; key_vbr_if *key(NULL); - val_vbr_if *val=NULL; + val_vbr_if *val = NULL; ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, tmp); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.DupConfigKeyVal(okey,req,MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete req; delete okey; } @@ -235,16 +238,21 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_InValidName) { strncpy(reinterpret_cast(key->if_name), if_name, strlen(if_name)+1); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, NULL)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CopyToConfigKey(okey, ikey)); - strncpy(reinterpret_cast(key->vbr_key.vtn_key.vtn_name),"VTN_1",32); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey)); + strncpy(reinterpret_cast(key->vbr_key.vtn_key.vtn_name), "VTN_1", 32); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CopyToConfigKey(okey, ikey)); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, NULL)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey1)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CopyToConfigKey(okey, ikey1)); delete ikey; delete ikey1; delete okey; @@ -265,9 +273,11 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_InValidName_01) { strncpy(reinterpret_cast(key->if_name), if_name, strlen(if_name)+1); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey1)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CopyToConfigKey(okey, ikey1)); delete ikey1; delete okey; } @@ -337,7 +347,7 @@ TEST_F(VbrIfMoMgrTest, FilterAttributes_CreateOperation) { valvbr1->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_INVALID; val1 = reinterpret_cast(reinterpret_cast(valvbr1)); val2 = reinterpret_cast(reinterpret_cast(valvbr1)); - EXPECT_FALSE(vbr.FilterAttributes(val1,val2,audit_status,op)); + EXPECT_FALSE(vbr.FilterAttributes(val1, val2, audit_status, op)); free(valvbr1); } @@ -355,7 +365,7 @@ TEST_F(VbrIfMoMgrTest, FilterAttributes_OperationUpdate) { valvbr2->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_INVALID; val1 = reinterpret_cast(reinterpret_cast(valvbr1)); val2 = reinterpret_cast(reinterpret_cast(valvbr2)); - EXPECT_TRUE(vbr.FilterAttributes(val1,val2,audit_status,op)); + EXPECT_TRUE(vbr.FilterAttributes(val1, val2, audit_status, op)); free(valvbr1); free(valvbr2); @@ -368,11 +378,13 @@ TEST_F(VbrIfMoMgrTest, ValidateCapability_ErrorInput) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.ValidateCapability(req, ikey, NULL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValidateCapability(req, ikey, NULL)); delete ikey; } @@ -384,7 +396,8 @@ TEST_F(VbrIfMoMgrTest, ValidateCapability_Success) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -400,16 +413,20 @@ TEST_F(VbrIfMoMgrTest, ValidateCapability_Success) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_UPDATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_READ_SIBLING_COUNT; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_DELETE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateCapability(req, ikey, "CTR_1")); delete ikey; } @@ -420,25 +437,28 @@ TEST_F(VbrIfMoMgrTest, ValidateCapability_ikey_NULL) { val_vbr_if *val; GetKeyValStruct(key, val); ConfigKeyVal *ikey = NULL; - IpcReqRespHeader *req=NULL; - const char *ctrlr_name="ctr1"; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateCapability(req, ikey, ctrlr_name)); + IpcReqRespHeader *req = NULL; + const char *ctrlr_name = "ctr1"; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateCapability(req, ikey, ctrlr_name)); } TEST_F(VbrIfMoMgrTest, ValidateCapability_SUCCESS) { VbrIfMoMgr obj; const char * ctrlr_name = reinterpret_cast("PFC222"); key_vbr_if *vbrif_key(ZALLOC_TYPE(key_vbr_if)); - strcpy((char*)vbrif_key->vbr_key.vtn_key.vtn_name,(char*)"vtn1"); - strcpy((char*)vbrif_key->vbr_key.vbridge_name,(char*)"VRT31"); - strcpy((char*)vbrif_key->if_name,(char*)"VRTIF11"); + strcpy((char*)vbrif_key->vbr_key.vtn_key.vtn_name, (char*)"vtn1"); + strcpy((char*)vbrif_key->vbr_key.vbridge_name, (char*)"VRT31"); + strcpy((char*)vbrif_key->if_name, (char*)"VRTIF11"); IPC_REQ_RESP_HEADER_DECL(req); req->operation = UNC_OP_UPDATE; req->datatype = UPLL_DT_CANDIDATE; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, vbrif_key, NULL); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, obj.ValidateCapability(req, ikey, ctrlr_name)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, vbrif_key, NULL); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, ctrlr_name)); delete ikey; } @@ -450,11 +470,13 @@ TEST_F(VbrIfMoMgrTest, AdaptValToVtnService_Success_01) { GetKeyValStruct(key, val); ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AdaptValToVtnService(ikey)); delete ikey; } @@ -466,11 +488,13 @@ TEST_F(VbrIfMoMgrTest, AdaptValToVtnService_Success_02) { val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_INVALID; ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AdaptValToVtnService(ikey)); delete ikey; } @@ -481,11 +505,13 @@ TEST_F(VbrIfMoMgrTest, AdaptValToVtnService_Success_03) { GetKeyValStruct(key, val); ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbrIfSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AdaptValToVtnService(ikey)); delete ikey; } @@ -496,30 +522,36 @@ TEST_F(VbrIfMoMgrTest, AdaptValToVtnService_Failure) { GetKeyValStruct(key, val); ConfigKeyVal* ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.AdaptValToVtnService(ikey)); - ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.AdaptValToVtnService(ikey)); delete ikey; } TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_01) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; - uint8_t attrs1=0; - uint8_t *attrs=&attrs1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_IMPORT)); + unc_keytype_operation_t operation = UNC_OP_CREATE; + uint8_t attrs1 = 0; + uint8_t *attrs = &attrs1; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_IMPORT)); delete ikey; } @@ -529,12 +561,14 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_02) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; - uint8_t attrs1=0; - uint8_t *attrs=&attrs1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + unc_keytype_operation_t operation = UNC_OP_CREATE; + uint8_t attrs1 = 0; + uint8_t *attrs = &attrs1; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -544,14 +578,16 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_03) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; val->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_VALID; - uint8_t attrs1=0; - uint8_t *attrs=&attrs1; - attrs[unc::capa::vbr_if::kCapDesc]=0; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + uint8_t attrs1 = 0; + uint8_t *attrs = &attrs1; + attrs[unc::capa::vbr_if::kCapDesc] = 0; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -561,14 +597,16 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_04) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; - uint8_t attrs1=0; - uint8_t *attrs=&attrs1; + unc_keytype_operation_t operation = UNC_OP_CREATE; + uint8_t attrs1 = 0; + uint8_t *attrs = &attrs1; val->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_VALID_NO_VALUE; - attrs[unc::capa::vbr_if::kCapDesc]=0; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + attrs[unc::capa::vbr_if::kCapDesc] = 0; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -578,15 +616,17 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_05) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[10]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - val->admin_status=UPLL_ADMIN_ENABLE; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + val->admin_status = UPLL_ADMIN_ENABLE; val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID; - attrs[unc::capa::vbr_if::kCapAdminStatus]=0; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + attrs[unc::capa::vbr_if::kCapAdminStatus] = 0; + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -596,14 +636,16 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_06) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[10]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID_NO_VALUE; - attrs[unc::capa::vbr_if::kCapAdminStatus]=0; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + attrs[unc::capa::vbr_if::kCapAdminStatus] = 0; + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -613,15 +655,17 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_07) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[10]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID_NO_VALUE; val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID_NO_VALUE; - attrs[unc::capa::vbr_if::kCapLogicalPortId]=0; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + attrs[unc::capa::vbr_if::kCapLogicalPortId] = 0; + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -631,15 +675,17 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_08) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[10]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - attrs[unc::capa::vbr_if::kCapLogicalPortId]=0; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + attrs[unc::capa::vbr_if::kCapLogicalPortId] = 0; val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -649,15 +695,17 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_09) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[10]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID_NO_VALUE; val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; - attrs[unc::capa::vbr_if::kCapVlanId]=0; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + attrs[unc::capa::vbr_if::kCapVlanId] = 0; + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -667,15 +715,17 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_10) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[10]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - attrs[unc::capa::vbr_if::kCapVlanId]=0; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + attrs[unc::capa::vbr_if::kCapVlanId] = 0; val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -685,15 +735,17 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_11) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[20]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - attrs[unc::capa::vbr_if::kCapTagged]=0; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + attrs[unc::capa::vbr_if::kCapTagged] = 0; val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } @@ -703,30 +755,34 @@ TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_12) { val_vbr_if *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[20]; memset(attrs, 0xff, sizeof(attrs)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - attrs[unc::capa::vbr_if::kCapTagged]=0; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + attrs[unc::capa::vbr_if::kCapTagged] = 0; val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_STATE)); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_STATE)); delete ikey; } TEST_F(VbrIfMoMgrTest, ValVbrAttributeSupportCheck_13) { VbrIfMoMgr vbr; key_vbr_if *kst; - val_vbr_if *vst=NULL; + val_vbr_if *vst = NULL; GetKeyStruct(kst); - unc_keytype_operation_t operation= UNC_OP_CREATE; - uint8_t attrs1=0; - uint8_t *attrs=&attrs1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, vst); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValVbrIfAttributeSupportCheck(attrs,ikey,operation,UPLL_DT_IMPORT)); + unc_keytype_operation_t operation = UNC_OP_CREATE; + uint8_t attrs1 = 0; + uint8_t *attrs = &attrs1; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, vst); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValVbrIfAttributeSupportCheck(attrs, ikey, operation, UPLL_DT_IMPORT)); delete ikey; } @@ -736,10 +792,12 @@ TEST_F(VbrIfMoMgrTest, RestoreUnInitOPerStatus_01) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.RestoreUnInitOPerStatus(dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.RestoreUnInitOPerStatus(dmi)); delete ikey; } @@ -748,75 +806,86 @@ TEST_F(VbrIfMoMgrTest, GetVexternal_01) { VbrIfMoMgr vbr; key_vbr_if *key; val_drv_vbr_if *val; - upll_keytype_datatype_t dt_type=UPLL_DT_RUNNING; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; GetKeyValDrvStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t vexternal1=1; - uint8_t *vexternal=&vexternal1; - uint8_t vex_if1=1; - uint8_t *vex_if=&vex_if1; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalDmlIntf *dmi(getDalDmlIntf()); + uint8_t vexternal1 = 1; + uint8_t *vexternal = &vexternal1; + uint8_t vex_if1 = 1; + uint8_t *vex_if = &vex_if1; InterfacePortMapInfo iftype; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetVexternal(ikey,dt_type,dmi,vexternal,vex_if,iftype)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetVexternal(ikey, dt_type, dmi, vexternal, vex_if, iftype)); delete ikey; } +# if 0 TEST_F(VbrIfMoMgrTest, GetVexternal_02) { VbrIfMoMgr vbr; key_vbr_if *key; val_drv_vbr_if *val; - upll_keytype_datatype_t dt_type=UPLL_DT_AUDIT; + upll_keytype_datatype_t dt_type = UPLL_DT_AUDIT; GetKeyValDrvStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t vexternal1=1; - uint8_t *vexternal=&vexternal1; - uint8_t vex_if1=1; - uint8_t *vex_if=&vex_if1; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalDmlIntf *dmi(getDalDmlIntf()); + uint8_t vexternal1 = 1; + uint8_t *vexternal = &vexternal1; + uint8_t vex_if1 = 1; + uint8_t *vex_if = &vex_if1; InterfacePortMapInfo iftype; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetVexternal(ikey,dt_type,dmi,vexternal,vex_if,iftype)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetVexternal(ikey, dt_type, dmi, vexternal, vex_if, iftype)); delete ikey; } +# endif TEST_F(VbrIfMoMgrTest, GetVexternal_03) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t vexternal1=1; - uint8_t *vexternal=&vexternal1; - uint8_t vex_if1=1; - uint8_t *vex_if=&vex_if1; + uint8_t vexternal1 = 1; + uint8_t *vexternal = &vexternal1; + uint8_t vex_if1 = 1; + uint8_t *vex_if = &vex_if1; InterfacePortMapInfo iftype; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetVexternal(ikey,dt_type,dmi,vexternal,vex_if,iftype)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetVexternal(ikey, dt_type, dmi, vexternal, vex_if, iftype)); delete ikey; } TEST_F(VbrIfMoMgrTest, GetVexternal_04) { VbrIfMoMgr vbr; - key_vbr_if *key=NULL; - val_vbr_if *val=NULL; - upll_keytype_datatype_t dt_type=UPLL_DT_RUNNING; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t vexternal1=1; - uint8_t *vexternal=&vexternal1; - uint8_t vex_if1=1; - uint8_t *vex_if=&vex_if1; + key_vbr_if *key = NULL; + val_vbr_if *val = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalDmlIntf *dmi(getDalDmlIntf()); + uint8_t vexternal1 = 1; + uint8_t *vexternal = &vexternal1; + uint8_t vex_if1 = 1; + uint8_t *vex_if = &vex_if1; InterfacePortMapInfo iftype; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetVexternal(ikey,dt_type,dmi,vexternal,vex_if,iftype)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetVexternal(ikey, dt_type, dmi, vexternal, vex_if, iftype)); delete ikey; } @@ -825,12 +894,13 @@ TEST_F(VbrIfMoMgrTest, IsReferenced_01) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; GetKeyValStruct(key, val); ConfigKeyVal *ikey = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.IsReferenced(ikey,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.IsReferenced(ikey, dt_type, dmi)); delete ikey; } @@ -839,13 +909,15 @@ TEST_F(VbrIfMoMgrTest, IsReferenced_02) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.IsReferenced(ikey,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.IsReferenced(ikey, dt_type, dmi)); delete ikey; } @@ -854,19 +926,22 @@ TEST_F(VbrIfMoMgrTest, IsReferenced_03) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.IsReferenced(ikey,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.IsReferenced(ikey, dt_type, dmi)); delete ikey; } @@ -875,13 +950,15 @@ TEST_F(VbrIfMoMgrTest, IsReferenced_04) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VRT_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VRT_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.IsReferenced(ikey,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.IsReferenced(ikey, dt_type, dmi)); delete ikey; } @@ -892,11 +969,12 @@ TEST_F(VbrIfMoMgrTest, UpdateMo_01) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); - EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, vbr.UpdateMo(req,ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, vbr.UpdateMo(req, ikey, dmi)); delete ikey; } @@ -906,7 +984,8 @@ TEST_F(VbrIfMoMgrTest, UpdateMo_02) { ConfigKeyVal *ikey = NULL; DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.UpdateMo(req,ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.UpdateMo(req, ikey, dmi)); } TEST_F(VbrIfMoMgrTest, UpdateMo_03) { @@ -915,24 +994,28 @@ TEST_F(VbrIfMoMgrTest, UpdateMo_03) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_CANDIDATE; req->operation = UNC_OP_UPDATE; req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); CapaModuleStub::stub_loadCapaModule(); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_UPDATE_CAPABILITY, true); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_UPDATE_CAPABILITY, true); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"ctr_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(user_data->ctrlr_id, "ctr_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); ikey->set_user_data((void*)user_data); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.UpdateMo(req,ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.UpdateMo(req, ikey, dmi)); delete ikey; } @@ -943,16 +1026,19 @@ TEST_F(VbrIfMoMgrTest, UpdateMo_04) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_CANDIDATE; req->operation = UNC_OP_CREATE; req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcRecordNoMore); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vbr.UpdateMo(req,ikey,dmi)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcRecordNoMore); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vbr.UpdateMo(req, ikey, dmi)); delete ikey; } @@ -963,22 +1049,26 @@ TEST_F(VbrIfMoMgrTest, UpdateMo_05) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_CANDIDATE; req->operation = UNC_OP_CREATE; req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"ctr_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(user_data->ctrlr_id, "ctr_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); ikey->set_user_data((void*)user_data); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, true); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.UpdateMo(req,ikey,dmi)); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_CREATE_CAPABILITY, true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.UpdateMo(req, ikey, dmi)); delete ikey; } @@ -989,8 +1079,9 @@ TEST_F(VbrIfMoMgrTest, ValidateAttribute_01) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_CANDIDATE; @@ -998,7 +1089,8 @@ TEST_F(VbrIfMoMgrTest, ValidateAttribute_01) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateAttribute(ikey,dmi,req)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateAttribute(ikey, dmi, req)); delete ikey; } @@ -1006,11 +1098,12 @@ TEST_F(VbrIfMoMgrTest, ValidateAttribute_01) { TEST_F(VbrIfMoMgrTest, ValidateAttribute_02) { VbrIfMoMgr vbr; key_vbr_if *kst; - val_vbr_if *vst=NULL; + val_vbr_if *vst = NULL; GetKeyStruct(kst); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, vst); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, vst); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_CANDIDATE; @@ -1018,7 +1111,8 @@ TEST_F(VbrIfMoMgrTest, ValidateAttribute_02) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateAttribute(ikey,dmi,req)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateAttribute(ikey, dmi, req)); delete ikey; } @@ -1026,11 +1120,12 @@ TEST_F(VbrIfMoMgrTest, ValidateAttribute_02) { TEST_F(VbrIfMoMgrTest, ValidateAttribute_03) { VbrIfMoMgr vbr; key_vbr_if *kst; - val_vbr_if *vst=NULL; + val_vbr_if *vst = NULL; GetKeyStruct(kst); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, vst); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, vst); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_CANDIDATE; @@ -1038,7 +1133,8 @@ TEST_F(VbrIfMoMgrTest, ValidateAttribute_03) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateAttribute(ikey,dmi,req)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateAttribute(ikey, dmi, req)); delete ikey; } @@ -1046,18 +1142,20 @@ TEST_F(VbrIfMoMgrTest, ValidateAttribute_03) { TEST_F(VbrIfMoMgrTest, ValidateAttribute_04) { VbrIfMoMgr vbr; key_vbr_if *kst; - val_vbr_if *vst=NULL; + val_vbr_if *vst = NULL; GetKeyStruct(kst); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, vst); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, vst); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, kst, config_val); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_CANDIDATE; req->operation = UNC_OP_CREATE; req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateAttribute(ikey,dmi,req)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateAttribute(ikey, dmi, req)); delete ikey; } @@ -1067,14 +1165,17 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_01) { ConfigKeyVal *okey = NULL; ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.CopyToConfigKey(okey,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.CopyToConfigKey(okey, ikey)); } TEST_F(VbrIfMoMgrTest, CopyToConfigkey_02) { VbrIfMoMgr vbr; ConfigKeyVal *okey = NULL; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.CopyToConfigKey(okey,ikey)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, NULL, NULL); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.CopyToConfigKey(okey, ikey)); delete ikey; delete okey; @@ -1082,14 +1183,16 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_02) { TEST_F(VbrIfMoMgrTest, CopyToConfigkey_03) { VbrIfMoMgr vbr; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_vbr_if *key; val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.CopyToConfigKey(okey,ikey)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.CopyToConfigKey(okey, ikey)); delete ikey; delete okey; @@ -1097,14 +1200,16 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_03) { TEST_F(VbrIfMoMgrTest, CopyToConfigkey_04) { VbrIfMoMgr vbr; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_vbr_if *key; val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.CopyToConfigKey(okey,ikey)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.CopyToConfigKey(okey, ikey)); delete ikey; delete okey; @@ -1112,7 +1217,7 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_04) { TEST_F(VbrIfMoMgrTest, CopyToConfigkey_05) { VbrIfMoMgr vbr; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_vbr_if *key; val_vbr_if *val; @@ -1126,10 +1231,12 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_05) { sizeof(key_rename->old_unc_vnode_name)); free(key); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbrIf, key_rename, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbrIf, key_rename, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.CopyToConfigKey(okey,ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.CopyToConfigKey(okey, ikey)); delete ikey; delete okey; @@ -1137,54 +1244,60 @@ TEST_F(VbrIfMoMgrTest, CopyToConfigkey_05) { TEST_F(VbrIfMoMgrTest, UpdateConfigVal_01) { VbrIfMoMgr vbr; - upll_keytype_datatype_t datatype=UPLL_DT_CANDIDATE; + upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE; key_vbr_if *key; val_drv_vbr_if *val; DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValDrvStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.UpdateConfigVal(ikey,datatype,dmi)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.UpdateConfigVal(ikey, datatype, dmi)); delete ikey; } TEST_F(VbrIfMoMgrTest, UpdateConfigVal_03) { VbrIfMoMgr vbr; - upll_keytype_datatype_t datatype=UPLL_DT_CANDIDATE; + upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE; key_vbr_if *key; val_drv_vbr_if *val; DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValDrvStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VRT_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.UpdateConfigVal(ikey,datatype,dmi)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VRT_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.UpdateConfigVal(ikey, datatype, dmi)); delete ikey; } TEST_F(VbrIfMoMgrTest, ValidateVbrifKey_01) { VbrIfMoMgr vbr; - unc_keytype_operation_t operation=UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; key_vbr_if_t *key(ZALLOC_TYPE(key_vbr_if_t)); - strncpy((char*) key->if_name,"IF_1",32); - strncpy((char*) key->vbr_key.vbridge_name," ",32); - strncpy((char*) key->vbr_key.vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->if_name, "IF_1", 32); + strncpy((char*) key->vbr_key.vbridge_name, " ", 32); + strncpy((char*) key->vbr_key.vtn_key.vtn_name, "VTN1", 32); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,vbr.ValidateVbrifKey(key,operation)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrifKey(key, operation)); free(key); } TEST_F(VbrIfMoMgrTest, ValidateVbrifKey_02) { VbrIfMoMgr vbr; - unc_keytype_operation_t operation=UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; key_vbr_if_t *key(ZALLOC_TYPE(key_vbr_if_t)); - strncpy((char*) key->if_name," ",32); - strncpy((char*) key->vbr_key.vbridge_name,"vbr ",32); - strncpy((char*) key->vbr_key.vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->if_name, " ", 32); + strncpy((char*) key->vbr_key.vbridge_name, "vbr ", 32); + strncpy((char*) key->vbr_key.vtn_key.vtn_name, "VTN1", 32); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,vbr.ValidateVbrifKey(key,operation)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrifKey(key, operation)); free(key); } @@ -1197,7 +1310,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_01) { val->description[0] = '\0'; val->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_VALID; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1209,7 +1323,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_02) { val->valid[UPLL_IDX_DESC_VBRI] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1221,7 +1336,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_03) { val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1233,7 +1349,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_04) { val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_INVALID; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1247,7 +1364,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_05) { val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID; val->portmap.logical_port_id[0] = '\0'; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1260,7 +1378,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_06) { val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_LOGICAL_PORT_ID_PM] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1274,7 +1393,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_07) { val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; val->portmap.vlan_id = 0; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1287,7 +1407,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_08) { val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1299,7 +1420,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_09) { val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1312,7 +1434,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_10) { val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1325,7 +1448,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_11) { val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID; val->admin_status = 0; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1340,7 +1464,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_12) { unc_keytype_operation_t op = UNC_OP_CREATE; val->portmap.logical_port_id[0] = 'S'; val->portmap.logical_port_id[1] = 'W'; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1353,7 +1478,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_13) { val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; val->portmap.tagged = 10; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1366,7 +1492,8 @@ TEST_F(VbrIfMoMgrTest, ValidateVbrIfValue_14) { val->valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->portmap.valid[UPLL_IDX_TAGGED_PM] = UNC_VF_VALID; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrIfValue(val, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrIfValue(val, op)); free(val); } @@ -1383,13 +1510,14 @@ TEST_F(VbrIfMoMgrTest, ValidateVtnNeighborValue_01) { connected_if_name, strlen(connected_if_name)+1); strncpy(reinterpret_cast(vtn_neighbor->connected_vlink_name), connected_vlink_name, strlen(connected_vlink_name)+1); - for(unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ + for (unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ sizeof(vtn_neighbor->valid[0]); ++loop) { vtn_neighbor->valid[loop] = UNC_VF_VALID; } vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] = UNC_VF_VALID; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); free(vtn_neighbor); } @@ -1406,13 +1534,14 @@ TEST_F(VbrIfMoMgrTest, ValidateVtnNeighborValue_02) { connected_if_name, strlen(connected_if_name)+1); strncpy(reinterpret_cast(vtn_neighbor->connected_vlink_name), connected_vlink_name, strlen(connected_vlink_name)+1); - for(unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ + for (unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ sizeof(vtn_neighbor->valid[0]); ++loop) { vtn_neighbor->valid[loop] = UNC_VF_VALID; } vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] = UNC_VF_VALID; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); free(vtn_neighbor); } @@ -1429,13 +1558,14 @@ TEST_F(VbrIfMoMgrTest, ValidateVtnNeighborValue_03) { connected_if_name, strlen(connected_if_name)+1); strncpy(reinterpret_cast(vtn_neighbor->connected_vlink_name), connected_vlink_name, strlen(connected_vlink_name)+1); - for(unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ + for (unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ sizeof(vtn_neighbor->valid[0]); ++loop) { vtn_neighbor->valid[loop] = UNC_VF_VALID; } vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_NAME_VN] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); free(vtn_neighbor); } @@ -1452,13 +1582,14 @@ TEST_F(VbrIfMoMgrTest, ValidateVtnNeighborValue_04) { connected_if_name, strlen(connected_if_name)+1); strncpy(reinterpret_cast(vtn_neighbor->connected_vlink_name), connected_vlink_name, strlen(connected_vlink_name)+1); - for(unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ + for (unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ sizeof(vtn_neighbor->valid[0]); ++loop) { vtn_neighbor->valid[loop] = UNC_VF_VALID; } vtn_neighbor->valid[UPLL_IDX_CONN_VNODE_IF_NAME_VN] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); free(vtn_neighbor); } @@ -1475,13 +1606,14 @@ TEST_F(VbrIfMoMgrTest, ValidateVtnNeighborValue_05) { connected_if_name, strlen(connected_if_name)+1); strncpy(reinterpret_cast(vtn_neighbor->connected_vlink_name), connected_vlink_name, strlen(connected_vlink_name)+1); - for(unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ + for (unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ sizeof(vtn_neighbor->valid[0]); ++loop) { vtn_neighbor->valid[loop] = UNC_VF_VALID; } vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] = UNC_VF_VALID_NO_VALUE; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); free(vtn_neighbor); } @@ -1498,13 +1630,14 @@ TEST_F(VbrIfMoMgrTest, ValidateVtnNeighborValue_06) { connected_if_name, strlen(connected_if_name)+1); strncpy(reinterpret_cast(vtn_neighbor->connected_vlink_name), connected_vlink_name, strlen(connected_vlink_name)+1); - for(unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ + for (unsigned int loop = 0; loop < sizeof(vtn_neighbor->valid)/ sizeof(vtn_neighbor->valid[0]); ++loop) { vtn_neighbor->valid[loop] = UNC_VF_VALID; } vtn_neighbor->valid[UPLL_IDX_CONN_VLINK_NAME_VN] = UNC_VF_VALID; unc_keytype_operation_t op = UNC_OP_CREATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVtnNeighborValue(vtn_neighbor, op)); free(vtn_neighbor); } @@ -1516,14 +1649,16 @@ TEST_F(VbrIfMoMgrTest, IsLogicalPortAndVlanIdInUse_01) { GetKeyValStruct(key, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_IMPORT; req->operation = UNC_OP_UPDATE; req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.IsLogicalPortAndVlanIdInUse(ikey,dmi,req)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.IsLogicalPortAndVlanIdInUse(ikey, dmi, req)); delete ikey; } @@ -1537,7 +1672,8 @@ TEST_F(VbrIfMoMgrTest, IsLogicalPortAndVlanIdInUse_02) { GetKeyValStruct(key, val); DalDmlIntf *dmi(getDalDmlIntf()); ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.IsLogicalPortAndVlanIdInUse(ikey,dmi,req)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.IsLogicalPortAndVlanIdInUse(ikey, dmi, req)); delete ikey; } @@ -1549,17 +1685,20 @@ TEST_F(VbrIfMoMgrTest, IsLogicalPortAndVlanIdInUse_03) { IPC_REQ_RESP_HEADER_DECL(req); GetKeyValStruct(key, val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.IsLogicalPortAndVlanIdInUse(ikey,dmi,req)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.IsLogicalPortAndVlanIdInUse(ikey, dmi, req)); delete ikey; } @@ -1575,14 +1714,19 @@ TEST_F(VbrIfMoMgrTest, IsLogicalPortAndVlanIdInUse_04) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; GetKeyValStruct(key, val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::EXECUTE_QUERY,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcRecordNoMore); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::EXECUTE_QUERY, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcRecordNoMore); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.IsLogicalPortAndVlanIdInUse(ikey,dmi,req)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.IsLogicalPortAndVlanIdInUse(ikey, dmi, req)); delete ikey; } @@ -1598,16 +1742,21 @@ TEST_F(VbrIfMoMgrTest, IsLogicalPortAndVlanIdInUse_05) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; GetKeyValStruct(key, val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::EXECUTE_QUERY,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcRecordNoMore); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::EXECUTE_QUERY, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcRecordNoMore); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - val->portmap.valid[UPLL_IDX_VLAN_ID_PM]=UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.IsLogicalPortAndVlanIdInUse(ikey,dmi,req)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + val->portmap.valid[UPLL_IDX_VLAN_ID_PM] = UNC_VF_VALID; + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.IsLogicalPortAndVlanIdInUse(ikey, dmi, req)); delete ikey; } @@ -1618,13 +1767,16 @@ TEST_F(VbrIfMoMgrTest, GetBoundaryInterfaces_01) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_vnode_if_t boundary_if; memset(&boundary_if, 0, sizeof(boundary_if)); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcRecordNoMore); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vbr.GetBoundaryInterfaces(boundary_if,dmi,ikey)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcRecordNoMore); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vbr.GetBoundaryInterfaces(boundary_if, dmi, ikey)); delete ikey; } @@ -1635,11 +1787,13 @@ TEST_F(VbrIfMoMgrTest, SetBoundaryIfOperStatusforPathFault_01) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); const set boundary_if_set; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.SetBoundaryIfOperStatusforPathFault(boundary_if_set,kPathFault, dmi)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.SetBoundaryIfOperStatusforPathFault(boundary_if_set, kPathFault, dmi)); delete ikey; } @@ -1650,17 +1804,20 @@ TEST_F(VbrIfMoMgrTest, SetBoundaryIfOperStatusforPathFault_02) { val_vbr_if *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); const set boundary_if_set; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.SetBoundaryIfOperStatusforPathFault(boundary_if_set,kPathFault,dmi)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.SetBoundaryIfOperStatusforPathFault(boundary_if_set, kPathFault, dmi)); delete ikey; } @@ -1669,13 +1826,15 @@ TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_01) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; + const char *ctrlr_name = "ctr1"; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.CreateAuditMoImpl(ikey,dmi,ctrlr_name)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.CreateAuditMoImpl(ikey, dmi, ctrlr_name)); delete ikey; } @@ -1683,7 +1842,7 @@ TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_01) { TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_02) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); - const char *ctrlr_id ="pfc001"; + const char *ctrlr_id = "pfc001"; IPC_REQ_RESP_HEADER_DECL(req); req->clnt_sess_id = 5; req->config_id = 14; @@ -1692,15 +1851,18 @@ TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_02) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - key_vbr_if *key ; - val_vbr_if *val ; - GetKeyValStruct(key,val); + key_vbr_if *key; + val_vbr_if *val; + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CreateAuditMoImpl(ikey, dmi, ctrlr_id)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CreateAuditMoImpl(ikey, dmi, ctrlr_id)); delete ikey; } @@ -1709,15 +1871,17 @@ TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_03) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; + const char *ctrlr_name = "ctr1"; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.CreateAuditMoImpl(ikey,dmi,ctrlr_name)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.CreateAuditMoImpl(ikey, dmi, ctrlr_name)); delete ikey; } @@ -1725,7 +1889,7 @@ TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_03) { TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_04) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); - const char *ctrlr_id ="pfc001"; + const char *ctrlr_id = "pfc001"; IPC_REQ_RESP_HEADER_DECL(req); req->clnt_sess_id = 5; req->config_id = 14; @@ -1734,15 +1898,18 @@ TEST_F(VbrIfMoMgrTest, CreateAuditMoImpl_04) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - key_vbr_if *key ; - val_vbr_if *val ; - GetKeyValStruct(key,val); + key_vbr_if *key; + val_vbr_if *val; + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcRecordNoMore); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CreateAuditMoImpl(ikey, dmi, ctrlr_id)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcRecordNoMore); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CreateAuditMoImpl(ikey, dmi, ctrlr_id)); delete ikey; } @@ -1751,29 +1918,35 @@ TEST_F(VbrIfMoMgrTest, GetMappedVbridges_01) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; - const char *domain_id="dom1"; + const char *ctrlr_name = "ctr1"; + const char *domain_id = "dom1"; std::string logportid; set sw_vbridge_set; GetKeyValStruct(key, val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetMappedVbridges(ctrlr_name,domain_id,logportid,dmi,&sw_vbridge_set)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetMappedVbridges(ctrlr_name, domain_id, + logportid, dmi, &sw_vbridge_set)); } TEST_F(VbrIfMoMgrTest, GetMappedVbridges_02) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; - const char *domain_id="dom1"; + const char *ctrlr_name = "ctr1"; + const char *domain_id = "dom1"; std::string logportid; set sw_vbridge_set; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcRecordNoMore); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetMappedVbridges(ctrlr_name,domain_id,logportid,dmi,&sw_vbridge_set)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcRecordNoMore); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetMappedVbridges(ctrlr_name, domain_id, + logportid, dmi, &sw_vbridge_set)); delete ikey; } @@ -1782,21 +1955,25 @@ TEST_F(VbrIfMoMgrTest, GetMappedVbridges_03) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; - const char *domain_id="dom1"; + const char *ctrlr_name = "ctr1"; + const char *domain_id = "dom1"; std::string logportid; set sw_vbridge_set; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetMappedVbridges(ctrlr_name,domain_id,logportid,dmi,&sw_vbridge_set)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetMappedVbridges(ctrlr_name, domain_id, + logportid, dmi, &sw_vbridge_set)); delete ikey; } @@ -1805,36 +1982,42 @@ TEST_F(VbrIfMoMgrTest, GetMappedVbridges_04) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; - const char *domain_id="dom1"; + const char *ctrlr_name = "ctr1"; + const char *domain_id = "dom1"; std::string logportid; set sw_vbridge_set; GetKeyValStruct(key, val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetMappedVbridges(ctrlr_name,domain_id,logportid,dmi,&sw_vbridge_set)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetMappedVbridges(ctrlr_name, domain_id, + logportid, dmi, &sw_vbridge_set)); } TEST_F(VbrIfMoMgrTest, PathFaultHandler_03) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; - const char *domain_id="dom1"; + const char *ctrlr_name = "ctr1"; + const char *domain_id = "dom1"; std::vector ingress_ports; std::vector egress_ports; - bool alarm_asserted=UPLL_OPER_STATUS_UP; + bool alarm_asserted = UPLL_OPER_STATUS_UP; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.PathFaultHandler(ctrlr_name,domain_id,ingress_ports,egress_ports,alarm_asserted,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.PathFaultHandler(ctrlr_name, domain_id, + ingress_ports, egress_ports, alarm_asserted, dmi)); delete ikey; } @@ -1843,22 +2026,26 @@ TEST_F(VbrIfMoMgrTest, PathFaultHandler_04) { VbrIfMoMgr vbr; key_vbr_if *key; val_vbr_if *val; - const char *ctrlr_name="ctr1"; - const char *domain_id="dom1"; + const char *ctrlr_name = "ctr1"; + const char *domain_id = "dom1"; std::vector ingress_ports; std::vector egress_ports; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.PathFaultHandler(ctrlr_name,domain_id,ingress_ports,egress_ports,false,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.PathFaultHandler(ctrlr_name, domain_id, + ingress_ports, egress_ports, false, dmi)); delete ikey; } @@ -1869,18 +2056,23 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_NULL) { val_vbr_if *val; GetKeyValStruct(key, val); - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; set affected_ctrlr_set; DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcRecordNoMore); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.TxUpdateController(UNC_KT_VBR_IF,session_id,config_id,phase,&affected_ctrlr_set ,dmi,&ikey)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::UPDATE_RECORD, kDalRcRecordNoMore); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.TxUpdateController(UNC_KT_VBR_IF, session_id, + config_id, phase, &affected_ctrlr_set , dmi, &ikey)); delete ikey; } @@ -1891,9 +2083,9 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_default) { val_vbr_if *val; GetKeyValStruct(key, val); - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; uint8_t *ctr_id1(ZALLOC_ARRAY(uint8_t, 32)); memcpy(ctr_id1, "Controller1", 11); uint8_t *dom_id1(ZALLOC_ARRAY(uint8_t, 32)); @@ -1907,11 +2099,16 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_default) { (string(reinterpret_cast(ctrlr_dom->ctrlr))); DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.TxUpdateController(UNC_KT_VBR_IF,session_id,config_id,phase,&affected_ctrlr_set ,dmi,&ikey)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.TxUpdateController(UNC_KT_VBR_IF, session_id, + config_id, phase, &affected_ctrlr_set , dmi, &ikey)); free(ctr_id1); free(dom_id1); @@ -1925,9 +2122,9 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_01) { val_vbr_if *val; GetKeyValStruct(key, val); - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpUpdate; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpUpdate; uint8_t *ctr_id1(ZALLOC_ARRAY(uint8_t, 32)); memcpy(ctr_id1, "Controller1", 11); uint8_t *dom_id1(ZALLOC_ARRAY(uint8_t, 32)); @@ -1941,17 +2138,23 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_01) { (string(reinterpret_cast(ctrlr_dom->ctrlr))); DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::GET_UPDATED_RECORDS,kDalRcSuccess); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_UPDATE_CAPABILITY, true); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::GET_UPDATED_RECORDS, kDalRcSuccess); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_UPDATE_CAPABILITY, true); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"ctr_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(user_data->ctrlr_id, "ctr_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy(user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); ikey->set_user_data((void*)user_data); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.TxUpdateController(UNC_KT_VBR_IF,session_id,config_id,phase,&affected_ctrlr_set ,dmi,&ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.TxUpdateController(UNC_KT_VBR_IF, session_id, + config_id, phase, &affected_ctrlr_set , dmi, &ikey)); free(ctr_id1); free(dom_id1); @@ -1965,9 +2168,9 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_02) { val_vbr_if *val; GetKeyValStruct(key, val); - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpDelete; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpDelete; uint8_t *ctr_id1(ZALLOC_ARRAY(uint8_t, 32)); memcpy(ctr_id1, "Controller1", 11); uint8_t *dom_id1(ZALLOC_ARRAY(uint8_t, 32)); @@ -1981,11 +2184,16 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_02) { (string(reinterpret_cast(ctrlr_dom->ctrlr))); DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::GET_DELETED_RECORDS,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.TxUpdateController(UNC_KT_VBR_IF,session_id,config_id,phase,&affected_ctrlr_set ,dmi,&ikey)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::GET_DELETED_RECORDS, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.TxUpdateController(UNC_KT_VBR_IF, session_id, + config_id, phase, &affected_ctrlr_set , dmi, &ikey)); free(ctr_id1); free(dom_id1); @@ -1999,197 +2207,248 @@ TEST_F(VbrIfMoMgrTest, TxUpdateController_03) { val_vbr_if *val; GetKeyValStruct(key, val); - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpDelete; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpDelete; set affected_ctrlr_set; DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::GET_DELETED_RECORDS,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.TxUpdateController(UNC_KT_VBR_IF,session_id,config_id,phase,&affected_ctrlr_set ,dmi,&ikey)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::GET_DELETED_RECORDS, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.TxUpdateController(UNC_KT_VBR_IF, session_id, + config_id, phase, &affected_ctrlr_set , dmi, &ikey)); delete ikey; } TEST_F(VbrIfMoMgrTest, AuditUpdateController_01) { VbrIfMoMgr vbr; - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; - const char *ctrlr_id="Controller1"; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + const char *ctrlr_id = "Controller1"; + key_vbr_if *key; + val_vbr_if *val; DalDmlIntf *dmi(getDalDmlIntf()); - bool ctrlr_affected=true; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::GET_UPDATED_RECORDS,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.AuditUpdateController(UNC_KT_VBR_IF,ctrlr_id,session_id,config_id,phase, &ctrlr_affected ,dmi)); -} + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + GetKeyValStruct(key, val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::GET_UPDATED_RECORDS, kDalRcSuccess); + ConfigKeyVal *err_ckv = NULL; + KTxCtrlrAffectedState ctrlr_affected = kCtrlrAffectedNoDiff; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.AuditUpdateController( + UNC_KT_VBR_IF, ctrlr_id, session_id, config_id, + phase, dmi, &err_ckv, &ctrlr_affected)); +} TEST_F(VbrIfMoMgrTest, AuditUpdateController_02) { VbrIfMoMgr vbr; - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; - const char *ctrlr_id="Controller1"; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + const char *ctrlr_id = "Controller1"; - std::map map; - map.insert(std::make_pair(1,kDalRcGeneralError)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcGeneralError)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); DalDmlIntf *dmi(getDalDmlIntf()); - bool ctrlr_affected=true; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::GET_CREATED_RECORDS,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.AuditUpdateController(UNC_KT_VBR_IF,ctrlr_id,session_id,config_id,phase, &ctrlr_affected ,dmi)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::GET_CREATED_RECORDS, kDalRcSuccess); + ConfigKeyVal *err_ckv = NULL; + KTxCtrlrAffectedState ctrlr_affected = kCtrlrAffectedNoDiff; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.AuditUpdateController( + UNC_KT_VBR_IF, ctrlr_id, session_id, config_id, + phase, dmi, &err_ckv, &ctrlr_affected)); } TEST_F(VbrIfMoMgrTest, AuditUpdateController_03) { VbrIfMoMgr vbr; - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; - const char *ctrlr_id="Controller1"; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + const char *ctrlr_id = "Controller1"; DalDmlIntf *dmi(getDalDmlIntf()); - bool ctrlr_affected=true; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.AuditUpdateController(UNC_KT_VBR_IF,ctrlr_id,session_id,config_id,phase, &ctrlr_affected ,dmi)); + ConfigKeyVal *err_ckv = NULL; + KTxCtrlrAffectedState ctrlr_affected = kCtrlrAffectedNoDiff; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.AuditUpdateController( + UNC_KT_VBR_IF, ctrlr_id, session_id, config_id, + phase, dmi, &err_ckv, &ctrlr_affected)); } TEST_F(VbrIfMoMgrTest, AuditUpdateController_04) { VbrIfMoMgr vbr; - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; - const char *ctrlr_id="Controller1"; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + const char *ctrlr_id = "Controller1"; DalDmlIntf *dmi(getDalDmlIntf()); - bool ctrlr_affected=true; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.AuditUpdateController(UNC_KT_VBR_IF,ctrlr_id,session_id,config_id,phase, &ctrlr_affected ,dmi)); + ConfigKeyVal *err_ckv = NULL; + KTxCtrlrAffectedState ctrlr_affected = kCtrlrAffectedNoDiff; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.AuditUpdateController( + UNC_KT_VBR_IF, ctrlr_id, session_id, config_id, + phase, dmi, &err_ckv, &ctrlr_affected)); } TEST_F(VbrIfMoMgrTest, AuditUpdateController_05) { VbrIfMoMgr vbr; - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpDelete; - const char *ctrlr_id="Controller1"; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpDelete; + const char *ctrlr_id = "Controller1"; DalDmlIntf *dmi(getDalDmlIntf()); - bool ctrlr_affected=true; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.AuditUpdateController(UNC_KT_VBR_IF,ctrlr_id,session_id,config_id,phase, &ctrlr_affected ,dmi)); + ConfigKeyVal *err_ckv = NULL; + KTxCtrlrAffectedState ctrlr_affected = kCtrlrAffectedNoDiff; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.AuditUpdateController( + UNC_KT_VBR_IF, ctrlr_id, session_id, config_id, + phase, dmi, &err_ckv, &ctrlr_affected)); } TEST_F(VbrIfMoMgrTest, AuditUpdateController_06) { VbrIfMoMgr vbr; - uint32_t session_id=1; - uint32_t config_id=2; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpUpdate; - const char *ctrlr_id="Controller1"; + uint32_t session_id = 1; + uint32_t config_id = 2; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpUpdate; + const char *ctrlr_id = "Controller1"; DalDmlIntf *dmi(getDalDmlIntf()); - bool ctrlr_affected=true; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.AuditUpdateController(UNC_KT_VBR_IF,ctrlr_id,session_id,config_id,phase, &ctrlr_affected ,dmi)); + ConfigKeyVal *err_ckv = NULL; + KTxCtrlrAffectedState ctrlr_affected = kCtrlrAffectedNoDiff; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.AuditUpdateController( + UNC_KT_VBR_IF, ctrlr_id, session_id, config_id, + phase, dmi, &err_ckv, &ctrlr_affected)); } -TEST_F(VbrIfMoMgrTest, UpdatePortMap_01){ +# if 0 +TEST_F(VbrIfMoMgrTest, UpdatePortMap_01) { VbrIfMoMgr obj; key_vbr_if *key; val_drv_vbr_if *val; - GetKeyValDrvStruct(key,val); + GetKeyValDrvStruct(key, val); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVbrIf, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING ; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.UpdatePortMap(okey,dt_type,dmi,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdatePortMap(okey, dt_type, dmi, ikey)); delete ikey; delete okey; } -TEST_F(VbrIfMoMgrTest, UpdatePortMap_02){ + +TEST_F(VbrIfMoMgrTest, UpdatePortMap_02) { VbrIfMoMgr obj; key_vbr_if *key; val_drv_vbr_if *val; - GetKeyValDrvStruct(key,val); + GetKeyValDrvStruct(key, val); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVbrIf, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING ; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_INVALID; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.UpdatePortMap(okey,dt_type,dmi,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdatePortMap(okey, dt_type, dmi, ikey)); delete ikey; delete okey; } -TEST_F(VbrIfMoMgrTest, UpdatePortMap_03){ + +TEST_F(VbrIfMoMgrTest, UpdatePortMap_03) { VbrIfMoMgr obj; key_vbr_if *key; val_drv_vbr_if *val; - GetKeyValDrvStruct(key,val); + GetKeyValDrvStruct(key, val); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVbrIf, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING ; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.UpdatePortMap(okey,dt_type,dmi,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdatePortMap(okey, dt_type, dmi, ikey)); delete ikey; delete okey; } -TEST_F(VbrIfMoMgrTest, UpdatePortMap_04){ +# endif +TEST_F(VbrIfMoMgrTest, UpdatePortMap_04) { VbrIfMoMgr obj; key_vbr_if *key; val_drv_vbr_if *val; - GetKeyValDrvStruct(key,val); + GetKeyValDrvStruct(key, val); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVbrIf, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING ; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); val->vbr_if_val.valid[UPLL_IDX_PM_VBRI] = UNC_VF_INVALID; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.UpdatePortMap(okey,dt_type,dmi,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdatePortMap(okey, dt_type, dmi, ikey)); delete ikey; delete okey; } -TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_PMainTbl) -{ +TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_PMainTbl) { VbrIfMoMgr obj; unc_key_type_t key_type = UNC_KT_VBR_IF; BindInfo *bin; @@ -2199,8 +2458,7 @@ TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_PMainTbl) EXPECT_TRUE(obj.GetRenameKeyBindInfo(key_type, bin, nattr, tbl)); } -TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FRenameTBL) -{ +TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FRenameTBL) { VbrIfMoMgr obj; unc_key_type_t key_type = UNC_KT_VBR_IF; BindInfo *bin; @@ -2209,8 +2467,7 @@ TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FRenameTBL) EXPECT_FALSE(obj.GetRenameKeyBindInfo(key_type, bin, nattr, tbl)); } -TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FRename) -{ +TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FRename) { VbrIfMoMgr obj; unc_key_type_t key_type = UNC_KT_VBR_IF; BindInfo *bin = NULL; @@ -2219,8 +2476,7 @@ TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FRename) EXPECT_FALSE(obj.GetRenameKeyBindInfo(key_type, bin, nattr, tbl)); } -TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FNoTBL) -{ +TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FNoTBL) { VbrIfMoMgr obj; unc_key_type_t key_type = UNC_KT_VBR_IF; BindInfo *bin; @@ -2229,52 +2485,59 @@ TEST_F(VbrIfMoMgrTest, GetRenameKeyBindInfo_FNoTBL) EXPECT_FALSE(obj.GetRenameKeyBindInfo(key_type, bin, nattr, tbl)); } -TEST_F(VbrIfMoMgrTest, GetVbrIfValfromDBTrue){ +TEST_F(VbrIfMoMgrTest, GetVbrIfValfromDBTrue) { VbrIfMoMgr obj; key_vbr_if *key; val_vbr_if *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key, cfgval); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); ConfigKeyVal *ck_drv_vbr_if(NULL); - upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE ; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetVbrIfValfromDB(ikey,ck_drv_vbr_if,dt_type,dmi)); - ASSERT_TRUE(ck_drv_vbr_if != NULL); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetVbrIfValfromDB(ikey, ck_drv_vbr_if, dt_type, dmi)); + ASSERT_TRUE(ck_drv_vbr_if != NULL); delete ck_drv_vbr_if; delete ikey; } -TEST_F(VbrIfMoMgrTest, GetVbrIfValfromDBFalse){ +TEST_F(VbrIfMoMgrTest, GetVbrIfValfromDBFalse) { VbrIfMoMgr obj; key_vbr_if *key; val_vbr_if *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key, cfgval); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); ConfigKeyVal *ck_drv_vbr_if(NULL); - upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING ; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetVbrIfValfromDB(ikey,ck_drv_vbr_if,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.GetVbrIfValfromDB(ikey, ck_drv_vbr_if, dt_type, dmi)); delete ikey; } -TEST_F(VbrIfMoMgrTest, GetVbrIfValfromDBParentKeyNull){ +TEST_F(VbrIfMoMgrTest, GetVbrIfValfromDBParentKeyNull) { VbrIfMoMgr obj; key_vbr_if *key; val_vbr_if *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr,key, cfgval); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); ConfigKeyVal *ck_drv_vbr_if(NULL); - upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE ; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetVbrIfValfromDB(ck_drv_vbr_if,ikey,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.GetVbrIfValfromDB(ck_drv_vbr_if, ikey, dt_type, dmi)); delete ikey; } @@ -2283,14 +2546,18 @@ TEST_F(VbrIfMoMgrTest, UpdateVbrIf_1) { VbrIfMoMgr obj; key_vbr_if *key; val_vbr_if *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key, cfgval); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.updateVbrIf(req,ikey,dmi)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.updateVbrIf(req, ikey, dmi)); delete ikey; } @@ -2303,11 +2570,13 @@ TEST_F(VbrIfMoMgrTest, UpdateVbrIf_2) { req->option1 = UNC_OPT1_NORMAL; key_vbr_if *key; val_vbr_if *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key, cfgval); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.updateVbrIf(req,ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.updateVbrIf(req, ikey, dmi)); delete ikey; } @@ -2320,11 +2589,13 @@ TEST_F(VbrIfMoMgrTest, UpdateVbrIf_3) { req->option1 = UNC_OPT1_NORMAL; key_vbr_if *key; val_vbr_if *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key, cfgval); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.updateVbrIf(req,ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.updateVbrIf(req, ikey, dmi)); delete ikey; } @@ -2333,13 +2604,16 @@ TEST_F(VbrIfMoMgrTest, UpdateVbrIf_4) { VbrIfMoMgr obj; key_vbr_if *key; val_vbr_if *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key, cfgval); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); DalDmlIntf *dmi(getDalDmlIntf()); IPC_REQ_RESP_HEADER_DECL(req); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.updateVbrIf(req,ikey,dmi)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.updateVbrIf(req, ikey, dmi)); delete ikey; } @@ -2348,20 +2622,23 @@ TEST_F(VbrIfMoMgrTest, GetChildConfigKey_PkeyVlinkSuccess) { VbrIfMoMgr vbr; key_vbr_if_t *key(ZALLOC_TYPE(key_vbr_if_t)); val_vbr_if *val(ZALLOC_TYPE(val_vbr_if)); - strncpy((char*) key->if_name,"IF_1",32); - strncpy((char*) key->vbr_key.vbridge_name,"VLINK1",32); - strncpy((char*) key->vbr_key.vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->if_name, "IF_1", 32); + strncpy((char*) key->vbr_key.vbridge_name, "VLINK1", 32); + strncpy((char*) key->vbr_key.vtn_key.vtn_name, "VTN1", 32); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VLINK, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VLINK, IpctSt::kIpcStKeyVbrIf, - key,cfgval); + key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; @@ -2372,20 +2649,23 @@ TEST_F(VbrIfMoMgrTest, GetChildConfigKey_PkeyVtnSuccess) { key_vbr_if_t *key(ZALLOC_TYPE(key_vbr_if_t)); val_vbr_if *val(ZALLOC_TYPE(val_vbr_if)); - strncpy((char*) key->if_name,"IF_1",32); - strncpy((char*) key->vbr_key.vbridge_name,"VLINK1",32); - strncpy((char*) key->vbr_key.vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->if_name, "IF_1", 32); + strncpy((char*) key->vbr_key.vbridge_name, "VLINK1", 32); + strncpy((char*) key->vbr_key.vtn_key.vtn_name, "VTN1", 32); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VTN, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbrIf, - key,cfgval); + key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; @@ -2395,19 +2675,22 @@ TEST_F(VbrIfMoMgrTest, GetChildConfigKey_PkeyVbridgeSuccess) { VbrIfMoMgr vbr; key_vbr_if_t *key(ZALLOC_TYPE(key_vbr_if_t)); val_vbr_if *val(ZALLOC_TYPE(val_vbr_if)); - strncpy((char*) key->if_name,"IF_1",32); - strncpy((char*) key->vbr_key.vbridge_name,"VLINK1",32); - strncpy((char*) key->vbr_key.vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->if_name, "IF_1", 32); + strncpy((char*) key->vbr_key.vbridge_name, "VLINK1", 32); + strncpy((char*) key->vbr_key.vtn_key.vtn_name, "VTN1", 32); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbrIf, - key,cfgval); + key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; @@ -2420,14 +2703,17 @@ TEST_F(VbrIfMoMgrTest, GetParentConfigKey_02) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key,cfgval) ; + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.GetParentConfigKey(okey, ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetParentConfigKey(okey, ikey)); delete okey; delete ikey; @@ -2440,14 +2726,17 @@ TEST_F(VbrIfMoMgrTest, GetParentConfigKey_03) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key,cfgval) ; + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetParentConfigKey(okey, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetParentConfigKey(okey, ikey)); delete okey; delete ikey; @@ -2457,7 +2746,8 @@ TEST_F(VbrIfMoMgrTest, GetParentConfigKey_01) { VbrIfMoMgr vbr; ConfigKeyVal *okey = NULL; ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.GetParentConfigKey(okey, ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetParentConfigKey(okey, ikey)); } TEST_F(VbrIfMoMgrTest, GetParentConfigKey_09) { @@ -2469,8 +2759,10 @@ TEST_F(VbrIfMoMgrTest, GetParentConfigKey_09) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); ConfigKeyVal *okey = NULL; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf,key,cfgval) ; - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetParentConfigKey(okey, ikey)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetParentConfigKey(okey, ikey)); delete okey; delete ikey; @@ -2479,21 +2771,26 @@ TEST_F(VbrIfMoMgrTest, GetParentConfigKey_09) { TEST_F(VbrIfMoMgrTest, AllocVal_Error) { VbrIfMoMgr obj; ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.AllocVal(cfgval, UPLL_DT_CANDIDATE,RENAMETBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.AllocVal(cfgval, UPLL_DT_CANDIDATE, RENAMETBL)); delete cfgval; } +# if 0 TEST_F(VbrIfMoMgrTest, ConverttoDriverPortMap_01) { VbrIfMoMgr obj; key_vbr_if *key; val_drv_vbr_if *val; GetKeyValDrvStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ConverttoDriverPortMap(ikey)); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ConverttoDriverPortMap(ikey, dmi)); delete ikey; } @@ -2508,14 +2805,18 @@ TEST_F(VbrIfMoMgrTest, ConverttoDriverPortMap_02) { strncpy(reinterpret_cast(key->if_name), if_name, strlen(if_name)+1); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ConverttoDriverPortMap(ikey)); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ConverttoDriverPortMap(ikey, dmi)); delete ikey; } +# endif TEST_F(VbrIfMoMgrTest, UpdateConfigStatus_Success) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); @@ -2523,17 +2824,20 @@ TEST_F(VbrIfMoMgrTest, UpdateConfigStatus_Success) { val_vbr_if *val; GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); delete ikey; @@ -2547,17 +2851,20 @@ TEST_F(VbrIfMoMgrTest, UpdateConfigStatus_SuccessUPDATE) { val_drv_vbr_if *val; GetKeyValDrvStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); delete ikey; @@ -2571,19 +2878,22 @@ TEST_F(VbrIfMoMgrTest, UpdateConfigStatus_SuccessUPDATE_01) { val_drv_vbr_if *val; GetKeyValDrvStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, - upd_key,dmi,ikey)); + upd_key, dmi, ikey)); delete ikey; delete upd_key; @@ -2596,17 +2906,20 @@ TEST_F(VbrIfMoMgrTest, UpdateConfigStatus_SuccessUPDATE_02) { val_drv_vbr_if *val; GetKeyValDrvStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); val->valid[UPLL_IDX_ADMIN_STATUS_VBRI] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); @@ -2621,16 +2934,19 @@ TEST_F(VbrIfMoMgrTest, UpdateConfigStatus_InvalidOP) { val_drv_vbr_if *val; GetKeyValDrvStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_drv_vbr_if *val1(UT_CLONE(val_drv_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.UpdateConfigStatus(ikey, UNC_OP_READ, + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateConfigStatus(ikey, UNC_OP_READ, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); @@ -2646,8 +2962,12 @@ TEST_F(VbrIfMoMgrTest, UpdateAuditConfigStatus_ValidCsStatus) { ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; UpdateCtrlrPhase phase = kUpllUcpCreate; - ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, (void*)key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running)); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ckv_running = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, (void*)key, cfg_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbrmomgr.UpdateAuditConfigStatus( + cs_status, phase, ckv_running, dmi)); delete ckv_running; } @@ -2659,8 +2979,12 @@ TEST_F(VbrIfMoMgrTest, UpdateAuditConfigStatus_UpdatePhase) { ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); unc_keytype_configstatus_t cs_status = UNC_CS_NOT_APPLIED; UpdateCtrlrPhase phase = kUpllUcpUpdate; - ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, (void*)key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running)); + ConfigKeyVal *ckv_running = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, (void*)key, cfg_val); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbrmomgr.UpdateAuditConfigStatus( + cs_status, phase, ckv_running, dmi)); delete ckv_running; } @@ -2672,8 +2996,12 @@ TEST_F(VbrIfMoMgrTest, UpdateAuditConfigStatus_InvalidCsStatus) { ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); unc_keytype_configstatus_t cs_status = UNC_CS_INVALID; UpdateCtrlrPhase phase = kUpllUcpCreate; - ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, (void*)key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running)); + ConfigKeyVal *ckv_running = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, (void*)key, cfg_val); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbrmomgr.UpdateAuditConfigStatus( + cs_status, phase, ckv_running, dmi)); delete ckv_running; } @@ -2681,15 +3009,22 @@ TEST_F(VbrIfMoMgrTest, UpdateAuditConfigStatus_EmptyVal) { VbrIfMoMgr vbrmomgr; unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; UpdateCtrlrPhase phase = kUpllUcpCreate; - ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running)); + ConfigKeyVal *ckv_running = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbrmomgr.UpdateAuditConfigStatus( + cs_status, phase, ckv_running, dmi)); delete ckv_running; } TEST_F(VbrIfMoMgrTest, VbrIfMoMgr_UpdateAuditConfigStatus1) { VbrIfMoMgr vbr; - ConfigKeyVal *ikey =NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.UpdateAuditConfigStatus(UNC_CS_APPLIED,uuc::kUpllUcpCreate, ikey)); + ConfigKeyVal *ikey = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.UpdateAuditConfigStatus( + UNC_CS_APPLIED, uuc::kUpllUcpCreate, ikey, dmi)); delete ikey; } @@ -2699,9 +3034,12 @@ TEST_F(VbrIfMoMgrTest, VbrIfMoMgr_UpdateAuditConfigStatus2) { ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF,IpctSt::kIpcStKeyVbrIf, NULL,tmp); - - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.UpdateAuditConfigStatus(UNC_CS_INVALID,uuc::kUpllUcpCreate, ikey)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.UpdateAuditConfigStatus( + UNC_CS_INVALID, uuc::kUpllUcpCreate, ikey, dmi)); delete ikey; } @@ -2712,7 +3050,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_UNC_KT_VBRIDGE) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -2733,7 +3072,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_req_NULL) { VbrIfMoMgr vbr; ConfigKeyVal *ikey = NULL; IPC_REQ_RESP_HEADER_DECL(req); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateMessage(req, ikey)); } TEST_F(VbrIfMoMgrTest, ValidateMessage_kIpcStValVtnNeighbor) { @@ -2743,7 +3083,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_kIpcStValVtnNeighbor) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtnNeighbor, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -2755,7 +3096,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_kIpcStValVtnNeighbor) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey)); delete ikey; } @@ -2767,7 +3109,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_kIpcStPfcdrvValVbrIf) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStPfcdrvValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -2779,7 +3122,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_kIpcStPfcdrvValVbrIf) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey)); delete ikey; } @@ -2791,7 +3135,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_kIpcStKeyVbr) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbr, key, cfgval); @@ -2815,7 +3160,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_01) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -2828,13 +3174,16 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_01) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey)); key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); ConfigVal *cfgval1 = NULL; - ConfigKeyVal *ikey1 = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey1 = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey1)); const char *if_name = " "; @@ -2843,18 +3192,22 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_01) { strncpy(reinterpret_cast(key2->if_name), if_name, strlen(if_name)+1); ConfigVal *cfgval2 = new ConfigVal(IpctSt::kIpcStValVbrIf, val2); - ConfigKeyVal *ikey2 = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey2 = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key2, cfgval2); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateMessage(req, ikey2)); ConfigKeyVal *nullkey(NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateMessage(req, nullkey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateMessage(req, nullkey)); key_vbr_if *key3(UT_CLONE(key_vbr_if, key)); val_vbr_if *val3(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVbrIf, val3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key3, cfgval3)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vbr.ValidateMessage(req, ikey3)); @@ -2871,7 +3224,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_02) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -2883,13 +3237,15 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_02) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey)); req->operation = UNC_OP_CONTROL; key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, vbr.ValidateMessage(req, ikey1)); @@ -2898,19 +3254,22 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_02) { key_vbr_if *key2(UT_CLONE(key_vbr_if, key)); val_vbr_if *val2(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval2(new ConfigVal(IpctSt::kIpcStValVbr, val2)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key2, cfgval2)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vbr.ValidateMessage(req, ikey2)); key_vbr_if *key3(UT_CLONE(key_vbr_if, key)); ConfigVal *cfgval3(NULL); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key3, cfgval3)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vbr.ValidateMessage(req, ikey3)); key_vbr_if *key4(UT_CLONE(key_vbr_if, key)); ConfigVal *cfgval4(new ConfigVal(IpctSt::kIpcStValVtn, NULL)); - ConfigKeyVal *ikey4(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey4(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key4, cfgval4)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vbr.ValidateMessage(req, ikey4)); @@ -2928,7 +3287,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_03) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -2952,22 +3312,28 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_03) { key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey1)); key_vbr_if *key2(UT_CLONE(key_vbr_if, key)); ConfigVal *cfgval2(NULL); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key2, cfgval2)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey2)); key_vbr_if *key3(UT_CLONE(key_vbr_if, key)); val_vbr_if *val3(NULL); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVbrIf, val3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key3, cfgval3)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey3)); delete ikey; delete ikey1; @@ -2982,7 +3348,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_04) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -3006,22 +3373,28 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_04) { key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey1)); key_vbr_if *key2(UT_CLONE(key_vbr_if, key)); ConfigVal *cfgval2(NULL); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key2, cfgval2)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey2)); key_vbr_if *key3(UT_CLONE(key_vbr_if, key)); val_vbr_if *val3(NULL); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVbrIf, val3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key3, cfgval3)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey3)); delete ikey; delete ikey1; @@ -3036,7 +3409,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_06) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -3060,22 +3434,28 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_06) { key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey1)); key_vbr_if *key2(UT_CLONE(key_vbr_if, key)); ConfigVal *cfgval2(NULL); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key2, cfgval2)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey2)); key_vbr_if *key3(UT_CLONE(key_vbr_if, key)); val_vbr_if *val3(NULL); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVbrIf, val3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key3, cfgval3)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey3)); req->operation = UNC_OP_DELETE; key_vbr_if *key4(UT_CLONE(key_vbr_if, key)); @@ -3084,9 +3464,11 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_06) { sizeof(key4->if_name)); ConfigVal *cfgval4(new ConfigVal(IpctSt::kIpcStValVbrIf, val4)); - ConfigKeyVal *ikey4(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey4(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key4, cfgval4)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey4)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey4)); delete ikey; delete ikey1; @@ -3102,7 +3484,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_05) { GetKeyValStruct(key, val); ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval); @@ -3118,7 +3501,8 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_05) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NEIGHBOR; - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey)); req->option2 = UNC_OPT2_NONE; req->option1 = UNC_OPT1_NORMAL; @@ -3126,22 +3510,28 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_05) { key_vbr_if *key1(UT_CLONE(key_vbr_if, key)); val_vbr_if *val1(UT_CLONE(val_vbr_if, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbrIf, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey1)); key_vbr_if *key2(UT_CLONE(key_vbr_if, key)); ConfigVal *cfgval2(NULL); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key2, cfgval2)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey2)); key_vbr_if *key3(UT_CLONE(key_vbr_if, key)); val_vbr_if *val3(NULL); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVbrIf, val3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key3, cfgval3)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey3)); req->option2 = UNC_OPT2_L2DOMAIN; EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, vbr.ValidateMessage(req, ikey3)); @@ -3167,97 +3557,112 @@ TEST_F(VbrIfMoMgrTest, ValidateMessage_07) { req->operation = UNC_OP_DELETE; ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVbrIf, val)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, cfgval)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateMessage(req, ikey)); delete ikey; } -TEST_F(VbrIfMoMgrTest, GetVbrIfFromVexternal_TmpckvNonNull){ +TEST_F(VbrIfMoMgrTest, GetVbrIfFromVexternal_TmpckvNonNull) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); key_vbr_if *key; val_vbr_if *val; - uint8_t vtnname=1; - uint8_t vexternal1=1; - uint8_t *vexternal=&vexternal1; - uint8_t *vtn1=&vtnname; + uint8_t vtnname = 1; + uint8_t vexternal1 = 1; + uint8_t *vexternal = &vexternal1; + uint8_t *vtn1 = &vtnname; GetKeyValStruct(key, val); ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVbrIf, val)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, - key ,cfgval)); + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, + key, cfgval)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.GetVbrIfFromVExternal(vtn1,vexternal,ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.GetVbrIfFromVExternal(vtn1, vexternal, ikey, dmi)); delete ikey; } -TEST_F(VbrIfMoMgrTest, GetVbrIfFromVexternal_TmpckvNull){ +TEST_F(VbrIfMoMgrTest, GetVbrIfFromVexternal_TmpckvNull) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t vtnname[2] = {1, 0}; uint8_t vexternal[2] = {1, 0}; - ConfigKeyVal *ikey =NULL; + ConfigKeyVal *ikey = NULL; EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetVbrIfFromVExternal(vtnname, vexternal, ikey, dmi)); } -TEST_F(VbrIfMoMgrTest, PortStatusHandler_TrueOperStatus){ +TEST_F(VbrIfMoMgrTest, PortStatusHandler_TrueOperStatus) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); - const char *ctrlr_name="PFC_1"; - const char * domain_name="DOMAIN_1"; - const char *port_id="VLAN"; + const char *ctrlr_name = "PFC_1"; + const char * domain_name = "DOMAIN_1"; + const char *port_id = "VLAN"; bool oper_status = true; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.PortStatusHandler(ctrlr_name,domain_name,port_id,oper_status,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.PortStatusHandler( + ctrlr_name, domain_name, port_id, oper_status, dmi)); } -TEST_F(VbrIfMoMgrTest, PortStatusHandler_FalseOperStatus){ +TEST_F(VbrIfMoMgrTest, PortStatusHandler_FalseOperStatus) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); - const char *ctrlr_name="PFC_1"; - const char * domain_name="DOMAIN_1"; - const char *port_id="VLAN"; + const char *ctrlr_name = "PFC_1"; + const char * domain_name = "DOMAIN_1"; + const char *port_id = "VLAN"; bool oper_status = UPLL_OPER_STATUS_UP; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.PortStatusHandler(ctrlr_name,domain_name,port_id,oper_status,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.PortStatusHandler( + ctrlr_name, domain_name, port_id, oper_status, dmi)); } -TEST_F(VbrIfMoMgrTest, PortStatusHandler_FalseOperStatus_02){ +TEST_F(VbrIfMoMgrTest, PortStatusHandler_FalseOperStatus_02) { VbrIfMoMgr obj; DalDmlIntf *dmi(getDalDmlIntf()); - const char *ctrlr_name="PFC_1"; - const char * domain_name="DOMAIN_1"; - const char *port_id="VLAN"; + const char *ctrlr_name = "PFC_1"; + const char * domain_name = "DOMAIN_1"; + const char *port_id = "VLAN"; bool oper_status = UPLL_OPER_STATUS_DOWN; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.PortStatusHandler(ctrlr_name,domain_name,port_id,oper_status,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.PortStatusHandler( + ctrlr_name, domain_name, port_id, oper_status, dmi)); } TEST_F(VbrIfMoMgrTest, UpdateConfigVal_UpdateConfigVal_07) { VbrIfMoMgr vbr; - upll_keytype_datatype_t datatype=UPLL_DT_CANDIDATE; + upll_keytype_datatype_t datatype = UPLL_DT_CANDIDATE; key_vbr_if *key; val_drv_vbr_if *val; DalDmlIntf *dmi(getDalDmlIntf()); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); GetKeyValDrvStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIf, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VRT_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.UpdateConfigVal(ikey,datatype,dmi)); + ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVbrIf, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VRT_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.UpdateConfigVal(ikey, datatype, dmi)); delete ikey; } @@ -3307,7 +3712,7 @@ TEST_F(VbrIfMoMgrTest, CompareValidValue_Invalid_case1) { void *v1(val1); void *v2(val2); - for (unsigned int loop = 0;loop < sizeof(val1->valid) / sizeof(uint8_t); + for (unsigned int loop = 0; loop < sizeof(val1->valid) / sizeof(uint8_t); ++loop) { val1->valid[loop] = UNC_VF_VALID; val2->valid[loop] = UNC_VF_VALID; diff --git a/coordinator/test/modules/upll/ut/vbr_momgr_ut.cc b/coordinator/test/modules/upll/ut/vbr_momgr_ut.cc index b0a15ebb..7018ef6e 100644 --- a/coordinator/test/modules/upll/ut/vbr_momgr_ut.cc +++ b/coordinator/test/modules/upll/ut/vbr_momgr_ut.cc @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include @@ -42,8 +41,7 @@ using namespace pfc::core; using namespace unc::upll::dal::schema::table; class VbrMoMgrTest - : public UpllTestEnv -{ + : public UpllTestEnv { }; static void GetKeyStruct(key_vbr *&kst) { @@ -62,13 +60,13 @@ static void GetValStruct(val_vbr *&vst) { const char *ctrlr_id = "Controller1"; vst = ZALLOC_TYPE(val_vbr); - for(unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(vst->valid); ++loop) { + for (unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(vst->valid); ++loop) { vst->valid[loop] = UNC_VF_VALID; } vst->cs_row_status = UNC_VF_VALID; - for(unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(vst->cs_attr); ++loop) { + for (unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(vst->cs_attr); ++loop) { vst->cs_attr[loop] = UNC_CS_APPLIED; } @@ -84,8 +82,7 @@ static void GetValStruct(val_vbr *&vst) { vst->host_addr.s_addr = sa.sin_addr.s_addr; } -static void GetKeyValStruct(key_vbr *&kst, val_vbr *&vst) -{ +static void GetKeyValStruct(key_vbr *&kst, val_vbr *&vst) { GetKeyStruct(kst); GetValStruct(vst); } @@ -100,7 +97,8 @@ TEST_F(VbrMoMgrTest, ValidateVbrKey_Success) { strncpy(reinterpret_cast(key->vbridge_name), vbr_name, strlen(vbr_name)+1); - EXPECT_EQ(UPLL_RC_SUCCESS, vbrmomgr.ValidateVbrKey(key)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbrmomgr.ValidateVbrKey(key)); free(key); } @@ -115,7 +113,8 @@ TEST_F(VbrMoMgrTest, ValidateVbrKey_InvalidVtnName) { strncpy(reinterpret_cast(key->vbridge_name), vbr_name, strlen(vbr_name)+1); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrKey(key)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrKey(key)); free(key); } @@ -130,7 +129,8 @@ TEST_F(VbrMoMgrTest, ValidateVbrKey_InvalidVbrName) { strncpy(reinterpret_cast(key->vbridge_name), vbr_name, strlen(vbr_name)+1); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrKey(key)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrKey(key)); free(key); } @@ -139,7 +139,8 @@ TEST_F(VbrMoMgrTest, ValidateVbrKey_InvalidKeyStruct) { VbrMoMgr vbrmomgr; key_vbr *key = NULL; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrKey(key)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrKey(key)); } TEST_F(VbrMoMgrTest, ValidateVbrValue_InvalidCtrlrID) { @@ -150,7 +151,8 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_InvalidCtrlrID) { string ctrlr_id = "Controller 1"; strncpy(reinterpret_cast(val->controller_id), ctrlr_id.c_str(), strlen(ctrlr_id.c_str())+1); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrValue(val, oper)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrValue(val, oper)); free(val); } @@ -163,7 +165,8 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_InvalidDesc) { string desc = "vbr_description 1"; strncpy(reinterpret_cast(val->vbr_description), desc.c_str(), strlen(desc.c_str())+1); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrValue(val, oper)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrValue(val, oper)); free(val); } @@ -185,9 +188,11 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_PrefLenValidAttrInvalid) { val_vbr *val; GetValStruct(val); val->host_addr_prefixlen = 0; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrValue(val, oper)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrValue(val, oper)); val->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrValue(val, oper)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrValue(val, oper)); free(val); } @@ -198,7 +203,8 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_InvalidIP) { val_vbr *val; GetValStruct(val); val->host_addr.s_addr = 0xffffffffU; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbrmomgr.ValidateVbrValue(val, oper)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbrmomgr.ValidateVbrValue(val, oper)); free(val); } @@ -208,9 +214,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_invalidFlagNew) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_CREATE; valvbr->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -220,9 +227,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_invalidFlag1) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_UPDATE; valvbr->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -232,9 +240,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag2) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_UPDATE; valvbr->valid[UPLL_IDX_HOST_ADDR_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -244,9 +253,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag3) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_UPDATE; valvbr->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -256,9 +266,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag4) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_UPDATE; valvbr->valid[UPLL_IDX_CONTROLLER_ID_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -268,9 +279,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag5) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_UPDATE; valvbr->valid[UPLL_IDX_DOMAIN_ID_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -280,9 +292,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag6) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_UPDATE; valvbr->valid[UPLL_IDX_PACKET_SIZE_PING] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -292,9 +305,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag7) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_CREATE; valvbr->valid[UPLL_IDX_CONTROLLER_ID_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -304,9 +318,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag8) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_CREATE; valvbr->valid[UPLL_IDX_DOMAIN_ID_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -316,9 +331,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag9) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_CREATE; valvbr->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] = UNC_VF_INVALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -328,9 +344,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag10) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_CREATE; valvbr->valid[UPLL_IDX_DESC_VBR] = UNC_VF_VALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -340,9 +357,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag11) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_CREATE; valvbr->valid[UPLL_IDX_HOST_ADDR_VBR] = UNC_VF_VALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -352,9 +370,10 @@ TEST_F(VbrMoMgrTest, ValidateVbrValue_validFlag12) { val_vbr_t *valvbr(ZALLOC_TYPE(val_vbr_t)); uint32_t op = UNC_OP_CREATE; valvbr->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] = UNC_VF_VALID; - strcpy((char*)valvbr->vbr_description,(const char *)"vbr1"); + strcpy((char*)valvbr->vbr_description, (const char *)"vbr1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,vbr.ValidateVbrValue(valvbr,op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vbr.ValidateVbrValue(valvbr, op)); free(valvbr); } @@ -364,11 +383,14 @@ TEST_F(VbrMoMgrTest, GetParentConfigKeySuccess) { key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ickv = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr,key, cfg_val); - ConfigKeyVal *ockv= NULL; + ConfigVal *cfg_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ickv = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfg_val); + ConfigKeyVal *ockv = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vbrmomgr.GetParentConfigKey(ockv, ickv)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbrmomgr.GetParentConfigKey(ockv, ickv)); delete ockv; delete ickv; @@ -379,7 +401,8 @@ TEST_F(VbrMoMgrTest, GetParentConfigKeyInvalidArg) { ConfigKeyVal *ickv = NULL; ConfigKeyVal *ockv = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbrmomgr.GetParentConfigKey(ockv, ickv)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbrmomgr.GetParentConfigKey(ockv, ickv)); } TEST_F(VbrMoMgrTest, GetParentConfigKeyInvalidKT) { @@ -387,11 +410,14 @@ TEST_F(VbrMoMgrTest, GetParentConfigKeyInvalidKT) { key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbr, val); + ConfigVal *cfg_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); ConfigKeyVal *ockv = NULL; - ConfigKeyVal *ickv = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVbr,key, cfg_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbrmomgr.GetParentConfigKey(ockv, ickv)); + ConfigKeyVal *ickv = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key, cfg_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbrmomgr.GetParentConfigKey(ockv, ickv)); delete ockv; delete ickv; @@ -399,10 +425,13 @@ TEST_F(VbrMoMgrTest, GetParentConfigKeyInvalidKT) { TEST_F(VbrMoMgrTest, GetParentConfigKeyNullKey) { VbrMoMgr vbrmomgr; - ConfigKeyVal *ickv = new ConfigKeyVal(UNC_KT_VBRIDGE); - ConfigKeyVal *ockv = new ConfigKeyVal(UNC_KT_VBRIDGE); + ConfigKeyVal *ickv = new ConfigKeyVal( + UNC_KT_VBRIDGE); + ConfigKeyVal *ockv = new ConfigKeyVal( + UNC_KT_VBRIDGE); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbrmomgr.GetParentConfigKey(ockv, ickv)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbrmomgr.GetParentConfigKey(ockv, ickv)); delete ickv; delete ockv; @@ -411,8 +440,10 @@ TEST_F(VbrMoMgrTest, GetParentConfigKeyNullKey) { TEST_F(VbrMoMgrTest, AllocVal_outputNull) { VbrMoMgr obj; val_vbr *val(ZALLOC_TYPE(val_vbr)); - ConfigVal* cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.AllocVal(cfgval, UPLL_DT_IMPORT,MAINTBL)); + ConfigVal* cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.AllocVal(cfgval, UPLL_DT_IMPORT, MAINTBL)); delete cfgval; } @@ -420,60 +451,73 @@ TEST_F(VbrMoMgrTest, AllocVal_SuccessMAINTBL) { VbrMoMgr obj; ConfigVal* cfgval = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.AllocVal(cfgval, UPLL_DT_IMPORT,MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AllocVal(cfgval, UPLL_DT_IMPORT, MAINTBL)); } TEST_F(VbrMoMgrTest, AllocVal_SuccessRENAMETBL) { VbrMoMgr obj; ConfigVal* cfgval = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.AllocVal(cfgval, UPLL_DT_IMPORT,RENAMETBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AllocVal(cfgval, UPLL_DT_IMPORT, RENAMETBL)); } TEST_F(VbrMoMgrTest, AllocVal_SuccessDT_STATE) { VbrMoMgr obj; ConfigVal* cfgval = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.AllocVal(cfgval, UPLL_DT_STATE,MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AllocVal(cfgval, UPLL_DT_STATE, MAINTBL)); } TEST_F(VbrMoMgrTest, AllocVal_Error) { VbrMoMgr obj; val_vbr *val; GetValStruct(val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.AllocVal(cfgval, UPLL_DT_STATE,RENAMETBL)); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.AllocVal(cfgval, UPLL_DT_STATE, RENAMETBL)); delete cfgval; } TEST_F(VbrMoMgrTest, AllocVal_ErrorDefaultCase) { VbrMoMgr obj; ConfigVal* cfgval = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.AllocVal(cfgval, UPLL_DT_STATE,CTRLRTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AllocVal(cfgval, UPLL_DT_STATE, CTRLRTBL)); } TEST_F(VbrMoMgrTest, DupConfigKeyVal_ReqNull) { VbrMoMgr obj; - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL); ConfigKeyVal *req = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.DupConfigKeyVal(okey, req, MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete okey; } TEST_F(VbrMoMgrTest, DupConfigKeyVal_OkeyNotNull) { VbrMoMgr obj; - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.DupConfigKeyVal(okey, req, MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete okey; delete req; @@ -486,13 +530,17 @@ TEST_F(VbrMoMgrTest, DupConfigKeyVal_ReqInvalidKT) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, + ConfigVal *tmp = new ConfigVal( + IpctSt::kIpcStValVbr, val); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VTN, + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key, tmp); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.DupConfigKeyVal(okey,req,MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete okey; delete req; @@ -504,12 +552,16 @@ TEST_F(VbrMoMgrTest, DupConfigKeyVal_Req_InValid) { val_vbr *val; GetValStruct(val); - ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *tmp = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, tmp); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.DupConfigKeyVal(okey,req,MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete req; } @@ -521,16 +573,21 @@ TEST_F(VbrMoMgrTest, DupConfigKeyVal_SuccessMAINTBL) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, val); + ConfigVal *tmp = new ConfigVal( + IpctSt::kIpcStValVbr, val); val_vbr *val1(UT_CLONE(val_vbr, val)); - ConfigVal *tmp1 = new ConfigVal(IpctSt::kIpcInvalidStNum, val1); + ConfigVal *tmp1 = new ConfigVal( + IpctSt::kIpcInvalidStNum, val1); tmp->AppendCfgVal(tmp1); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, tmp); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.DupConfigKeyVal(okey,req,MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete req; delete okey; @@ -543,12 +600,16 @@ TEST_F(VbrMoMgrTest, DupConfigKeyVal_SuccessRENAMETBL) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *tmp = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, tmp); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.DupConfigKeyVal(okey,req,RENAMETBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.DupConfigKeyVal( + okey, req, RENAMETBL)); delete req; delete okey; @@ -561,12 +622,16 @@ TEST_F(VbrMoMgrTest, DupConfigKeyVal_SuccessRENAMETBLInvalidStNum) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *tmp = new ConfigVal(IpctSt::kIpcInvalidStNum, val); - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *tmp = new ConfigVal( + IpctSt::kIpcInvalidStNum, val); + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, tmp); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.DupConfigKeyVal(okey,req,RENAMETBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.DupConfigKeyVal( + okey, req, RENAMETBL)); delete req; delete okey; @@ -576,12 +641,15 @@ TEST_F(VbrMoMgrTest, DupConfigKeyVal_NullValStuct) { VbrMoMgr obj; ConfigKeyVal *okey = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); - ConfigVal *tmp=NULL; - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *tmp = NULL; + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, tmp); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.DupConfigKeyVal(okey,req,RENAMETBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.DupConfigKeyVal( + okey, req, RENAMETBL)); delete req; delete okey; @@ -591,11 +659,14 @@ TEST_F(VbrMoMgrTest, DupConfigKeyVal_NullValStuctMainTbl) { VbrMoMgr obj; ConfigKeyVal *okey = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); - ConfigVal *tmp=NULL; - ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *tmp = NULL; + ConfigKeyVal *req = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, tmp); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.DupConfigKeyVal(okey,req,MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.DupConfigKeyVal( + okey, req, MAINTBL)); delete req; delete okey; @@ -666,17 +737,20 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_SuccessNullObjs) { VbrMoMgr obj; ConfigKeyVal *okey = NULL; ConfigKeyVal *pkey = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetChildConfigKey(okey, pkey)); delete okey; } TEST_F(VbrMoMgrTest, GetChildConfigKey_pkeyNull) { VbrMoMgr obj; ConfigKeyVal *okey = NULL; - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.GetChildConfigKey(okey, pkey)); delete pkey; delete okey; @@ -687,18 +761,22 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_SuccesspkeyVBR) { ConfigKeyVal *okey = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); - strncpy((char*) key->vbridge_name,"VBR1",32); - strncpy((char*) key->vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->vbridge_name, "VBR1", 32); + strncpy((char*) key->vtn_key.vtn_name, "VTN1", 32); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetChildConfigKey(okey, pkey)); key_vbr_t *output = reinterpret_cast (okey->get_key()); - EXPECT_STREQ("VTN1",(reinterpret_cast (output->vtn_key.vtn_name))); - EXPECT_STREQ("VBR1",(reinterpret_cast (output->vbridge_name))); + EXPECT_STREQ("VTN1", + (reinterpret_cast (output->vtn_key.vtn_name))); + EXPECT_STREQ("VBR1", + (reinterpret_cast (output->vbridge_name))); delete okey; delete pkey; @@ -709,18 +787,21 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_SuccesspkeyVTN) { ConfigKeyVal *okey = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); - strncpy((char*) key->vbridge_name,"VBR1",32); - strncpy((char*) key->vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->vbridge_name, "VBR1", 32); + strncpy((char*) key->vtn_key.vtn_name, "VTN1", 32); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VTN, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetChildConfigKey(okey, pkey)); key_vbr_t *output = reinterpret_cast (okey->get_key()); - EXPECT_STREQ("VTN1",(reinterpret_cast (output->vtn_key.vtn_name))); - EXPECT_STREQ("",(reinterpret_cast (output->vbridge_name))); + EXPECT_STREQ("VTN1", + (reinterpret_cast (output->vtn_key.vtn_name))); + EXPECT_STREQ("", (reinterpret_cast (output->vbridge_name))); delete okey; delete pkey; @@ -731,18 +812,21 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_SuccessOkeyVTN) { ConfigKeyVal *okey = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); - strncpy((char*) key->vbridge_name,"VBR1",32); - strncpy((char*) key->vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->vbridge_name, "VBR1", 32); + strncpy((char*) key->vtn_key.vtn_name, "VTN1", 32); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VTN, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetChildConfigKey(okey, pkey)); key_vbr_t *output = reinterpret_cast (okey->get_key()); - EXPECT_STREQ("VTN1",(reinterpret_cast (output->vtn_key.vtn_name))); - EXPECT_STREQ("",(reinterpret_cast (output->vbridge_name))); + EXPECT_STREQ("VTN1", + (reinterpret_cast (output->vtn_key.vtn_name))); + EXPECT_STREQ("", (reinterpret_cast (output->vbridge_name))); delete okey; delete pkey; @@ -753,12 +837,15 @@ TEST_F(VbrMoMgrTest, CopyToConfigkey_ikeyokeyNull) { ConfigKeyVal *okey = NULL; ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CopyToConfigKey(okey, ikey)); - ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CopyToConfigKey(okey, ikey)); delete okey; delete ikey; @@ -769,18 +856,22 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_PkeyVbrSuccess) { ConfigKeyVal *okey = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); - strncpy((char*) key->vbridge_name,"VBR1",32); - strncpy((char*) key->vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->vbridge_name, "VBR1", 32); + strncpy((char*) key->vtn_key.vtn_name, "VTN1", 32); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetChildConfigKey(okey, pkey)); key_vbr_t *output = reinterpret_cast (okey->get_key()); - EXPECT_STREQ("VTN1",(reinterpret_cast (output->vtn_key.vtn_name))); - EXPECT_STREQ("VBR1",(reinterpret_cast (output->vbridge_name))); + EXPECT_STREQ("VTN1", + (reinterpret_cast (output->vtn_key.vtn_name))); + EXPECT_STREQ("VBR1", + (reinterpret_cast (output->vbridge_name))); delete okey; delete pkey; @@ -789,20 +880,25 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_PkeyVbrSuccess) { TEST_F(VbrMoMgrTest, GetChildConfigKey_OkeyVtnSuccess) { VbrMoMgr vbr; - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VTN); + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VTN); key_vbr *key(ZALLOC_TYPE(key_vbr)); - strncpy((char*) key->vbridge_name,"VBR1",32); - strncpy((char*) key->vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->vbridge_name, "VBR1", 32); + strncpy((char*) key->vtn_key.vtn_name, "VTN1", 32); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VTN, + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetChildConfigKey(okey, pkey)); key_vbr_t *output = reinterpret_cast (okey->get_key()); - EXPECT_STREQ("VTN1",(reinterpret_cast (output->vtn_key.vtn_name))); - EXPECT_STREQ("",(reinterpret_cast (output->vbridge_name))); + EXPECT_STREQ("VTN1", + (reinterpret_cast (output->vtn_key.vtn_name))); + EXPECT_STREQ("", + (reinterpret_cast (output->vbridge_name))); delete okey; delete pkey; @@ -811,19 +907,23 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_OkeyVtnSuccess) { TEST_F(VbrMoMgrTest, GetChildConfigKey_PkeyVlinkSuccess) { VbrMoMgr vbr; - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VLINK) ; + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VLINK); key_vbr *key(ZALLOC_TYPE(key_vbr)); - strncpy((char*) key->vbridge_name,"VLINK1",32); - strncpy((char*) key->vtn_key.vtn_name,"VTN1",32); + strncpy((char*) key->vbridge_name, "VLINK1", 32); + strncpy((char*) key->vtn_key.vtn_name, "VTN1", 32); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVbr, - key, NULL); + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, + key, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetChildConfigKey(okey, pkey)); key_vbr_t *output = reinterpret_cast (okey->get_key()); - EXPECT_STREQ("VTN1",(reinterpret_cast (output->vtn_key.vtn_name))); - EXPECT_STREQ("",(reinterpret_cast (output->vbridge_name))); + EXPECT_STREQ("VTN1", + (reinterpret_cast (output->vtn_key.vtn_name))); + EXPECT_STREQ("", (reinterpret_cast (output->vbridge_name))); delete okey; delete pkey; @@ -835,9 +935,12 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_05) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)"vbridge"); - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VTN); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VLINK,IpctSt::kIpcStKeyVbr,key_vbr); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr_obj.GetChildConfigKey(okey, pkey)); + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VTN); + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VLINK, IpctSt::kIpcStKeyVbr, key_vbr); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr_obj.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; @@ -849,11 +952,15 @@ TEST_F(VbrMoMgrTest, GetChildConfigKey_06) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)"vbridge"); val_vlink *vlink_val(ZALLOC_TYPE(val_vlink)); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVlink, vlink_val); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVlink, vlink_val); - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VTN); - ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VLINK,IpctSt::kIpcStKeyVbr,key_vbr,cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr_obj.GetChildConfigKey(okey, pkey)); + ConfigKeyVal *okey = new ConfigKeyVal( + UNC_KT_VTN); + ConfigKeyVal *pkey = new ConfigKeyVal( + UNC_KT_VLINK, IpctSt::kIpcStKeyVbr, key_vbr, cfgval); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr_obj.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; @@ -870,14 +977,17 @@ TEST_F(VbrMoMgrTest, CopyToConfigkey_InValidName) { strncpy(reinterpret_cast(key->vbridge_name), vbr_name, strlen(vbr_name)+1); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey)); - cout<<"TEST: Negative: InvalidVbrName"<(key->vtn_key.vtn_name),"VTN_1",32); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.CopyToConfigKey(okey,ikey)); + strncpy(reinterpret_cast(key->vtn_key.vtn_name), "VTN_1", 32); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CopyToConfigKey(okey, ikey)); delete okey; delete ikey; @@ -894,15 +1004,18 @@ TEST_F(VbrMoMgrTest, CopyToConfigkey_Valid) { vtn_name, sizeof(key_rename->old_unc_vtn_name)); pfc_strlcpy(reinterpret_cast(key_rename->old_unc_vnode_name), vbr_name, sizeof(key_rename->old_unc_vnode_name)); - ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVbr, NULL)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval(new ConfigVal( + IpctSt::kIpcStValVbr, NULL)); + ConfigKeyVal *ikey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_rename, cfgval)); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.CopyToConfigKey(okey, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.CopyToConfigKey(okey, ikey)); - ASSERT_TRUE(okey != NULL); + ASSERT_TRUE(okey != NULL); key_vbr_t *key(reinterpret_cast(okey->get_key())); - if (key != NULL) { + if (key != NULL) { EXPECT_STREQ(vtn_name, reinterpret_cast(key->vtn_key.vtn_name)); EXPECT_STREQ(vbr_name, reinterpret_cast(key->vbridge_name)); } @@ -914,23 +1027,24 @@ TEST_F(VbrMoMgrTest, CopyToConfigkey_Valid) { TEST_F(VbrMoMgrTest, ValidateVbrPingValue_Success) { VbrMoMgr obj; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.1", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 5; vst->count = 14; vst->interval = 23; vst->timeout = 32; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ValidateVbrPingValue(vst)); - cout<<"TEST: Positive: Success"<valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "255.255.255.255", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 5; vst->count = 14; vst->interval = 23; vst->timeout = 32; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); inet_pton(AF_INET, "224.1.1.1", &(sa.sin_addr)); vst->target_addr = sa.sin_addr.s_addr; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); free(vst); } @@ -965,26 +1081,28 @@ TEST_F(VbrMoMgrTest, ValidateVbrPingValue_InvalidTgtAddr) { TEST_F(VbrMoMgrTest, ValidateVbrPingValue_InvalidSrcAddr) { VbrMoMgr obj; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "255.255.255.255", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 5; vst->count = 14; vst->interval = 23; vst->timeout = 32; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); inet_pton(AF_INET, "224.1.1.1", &(sa.sin_addr)); vst->src_addr = sa.sin_addr.s_addr; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); free(vst); } @@ -992,25 +1110,27 @@ TEST_F(VbrMoMgrTest, ValidateVbrPingValue_InvalidSrcAddr) { TEST_F(VbrMoMgrTest, ValidateVbrPingValue_DFbitValidation) { VbrMoMgr obj; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = 3; vst->packet_size = 5; vst->count = 14; vst->interval = 23; vst->timeout = 32; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); vst->valid[UPLL_IDX_DF_BIT_PING] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateVbrPingValue(vst)); free(vst); } @@ -1018,25 +1138,27 @@ TEST_F(VbrMoMgrTest, ValidateVbrPingValue_DFbitValidation) { TEST_F(VbrMoMgrTest, ValidateVbrPingValue_PktSzValidation) { VbrMoMgr obj; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 65535; vst->count = 14; vst->interval = 23; vst->timeout = 32; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); vst->valid[UPLL_IDX_PACKET_SIZE_PING] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateVbrPingValue(vst)); free(vst); } @@ -1044,25 +1166,27 @@ TEST_F(VbrMoMgrTest, ValidateVbrPingValue_PktSzValidation) { TEST_F(VbrMoMgrTest, ValidateVbrPingValue_CntValidation) { VbrMoMgr obj; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 6; vst->count = 0; vst->interval = 23; vst->timeout = 32; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); vst->valid[UPLL_IDX_COUNT_PING] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateVbrPingValue(vst)); free(vst); } @@ -1070,25 +1194,27 @@ TEST_F(VbrMoMgrTest, ValidateVbrPingValue_CntValidation) { TEST_F(VbrMoMgrTest, ValidateVbrPingValue_InterValidation) { VbrMoMgr obj; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 6; vst->count = 1; vst->interval = 100; vst->timeout = 32; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); vst->valid[UPLL_IDX_INTERVAL_PING] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateVbrPingValue(vst)); free(vst); } @@ -1096,49 +1222,56 @@ TEST_F(VbrMoMgrTest, ValidateVbrPingValue_InterValidation) { TEST_F(VbrMoMgrTest, ValidateVbrPingValue_TimeOutValidation) { VbrMoMgr obj; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 6; vst->count = 1; vst->interval = 1; vst->timeout = 255; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVbrPingValue(vst)); vst->valid[UPLL_IDX_TIMEOUT_PING] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_SUCCESS,obj.ValidateVbrPingValue(vst)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateVbrPingValue(vst)); free(vst); } TEST_F(VbrMoMgrTest, UpdateConfigStatus_Success) { VbrMoMgr obj; - DalDmlIntf *dmi= NULL; + DalDmlIntf *dmi = NULL; key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); key_vbr *key1(UT_CLONE(key_vbr, key)); val_vbr *val1(UT_CLONE(val_vbr, val)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, val1)); + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, - upd_key,dmi,ikey)); + upd_key, dmi, ikey)); delete ikey; delete upd_key; @@ -1146,24 +1279,29 @@ TEST_F(VbrMoMgrTest, UpdateConfigStatus_Success) { TEST_F(VbrMoMgrTest, UpdateConfigStatus_SuccessUPDATE) { VbrMoMgr obj; - DalDmlIntf *dmi= NULL; + DalDmlIntf *dmi = NULL; key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); key_vbr *key1(UT_CLONE(key_vbr, key)); val_vbr *val1(UT_CLONE(val_vbr, val)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, val1)); + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, - upd_key,dmi,ikey)); + upd_key, dmi, ikey)); delete ikey; delete upd_key; @@ -1171,22 +1309,27 @@ TEST_F(VbrMoMgrTest, UpdateConfigStatus_SuccessUPDATE) { TEST_F(VbrMoMgrTest, UpdateConfigStatus_InvalidOP) { VbrMoMgr obj; - DalDmlIntf *dmi= NULL; + DalDmlIntf *dmi = NULL; key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); key_vbr *key1(UT_CLONE(key_vbr, key)); val_vbr *val1(UT_CLONE(val_vbr, val)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, val1)); + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.UpdateConfigStatus(ikey, UNC_OP_READ, + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateConfigStatus(ikey, UNC_OP_READ, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); @@ -1196,17 +1339,21 @@ TEST_F(VbrMoMgrTest, UpdateConfigStatus_InvalidOP) { TEST_F(VbrMoMgrTest, UpdateConfigStatus_InvalidArg) { VbrMoMgr obj; - DalDmlIntf *dmi= NULL; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + DalDmlIntf *dmi = NULL; + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); @@ -1216,31 +1363,37 @@ TEST_F(VbrMoMgrTest, UpdateConfigStatus_InvalidArg) { TEST_F(VbrMoMgrTest, UpdateConfigStatus_AttrNotSupp_ValNoValue) { VbrMoMgr obj; - DalDmlIntf *dmi= NULL; + DalDmlIntf *dmi = NULL; key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); val->valid[UPLL_IDX_HOST_ADDR_VBR] = UNC_VF_NOT_SUPPORTED; val->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] = UNC_VF_VALID_NO_VALUE; - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); key_vbr *key1(UT_CLONE(key_vbr, key)); val_vbr *val1(UT_CLONE(val_vbr, val)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, val1)); + ConfigKeyVal *upd_key(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, - upd_key,dmi,ikey)); + upd_key, dmi, ikey)); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, - upd_key,dmi,ikey)); + upd_key, dmi, ikey)); delete ikey; delete upd_key; @@ -1253,12 +1406,15 @@ TEST_F(VbrMoMgrTest, CreateVnodeConfigKey_Success) { GetKeyValStruct(key, val); ConfigKeyVal *okey = NULL; - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.CreateVnodeConfigKey(ikey, okey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.CreateVnodeConfigKey(ikey, okey)); delete ikey; delete okey; @@ -1269,7 +1425,8 @@ TEST_F(VbrMoMgrTest, CreateVnodeConfigKey_NULLArg) { ConfigKeyVal *okey = NULL; ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.CreateVnodeConfigKey(ikey, okey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.CreateVnodeConfigKey(ikey, okey)); } TEST_F(VbrMoMgrTest, CompareValidValue_AuditTrue) { @@ -1303,7 +1460,7 @@ TEST_F(VbrMoMgrTest, FilterAttributes_CreateOperation) { valvbr1->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; val1 = reinterpret_cast(reinterpret_cast(valvbr1)); val2 = reinterpret_cast(reinterpret_cast(valvbr1)); - EXPECT_FALSE(vbr.FilterAttributes(val1,val2,audit_status,op)); + EXPECT_FALSE(vbr.FilterAttributes(val1, val2, audit_status, op)); free(valvbr1); } @@ -1319,7 +1476,7 @@ TEST_F(VbrMoMgrTest, FilterAttributes_OperationUpdate) { valvbr1->valid[UPLL_IDX_DESC_VBR] = UNC_VF_INVALID; val1 = reinterpret_cast(reinterpret_cast(valvbr1)); val2 = reinterpret_cast(reinterpret_cast(valvbr1)); - EXPECT_TRUE(vbr.FilterAttributes(val1,val2,audit_status,op)); + EXPECT_TRUE(vbr.FilterAttributes(val1, val2, audit_status, op)); free(valvbr1); } @@ -1335,11 +1492,11 @@ TEST_F(VbrMoMgrTest, GetRenameKeyBindInfo) { EXPECT_EQ(&VbrMoMgr::key_vbr_maintbl_bind_info[0], binfo); - EXPECT_TRUE(obj.GetRenameKeyBindInfo(UNC_KT_VBRIDGE, binfo, nattr, RENAMETBL)); + EXPECT_TRUE(obj.GetRenameKeyBindInfo( + UNC_KT_VBRIDGE, binfo, nattr, RENAMETBL)); EXPECT_EQ(4, nattr); EXPECT_EQ(&VbrMoMgr::key_vbr_renametbl_update_bind_info[0], binfo); - } TEST_F(VbrMoMgrTest, GetRenameKeyBindInfo_OutputUnknownTbl) { @@ -1348,8 +1505,9 @@ TEST_F(VbrMoMgrTest, GetRenameKeyBindInfo_OutputUnknownTbl) { BindInfo *binfo = NULL; int nattr = 2; - EXPECT_FALSE(vbr.GetRenameKeyBindInfo(key_type, binfo, nattr,CTRLRTBL )); - EXPECT_EQ(2,nattr); + EXPECT_FALSE(vbr.GetRenameKeyBindInfo( + key_type, binfo, nattr, CTRLRTBL)); + EXPECT_EQ(2, nattr); } TEST_F(VbrMoMgrTest, GetVnodeName) { @@ -1359,19 +1517,25 @@ TEST_F(VbrMoMgrTest, GetVnodeName) { uint8_t *vtn_name, *vnode_name; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS,obj.GetVnodeName(ikey, vtn_name, vnode_name)); - EXPECT_STREQ("VTN_1",(reinterpret_cast (vtn_name))); - EXPECT_STREQ("VBR_1",(reinterpret_cast (vnode_name))); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetVnodeName(ikey, vtn_name, vnode_name)); + EXPECT_STREQ("VTN_1", (reinterpret_cast (vtn_name))); + EXPECT_STREQ("VBR_1", (reinterpret_cast (vnode_name))); val_vbr *val1(UT_CLONE(val_vbr, val)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, val1)); + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetVnodeName(ikey1, vtn_name, vnode_name)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.GetVnodeName(ikey1, vtn_name, vnode_name)); delete ikey; delete ikey1; @@ -1383,12 +1547,15 @@ TEST_F(VbrMoMgrTest, ValidateCapability_ErrorInput) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.ValidateCapability(req, ikey, NULL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValidateCapability(req, ikey, NULL)); delete ikey; } @@ -1398,8 +1565,10 @@ TEST_F(VbrMoMgrTest, ValidateCapability_Success) { key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); @@ -1414,13 +1583,16 @@ TEST_F(VbrMoMgrTest, ValidateCapability_Success) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_UPDATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_READ_SIBLING_BEGIN; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); delete ikey; } @@ -1430,8 +1602,10 @@ TEST_F(VbrMoMgrTest, ValidateCapability_Success1) { key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); @@ -1448,27 +1622,34 @@ TEST_F(VbrMoMgrTest, ValidateCapability_Success1) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_UPDATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_READ_SIBLING_BEGIN; req->datatype = UPLL_DT_STATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey, "CTR_1")); key_vbr *key1(UT_CLONE(key_vbr, key)); val_vbr* no_val(NULL); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, no_val)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, no_val)); + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValidateCapability(req, ikey1, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValidateCapability(req, ikey1, "CTR_1")); req->operation = UNC_OP_DELETE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateCapability(req, ikey1, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateCapability(req, ikey1, "CTR_1")); CtrlrMgr::GetInstance()->Delete("CTR_1", UPLL_DT_CANDIDATE); @@ -1479,9 +1660,10 @@ TEST_F(VbrMoMgrTest, ValidateCapability_Success1) { TEST_F(VbrMoMgrTest, ValidateCapability_ikey_NULL) { VbrMoMgr vbr; ConfigKeyVal *ikey = NULL; - IpcReqRespHeader *req=NULL; - const char *ctrlr_name="ctr1"; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateCapability(req, ikey, ctrlr_name)); + IpcReqRespHeader *req = NULL; + const char *ctrlr_name = "ctr1"; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateCapability(req, ikey, ctrlr_name)); } TEST_F(VbrMoMgrTest, ValidateCapability_ctrName_NULL) { @@ -1489,13 +1671,16 @@ TEST_F(VbrMoMgrTest, ValidateCapability_ctrName_NULL) { key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); - const char *ctrlr_name=NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateCapability(req, ikey, ctrlr_name)); + const char *ctrlr_name = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateCapability(req, ikey, ctrlr_name)); delete ikey; } @@ -1505,13 +1690,16 @@ TEST_F(VbrMoMgrTest, ValidateCapability_ctrName) { key_vbr *key; val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); - const char *ctrlr_name=NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.ValidateCapability(req, ikey, ctrlr_name)); + const char *ctrlr_name = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.ValidateCapability(req, ikey, ctrlr_name)); delete ikey; } @@ -1522,8 +1710,10 @@ TEST_F(VbrMoMgrTest, ValidateMessage_Success) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); @@ -1536,10 +1726,11 @@ TEST_F(VbrMoMgrTest, ValidateMessage_Success) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey)); val_rename_vbr *renameval(ZALLOC_TYPE(val_rename_vbr)); - for(unsigned int loop = 0; loop < sizeof(renameval->valid)/ + for (unsigned int loop = 0; loop < sizeof(renameval->valid)/ sizeof(renameval->valid[0]); ++loop) { renameval->valid[loop] = UNC_VF_VALID; } @@ -1547,44 +1738,53 @@ TEST_F(VbrMoMgrTest, ValidateMessage_Success) { "renamed", strlen("renamed")+1); key_vbr *key1(UT_CLONE(key_vbr, key)); - ConfigVal *rename_cfgval = new ConfigVal(IpctSt::kIpcStValRenameVbr, renameval); - ConfigKeyVal *rename_ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *rename_cfgval = new ConfigVal( + IpctSt::kIpcStValRenameVbr, renameval); + ConfigKeyVal *rename_ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, rename_cfgval); req->operation = UNC_OP_RENAME; req->datatype = UPLL_DT_IMPORT; - EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, rename_ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateMessage(req, rename_ikey)); req->operation = UNC_OP_READ_SIBLING; - EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, rename_ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateMessage(req, rename_ikey)); - ConfigVal *invrename_cfgval = new ConfigVal(IpctSt::kIpcStValRenameVbr, NULL); + ConfigVal *invrename_cfgval = new ConfigVal( + IpctSt::kIpcStValRenameVbr, NULL); key_vbr *key2(UT_CLONE(key_vbr, key)); - ConfigKeyVal *invrename_ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *invrename_ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, invrename_cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, invrename_ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateMessage(req, invrename_ikey)); req->operation = UNC_OP_READ_SIBLING_COUNT; req->datatype = UPLL_DT_RUNNING; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey)); req->operation = UNC_OP_DELETE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey)); req->operation = UNC_OP_CONTROL; val_ping *vst(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ sizeof(vst->valid[0]); ++loop) { vst->valid[loop] = UNC_VF_VALID; } struct sockaddr_in sa; inet_pton(AF_INET, "192.168.1.1", &(sa.sin_addr)); - vst->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + vst->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + vst->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") vst->dfbit = UPLL_DF_BIT_ENABLE; vst->packet_size = 5; vst->count = 14; @@ -1592,12 +1792,15 @@ TEST_F(VbrMoMgrTest, ValidateMessage_Success) { vst->timeout = 32; key_vbr *key3(UT_CLONE(key_vbr, key)); - ConfigVal *ping_cfgval = new ConfigVal(IpctSt::kIpcStValPing, vst); - ConfigKeyVal *ping_ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *ping_cfgval = new ConfigVal( + IpctSt::kIpcStValPing, vst); + ConfigKeyVal *ping_ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key3, ping_cfgval); req->option2 = UNC_OPT2_PING; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateMessage(req, ping_ikey)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ping_ikey)); delete ikey; delete rename_ikey; @@ -1608,11 +1811,13 @@ TEST_F(VbrMoMgrTest, ValidateMessage_Success) { TEST_F(VbrMoMgrTest, ValidateMessage_ReadSuccess) { VbrMoMgr obj; key_vbr *key; - val_vbr *val ; - GetKeyValStruct(key,val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr,val); + val_vbr *val; + GetKeyValStruct(key, val); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); @@ -1623,7 +1828,8 @@ TEST_F(VbrMoMgrTest, ValidateMessage_ReadSuccess) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey)); delete ikey; } @@ -1631,11 +1837,13 @@ TEST_F(VbrMoMgrTest, ValidateMessage_ReadSuccess) { TEST_F(VbrMoMgrTest, ValidateMessage_ReadFailure) { VbrMoMgr obj; key_vbr *key; - val_vbr *val ; - GetKeyValStruct(key,val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr,val); + val_vbr *val; + GetKeyValStruct(key, val); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); @@ -1654,11 +1862,13 @@ TEST_F(VbrMoMgrTest, ValidateMessage_ReadFailure) { TEST_F(VbrMoMgrTest, ValidateMessage_ReadOption2Failure) { VbrMoMgr obj; key_vbr *key; - val_vbr *val ; - GetKeyValStruct(key,val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr,val); + val_vbr *val; + GetKeyValStruct(key, val); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); @@ -1677,11 +1887,13 @@ TEST_F(VbrMoMgrTest, ValidateMessage_ReadOption2Failure) { TEST_F(VbrMoMgrTest, ValidateMessage_InvalidValVbr) { VbrMoMgr obj; key_vbr *key; - val_vbr *val ; - GetKeyValStruct(key,val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValRenameVbr,val); + val_vbr *val; + GetKeyValStruct(key, val); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValRenameVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); @@ -1692,7 +1904,8 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidValVbr) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, ikey)); delete ikey; } @@ -1702,7 +1915,8 @@ TEST_F(VbrMoMgrTest, ValidateMessage_NullVal) { key_vbr *key; GetKeyStruct(key); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); IPC_REQ_RESP_HEADER_DECL(req); @@ -1713,7 +1927,8 @@ TEST_F(VbrMoMgrTest, ValidateMessage_NullVal) { req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateMessage(req, ikey)); delete ikey; } @@ -1723,7 +1938,8 @@ TEST_F(VbrMoMgrTest, ValidateMessage_DiffOption) { key_vbr *key; GetKeyStruct(key); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); IPC_REQ_RESP_HEADER_DECL(req); @@ -1744,7 +1960,8 @@ TEST_F(VbrMoMgrTest, ValidateMessage_DiffOption2) { key_vbr *key; GetKeyStruct(key); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); IPC_REQ_RESP_HEADER_DECL(req); @@ -1766,7 +1983,8 @@ TEST_F(VbrMoMgrTest, ValidateMessage_ValidDiffOption) { key_vbr *key; GetKeyStruct(key); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); IPC_REQ_RESP_HEADER_DECL(req); @@ -1776,13 +1994,14 @@ TEST_F(VbrMoMgrTest, ValidateMessage_ValidDiffOption) { req->rep_count = 100; req->option1 = UNC_OPT1_NORMAL; req->option1 = UNC_OPT1_COUNT; - req->option2 =UNC_OPT2_MAC_ENTRY; + req->option2 = UNC_OPT2_MAC_ENTRY; req->option2 = UNC_OPT2_MAC_ENTRY_STATIC; req->option2 = UNC_OPT2_MAC_ENTRY_DYNAMIC; req->option2 = UNC_OPT2_L2DOMAIN; req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_STATE; - EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateMessage(req, ikey)); delete ikey; } @@ -1793,8 +2012,10 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputCREATE) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); ConfigKeyVal *invalkey = NULL; @@ -1810,37 +2031,49 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputCREATE) { req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.ValidateMessage(req, invalkey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValidateMessage(req, invalkey)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.ValidateMessage(inreq, ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValidateMessage(inreq, ikey)); key_vbr *key1(UT_CLONE(key_vbr, key)); val_vbr *val1(UT_CLONE(val_vbr, val)); - ConfigVal *inval_cfgval = new ConfigVal(IpctSt::kIpcStValRenameVbr, val1); - ConfigKeyVal *invalcfgkey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *inval_cfgval = new ConfigVal( + IpctSt::kIpcStValRenameVbr, val1); + ConfigKeyVal *invalcfgkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, inval_cfgval); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, invalcfgkey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, invalcfgkey)); key_vbr *key2(UT_CLONE(key_vbr, key)); val_vbr *val2(UT_CLONE(val_vbr, val)); - inval_cfgval = new ConfigVal(IpctSt::kIpcStValRenameVbr, val2); - invalcfgkey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyLogicalPort, + inval_cfgval = new ConfigVal( + IpctSt::kIpcStValRenameVbr, val2); + invalcfgkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyLogicalPort, key2, inval_cfgval); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, invalcfgkey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, invalcfgkey)); delete invalcfgkey; key2 = UT_CLONE(key_vbr, key); val2 = UT_CLONE(val_vbr, val); - inval_cfgval = new ConfigVal(IpctSt::kIpcStValRenameVbr, val2); - invalcfgkey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVbr, + inval_cfgval = new ConfigVal( + IpctSt::kIpcStValRenameVbr, val2); + invalcfgkey = new ConfigKeyVal( + UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVbr, key2, inval_cfgval); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, invalcfgkey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, invalcfgkey)); req->datatype = UPLL_DT_AUDIT; - EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT,obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, + obj.ValidateMessage(req, ikey)); req->datatype = UPLL_DT_CANDIDATE; @@ -1848,39 +2081,50 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputCREATE) { key2 = UT_CLONE(key_vbr, key); key2->vtn_key.vtn_name[0] = '\0'; val2 = UT_CLONE(val_vbr, val); - inval_cfgval = new ConfigVal(IpctSt::kIpcStValRenameVbr, val2); - invalcfgkey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + inval_cfgval = new ConfigVal( + IpctSt::kIpcStValRenameVbr, val2); + invalcfgkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, inval_cfgval); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, invalcfgkey)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, invalcfgkey)); delete invalcfgkey; key2 = UT_CLONE(key_vbr, key); strncpy(reinterpret_cast(key->vtn_key.vtn_name), "VTN_1", strlen("VTN_1")+1); - invalcfgkey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + invalcfgkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, NULL); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST,obj.ValidateMessage(req, invalcfgkey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, invalcfgkey)); delete invalcfgkey; key2 = UT_CLONE(key_vbr, key); - inval_cfgval = new ConfigVal(IpctSt::kIpcStValVbr, NULL); - invalcfgkey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + inval_cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, NULL); + invalcfgkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, inval_cfgval); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST,obj.ValidateMessage(req, invalcfgkey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, invalcfgkey)); delete invalcfgkey; key2 = UT_CLONE(key_vbr, key); val2 = UT_CLONE(val_vbr, val); pfc_strlcpy(reinterpret_cast(val2->controller_id), "Controller 1", sizeof(val2->controller_id)); - inval_cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val2); - invalcfgkey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + inval_cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val2); + invalcfgkey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, inval_cfgval); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, invalcfgkey)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, invalcfgkey)); delete ikey; delete invalcfgkey; @@ -1892,8 +2136,10 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputRENAME) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); @@ -1905,30 +2151,40 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputRENAME) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_IMPORT; - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, ikey)); key_vbr *key1(UT_CLONE(key_vbr, key)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValRenameVbr, NULL)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValRenameVbr, NULL)); + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, ikey1)); key_vbr *key2(UT_CLONE(key_vbr, key)); val_rename_vbr *rval2(ZALLOC_TYPE(val_rename_vbr)); - for(unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(rval2->valid); ++loop){ + for (unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(rval2->valid); + ++loop) { rval2->valid[loop] = UNC_VF_VALID; } - ConfigVal *cfgval2(new ConfigVal(IpctSt::kIpcStValRenameVbr, rval2)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval2(new ConfigVal( + IpctSt::kIpcStValRenameVbr, rval2)); + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, cfgval2)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey2)); key_vbr *key3(UT_CLONE(key_vbr, key)); val_rename_vbr *rval3(UT_CLONE(val_rename_vbr, rval2)); pfc_strlcpy(reinterpret_cast(rval3->new_name), "renamed", sizeof(rval3->new_name)); - ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValRenameVbr, rval3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval3(new ConfigVal( + IpctSt::kIpcStValRenameVbr, rval3)); + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key3, cfgval3)); req->operation = UNC_OP_READ; @@ -1940,22 +2196,29 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputRENAME) { EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey3)); req->option2 = UNC_OPT2_NONE; - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, ikey)); key_vbr *key4(UT_CLONE(key_vbr, key)); val_rename_vbr *rval4(UT_CLONE(val_rename_vbr, rval2)); - ConfigVal *cfgval4(new ConfigVal(IpctSt::kIpcStValRenameVbr, rval4)); - ConfigKeyVal *ikey4(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval4(new ConfigVal( + IpctSt::kIpcStValRenameVbr, rval4)); + ConfigKeyVal *ikey4(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key4, cfgval4)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, ikey4)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey4)); key_vbr *key5(UT_CLONE(key_vbr, key)); val_rename_vbr *rval5(UT_CLONE(val_rename_vbr, rval3)); - ConfigVal *cfgval5(new ConfigVal(IpctSt::kIpcStValRenameVbr, rval5)); - ConfigKeyVal *ikey5(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval5(new ConfigVal( + IpctSt::kIpcStValRenameVbr, rval5)); + ConfigKeyVal *ikey5(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key5, cfgval5)); req->operation = UNC_OP_READ_BULK; - EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey5)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateMessage(req, ikey5)); delete ikey; delete ikey1; @@ -1971,8 +2234,10 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputREAD) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); @@ -1994,32 +2259,42 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputREAD) { key_vbr *key1(UT_CLONE(key_vbr, key)); val_rename_vbr *val1(ZALLOC_TYPE(val_rename_vbr)); req->option2 = UNC_OPT2_NONE; - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValRenameVbr, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValRenameVbr, val1)); + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST,obj.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, ikey1)); key_vbr *key2(UT_CLONE(key_vbr, key)); - ConfigVal *cfgval2(new ConfigVal(IpctSt::kIpcStValVbr, NULL)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval2(new ConfigVal( + IpctSt::kIpcStValVbr, NULL)); + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, cfgval2)); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValidateMessage(req, ikey2)); key_vbr *key3(UT_CLONE(key_vbr, key)); val_vbr *val3(UT_CLONE(val_vbr, val)); pfc_strlcpy(reinterpret_cast(val3->controller_id), "Controller 1", sizeof(val3->controller_id)); - ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVbr, val3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval3(new ConfigVal( + IpctSt::kIpcStValVbr, val3)); + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key3, cfgval3)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey3)); req->datatype = UPLL_DT_AUDIT; EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, obj.ValidateMessage(req, ikey3)); req->operation = UNC_OP_DELETE; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX,obj.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey3)); delete ikey; delete ikey1; @@ -2033,8 +2308,10 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputCONTROL) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); @@ -2054,11 +2331,12 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputCONTROL) { EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); req->option2 = UNC_OPT2_PING; - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST,obj.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + obj.ValidateMessage(req, ikey)); key_vbr *key1(UT_CLONE(key_vbr, key)); val_ping *val1(ZALLOC_TYPE(val_ping)); - for(unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(val1->valid); ++loop){ + for (unsigned int loop = 0; loop < PFC_ARRAY_CAPACITY(val1->valid); ++loop) { val1->valid[loop] = UNC_VF_VALID; } @@ -2066,24 +2344,29 @@ TEST_F(VbrMoMgrTest, ValidateMessage_InvalidInputCONTROL) { inet_pton(AF_INET, "255.255.255.255", &(sa.sin_addr)); val1->target_addr = sa.sin_addr.s_addr; inet_pton(AF_INET, "192.168.1.2", &(sa.sin_addr)); - val1->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") + val1->src_addr = sa.sin_addr.s_addr; // ("192.168.1.2") val1->dfbit = UPLL_DF_BIT_ENABLE; val1->packet_size = 5; val1->count = 14; val1->interval = 23; val1->timeout = 32; - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValPing, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValPing, val1)); + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateMessage(req, ikey1)); key_vbr *key2(UT_CLONE(key_vbr, key)); val_ping *val2(UT_CLONE(val_ping, val1)); inet_pton(AF_INET, "192.168.1.1", &(sa.sin_addr)); - val2->target_addr = sa.sin_addr.s_addr;// ("192.168.1.1") + val2->target_addr = sa.sin_addr.s_addr; // ("192.168.1.1") - ConfigVal *cfgval2(new ConfigVal(IpctSt::kIpcStValPing, val2)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval2(new ConfigVal( + IpctSt::kIpcStValPing, val2)); + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, cfgval2)); req->datatype = UPLL_DT_CANDIDATE; @@ -2108,12 +2391,15 @@ TEST_F(VbrMoMgrTest, AdaptValToVtnService_Success) { valst->valid[0] = UNC_VF_VALID; valst->oper_status = UPLL_OPER_STATUS_UP; - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbrSt, valst); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfg_val = new ConfigVal( + IpctSt::kIpcStValVbrSt, valst); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.AdaptValToVtnService(ikey)); delete ikey; } @@ -2123,10 +2409,13 @@ TEST_F(VbrMoMgrTest, AdaptValToVtnService_Failure) { GetKeyStruct(key); ConfigKeyVal* ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.AdaptValToVtnService(ikey)); - ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.AdaptValToVtnService(ikey)); + ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, NULL); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.AdaptValToVtnService(ikey)); delete ikey; } @@ -2138,34 +2427,46 @@ TEST_F(VbrMoMgrTest, GetValid) { void *in_val = reinterpret_cast(val); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(in_val, vbridge::kDbiCtrlrName, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetValid(in_val, vbridge::kDbiCtrlrName, valid, UPLL_DT_CANDIDATE, MAINTBL)); - EXPECT_EQ(val->valid[UPLL_IDX_CONTROLLER_ID_VBR], valid[UPLL_IDX_CONTROLLER_ID_VBR]); + EXPECT_EQ(val->valid[UPLL_IDX_CONTROLLER_ID_VBR], + valid[UPLL_IDX_CONTROLLER_ID_VBR]); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(in_val, vbridge::kDbiDomainId, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetValid(in_val, vbridge::kDbiDomainId, valid, UPLL_DT_CANDIDATE, MAINTBL)); - EXPECT_EQ(val->valid[UPLL_IDX_DOMAIN_ID_VBR], valid[UPLL_IDX_DOMAIN_ID_VBR]); + EXPECT_EQ(val->valid[UPLL_IDX_DOMAIN_ID_VBR], + valid[UPLL_IDX_DOMAIN_ID_VBR]); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(in_val, vbridge::kDbiVbrDesc, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetValid(in_val, vbridge::kDbiVbrDesc, valid, UPLL_DT_CANDIDATE, MAINTBL)); - EXPECT_EQ(val->valid[UPLL_IDX_DESC_VBR], valid[UPLL_IDX_DESC_VBR]); + EXPECT_EQ(val->valid[UPLL_IDX_DESC_VBR], + valid[UPLL_IDX_DESC_VBR]); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(in_val, vbridge::kDbiHostAddr, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetValid(in_val, vbridge::kDbiHostAddr, valid, UPLL_DT_CANDIDATE, MAINTBL)); EXPECT_EQ(val->valid[UPLL_IDX_HOST_ADDR_VBR], valid[UPLL_IDX_HOST_ADDR_VBR]); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(in_val, vbridge::kDbiHostAddrMask, - valid, UPLL_DT_CANDIDATE, MAINTBL)); - EXPECT_EQ(val->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR], valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetValid(in_val, vbridge::kDbiHostAddrMask, + valid, UPLL_DT_CANDIDATE, MAINTBL)); + EXPECT_EQ(val->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR], + valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR]); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(in_val, vbridge::kDbiHostAddrMask, + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetValid(in_val, vbridge::kDbiHostAddrMask, valid, UPLL_DT_CANDIDATE, RENAMETBL)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetValid(in_val, vbridge::kDbiVbrName, + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.GetValid(in_val, vbridge::kDbiVbrName, valid, UPLL_DT_CANDIDATE, MAINTBL)); in_val = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetValid(in_val, vbridge::kDbiCtrlrName, + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.GetValid(in_val, vbridge::kDbiCtrlrName, valid, UPLL_DT_CANDIDATE, MAINTBL)); val_vbr_st *valst(ZALLOC_TYPE(val_vbr_st)); @@ -2174,19 +2475,21 @@ TEST_F(VbrMoMgrTest, GetValid) { in_val = reinterpret_cast(valst); - EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(in_val, 0, valid, UPLL_DT_STATE, RENAMETBL)); - EXPECT_EQ(val->valid[UPLL_IDX_OPER_STATUS_VBRS], valid[UPLL_IDX_OPER_STATUS_VBRS]); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.GetValid(in_val, 0, valid, UPLL_DT_STATE, RENAMETBL)); + EXPECT_EQ(val->valid[UPLL_IDX_OPER_STATUS_VBRS], + valid[UPLL_IDX_OPER_STATUS_VBRS]); free(val); free(valst); } TEST_F(VbrMoMgrTest, SwapKeyVal_IpctSt_valid) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE, kDalRcSuccess); VbrMoMgr vbr; DalDmlIntf *dmi(getDalDmlIntf()); @@ -2199,8 +2502,10 @@ TEST_F(VbrMoMgrTest, SwapKeyVal_IpctSt_valid) { pfc_strlcpy(reinterpret_cast(key->vbridge_name), vbr_name, sizeof(key->vbridge_name)); val_rename_vbr_t *val(ZALLOC_TYPE(val_rename_vbr_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbrSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); ConfigKeyVal *okey = NULL; EXPECT_EQ(UPLL_RC_ERR_GENERIC, @@ -2214,8 +2519,10 @@ TEST_F(VbrMoMgrTest, SwapKeyVal_IpctSt_valid) { key_vbr_t *key1(UT_CLONE(key_vbr_t, key)); val_rename_vbr_t *val1(UT_CLONE(val_rename_vbr_t, val)); - ConfigVal *config_val1(new ConfigVal(IpctSt::kIpcStValVbrSt, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVbr, + ConfigVal *config_val1(new ConfigVal( + IpctSt::kIpcStValVbrSt, val1)); + ConfigKeyVal *ikey1(new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key1, config_val1)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vbr.SwapKeyVal(ikey1, okey, dmi, ctr_id1, no_rename)); @@ -2223,16 +2530,19 @@ TEST_F(VbrMoMgrTest, SwapKeyVal_IpctSt_valid) { key_vbr_t *key2(UT_CLONE(key_vbr_t, key)); ConfigVal *config_val2(NULL); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigKeyVal *ikey2(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key2, config_val2)); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vbr.SwapKeyVal(ikey2, okey, dmi,ctr_id1, no_rename)); + vbr.SwapKeyVal(ikey2, okey, dmi, ctr_id1, no_rename)); delete okey; key_vbr_t *key3(UT_CLONE(key_vbr_t, key)); val_rename_vbr_t *val3(NULL); - ConfigVal *config_val3(new ConfigVal(IpctSt::kIpcStValVbrSt, val3)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *config_val3(new ConfigVal( + IpctSt::kIpcStValVbrSt, val3)); + ConfigKeyVal *ikey3(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key3, config_val3)); EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.SwapKeyVal(ikey3, okey, dmi, ctr_id1, no_rename)); @@ -2251,11 +2561,16 @@ TEST_F(VbrMoMgrTest, UpdateAuditConfigStatus_ValidCsStatus) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbr, val); + ConfigVal *cfg_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; UpdateCtrlrPhase phase = kUpllUcpCreate; - ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, (void*)key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running)); + ConfigKeyVal *ckv_running = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, (void*)key, cfg_val); + + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running, dmi)); delete ckv_running; } @@ -2266,11 +2581,15 @@ TEST_F(VbrMoMgrTest, UpdateAuditConfigStatus_InvalidCsStatus) { val_vbr *val; GetKeyValStruct(key, val); - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbr, val); + ConfigVal *cfg_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); unc_keytype_configstatus_t cs_status = UNC_CS_INVALID; UpdateCtrlrPhase phase = kUpllUcpCreate; - ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, (void*)key, cfg_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running)); + ConfigKeyVal *ckv_running = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, (void*)key, cfg_val); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running, dmi)); delete ckv_running; } @@ -2279,28 +2598,34 @@ TEST_F(VbrMoMgrTest, UpdateAuditConfigStatus_EmptyVal) { VbrMoMgr vbrmomgr; unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; UpdateCtrlrPhase phase = kUpllUcpCreate; - ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running)); + ConfigKeyVal *ckv_running = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbrmomgr.UpdateAuditConfigStatus(cs_status, phase, ckv_running, dmi)); delete ckv_running; } TEST_F(VbrMoMgrTest, GetRenamedUncKey) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbrmomgr; upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - cout << "ctr_id1:" << ctr_id1<vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)"vbridge"); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE, kDalRcSuccess); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr,key_vbr); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr); SET_USER_DATA_FLAGS(ikey, 0x01); EXPECT_EQ(UPLL_RC_SUCCESS, @@ -2336,27 +2663,30 @@ TEST_F(VbrMoMgrTest, GetRenamedControllerKey_02) { } TEST_F(VbrMoMgrTest, GetRenamedControllerKey_03) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbrmomgr; upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - cout << "ctr_id1:" << ctr_id1<vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)"vbridge1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr,key_vbr); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetControllerDomainId(ikey, &ctrl_domain)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetControllerDomainId(ikey, &ctrl_domain)); delete ikey; } @@ -2408,15 +2743,18 @@ TEST_F(VbrMoMgrTest, GetControllerDomainId2) { controller_domain ctrl_domain; memset(&ctrl_domain, 0, sizeof(ctrl_domain)); ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetControllerDomainId(ikey, &ctrl_domain)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetControllerDomainId(ikey, &ctrl_domain)); } TEST_F(VbrMoMgrTest, GetControllerDomainId3) { VbrMoMgr vbr; controller_domain *ctrl_domain = NULL; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.GetControllerDomainId(ikey,ctrl_domain)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetControllerDomainId(ikey, ctrl_domain)); delete ikey; } @@ -2427,8 +2765,10 @@ TEST_F(VbrMoMgrTest, GetControllerDomainId4) { memset(&ctrl_domain, 0, sizeof(ctrl_domain)); key_vbr_t *key_vbr(ZALLOC_TYPE(key_vbr_t)); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetControllerDomainId(ikey, &ctrl_domain)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, NULL); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetControllerDomainId(ikey, &ctrl_domain)); delete ikey; } @@ -2439,14 +2779,17 @@ TEST_F(VbrMoMgrTest, GetControllerDomainId5) { memset(&ctrl_domain, 0, sizeof(ctrl_domain)); key_vbr_t *key_vbr(ZALLOC_TYPE(key_vbr_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbr, NULL); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetControllerDomainId(ikey, &ctrl_domain)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbr, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetControllerDomainId(ikey, &ctrl_domain)); delete ikey; } -TEST_F(VbrMoMgrTest, GetControllerDomainId_InvalidVal){ +TEST_F(VbrMoMgrTest, GetControllerDomainId_InvalidVal) { VbrMoMgr vbr; key_vbr *key(ZALLOC_TYPE(key_vbr)); val_vbr *val(ZALLOC_TYPE(val_vbr)); @@ -2458,17 +2801,20 @@ TEST_F(VbrMoMgrTest, GetControllerDomainId_InvalidVal){ sizeof(val->domain_id)); controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(ctrlr_dom)); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetControllerDomainId(ikey, &ctrlr_dom)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetControllerDomainId(ikey, &ctrlr_dom)); delete ikey; } -TEST_F(VbrMoMgrTest, GetControllerDomainId_SetDomainData){ +TEST_F(VbrMoMgrTest, GetControllerDomainId_SetDomainData) { VbrMoMgr vbr; key_vbr *key(ZALLOC_TYPE(key_vbr)); val_vbr *val(ZALLOC_TYPE(val_vbr)); @@ -2481,46 +2827,52 @@ TEST_F(VbrMoMgrTest, GetControllerDomainId_SetDomainData){ controller_domain ctrlr_dom; memset(&ctrlr_dom, 0, sizeof(ctrlr_dom)); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); - SET_USER_DATA_CTRLR(ikey,val->controller_id) - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetControllerDomainId(ikey, &ctrlr_dom)); + SET_USER_DATA_CTRLR(ikey, val->controller_id) + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetControllerDomainId(ikey, &ctrlr_dom)); delete ikey; } TEST_F(VbrMoMgrTest, GetRenameInfo1) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = false; ConfigKeyVal *okey = NULL; ConfigKeyVal *rename_info = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(NULL, okey, rename_info, NULL, NULL, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(NULL, okey, rename_info, NULL, NULL, no_rename)); } TEST_F(VbrMoMgrTest, GetRenameInfo2) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = false; ConfigKeyVal *okey = NULL; ConfigKeyVal *rename_info = NULL; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(ikey, okey, rename_info, NULL, NULL, no_rename)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(ikey, okey, rename_info, NULL, NULL, no_rename)); delete ikey; delete rename_info; } TEST_F(VbrMoMgrTest, GetRenameInfo3) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = false; @@ -2530,19 +2882,23 @@ TEST_F(VbrMoMgrTest, GetRenameInfo3) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)"name"); val_rename_vnode_t *val(ZALLOC_TYPE(val_rename_vnode_t)); - strcpy((char*)val->ctrlr_vtn_name,"vtn1)"); + strcpy((char*)val->ctrlr_vtn_name, "vtn1)"); strcpy((char*)val->ctrlr_vnode_name, "vnode1"); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, key_vbr, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); key_vbr_t *key_vbr1(UT_CLONE(key_vbr_t, key_vbr)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr1)); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); delete ikey; delete okey; @@ -2550,8 +2906,8 @@ TEST_F(VbrMoMgrTest, GetRenameInfo3) { } TEST_F(VbrMoMgrTest, GetRenameInfo4) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = true; @@ -2561,19 +2917,23 @@ TEST_F(VbrMoMgrTest, GetRenameInfo4) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)"name"); val_rename_vnode_t *val(ZALLOC_TYPE(val_rename_vnode_t)); - strcpy((char*)val->ctrlr_vtn_name,""); + strcpy((char*)val->ctrlr_vtn_name, ""); strcpy((char*)val->ctrlr_vnode_name, "vnode1"); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, key_vbr, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); key_vbr_t *key_vbr1(UT_CLONE(key_vbr_t, key_vbr)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); delete ikey; delete okey; @@ -2581,8 +2941,8 @@ TEST_F(VbrMoMgrTest, GetRenameInfo4) { } TEST_F(VbrMoMgrTest, GetRenameInfo5) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = true; @@ -2592,19 +2952,23 @@ TEST_F(VbrMoMgrTest, GetRenameInfo5) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)"name"); val_rename_vnode_t *val(ZALLOC_TYPE(val_rename_vnode_t)); - strcpy((char*)val->ctrlr_vtn_name,"vtn1"); + strcpy((char*)val->ctrlr_vtn_name, "vtn1"); strcpy((char*)val->ctrlr_vnode_name, ""); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, key_vbr, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); key_vbr_t *key_vbr1(UT_CLONE(key_vbr_t, key_vbr)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); delete ikey; delete okey; @@ -2612,8 +2976,8 @@ TEST_F(VbrMoMgrTest, GetRenameInfo5) { } TEST_F(VbrMoMgrTest, GetRenameInfo6) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = false; @@ -2623,19 +2987,23 @@ TEST_F(VbrMoMgrTest, GetRenameInfo6) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key_vbr->vbridge_name, (char *)""); val_rename_vnode_t *val(ZALLOC_TYPE(val_rename_vnode_t)); - strcpy((char*)val->ctrlr_vtn_name,"vtn1"); + strcpy((char*)val->ctrlr_vtn_name, "vtn1"); strcpy((char*)val->ctrlr_vnode_name, ""); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, key_vbr, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); key_vbr_t *key_vbr1(UT_CLONE(key_vbr_t, key_vbr)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); delete ikey; delete okey; @@ -2643,8 +3011,8 @@ TEST_F(VbrMoMgrTest, GetRenameInfo6) { } TEST_F(VbrMoMgrTest, GetRenameInfo7) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = false; @@ -2654,19 +3022,23 @@ TEST_F(VbrMoMgrTest, GetRenameInfo7) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)""); strcpy((char *)key_vbr->vbridge_name, (char *)"name"); val_rename_vnode_t *val(ZALLOC_TYPE(val_rename_vnode_t)); - strcpy((char*)val->ctrlr_vtn_name,"vtn1"); + strcpy((char*)val->ctrlr_vtn_name, "vtn1"); strcpy((char*)val->ctrlr_vnode_name, ""); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, key_vbr, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); key_vbr_t *key_vbr1(UT_CLONE(key_vbr_t, key_vbr)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); delete ikey; delete okey; @@ -2674,8 +3046,8 @@ TEST_F(VbrMoMgrTest, GetRenameInfo7) { } TEST_F(VbrMoMgrTest, GetRenameInfo8) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = true; @@ -2685,19 +3057,23 @@ TEST_F(VbrMoMgrTest, GetRenameInfo8) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)""); strcpy((char *)key_vbr->vbridge_name, (char *)"name"); val_rename_vnode_t *val(ZALLOC_TYPE(val_rename_vnode_t)); - strcpy((char*)val->ctrlr_vtn_name,"vtn1"); + strcpy((char*)val->ctrlr_vtn_name, "vtn1"); strcpy((char*)val->ctrlr_vnode_name, ""); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, key_vbr, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); key_vbr_t *key_vbr1(UT_CLONE(key_vbr_t, key_vbr)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); delete ikey; delete okey; @@ -2705,8 +3081,8 @@ TEST_F(VbrMoMgrTest, GetRenameInfo8) { } TEST_F(VbrMoMgrTest, GetRenameInfo9) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE , kDalRcSuccess); VbrMoMgr vbr; bool no_rename = true; @@ -2716,19 +3092,23 @@ TEST_F(VbrMoMgrTest, GetRenameInfo9) { strcpy((char *)key_vbr->vtn_key.vtn_name, (char *)"vtn1`"); strcpy((char *)key_vbr->vbridge_name, (char *)""); val_rename_vnode_t *val(ZALLOC_TYPE(val_rename_vnode_t)); - strcpy((char*)val->ctrlr_vtn_name,"vtn1"); + strcpy((char*)val->ctrlr_vtn_name, "vtn1"); strcpy((char*)val->ctrlr_vnode_name, ""); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::UPDATE_RECORD, kDalRcSuccess); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, key_vbr, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); key_vbr_t *key_vbr1(UT_CLONE(key_vbr_t, key_vbr)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, + ConfigKeyVal *okey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr1)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_name, no_rename)); delete ikey; delete okey; @@ -2738,10 +3118,12 @@ TEST_F(VbrMoMgrTest, GetRenameInfo9) { TEST_F(VbrMoMgrTest, IsReferenced1) { VbrMoMgr vbr; DalDmlIntf *dmi(getDalDmlIntf()); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.IsReferenced(ikey, UPLL_DT_STATE, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.IsReferenced(ikey, UPLL_DT_STATE, dmi)); delete ikey; } @@ -2750,29 +3132,39 @@ TEST_F(VbrMoMgrTest, IsReferenced2) { VbrMoMgr vbr; DalDmlIntf *dmi(getDalDmlIntf()); key_vbr_t *key_vbr(ZALLOC_TYPE(key_vbr_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, NULL); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vbr.IsReferenced(ikey, UPLL_DT_STATE, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.IsReferenced(ikey, UPLL_DT_STATE, dmi)); delete ikey; } TEST_F(VbrMoMgrTest, UpdateAuditConfigStatus1) { VbrMoMgr vbr; - ConfigKeyVal *ikey =NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.UpdateAuditConfigStatus(UNC_CS_APPLIED,uuc::kUpllUcpCreate, ikey)); + ConfigKeyVal *ikey = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.UpdateAuditConfigStatus(UNC_CS_APPLIED, + uuc::kUpllUcpCreate, ikey, dmi)); } TEST_F(VbrMoMgrTest, UpdateAuditConfigStatus2) { VbrMoMgr vbr; val_vbr_t *val(ZALLOC_TYPE(val_vbr_t)); - ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, val); - - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, NULL,tmp); + ConfigVal *tmp = new ConfigVal( + IpctSt::kIpcStValVbr, val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.UpdateAuditConfigStatus(UNC_CS_INVALID,uuc::kUpllUcpCreate, ikey)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.UpdateAuditConfigStatus(UNC_CS_INVALID, + uuc::kUpllUcpCreate, ikey, dmi)); delete ikey; } @@ -2782,15 +3174,19 @@ TEST_F(VbrMoMgrTest, UpdateAuditConfigStatus3) { val_vbr_t *val(ZALLOC_TYPE(val_vbr_t)); val->valid[UPLL_IDX_CONTROLLER_ID_VBR] = UNC_VF_VALID; val->valid[UPLL_IDX_DESC_VBR] = UNC_VF_VALID; - //val->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] = UNC_VF_VALID; - - ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, val); + // val->valid[UPLL_IDX_DHCP_RELAY_ADMIN_STATUS_VRT] = UNC_VF_VALID; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr, NULL,tmp); + ConfigVal *tmp = new ConfigVal( + IpctSt::kIpcStValVbr, val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.UpdateAuditConfigStatus(UNC_CS_INVALID,uuc::kUpllUcpCreate, ikey)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.UpdateAuditConfigStatus(UNC_CS_INVALID, + uuc::kUpllUcpCreate, ikey, dmi)); val_vbr_t *output = reinterpret_cast (GetVal(ikey)); - EXPECT_EQ(UNC_CS_INVALID,output->cs_attr[0]); + EXPECT_EQ(UNC_CS_INVALID, output->cs_attr[0]); delete ikey; } @@ -2799,7 +3195,8 @@ TEST_F(VbrMoMgrTest, SwapKeyVal1) { VbrMoMgr vbr; ConfigKeyVal *key = NULL; bool no_rename = false; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.SwapKeyVal(NULL, key, NULL, NULL, no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.SwapKeyVal(NULL, key, NULL, NULL, no_rename)); } TEST_F(VbrMoMgrTest, SwapKeyVal2) { @@ -2810,8 +3207,10 @@ TEST_F(VbrMoMgrTest, SwapKeyVal2) { bool no_rename = false; ConfigKeyVal *okey = NULL; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key_vbr); - EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vbr.SwapKeyVal(ikey, okey, NULL, NULL, no_rename)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VTN, IpctSt::kIpcStKeyVbr, key_vbr); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, + vbr.SwapKeyVal(ikey, okey, NULL, NULL, no_rename)); delete ikey; delete okey; @@ -2827,27 +3226,33 @@ TEST_F(VbrMoMgrTest, SwapKeyVal3) { ConfigKeyVal *okey = NULL; val_rename_vbr *vbr_rename_val = NULL; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValRenameVbr, vbr_rename_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValRenameVbr, vbr_rename_val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vbr.SwapKeyVal(ikey, okey, NULL, NULL, no_rename)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key_vbr, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vbr.SwapKeyVal(ikey, okey, NULL, NULL, no_rename)); delete ikey; delete okey; } -TEST_F(VbrMoMgrTest, IsHostAddrAndPrefixLenInUse1){ +TEST_F(VbrMoMgrTest, IsHostAddrAndPrefixLenInUse1) { VbrMoMgr vbr; - DalDmlIntf *dmi= NULL; + DalDmlIntf *dmi = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); val_vbr *val(ZALLOC_TYPE(val_vbr)); IPC_REQ_RESP_HEADER_DECL(req); pfc_strlcpy(reinterpret_cast(key->vtn_key.vtn_name), "vtn_name1", sizeof(key->vtn_key.vtn_name)); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ckv = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr,key, cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.IsHostAddrAndPrefixLenInUse(ckv,dmi,req)); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ckv = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.IsHostAddrAndPrefixLenInUse(ckv, dmi, req)); delete ckv; } @@ -2866,18 +3271,21 @@ TEST_F(VbrMoMgrTest, SwapKeyVal7) { strcpy((char *)vbr_rename_val->new_name, (char*)"hhh"); vbr_rename_val->valid[UPLL_IDX_NEW_NAME_RVRT] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValRenameVbr, vbr_rename_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValRenameVbr, vbr_rename_val); + DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE, kDalRcSuccess); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVrt, key_vbr, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.SwapKeyVal(ikey, okey, dmi, (uint8_t *)ctrlr_name, no_rename)); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVrt, key_vbr, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.SwapKeyVal(ikey, okey, dmi, (uint8_t *)ctrlr_name, no_rename)); delete ikey; } -TEST_F(VbrMoMgrTest, IsHostAddrAndPrefixLenInUse2){ +TEST_F(VbrMoMgrTest, IsHostAddrAndPrefixLenInUse2) { VbrMoMgr vbr; - DalDmlIntf *dmi= NULL; + DalDmlIntf *dmi = NULL; key_vbr *key(ZALLOC_TYPE(key_vbr)); strcpy((char *)key->vtn_key.vtn_name, (char *)"vtn1"); strcpy((char *)key->vbridge_name, (char *)"vbridge1"); @@ -2887,37 +3295,45 @@ TEST_F(VbrMoMgrTest, IsHostAddrAndPrefixLenInUse2){ val->valid[UPLL_IDX_HOST_ADDR_PREFIXLEN_VBR] = UNC_VF_INVALID; IPC_REQ_RESP_HEADER_DECL(req); - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ckv = new ConfigKeyVal(UNC_KT_VBRIDGE,IpctSt::kIpcStKeyVbr,key, cfgval); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.IsHostAddrAndPrefixLenInUse(ckv,dmi,req)); + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ckv = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.IsHostAddrAndPrefixLenInUse(ckv, dmi, req)); delete ckv; } -TEST_F(VbrMoMgrTest, CtrlrIdAndDomainIdUpdationCheck2){ +TEST_F(VbrMoMgrTest, CtrlrIdAndDomainIdUpdationCheck2) { VbrMoMgr vbr; key_vbr *key(ZALLOC_TYPE(key_vbr)); val_vbr *val(ZALLOC_TYPE(val_vbr)); val->valid[UPLL_IDX_CONTROLLER_ID_VBR] = UNC_VF_INVALID; val->valid[UPLL_IDX_DOMAIN_ID_VBR] = UNC_VF_INVALID; - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); key_vbr *key1(UT_CLONE(key_vbr, key)); val_vbr *val1(ZALLOC_TYPE(val_vbr)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *ckey(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, val1)); + ConfigKeyVal *ckey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); - EXPECT_EQ(UPLL_RC_SUCCESS,vbr.CtrlrIdAndDomainIdUpdationCheck(ikey, ckey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.CtrlrIdAndDomainIdUpdationCheck(ikey, ckey)); delete ikey; delete ckey; } -TEST_F(VbrMoMgrTest, CtrlrIdAndDomainIdUpdationCheck3){ +TEST_F(VbrMoMgrTest, CtrlrIdAndDomainIdUpdationCheck3) { VbrMoMgr vbr; key_vbr *key; val_vbr *val; @@ -2925,8 +3341,10 @@ TEST_F(VbrMoMgrTest, CtrlrIdAndDomainIdUpdationCheck3){ val->valid[UPLL_IDX_CONTROLLER_ID_VBR] = UNC_VF_INVALID; val->valid[UPLL_IDX_DOMAIN_ID_VBR] = UNC_VF_VALID; - ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + ConfigVal *cfgval = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, cfgval); @@ -2934,8 +3352,10 @@ TEST_F(VbrMoMgrTest, CtrlrIdAndDomainIdUpdationCheck3){ val_vbr *val1(ZALLOC_TYPE(val_vbr)); pfc_strlcpy(reinterpret_cast(val1->domain_id), "dom1", sizeof(val1->domain_id)); - ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *ckey(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, + ConfigVal *cfgval1(new ConfigVal( + IpctSt::kIpcStValVbr, val1)); + ConfigKeyVal *ckey(new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key1, cfgval1)); EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vbr.CtrlrIdAndDomainIdUpdationCheck(ikey, ckey)); @@ -2950,13 +3370,16 @@ TEST_F(VbrMoMgrTest, ValVbrAttributeSupportCheck_01) { val_vbr *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[8]; memset(attrs, 0xff, sizeof(attrs)); attrs[unc::capa::vbr::kCapDomainId] = 0; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrAttributeSupportCheck(val,attrs,operation)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrAttributeSupportCheck(val, attrs, operation)); delete ikey; } @@ -2966,16 +3389,19 @@ TEST_F(VbrMoMgrTest, ValVbrAttributeSupportCheck_02) { val_vbr *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[8]; memset(attrs, 0xff, sizeof(attrs)); attrs[unc::capa::vbr::kCapDomainId] = 0; - + val->valid[UPLL_IDX_CONTROLLER_ID_VBR] = UNC_VF_INVALID; val->valid[UPLL_IDX_DOMAIN_ID_VBR] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrAttributeSupportCheck(val,attrs,operation)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrAttributeSupportCheck(val, attrs, operation)); delete ikey; } @@ -2985,14 +3411,17 @@ TEST_F(VbrMoMgrTest, ValVbrAttributeSupportCheck_03) { val_vbr *val; GetKeyValStruct(key, val); - unc_keytype_operation_t operation= UNC_OP_CREATE; + unc_keytype_operation_t operation = UNC_OP_CREATE; uint8_t attrs[8]; memset(attrs, 0xff, sizeof(attrs)); attrs[unc::capa::vbr::kCapDesc] = 0; val->valid[UPLL_IDX_DESC_VBR] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vbr.ValVbrAttributeSupportCheck(val,attrs,operation)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vbr.ValVbrAttributeSupportCheck(val, attrs, operation)); delete ikey; } @@ -3007,8 +3436,11 @@ TEST_F(VbrMoMgrTest, ValVbrAttributeSupportCheck_04) { uint8_t attrs[8]; memset(attrs, 0xff, sizeof(attrs)); attrs[unc::capa::vbr::kCapDesc] = 0; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbr, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vbr.ValVbrAttributeSupportCheck(val,attrs,operation)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbr, val); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vbr.ValVbrAttributeSupportCheck(val, attrs, operation)); delete ikey; } diff --git a/coordinator/test/modules/upll/ut/vlanmap_stub.hh b/coordinator/test/modules/upll/ut/vlanmap_stub.hh new file mode 100644 index 00000000..6ba035d5 --- /dev/null +++ b/coordinator/test/modules/upll/ut/vlanmap_stub.hh @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2012-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#include "vlanmap_momgr.hh" +#include +#include "momgr_impl.hh" +#include "ipct_st.hh" +#include "unc/keytype.h" +#include "dal/dal_odbc_mgr.hh" +#include "dal/dal_dml_intf.hh" +#include "tclib_module.hh" +#include "dal_defines.hh" +#include "config_mgr.hh" + +using namespace unc::upll::kt_momgr; + +enum function { + ReadConfigDB1, +}; + +class VlanmapStub : public VlanMapMoMgr { + public: + static std::map stub_result; + upll_rc_t ReadConfigDB(ConfigKeyVal *ikey, + upll_keytype_datatype_t dt_type, + unc_keytype_operation_t op, + DbSubOp dbop, + DalDmlIntf *dmi, + MoMgrTables tbl) { + printf("\nInside stub ReadConfigDb1"); + return stub_result[ReadConfigDB1]; + } + MoManager *GetMoManager(unc_key_type_t kt) { + + std::cout<<"GetMoManger Stub being called\n"; + return new VlanmapStub(); + } +}; +std::map VlanmapStub::stub_result; + diff --git a/coordinator/test/modules/upll/ut/vlanmap_ut.cc b/coordinator/test/modules/upll/ut/vlanmap_ut.cc new file mode 100644 index 00000000..6d741468 --- /dev/null +++ b/coordinator/test/modules/upll/ut/vlanmap_ut.cc @@ -0,0 +1,2797 @@ +/* + * Copyright (c) 2012-2014 NEC Corporation + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this + * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ut_util.hh" +#define INVALID_LOG_PORT_ID_VALID 0xFF + +using ::testing::TestWithParam; +using ::testing::Values; +using namespace std; +using namespace unc::upll::dal; +using namespace unc::capa; +using namespace unc::upll::config_momgr; +using namespace unc::upll::test; +using namespace unc::upll::kt_momgr; +using namespace pfc::core; +using namespace unc::upll; +using namespace unc::tclib; + +class VlanMapTest : public UpllTestEnv { +}; + +/* ===================*GetRenameKeyBindInfo*======================== */ +TEST_F(VlanMapTest, TblEqMaintbl) { + /*Checking if tbl equals maintabl and returning true */ + VlanMapMoMgr obj; + unc_key_type_t key_type = UNC_KT_VBR_VLANMAP; + BindInfo *binfo = NULL; + int nattr = 0; + MoMgrTables tbl = MAINTBL; + EXPECT_TRUE(obj.GetRenameKeyBindInfo(key_type, binfo, nattr, tbl)); +} +TEST_F(VlanMapTest, TblNotMaintbl) { + /*Checking if tbl is other than maintabl and returning true */ + VlanMapMoMgr obj; + unc_key_type_t key_type = UNC_KT_VBR_VLANMAP; + BindInfo *binfo = NULL; + int nattr = 0; + MoMgrTables tbl = CTRLRTBL; + EXPECT_FALSE(obj.GetRenameKeyBindInfo(key_type, binfo, nattr, tbl)); +} +/* =========================*GetValid*================================= */ +TEST_F(VlanMapTest, valNull) { + /*Checking if configkeyval is null and returning error */ + VlanMapMoMgr obj; + void *val = NULL; + unsigned long indx = 0; + uint8_t *valid = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + MoMgrTables tbl= MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetValid(val, indx, valid, dt_type, tbl)); +} +TEST_F(VlanMapTest, DbtypeState) { + /* Checking if database type is state and returning error */ + VlanMapMoMgr obj; + val_vlan_map *val =ZALLOC_TYPE(val_vlan_map); + unsigned long indx = 0; + uint8_t *valid = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; + MoMgrTables tbl= MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetValid(val, indx, valid, dt_type, tbl)); +} +TEST_F(VlanMapTest, indx_not_vbridge_vlanmap_Vlanid) { + /*Checking if index is not vbridge_vlanmap_Vlanid and returning error */ + VlanMapMoMgr obj; + val_vlan_map *val =ZALLOC_TYPE(val_vlan_map); + unsigned long indx =0; + uint8_t *valid = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + MoMgrTables tbl= MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetValid(val, indx, valid, dt_type, tbl)); +} +TEST_F(VlanMapTest, indx_vbridge_vlanmap_Vlanid) { + /*Checking if index is vbridge_vlanmap_Vlanid and returning success */ + VlanMapMoMgr obj; + val_vlan_map *val =ZALLOC_TYPE(val_vlan_map); + unsigned long indx = uudst::vbridge_vlanmap::kDbiVlanid; + uint8_t *valid = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + MoMgrTables tbl= MAINTBL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetValid(val, indx, valid, dt_type, tbl)); +} +/* ===========================*UpdateConfigStatus*=========================== */ +TEST_F(VlanMapTest, ikeyvalNull) { +/*Checking if val is null and returning error */ + VlanMapMoMgr obj; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStValVlanMap); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + unc_keytype_operation_t op = UNC_OP_CREATE; + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, ikey_val_NotNull) { +/* Checking if val is not null and returning success when op is create*/ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + unc_keytype_operation_t op = UNC_OP_CREATE; + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, driverresultZero) { +/* Check if cs_status is UNC_CS_APPLIED when driver_result is zero and + returning success */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + unc_keytype_operation_t op = UNC_OP_CREATE; + uint32_t driver_result = UPLL_RC_SUCCESS; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, driverresultNotZero) { +/* Check if cs_status is UNC_CS_NOT_APPLIED when driver result is non zero + and returning success */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + unc_keytype_operation_t op = UNC_OP_CREATE; + uint32_t driver_result = 1; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, Op_Neither_Create_Nor_Update) { +/* Check if op is other than create and update and return error */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + unc_keytype_operation_t op = UNC_OP_READ; + uint32_t driver_result = 1; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, OpCreate) { +/* Check if op is create and retrun success */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + unc_keytype_operation_t op = UNC_OP_CREATE; + uint32_t driver_result = 1; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, OpCreate_valid_UNCVFVALID) { +/* Check if op is create and valid flag is valid and return success */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + unc_keytype_operation_t op = UNC_OP_CREATE; + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM]= UNC_VF_VALID; + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, + OpCreate_updkeyNotNull_valid_UNCVFNOTSUPPORTED) { +/* Check if op is create and valid flag is not supported and return success */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + unc_keytype_operation_t op = UNC_OP_CREATE; + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM]= UNC_VF_NOT_SUPPORTED; + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +#if 0 // NUll checks to be provided for test case to pass +TEST_F(VlanMapTest, OpUpdate_updkeyNull) { +/* Checking if upd_key is null (not to be null) */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + unc_keytype_operation_t op = UNC_OP_UPDATE; + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +#endif +TEST_F(VlanMapTest, OpUpdate_valid_UNCVFVALID) { +/* Check if op is update and valid flag is valid and return success */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + unc_keytype_operation_t op = UNC_OP_UPDATE; + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM]= UNC_VF_VALID; + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} + +TEST_F(VlanMapTest, + OpUpdate_updkeyNotNull_valid_UNCVFNOTSUPPORTED) { +/* Check if op is update and valid flag is not supported and return success */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + ConfigKeyVal *ctrlr_key= NULL; + unc_keytype_operation_t op = UNC_OP_UPDATE; + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM]= UNC_VF_NOT_SUPPORTED; + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +TEST_F(VlanMapTest, ctrlr_key) { +// Test case checking by changing default value for ctrlr key + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + unc_keytype_operation_t op = UNC_OP_UPDATE; + DalDmlIntf *dmi(getDalDmlIntf()); + uint32_t driver_result = 0; + ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + ConfigKeyVal *ctrlr_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateConfigStatus(ikey, + op, driver_result, upd_key, dmi, ctrlr_key)); +} +/* ==========================*UpdateAuditConfigStatus*======================= */ +TEST_F(VlanMapTest, val_ckvrunning_NULL) { + /*Returning error code if configkeyval is null which implies val is null */ + VlanMapMoMgr obj; + unc_keytype_configstatus_t cs_status = UNC_CS_INVALID; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + ConfigKeyVal *ckv_running = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.UpdateAuditConfigStatus(cs_status, + phase, ckv_running, dmi)); +} +TEST_F(VlanMapTest, val_NotNul) { +/*Returning success if configkeyval is not null */ + VlanMapMoMgr obj; + unc_keytype_configstatus_t cs_status = UNC_CS_INVALID; + uuc::UpdateCtrlrPhase phase =uuc::kUpllUcpInvalid; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateAuditConfigStatus(cs_status, + phase, ckv_running, dmi)); +} +TEST_F(VlanMapTest, val_NotNULL_phaseCreate_csInvalid) { +/*Checking for phase is create and cs_status is invalid and valid flag is + valid and returning success */ + VlanMapMoMgr obj; + unc_keytype_configstatus_t cs_status = UNC_CS_INVALID; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM]= UNC_VF_VALID; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateAuditConfigStatus(cs_status, + phase, ckv_running, dmi)); +} + +TEST_F(VlanMapTest, + val_NotNULL_phaseCreate_csNotInvalid) { +/*Checking for phase is create and cs_status is other than invalid and valid + flag is valid and returning success */ + VlanMapMoMgr obj; + unc_keytype_configstatus_t cs_status = UNC_CS_NOT_SUPPORTED; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM]= UNC_VF_VALID; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateAuditConfigStatus(cs_status, + phase, ckv_running, dmi)); +} +TEST_F(VlanMapTest, + phaseCreate_csNotInvalid_valdInvalid) { +/*Checking for phase is create and cs_status is other than invalid and valid + flag is other than valid and returning success */ + VlanMapMoMgr obj; + unc_keytype_configstatus_t cs_status = UNC_CS_NOT_SUPPORTED; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM]= UNC_VF_INVALID; + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ckv_running = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, tmp); + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.UpdateAuditConfigStatus(cs_status, + phase, ckv_running, dmi)); +} +/* =========================*ValidateVlanmapKey*============================= */ +TEST_F(VlanMapTest, Stvlanmapkey) { +/*Returning success if vlanmapkey is valid */ + VlanMapMoMgr obj; + unc_keytype_operation_t operation = UNC_OP_READ_SIBLING_BEGIN; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateVlanmapKey(vlanmap_key, operation)); +} + +TEST_F(VlanMapTest, StvlanmapkeyNovtnname) { + /*Returning cfg_syntax error when vtn_name for valnmapkey is not valid */ + VlanMapMoMgr obj; + unc_keytype_operation_t operation = UNC_OP_READ_SIBLING_BEGIN; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "_VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVlanmapKey(vlanmap_key, operation)); +} +TEST_F(VlanMapTest, StvlanmapkeyNovbridgename) { + /*Returning cfg_syntax error when vbridge_name for valnmapkey is not valid */ + VlanMapMoMgr obj; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + unc_keytype_operation_t operation = UNC_OP_READ_SIBLING_BEGIN; + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "_VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_FALSE; + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVlanmapKey(vlanmap_key, operation)); +} +TEST_F(VlanMapTest, vlanmapkey_strt_char_invald_logclportid) { + /*Returning cfg_syntax error + when logical_portid for valnmapkey is not valid */ + VlanMapMoMgr obj; + unc_keytype_operation_t operation = UNC_OP_READ_SIBLING_BEGIN; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_FALSE; + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVlanmapKey(vlanmap_key, operation)); +} +/*TEST_F(VlanMapTest, StvlanmapkeyNologicalportid) { + + Returning cfg_syntax error when logical_portid for valnmapkey is not valid + VlanMapMoMgr obj; + unc_keytype_operation_t operation = UNC_OP_READ_SIBLING_BEGIN; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "vbridge1", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_FALSE; + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateVlanmapKey(vlanmap_key, operation)); +}*/ +TEST_F(VlanMapTest, StvlanmapkeyNULL) { +/*Returning cfg_syntax error when no key structure */ + VlanMapMoMgr obj; + unc_keytype_operation_t operation = UNC_OP_READ_SIBLING_BEGIN; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVlanmapKey(vlanmap_key, operation)); +} + +TEST_F(VlanMapTest, StvlanmapKeylvalidlogicalportid) { +/*Returning cfg_syntax error if logical_port_id for vlanmapkey is + not valid name */ +/*checking toupper condition */ + VlanMapMoMgr obj; + unc_keytype_operation_t operation = UNC_OP_CREATE; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRDIGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "pPort", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVlanmapKey(vlanmap_key, operation)); +} +TEST_F(VlanMapTest, Stvlanmapkey_logicalportidvalid_invalid) { +/*Returning error if vlanmapkey logical portid valid is invalid */ + VlanMapMoMgr obj; + unc_keytype_operation_t operation = UNC_OP_CREATE; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid = 5; // random number + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + obj.ValidateVlanmapKey(vlanmap_key, operation)); +} + +/*=========================*ValidateVlanmapValue*=========================== */ +TEST_F(VlanMapTest, vlanmapValNull) { +/* Retrun error generic if vlanmap val is NULL */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = NULL; + uint32_t op = UNC_OP_CREATE; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.ValidateVlanmapValue(vlanmap_val, op)); +} +TEST_F(VlanMapTest, vlanmapVal_Valid) { +/* Retrun success when vlanmapvalue valid flag is UNC_VF_VALID and + vlanid is in valid range */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + uint32_t op = UNC_OP_CREATE; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val->vlan_id = 44; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateVlanmapValue(vlanmap_val, op)); +} +TEST_F(VlanMapTest, vlanmapVal_NotValidvlanid) { +/* Retrun cfg_syntax error if vlanmapvalue valid flag is UNC_VF_VALID + and vlanid is not in valid range */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + uint32_t op = UNC_OP_CREATE; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val->vlan_id = 4096; +// vlanmap_val->vlan_id = -4096; // passes for both negative values and zero + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateVlanmapValue(vlanmap_val, op)); +} + +TEST_F(VlanMapTest, vlanmapVal_validflag_novalue_opcreate) { +/* Retrun success if vlanmapvalue valid flag is UNC_VF_VALID_NO_VALUE + and op is UNC_OP_CREATE */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + uint32_t op = UNC_OP_CREATE; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateVlanmapValue(vlanmap_val, op)); +} +TEST_F(VlanMapTest, vlanmapVal_validflag_novalue_opupdate) { +/* Retrun success if vlanmapvalue valid flag is UNC_VF_VALID_NO_VALUE + and op is UNC_OP_UPDATE */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + uint32_t op = UNC_OP_UPDATE; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateVlanmapValue(vlanmap_val, op)); +} +TEST_F(VlanMapTest, vlanmapVal_validflag_Invalid) { +/* Retrun success if vlanmapvalue valid flag is other than + UNC_VF_VALID and UNC_VF_VALID_NO_VALUE */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + uint32_t op = UNC_OP_UPDATE; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_INVALID; + // vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_NOT_SUPPORTED; + // passes for not supported also + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateVlanmapValue(vlanmap_val, op)); +} +TEST_F(VlanMapTest, vlanmapVal_validflag_novalue_opread) { +/* Retrun success if vlanmapvalue valid flag is UNC_VF_VALID_NO_VALUE + and op is other than UNC_OP_UPDATE or CREATE */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + uint32_t op = UNC_OP_READ; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateVlanmapValue(vlanmap_val, op)); +} +/* ============================*ValidateMessage*============================= */ +TEST_F(VlanMapTest, IPcreqkeyNULL) { +/* Returning error generic if req is NULL */ + VlanMapMoMgr obj; + ConfigKeyVal *ikey = NULL; + IpcReqRespHeader *req = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, ikeystnum_invalidkeyStnum) { +/*Returning error with no such instance if key struct num is + other than kIpcStKeyVbrVlanMap */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVbrIf, vlanmap_key); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, ikeystnum_invalidkeytype) { +/*Returning error with no such instance if key type is other + than UNC_KT_VBR_VLANMAP*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, ikeystnum_validate_vlanmapkey_cfg_err) { +/*Returning error cfg_syntax if valnmapkey is not valid*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key =ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "_VTN", kMaxLenVtnName); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, opCreate_dtCandidate_cfgval_not_vlanmap) { +/*Returning error cfg_syntax if val struct is not vlanmap*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_CREATE; + req->datatype = UPLL_DT_CANDIDATE; + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, valSt_null_opCreate_dtCandidate) { +/*Returning error cfg_syntax if vlammap val struct is NULL*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_CREATE; + req->datatype = UPLL_DT_CANDIDATE; + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, valSt_NotValid_opCreate_dtCandidate) { +/*Returning error no such instance if val structure is other than vlanmap */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, validatevlanmapvalue_error) { +/*Returning error cfg syntax if vlammapvalue is not valid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_CREATE; + req->datatype = UPLL_DT_CANDIDATE; + vlanmap_val->vlan_id = 4096; // out of range + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + /*validate + vlanmap value */ + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, valSt_Notnull_op_create_dt_candidate) { +/*Returning success if vlammapvalue is valid for op create and dt candidate*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_CREATE; + req->datatype = UPLL_DT_CANDIDATE; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + /*validate + vlanmap value */ + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, valSt_Notnull_op_update_dt_candidate) { +/*Returning success if vlammapvalue is valid for op update and dt candidate*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_UPDATE; + req->datatype = UPLL_DT_CANDIDATE; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + /* validate + vlanmap value */ + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, valSt_Notnull_op_update_dt_others) { +/*Returning error no such instance if vlammapvalue is valid for op + update and dt other than candidate*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_UPDATE; + req->datatype = UPLL_DT_RUNNING; + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + /* validate + vlanmap value */ + EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, + obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_read_Dt_Candidate_Opt1_invalid) { +/*Returning error invalid option1 if req->option1 if other than NORMAL + for op Read and Dt candidate*/ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_DETAIL; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_read_Dt_Candidate_Opt2_invalid) { +/*Returning error invalid option2 if vlammapvalue is option2 is other + than None for op Read and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_IP_ROUTE; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, Op_read_Dt_Candidate_Opt1_Opt2_valid) { +/*Returning Success if option1 and option2 are valid for op Read and + Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_read_candidate_validOpts_invalid_valSt) { +/* Returning error if option1 and option2 are valid but val struct is invalid + for op Read and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVbr, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_read_candidate_validOpts_Val_Null) { +/* Returning success if option1 and option2 are valid but val is null + for op Read and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_read_Dt_candidate_validateval_error) { +/* Returning error if option1 and option2 are valid but validate val error + for op Read and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + vlanmap_val->vlan_id = 4096; // out of range + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + /*validate + vlanmap value */ + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, OpRead_Dt_Invalid) { +/* Returning error if option1 and option2 are valid + for op read and Dt invalid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_INVALID; + EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, + obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadNext_DtInvalid) { +/* Returning error if option1 and option2 are valid + for op read_Next and Dt invalid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_NEXT; + req->datatype = UPLL_DT_INVALID; + EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, + obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSibling_Dt_Candidate_Opt1_invalid) { +/*Returning error invalid option1 if req->option1 if other than NORMAL for + op ReadSibling and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_DETAIL; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSibling_Dt_Candidate_Opt2_invalid) { +/*Returning error invalid option2 if option2 is invalid for op ReadSibling + and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_IP_ROUTE; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, Op_ReadSibling_Dt_Candidate_Opt1_Opt2_valid) { +/*Returning Success if option1 and option2 are valid for op ReadSibling + and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, + Op_ReadSiblingBegin_Dt_Candidate_Opt1_invalid) { +/*Returning error invalid option1 if req->option1 if other than NORMAL for + op ReadSiblingBegin and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, NULL); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_BEGIN; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_DETAIL; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, + Op_ReadSiblingBegin_Dt_Candidate_Opt2_invalid) { +/*Returning error invalid option2 if option2 is invalid for op ReadSiblingBegin + and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_BEGIN; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_IP_ROUTE; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, + Op_ReadSiblingBegin_Dt_Candidate_Opt1_Opt2_valid) { +/*Returning Success if option1 and option2 are valid for op ReadSiblingBegin + and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_BEGIN; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, + Op_ReadSiblingCount_Dt_Candidate_Opt1_invalid) { +/*Returning error invalid option1 if req->option1 if other than NORMAL + for op ReadSiblingCount and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_DETAIL; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, + Op_ReadSiblingCount_Dt_Candidate_Opt2_invalid) { +/*Returning error invalid option2 if option2 is invalid for op + ReadSiblingCount and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_IP_ROUTE; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, + Op_ReadSiblingCount_Dt_Candidate_Opt1_Opt2_valid) { +/*Returning Success if option1 and option2 are valid for op ReadSiblingCount + and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSiblingCount_Dt_Running_Opt1_invalid) { +/*Returning error invalid option1 if req->option1 if other than NORMAL for + op ReadSiblingCount and Dt running */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_RUNNING; + req->option1 = UNC_OPT1_DETAIL; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSiblingCount_Dt_Running_Opt2_invalid) { +/*Returning error invalid option2 if option2 is invalid for op + ReadSiblingCount and Dt Running */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_RUNNING; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_IP_ROUTE; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, + Op_ReadSiblingCount_Dt_Running_Opt1_Opt2_valid) { +/*Returning Success if option1 and option2 are valid for op ReadSiblingCount + and Dt Running */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_RUNNING; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSiblingCount_Dt_StartUp_Opt1_invalid) { +/*Returning error invalid option1 if req->option1 if other than NORMAL for + op ReadSiblingCount and Dt startup */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_STARTUP; + req->option1 = UNC_OPT1_DETAIL; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSiblingCount_Dt_StartUp_Opt2_invalid) { +/*Returning error invalid option2 if option2 is invalid for op + ReadSiblingCount and Dt Startup */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_STARTUP; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_IP_ROUTE; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, + Op_ReadSiblingCount_Dt_Startup_Opt1_Opt2_valid) { +/*Returning Success if option1 and option2 are valid for op ReadSiblingCount + and Dt StartUP */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_STARTUP; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSiblingCount_Dt_State_Opt1_invalid) { +/*Returning error invalid option1 if req->option1 if other than NORMAL + for op ReadSiblingCount and Dt state */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_STATE; + req->option1 = UNC_OPT1_DETAIL; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadSiblingCount_Dt_State_Opt2_invalid) { +/*Returning error invalid option2 if option2 is invalid for op + ReadSiblingCount and Dt State */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_STATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_IP_ROUTE; + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, + Op_ReadSiblingCount_Dt_State_Opt1_Opt2_valid) { +/*Returning Success if option1 and option2 are valid for op ReadSiblingCount + and Dt State */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_STATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadNext_Dt_StartUp) { +/*Returning Success if op is Readnext and Dt Startup */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_NEXT; + req->datatype = UPLL_DT_STARTUP; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} + +TEST_F(VlanMapTest, Op_ReadBulk_Dt_StartUp) { +/*Returning Success if op is ReadBulk and Dt Startup */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_BULK; + req->datatype = UPLL_DT_STARTUP; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadNext_Dt_Candidate) { +/*Returning Success if op is ReadNext and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_NEXT; + req->datatype = UPLL_DT_CANDIDATE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadBulk_Dt_Candidate) { +/*Returning Success if op is ReadBulk and Dt candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_BULK; + req->datatype = UPLL_DT_CANDIDATE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadNext_Dt_Running) { +/*Returning Success if op is ReadNext and Dt running */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_NEXT; + req->datatype = UPLL_DT_RUNNING; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_ReadBulk_Dt_Running) { +/*Returning Success if op is ReadBulk and Dt running */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_READ_BULK; + req->datatype = UPLL_DT_RUNNING; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateMessage(req, ikey)); +} +TEST_F(VlanMapTest, Op_notValid_Dt_invalid) { +/*Returning error no such instance if op is not valid and Dt is not valid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + req->operation = UNC_OP_CONTROL; + req->datatype = UPLL_DT_RUNNING; + EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, + obj.ValidateMessage(req, ikey)); +} +/* =============================*AllocVal*================================= */ +TEST_F(VlanMapTest, configval_NotNull) { +/*Returning error generic if configval is not null */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *ck_val = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.AllocVal(ck_val, dt_type, tbl)); +} +TEST_F(VlanMapTest, configval_Null_alloc_val_tbl_Maintbl) { +/*Returning success after allocating val if configval is null */ + VlanMapMoMgr obj; + ConfigVal *ck_val = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.AllocVal(ck_val, dt_type, tbl)); + EXPECT_EQ(125, ck_val->get_st_num()); // st_num 39 =>kIpcStValVlanMap +} + +TEST_F(VlanMapTest, configval_Null_alloc_val_tbl_NotMaintbl) { +/* Returning success allocating val to zero if table is not maintable */ + VlanMapMoMgr obj; + ConfigVal *ck_val = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + MoMgrTables tbl = RENAMETBL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.AllocVal(ck_val, dt_type, tbl)); +} + +/* ==========================*IsValidKey*=================================== */ +TEST_F(VlanMapTest, Index_Valid_Vtnname) { +/*Returning true if key->vtnname is valid */ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiVtnName; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + EXPECT_TRUE(obj.IsValidKey(vlanmap_key, index)); +} +TEST_F(VlanMapTest, Index_Invalid_Vtnname) { +/*Returning false if key->vtnname is not valid */ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiVtnName; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "_VTN", kMaxLenVtnName); + EXPECT_FALSE(obj.IsValidKey(vlanmap_key, index)); +} + +TEST_F(VlanMapTest, Index_Valid_Vbridgename) { +/*Returning true if key->vbridgename is valid */ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiVbrName; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + EXPECT_TRUE(obj.IsValidKey(vlanmap_key, index)); +} +TEST_F(VlanMapTest, Index_Invalid_Vbridgename) { +/*Returning false if key->vbridgename is not valid */ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiVbrName; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "_VBRIDGE", kMaxLenVnodeName); + EXPECT_FALSE(obj.IsValidKey(vlanmap_key, index)); +} +TEST_F(VlanMapTest, Index_Valid_LogicalPortID) { +/*Returning true if key->logicalportid is valid*/ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiLogicalPortId; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); +// vlanmap_key->logical_port_id_valid =PFC_TRUE; // validate vlanmap key + EXPECT_TRUE(obj.IsValidKey(vlanmap_key, index)); +} +TEST_F(VlanMapTest, Index_Invalid_LogicalPortId) { +/*Returning false if key->logicalportid is not valid */ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiLogicalPortId; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "_PORT", kMaxLenLogicalPortId); + EXPECT_TRUE(obj.IsValidKey(vlanmap_key, index)); +} +TEST_F(VlanMapTest, Index_Valid_LogicalPortIdValid) { +/*Returning true if key->logicalportidvalid is valid*/ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiLogicalPortIdValid; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + vlanmap_key->logical_port_id_valid = PFC_TRUE; + EXPECT_TRUE(obj.IsValidKey(vlanmap_key, index)); +} +TEST_F(VlanMapTest, Index_Invalid_LogicalPortIdValid) { +/*Returning false if key->logicalportidvalid is not valid */ + VlanMapMoMgr obj; + uint64_t index = uudst::vbridge_vlanmap::kDbiLogicalPortIdValid; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + vlanmap_key->logical_port_id_valid =5; // random number + EXPECT_FALSE(obj.IsValidKey(vlanmap_key, index)); +} + +TEST_F(VlanMapTest, Index_NotValid) { +/*Returning true if index is not valid */ + VlanMapMoMgr obj; + uint64_t index = 10; // random number + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + EXPECT_TRUE(obj.IsValidKey(vlanmap_key, index)); +} +/*========================*GetChildConfigKey*================================ */ + +TEST_F(VlanMapTest, Parentkey_Null) { +/*Returning success after allocationg new configkeyval if ckv + parentkey is null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *parent_key = NULL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetChildConfigKey(okey, parent_key)); + key_vlan_map *output_vlmkey =reinterpret_cast + (okey->get_key()); +/* check has all set to 0 (memset to 0 being done in code) */ + EXPECT_STREQ("", + reinterpret_cast(output_vlmkey-> + vbr_key.vtn_key.vtn_name)); + EXPECT_STREQ("", + reinterpret_cast(output_vlmkey-> + vbr_key.vbridge_name)); + EXPECT_STREQ("", + reinterpret_cast(output_vlmkey->logical_port_id)); + EXPECT_EQ(INVALID_LOG_PORT_ID_VALID, output_vlmkey->logical_port_id_valid); +} +TEST_F(VlanMapTest, okey_NULL_parentkey_keyStructNULL) { +/*Return error generic if parentkey is not null but key struct is null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetChildConfigKey(okey, parent_key)); +} +TEST_F(VlanMapTest, okey_NULL_parentkey_keystructNotNULL) { +/* Return success if parentkey key struct is not null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetChildConfigKey(okey, parent_key)); +} +TEST_F(VlanMapTest, okey_NULL_pkey_keystvalid_kype_NotVlanmap) { +/* Return error generic if okey and parentkey key struct are not null and + okey keytype is not vlanmap */ + VlanMapMoMgr obj; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + key_vbr_if *vbr_key = ZALLOC_TYPE(key_vbr_if); + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVbrIf, vbr_key); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetChildConfigKey(okey, parent_key)); +} +TEST_F(VlanMapTest, okey_NULL_pkey_keystvalid_kype_Vlanmap) { +/* Return success if okey and parentkey key struct are not null and + okey keytype is vlanmap */ + VlanMapMoMgr obj; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetChildConfigKey(okey, parent_key)); +} + +TEST_F(VlanMapTest, + okey_NULL_pkey_keystValid_pkey_ktype_vlanmap_portidvalid_true) { +/* Return success if okey is null and parent key is valid struct with key type + vlanmap and logicalportidvalid true */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid = PFC_TRUE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetChildConfigKey(okey, parent_key)); + key_vlan_map *output_vlmkey = + reinterpret_cast + (okey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(output_vlmkey-> + vbr_key.vtn_key.vtn_name)); + EXPECT_STREQ("VBRIDGE", + reinterpret_cast(output_vlmkey-> + vbr_key.vbridge_name)); + EXPECT_STREQ("PORT", + reinterpret_cast(output_vlmkey->logical_port_id)); + EXPECT_TRUE(output_vlmkey->logical_port_id_valid); +} +TEST_F(VlanMapTest, + okey_NULL_pkey_keystValid_pkey_ktype_vlanmap_portvalid_false) { +/* Return success if okey is null and parent key is valid struct with key type + vlanmap and logicalportidvalid false */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid = PFC_FALSE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetChildConfigKey(okey, parent_key)); + key_vlan_map *output_vlmkey = + reinterpret_cast + (okey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(output_vlmkey-> + vbr_key.vtn_key.vtn_name)); + EXPECT_STREQ("VBRIDGE", + reinterpret_cast(output_vlmkey-> + vbr_key.vbridge_name)); +/* port is set to '/0' when portidvalid is false */ + EXPECT_STREQ("", + reinterpret_cast(output_vlmkey->logical_port_id)); + EXPECT_FALSE(output_vlmkey->logical_port_id_valid); +} + +TEST_F(VlanMapTest, + okey_NULL_pkey_keystValid_pkey_ktype_vbridge) { +/* Return success if okey is null and parent key is valid struct + with key type vbridge*/ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vbr_t *key_vbr = ZALLOC_TYPE(key_vbr_t); + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, key_vbr); + strncpy(reinterpret_cast(key_vbr->vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(key_vbr->vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetChildConfigKey(okey, parent_key)); + key_vlan_map *output_vlmkey =(key_vlan_map *)(okey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(output_vlmkey-> + vbr_key.vtn_key.vtn_name)); + EXPECT_STREQ("VBRIDGE", + reinterpret_cast(output_vlmkey-> + vbr_key.vbridge_name)); +} +TEST_F(VlanMapTest, + okey_NULL_pkey_keystValid_pkey_ktype_vtn) { +/* Return success if okey is null and parent key is valid struct + with key type vtn*/ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vtn_t *key_vtn = ZALLOC_TYPE(key_vtn_t); + ConfigKeyVal *parent_key = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key_vtn); + strncpy(reinterpret_cast(key_vtn->vtn_name), + "VTN", kMaxLenVtnName); + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetChildConfigKey(okey, parent_key)); + key_vlan_map *output_vlmkey =(key_vlan_map *)(okey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(output_vlmkey-> + vbr_key.vtn_key.vtn_name)); +} +/* =========================*GetParentConfigKey*============================= */ + +TEST_F(VlanMapTest, ikey_NULL) { +/* Return error generic if ikey is null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ikey = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetParentConfigKey(okey, ikey)); +} + +TEST_F(VlanMapTest, ikey_NotNULL_keyst_Notvbrvlanmap) { +/* Return error generic if ikey_type is not vbrvlanmap when + child key is not null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVbrIf); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetParentConfigKey(okey, ikey)); +} +TEST_F(VlanMapTest, ikey_NotNULL_keyst_vbrvlanmap_pkey_null) { +/* Return error generic if pkey is null and ikey_type is vbrvlanmap when + child key is not null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.GetParentConfigKey(okey, ikey)); +} + +TEST_F(VlanMapTest, ikey_NotNULL_keyst_vbrvlanmap) { +/* Return success if pkey is not null and ikey_type is vbrvlanmap when + child key is not null */ + VlanMapMoMgr obj; + key_vlan_map *vlanmap_key =ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetParentConfigKey(okey, ikey)); +/* check if child key struct is assigned to pkey when key type is vbr_vlanmap */ + key_vlan_map_t *pkey = + reinterpret_cast(ikey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(pkey->vbr_key.vtn_key.vtn_name)); +} +TEST_F(VlanMapTest, ikey_NotNULL_vbrkey_valid) { +/* Return success after getting parent config key */ + VlanMapMoMgr obj; + key_vlan_map *vlanmap_key =ZALLOC_TYPE(key_vlan_map); + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, NULL); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vbridge_name), + "VBRIDGE", kMaxLenVnodeName); + EXPECT_EQ(UPLL_RC_SUCCESS, obj.GetParentConfigKey(okey, ikey)); +/*check if vlanmap key struct is copied to vbr key struct */ + key_vbr *vbr_key = + reinterpret_cast(ikey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(vbr_key->vtn_key.vtn_name)); + EXPECT_STREQ("VBRIDGE", + reinterpret_cast(vbr_key->vbridge_name)); + EXPECT_EQ(11, okey->get_key_type()); // parent key is 18-UNC_KT_VBRIDGE +} +/*=========================*DupConfigKeyVal*==================================*/ +TEST_F(VlanMapTest, req_Null) { +/* Return error generic when input configkeyval(req) to be duplicated is null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *req = NULL; + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.DupConfigKeyVal(okey, req, tbl)); +} +TEST_F(VlanMapTest, OkeyNotNull) { +/* Return error generic when output configkeyval(okey) is not null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr); + ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.DupConfigKeyVal(okey, req, tbl)); +} +TEST_F(VlanMapTest, req_invalid_keytype) { +/* Return error generic when input configkeyval(req) is invalid keytype */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr); + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.DupConfigKeyVal(okey, req, tbl)); +} +TEST_F(VlanMapTest, val_struct_Null) { +/* Return error generic when req val struct is Null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVlanMap, NULL); + ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, NULL, cfg_val); + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.DupConfigKeyVal(okey, req, tbl)); +} + +TEST_F(VlanMapTest, + req_valid_valNotNull_TblMaintblSuccess_valcheck) { +/* Return success after duplicating configkey */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + vlanmap_val->vlan_id = 0; + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.DupConfigKeyVal(okey, req, tbl)); +/* check if val struct of okey is been duplicated to req */ + val_vlan_map *output_vlmval = ZALLOC_TYPE(val_vlan_map); + EXPECT_EQ(0, output_vlmval->vlan_id); +} +TEST_F(VlanMapTest, + req_valid_valNotNull_TblMaintblSuccess_keycheck) { +/* Return success after duplicating configkey */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + MoMgrTables tbl = MAINTBL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.DupConfigKeyVal(okey, req, tbl)); +/* check if key struct of okey is been duplicated to req */ + key_vlan_map *output_vlmkey = + reinterpret_cast + (okey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(output_vlmkey-> + vbr_key.vtn_key.vtn_name)); +} +TEST_F(VlanMapTest, req_valid_valNotNull_TblRenametblSuccess) { +/* Return success after duplicating configkey when table is other than main + table */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *req = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + MoMgrTables tbl = RENAMETBL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.DupConfigKeyVal(okey, req, tbl)); +} +/*==========================*CopyToConfigKey*================================ */ +TEST_F(VlanMapTest, ikeyNull) { +/* Returning error generic when ikey is null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ikey = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.CopyToConfigKey(okey, ikey)); +} +TEST_F(VlanMapTest, ikey_getkeyNull) { +/* Returning error generic when ikey->get_key() is null */ + VlanMapMoMgr obj; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.CopyToConfigKey(okey, ikey)); +} +TEST_F(VlanMapTest, ikeyNotNull_Novtnname) { +/* Return error when there is no vtn name */ + VlanMapMoMgr obj; + key_rename_vnode_info_t *key_rename = ZALLOC_TYPE(key_rename_vnode_info_t); + + memcpy(&(key_rename->old_unc_vtn_name), "", kMaxLenVtnName); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, key_rename); + ConfigKeyVal *okey = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.CopyToConfigKey(okey, ikey)); +} +/*TEST_F(VlanMapTest, ikeyNotNull_copyvtnname) { + Return success after copytoconfig key is done + VlanMapMoMgr obj; + key_rename_vnode_info_t *key_rename = ZALLOC_TYPE(key_rename_vnode_info_t); + + memcpy(&(key_rename->old_unc_vtn_name), "VTN", kMaxLenVtnName); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, key_rename); + ConfigKeyVal *okey = NULL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.CopyToConfigKey(okey, ikey)); + // check if config key is copied to okey + key_vlan_map *output_vlmkey = + reinterpret_cast + (okey->get_key()); + EXPECT_STREQ("VTN", + reinterpret_cast(output_vlmkey-> + vbr_key.vtn_key.vtn_name)); +}*/ +TEST_F(VlanMapTest, ikeyNotNull_no_vnodename) { +/* Return error when vnodename is not present */ + VlanMapMoMgr obj; + key_rename_vnode_info_t *key_rename = ZALLOC_TYPE(key_rename_vnode_info_t); + + memcpy(&(key_rename->old_unc_vnode_name), "", kMaxLenVnodeName); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, key_rename); + ConfigKeyVal *okey = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.CopyToConfigKey(okey, ikey)); +} + +/*TEST_F(VlanMapTest, ikeyNotNull_copyvnodename) { + Return success after copytoconfig key is done + VlanMapMoMgr obj; + key_rename_vnode_info_t *key_rename = ZALLOC_TYPE(key_rename_vnode_info_t); + +// memcpy(&(key_rename->old_unc_vtn_name), "VTN", kMaxLenVtnName); + memcpy(&(key_rename->old_unc_vnode_name), "VBRIDGE", kMaxLenVnodeName); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, key_rename); + ConfigKeyVal *okey = NULL; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.CopyToConfigKey(okey, ikey)); +// check if config key is copied to okey vnode name + key_vlan_map *output_vlmkey = + reinterpret_cast + (okey->get_key()); + EXPECT_STREQ("VBRIDGE", + reinterpret_cast(output_vlmkey-> + vbr_key.vbridge_name)); +// EXPECT_STREQ("", + reinterpret_cast(output_vlmkey-> + // vbr_key.vtn_key.vtn_name)); +}*/ +/*============================*GetControllerId*============================ */ + +TEST_F(VlanMapTest, Keytype_Notvalid) { +/* Return Null when keytype is not valid */ + VlanMapMoMgr obj; + ConfigKeyVal *ck_vbr = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + DalDmlIntf *dmi(getDalDmlIntf()); + EXPECT_STREQ(NULL, + reinterpret_cast + (obj.GetControllerId(ck_vbr, dt_type, dmi))); +} +TEST_F(VlanMapTest, Keytype_valid_ReadDb_error) { +/* Return Null when keytype is valid but ReadConfigDb returns error */ + + VlanmapStub obj; + ConfigKeyVal *ck_vbr = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr); + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + DalDmlIntf *dmi(getDalDmlIntf()); + VlanmapStub::stub_result[ReadConfigDB1] = UPLL_RC_ERR_GENERIC; + EXPECT_STREQ(NULL, + reinterpret_cast + (obj.GetControllerId(ck_vbr, dt_type, dmi))); +} +TEST_F(VlanMapTest, Keytype_valid_ReadDb_Success_valNull) { +/* Return Null when keytype is valid, ReadConfigDb returns Success + but val is Null */ + + VlanmapStub obj; + ConfigKeyVal *ck_vbr = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr); + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + DalDmlIntf *dmi(getDalDmlIntf()); + VlanmapStub::stub_result[ReadConfigDB1] = UPLL_RC_SUCCESS; + EXPECT_STREQ(NULL, + reinterpret_cast + (obj.GetControllerId(ck_vbr, dt_type, dmi))); +} +TEST_F(VlanMapTest, Keytype_valid_ReadDb_Success_valNotNull) { +/* Return controllerid when keytype is valid, ReadconfigDb returns success + when val is ot null */ + + VlanmapStub obj; + val_vbr *vbr_val = ZALLOC_TYPE(val_vbr); + ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVbr, vbr_val); + ConfigKeyVal *ck_vbr = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, NULL, cfg_val); + strncpy(reinterpret_cast(vbr_val->controller_id), "CONTROLLER", + kMaxLenCtrlrId); + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + DalDmlIntf *dmi(getDalDmlIntf()); + VlanmapStub::stub_result[ReadConfigDB1] = UPLL_RC_SUCCESS; + EXPECT_STREQ(NULL, + reinterpret_cast + (obj.GetControllerId(ck_vbr, dt_type, dmi))); +} +/*====================*ValidateAttribute*=================================== */ +TEST_F(VlanMapTest, iKey_NULL) { +/* Return error when ikey is null */ + VlanMapMoMgr obj; + ConfigKeyVal *ikey = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + IPC_REQ_RESP_HEADER_DECL(req); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateAttribute(ikey, dmi, req)); +} +TEST_F(VlanMapTest, iKey_getkeytype_Invalid) { +/* Return error when jeytype is not vbr_vlanmap */ + VlanMapMoMgr obj; + DalDmlIntf *dmi(getDalDmlIntf()); + IPC_REQ_RESP_HEADER_DECL(req); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateAttribute(ikey, dmi, req)); +} +TEST_F(VlanMapTest, iKey_val_struct_Null) { +/* Return error when ikey val is null */ + VlanMapMoMgr obj; + DalDmlIntf *dmi(getDalDmlIntf()); + IPC_REQ_RESP_HEADER_DECL(req); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, obj.ValidateAttribute(ikey, dmi, req)); +} +TEST_F(VlanMapTest, iKey_valid_struct_readconfg_success) { +/* Return success when ikey is not null and valid struct and + readDb is success for 2 records */ + + VlanmapStub obj; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + IPC_REQ_RESP_HEADER_DECL(req); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN1", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT1", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; + VlanmapStub::stub_result[ReadConfigDB1] = UPLL_RC_SUCCESS; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateAttribute(ikey, dmi, req)); +} +TEST_F(VlanMapTest, ReadConfigDb_read_error) { +/* Return success when readconfigdb returns error */ + VlanmapStub obj; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + IPC_REQ_RESP_HEADER_DECL(req); + ConfigVal *tmp = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, tmp); + strncpy(reinterpret_cast(vlanmap_key->vbr_key.vtn_key.vtn_name), + "VTN", kMaxLenVtnName); + strncpy(reinterpret_cast(vlanmap_key->logical_port_id), + "PORT", kMaxLenLogicalPortId); + vlanmap_key->logical_port_id_valid =PFC_TRUE; + VlanmapStub::stub_result[ReadConfigDB1] = UPLL_RC_ERR_NO_SUCH_INSTANCE; + EXPECT_EQ(UPLL_RC_SUCCESS, obj.ValidateAttribute(ikey, dmi, req)); +} + +/* ============================*ValidateCapability*========================== */ + +TEST_F(VlanMapTest, req_Null1) { +/* Return error generic when req is null */ + VlanMapMoMgr obj; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, obj.ValidateCapability(NULL, NULL, NULL)); +} +TEST_F(VlanMapTest, ikey_Null) { +/* Return error generic when ikey is null */ + VlanMapMoMgr obj; + const char * ctrlr_name = NULL; + IPC_REQ_RESP_HEADER_DECL(req); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValidateCapability(req, NULL, ctrlr_name)); +} +TEST_F(VlanMapTest, ikey_getkey_Null) { +/* Return error generic when ikey_getkey is null */ + VlanMapMoMgr obj; + const char * ctrlr_name = NULL; + IPC_REQ_RESP_HEADER_DECL(req); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValidateCapability(req, ikey, ctrlr_name)); +} +TEST_F(VlanMapTest, OpCreate_DtCandidate) { +/*Return success when op is create and dt is candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_CREATE; + req->datatype = UPLL_DT_CANDIDATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} + +TEST_F(VlanMapTest, OpCreate_DtCandidate_attrcheckfail) { + /* Return error when attribute support check fail for attrs::vlanid is zero */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_CREATE; + req->datatype = UPLL_DT_CANDIDATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 440; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 0; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpCreate_DtOthers) { +/* Return error when op is create and dt is other than candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_CREATE; + req->datatype = UPLL_DT_IMPORT; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + const char* cntrlr_name("cntrlr_name"); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpUpdate_DtCandidate) { +/* Return success when op is update and dt is candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_UPDATE; + req->datatype = UPLL_DT_CANDIDATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_UPDATE_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpUpdate_DtCandidate_attrcheckfail) { +/* Return error when attribute support check fail for attrs::vlanid is zero */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_UPDATE; + req->datatype = UPLL_DT_CANDIDATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 0; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_UPDATE_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpUpdate_DtOthers) { +/* Return error when op is update and dt is other than candidate */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_UPDATE; + req->datatype = UPLL_DT_IMPORT; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + const char* cntrlr_name("cntrlr_name"); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpRead_DtCandidate) { +/* Return success when op is read and dt is candidate and option 1 and 2 + are valid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpRead_DtCandidate_Opt1_invalid) { +/* Return error option1 when op is read, dt is candidate and opt1 is invalid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_DETAIL; + req->option2 = UNC_OPT2_NONE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpRead_DtCandidate_Opt2_Invalid) { +/*Return error opt2 when op is read, dt is candidate and opt2 is invalid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_L2DOMAIN; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpReadSibling_dtStartup_opts_valid) { +/* Return succes when op is read sibling, dt is startup and + options are valid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_READ_SIBLING; + req->datatype = UPLL_DT_STARTUP; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpReadSiblingbegin_Dtstate_Opts_Valid) { +/* Return Success when op is read sibling begin, dt is state and options + are valid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_READ_SIBLING_BEGIN; + req->datatype = UPLL_DT_STATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVlanMap, vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, cfg_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, Opreadsiblingcount_dtRunning_opts_Valid) { +/* Return Success when op is readsibling count, dt is running and options + are valid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_READ_SIBLING_COUNT; + req->datatype = UPLL_DT_RUNNING; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 0; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OPRead_DtImport_opts_valid) { +/* Return error when op is read and dt is import and options are valid */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_READ; + req->datatype = UPLL_DT_IMPORT; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, true); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +TEST_F(VlanMapTest, OpRename_Dtcandidate_Opts_valid) { +/* Return error when op is others */ + VlanMapMoMgr obj; + IPC_REQ_RESP_HEADER_DECL(req); + req->operation = UNC_OP_RENAME; + req->datatype = UPLL_DT_CANDIDATE; + req->option1 = UNC_OPT1_NORMAL; + req->option2 = UNC_OPT2_NONE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->vlan_id = 567; // between 1 and 4095 + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + key_vlan_map *vlanmap_key = ZALLOC_TYPE(key_vlan_map); + ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVlanMap, + vlanmap_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_VLANMAP, + IpctSt::kIpcStKeyVlanMap, vlanmap_key, config_val); + CapaModuleStub::stub_clearStubData(); + uint32_t max_instance_count = 3; + uint32_t num_attrs = 0; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + const char* cntrlr_name("cntrlr_name"); + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + CapaModuleStub::stub_loadCapaModule(); + CapaModuleStub::stub_setCreatecapaParameters(max_instance_count, + &num_attrs, attrs); + CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_READ_CAPABILITY, + true); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValidateCapability(req, ikey, cntrlr_name)); +} +/* ============================*FilterAttributes*============================ */ +TEST(VlanMapMoMgr_FilterAttributes, update_auditstatus_test) { + VlanMapMoMgr obj; + pfc_log_set_level(PFC_LOGLVL_VERBOSE); + + pfcdrv_val_vlan_map_t *vlanmap_val1 = + reinterpret_cast + (malloc(sizeof(pfcdrv_val_vlan_map_t))); + vlanmap_val1->vm.vlan_id = 567; // between 1 and 4095 + vlanmap_val1->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + pfcdrv_val_vlan_map_t *vlanmap_val2 = + reinterpret_cast + (malloc(sizeof(pfcdrv_val_vlan_map_t))); + vlanmap_val2->vm.vlan_id = 567; // between 1 and 4095 + vlanmap_val2->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + + void *ptr = + reinterpret_cast(vlanmap_val1); + EXPECT_EQ(true, obj.FilterAttributes((*&ptr), (void*)vlanmap_val2, + false, UNC_OP_UPDATE)); + pfcdrv_val_vlan_map_t *drv_val_vlan_map1 = + reinterpret_cast(ptr); + val_vlan_map_t *val_vlan_map1 = &(drv_val_vlan_map1->vm); + + EXPECT_EQ(UNC_VF_VALUE_NOT_MODIFIED, + val_vlan_map1->valid[UPLL_IDX_VLAN_ID_VM]); + free(vlanmap_val1); free(vlanmap_val2); +} + +TEST(VlanMapMoMgr_FilterAttributes, update_auditstatus_valid) { + VlanMapMoMgr obj; + pfc_log_set_level(PFC_LOGLVL_VERBOSE); + + pfcdrv_val_vlan_map_t *vlanmap_val1 = + reinterpret_cast + (malloc(sizeof(pfcdrv_val_vlan_map_t))); + vlanmap_val1->vm.vlan_id = 567; // between 1 and 4095 + vlanmap_val1->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + pfcdrv_val_vlan_map_t *vlanmap_val2 = + reinterpret_cast + (malloc(sizeof(pfcdrv_val_vlan_map_t))); + vlanmap_val2->vm.vlan_id = 1; // between 1 and 4095 + vlanmap_val2->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + + void *ptr = + reinterpret_cast(vlanmap_val1); + EXPECT_FALSE(obj.FilterAttributes((*&ptr), (void*)vlanmap_val2, + false, UNC_OP_UPDATE)); + pfcdrv_val_vlan_map_t *drv_val_vlan_map1 = + reinterpret_cast(ptr); + val_vlan_map_t *val_vlan_map1 = &(drv_val_vlan_map1->vm); + + EXPECT_EQ(UNC_VF_VALID, val_vlan_map1->valid[UPLL_IDX_VLAN_ID_VM]); + free(vlanmap_val1); free(vlanmap_val2); +} + +TEST(VlanMapMoMgr_FilterAttributes, create_auditstatus_valid) { + VlanMapMoMgr obj; + pfc_log_set_level(PFC_LOGLVL_VERBOSE); + + pfcdrv_val_vlan_map_t *vlanmap_val1 = + reinterpret_cast + (malloc(sizeof(pfcdrv_val_vlan_map_t))); + vlanmap_val1->vm.vlan_id = 567; // between 1 and 4095 + vlanmap_val1->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + pfcdrv_val_vlan_map_t *vlanmap_val2 = + reinterpret_cast + (malloc(sizeof(pfcdrv_val_vlan_map_t))); + vlanmap_val2->vm.vlan_id = 1; // between 1 and 4095 + vlanmap_val2->vm.valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + + void *ptr = + reinterpret_cast(vlanmap_val1); + EXPECT_FALSE(obj.FilterAttributes((*&ptr), (void*)vlanmap_val2, + false, UNC_OP_CREATE)); + pfcdrv_val_vlan_map_t *drv_val_vlan_map1 = + reinterpret_cast(ptr); + val_vlan_map_t *val_vlan_map1 = &(drv_val_vlan_map1->vm); + + EXPECT_EQ(UNC_VF_VALID, val_vlan_map1->valid[UPLL_IDX_VLAN_ID_VM]); + free(vlanmap_val1); free(vlanmap_val2); +} + +/* =============================*CompareValidValue*========================== */ + +TEST_F(VlanMapTest, auditstatus_true) { + /*Check if valid flags are set to valid no vlaue when audit status is true */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val1 = ZALLOC_TYPE(val_vlan_map); + vlanmap_val1->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_INVALID; + val_vlan_map *vlanmap_val2 = ZALLOC_TYPE(val_vlan_map); + vlanmap_val2->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + void *ptr = + reinterpret_cast(vlanmap_val1); + obj.CompareValidValue((*&ptr), (void*)vlanmap_val2, true); + EXPECT_EQ(UNC_VF_INVALID, vlanmap_val1->valid[UPLL_IDX_VLAN_ID_VM]); +} +TEST_F(VlanMapTest, auditstatus_false) { + /*Check if valid flags are set to valid no vlaue when audit status is true */ + VlanMapMoMgr obj; + val_vlan_map *vlanmap_val1 = ZALLOC_TYPE(val_vlan_map); + vlanmap_val1->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_INVALID; + vlanmap_val1->vlan_id = 567; // between 1 and 4095 + val_vlan_map *vlanmap_val2 = ZALLOC_TYPE(val_vlan_map); + vlanmap_val2->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + vlanmap_val2->vlan_id = 3454; // between 1 and 4095 + void *ptr = + reinterpret_cast(vlanmap_val1); + obj.CompareValidValue((*&ptr), (void*)vlanmap_val2, true); + EXPECT_EQ(UNC_VF_INVALID, vlanmap_val1->valid[UPLL_IDX_VLAN_ID_VM]); +} +/* ===================*ValVlanmapAttributeSupportCheck==================== */ + +TEST_F(VlanMapTest, VLANID_IS_VALID) { + VlanMapMoMgr obj; + unc_keytype_operation_t operation =UNC_OP_CREATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, operation)); +} + +TEST_F(VlanMapTest, VLANID_IS_VALID_NO_VALUE) { + VlanMapMoMgr obj; + unc_keytype_operation_t operation =UNC_OP_CREATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 1; + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, operation)); +} + +TEST_F(VlanMapTest, capa_vlan_id_zero_op_create) { + VlanMapMoMgr obj; + unc_keytype_operation_t operation =UNC_OP_CREATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 0; + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, operation)); +} +TEST_F(VlanMapTest, capa_vlan_id_zero_op_update) { + VlanMapMoMgr obj; + unc_keytype_operation_t operation =UNC_OP_UPDATE; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 0; + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + obj.ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, operation)); +} +TEST_F(VlanMapTest, capa_vlan_id_zero_op_read) { + VlanMapMoMgr obj; + unc_keytype_operation_t operation =UNC_OP_READ; + val_vlan_map *vlanmap_val = ZALLOC_TYPE(val_vlan_map); + vlanmap_val->valid[UPLL_IDX_VLAN_ID_VM] = UNC_VF_VALID_NO_VALUE; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 0; + EXPECT_EQ(UPLL_RC_SUCCESS, + obj.ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, operation)); +} +TEST_F(VlanMapTest, val_vlan_NULL) { + VlanMapMoMgr obj; + unc_keytype_operation_t operation =UNC_OP_READ; + val_vlan_map *vlanmap_val = NULL; + uint8_t attrs[1]; + attrs[unc::capa::vlan_map::kCapVlanId] = 0; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + obj.ValVlanmapAttributeSupportCheck(vlanmap_val, attrs, operation)); +} +/* =========================*IsReferenced*============================= */ +// Function not implemeted + +TEST_F(VlanMapTest, return_success) { + VlanMapMoMgr obj; + ConfigKeyVal *ikey = NULL; + upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; + DalDmlIntf *dmi = NULL; +EXPECT_EQ(UPLL_RC_SUCCESS, obj.IsReferenced(ikey, dt_type, dmi)); +} + diff --git a/coordinator/test/modules/upll/ut/vtn_momgr_ut.cc b/coordinator/test/modules/upll/ut/vtn_momgr_ut.cc index a85e2798..3ec7f115 100644 --- a/coordinator/test/modules/upll/ut/vtn_momgr_ut.cc +++ b/coordinator/test/modules/upll/ut/vtn_momgr_ut.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include "ut_util.hh" using ::testing::InitGoogleTest; @@ -40,12 +41,10 @@ namespace upll { namespace kt_momgr { class VtnMoMgrTest - : public UpllTestEnv -{ + : public UpllTestEnv { }; -static void GetKeyStruct(key_vtn *&kst) -{ +static void GetKeyStruct(key_vtn *&kst) { const char *vtn_name = "VTN_1"; kst = ZALLOC_TYPE(key_vtn); @@ -53,64 +52,61 @@ static void GetKeyStruct(key_vtn *&kst) vtn_name, strlen(vtn_name)+1); } -static void GetKeyValStruct(key_vtn *&kst, val_vtn *&vst) -{ +static void GetKeyValStruct(key_vtn *&kst, val_vtn *&vst) { GetKeyStruct(kst); const char *desc = "thisisvbridge"; vst = ZALLOC_TYPE(val_vtn); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ - sizeof(vst->valid[0]); ++loop) { - vst->valid[loop] = UNC_VF_VALID; + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ + sizeof(vst->valid[0]); ++loop) { + vst->valid[loop] = UNC_VF_VALID; } vst->cs_row_status = UNC_VF_VALID; for(unsigned int loop = 0; loop < sizeof(vst->valid)/ - sizeof(vst->valid[0]); ++loop) { - vst->cs_attr[loop] = UNC_CS_APPLIED; + sizeof(vst->valid[0]); ++loop) { + vst->cs_attr[loop] = UNC_CS_APPLIED; } strncpy(reinterpret_cast(vst->description), desc, strlen(desc)+1); } - -static void GetKeyValStructSt(key_vtn *&kst, val_vtn_st *&vst) -{ +static void GetKeyValStructSt(key_vtn *&kst, val_vtn_st *&vst) { const char *vtn_name = "VTN_1"; - //const char *desc = "thisisvbridge"; + // const char *desc = "thisisvbridge"; kst = ZALLOC_TYPE(key_vtn); strncpy(reinterpret_cast(kst->vtn_name), vtn_name, strlen(vtn_name)+1); vst = ZALLOC_TYPE(val_vtn_st); - for(unsigned int loop = 0; loop < sizeof(vst->valid)/ - sizeof(vst->valid[0]); ++loop) { - vst->valid[loop] = UNC_VF_VALID; + for (unsigned int loop = 0; loop < sizeof(vst->valid)/ + sizeof(vst->valid[0]); ++loop) { + vst->valid[loop] = UNC_VF_VALID; } } static void createControllerInfo(const char* cntrlr_name, upll_keytype_datatype_t data_type, - unc_keytype_ctrtype_t cntrl_type) -{ - const char* version("version"); - CtrlrMgr::Ctrlr ctrl(cntrlr_name,cntrl_type,version); - CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl,data_type)); - CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); + unc_keytype_ctrtype_t cntrl_type) { + const char* version("version"); + CtrlrMgr::Ctrlr ctrl(cntrlr_name, cntrl_type, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, data_type)); + CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); } /* GetRenameKeyBindInfo() */ -// Passing NULL +// Passing NULL TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_outputNull) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); unc_key_type_t key_type = UNC_KT_VTN; BindInfo *bin = NULL; int nattr = 2; - //MoMgrTables tbl; + // MoMgrTables tbl; EXPECT_TRUE(vtn.GetRenameKeyBindInfo(key_type, bin, nattr, MAINTBL)); } -// Verify the nattr is filled with proper value +// Verify the nattr is filled with proper value TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_nattrFill) { VtnMoMgr vtn; unc_key_type_t key_type = UNC_KT_VTN; @@ -120,8 +116,7 @@ TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_nattrFill) { EXPECT_TRUE(vtn.GetRenameKeyBindInfo(key_type, bin, nattr, MAINTBL)); EXPECT_EQ(3, nattr); } - -// Passing controller table to the function +// Passing controller table to the function TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_ctrlTbl) { VtnMoMgr vtn; unc_key_type_t key_type = UNC_KT_VTN; @@ -132,7 +127,7 @@ TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_ctrlTbl) { EXPECT_EQ(3, nattr); } -// Passing rename table to the function +// Passing rename table to the function TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_renameTbl) { VtnMoMgr vtn; unc_key_type_t key_type = UNC_KT_VTN; @@ -143,7 +138,7 @@ TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_renameTbl) { EXPECT_EQ(2, nattr); } -// Passing rename table to the function +// Passing rename table to the function TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_novtnkey) { VtnMoMgr vtn; unc_key_type_t key_type = UNC_KT_VBRIDGE; @@ -154,45 +149,52 @@ TEST_F(VtnMoMgrTest, GetRenameKeyBindInfo_novtnkey) { } /* ValidateAttribute() */ -// Passing null value to the function +// Passing null value to the function TEST_F(VtnMoMgrTest, ValidateAttribute_nullkey) { VtnMoMgr vtn; ConfigKeyVal *ikey = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateAttribute(ikey, dmi)); //Bug 217 + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateAttribute(ikey, dmi)); // Bug 217 } -// Passing vtn key type to the function +// Passing vtn key type to the function TEST_F(VtnMoMgrTest, ValidateAttribute_keyVtn) { VtnMoMgr vtn; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateAttribute(ikey, dmi)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateAttribute(ikey, dmi)); delete ikey; } -// Passing other key type to the function +// Passing other key type to the function TEST_F(VtnMoMgrTest, ValidateAttribute_keyVtep) { VtnMoMgr vtn; DalDmlIntf *dmi(getDalDmlIntf()); key_vtep_t *keyVtep(ZALLOC_TYPE(key_vtep_t)); val_vtep_t *valVtep(ZALLOC_TYPE(val_vtep_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtep, valVtep); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtep, valVtep); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTEP, IpctSt::kIpcStKeyVtep, keyVtep, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateAttribute(ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateAttribute(ikey, dmi)); delete ikey; } -// Passing NULL key to the function +// Passing NULL key to the function TEST_F(VtnMoMgrTest, IsValidKey_keyNull) { VtnMoMgr vtn; key_vtn_t *keyvtn = NULL; @@ -200,7 +202,7 @@ TEST_F(VtnMoMgrTest, IsValidKey_keyNull) { EXPECT_FALSE(vtn.IsValidKey(keyvtn, index)); } -// Passing the vtn name to the function +// Passing the vtn name to the function TEST_F(VtnMoMgrTest, IsValidKey_vtnName) { VtnMoMgr vtn; unsigned long index = 0; @@ -210,7 +212,7 @@ TEST_F(VtnMoMgrTest, IsValidKey_vtnName) { free(keyvtn); } -// To test the maximum length of vtn name using the function +// To test the maximum length of vtn name using the function TEST_F(VtnMoMgrTest, IsValidKey_vtnNameMax) { VtnMoMgr vtn; unsigned long index = 0; @@ -221,7 +223,7 @@ TEST_F(VtnMoMgrTest, IsValidKey_vtnNameMax) { free(keyvtn); } -// To test the minimum length of vtn name using the function +// To test the minimum length of vtn name using the function TEST_F(VtnMoMgrTest, IsValidKey_vtnNameMin) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); @@ -231,7 +233,7 @@ TEST_F(VtnMoMgrTest, IsValidKey_vtnNameMin) { free(keyvtn); } -// To test exceeding the maximum length of vtn name using the function +// To test exceeding the maximum length of vtn name using the function TEST_F(VtnMoMgrTest, IsValidKey_vtnNameMaxExceeds) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_ARRAY(key_vtn_t, 2)); @@ -242,7 +244,7 @@ TEST_F(VtnMoMgrTest, IsValidKey_vtnNameMaxExceeds) { free(keyvtn); } -// To test the empty name of vtn name using the function +// To test the empty name of vtn name using the function TEST_F(VtnMoMgrTest, IsValidKey_vtnNameEmpty) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); @@ -253,7 +255,7 @@ TEST_F(VtnMoMgrTest, IsValidKey_vtnNameEmpty) { } /* GetValid() */ -// Passing NULL to the function +// Passing NULL to the function TEST_F(VtnMoMgrTest, GetValid_nullValue) { VtnMoMgr vtn; void *val = NULL; @@ -262,11 +264,12 @@ TEST_F(VtnMoMgrTest, GetValid_nullValue) { uint8_t *compare_valid = NULL; upll_keytype_datatype_t dtType = UPLL_DT_STATE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); EXPECT_EQ(compare_valid, valid); } -// Passing operstatus to the function +// Passing operstatus to the function TEST_F(VtnMoMgrTest, GetValid_operStatus) { VtnMoMgr vtn; void *val = NULL; @@ -278,11 +281,12 @@ TEST_F(VtnMoMgrTest, GetValid_operStatus) { vtn_valst->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(vtn_valst)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); free(vtn_valst); } -// Passing alarmstatus to the function +// Passing alarmstatus to the function TEST_F(VtnMoMgrTest, GetValid_alarmStatus) { VtnMoMgr vtn; void *val = NULL; @@ -294,11 +298,12 @@ TEST_F(VtnMoMgrTest, GetValid_alarmStatus) { vtn_valst->valid[UPLL_IDX_ALARM_STATUS_VS] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(vtn_valst)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); free(vtn_valst); } -// Passing creationTime to the function +// Passing creationTime to the function TEST_F(VtnMoMgrTest, GetValid_creationTime) { VtnMoMgr vtn; void *val = NULL; @@ -310,11 +315,12 @@ TEST_F(VtnMoMgrTest, GetValid_creationTime) { vtn_valst->valid[UPLL_IDX_CREATION_TIME_VS] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(vtn_valst)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); free(vtn_valst); } -// Passing lastUpdatedTime to the function +// Passing lastUpdatedTime to the function TEST_F(VtnMoMgrTest, GetValid_lastUpdatedTime) { VtnMoMgr vtn; void *val = NULL; @@ -326,11 +332,12 @@ TEST_F(VtnMoMgrTest, GetValid_lastUpdatedTime) { vtn_valst->valid[UPLL_IDX_LAST_UPDATE_TIME_VS] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(vtn_valst)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); free(vtn_valst); } -// Passing vtnName to the function +// Passing vtnName to the function TEST_F(VtnMoMgrTest, GetValid_vtnName) { VtnMoMgr vtn; void *val = NULL; @@ -342,11 +349,12 @@ TEST_F(VtnMoMgrTest, GetValid_vtnName) { val_vtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(val_vtn)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); free(val_vtn); } -// Passing creationTime with DT_CANDIDATE to the function +// Passing creationTime with DT_CANDIDATE to the function TEST_F(VtnMoMgrTest, GetValid_creationTimeDtCandidate) { VtnMoMgr vtn; void *val = NULL; @@ -358,11 +366,12 @@ TEST_F(VtnMoMgrTest, GetValid_creationTimeDtCandidate) { vtn_valst->valid[UPLL_IDX_CREATION_TIME_VS] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(vtn_valst)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); free(vtn_valst); } -// Passing description to the function +// Passing description to the function TEST_F(VtnMoMgrTest, GetValid_description) { VtnMoMgr vtn; void *val = NULL; @@ -374,11 +383,12 @@ TEST_F(VtnMoMgrTest, GetValid_description) { val_vtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(val_vtn)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, MAINTBL)); free(val_vtn); } -// Passing description to the function +// Passing description to the function TEST_F(VtnMoMgrTest, GetValid_descriptionRenameTbl) { VtnMoMgr vtn; void *val = NULL; @@ -390,11 +400,12 @@ TEST_F(VtnMoMgrTest, GetValid_descriptionRenameTbl) { val_vtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(val_vtn)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, RENAMETBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, RENAMETBL)); free(val_vtn); } -// Passing description to the function +// Passing description to the function TEST_F(VtnMoMgrTest, GetValid_descriptionCtrlrTbl) { VtnMoMgr vtn; void *val = NULL; @@ -406,11 +417,12 @@ TEST_F(VtnMoMgrTest, GetValid_descriptionCtrlrTbl) { val_vtn_ctrlr->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(val_vtn_ctrlr)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetValid(val, index, valid, dtType, CTRLRTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetValid(val, index, valid, dtType, CTRLRTBL)); free(val_vtn_ctrlr); } -// Passing alarmstatus to the function +// Passing alarmstatus to the function TEST_F(VtnMoMgrTest, GetValid_alarmStatusCtrlrTbl) { VtnMoMgr vtn; void *val = NULL; @@ -422,11 +434,12 @@ TEST_F(VtnMoMgrTest, GetValid_alarmStatusCtrlrTbl) { vtn_valst->valid[UPLL_IDX_ALARM_STATUS_VS] = UNC_VF_VALID; val = reinterpret_cast(vtn_valst); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, CTRLRTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, CTRLRTBL)); free(vtn_valst); } -// Passing operstatus to the function +// Passing operstatus to the function TEST_F(VtnMoMgrTest, GetValid_operStatusCtrlrTbl) { VtnMoMgr vtn; void *val = NULL; @@ -438,34 +451,37 @@ TEST_F(VtnMoMgrTest, GetValid_operStatusCtrlrTbl) { val_rename_vtn->valid[UPLL_IDX_OPER_STATUS_VS] = UNC_VF_VALID; val = reinterpret_cast(reinterpret_cast(val_rename_vtn)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetValid(val, index, valid, dtType, CTRLRTBL)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetValid(val, index, valid, dtType, CTRLRTBL)); free(val_rename_vtn); } /* AllocVal() */ -//Passing empty configval +// Passing empty configval TEST_F(VtnMoMgrTest, AllocVal_emptyval) { VtnMoMgr vtn; ConfigVal *cfg_val = NULL; upll_keytype_datatype_t dtType = UPLL_DT_CANDIDATE; - MoMgrTables tbl=MAINTBL; + MoMgrTables tbl = MAINTBL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.AllocVal(cfg_val, dtType, tbl)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.AllocVal(cfg_val, dtType, tbl)); delete cfg_val; } -// Passing configval to the function +// Passing configval to the function TEST_F(VtnMoMgrTest, AllocVal_invalidObj) { VtnMoMgr vtn; val_vtn_t *val_vtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVtnSt, val_vtn);//Invalid st_num + ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVtnSt, val_vtn); // Invalid st_num upll_keytype_datatype_t dtType = UPLL_DT_RUNNING; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.AllocVal(cfg_val, dtType, MAINTBL)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.AllocVal(cfg_val, dtType, MAINTBL)); delete cfg_val; } -// Passing DT_RUNNING to the function +// Passing DT_RUNNING to the function TEST_F(VtnMoMgrTest, AllocVal_valVtnMaintbl) { VtnMoMgr vtn; upll_keytype_datatype_t dtType = UPLL_DT_RUNNING; @@ -473,11 +489,12 @@ TEST_F(VtnMoMgrTest, AllocVal_valVtnMaintbl) { val_vtn_t *val_vtn(ZALLOC_TYPE(val_vtn_t)); ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.AllocVal(cfg_val, dtType, MAINTBL));//Need to analyse + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.AllocVal(cfg_val, dtType, MAINTBL));// Need to analyse delete cfg_val; } -// Passing DT_STATE to the function +// Passing DT_STATE to the function TEST_F(VtnMoMgrTest, AllocVal_valVtnStMaintbl) { VtnMoMgr vtn; upll_keytype_datatype_t dtType = UPLL_DT_STATE; @@ -485,21 +502,23 @@ TEST_F(VtnMoMgrTest, AllocVal_valVtnStMaintbl) { val_db_vtn_st *vtn_valst(ZALLOC_TYPE(val_db_vtn_st)); ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcStValVtnSt, vtn_valst); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.AllocVal(cfg_val, dtType, MAINTBL)); //Need to analyse + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.AllocVal(cfg_val, dtType, MAINTBL)); // Need to analyse delete cfg_val; } -// Passing RENAMETBL to the function +// Passing RENAMETBL to the function TEST_F(VtnMoMgrTest, AllocVal_valRenametbl) { VtnMoMgr vtn; upll_keytype_datatype_t dtType = UPLL_DT_CANDIDATE; MoMgrTables tbl = RENAMETBL; - ConfigVal *config_val=NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.AllocVal(config_val, dtType, tbl));//Need to analyse + ConfigVal *config_val = NULL; + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.AllocVal(config_val, dtType, tbl));// Need to analyse delete config_val; } -// Passing CTRLRTBL to the function +// Passing CTRLRTBL to the function TEST_F(VtnMoMgrTest, AllocVal_valCtrlrtbl) { VtnMoMgr vtn; upll_keytype_datatype_t dtType = UPLL_DT_CANDIDATE; @@ -507,7 +526,8 @@ TEST_F(VtnMoMgrTest, AllocVal_valCtrlrtbl) { val_vtn_ctrlr_t *val_vtn_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); ConfigVal *cfg_val = new ConfigVal(IpctSt::kIpcInvalidStNum, val_vtn_ctrlr); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.AllocVal(cfg_val, dtType, tbl)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.AllocVal(cfg_val, dtType, tbl)); delete cfg_val; } @@ -517,62 +537,72 @@ TEST_F(VtnMoMgrTest, AllocVal_Error_defaultcase) { MoMgrTables tbl = MAX_MOMGR_TBLS; ConfigVal *cfg_val = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.AllocVal(cfg_val, dtType, tbl)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.AllocVal(cfg_val, dtType, tbl)); delete cfg_val; } -// Passing empty val to the function +// Passing empty val to the function TEST_F(VtnMoMgrTest, DupConfigKeyValVtnMapping_EmptyReqval) { VtnMoMgr vtn; ConfigKeyVal *okey; - ConfigKeyVal *req=NULL; + ConfigKeyVal *req = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.DupConfigKeyValVtnMapping(okey, req));//Need to analyse + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.DupConfigKeyValVtnMapping(okey, req));// Need to analyse } -// Passing empty val to the function +// Passing empty val to the function TEST_F(VtnMoMgrTest, DupConfigKeyValVtnMapping_EmptyConfigval) { VtnMoMgr vtn; ConfigKeyVal *okey; - ConfigKeyVal *req=NULL; + ConfigKeyVal *req = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.DupConfigKeyValVtnMapping(okey, req));//Need to analyse + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.DupConfigKeyValVtnMapping(okey, req));// Need to analyse } TEST_F(VtnMoMgrTest, DupConfigKeyValVtnMapping_Configval) { VtnMoMgr vtn; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_vtn_controller_t *key(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st *val (ZALLOC_TYPE(val_vtn_mapping_controller_st)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnMappingControllerSt, val); + ConfigKeyVal *ikey = + new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.DupConfigKeyValVtnMapping(okey, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.DupConfigKeyValVtnMapping(okey, ikey)); delete okey; delete ikey; } -// Passing empty val to the function +// Passing empty val to the function TEST_F(VtnMoMgrTest, DupConfigKeyValVtnStation_EmptyReqval) { VtnMoMgr vtn; - ConfigKeyVal *okey=NULL; - ConfigKeyVal *req=NULL; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *req = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.DupConfigKeyValVtnStation(okey, req));//Need to analyse + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.DupConfigKeyValVtnStation(okey, req));// Need to analyse delete okey; delete req; } TEST_F(VtnMoMgrTest, DupConfigKeyValVtnStation_kIpcStIpv4) { VtnMoMgr vtn; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_vtn_controller_t *key(ZALLOC_TYPE(key_vtn_controller_t)); val_vtnstation_controller_st *val(ZALLOC_TYPE(val_vtnstation_controller_st)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStIpv4, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStIpv4, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key, config_val); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.DupConfigKeyValVtnStation(okey, ikey)); delete okey; @@ -581,12 +611,14 @@ TEST_F(VtnMoMgrTest, DupConfigKeyValVtnStation_kIpcStIpv4) { TEST_F(VtnMoMgrTest, DupConfigKeyValVtnStation_kIpcStIpv6) { VtnMoMgr vtn; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_vtn_controller_t *key(ZALLOC_TYPE(key_vtn_controller_t)); val_vtnstation_controller_st *val(ZALLOC_TYPE(val_vtnstation_controller_st)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStIpv6, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStIpv6, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key, config_val); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.DupConfigKeyValVtnStation(okey, ikey)); delete okey; @@ -598,17 +630,21 @@ TEST_F(VtnMoMgrTest, DupConfigKeyValVtnStation_okey_NOT_NULL) { key_vtn_controller_t *key(ZALLOC_TYPE(key_vtn_controller_t)); val_vtnstation_controller_st *val(ZALLOC_TYPE(val_vtnstation_controller_st)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStIpv4, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStIpv4, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key, config_val); key_vtn_controller_t *key1(UT_CLONE(key_vtn_controller_t, key)); - ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key1, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.DupConfigKeyValVtnStation(okey, ikey)); + ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key1, NULL); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.DupConfigKeyValVtnStation(okey, ikey)); delete ikey; delete okey; } -// Passing val2 as NULL to the function +// Passing val2 as NULL to the function TEST_F(VtnMoMgrTest, FilterAttributes_val2Null) { VtnMoMgr vtn; void *val1 = NULL; @@ -625,7 +661,7 @@ TEST_F(VtnMoMgrTest, FilterAttributes_val2Null) { free(valVtn1); } -// Passing audit_status as false to the function +// Passing audit_status as false to the function TEST_F(VtnMoMgrTest, FilterAttributes_auditStatus) { VtnMoMgr vtn; void *val1 = NULL; @@ -645,7 +681,7 @@ TEST_F(VtnMoMgrTest, FilterAttributes_auditStatus) { free(valVtn2); } -// Passing valid flag to the function +// Passing valid flag to the function TEST_F(VtnMoMgrTest, FilterAttributes_val1ValidFlag) { VtnMoMgr vtn; void *val1 = NULL; @@ -665,7 +701,7 @@ TEST_F(VtnMoMgrTest, FilterAttributes_val1ValidFlag) { free(valVtn2); } -// Passing valid flag with delete operation to the function +// Passing valid flag with delete operation to the function TEST_F(VtnMoMgrTest, FilterAttributes_val2ValidFlag) { VtnMoMgr vtn; void *val1 = NULL; @@ -685,102 +721,111 @@ TEST_F(VtnMoMgrTest, FilterAttributes_val2ValidFlag) { free(valVtn2); } -// Passing NULL to the function +// Passing NULL to the function TEST_F(VtnMoMgrTest, ValidateVtnKey_nullVal) { VtnMoMgr vtn; key_vtn_t *keyVtn = NULL; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnKey(keyVtn)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnKey(keyVtn)); } -// Testing the vtn name +// Testing the vtn name TEST_F(VtnMoMgrTest, ValidateVtnKey_properVal) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"vtn1"); + strcpy((char*)keyvtn->vtn_name, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnKey(keyvtn)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnKey(keyvtn)); free(keyvtn); } -// Testing the vtn name with minimum value +// Testing the vtn name with minimum value TEST_F(VtnMoMgrTest, ValidateVtnKey_minVal) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"1"); + strcpy((char*)keyvtn->vtn_name, (const char *)"1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnKey(keyvtn)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnKey(keyvtn)); free(keyvtn); } -// Testing the vtn name with maximum value +// Testing the vtn name with maximum value TEST_F(VtnMoMgrTest, ValidateVtnKey_maxVal) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); pfc_strlcpy(reinterpret_cast(keyvtn->vtn_name), "vtnsddfkjlkssdklfjsdkladdassdd1", sizeof(keyvtn->vtn_name)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnKey(keyvtn)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnKey(keyvtn)); free(keyvtn); } -// Testing the vtn name with maximum value exceeds +// Testing the vtn name with maximum value exceeds TEST_F(VtnMoMgrTest, ValidateVtnKey_maxValExceeds) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_ARRAY(key_vtn_t, 2)); memcpy(keyvtn->vtn_name, "vtndfgdfddfrsdklfjsdklflsdsddfdfgdgfd1", sizeof(keyvtn->vtn_name)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnKey(keyvtn)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnKey(keyvtn)); free(keyvtn); } -// Testing the vtn name with empty value +// Testing the vtn name with empty value TEST_F(VtnMoMgrTest, ValidateVtnKey_emptyVal) { VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)""); + strcpy((char*)keyvtn->vtn_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnKey(keyvtn)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnKey(keyvtn)); free(keyvtn); } /* ValidateVtnValue() */ -// Passing NULL to the function +// Passing NULL to the function TEST_F(VtnMoMgrTest, ValidateVtnValue_invalidVal) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; uint32_t op = UNC_OP_CREATE; - strcpy((char*)valVtn->description,(const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnValue(valVtn, op)); //Bug 250 + strcpy((char*)valVtn->description, (const char *)""); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnValue(valVtn, op)); // Bug 250 free(valVtn); } -// Testing the vtn description +// Testing the vtn description TEST_F(VtnMoMgrTest, ValidateVtnValue_properVal) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); uint32_t op = UNC_OP_CREATE; valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; - strcpy((char*)valVtn->description,(const char *)"ashd l1"); + strcpy((char*)valVtn->description, (const char *)"ashd l1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with minimum value +// Testing the vtn description with minimum value TEST_F(VtnMoMgrTest, ValidateVtnValue_minVal) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); uint32_t op = UNC_OP_CREATE; valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; - strcpy((char*)valVtn->description,(const char *)"1"); + strcpy((char*)valVtn->description, (const char *)"1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with maximum value +// Testing the vtn description with maximum value TEST_F(VtnMoMgrTest, ValidateVtnValue_maxVal) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); @@ -789,11 +834,12 @@ TEST_F(VtnMoMgrTest, ValidateVtnValue_maxVal) { pfc_strlcpy(reinterpret_cast(valVtn->description), "vtnsddfkjlkssdklfjsdkladdassdd1", sizeof(valVtn->description)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with maximum value exceeds +// Testing the vtn description with maximum value exceeds TEST_F(VtnMoMgrTest, ValidateVtnValue_maxValExceeds) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_ARRAY(val_vtn_t, 2)); @@ -803,93 +849,101 @@ TEST_F(VtnMoMgrTest, ValidateVtnValue_maxValExceeds) { "vtndfgjjj;j;j;j;jjjjjjjjjdfddfrsdklfjsdklflsdsddfdfgdgfd1", sizeof(valVtn->description)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with empty value +// Testing the vtn description with empty value TEST_F(VtnMoMgrTest, ValidateVtnValue_emptyVal) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); uint32_t op = UNC_OP_CREATE; valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; - strcpy((char*)valVtn->description,(const char *)""); + strcpy((char*)valVtn->description, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with invalid flag +// Testing the vtn description with invalid flag TEST_F(VtnMoMgrTest, ValidateVtnValue_invalidFlag) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); uint32_t op = UNC_OP_CREATE; valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_INVALID; - strcpy((char*)valVtn->description,(const char *)"vtn1"); + strcpy((char*)valVtn->description, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with no value flag +// Testing the vtn description with no value flag TEST_F(VtnMoMgrTest, ValidateVtnValue_novalueFlagCreate) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); uint32_t op = UNC_OP_CREATE; valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID_NO_VALUE; - strcpy((char*)valVtn->description,(const char *)"vtn1"); + strcpy((char*)valVtn->description, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with no value flag +// Testing the vtn description with no value flag TEST_F(VtnMoMgrTest, ValidateVtnValue_novalueFlagUpdate) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); uint32_t op = UNC_OP_UPDATE; valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID_NO_VALUE; - strcpy((char*)valVtn->description,(const char *)"vtn1"); + strcpy((char*)valVtn->description, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn description with invalid flag +// Testing the vtn description with invalid flag TEST_F(VtnMoMgrTest, ValidateVtnValue_novalueFlagDelete) { VtnMoMgr vtn; val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); uint32_t op = UNC_OP_DELETE; valVtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID_NO_VALUE; - strcpy((char*)valVtn->description,(const char *)"vtn1"); + strcpy((char*)valVtn->description, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnValue(valVtn, op)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnValue(valVtn, op)); free(valVtn); } -// Testing the vtn name +// Testing the vtn name TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_properVal) { VtnMoMgr vtn; val_rename_vtn_t *valVtnRename(ZALLOC_TYPE(val_rename_vtn_t)); valVtnRename->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - strcpy((char*)valVtnRename->new_name,(const char *)"vtn1"); + strcpy((char*)valVtnRename->new_name, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnRenameValue(valVtnRename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnRenameValue(valVtnRename)); free(valVtnRename); } -// Testing the vtn name with minimum value +// Testing the vtn name with minimum value TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_minVal) { VtnMoMgr vtn; val_rename_vtn_t *valVtnRename(ZALLOC_TYPE(val_rename_vtn_t)); valVtnRename->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - strcpy((char*)valVtnRename->new_name,(const char *)"1"); + strcpy((char*)valVtnRename->new_name, (const char *)"1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnRenameValue(valVtnRename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnRenameValue(valVtnRename)); free(valVtnRename); } -// Testing the vtn name with maximum value +// Testing the vtn name with maximum value TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_maxVal) { VtnMoMgr vtn; val_rename_vtn_t *valVtnRename(ZALLOC_TYPE(val_rename_vtn_t)); @@ -898,11 +952,12 @@ TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_maxVal) { "vtnsddfkjlkssdklfjsdkladdassdd1", sizeof(valVtnRename->new_name)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnRenameValue(valVtnRename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnRenameValue(valVtnRename)); free(valVtnRename); } -// Testing the vtn name with maximum value exceeds +// Testing the vtn name with maximum value exceeds TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_maxValExceeds) { VtnMoMgr vtn; val_rename_vtn_t *valVtnRename(ZALLOC_ARRAY(val_rename_vtn_t, 2)); @@ -911,165 +966,180 @@ TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_maxValExceeds) { "vtndfgdfddfrsdklfjsdklflsdsddfdfgdgfd1", sizeof(valVtnRename->new_name)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnRenameValue(valVtnRename)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnRenameValue(valVtnRename)); free(valVtnRename); } -// Testing the vtn name with empty value +// Testing the vtn name with empty value TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_emptyVal) { VtnMoMgr vtn; val_rename_vtn_t *valVtnRename(ZALLOC_TYPE(val_rename_vtn_t)); valVtnRename->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - strcpy((char*)valVtnRename->new_name,(const char *)""); + strcpy((char*)valVtnRename->new_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnRenameValue(valVtnRename)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnRenameValue(valVtnRename)); free(valVtnRename); } -// Testing the vtn name with invalid flag +// Testing the vtn name with invalid flag TEST_F(VtnMoMgrTest, ValidateVtnRenameValue_invalidFlag) { VtnMoMgr vtn; val_rename_vtn_t *valVtnRename(ZALLOC_TYPE(val_rename_vtn_t)); valVtnRename->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_INVALID; - strcpy((char*)valVtnRename->new_name,(const char *)"vtn1"); + strcpy((char*)valVtnRename->new_name, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnRenameValue(valVtnRename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnRenameValue(valVtnRename)); free(valVtnRename); } /* ValidateVtnMapCtrlrKey() */ -// Passing NULL to the function +// Passing NULL to the function TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_nullVal) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap = NULL; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); } -// Testing the controller name and vtn name +// Testing the controller name and vtn name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_properVal) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)keyVtnMap->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)keyVtnMap->controller_name,(const char *)"pfc1"); + strcpy((char*)keyVtnMap->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)keyVtnMap->controller_name, (const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the controller name with minimum value and proper vtn name +// Testing the controller name with minimum value and proper vtn name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_ctrlNameMin) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)keyVtnMap->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)keyVtnMap->controller_name,(const char *)"1"); + strcpy((char*)keyVtnMap->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)keyVtnMap->controller_name, (const char *)"1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the controller name with maximum value and proper vtn name +// Testing the controller name with maximum value and proper vtn name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_ctrlNameMax) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)keyVtnMap->vtn_key.vtn_name,(const char *)"vtn1"); + strcpy((char*)keyVtnMap->vtn_key.vtn_name, (const char *)"vtn1"); pfc_strlcpy(reinterpret_cast(keyVtnMap->controller_name), "vtnstationcontrollersdklfjsdkl1", sizeof(keyVtnMap->controller_name)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the controller name with maximum value exceeds and proper vtn name +// Testing the controller name with maximum value exceeds and proper vtn name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_ctrlNameMaxExceeds) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_ARRAY(key_vtn_controller_t, 2)); - strcpy((char*)keyVtnMap->vtn_key.vtn_name,(const char *)"vtn1"); + strcpy((char*)keyVtnMap->vtn_key.vtn_name, (const char *)"vtn1"); memcpy(keyVtnMap->controller_name, "vtnstationcontrollersdklfjsdklflsdsddf1", sizeof(keyVtnMap->controller_name)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the controller name with empty value and proper vtn name +// Testing the controller name with empty value and proper vtn name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_ctrlNameempty) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)keyVtnMap->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)keyVtnMap->controller_name,(const char *)""); + strcpy((char*)keyVtnMap->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)keyVtnMap->controller_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the vtn name with minimum value and proper controller name +// Testing the vtn name with minimum value and proper controller name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_vtnNameMin) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)keyVtnMap->vtn_key.vtn_name,(const char *)"1"); - strcpy((char*)keyVtnMap->controller_name,(const char *)"pfc1"); + strcpy((char*)keyVtnMap->vtn_key.vtn_name, (const char *)"1"); + strcpy((char*)keyVtnMap->controller_name, (const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the vtn name with maximum value and proper controller name +// Testing the vtn name with maximum value and proper controller name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_vtnNameMax) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_TYPE(key_vtn_controller_t)); pfc_strlcpy(reinterpret_cast(keyVtnMap->vtn_key.vtn_name), "vtnsdaflkjsdfhksdfgdghkshglkas1", sizeof(keyVtnMap->vtn_key.vtn_name)); - strcpy((char*)keyVtnMap->controller_name,(const char *)"pfc1"); + strcpy((char*)keyVtnMap->controller_name, (const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the vtn name with maximum value exceeds and proper controller name +// Testing the vtn name with maximum value exceeds and proper controller name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_vtnNameMaxExceeds) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_ARRAY(key_vtn_controller_t, 2)); memcpy(keyVtnMap->vtn_key.vtn_name, "vtnsdaflkjsdfhksdfghkjasdghkshglkask1", sizeof(keyVtnMap->vtn_key.vtn_name)); - strcpy((char*)keyVtnMap->controller_name,(const char *)"pfc1"); + strcpy((char*)keyVtnMap->controller_name, (const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } -// Testing the vtn name with empty value and proper controller name +// Testing the vtn name with empty value and proper controller name TEST_F(VtnMoMgrTest, ValidateVtnMapCtrlrKey_vtnNameEmpty) { VtnMoMgr vtn; key_vtn_controller_t *keyVtnMap(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)keyVtnMap->vtn_key.vtn_name,(const char *)""); - strcpy((char*)keyVtnMap->controller_name,(const char *)"pfc1"); + strcpy((char*)keyVtnMap->vtn_key.vtn_name, (const char *)""); + strcpy((char*)keyVtnMap->controller_name, (const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnMapCtrlrKey(keyVtnMap,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnMapCtrlrKey(keyVtnMap, UNC_OP_CREATE)); free(keyVtnMap); } /* ValidateVtnStnCtrlrKey() */ -// Passing NULL to the function +// Passing NULL to the function TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_nullVal) { VtnMoMgr vtn; key_vtnstation_controller_t *keyVtnStn = NULL; - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnStnCtrlrKey(keyVtnStn,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnStnCtrlrKey(keyVtnStn, UNC_OP_CREATE)); } -// Testing the controller name +// Testing the controller name TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_properVal) { VtnMoMgr vtn; key_vtnstation_controller_t *keyVtnStn (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)keyVtnStn->controller_name,(const char *)"pfc1"); + strcpy((char*)keyVtnStn->controller_name, (const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnStnCtrlrKey(keyVtnStn,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnStnCtrlrKey(keyVtnStn, UNC_OP_CREATE)); free(keyVtnStn); } @@ -1077,24 +1147,26 @@ TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_READ_SIBLING_COUNT) { VtnMoMgr vtn; key_vtnstation_controller_t *keyVtnStn (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)keyVtnStn->controller_name,(const char *)"pfc1"); + strcpy((char*)keyVtnStn->controller_name, (const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnStnCtrlrKey(keyVtnStn,UNC_OP_READ_SIBLING_COUNT)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnStnCtrlrKey(keyVtnStn, UNC_OP_READ_SIBLING_COUNT)); free(keyVtnStn); } -// Testing the controller name with minimum value +// Testing the controller name with minimum value TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_minVal) { VtnMoMgr vtn; key_vtnstation_controller_t *keyVtnStn (ZALLOC_TYPE(key_vtnstation_controller_t)); keyVtnStn->controller_name[0] = 'a'; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnStnCtrlrKey(keyVtnStn,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnStnCtrlrKey(keyVtnStn, UNC_OP_CREATE)); free(keyVtnStn); } -// Testing the controller name with maximum value +// Testing the controller name with maximum value TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_maxVal) { VtnMoMgr vtn; key_vtnstation_controller_t *keyVtnStn @@ -1103,11 +1175,12 @@ TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_maxVal) { "vtnstationcontrollhljhleouuuuuu", sizeof(keyVtnStn->controller_name)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateVtnStnCtrlrKey(keyVtnStn,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateVtnStnCtrlrKey(keyVtnStn, UNC_OP_CREATE)); free(keyVtnStn); } -// Testing the controller name with maximum value exceeds +// Testing the controller name with maximum value exceeds TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_maxValExceeds) { VtnMoMgr vtn; key_vtnstation_controller_t *keyVtnStn @@ -1115,18 +1188,20 @@ TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_maxValExceeds) { memcpy(keyVtnStn->controller_name, "vtnstationcontrollersdklfjsdklflsdsddf1", sizeof(keyVtnStn->controller_name)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnStnCtrlrKey(keyVtnStn,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnStnCtrlrKey(keyVtnStn, UNC_OP_CREATE)); free(keyVtnStn); } -// Testing the controller name with empty value +// Testing the controller name with empty value TEST_F(VtnMoMgrTest, ValidateVtnStnCtrlrKey_emptyVal) { VtnMoMgr vtn; key_vtnstation_controller_t *keyVtnStn (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)keyVtnStn->controller_name,(const char *)""); + strcpy((char*)keyVtnStn->controller_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateVtnStnCtrlrKey(keyVtnStn,UNC_OP_CREATE)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateVtnStnCtrlrKey(keyVtnStn, UNC_OP_CREATE)); free(keyVtnStn); } @@ -1142,14 +1217,15 @@ TEST_F(VtnMoMgrTest, ReadMo_otherKT_detail) { req->option2 = UNC_OPT2_NONE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, NULL); + strcpy((char*)keyvtn->vtn_name, (const char *)"vtn1"); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, keyvtn, NULL); EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ReadMo(req, ikey, dmi)); delete ikey; } -//otherKT when option1 = UNC_OPT1_COUNT +// otherKT when option1 = UNC_OPT1_COUNT TEST_F(VtnMoMgrTest, ReadMo_otherKT_count) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1161,14 +1237,15 @@ TEST_F(VtnMoMgrTest, ReadMo_otherKT_count) { req->option2 = UNC_OPT2_NONE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, NULL); + strcpy((char*)keyvtn->vtn_name, (const char *)"vtn1"); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, keyvtn, NULL); EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ReadMo(req, ikey, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has wrong dt_type +// UNC_KT_VTN_MAPPING_CONTROLLER has wrong dt_type TEST_F(VtnMoMgrTest, ReadMo_mapping_invaliddatatype) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1182,14 +1259,17 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_invaliddatatype) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has wrong st_num +// UNC_KT_VTN_MAPPING_CONTROLLER has wrong st_num TEST_F(VtnMoMgrTest, ReadMo_mapping_invalidstnum) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1203,14 +1283,17 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_invalidstnum) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has no vtn_name +// UNC_KT_VTN_MAPPING_CONTROLLER has no vtn_name TEST_F(VtnMoMgrTest, ReadMo_mapping_emptyvtnname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1224,11 +1307,14 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_emptyvtnname) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)""); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadMo(req, ikey, dmi)); //Bug raised already + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadMo(req, ikey, dmi)); // Bug raised already delete ikey; } @@ -1243,20 +1329,23 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_valid) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - strcpy((char*)val_mapping->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_mapping->port_name,(const char *)"port_name1"); - strcpy((char*)val_mapping->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_mapping->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_mapping->logical_port_id,(const char *)"logical_port_id1"); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); + strcpy((char*)val_mapping->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_mapping->port_name, (const char *)"port_name1"); + strcpy((char*)val_mapping->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_mapping->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_mapping->logical_port_id, (const char *)"logical_port_id1"); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } @@ -1271,24 +1360,27 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_invalid_01) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - strcpy((char*)val_mapping->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_mapping->port_name,(const char *)"port_name1"); - strcpy((char*)val_mapping->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_mapping->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_mapping->logical_port_id,(const char *)"logical_port_id1"); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); + strcpy((char*)val_mapping->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_mapping->port_name, (const char *)"port_name1"); + strcpy((char*)val_mapping->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_mapping->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_mapping->logical_port_id, (const char *)"logical_port_id1"); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has domain +// UNC_KT_VTN_MAPPING_CONTROLLER has domain TEST_F(VtnMoMgrTest, ReadMo_mapping_withctrl_domain) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1302,13 +1394,16 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_withctrl_domain) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } @@ -1326,14 +1421,17 @@ TEST_F(VtnMoMgrTest, ReadMo_Station_invalidkeytype) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has wrong st_num +// UNC_KT_VTNSTATION_CONTROLLER has wrong st_num TEST_F(VtnMoMgrTest, ReadMo_Station_invalidstnum) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1348,14 +1446,17 @@ TEST_F(VtnMoMgrTest, ReadMo_Station_invalidstnum) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtn, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtn, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has no ctrlr_name +// UNC_KT_VTNSTATION_CONTROLLER has no ctrlr_name TEST_F(VtnMoMgrTest, ReadMo_Station_emptyctrlrname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1370,11 +1471,14 @@ TEST_F(VtnMoMgrTest, ReadMo_Station_emptyctrlrname) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - strcpy((char*)key_station->controller_name,(const char *)""); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + strcpy((char*)key_station->controller_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadMo(req, ikey, dmi)); //Bug raised already + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadMo(req, ikey, dmi)); // Bug raised already delete ikey; } @@ -1390,20 +1494,30 @@ TEST_F(VtnMoMgrTest, ReadMo_Station_valid_01) { key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(key_station->controller_name,"pfc1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_station->controller_name, "pfc1", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - uuu::upll_strncpy(val_station->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->port_name,"port_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->domain_id, "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->port_name, "port_name", (kMaxLenCtrlrId + 1)); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); //Bug has to raise + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); // Bug has to raise delete ikey; } @@ -1419,20 +1533,30 @@ TEST_F(VtnMoMgrTest, ReadMo_Station_valid_02) { key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(key_station->controller_name,"pfc1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_station->controller_name, "pfc1", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - uuu::upll_strncpy(val_station->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->port_name,"port_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->domain_id, "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->port_name, "port_name", (kMaxLenCtrlrId + 1)); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } @@ -1448,20 +1572,25 @@ TEST_F(VtnMoMgrTest, ReadMo_Station_valid_03) { key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(key_station->controller_name,"pfc1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_station->controller_name, "pfc1", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); memset(val_station, 0, sizeof(val_vtnstation_controller_st_t)); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_01) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); @@ -1471,31 +1600,48 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_01) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - uuu::upll_strncpy(val_mapping->logical_port_id,"logical_port_id1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->port_name,"port_name", (kMaxLenCtrlrId + 1)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + uuu::upll_strncpy( + val_mapping->logical_port_id, "logical_port_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->port_name, "port_name", (kMaxLenCtrlrId + 1)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); createControllerInfo("controller_name1", UPLL_DT_RUNNING, UNC_CT_PFC); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_02) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); @@ -1505,20 +1651,34 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_02) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - uuu::upll_strncpy(val_mapping->logical_port_id,"logical_port_id1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->port_name,"port_name", (kMaxLenCtrlrId + 1)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + uuu::upll_strncpy( + val_mapping->logical_port_id, "logical_port_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->port_name, "port_name", (kMaxLenCtrlrId + 1)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } @@ -1533,17 +1693,19 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_03) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - strcpy((char*)val_mapping->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_mapping->port_name,(const char *)"port_name1"); - strcpy((char*)val_mapping->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_mapping->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_mapping->logical_port_id,(const char *)"logical_port_id1"); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)val_mapping->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_mapping->port_name, (const char *)"port_name1"); + strcpy((char*)val_mapping->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_mapping->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_mapping->logical_port_id, (const char *)"logical_port_id1"); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ReadMo(req, ikey, dmi)); delete ikey; @@ -1551,11 +1713,15 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_03) { TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_04) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); req->datatype = UPLL_DT_STATE; @@ -1564,30 +1730,47 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_04) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - uuu::upll_strncpy(val_mapping->logical_port_id,"logical_port_id1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->port_name,"port_name", (kMaxLenCtrlrId + 1)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + uuu::upll_strncpy( + val_mapping->logical_port_id, "logical_port_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->port_name, "port_name", (kMaxLenCtrlrId + 1)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - createControllerInfo("controller_name1",UPLL_DT_RUNNING,UNC_CT_PFC); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + createControllerInfo("controller_name1", UPLL_DT_RUNNING, UNC_CT_PFC); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_05) { VtnMoMgr vtn; DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); req->datatype = UPLL_DT_STATE; @@ -1596,25 +1779,39 @@ TEST_F(VtnMoMgrTest, ReadMo_mapping_valid_05) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - uuu::upll_strncpy(val_mapping->logical_port_id,"logical_port_id1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->port_name,"port_name", (kMaxLenCtrlrId + 1)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + uuu::upll_strncpy( + val_mapping->logical_port_id, "logical_port_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->port_name, "port_name", (kMaxLenCtrlrId + 1)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadMo(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadMo(req, ikey, dmi)); delete ikey; } /* ReadSiblingMo() */ -//otherKT when option1 = UNC_OPT1_DETAIL +// otherKT when option1 = UNC_OPT1_DETAIL TEST_F(VtnMoMgrTest, ReadSiblingMo_KT_VTN_detail) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1627,8 +1824,9 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_KT_VTN_detail) { req->option2 = UNC_OPT2_NONE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, NULL); + strcpy((char*)keyvtn->vtn_name, (const char *)"vtn1"); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, keyvtn, NULL); EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; @@ -1646,14 +1844,16 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_KT_VBRIDGE) { req->option2 = UNC_OPT2_NONE; key_vbr_t *keyvbr(ZALLOC_TYPE(key_vbr_t)); - strcpy((char*)keyvbr->vbridge_name,(const char *)"vbr1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, keyvbr, NULL); + strcpy((char*)keyvbr->vbridge_name, (const char *)"vbr1"); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, keyvbr, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//otherKT when option1 = UNC_OPT1_COUNT +// otherKT when option1 = UNC_OPT1_COUNT TEST_F(VtnMoMgrTest, ReadSiblingMo_otherKT_count) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1666,14 +1866,16 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_otherKT_count) { req->option2 = UNC_OPT2_NONE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, NULL); + strcpy((char*)keyvtn->vtn_name, (const char *)"vtn1"); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, keyvtn, NULL); - EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has wrong dt_type +// UNC_KT_VTN_MAPPING_CONTROLLER has wrong dt_type TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invaliddatatype) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1681,21 +1883,24 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invaliddatatype) { bool begin = false; req->datatype = UPLL_DT_CANDIDATE; - req->operation = UNC_OP_READ_SIBLING ; + req->operation = UNC_OP_READ_SIBLING; req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has wrong st_num +// UNC_KT_VTN_MAPPING_CONTROLLER has wrong st_num TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invalidstnum) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1710,14 +1915,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invalidstnum) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has no vtn_name +// UNC_KT_VTN_MAPPING_CONTROLLER has no vtn_name TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_emptyvtnname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1732,15 +1940,18 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_emptyvtnname) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)""); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); //Bug raised already/ + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); // Bug raised already/ delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has no ctrlr name +// UNC_KT_VTN_MAPPING_CONTROLLER has no ctrlr name TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_noctrlrname_nodomain) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1755,16 +1966,19 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_noctrlrname_nodomain) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)""); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has wrong dt_type +// UNC_KT_VTNSTATION_CONTROLLER has wrong dt_type TEST_F(VtnMoMgrTest, ReadSiblingMo_station_invaliddatatype) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1780,14 +1994,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_station_invaliddatatype) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has wrong st_num +// UNC_KT_VTNSTATION_CONTROLLER has wrong st_num TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidstnum) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1803,14 +2020,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidstnum) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtn, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtn, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has no ctrlr_name +// UNC_KT_VTNSTATION_CONTROLLER has no ctrlr_name TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_emptyctrlrname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1826,15 +2046,18 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_emptyctrlrname) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - strcpy((char*)key_station->controller_name,(const char *)""); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + strcpy((char*)key_station->controller_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); //Bug raised already + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); // Bug raised already delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has invalid datatype +// UNC_KT_VTNSTATION_CONTROLLER has invalid datatype TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invaliddatatype) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1850,14 +2073,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invaliddatatype) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); //Bug has to raise + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); // Bug has to raise delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has invalid operation +// UNC_KT_VTNSTATION_CONTROLLER has invalid operation TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidop) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1873,14 +2099,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidop) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); //Bug has to raise + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); // Bug has to raise delete ikey; } -//otherKT when option1 = UNC_OPT1_DETAIL +// otherKT when option1 = UNC_OPT1_DETAIL TEST_F(VtnMoMgrTest, ReadSiblingMo_otherKT_detail_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1893,14 +2122,15 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_otherKT_detail_begin) { req->option2 = UNC_OPT2_NONE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, NULL); + strcpy((char*)keyvtn->vtn_name, (const char *)"vtn1"); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, keyvtn, NULL); EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//otherKT when option1 = UNC_OPT1_COUNT +// otherKT when option1 = UNC_OPT1_COUNT TEST_F(VtnMoMgrTest, ReadSiblingMo_otherKT_count_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1913,14 +2143,16 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_otherKT_count_begin) { req->option2 = UNC_OPT2_NONE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - strcpy((char*)keyvtn->vtn_name,(const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, NULL); + strcpy((char*)keyvtn->vtn_name, (const char *)"vtn1"); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, keyvtn, NULL); - EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has wrong dt_type +// UNC_KT_VTN_MAPPING_CONTROLLER has wrong dt_type TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invaliddatatype_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1935,14 +2167,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invaliddatatype_begin) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has wrong st_num +// UNC_KT_VTN_MAPPING_CONTROLLER has wrong st_num TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invalidstnum_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1957,14 +2192,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_invalidstnum_begin) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTN_MAPPING_CONTROLLER has no vtn_name +// UNC_KT_VTN_MAPPING_CONTROLLER has no vtn_name TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_emptyvtnname_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -1979,11 +2217,14 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_emptyvtnname_begin) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)""); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); //Bug raised already/ + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); // Bug raised already/ delete ikey; } @@ -2001,21 +2242,27 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_01) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)""); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)""); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_READ_SIBLING_BEGIN) { VtnMoMgr vtn; DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); bool begin = true; @@ -2026,30 +2273,46 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_READ_SIBLING_BEGIN) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - uuu::upll_strncpy(val_mapping->logical_port_id,"logical_port_id1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->port_name,"port_name", (kMaxLenCtrlrId + 1)); - - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + uuu::upll_strncpy( + val_mapping->logical_port_id, "logical_port_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->port_name, "port_name", (kMaxLenCtrlrId + 1)); + + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, - vtn.ReadSiblingMo(req, ikey, begin, dmi)); + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_READ) { DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2062,22 +2325,35 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Mapping_READ) { req->option2 = UNC_OPT2_NONE; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - uuu::upll_strncpy(val_mapping->logical_port_id,"logical_port_id1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_mapping->port_name,"port_name", (kMaxLenCtrlrId + 1)); - - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + uuu::upll_strncpy( + val_mapping->logical_port_id, "logical_port_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_mapping->port_name, "port_name", (kMaxLenCtrlrId + 1)); + + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, - vtn.ReadSiblingMo(req, ikey, begin, dmi)); + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } @@ -2095,14 +2371,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_station_READ_SIBLING_BEGIN) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has wrong st_num +// UNC_KT_VTNSTATION_CONTROLLER has wrong st_num TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidstnum_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2118,10 +2397,13 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidstnum_begin) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtn, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtn, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } @@ -2139,18 +2421,21 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_READ_SIBLING_BEGIN_01) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc11"); - strcpy((char*)val_station->vtn_name,(const char *)"vtn1"); - strcpy((char*)val_station->domain_id,(const char *)"dom1"); - strcpy((char*)val_station->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_station->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_station->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_station->port_name,(const char *)"port1"); + strcpy((char*)key_station->controller_name, (const char *)"pfc11"); + strcpy((char*)val_station->vtn_name, (const char *)"vtn1"); + strcpy((char*)val_station->domain_id, (const char *)"dom1"); + strcpy((char*)val_station->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_station->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_station->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_station->port_name, (const char *)"port1"); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } @@ -2163,24 +2448,27 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_READ_SIBLING_BEGIN_02) { req->operation = UNC_OP_READ_SIBLING_BEGIN; req->option1 = UNC_OPT1_NORMAL; req->option2 = UNC_OPT2_NONE; - //unc_keytype_ctrtype_t ctrlrtype = UNC_CT_PFC; + // unc_keytype_ctrtype_t ctrlrtype = UNC_CT_PFC; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc11"); - strcpy((char*)val_station->vtn_name,(const char *)"vtn1"); - strcpy((char*)val_station->domain_id,(const char *)"dom1"); - strcpy((char*)val_station->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_station->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_station->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_station->port_name,(const char *)"port1"); + strcpy((char*)key_station->controller_name, (const char *)"pfc11"); + strcpy((char*)val_station->vtn_name, (const char *)"vtn1"); + strcpy((char*)val_station->domain_id, (const char *)"dom1"); + strcpy((char*)val_station->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_station->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_station->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_station->port_name, (const char *)"port1"); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } @@ -2198,28 +2486,32 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_READ_SIBLING_BEGIN_03) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc11"); - strcpy((char*)val_station->vtn_name,(const char *)"vtn1"); - strcpy((char*)val_station->domain_id,(const char *)"dom1"); - strcpy((char*)val_station->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_station->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_station->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_station->port_name,(const char *)"port1"); + strcpy((char*)key_station->controller_name, (const char *)"pfc11"); + strcpy((char*)val_station->vtn_name, (const char *)"vtn1"); + strcpy((char*)val_station->domain_id, (const char *)"dom1"); + strcpy((char*)val_station->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_station->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_station->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_station->port_name, (const char *)"port1"); const char* version("version"); - CtrlrMgr::Ctrlr ctrl("controller_name1",UNC_CT_VNP,version); - CtrlrMgr::Ctrlr* ctrl1( new CtrlrMgr::Ctrlr(ctrl,UPLL_DT_RUNNING)); + CtrlrMgr::Ctrlr ctrl("controller_name1", UNC_CT_VNP, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_RUNNING)); CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); CapaModuleStub::stub_loadCapaModule(); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, true); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_CREATE_CAPABILITY, true); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has no ctrlr_name +// UNC_KT_VTNSTATION_CONTROLLER has no ctrlr_name TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_emptyctrlrname_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2235,15 +2527,17 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_emptyctrlrname_begin) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, - vtn.ReadSiblingMo(req, ikey, begin, dmi)); + vtn.ReadSiblingMo(req, ikey, begin, dmi)); delete ikey; } -//UNC_KT_VTNSTATION_CONTROLLER has invalid operation +// UNC_KT_VTNSTATION_CONTROLLER has invalid operation TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidop_begin) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2259,10 +2553,13 @@ TEST_F(VtnMoMgrTest, ReadSiblingMo_Station_invalidop_begin) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSiblingMo(req, ikey, begin, dmi)); //Bug has to raise + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSiblingMo(req, ikey, begin, dmi)); // Bug has to raise delete ikey; } @@ -2278,11 +2575,14 @@ TEST_F(VtnMoMgrTest, ReadSiblingCount_vtn) { key_vtn_t *key_vtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *val_vtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key_vtn, config_val); - strcpy((char*)key_vtn->vtn_name,(const char *)"vtn1"); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val_vtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key_vtn, config_val); + strcpy((char*)key_vtn->vtn_name, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSiblingCount(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSiblingCount(req, ikey, dmi)); delete ikey; } @@ -2299,12 +2599,15 @@ TEST_F(VtnMoMgrTest, ReadSiblingCount_vtnStation_01) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - strcpy((char*)key_station->controller_name,(const char *)"vtn1"); + strcpy((char*)key_station->controller_name, (const char *)"vtn1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ReadSiblingCount(req, ikey, dmi)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ReadSiblingCount(req, ikey, dmi)); delete ikey; } @@ -2313,26 +2616,31 @@ TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_02) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); - val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - strcpy((char*)val_station->vtn_name,(const char *)"vtn1"); - strcpy((char*)val_station->domain_id,(const char *)"dom1"); - strcpy((char*)val_station->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_station->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_station->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_station->port_name,(const char *)"port1"); - - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); + val_vtnstation_controller_st_t *val_station( + ZALLOC_TYPE(val_vtnstation_controller_st_t)); + strcpy((char*)val_station->vtn_name, (const char *)"vtn1"); + strcpy((char*)val_station->domain_id, (const char *)"dom1"); + strcpy((char*)val_station->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_station->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_station->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_station->port_name, (const char *)"port1"); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); val_station->map_type = UPLL_IF_VLAN_MAP; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } @@ -2340,32 +2648,43 @@ TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_03) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - uuu::upll_strncpy(val_station->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->port_name,"port_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->domain_id, "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->port_name, "port_name", (kMaxLenCtrlrId + 1)); val_station->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); val_station->map_type = UPLL_IF_VLAN_MAP; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); val_station->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } @@ -2374,16 +2693,19 @@ TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_val_NULL) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, NULL); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } @@ -2391,68 +2713,94 @@ TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_val_NULL) { TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_04) { VtnMoMgr vtn; DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - uuu::upll_strncpy(val_station->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->port_name,"port_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->domain_id, "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->port_name, "port_name", (kMaxLenCtrlrId + 1)); val_station->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); val_station->map_type = UPLL_IF_VLAN_MAP; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); val_station->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_05) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); - val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - uuu::upll_strncpy(val_station->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->port_name,"port_name", (kMaxLenCtrlrId + 1)); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); + val_vtnstation_controller_st_t *val_station( + ZALLOC_TYPE(val_vtnstation_controller_st_t)); + uuu::upll_strncpy( + val_station->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->domain_id, "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->port_name, "port_name", (kMaxLenCtrlrId + 1)); val_station->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } @@ -2460,51 +2808,68 @@ TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_05) { TEST_F(VtnMoMgrTest, MappingvExtTovBr_vtnstation_06) { VtnMoMgr vtn; DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcRecordNoMore); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcRecordNoMore); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); - val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - uuu::upll_strncpy(val_station->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->switch_id,"switch_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(val_station->port_name,"port_name", (kMaxLenCtrlrId + 1)); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); + val_vtnstation_controller_st_t *val_station( + ZALLOC_TYPE(val_vtnstation_controller_st_t)); + uuu::upll_strncpy( + val_station->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->domain_id, "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->switch_id, "switch_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + val_station->port_name, "port_name", (kMaxLenCtrlrId + 1)); val_station->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; val_station->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } -//when the key is UNC_KT_VTN_MAPPING_CONTROLLER and has invalid key st_num +// when the key is UNC_KT_VTN_MAPPING_CONTROLLER and has invalid key st_num TEST_F(VtnMoMgrTest, MappingvExtTovBr_mapping_invalidkeynum) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStValVtnstationControllerSt, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = + new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStValVtnstationControllerSt, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } @@ -2512,48 +2877,55 @@ TEST_F(VtnMoMgrTest, MappingvExtTovBr_ikey_No_value) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; - ConfigKeyVal *ikey =NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + ConfigKeyVal *ikey = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } -//when the key is UNC_KT_VTN_MAPPING_CONTROLLER and without setting vbr valid flag +// when the key is UNC_KT_VTN_MAPPING_CONTROLLER and without setting vbr valid flag TEST_F(VtnMoMgrTest, MappingvExtTovBr_mapping_withoutvbrvalidflag) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } -//when the key is UNC_KT_VTN_MAPPING_CONTROLLER and with setting vbr valid flag +// when the key is UNC_KT_VTN_MAPPING_CONTROLLER and with setting vbr valid flag TEST_F(VtnMoMgrTest, MappingvExtTovBr_mapping_withoutvbrifvalidflag) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); val_mapping->valid[UPLL_IDX_VBR_NAME_VMCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } @@ -2561,148 +2933,177 @@ TEST_F(VtnMoMgrTest, MappingvExtTovBr_mapping_withvbrifvalidflag) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); - strcpy((char*)val_mapping->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_mapping->port_name,(const char *)"port_name1"); - strcpy((char*)val_mapping->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_mapping->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_mapping->logical_port_id,(const char *)"logical_port_id1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); + strcpy((char*)val_mapping->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_mapping->port_name, (const char *)"port_name1"); + strcpy((char*)val_mapping->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_mapping->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_mapping->logical_port_id, (const char *)"logical_port_id1"); val_mapping->valid[UPLL_IDX_VBR_NAME_VMCS] = UNC_VF_VALID; val_mapping->valid[UPLL_IDX_VBR_IF_NAME_VMCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } TEST_F(VtnMoMgrTest, MappingvExtTovBr_mapping_01) { VtnMoMgr vtn; DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); - strcpy((char*)val_mapping->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_mapping->port_name,(const char *)"port_name1"); - strcpy((char*)val_mapping->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_mapping->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_mapping->logical_port_id,(const char *)"logical_port_id1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); + strcpy((char*)val_mapping->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_mapping->port_name, (const char *)"port_name1"); + strcpy((char*)val_mapping->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_mapping->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_mapping->logical_port_id, (const char *)"logical_port_id1"); val_mapping->valid[UPLL_IDX_VBR_NAME_VMCS] = UNC_VF_VALID; val_mapping->valid[UPLL_IDX_VBR_IF_NAME_VMCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); val_mapping->map_type = UPLL_IF_VLAN_MAP; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } TEST_F(VtnMoMgrTest, MappingvExtTovBr_mapping_02) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); - strcpy((char*)val_mapping->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_mapping->port_name,(const char *)"port_name1"); - strcpy((char*)val_mapping->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_mapping->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_mapping->logical_port_id,(const char *)"logical_port_id1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); + strcpy((char*)val_mapping->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_mapping->port_name, (const char *)"port_name1"); + strcpy((char*)val_mapping->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_mapping->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_mapping->logical_port_id, (const char *)"logical_port_id1"); val_mapping->valid[UPLL_IDX_VBR_NAME_VMCS] = UNC_VF_VALID; val_mapping->valid[UPLL_IDX_VBR_IF_NAME_VMCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } TEST_F(VtnMoMgrTest, MappingvExtTovBr_mapping_03) { VtnMoMgr vtn; DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcRecordNoMore); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcRecordNoMore); IPC_REQ_RESP_HEADER_DECL(req); DalDmlIntf *dmi(getDalDmlIntf()); - uint32_t count1=0; - uint32_t *count=&count1; + uint32_t count1 = 0; + uint32_t *count = &count1; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - strcpy((char*)key_ctrlr->domain_id,(const char *)"dom1"); - strcpy((char*)val_mapping->switch_id,(const char *)"switch_id1"); - strcpy((char*)val_mapping->port_name,(const char *)"port_name1"); - strcpy((char*)val_mapping->vbr_name,(const char *)"vbr_name1"); - strcpy((char*)val_mapping->vbrif_name,(const char *)"vbrif_name1"); - strcpy((char*)val_mapping->logical_port_id,(const char *)"logical_port_id1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + strcpy((char*)key_ctrlr->domain_id, (const char *)"dom1"); + strcpy((char*)val_mapping->switch_id, (const char *)"switch_id1"); + strcpy((char*)val_mapping->port_name, (const char *)"port_name1"); + strcpy((char*)val_mapping->vbr_name, (const char *)"vbr_name1"); + strcpy((char*)val_mapping->vbrif_name, (const char *)"vbrif_name1"); + strcpy((char*)val_mapping->logical_port_id, (const char *)"logical_port_id1"); val_mapping->valid[UPLL_IDX_VBR_NAME_VMCS] = UNC_VF_VALID; val_mapping->valid[UPLL_IDX_VBR_IF_NAME_VMCS] = UNC_VF_VALID; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MappingvExtTovBr(ikey, req, dmi, count)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MappingvExtTovBr(ikey, req, dmi, count)); delete ikey; } /* ValidateMessageForVtnStnCtrlr */ -//when the configkeyval is null +// when the configkeyval is null TEST_F(VtnMoMgrTest, ValidateMessageForVtnStnCtrlr_ikeynull) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); // Code has the fix now + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); // Code has the fix now delete ikey; } -//when the IpcReqRespHeader is null +// when the IpcReqRespHeader is null TEST_F(VtnMoMgrTest, ValidateMessageForVtnStnCtrlr_reqnull) { VtnMoMgr vtn; IpcReqRespHeader *req = NULL; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); //Bug 404 + val_vtnstation_controller_st_t *val_station( + ZALLOC_TYPE(val_vtnstation_controller_st_t)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); // Bug 404 delete ikey; } -//when invalid st_num +// when invalid st_num TEST_F(VtnMoMgrTest, ValidateMessageForVtnStnCtrlr_invalid_stnum) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtn, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); + val_vtnstation_controller_st_t *val_station( + ZALLOC_TYPE(val_vtnstation_controller_st_t)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtn, key_station, config_val); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); delete ikey; } @@ -2711,15 +3112,19 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnStnCtrlr_Invalid_option1) { IPC_REQ_RESP_HEADER_DECL(req); req->datatype = UPLL_DT_STATE; req->operation = UNC_OP_READ; - req->option1=(unc_keytype_option1_t)3; + req->option1 = (unc_keytype_option1_t)3; req->option2 = UNC_OPT2_NEIGHBOR; key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); + val_vtnstation_controller_st_t *val_station( + ZALLOC_TYPE(val_vtnstation_controller_st_t)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, + vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); delete ikey; } @@ -2733,15 +3138,19 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnStnCtrlr_Invalid_option2) { key_vtnstation_controller_t *key_station (ZALLOC_TYPE(key_vtnstation_controller_t)); - val_vtnstation_controller_st_t *val_station(ZALLOC_TYPE(val_vtnstation_controller_st_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); + val_vtnstation_controller_st_t *val_station( + ZALLOC_TYPE(val_vtnstation_controller_st_t)); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, + vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); delete ikey; } -//when valid stnum with ctrlr name +// when valid stnum with ctrlr name TEST_F(VtnMoMgrTest, ValidateMessageForVtnStnCtrlr_valid_stnum_ctrlname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2750,23 +3159,28 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnStnCtrlr_valid_stnum_ctrlname) { (ZALLOC_TYPE(key_vtnstation_controller_t)); val_vtnstation_controller_st_t *val_station (ZALLOC_TYPE(val_vtnstation_controller_st_t)); - strcpy((char*)key_station->controller_name,(const char *)"pfc1"); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, val_station); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_station, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); + strcpy((char*)key_station->controller_name, (const char *)"pfc1"); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, val_station); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_station, config_val); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ValidateMessageForVtnStnCtrlr(req, ikey)); delete ikey; } -//when the configkeyval is null +// when the configkeyval is null TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_ikeynull) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); // Code has the fix now + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); // Code has the fix now delete ikey; } -//when the IpcReqRespHeader is null +// when the IpcReqRespHeader is null TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_reqnull) { VtnMoMgr vtn; IpcReqRespHeader *req = NULL; @@ -2774,15 +3188,19 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_reqnull) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)""); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); // Code has the fix now + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)""); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); // Code has the fix now delete ikey; } -//when invalid st_num +// when invalid st_num TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_stnum) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2795,15 +3213,19 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_stnum) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnstationController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal( + UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnstationController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)""); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } -//when valid stnum with empty ctrlr name and vtn name +// when valid stnum with empty ctrlr name and vtn name TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_emptyctrlvtnname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2816,15 +3238,18 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_emptyctrlvtnname) key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)""); - strcpy((char*)key_ctrlr->controller_name,(const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)""); + strcpy((char*)key_ctrlr->controller_name, (const char *)""); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } -//when valid stnum with empty ctrlr name +// when valid stnum with empty ctrlr name TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_emptyctrlname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2837,15 +3262,18 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_emptyctrlname) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)""); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)""); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } -//when valid stnum with ctrlr name +// when valid stnum with ctrlr name TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_ctrlname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2858,17 +3286,21 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_ctrlname) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); pfc_strlcpy(reinterpret_cast(key_ctrlr->domain_id), "dom1", sizeof(key_ctrlr->domain_id)); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + EXPECT_EQ(UPLL_RC_SUCCESS, + + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } -//when valid stnum with empty vtn name +// when valid stnum with empty vtn name TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_emptyvtnname) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2881,11 +3313,14 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_valid_stnum_emptyvtnname) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)""); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)""); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } @@ -2901,11 +3336,14 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_option1) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION1, + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } @@ -2921,15 +3359,18 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_option2) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + EXPECT_EQ(UPLL_RC_ERR_INVALID_OPTION2, + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } -//when invalid datatype +// when invalid datatype TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_datatype) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2942,15 +3383,19 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_datatype) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } -//when invalid operation +// when invalid operation TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_operation) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); @@ -2963,11 +3408,14 @@ TEST_F(VtnMoMgrTest, ValidateMessageForVtnMapCtrlr_invalid_operation) { key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); val_vtn_mapping_controller_st_t *val_mapping (ZALLOC_TYPE(val_vtn_mapping_controller_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); - strcpy((char*)key_ctrlr->vtn_key.vtn_name,(const char *)"vtn1"); - strcpy((char*)key_ctrlr->controller_name,(const char *)"pfc1"); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnMappingControllerSt, val_mapping); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN_MAPPING_CONTROLLER, + IpctSt::kIpcStKeyVtnController, key_ctrlr, config_val); + strcpy((char*)key_ctrlr->vtn_key.vtn_name, (const char *)"vtn1"); + strcpy((char*)key_ctrlr->controller_name, (const char *)"pfc1"); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ValidateMessageForVtnMapCtrlr(req, ikey)); delete ikey; } @@ -2978,25 +3426,31 @@ TEST_F(VtnMoMgrTest, DupConfigKeyVal_nullkey) { ConfigKeyVal *okey = NULL; MoMgrTables tbl = MAINTBL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.DupConfigKeyVal(okey, ikey, tbl)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.DupConfigKeyVal(okey, ikey, tbl)); delete ikey; delete okey; } TEST_F(VtnMoMgrTest, DupConfigKeyVal_nonullokey) { VtnMoMgr vtn; - MoMgrTables tbl=MAINTBL; + MoMgrTables tbl = MAINTBL; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); key_vtn_t *key1(UT_CLONE(key_vtn_t, keyvtn)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key1, + ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, NULL)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.DupConfigKeyVal(okey, ikey, tbl)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.DupConfigKeyVal(okey, ikey, tbl)); delete ikey; delete okey; } @@ -3004,14 +3458,18 @@ TEST_F(VtnMoMgrTest, DupConfigKeyVal_nonullokey) { TEST_F(VtnMoMgrTest, DupConfigKeyVal_novtnKT) { VtnMoMgr vtn; ConfigKeyVal *okey = NULL; - MoMgrTables tbl=MAINTBL; + MoMgrTables tbl = MAINTBL; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.DupConfigKeyVal(okey, ikey, tbl)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.DupConfigKeyVal(okey, ikey, tbl)); delete ikey; delete okey; } @@ -3023,10 +3481,14 @@ TEST_F(VtnMoMgrTest, DupConfigKeyVal_MAINTBL) { key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.DupConfigKeyVal(okey, ikey, tbl)); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); + + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.DupConfigKeyVal(okey, ikey, tbl)); delete ikey; delete okey; } @@ -3038,14 +3500,18 @@ TEST_F(VtnMoMgrTest, DupConfigKeyVal_MAINTBL_withST) { key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); val_db_vtn_st *val_dbvtn(ZALLOC_TYPE(val_db_vtn_st)); ConfigVal *config_valst = new ConfigVal(IpctSt::kIpcStValVtnSt, val_dbvtn); config_val->AppendCfgVal(config_valst); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.DupConfigKeyVal(okey, ikey, tbl)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.DupConfigKeyVal(okey, ikey, tbl)); delete ikey; delete okey; } @@ -3057,15 +3523,18 @@ TEST_F(VtnMoMgrTest, DupConfigKeyVal_RENAMETBL) { key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_rename_vtn_t *val_rename_vtn(ZALLOC_TYPE(val_rename_vtn_t)); - ConfigVal *rename_val = new ConfigVal(IpctSt::kIpcStValRenameVtn, val_rename_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStValRenameVtn, keyvtn, rename_val); + ConfigVal *rename_val = + new ConfigVal(IpctSt::kIpcStValRenameVtn, val_rename_vtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStValRenameVtn, keyvtn, rename_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.DupConfigKeyVal(okey, ikey, tbl)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.DupConfigKeyVal(okey, ikey, tbl)); delete ikey; delete okey; } -//Negative test case +// Negative test case TEST_F(VtnMoMgrTest, DupConfigKeyVal_CTRLRTBL) { VtnMoMgr vtn; ConfigKeyVal *okey = NULL; @@ -3073,10 +3542,14 @@ TEST_F(VtnMoMgrTest, DupConfigKeyVal_CTRLRTBL) { key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.DupConfigKeyVal(okey, ikey, tbl)); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); + + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.DupConfigKeyVal(okey, ikey, tbl)); delete ikey; delete okey; } @@ -3088,7 +3561,8 @@ TEST_F(VtnMoMgrTest, MergeValidateChildren_nullikey) { const char *ctrlr_id = NULL; ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MergeValidateChildren(ikey, ctrlr_id, ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MergeValidateChildren(ikey, ctrlr_id, ikey, dmi)); } TEST_F(VtnMoMgrTest, MergeValidateChildren_ikey_VTN) { @@ -3098,10 +3572,14 @@ TEST_F(VtnMoMgrTest, MergeValidateChildren_ikey_VTN) { key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.MergeValidateChildren(ikey, ctrlr_id, ikey, dmi)); + IpctSt::kIpcStKeyVtn, key, config_val); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MergeValidateChildren(ikey, ctrlr_id, ikey, dmi)); delete ikey; } @@ -3120,17 +3598,20 @@ TEST_F(VtnMoMgrTest, MergeValidateChildren_ikey_UNC_KT_VBRIDGE) { pfc_strlcpy(reinterpret_cast(vbrkey->vbridge_name), "VBR_1", sizeof(vbrkey->vbridge_name)); ConfigVal *config_val(new ConfigVal(IpctSt::kIpcStValVtnSt, val)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVtn, vbrkey, config_val)); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.MergeValidateChildren(ikey, ctrlr_id, ikey, dmi)); + + vtn.MergeValidateChildren(ikey, ctrlr_id, ikey, dmi)); } TEST_F(VtnMoMgrTest, AdaptValToVtnService_ikey_NULL) { VtnMoMgr vtn; ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.AdaptValToVtnService(ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.AdaptValToVtnService(ikey)); } TEST_F(VtnMoMgrTest, AdaptValToVtnService_ikey) { @@ -3144,9 +3625,13 @@ TEST_F(VtnMoMgrTest, AdaptValToVtnService_ikey) { valst->valid[0] = UNC_VF_VALID; valst->oper_status = UPLL_OPER_STATUS_UP; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, valst); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.AdaptValToVtnService(ikey)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, valst); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.AdaptValToVtnService(ikey)); delete ikey; } @@ -3155,9 +3640,12 @@ TEST_F(VtnMoMgrTest, AdaptValToVtnService_ConfigVal_NULL) { key_vtn *key; GetKeyStruct(key); - ConfigVal *config_val= NULL; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.AdaptValToVtnService(ikey)); + ConfigVal *config_val = NULL; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.AdaptValToVtnService(ikey)); delete ikey; } @@ -3167,7 +3655,8 @@ TEST_F(VtnMoMgrTest, GetControllerDomainSpan_ikey) { DalDmlIntf *dmi(getDalDmlIntf()); upll_keytype_datatype_t dtType = UPLL_DT_STATE; std::list list_ctrlr_dom; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetControllerDomainSpan(ikey,dtType,dmi,list_ctrlr_dom)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetControllerDomainSpan(ikey, dtType, dmi, list_ctrlr_dom)); delete ikey; } @@ -3175,9 +3664,10 @@ TEST_F(VtnMoMgrTest, GetControllerDomainSpan_datatype_STATE) { VtnMoMgr vtn; ConfigKeyVal *ikey = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; std::list list_ctrlr_dom; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetControllerDomainSpan(ikey,dt_type,dmi,list_ctrlr_dom)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetControllerDomainSpan(ikey, dt_type, dmi, list_ctrlr_dom)); delete ikey; } @@ -3187,15 +3677,22 @@ TEST_F(VtnMoMgrTest, GetControllerDomainSpan_ikey_01) { val_vtn_t *val; GetKeyValStruct(key, val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::EXECUTE_QUERY,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcRecordNoMore); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::EXECUTE_QUERY, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcRecordNoMore); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); upll_keytype_datatype_t dtType = UPLL_DT_STATE; std::list list_ctrlr_dom; - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.GetControllerDomainSpan(ikey,dtType,dmi,list_ctrlr_dom)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.GetControllerDomainSpan(ikey, dtType, dmi, list_ctrlr_dom)); delete ikey; } @@ -3205,21 +3702,28 @@ TEST_F(VtnMoMgrTest, GetControllerDomainSpan_ikey_02) { key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); upll_keytype_datatype_t dtType = UPLL_DT_STATE; std::list list_ctrlr_dom; key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"ctr_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->ctrlr_id, "ctr_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); ikey->set_user_data((void*)user_data); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetControllerDomainSpan(ikey,dtType,dmi,list_ctrlr_dom)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetControllerDomainSpan(ikey, dtType, dmi, list_ctrlr_dom)); delete ikey; } @@ -3227,78 +3731,105 @@ TEST_F(VtnMoMgrTest, GetControllerDomainSpan_default) { VtnMoMgr vtn; ConfigKeyVal *ikey = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetControllerDomainSpan(ikey,dt_type,dmi)); + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetControllerDomainSpan(ikey, dt_type, dmi)); delete ikey; } + TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_ikey_NULL) { VtnMoMgr vtn; - ConfigKeyVal *ikey = NULL; + key_vtn_t *key; + val_vtn_t *val; + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } + TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_ikey_proper) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_val_vtnstation_valid) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); key_vtnstation_controller_t *keyvtnsta (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(keyvtnsta->controller_name,"controller_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + keyvtnsta->controller_name, "controller_name", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st *valVtnsta (ZALLOC_TYPE(val_vtnstation_controller_st)); -ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_val_vtnstation_ALL_VALID_01) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); key_vtnstation_controller_t *keyvtnsta (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(keyvtnsta->controller_name,"controller_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + keyvtnsta->controller_name, "controller_name", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st *valVtnsta (ZALLOC_TYPE(val_vtnstation_controller_st)); - uuu::upll_strncpy(valVtnsta->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); valVtnsta->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; valVtnsta->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; valVtnsta->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; -ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } @@ -3306,185 +3837,241 @@ TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_val_vtnstation_ALL_VALID_02) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); key_vtnstation_controller_t *keyvtnsta (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(keyvtnsta->controller_name,"controller_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + keyvtnsta->controller_name, "controller_name", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st *valVtnsta (ZALLOC_TYPE(val_vtnstation_controller_st)); - uuu::upll_strncpy(valVtnsta->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); valVtnsta->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; valVtnsta->valid[UPLL_IDX_VBR_NAME_VSCS] = UNC_VF_VALID; valVtnsta->valid[UPLL_IDX_VBR_IF_NAME_VSCS] = UNC_VF_VALID; -ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_vtn_valid_01) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); key_vtnstation_controller_t *keyvtnsta (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(keyvtnsta->controller_name,"controller_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + keyvtnsta->controller_name, "controller_name", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st *valVtnsta (ZALLOC_TYPE(val_vtnstation_controller_st)); - uuu::upll_strncpy(valVtnsta->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); valVtnsta->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; - uuu::upll_strncpy(valVtnsta->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + uuu::upll_strncpy( + valVtnsta->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_vtn_valid_02) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); key_vtnstation_controller_t *keyvtnsta (ZALLOC_TYPE(key_vtnstation_controller_t)); - uuu::upll_strncpy(keyvtnsta->controller_name,"controller_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + keyvtnsta->controller_name, "controller_name", (kMaxLenCtrlrId + 1)); val_vtnstation_controller_st *valVtnsta (ZALLOC_TYPE(val_vtnstation_controller_st)); - uuu::upll_strncpy(valVtnsta->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->domain_id,"domain_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->domain_id, "domain_id1", (kMaxLenCtrlrId + 1)); valVtnsta->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; valVtnsta->valid[UPLL_IDX_DOMAIN_ID_VSCS] = UNC_VF_VALID; - uuu::upll_strncpy(valVtnsta->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + uuu::upll_strncpy( + valVtnsta->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlStation_vtn_valid_03) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *rec_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *rec_count = &ckv_count1; DalDmlIntf *dmi(getDalDmlIntf()); key_vtnstation_controller_t *keyvtnsta (ZALLOC_TYPE(key_vtnstation_controller_t)); -uuu::upll_strncpy(keyvtnsta->controller_name,"controller_name", (kMaxLenCtrlrId - + 1)); + uuu::upll_strncpy( + keyvtnsta->controller_name, "controller_name", (kMaxLenCtrlrId + + 1)); val_vtnstation_controller_st *valVtnsta (ZALLOC_TYPE(val_vtnstation_controller_st)); - uuu::upll_strncpy(valVtnsta->vtn_name,"vtn_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->domain_id,"domain_id1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vtn_name, "vtn_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->domain_id, "domain_id1", (kMaxLenCtrlrId + 1)); valVtnsta->valid[UPLL_IDX_VTN_NAME_VSCS] = UNC_VF_VALID; valVtnsta->valid[UPLL_IDX_DOMAIN_ID_VSCS] = UNC_VF_VALID; - uuu::upll_strncpy(valVtnsta->vbr_name,"vbr_name", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(valVtnsta->vbrif_name,"vbrif_name", (kMaxLenCtrlrId + 1)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlStation(req,ikey,dmi,rec_count)); + uuu::upll_strncpy( + valVtnsta->vbr_name, "vbr_name", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + valVtnsta->vbrif_name, "vbrif_name", (kMaxLenCtrlrId + 1)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnstationControllerSt, valVtnsta); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTNSTATION_CONTROLLER, + IpctSt::kIpcStValVtnstationControllerSt, keyvtnsta, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlStation(req, ikey, dmi, rec_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlVtnMapping_ikey) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *ckv_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *ckv_count = &ckv_count1; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); req->rep_count = 2; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlVtnMapping(req,ikey,dmi,ckv_count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlVtnMapping(req, ikey, dmi, ckv_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlVtnMapping_ikey_Proper) { VtnMoMgr vtn; IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *ckv_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *ckv_count = &ckv_count1; req->rep_count = 2; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ReadSingleCtlrlVtnMapping(req,ikey,dmi,ckv_count)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ReadSingleCtlrlVtnMapping(req, ikey, dmi, ckv_count)); delete ikey; } TEST_F(VtnMoMgrTest, ReadSingleCtlrlVtnMapping_ikey_Proper_03) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcRecordNoMore); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcRecordNoMore); IPC_REQ_RESP_HEADER_DECL(req); - uint32_t ckv_count1=1; - uint32_t *ckv_count=&ckv_count1; + uint32_t ckv_count1 = 1; + uint32_t *ckv_count = &ckv_count1; req->rep_count = 2; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, vtn.ReadSingleCtlrlVtnMapping(req,ikey,dmi,ckv_count)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.ReadSingleCtlrlVtnMapping(req, ikey, dmi, ckv_count)); delete ikey; } TEST_F(VtnMoMgrTest, MergeValidate_Error) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); - - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); + + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; const char *ctrlr_id = "Controller1"; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.MergeValidate(UNC_KT_VTN, ctrlr_id, - ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MergeValidate(UNC_KT_VTN, ctrlr_id, + ikey, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, MergeValidate_success) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); - - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); + + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); VtnMoMgr vtn; key_vtn_t *key; @@ -3492,209 +4079,270 @@ TEST_F(VtnMoMgrTest, MergeValidate_success) { GetKeyValStruct(key, val); const char *ctrlr_id = "Controller1"; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.MergeValidate(UNC_KT_VTN, ctrlr_id, - ikey, dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.MergeValidate(UNC_KT_VTN, ctrlr_id, + ikey, dmi)); delete ikey; } - +# if 0 TEST_F(VtnMoMgrTest, ControllerStatusHandler_01) { - bool operstatus=true; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + pfc_log_set_level(PFC_LOGLVL_VERBOSE); + bool operstatus = true; + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + GetKeyValStruct(keyvtn, valVtn); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.ControllerStatusHandler( ctr_id1, - dmi, operstatus)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ControllerStatusHandler(ctr_id1, + dmi, operstatus)); delete ikey; free(ctr_id1); } +# endif TEST_F(VtnMoMgrTest, ControllerStatusHandler_02) { - bool operstatus=true; + bool operstatus = true; VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t *ctrlr_id=NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.ControllerStatusHandler( ctrlr_id, - dmi, operstatus)); + uint8_t *ctrlr_id = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ControllerStatusHandler(ctrlr_id, + dmi, operstatus)); delete ikey; } +# if 0 TEST_F(VtnMoMgrTest, ControllerStatusHandler_03) { - bool operstatus=true; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + pfc_log_set_level(PFC_LOGLVL_VERBOSE); + bool operstatus = true; + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.ControllerStatusHandler( ctr_id1, - dmi, operstatus)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ControllerStatusHandler(ctr_id1, + dmi, operstatus)); delete ikey; free(ctr_id1); } +# endif TEST_F(VtnMoMgrTest, ControllerStatusHandler_04) { - bool operstatus=true; + bool operstatus = true; VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.ControllerStatusHandler( ctr_id1, - dmi, operstatus)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ControllerStatusHandler(ctr_id1, + dmi, operstatus)); delete ikey; free(ctr_id1); } TEST_F(VtnMoMgrTest, IsReferenced_01) { VtnMoMgr vtn; - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); - DalDmlIntf *dmi=NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.IsReferenced(ikey,dt_type,dmi)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); + DalDmlIntf *dmi = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.IsReferenced(ikey, dt_type, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, IsReferenced_02) { VtnMoMgr vtn; - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.IsReferenced(ikey,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.IsReferenced(ikey, dt_type, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, IsReferenced_03) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - upll_keytype_datatype_t dt_type=UPLL_DT_STATE; + upll_keytype_datatype_t dt_type = UPLL_DT_STATE; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_CFG_SEMANTIC, vtn.IsReferenced(ikey,dt_type,dmi)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SEMANTIC, vtn.IsReferenced(ikey, dt_type, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateOperStatus_01) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateOperStatus( ikey, - dmi, notification, true)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateOperStatus(ikey, + dmi, notification, true)); delete ikey; free(ctr_id1); } TEST_F(VtnMoMgrTest, UpdateOperStatus_02) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); - state_notification notification=kPortFaultReset; + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); + state_notification notification = kPortFaultReset; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"Controller1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->ctrlr_id, "Controller1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); ikey->set_user_data((void*)user_data); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateOperStatus( ikey, - dmi, notification, true)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateOperStatus(ikey, + dmi, notification, true)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateOperStatus_03) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcRecordNoMore); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::CREATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcRecordNoMore); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::CREATE_RECORD, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); - state_notification notification=kPortFaultReset; + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); + state_notification notification = kPortFaultReset; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"Controller1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->ctrlr_id, "Controller1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); ikey->set_user_data((void*)user_data); - EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE,vtn.UpdateOperStatus( ikey, dmi, notification, true)); + EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, + vtn.UpdateOperStatus(ikey, dmi, notification, true)); delete ikey; } TEST_F(VtnMoMgrTest, GetRenamedUncKey_01) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE , kDalRcSuccess); VtnMoMgr vtn; upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); @@ -3703,9 +4351,13 @@ TEST_F(VtnMoMgrTest, GetRenamedUncKey_01) { key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetRenamedUncKey(ikey,dt_type,dmi,ctr_id1)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetRenamedUncKey(ikey, dt_type, dmi, ctr_id1)); delete ikey; free(ctr_id1); } @@ -3717,15 +4369,19 @@ TEST_F(VtnMoMgrTest, GetRenamedUncKey_02) { uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenamedUncKey(ikey,dt_type,dmi,ctr_id1)); - delete ikey; + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, keyvtn, NULL); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenamedUncKey(ikey, dt_type, dmi, ctr_id1)); + delete ikey; free(ctr_id1); } TEST_F(VtnMoMgrTest, GetRenamedUncKey_03) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE , kDalRcSuccess); VtnMoMgr vtn; upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); @@ -3733,9 +4389,13 @@ TEST_F(VtnMoMgrTest, GetRenamedUncKey_03) { key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetRenamedUncKey(ikey,dt_type,dmi,ctr_id1)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetRenamedUncKey(ikey, dt_type, dmi, ctr_id1)); delete ikey; free(ctr_id1); } @@ -3749,27 +4409,39 @@ TEST_F(VtnMoMgrTest, GetRenamedUncKey_04) { key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, keyvtn, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenamedUncKey(ikey,dt_type,dmi,ctr_id1)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenamedUncKey(ikey, dt_type, dmi, ctr_id1)); delete ikey; free(ctr_id1); } TEST_F(VtnMoMgrTest, GetRenamedControllerKey_01) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); upll_keytype_datatype_t dt_type = UPLL_DT_IMPORT; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); @@ -3780,7 +4452,8 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_01) { ctrlr_dom.ctrlr = ctr_id1; ctrlr_dom.domain = dom_id1; EXPECT_EQ(UPLL_RC_SUCCESS, - vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); + + vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); delete ikey; free(ctr_id1); free(dom_id1); @@ -3788,16 +4461,22 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_01) { TEST_F(VtnMoMgrTest, GetRenamedControllerKey_02) { DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); upll_keytype_datatype_t dt_type = UPLL_DT_IMPORT; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); @@ -3810,25 +4489,33 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_02) { UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); SET_USER_DATA_FLAGS(ikey, 0x01); EXPECT_EQ(UPLL_RC_SUCCESS, - vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); + + vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); delete ikey; free(ctr_id1); free(dom_id1); } TEST_F(VtnMoMgrTest, GetRenamedControllerKey_03) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcRecordNoMore); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcRecordNoMore); VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); upll_keytype_datatype_t dt_type = UPLL_DT_IMPORT; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); @@ -3841,7 +4528,7 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_03) { UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); SET_USER_DATA_FLAGS(ikey, 0x01); EXPECT_EQ(UPLL_RC_ERR_NO_SUCH_INSTANCE, - vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); + vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); delete ikey; free(ctr_id1); free(dom_id1); @@ -3851,30 +4538,40 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_04) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); upll_keytype_datatype_t dt_type = UPLL_DT_IMPORT; DalDmlIntf *dmi(getDalDmlIntf()); - controller_domain *ctrlr_dom=NULL; + controller_domain *ctrlr_dom = NULL; SET_USER_DATA_FLAGS(ikey, 0x01); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenamedControllerKey(ikey,dt_type,dmi,ctrlr_dom)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenamedControllerKey(ikey, dt_type, dmi, ctrlr_dom)); delete ikey; } TEST_F(VtnMoMgrTest, GetRenamedControllerKey_05) { DalOdbcMgr::stub_setSingleRecordExists(true); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_EXISTS,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::RECORD_COUNT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_EXISTS, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::RECORD_COUNT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); upll_keytype_datatype_t dt_type = UPLL_DT_IMPORT; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); @@ -3887,20 +4584,25 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_05) { UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); SET_USER_DATA_FLAGS(ikey, 0x01); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); + + vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); delete ikey; free(ctr_id1); free(dom_id1); } TEST_F(VtnMoMgrTest, GetRenamedControllerKey_ikey_NULL) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE , kDalRcSuccess); VtnMoMgr vtn; key_vtn_t *keyvtn(ZALLOC_TYPE(key_vtn_t)); val_vtn_t *valVtn(ZALLOC_TYPE(val_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); @@ -3910,17 +4612,21 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_ikey_NULL) { controller_domain ctrlr_dom1; ctrlr_dom1.ctrlr = ctr_id1; ctrlr_dom1.domain = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenamedControllerKey(ikey,dt_type,dmi,&ctrlr_dom1)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom1)); delete ikey; free(ctr_id1); free(dom_id1); } TEST_F(VtnMoMgrTest, GetRenamedControllerKey_ikey_01) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE ,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE , kDalRcSuccess); VtnMoMgr vtn; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, NULL); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, NULL, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, NULL, config_val); upll_keytype_datatype_t dt_type = UPLL_DT_CANDIDATE; DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); @@ -3931,7 +4637,8 @@ TEST_F(VtnMoMgrTest, GetRenamedControllerKey_ikey_01) { ctrlr_dom.ctrlr = ctr_id1; ctrlr_dom.domain = dom_id1; SET_USER_DATA_FLAGS(ikey, 0x01); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenamedControllerKey(ikey,dt_type,dmi,&ctrlr_dom)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenamedControllerKey(ikey, dt_type, dmi, &ctrlr_dom)); delete ikey; free(ctr_id1); free(dom_id1); @@ -3941,21 +4648,26 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Update) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); strcpy((char *)keyvtn->vtn_name, (const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key1(UT_CLONE(key_vtn_t, keyvtn)); val_vtn_t *val1(UT_CLONE(val_vtn_t, valVtn)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); - uint32_t driver_result=UPLL_RC_SUCCESS; + uint32_t driver_result = UPLL_RC_SUCCESS; EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, driver_result, + + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, driver_result, upd_key, dmi)); delete ikey; delete upd_key; @@ -3963,24 +4675,31 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Update) { TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Update_01) { VtnMoMgr vtn; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::CREATE_RECORD,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::CREATE_RECORD, kDalRcSuccess); key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key1(UT_CLONE(key_vtn_t, keyvtn)); val_vtn_t *val1(UT_CLONE(val_vtn_t, valVtn)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); - uint32_t driver_result=UPLL_RC_SUCCESS; + uint32_t driver_result = UPLL_RC_SUCCESS; EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, driver_result, + + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, driver_result, upd_key, dmi)); delete ikey; delete upd_key; @@ -3990,22 +4709,27 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Create) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); strcpy((char *)keyvtn->vtn_name, (const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key1(UT_CLONE(key_vtn_t, keyvtn)); val_vtn_t *val1(UT_CLONE(val_vtn_t, valVtn)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); - uint32_t driver_result=UPLL_RC_SUCCESS; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateVtnConfigStatus(ikey, UNC_OP_CREATE, - driver_result, - upd_key,dmi)); + uint32_t driver_result = UPLL_RC_SUCCESS; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_CREATE, + driver_result, + upd_key, dmi)); delete ikey; delete upd_key; } @@ -4014,21 +4738,26 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Delete) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); strcpy((char *)keyvtn->vtn_name, (const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key1(UT_CLONE(key_vtn_t, keyvtn)); val_vtn_t *val1(UT_CLONE(val_vtn_t, valVtn)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); - uint32_t driver_result=UPLL_RC_SUCCESS; + uint32_t driver_result = UPLL_RC_SUCCESS; EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.UpdateVtnConfigStatus(ikey, UNC_OP_DELETE, driver_result, + + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_DELETE, driver_result, upd_key, dmi)); delete ikey; delete upd_key; @@ -4038,21 +4767,26 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Read) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); strcpy((char *)keyvtn->vtn_name, (const char *)"vtn1"); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key1(UT_CLONE(key_vtn_t, keyvtn)); val_vtn_t *val1(UT_CLONE(val_vtn_t, valVtn)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); - uint32_t driver_result=UPLL_RC_SUCCESS; + uint32_t driver_result = UPLL_RC_SUCCESS; EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.UpdateVtnConfigStatus(ikey, UNC_OP_READ, driver_result, + + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_READ, driver_result, upd_key, dmi)); delete ikey; delete upd_key; @@ -4062,16 +4796,20 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Update_ikey_Err) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); ConfigKeyVal *upd_key = NULL; - uint32_t driver_result=UPLL_RC_SUCCESS; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, - driver_result, - upd_key,dmi)); + uint32_t driver_result = UPLL_RC_SUCCESS; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, + driver_result, + upd_key, dmi)); delete ikey; } @@ -4079,16 +4817,20 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Update_Val_NULL) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); ConfigKeyVal *upd_key = NULL; - uint32_t driver_result=UPLL_RC_SUCCESS; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, - driver_result, - upd_key,dmi)); + uint32_t driver_result = UPLL_RC_SUCCESS; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_UPDATE, + driver_result, + upd_key, dmi)); delete ikey; } @@ -4096,16 +4838,20 @@ TEST_F(VtnMoMgrTest, UpdateVtnConfigStatus_Delete_ikey_Err) { VtnMoMgr vtn; key_vtn_t *keyvtn; val_vtn_t *valVtn; - GetKeyValStruct(keyvtn,valVtn); + GetKeyValStruct(keyvtn, valVtn); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, valVtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, keyvtn, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, valVtn); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + + IpctSt::kIpcStKeyVtn, keyvtn, config_val); DalDmlIntf *dmi(getDalDmlIntf()); ConfigKeyVal *upd_key = NULL; - uint32_t driver_result=UPLL_RC_SUCCESS; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateVtnConfigStatus(ikey, UNC_OP_DELETE, - driver_result, - upd_key,dmi)); + uint32_t driver_result = UPLL_RC_SUCCESS; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVtnConfigStatus(ikey, UNC_OP_DELETE, + driver_result, + upd_key, dmi)); delete ikey; } @@ -4114,36 +4860,43 @@ TEST_F(VtnMoMgrTest, CopyToConfigkey_ikeyokeyNull) { ConfigKeyVal *okey = NULL; ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.CopyToConfigKey(okey,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.CopyToConfigKey(okey, ikey)); ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.CopyToConfigKey(okey,ikey)); + + IpctSt::kIpcStKeyVtn, + NULL, NULL); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.CopyToConfigKey(okey, ikey)); delete ikey; delete okey; } TEST_F(VtnMoMgrTest, CopyToConfigkey_01) { VtnMoMgr vtn; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_rename_vnode_info *key_rename(ZALLOC_TYPE(key_rename_vnode_info)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key_rename, NULL)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.CopyToConfigKey(okey, ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.CopyToConfigKey(okey, ikey)); delete ikey; delete okey; } TEST_F(VtnMoMgrTest, CopyToConfigkey_02) { VtnMoMgr vtn; - ConfigKeyVal *okey=NULL; + ConfigKeyVal *okey = NULL; key_rename_vnode_info *key_rename(ZALLOC_TYPE(key_rename_vnode_info)); pfc_strlcpy(reinterpret_cast(key_rename->old_unc_vtn_name), "VTN_1", sizeof(key_rename->old_unc_vtn_name)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key_rename, NULL)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.CopyToConfigKey(okey, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.CopyToConfigKey(okey, ikey)); delete ikey; delete okey; } @@ -4158,24 +4911,28 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_Create) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); key_vtn_t *key1(UT_CLONE(key_vtn_t, key)); val_vtn_t *val1(UT_CLONE(val_vtn_t, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); key_vtn_t *key2(UT_CLONE(key_vtn_t, key)); val_vtn_t *val2(UT_CLONE(val_vtn_t, val)); ConfigVal *cfgval2(new ConfigVal(IpctSt::kIpcStValVtn, val2)); - ConfigKeyVal *ctrlr_run(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ctrlr_run(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key2, cfgval2)); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,ctrlr_run)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, ctrlr_run)); delete ikey; delete upd_key; delete ctrlr_run; @@ -4187,16 +4944,19 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_ValVTN_NULL) { key_vtn *key(ZALLOC_TYPE(key_vtn)); UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); ConfigVal *cfgval(new ConfigVal(IpctSt::kIpcStValVtn, NULL)); - ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, cfgval)); key_vtn_t *key1(UT_CLONE(key_vtn_t, key)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, NULL)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, + + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); delete ikey; delete upd_key; @@ -4212,13 +4972,15 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_ConfigKeyVal_NULL) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); ConfigKeyVal *upd_key = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, ikey)); delete ikey; } @@ -4231,17 +4993,20 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_PFC) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); key_vtn_t *key1(UT_CLONE(key_vtn_t, key)); val_vtn_t *val1(UT_CLONE(val_vtn_t, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, + + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, UPLL_RC_SUCCESS, upd_key, dmi, ikey)); delete ikey; delete upd_key; @@ -4256,34 +5021,46 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_OP_Update_01) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_ctrlr_t *val_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr->ref_count=1; - val_ctrlr->down_count=1; + val_ctrlr->ref_count = 1; + val_ctrlr->down_count = 1; UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); ConfigVal *cfgval1 = new ConfigVal(IpctSt::kIpcStValVtn, val_ctrlr); ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtnController, - key_ctrlr, cfgval1); + + IpctSt::kIpcStKeyVtnController, + key_ctrlr, cfgval1); const char* version("version"); - CtrlrMgr::Ctrlr ctrl("controller_name1",UNC_CT_PFC,version); - CtrlrMgr::Ctrlr* ctrl1( new CtrlrMgr::Ctrlr(ctrl,UPLL_DT_CANDIDATE)); + CtrlrMgr::Ctrlr ctrl("controller_name1", UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_CANDIDATE)); CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->ctrlr_id, "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); upd_key->set_user_data((void*)user_data); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, true); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_CREATE_CAPABILITY, true); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_UPDATE, - UPLL_RC_SUCCESS, - upd_key,dmi,upd_key)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_UPDATE, + UPLL_RC_SUCCESS, + upd_key, dmi, upd_key)); delete ikey; delete upd_key; } @@ -4297,41 +5074,54 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_OP_Update_02) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_ctrlr_t *val_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr->ref_count=3; - val_ctrlr->down_count=1; + val_ctrlr->ref_count = 3; + val_ctrlr->down_count = 1; UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); ConfigVal *cfgval1 = new ConfigVal(IpctSt::kIpcStValVtn, val_ctrlr); ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtnController, - key_ctrlr, cfgval1); + + IpctSt::kIpcStKeyVtnController, + key_ctrlr, cfgval1); const char* version("version"); - CtrlrMgr::Ctrlr ctrl("controller_name1",UNC_CT_PFC,version); - CtrlrMgr::Ctrlr* ctrl1( new CtrlrMgr::Ctrlr(ctrl,UPLL_DT_CANDIDATE)); + CtrlrMgr::Ctrlr ctrl("controller_name1", UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_CANDIDATE)); CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->ctrlr_id, "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); upd_key->set_user_data((void*)user_data); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, true); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_CREATE_CAPABILITY, true); key_vtn_controller_t *key_ctrlr2(UT_CLONE(key_vtn_controller_t, key_ctrlr)); val_vtn_ctrlr_t *val_ctrlr2(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr2->ref_count=1; - val_ctrlr2->down_count=0; + val_ctrlr2->ref_count = 1; + val_ctrlr2->down_count = 0; ConfigVal *cfgval2(new ConfigVal(IpctSt::kIpcStValVtn, val_ctrlr2)); ConfigKeyVal *upd_key2(new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtnController, + + IpctSt::kIpcStKeyVtnController, key_ctrlr2, cfgval2)); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, + + vtn.UpdateConfigStatus(ikey, UNC_OP_UPDATE, UPLL_RC_SUCCESS, upd_key, dmi, upd_key2)); delete ikey; delete upd_key; @@ -4347,19 +5137,22 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_invalidOP) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); key_vtn_t *key1(UT_CLONE(key_vtn_t, key)); val_vtn_t *val1(UT_CLONE(val_vtn_t, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *upd_key(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_READ, - UPLL_RC_SUCCESS, - upd_key,dmi,ikey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_READ, + UPLL_RC_SUCCESS, + upd_key, dmi, ikey)); delete ikey; delete upd_key; } @@ -4373,34 +5166,46 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_OP_Create) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_ctrlr_t *val_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr->ref_count=1; - val_ctrlr->down_count=1; + val_ctrlr->ref_count = 1; + val_ctrlr->down_count = 1; UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); ConfigVal *cfgval1 = new ConfigVal(IpctSt::kIpcStValVtn, val_ctrlr); ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtnController, - key_ctrlr, cfgval1); + + IpctSt::kIpcStKeyVtnController, + key_ctrlr, cfgval1); const char* version("version"); - CtrlrMgr::Ctrlr ctrl("controller_name1",UNC_CT_PFC,version); - CtrlrMgr::Ctrlr* ctrl1( new CtrlrMgr::Ctrlr(ctrl,UPLL_DT_CANDIDATE)); + CtrlrMgr::Ctrlr ctrl("controller_name1", UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_CANDIDATE)); CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->ctrlr_id, "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); upd_key->set_user_data((void*)user_data); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, true); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_CREATE_CAPABILITY, true); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,upd_key)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, upd_key)); delete ikey; delete upd_key; } @@ -4412,53 +5217,69 @@ TEST_F(VtnMoMgrTest, UpdateConfigStatus_OP_Create_01) { val_vtn *val; GetKeyValStruct(key, val); - val->cs_row_status=UNC_CS_NOT_APPLIED; + val->cs_row_status = UNC_CS_NOT_APPLIED; ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_ctrlr_t *val_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr->ref_count=1; - val_ctrlr->down_count=1; + val_ctrlr->ref_count = 1; + val_ctrlr->down_count = 1; UpllConfigMgr::GetUpllConfigMgr()->CreateMoManagers(); ConfigVal *cfgval1 = new ConfigVal(IpctSt::kIpcStValVtn, val_ctrlr); ConfigKeyVal *upd_key = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtnController, - key_ctrlr, cfgval1); + + IpctSt::kIpcStKeyVtnController, + key_ctrlr, cfgval1); const char* version("version"); - CtrlrMgr::Ctrlr ctrl("controller_name1",UNC_CT_PFC,version); - CtrlrMgr::Ctrlr* ctrl1( new CtrlrMgr::Ctrlr(ctrl,UPLL_DT_CANDIDATE)); + CtrlrMgr::Ctrlr ctrl("controller_name1", UNC_CT_PFC, version); + CtrlrMgr::Ctrlr* ctrl1(new CtrlrMgr::Ctrlr(ctrl, UPLL_DT_CANDIDATE)); CtrlrMgr::GetInstance()->ctrlrs_.push_back(ctrl1); key_user_data_t *user_data(ZALLOC_TYPE(key_user_data_t)); - uuu::upll_strncpy(user_data->ctrlr_id,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(user_data->domain_id,"dom_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->ctrlr_id, "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + user_data->domain_id, "dom_id", (kMaxLenCtrlrId + 1)); upd_key->set_user_data((void*)user_data); - CapaModuleStub::stub_setResultcode(CapaModuleStub::GET_CREATE_CAPABILITY, true); - - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,upd_key)); - val->cs_row_status=UNC_CS_PARTIALLY_APPLIED; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,upd_key)); - val->cs_row_status=UNC_CS_INVALID; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,upd_key)); - val->cs_row_status=UNC_CS_UNKNOWN; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,upd_key)); - val->cs_row_status=UNC_CS_NOT_SUPPORTED; - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, - UPLL_RC_SUCCESS, - upd_key,dmi,upd_key)); + CapaModuleStub::stub_setResultcode( + CapaModuleStub::GET_CREATE_CAPABILITY, true); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, upd_key)); + val->cs_row_status = UNC_CS_PARTIALLY_APPLIED; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, upd_key)); + val->cs_row_status = UNC_CS_INVALID; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, upd_key)); + val->cs_row_status = UNC_CS_UNKNOWN; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, upd_key)); + val->cs_row_status = UNC_CS_NOT_SUPPORTED; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateConfigStatus(ikey, UNC_OP_CREATE, + UPLL_RC_SUCCESS, + upd_key, dmi, upd_key)); delete ikey; delete upd_key; } @@ -4471,8 +5292,9 @@ TEST_F(VtnMoMgrTest, ValidateCapability_Success) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); CtrlrMgr::Ctrlr ctrlrobj("CTR_1", UNC_CT_PFC, "5.0"); @@ -4487,17 +5309,21 @@ TEST_F(VtnMoMgrTest, ValidateCapability_Success) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vtn.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vtn.ValidateCapability(req, ikey, "CTR_1")); val_vbr* no_val = NULL; cfgval = new ConfigVal(IpctSt::kIpcStValVbr, no_val); ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); - EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, vtn.ValidateCapability(req, ikey, "CTR_1")); + + IpctSt::kIpcStKeyVtn, + key, cfgval); + EXPECT_EQ(UPLL_RC_ERR_NOT_SUPPORTED_BY_CTRLR, + vtn.ValidateCapability(req, ikey, "CTR_1")); req->operation = UNC_OP_DELETE; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateCapability(req, ikey, "CTR_1")); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateCapability(req, ikey, "CTR_1")); CtrlrMgr::GetInstance()->Delete("CTR_1", UPLL_DT_CANDIDATE); delete ikey; @@ -4506,9 +5332,10 @@ TEST_F(VtnMoMgrTest, ValidateCapability_Success) { TEST_F(VtnMoMgrTest, ValidateCapability_ikey_NULL) { VtnMoMgr vtn; ConfigKeyVal *ikey = NULL; - IpcReqRespHeader *req=NULL; - const char *ctrlr_name="ctr1"; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateCapability(req, ikey, ctrlr_name)); + IpcReqRespHeader *req = NULL; + const char *ctrlr_name = "ctr1"; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateCapability(req, ikey, ctrlr_name)); } TEST_F(VtnMoMgrTest, ValidateCapability_ctrName_NULL) { @@ -4519,12 +5346,14 @@ TEST_F(VtnMoMgrTest, ValidateCapability_ctrName_NULL) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); - const char *ctrlr_name=NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateCapability(req, ikey, ctrlr_name)); + const char *ctrlr_name = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateCapability(req, ikey, ctrlr_name)); delete ikey; } @@ -4533,7 +5362,8 @@ TEST_F(VtnMoMgrTest, GetChildConfigKey_SuccessNullObjs) { VtnMoMgr vtn; ConfigKeyVal *okey = NULL; ConfigKeyVal *pkey = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS,vtn.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; } @@ -4542,10 +5372,12 @@ TEST_F(VtnMoMgrTest, GetChildConfigKey_pkeyNull) { VtnMoMgr vtn; ConfigKeyVal *okey = NULL; ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.GetChildConfigKey(okey, pkey)); + IpctSt::kIpcStKeyVtn, + NULL, NULL); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; } @@ -4553,13 +5385,15 @@ TEST_F(VtnMoMgrTest, GetChildConfigKey_pkeyNull) { TEST_F(VtnMoMgrTest, GetChildConfigKey_pkeyNull_okey_NotNull) { VtnMoMgr vtn; key_vbr_t *key(ZALLOC_TYPE(key_vbr_t)); - strncpy((char*) key->vbridge_name,"VTN1",32); + strncpy((char*) key->vbridge_name, "VTN1", 32); ConfigKeyVal *pkey = NULL; ConfigKeyVal *okey = new ConfigKeyVal(UNC_KT_VBRIDGE, - IpctSt::kIpcStKeyVbr,key,NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,vtn.GetChildConfigKey(okey, pkey)); + IpctSt::kIpcStKeyVbr, key, NULL); + + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetChildConfigKey(okey, pkey)); delete okey; } @@ -4567,16 +5401,18 @@ TEST_F(VtnMoMgrTest, GetChildConfigKey_Vtn) { VtnMoMgr vtn; ConfigKeyVal *okey = NULL; key_vtn_t *key(ZALLOC_TYPE(key_vtn_t)); - strncpy((char*) key->vtn_name,"VTN1",32); + strncpy((char*) key->vtn_name, "VTN1", 32); ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, NULL); - EXPECT_EQ(UPLL_RC_SUCCESS,vtn.GetChildConfigKey(okey, pkey)); + IpctSt::kIpcStKeyVtn, + key, NULL); + + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetChildConfigKey(okey, pkey)); key_vtn_t *output = reinterpret_cast (okey->get_key()); - EXPECT_STREQ("VTN1",(reinterpret_cast (output->vtn_name))); + EXPECT_STREQ("VTN1", (reinterpret_cast (output->vtn_name))); delete okey; delete pkey; } @@ -4584,15 +5420,18 @@ TEST_F(VtnMoMgrTest, GetChildConfigKey_Vtn) { TEST_F(VtnMoMgrTest, GetChildConfigKey_okey_Not_NULL) { VtnMoMgr vtn; key_vtn_t *key(ZALLOC_TYPE(key_vtn_t)); - strncpy((char*) key->vtn_name,"VTN1",32); + strncpy((char*) key->vtn_name, "VTN1", 32); key_vtn_t *key1(UT_CLONE(key_vtn_t, key)); - ConfigKeyVal *pkey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *pkey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, NULL)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, NULL)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.GetChildConfigKey(okey, pkey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; @@ -4602,13 +5441,15 @@ TEST_F(VtnMoMgrTest, GetChildConfigKey_Vbr) { VtnMoMgr vtn; ConfigKeyVal *okey = NULL; key_vtn_t *key(ZALLOC_TYPE(key_vtn_t)); - strncpy((char*) key->vtn_name,"VTN1",32); + strncpy((char*) key->vtn_name, "VTN1", 32); ConfigKeyVal *pkey = new ConfigKeyVal(UNC_KT_VBRIDGE, - IpctSt::kIpcStKeyVtn, - key, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC,vtn.GetChildConfigKey(okey, pkey)); + IpctSt::kIpcStKeyVtn, + key, NULL); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetChildConfigKey(okey, pkey)); delete okey; delete pkey; } @@ -4619,13 +5460,17 @@ TEST_F(VtnMoMgrTest, IsKeyInUse_ikey_Error) { val_vtn *val; GetKeyValStruct(key, val); - upll_keytype_datatype_t dt_type=UPLL_DT_RUNNING; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); bool in_use; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.IsKeyInUse(dt_type,ikey,&in_use,dmi)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.IsKeyInUse(dt_type, ikey, &in_use, dmi)); delete ikey; } @@ -4635,26 +5480,32 @@ TEST_F(VtnMoMgrTest, IsKeyInUse_invalid_ctrlrName) { val_vtn *val; GetKeyValStruct(key, val); - upll_keytype_datatype_t dt_type=UPLL_DT_RUNNING; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); bool in_use; - memset(key,0,sizeof(key_vtn)); + memset(key, 0, sizeof(key_vtn)); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.IsKeyInUse(dt_type,ikey,&in_use,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.IsKeyInUse(dt_type, ikey, &in_use, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, IsKeyInUse_ikey_NULL) { VtnMoMgr vtn; - upll_keytype_datatype_t dt_type=UPLL_DT_RUNNING; + upll_keytype_datatype_t dt_type = UPLL_DT_RUNNING; DalDmlIntf *dmi(getDalDmlIntf()); bool in_use; - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, NULL, NULL); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.IsKeyInUse(dt_type,ikey,&in_use,dmi)); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, NULL, NULL); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.IsKeyInUse(dt_type, ikey, &in_use, dmi)); delete ikey; } @@ -4666,8 +5517,9 @@ TEST_F(VtnMoMgrTest, ValidateMessage_01) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); req->clnt_sess_id = 5; @@ -4678,16 +5530,19 @@ TEST_F(VtnMoMgrTest, ValidateMessage_01) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey)); key_vtn *key1(UT_CLONE(key_vtn, key)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, NULL)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey1)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey1)); val_rename_vtn *renameval(ZALLOC_TYPE(val_rename_vtn)); - for(unsigned int loop = 0; loop < sizeof(renameval->valid)/ - sizeof(renameval->valid[0]); ++loop) { - renameval->valid[loop] = UNC_VF_VALID; + for (unsigned int loop = 0; loop < sizeof(renameval->valid)/ + sizeof(renameval->valid[0]); ++loop) { + renameval->valid[loop] = UNC_VF_VALID; } strncpy(reinterpret_cast(renameval->new_name), "renamed", strlen("renamed")+1); @@ -4695,34 +5550,42 @@ TEST_F(VtnMoMgrTest, ValidateMessage_01) { key_vtn *key2(UT_CLONE(key_vtn, key)); ConfigVal *rename_cfgval(new ConfigVal(IpctSt::kIpcStValRenameVtn, renameval)); - ConfigKeyVal *rename_ikey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *rename_ikey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key2, rename_cfgval)); req->operation = UNC_OP_RENAME; req->datatype = UPLL_DT_IMPORT; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, rename_ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, rename_ikey)); key_vtn *key3(UT_CLONE(key_vtn, key)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key3, NULL)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessage(req, ikey3)); key_vtn *key4(UT_CLONE(key_vtn, key)); ConfigVal *cfgval4(new ConfigVal(IpctSt::kIpcStValVtn, NULL)); - ConfigKeyVal *ikey4(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey4(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key4, cfgval4)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.ValidateMessage(req, ikey4)); req->operation = UNC_OP_READ_SIBLING; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, rename_ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, rename_ikey)); key_vtn *key5(UT_CLONE(key_vtn, key)); ConfigVal *invrename_cfgval(new ConfigVal(IpctSt::kIpcStValRenameVtn, NULL)); ConfigKeyVal *invrename_ikey(new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, + + IpctSt::kIpcStKeyVtn, key5, invrename_cfgval)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, invrename_ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, invrename_ikey)); const char *vtn_name1 = " "; key_vtn *key6(ZALLOC_TYPE(key_vtn)); @@ -4730,28 +5593,34 @@ TEST_F(VtnMoMgrTest, ValidateMessage_01) { strncpy(reinterpret_cast(key6->vtn_name), vtn_name1, strlen(vtn_name1)+1); ConfigVal *cfgval6(new ConfigVal(IpctSt::kIpcStValVtn, val6)); - ConfigKeyVal *ikey6(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey6(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key6, cfgval6)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessage(req, ikey6)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessage(req, ikey6)); req->operation = UNC_OP_READ_SIBLING_COUNT; req->datatype = UPLL_DT_RUNNING; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey)); - ikey=NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.ValidateMessage(req, ikey)); + ikey = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.ValidateMessage(req, ikey)); key_vtn *key7(UT_CLONE(key_vtn, key)); val_vtn *val7(UT_CLONE(val_vtn, val)); ConfigVal *cfgval7(new ConfigVal(IpctSt::kIpcStValVtn, val7)); - ConfigKeyVal *ikey7( new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVbr, - key7, cfgval7)); + ConfigKeyVal *ikey7(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVbr, + key7, cfgval7)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.ValidateMessage(req, ikey7)); key_vtn *key8(UT_CLONE(key_vtn, key)); val_vtn *val8(UT_CLONE(val_vtn, val)); ConfigVal *cfgval8(new ConfigVal(IpctSt::kIpcStValVtn, val8)); - ConfigKeyVal *ikey8(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey8(new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVtn, key8, cfgval8)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.ValidateMessage(req, ikey8)); @@ -4774,8 +5643,9 @@ TEST_F(VtnMoMgrTest, ValidateMessage_02) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); req->clnt_sess_id = 5; @@ -4786,35 +5656,42 @@ TEST_F(VtnMoMgrTest, ValidateMessage_02) { req->option2 = UNC_OPT2_NONE; req->datatype = UPLL_DT_CANDIDATE; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey)); key_vtn *key1(UT_CLONE(key_vtn, key)); val_vtn *val1(UT_CLONE(val_vtn, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); req->operation = UNC_OP_CONTROL; EXPECT_EQ(UPLL_RC_ERR_NOT_ALLOWED_FOR_THIS_DT, - vtn.ValidateMessage(req, ikey1)); + vtn.ValidateMessage(req, ikey1)); req->operation = UNC_OP_UPDATE; key_vtn *key2(UT_CLONE(key_vtn, key)); val_vtn *val2(UT_CLONE(val_vtn, val)); ConfigVal *cfgval2(new ConfigVal(IpctSt::kIpcStValVbr, val2)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key2, cfgval2)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.ValidateMessage(req, ikey2)); key_vtn *key3(UT_CLONE(key_vtn, key)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key3, NULL)); - EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, vtn.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_ERR_CFG_SYNTAX, + vtn.ValidateMessage(req, ikey3)); key_vtn *key4(UT_CLONE(key_vtn, key)); ConfigVal *cfgval4(new ConfigVal(IpctSt::kIpcStValVtn, NULL)); - ConfigKeyVal *ikey4(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey4(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key4, cfgval4)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey4)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey4)); delete ikey; delete ikey1; @@ -4831,8 +5708,9 @@ TEST_F(VtnMoMgrTest, ValidateMessage_03) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); req->clnt_sess_id = 5; @@ -4854,18 +5732,22 @@ TEST_F(VtnMoMgrTest, ValidateMessage_03) { key_vtn *key1(UT_CLONE(key_vtn, key)); val_vtn *val1(UT_CLONE(val_vtn, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.ValidateMessage(req, ikey1)); key_vtn *key2(UT_CLONE(key_vtn, key)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key2, NULL)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey2)); key_vtn *key3(UT_CLONE(key_vtn, key)); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVtn, NULL)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key3, cfgval3)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.ValidateMessage(req, ikey3)); @@ -4883,8 +5765,9 @@ TEST_F(VtnMoMgrTest, ValidateMessage_04) { ConfigVal *cfgval = new ConfigVal(IpctSt::kIpcStValVtn, val); ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - IpctSt::kIpcStKeyVtn, - key, cfgval); + + IpctSt::kIpcStKeyVtn, + key, cfgval); IPC_REQ_RESP_HEADER_DECL(req); req->clnt_sess_id = 5; @@ -4892,10 +5775,12 @@ TEST_F(VtnMoMgrTest, ValidateMessage_04) { req->rep_count = 100; req->datatype = UPLL_DT_IMPORT; req->operation = UNC_OP_READ_NEXT; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey)); req->operation = UNC_OP_DELETE; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey)); req->datatype = UPLL_DT_CANDIDATE; @@ -4909,20 +5794,25 @@ TEST_F(VtnMoMgrTest, ValidateMessage_04) { key_vtn *key1(UT_CLONE(key_vtn, key)); val_vtn *val1(UT_CLONE(val_vtn, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVbr, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, vtn.ValidateMessage(req, ikey1)); key_vtn *key2(UT_CLONE(key_vtn, key)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key2, NULL)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey2)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey2)); key_vtn *key3(UT_CLONE(key_vtn, key)); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVtn, NULL)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key3, cfgval3)); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValidateMessage(req, ikey3)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValidateMessage(req, ikey3)); delete ikey; delete ikey1; @@ -4936,12 +5826,16 @@ TEST_F(VtnMoMgrTest, ValVtnAttributeSupportCheck_01) { val_vtn *val; GetKeyValStruct(key, val); - uint32_t operation= UNC_OP_CREATE; - uint8_t ckv_count1=1; - uint8_t *attrs=&ckv_count1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValVtnAttributeSupportCheck(val,attrs,operation)); + uint32_t operation = UNC_OP_CREATE; + uint8_t ckv_count1 = 1; + uint8_t *attrs = &ckv_count1; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValVtnAttributeSupportCheck(val, attrs, operation)); delete ikey; } @@ -4951,13 +5845,17 @@ TEST_F(VtnMoMgrTest, ValVtnAttributeSupportCheck_02) { val_vtn *val; GetKeyValStruct(key, val); - uint32_t operation= UNC_OP_CREATE; + uint32_t operation = UNC_OP_CREATE; val->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; - uint8_t ckv_count1=1; - uint8_t *attrs=&ckv_count1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.ValVtnAttributeSupportCheck(val,attrs,operation)); + uint8_t ckv_count1 = 1; + uint8_t *attrs = &ckv_count1; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.ValVtnAttributeSupportCheck(val, attrs, operation)); delete ikey; } @@ -4965,9 +5863,10 @@ TEST_F(VtnMoMgrTest, SetOperStatus_ikey_NULL) { VtnMoMgr vtn; DalDmlIntf *dmi(getDalDmlIntf()); - state_notification notification=kCtrlrReconnect; - ConfigKeyVal *ikey =NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetOperStatus(ikey,notification,dmi)); + state_notification notification = kCtrlrReconnect; + ConfigKeyVal *ikey = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetOperStatus(ikey, notification, dmi)); } TEST_F(VtnMoMgrTest, SetConsolidatedStatus_invalid_key) { @@ -4977,12 +5876,16 @@ TEST_F(VtnMoMgrTest, SetConsolidatedStatus_invalid_key) { val_db_vtn_st_t *val(ZALLOC_TYPE(val_db_vtn_st_t)); strncpy(reinterpret_cast(key->vtn_name), vtn_name, strlen(vtn_name)+1); - val->down_count=0; + val->down_count = 0; DalDmlIntf *dmi(getDalDmlIntf()); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetConsolidatedStatus(ikey,dmi)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetConsolidatedStatus(ikey, dmi)); delete ikey; } @@ -4993,12 +5896,16 @@ TEST_F(VtnMoMgrTest, SetConsolidatedStatus_valid_key) { val_db_vtn_st_t *val(ZALLOC_TYPE(val_db_vtn_st_t)); strncpy(reinterpret_cast(key->vtn_name), vtn_name, strlen(vtn_name)+1); - val->down_count=0; + val->down_count = 0; DalDmlIntf *dmi(getDalDmlIntf()); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetConsolidatedStatus(ikey,dmi)); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetConsolidatedStatus(ikey, dmi)); delete ikey; } @@ -5009,13 +5916,17 @@ TEST_F(VtnMoMgrTest, SetOperStatus_notification_kCtrlrReconnectIfUp) { val_db_vtn_st_t *val(ZALLOC_TYPE(val_db_vtn_st_t)); strncpy(reinterpret_cast(key->vtn_name), vtn_name, strlen(vtn_name)+1); - val->down_count=0; + val->down_count = 0; DalDmlIntf *dmi(getDalDmlIntf()); - state_notification notification=kCtrlrReconnectIfUp; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetOperStatus(ikey,notification,dmi)); + state_notification notification = kCtrlrReconnectIfUp; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetOperStatus(ikey, notification, dmi)); delete ikey; } @@ -5026,23 +5937,28 @@ TEST_F(VtnMoMgrTest, SetOperStatus_notification_kCtrlrDisconnect) { val_db_vtn_st_t *val(ZALLOC_TYPE(val_db_vtn_st_t)); strncpy(reinterpret_cast(key->vtn_name), vtn_name, strlen(vtn_name)+1); - val->down_count=0; + val->down_count = 0; DalDmlIntf *dmi(getDalDmlIntf()); - state_notification notification=kCtrlrDisconnect; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetOperStatus(ikey,notification,dmi)); + state_notification notification = kCtrlrDisconnect; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetOperStatus(ikey, notification, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, SetCtrlrOperStatus_ikey_NULL) { VtnMoMgr vtn; DalDmlIntf *dmi(getDalDmlIntf()); - state_notification notification=kCtrlrReconnect; - ConfigKeyVal *ikey =NULL; + state_notification notification = kCtrlrReconnect; + ConfigKeyVal *ikey = NULL; bool oper_change; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); delete ikey; } @@ -5058,15 +5974,19 @@ TEST_F(VtnMoMgrTest, SetCtrlrOperStatus_kCtrlrReconnectIfUp) { vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - state_notification notification=kCtrlrReconnectIfUp; + state_notification notification = kCtrlrReconnectIfUp; bool oper_change; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); val_vtn->oper_status = UPLL_OPER_STATUS_DOWN; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); delete ikey; } @@ -5082,28 +6002,36 @@ TEST_F(VtnMoMgrTest, SetCtrlrOperStatus_kCtrlrReconnectIfDown) { vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - state_notification notification=kCtrlrReconnectIfDown; + state_notification notification = kCtrlrReconnectIfDown; bool oper_change; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); - notification=kCtrlrReconnect; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + notification = kCtrlrReconnect; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); - notification=kCtrlrDisconnect; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + notification = kCtrlrDisconnect; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); - notification=kBoundaryFault; + notification = kBoundaryFault; val_vtn->down_count = 0; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); - notification=kBoundaryFaultReset; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + notification = kBoundaryFaultReset; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); val_vtn->down_count = 0; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.SetCtrlrOperStatus(ikey,notification,dmi,oper_change)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.SetCtrlrOperStatus(ikey, notification, dmi, oper_change)); delete ikey; } @@ -5114,12 +6042,16 @@ TEST_F(VtnMoMgrTest, VtnSetOperStatus_default) { DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - state_notification notification=kCtrlrReconnect; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - uint8_t *vtn_name_o=NULL; + state_notification notification = kCtrlrReconnect; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + uint8_t *vtn_name_o = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.VtnSetOperStatus(vtn_name_o,dmi,notification)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.VtnSetOperStatus(vtn_name_o, dmi, notification)); delete ikey; } @@ -5130,13 +6062,17 @@ TEST_F(VtnMoMgrTest, VtnSetOperStatus_Valid) { DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - state_notification notification=kCtrlrReconnect; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + state_notification notification = kCtrlrReconnect; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.VtnSetOperStatus(ctr_id1,dmi,notification)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.VtnSetOperStatus(ctr_id1, dmi, notification)); delete ikey; free(ctr_id1); } @@ -5148,363 +6084,460 @@ TEST_F(VtnMoMgrTest, VtnSetOperStatus_Valid_01) { DalDmlIntf *dmi(getDalDmlIntf()); GetKeyValStruct(key, val); - state_notification notification=kCtrlrReconnectIfUp; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + state_notification notification = kCtrlrReconnectIfUp; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.VtnSetOperStatus(ctr_id1,dmi,notification)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.VtnSetOperStatus(ctr_id1, dmi, notification)); delete ikey; free(ctr_id1); } TEST_F(VtnMoMgrTest, TxUpdateDtState_UNC_KT_VTN_01) { - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); VtnMoMgr vtn; - unc_key_type_t ktype=UNC_KT_VTN; - uint32_t session_id=1; - uint32_t config_id=2; + unc_key_type_t ktype = UNC_KT_VTN; + uint32_t session_id = 1; + uint32_t config_id = 2; key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.TxUpdateDtState(ktype,session_id,config_id,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateDtState(ktype, session_id, config_id, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, TxUpdateDtState_UNC_KT_VTN_02) { VtnMoMgr vtn; - unc_key_type_t ktype=UNC_KT_VTN; - uint32_t session_id=1; - uint32_t config_id=2; + unc_key_type_t ktype = UNC_KT_VTN; + uint32_t session_id = 1; + uint32_t config_id = 2; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.TxUpdateDtState(ktype,session_id,config_id,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateDtState(ktype, session_id, config_id, dmi)); } TEST_F(VtnMoMgrTest, TxUpdateDtState_UNC_KT_VBRIDGE) { VtnMoMgr vtn; - unc_key_type_t ktype=UNC_KT_VBRIDGE; - uint32_t session_id=1; - uint32_t config_id=2; + unc_key_type_t ktype = UNC_KT_VBRIDGE; + uint32_t session_id = 1; + uint32_t config_id = 2; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key; val_vtn_st_t *val; GetKeyValStructSt(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.TxUpdateDtState(ktype,session_id,config_id,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateDtState(ktype, session_id, config_id, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateVnodeOperStatus_UNC_KT_VBRIDGE) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - bool skip=true; - uint8_t *ctrlr_id=NULL; + bool skip = true; + uint8_t *ctrlr_id = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateVnodeOperStatus(ctrlr_id,dmi,notification,skip)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateVnodeOperStatus(ctrlr_id, dmi, notification, skip)); } TEST_F(VtnMoMgrTest, UpdateVnodeOperStatus_kCtrlrDisconnect) { VtnMoMgr vtn; - state_notification notification=kCtrlrDisconnect; + state_notification notification = kCtrlrDisconnect; DalDmlIntf *dmi(getDalDmlIntf()); - bool skip=true; - uint8_t *ctrlr_id=NULL; + bool skip = true; + uint8_t *ctrlr_id = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.UpdateVnodeOperStatus(ctrlr_id,dmi,notification,skip)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVnodeOperStatus(ctrlr_id, dmi, notification, skip)); } TEST_F(VtnMoMgrTest, UpdateVnodeOperStatus_val_NULL) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); key_vbr_t *key(ZALLOC_TYPE(key_vbr_t)); - val_db_vbr_st *val=NULL; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, key, config_val); - bool skip=true; - uint8_t *ctrlr_id=NULL; + val_db_vbr_st *val = NULL; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbrSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, key, config_val); + bool skip = true; + uint8_t *ctrlr_id = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateVnodeOperStatus(ctrlr_id,dmi,notification,skip)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateVnodeOperStatus(ctrlr_id, dmi, notification, skip)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateVnodeOperStatus_ikey_NULL) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); ConfigKeyVal *ikey = NULL; - bool skip=true; - uint8_t *ctrlr_id=NULL; + bool skip = true; + uint8_t *ctrlr_id = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateVnodeOperStatus(ctrlr_id,dmi,notification,skip)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateVnodeOperStatus(ctrlr_id, dmi, notification, skip)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateVnodeOperStatus_UNC_KT_VBR_IF) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - bool skip=true; - uint8_t *ctrlr_id=NULL; + bool skip = true; + uint8_t *ctrlr_id = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateVnodeOperStatus(ctrlr_id,dmi,notification,skip)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateVnodeOperStatus(ctrlr_id, dmi, notification, skip)); } TEST_F(VtnMoMgrTest, UpdateVnodeOperStatus_UNC_KT_VROUTER) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - bool skip=true; + bool skip = true; key_vrt_t *key(ZALLOC_TYPE(key_vrt_t)); val_db_vrt_st_t *val(ZALLOC_TYPE(val_db_vrt_st_t)); - val->down_count=0; - val->fault_count=0; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVrtSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, key, config_val); - uint8_t *ctrlr_id=NULL; + val->down_count = 0; + val->fault_count = 0; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVrtSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VROUTER, + IpctSt::kIpcStKeyVrt, key, config_val); + uint8_t *ctrlr_id = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateVnodeOperStatus(ctrlr_id,dmi,notification,skip)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateVnodeOperStatus(ctrlr_id, dmi, notification, skip)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateVnodeIfOperStatus_UNC_KT_VBR_IF) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); key_vbr_if_t *key(ZALLOC_TYPE(key_vbr_if_t)); val_db_vbr_if_st_t *val(ZALLOC_TYPE(val_db_vbr_if_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrIfSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVbrIf, key, config_val); - bool skip=true; - int if_type=kLinkedInterface; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbrIfSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVbrIf, key, config_val); + bool skip = true; + int if_type = kLinkedInterface; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.UpdateVnodeIfOperStatus(ikey,dmi,notification,skip,if_type)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVnodeIfOperStatus(ikey, dmi, notification, skip, if_type)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateVnodeIfOperStatus_UNC_KT_VRT_IF) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - bool skip=true; - int if_type=kLinkedInterface; + bool skip = true; + int if_type = kLinkedInterface; key_vrt_if_t *key(ZALLOC_TYPE(key_vrt_if_t)); val_db_vrt_if_st_t *val(ZALLOC_TYPE(val_db_vrt_if_st_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVrtIfSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VRT_IF, IpctSt::kIpcStKeyVrtIf, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVrtIfSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VRT_IF, + IpctSt::kIpcStKeyVrtIf, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.UpdateVnodeIfOperStatus(ikey,dmi,notification,skip,if_type)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVnodeIfOperStatus(ikey, dmi, notification, skip, if_type)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateVnodeIfOperStatus_UNC_KT_VROUTER) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - bool skip=true; - int if_type=kLinkedInterface; + bool skip = true; + int if_type = kLinkedInterface; key_vrt_t *key(ZALLOC_TYPE(key_vrt_t)); val_db_vrt_st_t *val(ZALLOC_TYPE(val_db_vrt_st_t)); - val->down_count=0; - val->fault_count=0; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVrtSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VROUTER, IpctSt::kIpcStKeyVrt, key, config_val); + val->down_count = 0; + val->fault_count = 0; + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVrtSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VROUTER, + IpctSt::kIpcStKeyVrt, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.UpdateVnodeIfOperStatus(ikey,dmi,notification,skip,if_type)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.UpdateVnodeIfOperStatus(ikey, dmi, notification, skip, if_type)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnOperStatus_invalid_keytype) { VtnMoMgr vtn; - state_notification notification=kCtrlrDisconnect; + state_notification notification = kCtrlrDisconnect; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnOperStatus(ikey,dmi,notification)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnOperStatus(ikey, dmi, notification)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnOperStatus_VALID) { VtnMoMgr vtn; - state_notification notification=kCtrlrDisconnect; + state_notification notification = kCtrlrDisconnect; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key(ZALLOC_TYPE(key_vtn_t)); val_db_vtn_st_t *val = NULL; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnOperStatus(ikey,dmi,notification)); + IpctSt::kIpcStKeyVtn, key, config_val); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnOperStatus(ikey, dmi, notification)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnOperStatus_VALID_01) { VtnMoMgr vtn; - state_notification notification=kCtrlrDisconnect; + state_notification notification = kCtrlrDisconnect; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key; val_vtn_t *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnOperStatus(ikey,dmi,notification)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnOperStatus(ikey, dmi, notification)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnOperStatus_VALID_02) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key; val_vtn_t *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnOperStatus(ikey,dmi,notification)); + IpctSt::kIpcStKeyVtn, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnOperStatus(ikey, dmi, notification)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnOperStatus_VALID_03) { VtnMoMgr vtn; - state_notification notification=kCtrlrDisconnect; + state_notification notification = kCtrlrDisconnect; DalDmlIntf *dmi(getDalDmlIntf()); key_vtn_t *key; val_vtn_t *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::CREATE_RECORD,kDalRcSuccess); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::CREATE_RECORD, kDalRcSuccess); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.RestoreVtnOperStatus(ikey,dmi,notification)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.RestoreVtnOperStatus(ikey, dmi, notification)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnOperStatus_ikey_NULL) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); ConfigKeyVal *ikey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnOperStatus(ikey,dmi,notification)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnOperStatus(ikey, dmi, notification)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnCtrlrOperStatus_ikey_NULL) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t *ctrlr_id=NULL; + uint8_t *ctrlr_id = NULL; key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBR_IF, + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnCtrlrOperStatus(ctrlr_id,dmi,notification)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnCtrlrOperStatus(ctrlr_id, dmi, notification)); delete ikey; } TEST_F(VtnMoMgrTest, RestoreVtnCtrlrOperStatus_valid_01) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t *ctrlr_id=NULL; + uint8_t *ctrlr_id = NULL; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_ctrlr_t *val_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr->ref_count=1; - val_ctrlr->down_count=1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val_ctrlr); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::SINGLE,kDalRcSuccess); + val_ctrlr->ref_count = 1; + val_ctrlr->down_count = 1; + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnSt, val_ctrlr); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnCtrlrOperStatus(ctrlr_id,dmi,notification)); + IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::SINGLE, kDalRcSuccess); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnCtrlrOperStatus(ctrlr_id, dmi, notification)); delete ikey; } +# if 0 TEST_F(VtnMoMgrTest, RestoreVtnCtrlrOperStatus_valid_02) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::INIT,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_ctrlr_t *val_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr->ref_count=1; - val_ctrlr->down_count=1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val_ctrlr); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); + val_ctrlr->ref_count = 1; + val_ctrlr->down_count = 1; + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnSt, val_ctrlr); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.RestoreVtnCtrlrOperStatus(ctr_id1,dmi,notification)); + IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.RestoreVtnCtrlrOperStatus(ctr_id1, dmi, notification)); delete ikey; free(ctr_id1); } +# endif TEST_F(VtnMoMgrTest, RestoreVtnCtrlrOperStatus_valid_03) { VtnMoMgr vtn; - state_notification notification=kCtrlrReconnect; + state_notification notification = kCtrlrReconnect; DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t *ctrlr_id=NULL; + uint8_t *ctrlr_id = NULL; key_vtn_controller_t *key_ctrlr(ZALLOC_TYPE(key_vtn_controller_t)); - uuu::upll_strncpy(key_ctrlr->controller_name,"controller_name1", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->domain_id,"domain_id", (kMaxLenCtrlrId + 1)); - uuu::upll_strncpy(key_ctrlr->vtn_key.vtn_name,"vtn_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->controller_name, + "controller_name1", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->domain_id, + "domain_id", (kMaxLenCtrlrId + 1)); + uuu::upll_strncpy( + key_ctrlr->vtn_key.vtn_name, + "vtn_name1", (kMaxLenCtrlrId + 1)); val_vtn_ctrlr_t *val_ctrlr(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_ctrlr->ref_count=1; - val_ctrlr->down_count=1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val_ctrlr); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::CREATE_RECORD,kDalRcSuccess); - - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + val_ctrlr->ref_count = 1; + val_ctrlr->down_count = 1; + ConfigVal *config_val = + new ConfigVal(IpctSt::kIpcStValVtnSt, val_ctrlr); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key_ctrlr, config_val); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::CREATE_RECORD, kDalRcSuccess); + + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.RestoreVtnCtrlrOperStatus(ctrlr_id,dmi,notification)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.RestoreVtnCtrlrOperStatus(ctrlr_id, dmi, notification)); delete ikey; } @@ -5513,7 +6546,8 @@ TEST_F(VtnMoMgrTest, CreateVtunnelKey_ikey_NULL) { ConfigKeyVal *ikey = NULL; ConfigKeyVal *okey = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.CreateVtunnelKey(ikey,okey)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.CreateVtunnelKey(ikey, okey)); delete ikey; } @@ -5521,11 +6555,14 @@ TEST_F(VtnMoMgrTest, CreateVtunnelKey_IpctSt_invalid) { VtnMoMgr vtn; key_vtunnel_t *key(ZALLOC_TYPE(key_vtunnel_t)); val_vtunnel_t *val(ZALLOC_TYPE(val_vtunnel_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTUNNEL, + IpctSt::kIpcStKeyVtn, key, config_val); ConfigKeyVal *okey = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.CreateVtunnelKey(ikey,okey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.CreateVtunnelKey(ikey, okey)); delete ikey; } @@ -5533,11 +6570,14 @@ TEST_F(VtnMoMgrTest, CreateVtunnelKey_IpctSt_valid) { VtnMoMgr vtn; key_vtunnel_t *key(ZALLOC_TYPE(key_vtunnel_t)); val_vtunnel_t *val(ZALLOC_TYPE(val_vtunnel_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtunnelSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTUNNEL, IpctSt::kIpcStKeyVtunnel, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtunnelSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTUNNEL, + IpctSt::kIpcStKeyVtunnel, key, config_val); ConfigKeyVal *okey = NULL; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.CreateVtunnelKey(ikey,okey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.CreateVtunnelKey(ikey, okey)); delete ikey; } @@ -5546,9 +6586,10 @@ TEST_F(VtnMoMgrTest, SwapKeyVal_ikey_NULL) { ConfigKeyVal *ikey = NULL; ConfigKeyVal *okey = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t *ctrlr=NULL; + uint8_t *ctrlr = NULL; bool no_rename; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SwapKeyVal(ikey,okey,dmi,ctrlr,no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SwapKeyVal(ikey, okey, dmi, ctrlr, no_rename)); delete okey; delete ikey; } @@ -5565,41 +6606,50 @@ TEST_F(VtnMoMgrTest, SwapKeyVal_IpctSt_valid) { strncpy(reinterpret_cast(key->vtn_name), vtn_name, strlen(vtn_name)+1); val_rename_vtn_t *val(ZALLOC_TYPE(val_rename_vtn_t)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); ConfigKeyVal *okey = NULL; EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.SwapKeyVal(ikey, okey, dmi, ctr_id1, no_rename)); + + vtn.SwapKeyVal(ikey, okey, dmi, ctr_id1, no_rename)); val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID_NO_VALUE; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.SwapKeyVal(ikey,okey,dmi,ctr_id1,no_rename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.SwapKeyVal(ikey, okey, dmi, ctr_id1, no_rename)); delete okey; okey = NULL; key_vtn_t *key1(UT_CLONE(key_vtn_t, key)); val_rename_vtn_t *val1(UT_CLONE(val_rename_vtn_t, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtnSt, val1)); - ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey1(new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, - vtn.SwapKeyVal(ikey1, okey, dmi, ctr_id1, no_rename)); + vtn.SwapKeyVal(ikey1, okey, dmi, ctr_id1, no_rename)); delete okey; okey = NULL; key_vtn_t *key2(UT_CLONE(key_vtn_t, key)); - ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey2(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key2, NULL)); EXPECT_EQ(UPLL_RC_ERR_BAD_REQUEST, - vtn.SwapKeyVal(ikey2, okey, dmi, ctr_id1, no_rename)); + vtn.SwapKeyVal(ikey2, okey, dmi, ctr_id1, no_rename)); delete okey; okey = NULL; key_vtn_t *key3(UT_CLONE(key_vtn_t, key)); ConfigVal *cfgval3(new ConfigVal(IpctSt::kIpcStValVtnSt, NULL)); - ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *ikey3(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key3, cfgval3)); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.SwapKeyVal(ikey3, okey, dmi, ctr_id1, no_rename)); + + vtn.SwapKeyVal(ikey3, okey, dmi, ctr_id1, no_rename)); delete okey; delete ikey; @@ -5624,12 +6674,16 @@ TEST_F(VtnMoMgrTest, SwapKeyVal_IpctSt_valid_01) { pfc_strlcpy(reinterpret_cast(val->new_name), "VTN_2", sizeof(val->new_name)); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); ConfigKeyVal *okey = NULL; val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.SwapKeyVal(ikey,okey,dmi,ctr_id1,no_rename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.SwapKeyVal(ikey, okey, dmi, ctr_id1, no_rename)); delete okey; delete ikey; free(ctr_id1); @@ -5650,12 +6704,16 @@ TEST_F(VtnMoMgrTest, SwapKeyVal_same_newName) { val_rename_vtn_t *val(ZALLOC_TYPE(val_rename_vtn_t)); strncpy(reinterpret_cast(val->new_name), new_name, strlen(new_name)+1); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); ConfigKeyVal *okey = NULL; val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SwapKeyVal(ikey,okey,dmi,ctr_id1,no_rename)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SwapKeyVal(ikey, okey, dmi, ctr_id1, no_rename)); delete okey; delete ikey; free(ctr_id1); @@ -5676,12 +6734,16 @@ TEST_F(VtnMoMgrTest, SwapKeyVal_EmptyNewName) { val_rename_vtn_t *val(ZALLOC_TYPE(val_rename_vtn_t)); strncpy(reinterpret_cast(val->new_name), new_name, strlen(new_name)+1); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); ConfigKeyVal *okey = NULL; val->valid[UPLL_IDX_NEW_NAME_RVTN] = UNC_VF_VALID; - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.SwapKeyVal(ikey,okey,dmi,ctr_id1,no_rename)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.SwapKeyVal(ikey, okey, dmi, ctr_id1, no_rename)); delete okey; delete ikey; free(ctr_id1); @@ -5692,8 +6754,8 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_valid) { const char *vtn_name = "VTN_1"; const char *controller_name = "pfc1"; const char *domain_id = "dom1"; - unc_keytype_configstatus_t cs_status=UNC_CS_APPLIED; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; + unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; key_vtn_controller *key(ZALLOC_TYPE(key_vtn_controller)); strncpy(reinterpret_cast(key->controller_name), vtn_name, strlen(controller_name)+1); @@ -5701,9 +6763,12 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_valid) { vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateCtrlrConfigStatus(cs_status,phase,ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateCtrlrConfigStatus(cs_status, phase, ikey)); delete ikey; } @@ -5713,8 +6778,8 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_phase_kUpllUcpCreate) { const char *vtn_name = "VTN_1"; const char *controller_name = "pfc1"; const char *domain_id = "dom1"; - unc_keytype_configstatus_t cs_status=UNC_CS_APPLIED; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; + unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; key_vtn_controller *key(ZALLOC_TYPE(key_vtn_controller)); strncpy(reinterpret_cast(key->controller_name), vtn_name, strlen(controller_name)+1); @@ -5722,9 +6787,12 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_phase_kUpllUcpCreate) { vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateCtrlrConfigStatus(cs_status,phase,ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateCtrlrConfigStatus(cs_status, phase, ikey)); delete ikey; } @@ -5733,8 +6801,8 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_phase_kUpllUcpUpdate) { const char *vtn_name = "VTN_1"; const char *controller_name = "pfc1"; const char *domain_id = "dom1"; - unc_keytype_configstatus_t cs_status=UNC_CS_APPLIED; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpUpdate; + unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpUpdate; key_vtn_controller *key(ZALLOC_TYPE(key_vtn_controller)); strncpy(reinterpret_cast(key->controller_name), vtn_name, strlen(controller_name)+1); @@ -5743,9 +6811,12 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_phase_kUpllUcpUpdate) { val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); val_vtn->cs_row_status = UNC_CS_INVALID; ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateCtrlrConfigStatus(cs_status,phase,ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateCtrlrConfigStatus(cs_status, phase, ikey)); delete ikey; } @@ -5754,8 +6825,8 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_phase_kUpllUcpUpdate_invalid) { const char *vtn_name = "VTN_1"; const char *controller_name = "pfc1"; const char *domain_id = "dom1"; - unc_keytype_configstatus_t cs_status=UNC_CS_INVALID; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpUpdate; + unc_keytype_configstatus_t cs_status = UNC_CS_INVALID; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpUpdate; key_vtn_controller *key(ZALLOC_TYPE(key_vtn_controller)); strncpy(reinterpret_cast(key->controller_name), vtn_name, strlen(controller_name)+1); @@ -5764,39 +6835,52 @@ TEST_F(VtnMoMgrTest, UpdateCtrlrConfigStatus_phase_kUpllUcpUpdate_invalid) { val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); val_vtn->valid[UPLL_IDX_DESC_VTN] = UNC_VF_VALID; ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateCtrlrConfigStatus(cs_status,phase,ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateCtrlrConfigStatus(cs_status, phase, ikey)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateAuditConfigStatus_valid) { VtnMoMgr vtn; - unc_keytype_configstatus_t cs_status=UNC_CS_APPLIED; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; + unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); + DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateAuditConfigStatus(cs_status,phase,ikey)); + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateAuditConfigStatus(cs_status, phase, ikey, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, UpdateAuditConfigStatus_phase_kUpllUcpCreate) { VtnMoMgr vtn; - unc_keytype_configstatus_t cs_status=UNC_CS_APPLIED; - uuc::UpdateCtrlrPhase phase=uuc::kUpllUcpCreate; + unc_keytype_configstatus_t cs_status = UNC_CS_APPLIED; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - EXPECT_EQ(UPLL_RC_SUCCESS, vtn.UpdateAuditConfigStatus(cs_status,phase,ikey)); + IpctSt::kIpcStKeyVtn, key, config_val); + DalDmlIntf *dmi(getDalDmlIntf()); + + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.UpdateAuditConfigStatus(cs_status, phase, ikey, dmi)); delete ikey; } @@ -5804,8 +6888,9 @@ TEST_F(VtnMoMgrTest, SetVtnConsolidatedStatus_ikey_NULL) { VtnMoMgr vtn; ConfigKeyVal *ikey = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - uint8_t *ctrlr=NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetVtnConsolidatedStatus(ikey,ctrlr,dmi)); + uint8_t *ctrlr = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetVtnConsolidatedStatus(ikey, ctrlr, dmi)); delete ikey; } @@ -5820,15 +6905,18 @@ TEST_F(VtnMoMgrTest, SetVtnConsolidatedStatus_ctrlr_valid) { strncpy(reinterpret_cast(key->domain_id), vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_vtn->down_count=0; - val_vtn->ref_count=0; - val_vtn->cs_row_status=UNC_CS_APPLIED; + val_vtn->down_count = 0; + val_vtn->ref_count = 0; + val_vtn->cs_row_status = UNC_CS_APPLIED; ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetVtnConsolidatedStatus(ikey,ctr_id1,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetVtnConsolidatedStatus(ikey, ctr_id1, dmi)); delete ikey; free(ctr_id1); } @@ -5844,21 +6932,25 @@ TEST_F(VtnMoMgrTest, SetVtnConsolidatedStatus_ctrlr_valid_01) { strncpy(reinterpret_cast(key->domain_id), vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_vtn->down_count=0; - val_vtn->ref_count=0; - val_vtn->cs_row_status=UNC_CS_APPLIED; + val_vtn->down_count = 0; + val_vtn->ref_count = 0; + val_vtn->cs_row_status = UNC_CS_APPLIED; ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetVtnConsolidatedStatus(ikey,ctr_id1,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetVtnConsolidatedStatus(ikey, ctr_id1, dmi)); delete ikey; free(ctr_id1); } @@ -5876,11 +6968,14 @@ TEST_F(VtnMoMgrTest, SetVtnConsolidatedStatus_keytype_invalid) { vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); uint8_t *ctr_id1 = ZALLOC_ARRAY(uint8_t, 32); memcpy(ctr_id1, "Controller1", 11); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetVtnConsolidatedStatus(ikey,ctr_id1,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetVtnConsolidatedStatus(ikey, ctr_id1, dmi)); delete ikey; free(ctr_id1); } @@ -5897,10 +6992,13 @@ TEST_F(VtnMoMgrTest, SetConsolidatedStatus_ikey_valid) { vtn_name, strlen(domain_id)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetConsolidatedStatus(ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetConsolidatedStatus(ikey, dmi)); delete ikey; } @@ -5911,13 +7009,16 @@ TEST_F(VtnMoMgrTest, SetConsolidatedStatus_ikey_proper) { strncpy(reinterpret_cast(key->vtn_name), vtn_name, strlen(vtn_name)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_vtn->down_count=0; - val_vtn->ref_count=0; + val_vtn->down_count = 0; + val_vtn->ref_count = 0; ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetConsolidatedStatus(ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetConsolidatedStatus(ikey, dmi)); delete ikey; } @@ -5928,28 +7029,33 @@ TEST_F(VtnMoMgrTest, SetConsolidatedStatus_ikey_proper_01) { strncpy(reinterpret_cast(key->vtn_name), vtn_name, strlen(vtn_name)+1); val_vtn_ctrlr_t *val_vtn(ZALLOC_TYPE(val_vtn_ctrlr_t)); - val_vtn->down_count=0; - val_vtn->ref_count=0; - DalOdbcMgr::stub_setResultcode(DalOdbcMgr::MULTIPLE,kDalRcSuccess); + val_vtn->down_count = 0; + val_vtn->ref_count = 0; + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::MULTIPLE, kDalRcSuccess); - std::map map; - map.insert(std::make_pair(1,kDalRcRecordNoMore)); - map.insert(std::make_pair(0,kDalRcSuccess)); + std::map map; + map.insert(std::make_pair(1, kDalRcRecordNoMore)); + map.insert(std::make_pair(0, kDalRcSuccess)); DalOdbcMgr::stub_setNextRecordResultCodes(map); ConfigVal *config_val = new ConfigVal(IpctSt::kIpcStValVtn, val_vtn); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.SetConsolidatedStatus(ikey,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.SetConsolidatedStatus(ikey, dmi)); delete ikey; } TEST_F(VtnMoMgrTest, TxCopyCandidateToRunning_ikey_NULL) { VtnMoMgr vtn; unc_key_type_t keytype = UNC_KT_VTN; - CtrlrCommitStatusList *ctrlr_commit_status=NULL; + CtrlrCommitStatusList *ctrlr_commit_status = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.TxCopyCandidateToRunning(keytype,ctrlr_commit_status,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxCopyCandidateToRunning(keytype, ctrlr_commit_status, dmi)); } TEST_F(VtnMoMgrTest, TxCopyCandidateToRunning_valid_01) { @@ -5957,7 +7063,7 @@ TEST_F(VtnMoMgrTest, TxCopyCandidateToRunning_valid_01) { std::list CtrlrCommitStatusList; struct CtrlrTxResult *l_CtrlrTxResult - (new CtrlrTxResult("vtn",(upll_rc_t)1, 1)); + (new CtrlrTxResult("vtn", (upll_rc_t)1, 1)); l_CtrlrTxResult->upll_ctrlr_result = UPLL_RC_SUCCESS; CtrlrCommitStatusList.push_back(l_CtrlrTxResult); @@ -5966,12 +7072,16 @@ TEST_F(VtnMoMgrTest, TxCopyCandidateToRunning_valid_01) { val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); l_CtrlrTxResult->err_ckv = ikey; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.TxCopyCandidateToRunning(keytype,&CtrlrCommitStatusList,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxCopyCandidateToRunning(keytype, &CtrlrCommitStatusList, dmi)); delete l_CtrlrTxResult; } @@ -5980,7 +7090,7 @@ TEST_F(VtnMoMgrTest, TxCopyCandidateToRunning_valid_02) { std::list CtrlrCommitStatusList; struct CtrlrTxResult * l_CtrlrTxResult - (new CtrlrTxResult("vtn",(upll_rc_t)1, 1)); + (new CtrlrTxResult("vtn", (upll_rc_t)1, 1)); l_CtrlrTxResult->upll_ctrlr_result = UPLL_RC_ERR_GENERIC; CtrlrCommitStatusList.push_back(l_CtrlrTxResult); @@ -5989,25 +7099,30 @@ TEST_F(VtnMoMgrTest, TxCopyCandidateToRunning_valid_02) { val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + + IpctSt::kIpcStKeyVtn, key, config_val); l_CtrlrTxResult->err_ckv = ikey; DalDmlIntf *dmi(getDalDmlIntf()); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.TxCopyCandidateToRunning(keytype,&CtrlrCommitStatusList,dmi)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxCopyCandidateToRunning(keytype, &CtrlrCommitStatusList, dmi)); delete l_CtrlrTxResult; } TEST_F(VtnMoMgrTest, GetRenameInfo_ikey_NULL) { VtnMoMgr vtn; - ConfigKeyVal *ikey=NULL; - ConfigKeyVal *okey=NULL; - ConfigKeyVal *rename_info=NULL; + ConfigKeyVal *ikey = NULL; + ConfigKeyVal *okey = NULL; + ConfigKeyVal *rename_info = NULL; const char *ctrlr_id = "Controller1"; DalDmlIntf *dmi(getDalDmlIntf()); bool renamed; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenameInfo(ikey,okey,rename_info,dmi,ctrlr_id,renamed)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_id, renamed)); delete ikey; delete rename_info; } @@ -6016,22 +7131,27 @@ TEST_F(VtnMoMgrTest, GetRenameInfo_key_NULL) { VtnMoMgr vtn; const char *ctrlr_id = "Controller1"; DalDmlIntf *dmi(getDalDmlIntf()); - bool renamed=true; + bool renamed = true; key_vtn_t *key; val_vtn_t *val; - GetKeyValStruct(key,val); + GetKeyValStruct(key, val); + + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtn, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + IpctSt::kIpcStKeyVtn, key, config_val); key_vtn_t *key1(UT_CLONE(key_vtn_t, key)); val_vtn_t *val1(UT_CLONE(val_vtn_t, val)); ConfigVal *cfgval1(new ConfigVal(IpctSt::kIpcStValVtn, val1)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, + ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, cfgval1)); ConfigKeyVal *rename_info = NULL; - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenameInfo(ikey,okey,rename_info,dmi,ctrlr_id,renamed)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_id, renamed)); delete ikey; delete okey; } @@ -6040,66 +7160,267 @@ TEST_F(VtnMoMgrTest, GetRenameInfo_renamed_false) { VtnMoMgr vtn; const char *ctrlr_id = "Controller1"; DalDmlIntf *dmi(getDalDmlIntf()); - bool renamed=false; + bool renamed = false; key_rename_vnode_info_t *key1(ZALLOC_TYPE(key_rename_vnode_info_t)); val_rename_vnode_t *val1(ZALLOC_TYPE(val_rename_vnode_t)); key_vtn_t *key; val_vtn_t *val; GetKeyValStruct(key, val); - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtnSt, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); key_vtn_t *key_o(UT_CLONE(key_vtn_t, key)); val_vtn_t *val_o(UT_CLONE(val_vtn_t, val)); ConfigVal *cfg_o(new ConfigVal(IpctSt::kIpcStValVtn, val_o)); - ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key_o, + ConfigKeyVal *okey(new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key_o, cfg_o)); - ConfigVal *config_val1= new ConfigVal(IpctSt::kIpcStValVtnSt, val1); - ConfigKeyVal *rename_info = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key1, config_val1); + ConfigVal *config_val1 = new ConfigVal(IpctSt::kIpcStValVtnSt, val1); + ConfigKeyVal *rename_info = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key1, config_val1); - EXPECT_EQ(UPLL_RC_ERR_GENERIC, vtn.GetRenameInfo(ikey,okey,rename_info,dmi,ctrlr_id,renamed)); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.GetRenameInfo(ikey, okey, rename_info, dmi, ctrlr_id, renamed)); delete ikey; delete okey; delete rename_info; } -TEST_F(VtnMoMgrTest, TxUpdateProcess_Create_01) { +TEST_F(VtnMoMgrTest, Create_01 ) { + VtnMoMgr vtn; + IPC_RESPONSE_DECL(req); + unc_keytype_operation_t op = UNC_OP_CREATE; + controller_domain *ctrlr_dom = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVbrSt, NULL); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, + IpctSt::kIpcStKeyVbr, NULL, config_val); + IpcResponse resp; + memset(&resp, 0, sizeof(resp)); + uint32_t session_id = 1; + uint32_t config_id = 1; + + resp.header.clnt_sess_id = session_id; + resp.header.config_id = config_id; + bool driver_resp = false; + set *affected_ctrlr_set = NULL; + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateProcess(ikey, + &resp, op, dmi, + ctrlr_dom, affected_ctrlr_set, &driver_resp)); + + delete ikey; +} + +TEST_F(VtnMoMgrTest, Create_02 ) { + VtnMoMgr vtn; + IPC_RESPONSE_DECL(req); + unc_keytype_operation_t op = UNC_OP_CREATE; + controller_domain *ctrlr_dom = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + IpcResponse resp; + memset(&resp, 0, sizeof(resp)); + uint32_t session_id = 1; + uint32_t config_id = 1; + + resp.header.clnt_sess_id = session_id; + resp.header.config_id = config_id; + bool driver_resp = false; + set *affected_ctrlr_set = NULL; + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateProcess(ikey, + &resp, op, dmi, ctrlr_dom, affected_ctrlr_set, &driver_resp)); + delete ikey; +} + +TEST_F(VtnMoMgrTest, Create_03 ) { VtnMoMgr vtn; - unc_keytype_operation_t op=UNC_OP_CREATE; - controller_domain *ctrlr_dom=NULL; + IPC_RESPONSE_DECL(req); + unc_keytype_operation_t op = UNC_OP_CREATE; + controller_domain *ctrlr_dom = NULL; + // DalOdbcMgr::stub_setResultcode( + // DalOdbcMgr::SINGLE, kDalRcSuccess); DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + IpcResponse resp; + memset(&resp, 0, sizeof(resp)); + uint32_t session_id = 1; + uint32_t config_id = 1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVbrSt, NULL); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VBRIDGE, IpctSt::kIpcStKeyVbr, NULL, config_val); + resp.header.clnt_sess_id = session_id; + resp.header.config_id = config_id; + bool driver_resp = false; + set *affected_ctrlr_set = NULL; - IPC_RESPONSE_DECL(resp); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.TxUpdateProcess(ikey, resp, op, dmi, ctrlr_dom)); + vtn.TxUpdateProcess(ikey, + &resp, op, dmi, ctrlr_dom, affected_ctrlr_set, &driver_resp)); + delete ikey; +} + +TEST_F(VtnMoMgrTest, Update ) { + VtnMoMgr vtn; + IPC_RESPONSE_DECL(req); + unc_keytype_operation_t op = UNC_OP_UPDATE; + controller_domain *ctrlr_dom = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + IpcResponse resp; + memset(&resp, 0, sizeof(resp)); + uint32_t session_id = 1; + uint32_t config_id = 1; + + resp.header.clnt_sess_id = session_id; + resp.header.config_id = config_id; + bool driver_resp = false; + set *affected_ctrlr_set = NULL; + EXPECT_EQ(UPLL_RC_SUCCESS, + vtn.TxUpdateProcess(ikey, + &resp, op, dmi, ctrlr_dom, affected_ctrlr_set, &driver_resp)); delete ikey; } -TEST_F(VtnMoMgrTest, TxUpdateProcess_Create_02) { +TEST_F(VtnMoMgrTest, Delete ) { VtnMoMgr vtn; - unc_keytype_operation_t op=UNC_OP_CREATE; - controller_domain *ctrlr_dom=NULL; + IPC_RESPONSE_DECL(req); + unc_keytype_operation_t op = UNC_OP_DELETE; + controller_domain *ctrlr_dom = NULL; DalDmlIntf *dmi(getDalDmlIntf()); - key_vtn_t *key; - val_vtn_t *val; + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + IpcResponse resp; + memset(&resp, 0, sizeof(resp)); + uint32_t session_id = 1; + uint32_t config_id = 1; - ConfigVal *config_val= new ConfigVal(IpctSt::kIpcStValVtn, val); - ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, IpctSt::kIpcStKeyVtn, key, config_val); + resp.header.clnt_sess_id = session_id; + resp.header.config_id = config_id; + bool driver_resp = false; + set *affected_ctrlr_set = NULL; - IPC_RESPONSE_DECL(resp); EXPECT_EQ(UPLL_RC_ERR_GENERIC, - vtn.TxUpdateProcess(ikey, resp, op, dmi, ctrlr_dom)); + vtn.TxUpdateProcess(ikey, + &resp, op, dmi, ctrlr_dom, affected_ctrlr_set, &driver_resp)); + delete ikey; +} + +TEST_F(VtnMoMgrTest, TxUpdate_default ) { + VtnMoMgr vtn; + uint32_t session_id = 1; + uint32_t config_id = 1; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate;; + set *affected_ctrlr_set = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateController(UNC_KT_VTN, + session_id, config_id, phase, affected_ctrlr_set, dmi, &ikey)); delete ikey; } +TEST_F(VtnMoMgrTest, Create ) { + VtnMoMgr vtn; + uint32_t session_id = 1; + uint32_t config_id = 1; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpCreate; + DalOdbcMgr::clearStubData(); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::INIT, kDalRcSuccess); + DalOdbcMgr::stub_setResultcode( + DalOdbcMgr::NEXT, kDalRcSuccess); + set *affected_ctrlr_set = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateController(UNC_KT_VTN, + session_id, config_id, phase, affected_ctrlr_set, dmi, &ikey)); } +TEST_F(VtnMoMgrTest, TxController_Update ) { + VtnMoMgr vtn; + uint32_t session_id = 1; + uint32_t config_id = 1; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpUpdate; + set *affected_ctrlr_set = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateController(UNC_KT_VTN, + session_id, config_id, phase, affected_ctrlr_set, dmi, &ikey)); } +TEST_F(VtnMoMgrTest, TxController_Delete ) { + VtnMoMgr vtn; + uint32_t session_id = 1; + uint32_t config_id = 1; + uuc::UpdateCtrlrPhase phase = uuc::kUpllUcpDelete; + set *affected_ctrlr_set = NULL; + DalDmlIntf *dmi(getDalDmlIntf()); + key_vtn_t *key = ZALLOC_TYPE(key_vtn_t); + val_vtn_t *val = ZALLOC_TYPE(val_vtn_t); + GetKeyValStruct(key, val); + ConfigVal *config_val = new ConfigVal( + IpctSt::kIpcStValVtnSt, val); + ConfigKeyVal *ikey = new ConfigKeyVal(UNC_KT_VTN, + IpctSt::kIpcStKeyVtn, key, config_val); + + EXPECT_EQ(UPLL_RC_ERR_GENERIC, + vtn.TxUpdateController(UNC_KT_VTN, + session_id, config_id, phase, affected_ctrlr_set, dmi, &ikey)); } +} // namespace kt_momgr +} // namespace upll +} // namespace unc diff --git a/coordinator/test/modules/uppl/utest/Boundary_ut.cc b/coordinator/test/modules/uppl/utest/Boundary_ut.cc index 155b12ba..64e580d1 100644 --- a/coordinator/test/modules/uppl/utest/Boundary_ut.cc +++ b/coordinator/test/modules/uppl/utest/Boundary_ut.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,7 +36,6 @@ #include #include #include -#include "PhysicalLayerStub.hh" #include #include #include @@ -50,6 +49,7 @@ #include #include #include +#include "PhysicalLayerStub.hh" #include "ut_util.hh" using namespace pfc; @@ -60,11 +60,10 @@ using namespace unc::tclib; using namespace unc::uppl::test; class BoundaryTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; -static char pkName1[] = "Boundary1"; +static char pkName1[] = "Boundary1"; static void getKeyForKtBoundary0(key_boundary_t& k) { memset(k.boundary_id, '\0', 32); @@ -78,81 +77,82 @@ static void getKeyForKtBoundary1(key_boundary_t& k) { static void getValForKtBoundary1(val_boundary_t& v) { memset(v.description, '\0', 128); memcpy(v.description, "boundary description", strlen("boundary description")); - + memset(v.controller_name1, '\0', 32); memcpy(v.controller_name1, "Controller5", strlen("Controller5")); memset(v.domain_name1, '\0', 32); memcpy(v.domain_name1, "domain1", strlen("domain1")); - + memset(v.logical_port_id1, '\0', 320); - memcpy(v.logical_port_id1, "{0xab,0xc}", strlen("{0xab,0xc}")); + memcpy(v.logical_port_id1, "{0xab, 0xc}", strlen("{0xab, 0xc}")); memset(v.controller_name2, '\0', 32); memcpy(v.controller_name2, "Controller7", strlen("Controller7")); - + memset(v.domain_name2, '\0', 32); memcpy(v.domain_name2, "domain2", strlen("domain2")); memset(v.logical_port_id2, '\0', 320); - memcpy(v.logical_port_id2, "{0xcd,0xe}", strlen("{0xcd,0xe}")); + memcpy(v.logical_port_id2, "{0xcd, 0xe}", strlen("{0xcd, 0xe}")); - memset(v.valid, 1, 7); // uint8_t valid[7]; - v.cs_row_status = 0; // uint8_t cs_row_status; - memset(v.cs_attr, 1, 7); // uint8_t cs_attr[7] - v.cs_attr[6] = '\0'; + memset(v.valid, 1, 7); // uint8_t valid[7]; + v.cs_row_status = 0; // uint8_t cs_row_status; + memset(v.cs_attr, 1, 7); // uint8_t cs_attr[7] + v.cs_attr[6] = '\0'; } static void getValForKtBoundary5(val_boundary_t& v) { memset(v.description, '\0', 128); memcpy(v.description, "boundary description", strlen("boundary description")); - + memset(v.controller_name1, '\0', 32); memcpy(v.controller_name1, "Controller5", strlen("Controller5")); - + memset(v.domain_name1, '\0', 32); memcpy(v.domain_name1, "domain1", strlen("domain1")); memset(v.logical_port_id1, '\0', 320); - memcpy(v.logical_port_id1, "{0xab,0xc}", strlen("{0xab,0xc}")); + memcpy(v.logical_port_id1, "{0xab, 0xc}", strlen("{0xab, 0xc}")); memset(v.controller_name2, '\0', 32); memcpy(v.controller_name2, "Controller5", strlen("Controller5")); - + memset(v.domain_name2, '\0', 32); memcpy(v.domain_name2, "domain1", strlen("domain1")); memset(v.logical_port_id2, '\0', 320); - memcpy(v.logical_port_id2, "{0xcd,0xe}", strlen("{0xcd,0xe}")); + memcpy(v.logical_port_id2, "{0xcd, 0xe}", strlen("{0xcd, 0xe}")); - memset(v.valid, 1, 7); // uint8_t valid[7]; - v.cs_row_status = 0; // uint8_t cs_row_status; - memset(v.cs_attr, 1, 7); // uint8_t cs_attr[7] - v.cs_attr[6] = '\0'; + memset(v.valid, 1, 7); // uint8_t valid[7]; + v.cs_row_status = 0; // uint8_t cs_row_status; + memset(v.cs_attr, 1, 7); // uint8_t cs_attr[7] + v.cs_attr[6] = '\0'; } -// Create for unsupported datatype +// Create for unsupported datatype TEST_F(BoundaryTest, Create_01) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; ServerSession ses; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; pfc::core::ipc::ServerSession::set_rest(2); - int ret = KtboundaryObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtboundaryObj.Create( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_STATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Boundary Create success +// Boundary Create success TEST_F(BoundaryTest, Create_02) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; @@ -166,18 +166,20 @@ TEST_F(BoundaryTest, Create_02) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Create( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// Boundary Create Server session addOutput failed +// Boundary Create Server session addOutput failed TEST_F(BoundaryTest, Create_03) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; @@ -190,89 +192,100 @@ TEST_F(BoundaryTest, Create_03) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Create( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// CreateOneRow returns ODBCM_RC_CONNECTION_ERROR +// CreateOneRow returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, CreateKeyInstance_01) { key_boundary_t k; val_boundary_t v; - uint32_t key_type = 1; + uint32_t key_type = 1; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateOneRow returns ODBCM_RC_PKEY_VIOLATION +// CreateOneRow returns ODBCM_RC_PKEY_VIOLATION TEST_F(BoundaryTest, CreateKeyInstance_02) { key_boundary_t k; val_boundary_t v; - uint32_t key_type = 1; + uint32_t key_type = 1; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_PKEY_VIOLATION); - int ret = KtboundaryObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_PKEY_VIOLATION); + int ret = KtboundaryObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } -// CreateOneRow returns ODBCM_RC_QUERY_FAILED +// CreateOneRow returns ODBCM_RC_QUERY_FAILED TEST_F(BoundaryTest, CreateKeyInstance_03) { key_boundary_t k; val_boundary_t v; - uint32_t key_type = 1; + uint32_t key_type = 1; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_QUERY_FAILED); - int ret = KtboundaryObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_CREATE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_QUERY_FAILED); + int ret = KtboundaryObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_CREATE, ret); } -// CreateOneRow returns ODBCM_RC_QUERY_FAILED +// CreateOneRow returns ODBCM_RC_QUERY_FAILED TEST_F(BoundaryTest, CreateKeyInstance_04) { key_boundary_t k; val_boundary_t v; - uint32_t key_type = 1; + uint32_t key_type = 1; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// Update for unsupported datatype +// Update for unsupported datatype TEST_F(BoundaryTest, Update_01) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; ServerSession ses; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_STATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Boundary Update success +// Boundary Update success TEST_F(BoundaryTest, Update_02) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; @@ -286,18 +299,20 @@ TEST_F(BoundaryTest, Update_02) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// Boundary Update Server session addOutput failed +// Boundary Update Server session addOutput failed TEST_F(BoundaryTest, Update_03) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; @@ -310,22 +325,24 @@ TEST_F(BoundaryTest, Update_03) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// UpdateOneRow returns ODBCM_RC_CONNECTION_ERROR +// UpdateOneRow returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, Update_04) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession ses; ses.stub_setAddOutput((uint32_t)configuration_id); ses.stub_setAddOutput((uint32_t)session_id); @@ -333,25 +350,27 @@ TEST_F(BoundaryTest, Update_04) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_DB_ACCESS); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_DB_ACCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// UpdateOneRow returns ODBCM_RC_PKEY_VIOLATION +// UpdateOneRow returns ODBCM_RC_PKEY_VIOLATION TEST_F(BoundaryTest, Update_05) { key_boundary_t k; val_boundary_t v; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession ses; ses.stub_setAddOutput((uint32_t)configuration_id); ses.stub_setAddOutput((uint32_t)session_id); @@ -359,20 +378,22 @@ TEST_F(BoundaryTest, Update_05) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_DB_UPDATE); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_DB_UPDATE); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_PKEY_VIOLATION); - int ret = KtboundaryObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_PKEY_VIOLATION); + int ret = KtboundaryObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulkInternal GetBulkRows returns ODBCM_RC_RECORD_NOT_FOUND +// ReadBulkInternal GetBulkRows returns ODBCM_RC_RECORD_NOT_FOUND TEST_F(BoundaryTest, ReadBulkInternal_01) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -381,17 +402,20 @@ TEST_F(BoundaryTest, ReadBulkInternal_01) { getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; ServerSession ses; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.ReadBulkInternal(db_conn,&k,&v,UNC_DT_STATE,max_rep_ct,vect_key_boundary,vect_val_boundary); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, + vect_key_boundary, vect_val_boundary); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ReadBulkInternal GetBulkRows returns ODBCM_RC_CONNECTION_ERROR +// ReadBulkInternal GetBulkRows returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, ReadBulkInternal_02) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -400,17 +424,20 @@ TEST_F(BoundaryTest, ReadBulkInternal_02) { getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; ServerSession ses; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.ReadBulkInternal(db_conn,&k,&v,UNC_DT_STATE,max_rep_ct,vect_key_boundary,vect_val_boundary); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, + vect_key_boundary, vect_val_boundary); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ReadBulkInternal GetBulkRows returns ODBCM_RC_QUERY_FAILED +// ReadBulkInternal GetBulkRows returns ODBCM_RC_QUERY_FAILED TEST_F(BoundaryTest, ReadBulkInternal_03) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -419,17 +446,20 @@ TEST_F(BoundaryTest, ReadBulkInternal_03) { getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; ServerSession ses; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_QUERY_FAILED); - int ret = KtboundaryObj.ReadBulkInternal(db_conn,&k,&v,UNC_DT_STATE,max_rep_ct,vect_key_boundary,vect_val_boundary); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_QUERY_FAILED); + int ret = KtboundaryObj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, + vect_key_boundary, vect_val_boundary); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// ReadBulkInternal GetBulkRows returns ODBCM_RC_SUCCESS +// ReadBulkInternal GetBulkRows returns ODBCM_RC_SUCCESS TEST_F(BoundaryTest, ReadBulkInternal_04) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -437,17 +467,20 @@ TEST_F(BoundaryTest, ReadBulkInternal_04) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.ReadBulkInternal(db_conn,&k,&v,UNC_DT_STATE,max_rep_ct,vect_key_boundary,vect_val_boundary); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, + vect_key_boundary, vect_val_boundary); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// Boundary Delete on unsupported data type server sessio failed +// Boundary Delete on unsupported data type server sessio failed TEST_F(BoundaryTest, Delete_01) { key_boundary_t k; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; ServerSession ses; @@ -460,16 +493,18 @@ TEST_F(BoundaryTest, Delete_01) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_RUNNING); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_RUNNING,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Delete( + db_conn, session_id, + configuration_id, &k, UNC_DT_RUNNING, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Boundary Delete on unsupported data type server session pass +// Boundary Delete on unsupported data type server session pass TEST_F(BoundaryTest, Delete_02) { key_boundary_t k; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; ServerSession ses; @@ -479,20 +514,22 @@ TEST_F(BoundaryTest, Delete_02) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); ses.stub_setAddOutput((uint32_t)UNC_DT_RUNNING); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_RUNNING,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Delete( + db_conn, session_id, + configuration_id, &k, UNC_DT_RUNNING, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } #if 0 -// DeleteOneRow returns ODBCM_RC_SUCCESS +// DeleteOneRow returns ODBCM_RC_SUCCESS TEST_F(BoundaryTest, Delete_03) { key_boundary_t k; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; ServerSession ses; @@ -503,20 +540,22 @@ TEST_F(BoundaryTest, Delete_03) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)UPLL_IS_KEY_TYPE_IN_USE_OP); - ses.stub_setAddOutput((uint32_t)UPPL_RC_SUCCESS); + ses.stub_setAddOutput((uint32_t)UNC_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteOneRow returns ODBCM_RC_CONNECTION_ERROR +// DeleteOneRow returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, Delete_04) { key_boundary_t k; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; ServerSession ses; @@ -526,21 +565,23 @@ TEST_F(BoundaryTest, Delete_04) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_DB_ACCESS); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_DB_ACCESS); ses.stub_setAddOutput((uint32_t)UPLL_IS_KEY_TYPE_IN_USE_OP); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteOneRow returns ODBCM_RC_ROW_NOT_EXISTS +// DeleteOneRow returns ODBCM_RC_ROW_NOT_EXISTS TEST_F(BoundaryTest, Delete_05) { key_boundary_t k; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; ServerSession ses; @@ -550,20 +591,22 @@ TEST_F(BoundaryTest, Delete_05) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_NO_SUCH_INSTANCE); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteOneRow returns ODBCM_RC_FAILED +// DeleteOneRow returns ODBCM_RC_FAILED TEST_F(BoundaryTest, Delete_06) { key_boundary_t k; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; ServerSession ses; @@ -576,19 +619,21 @@ TEST_F(BoundaryTest, Delete_06) { ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_DB_DELETE); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } #endif -// DeleteOneRow returns ODBCM_RC_FAILED +// DeleteOneRow returns ODBCM_RC_FAILED TEST_F(BoundaryTest, Delete_07) { key_boundary_t k; - uint32_t session_id = 1; - uint32_t configuration_id = 2; + uint32_t session_id = 1; + uint32_t configuration_id = 2; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; ServerSession ses; @@ -598,16 +643,18 @@ TEST_F(BoundaryTest, Delete_07) { ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); ses.stub_setAddOutput((uint32_t)0); - ses.stub_setAddOutput((uint32_t)UPPL_RC_SUCCESS); + ses.stub_setAddOutput((uint32_t)UNC_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// ReadInternal success +// ReadInternal success TEST_F(BoundaryTest, ReadInternal_01) { key_boundary_t k; val_boundary_st_t v; @@ -617,15 +664,17 @@ TEST_F(BoundaryTest, ReadInternal_01) { vector boundary_val; boundary_key.push_back(&k); boundary_val.push_back(&v); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.ReadInternal(db_conn,boundary_key,boundary_val,UNC_DT_STATE,operation_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.ReadInternal( + db_conn, boundary_key, boundary_val, UNC_DT_STATE, operation_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadInternal operation_type != UNC_OP_READ +// ReadInternal operation_type ! = UNC_OP_READ TEST_F(BoundaryTest, ReadInternal_02) { key_boundary_t k; val_boundary_t v; @@ -635,15 +684,16 @@ TEST_F(BoundaryTest, ReadInternal_02) { vector boundary_val; boundary_key.push_back(&k); boundary_val.push_back(&v); - uint32_t operation_type = UNC_OP_CREATE; + uint32_t operation_type = UNC_OP_CREATE; Kt_Boundary KtboundaryObj; ServerSession ses; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.ReadInternal(db_conn,boundary_key,boundary_val,UNC_DT_STATE,operation_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.ReadInternal( + db_conn, boundary_key, boundary_val, UNC_DT_STATE, operation_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBoundaryValFromDB returns failure +// ReadBoundaryValFromDB returns failure TEST_F(BoundaryTest, ReadInternal_03) { key_boundary_t k; val_boundary_t v; @@ -653,205 +703,233 @@ TEST_F(BoundaryTest, ReadInternal_03) { vector boundary_val; boundary_key.push_back(&k); boundary_val.push_back(&v); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.ReadInternal(db_conn,boundary_key,boundary_val,UNC_DT_STATE,operation_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.ReadInternal( + db_conn, boundary_key, boundary_val, UNC_DT_STATE, operation_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ReadBulk +// ReadBulk TEST_F(BoundaryTest, ReadBulk_01) { key_boundary_t k; getKeyForKtBoundary1(k); - uint32_t max_rep_ct = 2; - int child_index = 1; - ReadRequest *read_req = NULL; + uint32_t max_rep_ct = 2; + int child_index = 1; + ReadRequest *read_req = NULL; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.ReadBulk(db_conn,&k,UNC_DT_IMPORT,max_rep_ct,child_index,(pfc_bool_t)false,(pfc_bool_t)false,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.ReadBulk( + db_conn, &k, UNC_DT_IMPORT, max_rep_ct, + child_index, + (pfc_bool_t)false, (pfc_bool_t)false, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// ReadBulk +// ReadBulk TEST_F(BoundaryTest, ReadBulk_02) { key_boundary_t k; getKeyForKtBoundary1(k); - uint32_t max_rep_ct = 0; - int child_index = 1; - ReadRequest *read_req = NULL; + uint32_t max_rep_ct = 0; + int child_index = 1; + ReadRequest *read_req = NULL; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.ReadBulk(db_conn,&k,UNC_DT_CANDIDATE,max_rep_ct,child_index,(pfc_bool_t)false,(pfc_bool_t)false,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.ReadBulk( + db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, + child_index, + (pfc_bool_t)false, (pfc_bool_t)false, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulk +// ReadBulk TEST_F(BoundaryTest, ReadBulk_03) { key_boundary_t k; getKeyForKtBoundary1(k); - uint32_t max_rep_ct = 1; - int child_index = 1; + uint32_t max_rep_ct = 1; + int child_index = 1; ReadRequest read_req; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.ReadBulk(db_conn,&k,UNC_DT_CANDIDATE,max_rep_ct,child_index,(pfc_bool_t)false,(pfc_bool_t)false,&read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.ReadBulk( + db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, child_index, + (pfc_bool_t)false, (pfc_bool_t)false, &read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulk +// ReadBulk TEST_F(BoundaryTest, ReadBulk_04) { key_boundary_t k; getKeyForKtBoundary1(k); - uint32_t max_rep_ct = 2; - int child_index = 1; + uint32_t max_rep_ct = 2; + int child_index = 1; ReadRequest read_req; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.ReadBulk(db_conn,&k,UNC_DT_STATE,max_rep_ct,child_index,(pfc_bool_t)false,(pfc_bool_t)false,&read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, + (pfc_bool_t)false, (pfc_bool_t)false, &read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulk +// ReadBulk TEST_F(BoundaryTest, ReadBulk_05) { key_boundary_t k; getKeyForKtBoundary1(k); - uint32_t max_rep_ct = 1; - int child_index = 1; + uint32_t max_rep_ct = 1; + int child_index = 1; ReadRequest read_req; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.ReadBulk(db_conn,&k,UNC_DT_STATE,max_rep_ct,child_index,(pfc_bool_t)false,(pfc_bool_t)false,&read_req); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, + (pfc_bool_t)false, (pfc_bool_t)false, &read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ReadBulk +// ReadBulk TEST_F(BoundaryTest, ReadBulk_06) { key_boundary_t k; getKeyForKtBoundary1(k); - uint32_t max_rep_ct = 1; - int child_index = 1; + uint32_t max_rep_ct = 1; + int child_index = 1; ReadRequest read_req; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = KtboundaryObj.ReadBulk(db_conn,&k,UNC_DT_STATE,max_rep_ct,child_index,(pfc_bool_t)false,(pfc_bool_t)false,&read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = KtboundaryObj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, + (pfc_bool_t)false, (pfc_bool_t)false, &read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSyntaxValidation returns success +// PerformSyntaxValidation returns success TEST_F(BoundaryTest, PerformSyntaxValidation_01) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSyntaxValidation without boundary name +// PerformSyntaxValidation without boundary name TEST_F(BoundaryTest, PerformSyntaxValidation_02) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary0(k); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without controller name1 +// PerformSyntaxValidation without controller name1 TEST_F(BoundaryTest, PerformSyntaxValidation_03) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); memset(v.controller_name1, '\0', 32); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without controller name2 +// PerformSyntaxValidation without controller name2 TEST_F(BoundaryTest, PerformSyntaxValidation_04) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); memset(v.controller_name2, '\0', 32); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without domain name1 +// PerformSyntaxValidation without domain name1 TEST_F(BoundaryTest, PerformSyntaxValidation_05) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); memset(v.domain_name1, '\0', 32); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without domain name2 +// PerformSyntaxValidation without domain name2 TEST_F(BoundaryTest, PerformSyntaxValidation_06) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); memset(v.domain_name2, '\0', 32); - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation returns success +// PerformSyntaxValidation returns success TEST_F(BoundaryTest, PerformSyntaxValidation_07) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); - uint32_t operation_type = UNC_OP_UPDATE; + uint32_t operation_type = UNC_OP_UPDATE; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation returns success +// PerformSyntaxValidation returns success TEST_F(BoundaryTest, PerformSyntaxValidation_08) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); - uint32_t operation_type = UNC_OP_READ_SIBLING_BEGIN; + uint32_t operation_type = UNC_OP_READ_SIBLING_BEGIN; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.PerformSyntaxValidation(db_conn,&k,&v,operation_type,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.PerformSyntaxValidation( + db_conn, &k, &v, operation_type, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GETONEROW returns ODBCM_RC_RECORD_NOT_FOUND +// GETONEROW returns ODBCM_RC_RECORD_NOT_FOUND TEST_F(BoundaryTest, ReadBoundaryValFromDB_01) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -859,17 +937,20 @@ TEST_F(BoundaryTest, ReadBoundaryValFromDB_01) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.ReadBoundaryValFromDB(db_conn,&k,&v,UNC_DT_STATE,UNC_OP_READ,max_rep_ct,vect_key_boundary,vect_val_boundary,false); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.ReadBoundaryValFromDB( + db_conn, &k, &v, UNC_DT_STATE, UNC_OP_READ, max_rep_ct, + vect_key_boundary, vect_val_boundary, false); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// GETONEROW returns ODBCM_RC_CONNECTION_ERROR +// GETONEROW returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, ReadBoundaryValFromDB_02) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -877,17 +958,20 @@ TEST_F(BoundaryTest, ReadBoundaryValFromDB_02) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.ReadBoundaryValFromDB(db_conn,&k,&v,UNC_DT_STATE,UNC_OP_READ,max_rep_ct,vect_key_boundary,vect_val_boundary,false); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.ReadBoundaryValFromDB( + db_conn, &k, &v, UNC_DT_STATE, UNC_OP_READ, max_rep_ct, + vect_key_boundary, vect_val_boundary, false); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// GETONEROW returns ODBCM_RC_FAILED +// GETONEROW returns ODBCM_RC_FAILED TEST_F(BoundaryTest, ReadBoundaryValFromDB_03) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -895,17 +979,20 @@ TEST_F(BoundaryTest, ReadBoundaryValFromDB_03) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtboundaryObj.ReadBoundaryValFromDB(db_conn,&k,&v,UNC_DT_STATE,UNC_OP_READ,max_rep_ct,vect_key_boundary,vect_val_boundary,false); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtboundaryObj.ReadBoundaryValFromDB( + db_conn, &k, &v, UNC_DT_STATE, UNC_OP_READ, max_rep_ct, + vect_key_boundary, vect_val_boundary, false); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// GETBULKROWS returns ODBCM_RC_RECORD_NOT_FOUND +// GETBULKROWS returns ODBCM_RC_RECORD_NOT_FOUND TEST_F(BoundaryTest, ReadBoundaryValFromDB_04) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -913,17 +1000,20 @@ TEST_F(BoundaryTest, ReadBoundaryValFromDB_04) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.ReadBoundaryValFromDB(db_conn,&k,&v,UNC_DT_STATE,UNC_OP_READ_NEXT,max_rep_ct,vect_key_boundary,vect_val_boundary,false); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.ReadBoundaryValFromDB( + db_conn, &k, &v, UNC_DT_STATE, UNC_OP_READ_NEXT, max_rep_ct, + vect_key_boundary, vect_val_boundary, false); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// GETBULKROWS returns ODBCM_RC_CONNECTION_ERROR +// GETBULKROWS returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, ReadBoundaryValFromDB_05) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -931,17 +1021,20 @@ TEST_F(BoundaryTest, ReadBoundaryValFromDB_05) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.ReadBoundaryValFromDB(db_conn,&k,&v,UNC_DT_STATE,UNC_OP_READ_NEXT,max_rep_ct,vect_key_boundary,vect_val_boundary,false); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.ReadBoundaryValFromDB( + db_conn, &k, &v, UNC_DT_STATE, UNC_OP_READ_NEXT, max_rep_ct, + vect_key_boundary, vect_val_boundary, false); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// GETBULKROWS returns ODBCM_RC_FAILED +// GETBULKROWS returns ODBCM_RC_FAILED TEST_F(BoundaryTest, ReadBoundaryValFromDB_06) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -949,17 +1042,20 @@ TEST_F(BoundaryTest, ReadBoundaryValFromDB_06) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = KtboundaryObj.ReadBoundaryValFromDB(db_conn,&k,&v,UNC_DT_STATE,UNC_OP_READ_NEXT,max_rep_ct,vect_key_boundary,vect_val_boundary,false); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = KtboundaryObj.ReadBoundaryValFromDB( + db_conn, &k, &v, UNC_DT_STATE, UNC_OP_READ_NEXT, max_rep_ct, + vect_key_boundary, vect_val_boundary, false); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// operation_type < UNC_OP_READ +// operation_type < UNC_OP_READ TEST_F(BoundaryTest, ReadBoundaryValFromDB_07) { key_boundary_t k; val_boundary_t v; - uint32_t max_rep_ct = 2; + uint32_t max_rep_ct = 2; vector vect_key_boundary; vector vect_val_boundary; vect_key_boundary.clear(); @@ -967,286 +1063,339 @@ TEST_F(BoundaryTest, ReadBoundaryValFromDB_07) { getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.ReadBoundaryValFromDB(db_conn,&k,&v,UNC_DT_STATE,UNC_OP_CREATE,max_rep_ct,vect_key_boundary,vect_val_boundary,false); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.ReadBoundaryValFromDB( + db_conn, &k, &v, UNC_DT_STATE, UNC_OP_CREATE, max_rep_ct, + vect_key_boundary, vect_val_boundary, false); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GetModifiedRows returns ODBCM_RC_RECORD_NOT_FOUND +// GetModifiedRows returns ODBCM_RC_RECORD_NOT_FOUND TEST_F(BoundaryTest, GetModifiedRows_01) { vector obj_key_struct; obj_key_struct.clear(); - CsRowStatus row_status = UPDATED; + CsRowStatus row_status = UPDATED; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.GetModifiedRows(db_conn,obj_key_struct,row_status); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.GetModifiedRows(db_conn, obj_key_struct, row_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// GetModifiedRows returns ODBCM_RC_CONNECTION_ERROR +// GetModifiedRows returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, GetModifiedRows_02) { vector obj_key_struct; obj_key_struct.clear(); - CsRowStatus row_status = UPDATED; + CsRowStatus row_status = UPDATED; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.GetModifiedRows(db_conn,obj_key_struct,row_status); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.GetModifiedRows(db_conn, obj_key_struct, row_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// GetModifiedRows returns ODBCM_RC_SUCCESS +// GetModifiedRows returns ODBCM_RC_SUCCESS TEST_F(BoundaryTest, GetModifiedRows_03) { vector obj_key_struct; obj_key_struct.clear(); - CsRowStatus row_status = UPDATED; + CsRowStatus row_status = UPDATED; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.GetModifiedRows(db_conn,obj_key_struct,row_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.GetModifiedRows(db_conn, obj_key_struct, row_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GetModifiedRows returns ODBCM_RC_FAILED +// GetModifiedRows returns ODBCM_RC_FAILED TEST_F(BoundaryTest, GetModifiedRows_04) { vector obj_key_struct; obj_key_struct.clear(); - CsRowStatus row_status = UPDATED; + CsRowStatus row_status = UPDATED; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_FAILED); - int ret = KtboundaryObj.GetModifiedRows(db_conn,obj_key_struct,row_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_FAILED); + int ret = KtboundaryObj.GetModifiedRows(db_conn, obj_key_struct, row_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// IsKeyExists with empty vector +// IsKeyExists with empty vector TEST_F(BoundaryTest, IsKeyExists_01) { vector obj_key_struct; obj_key_struct.clear(); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,obj_key_struct); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.IsKeyExists( + db_conn, UNC_DT_CANDIDATE, obj_key_struct); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -// IsRowExists returns ODBCM_RC_CONNECTION_ERROR +// IsRowExists returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, IsKeyExists_02) { vector obj_key_struct; obj_key_struct.clear(); - string BD1 = "boundary1"; + string BD1 = "boundary1"; obj_key_struct.push_back(BD1); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,obj_key_struct); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.IsKeyExists( + db_conn, UNC_DT_CANDIDATE, obj_key_struct); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// IsRowExists returns ODBCM_RC_ROW_EXISTS +// IsRowExists returns ODBCM_RC_ROW_EXISTS TEST_F(BoundaryTest, IsKeyExists_03) { vector obj_key_struct; obj_key_struct.clear(); - string BD1 = "boundary1"; + string BD1 = "boundary1"; obj_key_struct.push_back(BD1); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtboundaryObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,obj_key_struct); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtboundaryObj.IsKeyExists( + db_conn, UNC_DT_CANDIDATE, obj_key_struct); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// IsRowExists returns ODBCM_RC_FAILED +// IsRowExists returns ODBCM_RC_FAILED TEST_F(BoundaryTest, IsKeyExists_04) { vector obj_key_struct; obj_key_struct.clear(); - string BD1 = "boundary1"; + string BD1 = "boundary1"; obj_key_struct.push_back(BD1); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); - int ret = KtboundaryObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,obj_key_struct); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); + int ret = KtboundaryObj.IsKeyExists( + db_conn, UNC_DT_CANDIDATE, obj_key_struct); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// PerformSemanticValidation with UNC_OP_CREATE +// PerformSemanticValidation with UNC_OP_CREATE TEST_F(BoundaryTest, PerformSemanticValidation_01) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_CREATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_CREATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } -// IsKeyExists returns ODBCM_RC_CONNECTION_ERROR +// IsKeyExists returns ODBCM_RC_CONNECTION_ERROR TEST_F(BoundaryTest, PerformSemanticValidation_02) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_CREATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_CREATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with UNC_OP_UPDATE +// PerformSemanticValidation with UNC_OP_UPDATE TEST_F(BoundaryTest, PerformSemanticValidation_03) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with UNC_OP_DELETE +// PerformSemanticValidation with UNC_OP_DELETE TEST_F(BoundaryTest, PerformSemanticValidation_04) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_DELETE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_DELETE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with UNC_OP_READ +// PerformSemanticValidation with UNC_OP_READ TEST_F(BoundaryTest, PerformSemanticValidation_05) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_READ,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_READ, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with UNC_OP_UPDATE and IsKeyExists returns ODBCM_RC_ROW_NOT_EXISTS +// PerformSemanticValidation with UNC_OP_UPDATE and +// IsKeyExists returns ODBCM_RC_ROW_NOT_EXISTS TEST_F(BoundaryTest, PerformSemanticValidation_06) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// PerformSemanticValidation with UNC_OP_DELETE and IsKeyExists returns ODBCM_RC_ROW_NOT_EXISTS +// PerformSemanticValidation with UNC_OP_DELETE and +// IsKeyExists returns ODBCM_RC_ROW_NOT_EXISTS TEST_F(BoundaryTest, PerformSemanticValidation_07) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_DELETE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_DELETE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// PerformSemanticValidation with UNC_OP_READ and IsKeyExists returns ODBCM_RC_ROW_NOT_EXISTS +// PerformSemanticValidation with UNC_OP_READ and +// IsKeyExists returns ODBCM_RC_ROW_NOT_EXISTS TEST_F(BoundaryTest, PerformSemanticValidation_08) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_READ,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_READ, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// PerformSemanticValidation with UNC_OP_UPDATE and IsKeyExists returns ODBCM_RC_ROW_EXISTS +// PerformSemanticValidation with UNC_OP_UPDATE and +// IsKeyExists returns ODBCM_RC_ROW_EXISTS TEST_F(BoundaryTest, PerformSemanticValidation_09) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// controller1 == controller2 && domain1 == domain2 +// controller1 = = controller2 && domain1 = = domain2 TEST_F(BoundaryTest, PerformSemanticValidation_10) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary5(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SEMANTIC, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SEMANTIC, ret); } -// Val struct NULL +// Val struct NULL TEST_F(BoundaryTest, PerformSemanticValidation_11) { key_boundary_t k; - val_boundary_t *v = NULL; + val_boundary_t *v = NULL; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSemanticValidation with UNC_OP_DELETE and IsKeyExists returns ODBCM_RC_ROW_EXISTS +// PerformSemanticValidation with UNC_OP_DELETE +// and IsKeyExists returns ODBCM_RC_ROW_EXISTS TEST_F(BoundaryTest, PerformSemanticValidation_12) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_DELETE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_DELETE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// Getctr type failure +// Getctr type failure TEST_F(BoundaryTest, PerformSemanticValidation_13) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SEMANTIC, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SEMANTIC, ret); } -// Domain1 name Default +// Domain1 name Default TEST_F(BoundaryTest, PerformSemanticValidation_14) { key_boundary_t k; val_boundary_t v; @@ -1255,14 +1404,17 @@ TEST_F(BoundaryTest, PerformSemanticValidation_14) { memset(v.domain_name1, '\0', 32); memcpy(v.domain_name1, "(DEFAULT)", strlen("(DEFAULT)")); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SEMANTIC, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SEMANTIC, ret); } -// Domain2 name Default +// Domain2 name Default TEST_F(BoundaryTest, PerformSemanticValidation_15) { key_boundary_t k; val_boundary_t v; @@ -1271,217 +1423,235 @@ TEST_F(BoundaryTest, PerformSemanticValidation_15) { memset(v.domain_name2, '\0', 32); memcpy(v.domain_name2, "(DEFAULT)", strlen("(DEFAULT)")); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.PerformSemanticValidation(db_conn,&k,&v,UNC_OP_UPDATE,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SEMANTIC, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.PerformSemanticValidation( + db_conn, &k, &v, UNC_OP_UPDATE, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SEMANTIC, ret); } -// ValidateSiblingFiltering +// ValidateSiblingFiltering TEST_F(BoundaryTest, ValidateSiblingFiltering_01) { Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.ValidateSiblingFiltering(0,0,1,1); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtboundaryObj.ValidateSiblingFiltering(0, 0, 1, 1); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// ValidateSiblingFiltering +// ValidateSiblingFiltering TEST_F(BoundaryTest, ValidateSiblingFiltering_02) { Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.ValidateSiblingFiltering(1,0,0,1); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtboundaryObj.ValidateSiblingFiltering(1, 0, 0, 1); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// ValidateSiblingFiltering +// ValidateSiblingFiltering TEST_F(BoundaryTest, ValidateSiblingFiltering_03) { Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.ValidateSiblingFiltering(1,1,1,1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.ValidateSiblingFiltering(1, 1, 1, 1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// SendOperStatusNotification Success +// SendOperStatusNotification Success TEST_F(BoundaryTest, SendOperStatusNotification_01) { key_boundary_t k; getKeyForKtBoundary1(k); - uint8_t old_oper_st = 1; - uint8_t new_oper_st = 0; + uint8_t old_oper_st = 1; + uint8_t new_oper_st = 0; ServerSession ses; ses.stub_setAddOutput((uint32_t)UNC_OP_UPDATE); ses.stub_setAddOutput((uint32_t)UNC_DT_STATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.SendOperStatusNotification(k,old_oper_st,new_oper_st); - EXPECT_EQ(UPPL_RC_FAILURE, ret); + int ret = KtboundaryObj.SendOperStatusNotification( + k, old_oper_st, new_oper_st); + EXPECT_EQ(UNC_UPPL_RC_FAILURE, ret); } -// SendOperStatusNotification Failure +// SendOperStatusNotification Failure TEST_F(BoundaryTest, SendOperStatusNotification_02) { key_boundary_t k; getKeyForKtBoundary1(k); - uint8_t old_oper_st = 1; - uint8_t new_oper_st = 0; + uint8_t old_oper_st = 1; + uint8_t new_oper_st = 0; ServerSession ses; ses.stub_setAddOutput((uint32_t)UNC_OP_UPDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.SendOperStatusNotification(k,old_oper_st,new_oper_st); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtboundaryObj.SendOperStatusNotification( + k, old_oper_st, new_oper_st); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// GetAllBoundaryOperStatus success +// GetAllBoundaryOperStatus success TEST_F(BoundaryTest, GetAllBoundaryOperStatus_01) { - string ctr_name = "controller1"; - string domain = "domain1"; - string lp_name = "logical_port1"; + string ctr_name = "controller1"; + string domain = "domain1"; + string lp_name = "logical_port1"; map bdry_notfn; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.GetAllBoundaryOperStatus(db_conn,ctr_name,domain,lp_name,bdry_notfn,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.GetAllBoundaryOperStatus( + db_conn, ctr_name, domain, lp_name, bdry_notfn, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GetAllBoundaryOperStatus Failure +// GetAllBoundaryOperStatus Failure TEST_F(BoundaryTest, GetAllBoundaryOperStatus_02) { - string ctr_name = "controller1"; - string domain = "domain1"; - string lp_name = "logical_port1"; + string ctr_name = "controller1"; + string domain = "domain1"; + string lp_name = "logical_port1"; map bdry_notfn; Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = KtboundaryObj.GetAllBoundaryOperStatus(db_conn,ctr_name,domain,lp_name,bdry_notfn,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = KtboundaryObj.GetAllBoundaryOperStatus( + db_conn, ctr_name, domain, lp_name, bdry_notfn, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// CheckBoundaryExistence +// CheckBoundaryExistence TEST_F(BoundaryTest, CheckBoundaryExistence_01) { key_boundary_t k; val_boundary_t v; getKeyForKtBoundary1(k); getValForKtBoundary1(v); Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.CheckBoundaryExistence(db_conn,&k,&v,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SEMANTIC, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.CheckBoundaryExistence(db_conn, &k, &v, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SEMANTIC, ret); } -// GetOperStatus success +// GetOperStatus success TEST_F(BoundaryTest, GetOperStatus_01) { key_boundary_t k; - uint8_t oper_status = 0; + uint8_t oper_status = 0; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.GetOperStatus(db_conn,UNC_DT_STATE,&k,oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.GetOperStatus(db_conn, UNC_DT_STATE, &k, oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GetOperStatus Failure +// GetOperStatus Failure TEST_F(BoundaryTest, GetOperStatus_02) { key_boundary_t k; - uint8_t oper_status = 0; + uint8_t oper_status = 0; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.GetOperStatus(db_conn,UNC_DT_STATE,&k,oper_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.GetOperStatus(db_conn, UNC_DT_STATE, &k, oper_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// GetBoundaryValidFlag +// GetBoundaryValidFlag TEST_F(BoundaryTest, GetBoundaryValidFlag_01) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.GetBoundaryValidFlag(db_conn,&k,v,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.GetBoundaryValidFlag(db_conn, &k, v, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// IsBoundaryReferred with key type UNC_KT_CONTROLLER +// IsBoundaryReferred with key type UNC_KT_CONTROLLER TEST_F(BoundaryTest, IsBoundaryReferred_01) { key_ctr_t k; pfc_strlcpy(reinterpret_cast(k.controller_name), "Controller1", sizeof(k.controller_name)); - unc_key_type_t keytype = UNC_KT_CONTROLLER; + unc_key_type_t keytype = UNC_KT_CONTROLLER; Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - OdbcmConnectionHandler *db_conn =NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + OdbcmConnectionHandler *db_conn = NULL; ASSERT_EQ(PFC_TRUE, KtboundaryObj.IsBoundaryReferred(db_conn, keytype, &k, UNC_DT_STATE)); } -// IsBoundaryReferred with key type UNC_KT_CONTROLLER and row not exists +// IsBoundaryReferred with key type UNC_KT_CONTROLLER and row not exists TEST_F(BoundaryTest, IsBoundaryReferred_02) { key_ctr_t k; pfc_strlcpy(reinterpret_cast(k.controller_name), "Controller1", sizeof(k.controller_name)); - unc_key_type_t keytype = UNC_KT_CONTROLLER; + unc_key_type_t keytype = UNC_KT_CONTROLLER; Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - OdbcmConnectionHandler *db_conn =NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + OdbcmConnectionHandler *db_conn = NULL; ASSERT_EQ(PFC_FALSE, KtboundaryObj.IsBoundaryReferred(db_conn, keytype, &k, UNC_DT_STATE)); } -// IsBoundaryReferred with key type UNC_KT_CTR_DOMAIN +// IsBoundaryReferred with key type UNC_KT_CTR_DOMAIN TEST_F(BoundaryTest, IsBoundaryReferred_03) { key_ctr_domain_t k; pfc_strlcpy(reinterpret_cast(k.ctr_key.controller_name), "Controller1", sizeof(k.ctr_key.controller_name)); pfc_strlcpy(reinterpret_cast(k.domain_name), "Domain1", sizeof(k.domain_name)); - unc_key_type_t keytype = UNC_KT_CTR_DOMAIN; + unc_key_type_t keytype = UNC_KT_CTR_DOMAIN; Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - OdbcmConnectionHandler *db_conn =NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + OdbcmConnectionHandler *db_conn = NULL; ASSERT_EQ(PFC_TRUE, KtboundaryObj.IsBoundaryReferred(db_conn, keytype, &k, UNC_DT_STATE)); } -// IsBoundaryReferred with key type UNC_KT_CTR_DOMAIN and row not exists +// IsBoundaryReferred with key type UNC_KT_CTR_DOMAIN and row not exists TEST_F(BoundaryTest, IsBoundaryReferred_04) { key_ctr_domain_t k; pfc_strlcpy(reinterpret_cast(k.ctr_key.controller_name), "Controller1", sizeof(k.ctr_key.controller_name)); pfc_strlcpy(reinterpret_cast(k.domain_name), "Domain1", sizeof(k.domain_name)); - unc_key_type_t keytype = UNC_KT_CTR_DOMAIN; + unc_key_type_t keytype = UNC_KT_CTR_DOMAIN; Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - OdbcmConnectionHandler *db_conn =NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + OdbcmConnectionHandler *db_conn = NULL; ASSERT_EQ(PFC_FALSE, KtboundaryObj.IsBoundaryReferred(db_conn, keytype, &k, UNC_DT_STATE)); } -// IsBoundaryReferred with unknown key type +// IsBoundaryReferred with unknown key type TEST_F(BoundaryTest, IsBoundaryReferred_05) { - unc_key_type_t keytype = UNC_KT_LINK; + unc_key_type_t keytype = UNC_KT_LINK; Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - OdbcmConnectionHandler *db_conn =NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + OdbcmConnectionHandler *db_conn = NULL; ASSERT_EQ(PFC_FALSE, KtboundaryObj.IsBoundaryReferred(db_conn, keytype, NULL, UNC_DT_STATE)); } -//PerformRead with negative option1 +// PerformRead with negative option1 TEST_F(BoundaryTest, PerformRead_Neg_option1_01) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1493,18 +1663,21 @@ TEST_F(BoundaryTest, PerformRead_Neg_option1_01) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with negative option1 +// PerformRead with negative option1 TEST_F(BoundaryTest, PerformRead_Neg_option1_02) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1513,21 +1686,24 @@ TEST_F(BoundaryTest, PerformRead_Neg_option1_02) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION1); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION1); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with unsupported datatype +// PerformRead with unsupported datatype TEST_F(BoundaryTest, PerformRead_Neg_datatype_03) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1539,18 +1715,21 @@ TEST_F(BoundaryTest, PerformRead_Neg_datatype_03) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_AUDIT,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_AUDIT, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with unsupported datatype +// PerformRead with unsupported datatype TEST_F(BoundaryTest, PerformRead_Neg_datatype_04) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1559,22 +1738,26 @@ TEST_F(BoundaryTest, PerformRead_Neg_datatype_04) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_AUDIT); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_AUDIT,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_AUDIT, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with negative dB +// PerformRead with negative dB TEST_F(BoundaryTest, PerformRead_Neg_DB_05) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1586,19 +1769,23 @@ TEST_F(BoundaryTest, PerformRead_Neg_DB_05) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with positive dB +// PerformRead with positive dB TEST_F(BoundaryTest, PerformRead_pos_DB_06) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1610,19 +1797,23 @@ TEST_F(BoundaryTest, PerformRead_pos_DB_06) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with max_rep_cnt NULL +// PerformRead with max_rep_cnt NULL TEST_F(BoundaryTest, PerformRead_max_rep_count_07) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1634,19 +1825,23 @@ TEST_F(BoundaryTest, PerformRead_max_rep_count_07) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)0); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with Datatype UNC_DT_STATE +// PerformRead with Datatype UNC_DT_STATE TEST_F(BoundaryTest, PerformRead_STATE_08) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1656,19 +1851,23 @@ TEST_F(BoundaryTest, PerformRead_STATE_08) { sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with max_rep_cnt NULL +// PerformRead with max_rep_cnt NULL TEST_F(BoundaryTest, PerformRead_max_rep_count_09) { key_boundary_t k; val_boundary_st_t v; - memset(&v,0,sizeof(val_boundary_st_t)); + memset(&v, 0, sizeof(val_boundary_st_t)); getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1677,26 +1876,30 @@ TEST_F(BoundaryTest, PerformRead_max_rep_count_09) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_NO_SUCH_INSTANCE); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE); sess.stub_setAddOutput((uint32_t)UNC_KT_BOUNDARY); - int ret = KtboundaryObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)0); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtboundaryObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//HandleOperStatus with Val_Struct NULL +// HandleOperStatus with Val_Struct NULL TEST_F(BoundaryTest, HandleOperStatus_Val_Struct_NULL_01) { key_boundary_t k; - val_boundary_t *v=NULL; + val_boundary_t *v = NULL; vector ref_oper_status; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = KtboundaryObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,v,ref_oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = KtboundaryObj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, v, ref_oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleOperStatus +// HandleOperStatus TEST_F(BoundaryTest, HandleOperStatus_02) { key_boundary_t k; val_boundary_t v; @@ -1704,15 +1907,16 @@ TEST_F(BoundaryTest, HandleOperStatus_02) { vector ref_oper_status; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - v.valid[kIdxBoundaryControllerName1]=0; - v.valid[kIdxBoundaryControllerName2]=0; + OdbcmConnectionHandler *db_conn = NULL; + v.valid[kIdxBoundaryControllerName1] = 0; + v.valid[kIdxBoundaryControllerName2] = 0; - int ret = KtboundaryObj.HandleOperStatus(db_conn,UNC_DT_CANDIDATE,&k,&v,ref_oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.HandleOperStatus( + db_conn, UNC_DT_CANDIDATE, &k, &v, ref_oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleOperStatus +// HandleOperStatus TEST_F(BoundaryTest, HandleOperStatus_03) { key_boundary_t k; val_boundary_t v; @@ -1720,15 +1924,16 @@ TEST_F(BoundaryTest, HandleOperStatus_03) { vector ref_oper_status; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - v.valid[kIdxBoundaryControllerName1]=1; - v.valid[kIdxBoundaryControllerName2]=0; + OdbcmConnectionHandler *db_conn = NULL; + v.valid[kIdxBoundaryControllerName1] = 1; + v.valid[kIdxBoundaryControllerName2] = 0; - int ret = KtboundaryObj.HandleOperStatus(db_conn,UNC_DT_CANDIDATE,&k,&v,ref_oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.HandleOperStatus( + db_conn, UNC_DT_CANDIDATE, &k, &v, ref_oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleOperStatus +// HandleOperStatus TEST_F(BoundaryTest, HandleOperStatus_04) { key_boundary_t k; val_boundary_t v; @@ -1736,15 +1941,16 @@ TEST_F(BoundaryTest, HandleOperStatus_04) { vector ref_oper_status; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - v.valid[kIdxBoundaryControllerName2]=1; - v.valid[kIdxBoundaryControllerName1]=0; + OdbcmConnectionHandler *db_conn = NULL; + v.valid[kIdxBoundaryControllerName2] = 1; + v.valid[kIdxBoundaryControllerName1] = 0; - int ret = KtboundaryObj.HandleOperStatus(db_conn,UNC_DT_CANDIDATE,&k,&v,ref_oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.HandleOperStatus( + db_conn, UNC_DT_CANDIDATE, &k, &v, ref_oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleOperStatus +// HandleOperStatus TEST_F(BoundaryTest, HandleOperStatus_05) { key_boundary_t k; val_boundary_t v; @@ -1752,16 +1958,18 @@ TEST_F(BoundaryTest, HandleOperStatus_05) { vector ref_oper_status; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - v.valid[kIdxBoundaryControllerName2]=1; - v.valid[kIdxBoundaryControllerName1]=1; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + v.valid[kIdxBoundaryControllerName2] = 1; + v.valid[kIdxBoundaryControllerName1] = 1; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.HandleOperStatus(db_conn,UNC_DT_RUNNING,&k,&v,ref_oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.HandleOperStatus( + db_conn, UNC_DT_RUNNING, &k, &v, ref_oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleOperStatus +// HandleOperStatus TEST_F(BoundaryTest, HandleOperStatus_06) { key_boundary_t k; val_boundary_t v; @@ -1769,15 +1977,17 @@ TEST_F(BoundaryTest, HandleOperStatus_06) { vector ref_oper_status; getKeyForKtBoundary1(k); Kt_Boundary KtboundaryObj; - OdbcmConnectionHandler *db_conn =NULL; - v.valid[kIdxBoundaryControllerName2]=1; - v.valid[kIdxBoundaryControllerName1]=1; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + v.valid[kIdxBoundaryControllerName2] = 1; + v.valid[kIdxBoundaryControllerName1] = 1; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtboundaryObj.HandleOperStatus(db_conn,UNC_DT_RUNNING,&k,&v,ref_oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.HandleOperStatus( + db_conn, UNC_DT_RUNNING, &k, &v, ref_oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// FrameValidValue +// FrameValidValue TEST_F(BoundaryTest, FrameValidValue_01) { val_boundary_st v_st; val_boundary_t v; @@ -1786,7 +1996,7 @@ TEST_F(BoundaryTest, FrameValidValue_01) { string at_value("01234567"); Kt_Boundary KtboundaryObj; - KtboundaryObj.FrameValidValue(at_value,v_st,v); + KtboundaryObj.FrameValidValue(at_value, v_st, v); const uint32_t vsize(PFC_ARRAY_CAPACITY(v.valid)); for (uint32_t i(0); i < vsize; i++) { @@ -1799,140 +2009,154 @@ TEST_F(BoundaryTest, FrameValidValue_01) { ASSERT_EQ(required, v_st.valid[i]); } } -// FrameCsAttrValue +// FrameCsAttrValue TEST_F(BoundaryTest, FrameCsAttrValue_01) { val_boundary_t v; - string at_value = "boundary"; + string at_value = "boundary"; Kt_Boundary KtboundaryObj; - int ret = UPPL_RC_SUCCESS; - KtboundaryObj.FrameCsAttrValue(at_value,v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = UNC_RC_SUCCESS; + KtboundaryObj.FrameCsAttrValue(at_value, v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /********TAMIL TC's*********/ /*****getBoundaryInputOperStatus*****/ -//Send controller name as empty +// Send controller name as empty TEST_F(BoundaryTest, getBoundaryInputOperStatus_BadRequest) { - OdbcmConnectionHandler *db_conn = NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t data_type(UNC_DT_STATE); string controller_name; string domain_name; string logical_port_id; vector ref_oper_status; Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.getBoundaryInputOperStatus(db_conn, data_type, controller_name, domain_name, logical_port_id,ref_oper_status); + int ret = KtboundaryObj.getBoundaryInputOperStatus(db_conn, data_type, + controller_name, domain_name, logical_port_id, ref_oper_status); EXPECT_EQ(UPPL_BOUNDARY_OPER_UNKNOWN, ret); } -//Fill the controler name and send +// Fill the controler name and send TEST_F(BoundaryTest, getBoundaryInputOperStatus_ctrlName_fill) { - OdbcmConnectionHandler *db_conn = NULL; - uint32_t data_type = UNC_DT_STATE; - string controller_name = "ctr1"; + OdbcmConnectionHandler *db_conn = NULL; + uint32_t data_type = UNC_DT_STATE; + string controller_name = "ctr1"; string domain_name; string logical_port_id; vector ref_oper_status; Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.getBoundaryInputOperStatus(db_conn, data_type, controller_name, domain_name, logical_port_id,ref_oper_status); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.getBoundaryInputOperStatus(db_conn, data_type, + controller_name, domain_name, logical_port_id, ref_oper_status); + EXPECT_EQ(UPPL_BOUNDARY_OPER_UNKNOWN, ret); } TEST_F(BoundaryTest, getBoundaryInputOperStatus) { - OdbcmConnectionHandler *db_conn = NULL; - uint32_t data_type = UNC_DT_IMPORT; - string controller_name = "ctr1"; - string domain_name = ""; - string logical_port_id = ""; + OdbcmConnectionHandler *db_conn = NULL; + uint32_t data_type = UNC_DT_IMPORT; + string controller_name = "ctr1"; + string domain_name = ""; + string logical_port_id = ""; - unc_key_type_t key_type = UNC_KT_CONTROLLER; + unc_key_type_t key_type = UNC_KT_CONTROLLER; key_ctr_t key_struct; pfc_strlcpy(reinterpret_cast(key_struct.controller_name), "controller1", sizeof(key_struct.controller_name)); - uint8_t oper_status = 1; + uint8_t oper_status = 1; OperStatusHolder obj(key_type, &key_struct, oper_status); vector ref_oper_status; ref_oper_status.push_back(obj); Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.getBoundaryInputOperStatus(db_conn, data_type, controller_name, domain_name, logical_port_id,ref_oper_status); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.getBoundaryInputOperStatus(db_conn, data_type, + controller_name, domain_name, logical_port_id, ref_oper_status); EXPECT_EQ(UPPL_BOUNDARY_OPER_UNKNOWN, ret); } /********SetOperStatus********/ -//key_struct and val_struct are NULL -//return success +// key_struct and val_struct are NULL +// return success TEST_F(BoundaryTest, SetOperStatus_NULL_check) { - OdbcmConnectionHandler *db_conn = NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t data_type(UNC_DT_STATE); - key_boundary_t *k = NULL; - val_boundary_st_t *v = NULL; + key_boundary_t *k = NULL; + val_boundary_st_t *v = NULL; UpplBoundaryOperStatus oper_status(UPPL_BOUNDARY_OPER_UP); Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.SetOperStatus(db_conn,data_type,k,v,oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtboundaryObj.SetOperStatus( + db_conn, data_type, k, v, oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//controller_name1/2 flag is not valid +// controller_name1/2 flag is not valid TEST_F(BoundaryTest, SetOperStatus_InValid_CtrName) { - OdbcmConnectionHandler *db_conn = NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t data_type(UNC_DT_STATE); - key_boundary_t *k = NULL; + key_boundary_t *k = NULL; val_boundary_st_t v; memset(&v, 0, sizeof(v)); UpplBoundaryOperStatus oper_status(UPPL_BOUNDARY_OPER_UP); Kt_Boundary KtboundaryObj; - int ret = KtboundaryObj.SetOperStatus(db_conn,data_type,k,&v,oper_status); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = KtboundaryObj.SetOperStatus( + db_conn, data_type, k, &v, oper_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -//SetOperStatus Success_check +// SetOperStatus Success_check TEST_F(BoundaryTest, SetOperStatus_Success_check) { - OdbcmConnectionHandler *db_conn = NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t data_type(UNC_DT_STATE); key_boundary_t k; val_boundary_t v; - getKeyForKtBoundary1(k); + getKeyForKtBoundary1(k); getValForKtBoundary1(v); - v.valid[kIdxBoundaryControllerName1] = UNC_VF_VALID; + v.valid[kIdxBoundaryControllerName1] = UNC_VF_VALID; UpplBoundaryOperStatus oper_status(UPPL_BOUNDARY_OPER_UP); Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.SetOperStatus(db_conn,data_type,&k,&v,oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.SetOperStatus( + db_conn, data_type, &k, &v, oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//oper_status update operation not success +// oper_status update operation not success TEST_F(BoundaryTest, SetOperStatus_UPD_NotSucc_Ctr1_Valid) { - OdbcmConnectionHandler *db_conn = NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t data_type(UNC_DT_STATE); - key_boundary_t *k = NULL; + key_boundary_t *k = NULL; val_boundary_t v; - //getKeyForKtBoundary1(k); + // getKeyForKtBoundary1(k); getValForKtBoundary1(v); - v.valid[kIdxBoundaryControllerName1] = UNC_VF_VALID; - UpplBoundaryOperStatus oper_status = UPPL_BOUNDARY_OPER_UNKNOWN; + v.valid[kIdxBoundaryControllerName1] = UNC_VF_VALID; + UpplBoundaryOperStatus oper_status = UPPL_BOUNDARY_OPER_UNKNOWN; Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.SetOperStatus(db_conn,data_type,k,&v,oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.SetOperStatus( + db_conn, data_type, k, &v, oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//oper_status update operation not success -//ctr2 name is set as Invaild +// oper_status update operation not success +// ctr2 name is set as Invaild TEST_F(BoundaryTest, SetOperStatus_Ctr2_Valid) { - OdbcmConnectionHandler *db_conn = NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t data_type(UNC_DT_STATE); - key_boundary_t *k = NULL; + key_boundary_t *k = NULL; val_boundary_t v; - //getKeyForKtBoundary1(k); + // getKeyForKtBoundary1(k); getValForKtBoundary1(v); - v.valid[kIdxBoundaryControllerName1] = 0; - UpplBoundaryOperStatus oper_status = UPPL_BOUNDARY_OPER_UNKNOWN; - Kt_Boundary KtboundaryObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtboundaryObj.SetOperStatus(db_conn,data_type,k,&v,oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + v.valid[kIdxBoundaryControllerName1] = 0; + UpplBoundaryOperStatus oper_status = UPPL_BOUNDARY_OPER_UNKNOWN; + Kt_Boundary KtboundaryObj; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtboundaryObj.SetOperStatus( + db_conn, data_type, k, &v, oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } diff --git a/coordinator/test/modules/uppl/utest/Controller_ut.cc b/coordinator/test/modules/uppl/utest/Controller_ut.cc index baf0c536..c3cc2c0f 100644 --- a/coordinator/test/modules/uppl/utest/Controller_ut.cc +++ b/coordinator/test/modules/uppl/utest/Controller_ut.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -51,7 +52,6 @@ #include #include #include "PhysicalLayerStub.hh" -#include #include "ut_util.hh" using unc::uppl::PhysicalLayer; @@ -63,8 +63,7 @@ using namespace unc::tclib; using namespace unc::uppl::test; class ControllerTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; static char pkctrName1[] = "Controller1"; @@ -80,8 +79,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Domainname_notFound_01) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(ControllerTest, PerformSyntxCheck_Controllername_notFound_02) { @@ -92,8 +95,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Controllername_notFound_02) { memset(k.controller_name, '\0', 32); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_without_type_03) { @@ -105,8 +112,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_without_type_03) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_04) { @@ -120,8 +131,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_04) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_05) { @@ -135,8 +150,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_05) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_UPDATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_06) { @@ -150,8 +169,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_06) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_07) { @@ -165,8 +188,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_07) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_08) { @@ -182,11 +209,12 @@ TEST_F(ControllerTest, PerformSyntxCheck_Valstrct_08) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// Create for unsupported datatype +// Create for unsupported datatype TEST_F(ControllerTest, Create_01) { key_ctr_t k; val_ctr_t v; @@ -202,11 +230,17 @@ TEST_F(ControllerTest, Create_01) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Create(db_conn, + session_id, + configuration_id, + &k, + &v, + UNC_DT_STATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Domain Create success +// Domain Create success TEST_F(ControllerTest, Create_02) { key_ctr_t k; val_ctr_t v; @@ -228,17 +262,26 @@ TEST_F(ControllerTest, Create_02) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_SUCCESS); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktCtrlrObj.Create(db_conn, + session_id, + configuration_id, + &k, + &v, + UNC_DT_CANDIDATE, + ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// get_controller_type returns failure +// get_controller_type returns failure TEST_F(ControllerTest, Create_03) { key_ctr_t k; val_ctr_t v; @@ -260,16 +303,24 @@ TEST_F(ControllerTest, Create_03) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, + ODBCM_RC_CONNECTION_ERROR); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Create(db_conn, + session_id, + configuration_id, + &k, + &v, + UNC_DT_CANDIDATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//Create on unsupported datatype +// Create on unsupported datatype TEST_F(ControllerTest, Create) { key_ctr_t k; val_ctr_t v; @@ -285,10 +336,16 @@ TEST_F(ControllerTest, Create) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Create(db_conn, + session_id, + configuration_id, + &k, + &v, + UNC_DT_STATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } - + TEST_F(ControllerTest, PerformSemanticValidation_01) { key_ctr_t k; val_ctr_t v; @@ -302,57 +359,73 @@ TEST_F(ControllerTest, PerformSemanticValidation_01) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktCtrlrObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// IsKeyExists with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// IsKeyExists with UNC_DT_CANDIDATE datatype +// ODBC return ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, IsKeyExists_01) { Kt_Controller ktCtrlrObj; vector vect_key; vect_key.push_back(pkctrName1); vect_key.push_back(pkDomainName2); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, + ODBCM_RC_CONNECTION_ERROR); + int ret = ktCtrlrObj.IsKeyExists(db_conn, + UNC_DT_CANDIDATE, + vect_key); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// IsKeyExists with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_ROW_EXISTS +// IsKeyExists with UNC_DT_CANDIDATE datatype +// ODBC return ODBCM_RC_ROW_EXISTS TEST_F(ControllerTest, IsKeyExists_02) { Kt_Controller ktCtrlrObj; vector vect_key; vect_key.push_back(pkctrName1); vect_key.push_back(pkDomainName2); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktCtrlrObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); + int ret = ktCtrlrObj.IsKeyExists(db_conn, UNC_DT_CANDIDATE, vect_key); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// IsKeyExists with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_QUERY_TIMEOUT +// IsKeyExists with UNC_DT_CANDIDATE datatype +// ODBC return ODBCM_RC_QUERY_TIMEOUT TEST_F(ControllerTest, IsKeyExists_03) { Kt_Controller ktCtrlrObj; vector vect_key; vect_key.push_back(pkctrName1); vect_key.push_back(pkDomainName2); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_QUERY_TIMEOUT); - int ret = ktCtrlrObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, + ODBCM_RC_QUERY_TIMEOUT); + int ret = ktCtrlrObj.IsKeyExists(db_conn, UNC_DT_CANDIDATE, vect_key); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// IsKeyExists with key structure empty +// IsKeyExists with key structure empty TEST_F(ControllerTest, IsKeyExists_04) { Kt_Controller ktCtrlrObj; vector vect_key; vect_key.clear(); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = ktCtrlrObj.IsKeyExists(db_conn, UNC_DT_CANDIDATE, vect_key); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// CreateKeyInstance with UNC_DT_CANDIDATE +// datatype ODBC return ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, CreateKeyInstance_01) { key_ctr_t k; val_ctr_t v; @@ -367,12 +440,15 @@ TEST_F(ControllerTest, CreateKeyInstance_01) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_CONNECTION_ERROR); + int ret = ktCtrlrObj.CreateKeyInstance(db_conn, &k, &v, + UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateKeyInstance with UNC_DT_RUNNING datatype ODBC +// CreateKeyInstance with UNC_DT_RUNNING datatype ODBC TEST_F(ControllerTest, CreateKeyInstance_02) { key_ctr_t k; val_ctr_t v; @@ -387,12 +463,19 @@ TEST_F(ControllerTest, CreateKeyInstance_02) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_RUNNING,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_CONNECTION_ERROR); + int ret = ktCtrlrObj.CreateKeyInstance(db_conn, + &k, + &v, + UNC_DT_RUNNING, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateKeyInstance with UNC_DT_STATE datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// CreateKeyInstance with UNC_DT_STATE +// datatype ODBC return ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, CreateKeyInstance_03) { key_ctr_t k; val_ctr_t v; @@ -407,12 +490,19 @@ TEST_F(ControllerTest, CreateKeyInstance_03) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_CONNECTION_ERROR); + int ret = ktCtrlrObj.CreateKeyInstance(db_conn, + &k, + &v, + UNC_DT_STATE, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateKeyInstance with UNC_DT_IMPORT datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// CreateKeyInstance with UNC_DT_IMPORT +// datatype ODBC return ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, CreateKeyInstance_04) { key_ctr_t k; val_ctr_t v; @@ -427,12 +517,14 @@ TEST_F(ControllerTest, CreateKeyInstance_04) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = + ktCtrlrObj.CreateKeyInstance(db_conn, &k, &v, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC return Failure +// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC return Failure TEST_F(ControllerTest, CreateKeyInstance_05) { key_ctr_t k; val_ctr_t v; @@ -447,12 +539,18 @@ TEST_F(ControllerTest, CreateKeyInstance_05) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_CREATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_TRANSACTION_ERROR); + int ret = ktCtrlrObj.CreateKeyInstance(db_conn, + &k, + &v, + UNC_DT_CANDIDATE, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_CREATE, ret); } -// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC ODBCM_RC_SUCCESS +// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC ODBCM_RC_SUCCESS TEST_F(ControllerTest, CreateKeyInstance_06) { key_ctr_t k; val_ctr_t v; @@ -467,12 +565,18 @@ TEST_F(ControllerTest, CreateKeyInstance_06) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.CreateKeyInstance(db_conn, + &k, + &v, + UNC_DT_CANDIDATE, + key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// CreateKeyInstance with UNC_DT_STATE datatype ODBC return Failure +// CreateKeyInstance with UNC_DT_STATE datatype ODBC return Failure TEST_F(ControllerTest, CreateKeyInstance_07) { key_ctr_t k; val_ctr_t v; @@ -487,12 +591,18 @@ TEST_F(ControllerTest, CreateKeyInstance_07) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_CREATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_TRANSACTION_ERROR); + int ret = ktCtrlrObj.CreateKeyInstance(db_conn, + &k, + &v, + UNC_DT_STATE, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_CREATE, ret); } -// CreateKeyInstance with UNC_DT_IMPORT datatype ODBC return Failure +// CreateKeyInstance with UNC_DT_IMPORT datatype ODBC return Failure TEST_F(ControllerTest, CreateKeyInstance_08) { key_ctr_t k; val_ctr_t v; @@ -507,12 +617,19 @@ TEST_F(ControllerTest, CreateKeyInstance_08) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = ktCtrlrObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_CREATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, + ODBCM_RC_TRANSACTION_ERROR); + int ret = ktCtrlrObj.CreateKeyInstance( + db_conn, + &k, + &v, + UNC_DT_IMPORT, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_CREATE, ret); } -// Update for unsupported datatype +// Update for unsupported datatype TEST_F(ControllerTest, Update_01) { key_ctr_t k; val_ctr_t v; @@ -528,10 +645,11 @@ TEST_F(ControllerTest, Update_01) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Update(db_conn, session_id, configuration_id, + &k, &v, UNC_DT_STATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Domain Update success +// Domain Update success TEST_F(ControllerTest, Update_02) { key_ctr_t k; val_ctr_t v; @@ -553,17 +671,27 @@ TEST_F(ControllerTest, Update_02) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktCtrlrObj.Update(db_conn, + session_id, + configuration_id, + &k, + &v, + UNC_DT_CANDIDATE, + ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// get_controller_type returns failure +// get_controller_type returns failure TEST_F(ControllerTest, Update_03) { key_ctr_t k; val_ctr_t v; @@ -585,16 +713,25 @@ TEST_F(ControllerTest, Update_03) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, + ODBCM_RC_CONNECTION_ERROR); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Update(db_conn, + session_id, + configuration_id, + &k, + &v, + UNC_DT_CANDIDATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// UpdateKeyInstance with UNC_DT_CANDIDATE ODBC retuns ODBCM_RC_CONNECTION_ERROR +// UpdateKeyInstance with UNC_DT_CANDIDATE ODBC +// retuns ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, UpdateKeyInstance_01) { key_ctr_t k; val_ctr_t v; @@ -609,12 +746,16 @@ TEST_F(ControllerTest, UpdateKeyInstance_01) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, + ODBCM_RC_CONNECTION_ERROR); + int ret = + ktCtrlrObj.UpdateKeyInstance(db_conn, &k, &v, UNC_DT_CANDIDATE, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// UpdateKeyInstance on unsupported datatype +// UpdateKeyInstance on unsupported datatype TEST_F(ControllerTest, UpdateKeyInstance_02) { key_ctr_t k; val_ctr_t v; @@ -629,10 +770,11 @@ TEST_F(ControllerTest, UpdateKeyInstance_02) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_RUNNING,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + int ret = ktCtrlrObj.UpdateKeyInstance(db_conn, &k, &v, + UNC_DT_RUNNING, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_CONNECTION_ERROR +// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, UpdateKeyInstance_03) { key_ctr_t k; val_ctr_t v; @@ -647,12 +789,15 @@ TEST_F(ControllerTest, UpdateKeyInstance_03) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, + ODBCM_RC_CONNECTION_ERROR); + int ret = ktCtrlrObj.UpdateKeyInstance(db_conn, &k, &v, + UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_SUCCESS +// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_SUCCESS TEST_F(ControllerTest, UpdateKeyInstance_04) { key_ctr_t k; val_ctr_t v; @@ -667,12 +812,18 @@ TEST_F(ControllerTest, UpdateKeyInstance_04) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.UpdateKeyInstance(db_conn, + &k, + &v, + UNC_DT_IMPORT, + key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns +// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns TEST_F(ControllerTest, UpdateKeyInstance_05) { key_ctr_t k; val_ctr_t v; @@ -687,12 +838,18 @@ TEST_F(ControllerTest, UpdateKeyInstance_05) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = ktCtrlrObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, + ODBCM_RC_TRANSACTION_ERROR); + int ret = ktCtrlrObj.UpdateKeyInstance(db_conn, + &k, + &v, + UNC_DT_IMPORT, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// Delete for unsupported datatype +// Delete for unsupported datatype TEST_F(ControllerTest, Delete_01) { key_ctr_t k; val_ctr_t v; @@ -708,11 +865,17 @@ TEST_F(ControllerTest, Delete_01) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Delete(db_conn, + session_id, + configuration_id, + &k, + UNC_DT_STATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, + ret); } -// Domain Delete success +// Domain Delete success TEST_F(ControllerTest, Delete_02) { key_ctr_t k; val_ctr_t v; @@ -736,14 +899,24 @@ TEST_F(ControllerTest, Delete_02) { ses.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, + ODBCM_RC_SUCCESS); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Delete( + db_conn, + session_id, + configuration_id, + &k, + UNC_DT_CANDIDATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// get_controller_type returns failure +// get_controller_type returns failure TEST_F(ControllerTest, Delete_03) { key_ctr_t k; val_ctr_t v; @@ -767,13 +940,15 @@ TEST_F(ControllerTest, Delete_03) { ses.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, + ODBCM_RC_CONNECTION_ERROR); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Delete(db_conn, session_id, configuration_id, + &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Domain Delete With boundary referred +// Domain Delete With boundary referred TEST_F(ControllerTest, Delete_04) { key_ctr_t k; val_ctr_t v; @@ -797,14 +972,23 @@ TEST_F(ControllerTest, Delete_04) { ses.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktCtrlrObj.Delete(db_conn, + session_id, + configuration_id, + &k, + UNC_DT_CANDIDATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// UpdateKeyInstance with ODBC retuns ODBCM_RC_CONNECTION_ERROR +// UpdateKeyInstance with ODBC retuns ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, GetModifiedRows_01) { key_ctr_t k; val_ctr v; @@ -819,12 +1003,13 @@ TEST_F(ControllerTest, GetModifiedRows_01) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktCtrlrObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ODBC retuns ODBCM_RC_RECORD_NOT_FOUND +// ODBC retuns ODBCM_RC_RECORD_NOT_FOUND TEST_F(ControllerTest, GetModifiedRows_02) { key_ctr_t k; val_ctr v; @@ -839,12 +1024,14 @@ TEST_F(ControllerTest, GetModifiedRows_02) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktCtrlrObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, + ODBCM_RC_RECORD_NOT_FOUND); + int ret = ktCtrlrObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ODBC retuns ODBCM_RC_SUCCESS +// ODBC retuns ODBCM_RC_SUCCESS TEST_F(ControllerTest, GetModifiedRows_03) { key_ctr_t k; val_ctr v; @@ -859,12 +1046,14 @@ TEST_F(ControllerTest, GetModifiedRows_03) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_SUCCESS); + int ret = + ktCtrlrObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); EXPECT_EQ(ODBCM_RC_SUCCESS, ret); } -// ODBC retuns ODBCM_RC_FAILED +// ODBC retuns ODBCM_RC_FAILED TEST_F(ControllerTest, GetModifiedRows_04) { key_ctr_t k; val_ctr v; @@ -879,22 +1068,24 @@ TEST_F(ControllerTest, GetModifiedRows_04) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_FAILED); + int ret = ktCtrlrObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(ControllerTest, SetOperStatus_001) { - key_ctr_t k; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplControllerOperStatus)1); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); + int ret = ktCtrlrObj.SetOperStatus(db_conn, UNC_DT_STATE, &k, + (UpplControllerOperStatus)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(ControllerTest, SetOperStatus_002) { @@ -903,9 +1094,11 @@ TEST_F(ControllerTest, SetOperStatus_002) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktCtrlrObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplControllerOperStatus)0); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = ktCtrlrObj.SetOperStatus(db_conn, UNC_DT_STATE, &k, + (UpplControllerOperStatus)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(ControllerTest, SetOperStatus_003) { @@ -915,10 +1108,13 @@ TEST_F(ControllerTest, SetOperStatus_003) { Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplControllerOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktCtrlrObj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplControllerOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, SetOperStatus_004) { @@ -931,56 +1127,61 @@ TEST_F(ControllerTest, SetOperStatus_004) { ser_evt.addOutput((uint32_t)UNC_OP_CREATE); ser_evt.addOutput((uint32_t)UNC_DT_STATE); ser_evt.addOutput((uint32_t)UNC_KT_PORT); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplControllerOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplControllerOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GetOperStatus ODBC returns failure +// GetOperStatus ODBC returns failure TEST_F(ControllerTest, GetOperStatus_001) { - key_ctr_t k; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; uint8_t op_status; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.GetOperStatus(db_conn,UNC_DT_STATE,&k,op_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktCtrlrObj.GetOperStatus( + db_conn, UNC_DT_STATE, &k, op_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// GetOperStatus ODBC returns SUCCESS +// GetOperStatus ODBC returns SUCCESS TEST_F(ControllerTest, GetOperStatus_002) { - key_ctr_t k; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; uint8_t op_status; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.GetOperStatus(db_conn,UNC_DT_STATE,&k,op_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.GetOperStatus( + db_conn, UNC_DT_STATE, &k, op_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, GetOperStatus_003) { - key_ctr_t k; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; uint8_t op_status; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS_WITH_INFO); - int ret = ktCtrlrObj.GetOperStatus(db_conn,UNC_DT_STATE,&k,op_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS_WITH_INFO); + int ret = ktCtrlrObj.GetOperStatus( + db_conn, UNC_DT_STATE, &k, op_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// NotifyOperStatus with NULL keystruct +// NotifyOperStatus with NULL keystruct TEST_F(ControllerTest, NotifyOperStatus_01) { - key_ctr_t k; val_ctr v; memset(&v, 0, sizeof(v)); @@ -995,12 +1196,13 @@ TEST_F(ControllerTest, NotifyOperStatus_01) { Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktCtrlrObj.NotifyOperStatus(db_conn,UNC_DT_STATE, &k, &v, oper_stat_hldr); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktCtrlrObj.NotifyOperStatus( + db_conn, UNC_DT_STATE, &k, &v, oper_stat_hldr); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* -// NotifyOperStatus +// NotifyOperStatus TEST_F(ControllerTest, NotifyOperStatus_02) { key_ctr_t k; val_ctr v; @@ -1015,12 +1217,14 @@ TEST_F(ControllerTest, NotifyOperStatus_02) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); vector oper_stat_hldr; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.NotifyOperStatus(db_conn,UNC_DT_STATE,&k,&v,oper_stat_hldr ); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.NotifyOperStatus + (db_conn, UNC_DT_STATE, &k, &v, oper_stat_hldr ); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// NotifyOperStatus Controller oper_status retunrs failure +// NotifyOperStatus Controller oper_status retunrs failure TEST_F(ControllerTest, NotifyOperStatus_03) { key_ctr_t k; val_ctr v; @@ -1035,13 +1239,15 @@ TEST_F(ControllerTest, NotifyOperStatus_03) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); vector oper_stat_hldr; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.NotifyOperStatus(db_conn,UNC_DT_STATE,&k,&v,oper_stat_hldr); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = + ktCtrlrObj.NotifyOperStatus(db_conn, UNC_DT_STATE, &k, &v, oper_stat_hldr); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } */ -// HandleOperStatus Controller oper_status returns success +// HandleOperStatus Controller oper_status returns success TEST_F(ControllerTest, HandleOperStatus_01) { key_ctr_t k; val_ctr v; @@ -1055,13 +1261,15 @@ TEST_F(ControllerTest, HandleOperStatus_01) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleOperStatus Controller oper_status retunrs failure +// HandleOperStatus Controller oper_status retunrs failure TEST_F(ControllerTest, HandleOperStatus_02) { key_ctr_t k; val_ctr v; @@ -1075,12 +1283,13 @@ TEST_F(ControllerTest, HandleOperStatus_02) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktCtrlrObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// HandleOperStatus with bIsInternal false +// HandleOperStatus with bIsInternal false TEST_F(ControllerTest, HandleOperStatus_03) { key_ctr_t k; val_ctr v; @@ -1095,12 +1304,15 @@ TEST_F(ControllerTest, HandleOperStatus_03) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; bool bIsInternal = false; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,bIsInternal); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, bIsInternal); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// HandleOperStatus with bIsInternal false and oper_status is UPPL_CONTROLLER_OPER_UP +// HandleOperStatus with bIsInternal false +// and oper_status is UPPL_CONTROLLER_OPER_UP TEST_F(ControllerTest, HandleOperStatus_04) { key_ctr_t k; val_ctr_st_t v; @@ -1109,19 +1321,23 @@ TEST_F(ControllerTest, HandleOperStatus_04) { memset(v.controller.description, '\0', 128); memcpy(v.controller.description, valDescription, strlen(valDescription)); v.valid[kIdxDescription] = 1; - v.oper_status=UPPL_CONTROLLER_OPER_UP; + v.oper_status = UPPL_CONTROLLER_OPER_UP; Kt_Controller ktCtrlrObj; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; bool bIsInternal = false; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,bIsInternal); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, bIsInternal); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleOperStatus with bIsInternal true and oper_status is UPPL_CONTROLLER_OPER_UP +// HandleOperStatus with bIsInternal +// true and oper_status is UPPL_CONTROLLER_OPER_UP TEST_F(ControllerTest, HandleOperStatus_05) { key_ctr_t k; val_ctr_st_t v; @@ -1130,19 +1346,23 @@ TEST_F(ControllerTest, HandleOperStatus_05) { memset(v.controller.description, '\0', 128); memcpy(v.controller.description, valDescription, strlen(valDescription)); v.valid[kIdxDescription] = 1; - v.oper_status=UPPL_CONTROLLER_OPER_UP; + v.oper_status = UPPL_CONTROLLER_OPER_UP; Kt_Controller ktCtrlrObj; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; - bool bIsInternal=true; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,bIsInternal); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + bool bIsInternal = true; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, bIsInternal); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleOperStatus with bIsInternal true and oper_status is UPPL_CONTROLLER_OPER_DOWN +// HandleOperStatus with bIsInternal true +// and oper_status is UPPL_CONTROLLER_OPER_DOWN TEST_F(ControllerTest, HandleOperStatus_06) { key_ctr_t k; val_ctr_st_t v; @@ -1151,19 +1371,22 @@ TEST_F(ControllerTest, HandleOperStatus_06) { memset(v.controller.description, '\0', 128); memcpy(v.controller.description, valDescription, strlen(valDescription)); v.valid[kIdxDescription] = 1; - v.oper_status=UPPL_CONTROLLER_OPER_DOWN; + v.oper_status = UPPL_CONTROLLER_OPER_DOWN; Kt_Controller ktCtrlrObj; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); OdbcmConnectionHandler *db_conn =NULL; bool bIsInternal = true; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.HandleOperStatus(db_conn,UNC_DT_RUNNING,&k,&v,bIsInternal); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.HandleOperStatus( + db_conn, UNC_DT_RUNNING, &k, &v, bIsInternal); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleDriverAlarms with unsupported alarm type +// HandleDriverAlarms with unsupported alarm type TEST_F(ControllerTest, HandleDriverAlarms_01) { key_ctr_t k; val_ctr v; @@ -1173,12 +1396,14 @@ TEST_F(ControllerTest, HandleDriverAlarms_01) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktCtrlrObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleDriverAlarms with UNC_COREDOMAIN_SPLIT alarm type +// HandleDriverAlarms with UNC_COREDOMAIN_SPLIT alarm type TEST_F(ControllerTest, HandleDriverAlarms_02) { key_ctr_t k; val_ctr v; @@ -1190,12 +1415,14 @@ TEST_F(ControllerTest, HandleDriverAlarms_02) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktCtrlrObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktCtrlrObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleDriverAlarms with oper_type UNC_OP_CREATE +// HandleDriverAlarms with oper_type UNC_OP_CREATE TEST_F(ControllerTest, HandleDriverAlarms_03) { key_ctr_t k; val_ctr v; @@ -1207,12 +1434,14 @@ TEST_F(ControllerTest, HandleDriverAlarms_03) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleDriverAlarms with oper_type UNC_OP_DELETE +// HandleDriverAlarms with oper_type UNC_OP_DELETE TEST_F(ControllerTest, HandleDriverAlarms_04) { key_ctr_t k; val_ctr v; @@ -1224,13 +1453,16 @@ TEST_F(ControllerTest, HandleDriverAlarms_04) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktCtrlrObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktCtrlrObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_CREATE +// PerformSemanticValidation with oper_type UNC_OP_CREATE TEST_F(ControllerTest, PerformSemanticValidation_11) { key_ctr_t k; val_ctr v; @@ -1241,12 +1473,14 @@ TEST_F(ControllerTest, PerformSemanticValidation_11) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktCtrlrObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktCtrlrObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_CREATE +// PerformSemanticValidation with oper_type UNC_OP_CREATE TEST_F(ControllerTest, PerformSemanticValidation_02) { key_ctr_t k; val_ctr v; @@ -1257,12 +1491,15 @@ TEST_F(ControllerTest, PerformSemanticValidation_02) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = + ktCtrlrObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_CREATE +// PerformSemanticValidation with oper_type UNC_OP_CREATE TEST_F(ControllerTest, PerformSemanticValidation_03) { key_ctr_t k; val_ctr v; @@ -1273,12 +1510,14 @@ TEST_F(ControllerTest, PerformSemanticValidation_03) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_TRANSACTION_ERROR); - int ret = ktCtrlrObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_IMPORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_TRANSACTION_ERROR); + int ret = ktCtrlrObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_IMPORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_READ +// PerformSemanticValidation with oper_type UNC_OP_READ TEST_F(ControllerTest, PerformSemanticValidation_04) { key_ctr_t k; val_ctr v; @@ -1289,12 +1528,14 @@ TEST_F(ControllerTest, PerformSemanticValidation_04) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktCtrlrObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktCtrlrObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_UPDATE +// PerformSemanticValidation with oper_type UNC_OP_UPDATE TEST_F(ControllerTest, PerformSemanticValidation_05) { key_ctr_t k; val_ctr v; @@ -1305,12 +1546,14 @@ TEST_F(ControllerTest, PerformSemanticValidation_05) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktCtrlrObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktCtrlrObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_DELETE +// PerformSemanticValidation with oper_type UNC_OP_DELETE TEST_F(ControllerTest, PerformSemanticValidation_06) { key_ctr_t k; val_ctr v; @@ -1321,13 +1564,16 @@ TEST_F(ControllerTest, PerformSemanticValidation_06) { vector obj_key_struct; Kt_Controller ktCtrlrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_QUERY_TIMEOUT); - int ret = ktCtrlrObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_QUERY_TIMEOUT); + int ret = + ktCtrlrObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /* -// ReadBulkInternal with max_count zero +// ReadBulkInternal with max_count zero TEST_F(ControllerTest, ReadBulkInternal_01) { key_ctr_t k; val_ctr v; @@ -1340,20 +1586,21 @@ TEST_F(ControllerTest, ReadBulkInternal_01) { vector obj_key_struct; Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; -UpplReturnCode Kt_Boundary::ReadBulkInternal( +UncRespCode Kt_Boundary::ReadBulkInternal( OdbcmConnectionHandler *db_conn, void* key_struct, void *val_struct, uint32_t data_type, uint32_t max_rep_ct, vector &vect_key_boundary, - vector &vect_val_boundary) + vector &vect_val_boundary) - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_ctr_id, vect_val_ctr_st); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_ctr_id, vect_val_ctr_st); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_RECORD_NOT_FOUND +// ReadBulkInternal with read_db_status ODBCM_RC_RECORD_NOT_FOUND TEST_F(ControllerTest, ReadBulkInternal_02) { key_ctr_t k; vector vect_val_ctr_st; @@ -1364,12 +1611,14 @@ TEST_F(ControllerTest, ReadBulkInternal_02) { vector obj_key_struct; Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_ctr_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtctrObj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_ctr_st, vect_domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_CONNECTION_ERROR +// ReadBulkInternal with read_db_status ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, ReadBulkInternal_03) { key_ctr_t k; vector vect_val_ctr_st; @@ -1380,12 +1629,14 @@ TEST_F(ControllerTest, ReadBulkInternal_03) { vector obj_key_struct; Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_ctr_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtctrObj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_ctr_st, vect_domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_TABLE_NOT_FOUND +// ReadBulkInternal with read_db_status ODBCM_RC_TABLE_NOT_FOUND TEST_F(ControllerTest, ReadBulkInternal_04) { key_ctr_t k; vector vect_val_ctr_st; @@ -1396,13 +1647,14 @@ TEST_F(ControllerTest, ReadBulkInternal_04) { vector obj_key_struct; Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_TABLE_NOT_FOUND); - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, - vect_val_ctr_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_TABLE_NOT_FOUND); + int ret = KtctrObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_st, vect_domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_SUCCESS +// ReadBulkInternal with read_db_status ODBCM_RC_SUCCESS TEST_F(ControllerTest, ReadBulkInternal_05) { key_ctr_t k; vector vect_val_ctr_st; @@ -1413,15 +1665,16 @@ TEST_F(ControllerTest, ReadBulkInternal_05) { vector obj_key_struct; Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); int ret = KtctrObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, - vect_val_ctr_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + vect_val_ctr_st, vect_domain_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } */ -// ReadBulk with get_controller_type returns failure -// MEM +// ReadBulk with get_controller_type returns failure +// MEM TEST_F(ControllerTest, ReadBulk_02) { key_ctr_t k; int child_index = 2; @@ -1434,15 +1687,18 @@ TEST_F(ControllerTest, ReadBulk_02) { vector obj_key_struct; Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, - child_index, parent_call,is_read_next, read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulk with data type UNC_DT_IMPORT +// ReadBulk with data type UNC_DT_IMPORT TEST_F(ControllerTest, ReadBulk_01) { key_ctr_t k; int child_index = 0; @@ -1456,11 +1712,11 @@ TEST_F(ControllerTest, ReadBulk_01) { Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_IMPORT, max_rep_ct, - child_index, parent_call,is_read_next, read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// ReadBulk with data type UNC_DT_IMPORT +// ReadBulk with data type UNC_DT_IMPORT TEST_F(ControllerTest, ReadBulk_05) { key_ctr_t k; int child_index = -1; @@ -1474,12 +1730,12 @@ TEST_F(ControllerTest, ReadBulk_05) { Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_IMPORT, max_rep_ct, - child_index, parent_call,is_read_next, read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// ReadBulk with data type UNC_DT_IMPORT +// ReadBulk with data type UNC_DT_IMPORT TEST_F(ControllerTest, ReadBulk_06) { key_ctr_t k; int child_index = 2; @@ -1493,11 +1749,11 @@ TEST_F(ControllerTest, ReadBulk_06) { Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_IMPORT, max_rep_ct, - child_index, parent_call,is_read_next, read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// DeleteKeyInstance with data type UNC_DT_RUNNING +// DeleteKeyInstance with data type UNC_DT_RUNNING TEST_F(ControllerTest, DeleteKeyInstance_01) { key_ctr_t k; uint32_t key_type = 0; @@ -1505,12 +1761,14 @@ TEST_F(ControllerTest, DeleteKeyInstance_01) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - //unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtctrObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + // unc::uppl::ODBCManager::stub_setResultcode( + // unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtctrObj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -// DeleteKeyInstance with out child +// DeleteKeyInstance with out child TEST_F(ControllerTest, DeleteKeyInstance_02) { key_ctr_t k; uint32_t key_type = 0; @@ -1518,12 +1776,14 @@ TEST_F(ControllerTest, DeleteKeyInstance_02) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtctrObj.DeleteKeyInstance(db_conn, &k, UNC_DT_CANDIDATE, key_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtctrObj.DeleteKeyInstance(db_conn, &k, + UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// DeleteKeyInstance with out child +// DeleteKeyInstance with out child TEST_F(ControllerTest, DeleteKeyInstance_03) { key_ctr_t k; uint32_t key_type = 0; @@ -1531,12 +1791,14 @@ TEST_F(ControllerTest, DeleteKeyInstance_03) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtctrObj.DeleteKeyInstance(db_conn, &k, UNC_DT_AUDIT, key_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtctrObj.DeleteKeyInstance(db_conn, + &k, UNC_DT_AUDIT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// DeleteKeyInstance with out child +// DeleteKeyInstance with out child TEST_F(ControllerTest, DeleteKeyInstance_04) { key_ctr_t k; uint32_t key_type = 0; @@ -1544,12 +1806,13 @@ TEST_F(ControllerTest, DeleteKeyInstance_04) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_TRANSACTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_TRANSACTION_ERROR); int ret = KtctrObj.DeleteKeyInstance(db_conn, &k, UNC_DT_IMPORT, key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -// DeleteKeyInstance suceess +// DeleteKeyInstance suceess TEST_F(ControllerTest, DeleteKeyInstance_05) { key_ctr_t k; uint32_t key_type = 0; @@ -1557,11 +1820,12 @@ TEST_F(ControllerTest, DeleteKeyInstance_05) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); int ret = KtctrObj.DeleteKeyInstance(db_conn, &k, UNC_DT_IMPORT, key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// FreeChildKeyStruct success +// FreeChildKeyStruct success TEST_F(ControllerTest, FreeChildKeyStruct_01) { void *k = new key_ctr_domain_t; int child_class = 0; @@ -1569,52 +1833,52 @@ TEST_F(ControllerTest, FreeChildKeyStruct_01) { KtctrObj.FreeChildKeyStruct(k, child_class); } -// FreeChildKeyStruct suceess +// FreeChildKeyStruct suceess TEST_F(ControllerTest, FreeChildKeyStruct_02) { void *key = new key_logical_port_t; int child_class = 1; Kt_Controller KtctrObj; - int ret = UPPL_RC_SUCCESS; + int ret = UNC_RC_SUCCESS; KtctrObj.FreeChildKeyStruct(key, child_class); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// FreeChildKeyStruct suceess +// FreeChildKeyStruct suceess TEST_F(ControllerTest, FreeChildKeyStruct_03) { void *key = new key_link_t; int child_class = 2; Kt_Controller KtctrObj; - int ret = UPPL_RC_SUCCESS; + int ret = UNC_RC_SUCCESS; KtctrObj.FreeChildKeyStruct(key, child_class); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// getChildKeyStruct success +// getChildKeyStruct success TEST_F(ControllerTest, getChildKeyStruct_01) { int child_class = 0; Kt_Controller KtctrObj; KtctrObj.getChildKeyStruct(child_class, "controller1"); } -// getChildKeyStruct suceess +// getChildKeyStruct suceess TEST_F(ControllerTest, getChildKeyStruct_02) { int child_class = 1; Kt_Controller KtctrObj; - int ret = UPPL_RC_SUCCESS; + int ret = UNC_RC_SUCCESS; KtctrObj.getChildKeyStruct(child_class, "controller1"); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// getChildKeyStruct suceess +// getChildKeyStruct suceess TEST_F(ControllerTest, getChildKeyStruct_03) { int child_class = 2; Kt_Controller KtctrObj; - int ret = UPPL_RC_SUCCESS; + int ret = UNC_RC_SUCCESS; KtctrObj.getChildKeyStruct(child_class, "controller1"); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with negative option1 +// PerformRead with negative option1 TEST_F(ControllerTest, PerformRead_Neg_option1_01) { key_ctr_t k; val_ctr v; @@ -1634,11 +1898,14 @@ TEST_F(ControllerTest, PerformRead_Neg_option1_01) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with negative option1 +// PerformRead with negative option1 TEST_F(ControllerTest, PerformRead_Neg_option1_02) { key_ctr_t k; val_ctr v; @@ -1655,14 +1922,18 @@ TEST_F(ControllerTest, PerformRead_Neg_option1_02) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION1); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION1); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with negative option2 +// PerformRead with negative option2 TEST_F(ControllerTest, PerformRead_Neg_option2_03) { key_ctr_t k; val_ctr v; @@ -1682,11 +1953,15 @@ TEST_F(ControllerTest, PerformRead_Neg_option2_03) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_MAC_ENTRY_STATIC,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_MAC_ENTRY_STATIC, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with negative option1 +// PerformRead with negative option1 TEST_F(ControllerTest, PerformRead_Neg_option2_04) { key_ctr_t k; val_ctr v; @@ -1703,14 +1978,18 @@ TEST_F(ControllerTest, PerformRead_Neg_option2_04) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_MAC_ENTRY_STATIC); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION2); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_MAC_ENTRY_STATIC,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_MAC_ENTRY_STATIC, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with unsupported datatype +// PerformRead with unsupported datatype TEST_F(ControllerTest, PerformRead_Neg_datatype_05) { key_ctr_t k; val_ctr v; @@ -1730,11 +2009,15 @@ TEST_F(ControllerTest, PerformRead_Neg_datatype_05) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_AUDIT,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_AUDIT, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with negative dataype +// PerformRead with negative dataype TEST_F(ControllerTest, PerformRead_Neg_datatype_06) { key_ctr_t k; val_ctr v; @@ -1751,14 +2034,18 @@ TEST_F(ControllerTest, PerformRead_Neg_datatype_06) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_AUDIT); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_AUDIT,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_AUDIT, + (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_NORMAL, (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with valid option1 and valid option2 +// PerformRead with valid option1 and valid option2 TEST_F(ControllerTest, PerformRead_pos_07) { key_ctr_t k; val_ctr v; @@ -1767,7 +2054,8 @@ TEST_F(ControllerTest, PerformRead_pos_07) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1779,11 +2067,15 @@ TEST_F(ControllerTest, PerformRead_pos_07) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformRead with valid option1 and valid option2 +// PerformRead with valid option1 and valid option2 TEST_F(ControllerTest, PerformRead_pos_db_Success_08) { key_ctr_t k; val_ctr_t v; @@ -1797,7 +2089,8 @@ TEST_F(ControllerTest, PerformRead_pos_db_Success_08) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1809,8 +2102,12 @@ TEST_F(ControllerTest, PerformRead_pos_db_Success_08) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)0); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_CANDIDATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(ControllerTest, PerformRead_pos_db_fail_09) { @@ -1821,7 +2118,8 @@ TEST_F(ControllerTest, PerformRead_pos_db_fail_09) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1832,11 +2130,15 @@ TEST_F(ControllerTest, PerformRead_pos_db_fail_09) { sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)0); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//PerformRead with valid option1 and valid option2 +// PerformRead with valid option1 and valid option2 TEST_F(ControllerTest, PerformRead_pos_db_Success_10) { key_ctr_t k; val_ctr_t v; @@ -1850,7 +2152,8 @@ TEST_F(ControllerTest, PerformRead_pos_db_Success_10) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1862,11 +2165,15 @@ TEST_F(ControllerTest, PerformRead_pos_db_Success_10) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_CONTROLLER); - int ret = KtctrObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)0); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtctrObj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_CANDIDATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//HandleDriverEvents with other than Update operation +// HandleDriverEvents with other than Update operation TEST_F(ControllerTest, HandleDriverEvents_No_Update_01) { key_ctr_t k; val_ctr_st_t v_old; @@ -1880,11 +2187,12 @@ TEST_F(ControllerTest, HandleDriverEvents_No_Update_01) { uint32_t data_type = UNC_DT_STATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleDriverEvents with CANDIDATE operation +// HandleDriverEvents with CANDIDATE operation TEST_F(ControllerTest, HandleDriverEvents_CANDIDATE_NegDB_02) { key_ctr_t k; val_ctr_st_t v_old; @@ -1894,17 +2202,20 @@ TEST_F(ControllerTest, HandleDriverEvents_CANDIDATE_NegDB_02) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); pfc_bool_t is_events_done(PFC_FALSE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_CANDIDATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = + KtctrObj.HandleDriverEvents(db_conn, &k, oper_type, data_type, + &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//HandleDriverEvents with RUNNING datatype +// HandleDriverEvents with RUNNING datatype TEST_F(ControllerTest, HandleDriverEvents_RUNNING_NegDB_03) { key_ctr_t k; val_ctr_st_t v_old; @@ -1914,17 +2225,19 @@ TEST_F(ControllerTest, HandleDriverEvents_RUNNING_NegDB_03) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); pfc_bool_t is_events_done(PFC_FALSE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//HandleDriverEvents with RUNNING datatype +// HandleDriverEvents with RUNNING datatype TEST_F(ControllerTest, HandleDriverEvents_RUNNING_04) { key_ctr_t k; val_ctr_st_t v_old; @@ -1934,17 +2247,19 @@ TEST_F(ControllerTest, HandleDriverEvents_RUNNING_04) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); pfc_bool_t is_events_done(PFC_FALSE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//HandleDriverEvents with RUNNING datatype +// HandleDriverEvents with RUNNING datatype TEST_F(ControllerTest, HandleDriverEvents_RUNNING_05) { key_ctr_t k; memset(&k, 0, sizeof(k)); @@ -1956,18 +2271,21 @@ TEST_F(ControllerTest, HandleDriverEvents_RUNNING_05) { v_new.oper_status = UPPL_CONTROLLER_OPER_UP; pfc_bool_t is_events_done(PFC_FALSE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleDriverEvents with RUNNING datatype +// HandleDriverEvents with RUNNING datatype TEST_F(ControllerTest, HandleDriverEvents_RUNNING_06) { key_ctr_t k; val_ctr_st_t v_old; @@ -1978,18 +2296,21 @@ TEST_F(ControllerTest, HandleDriverEvents_RUNNING_06) { memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); pfc_bool_t is_events_done(PFC_FALSE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//HandleDriverEvents with RUNNING datatype +// HandleDriverEvents with RUNNING datatype TEST_F(ControllerTest, HandleDriverEvents_RUNNING_07) { key_ctr_t k; val_ctr_st_t v_old; @@ -1998,19 +2319,22 @@ TEST_F(ControllerTest, HandleDriverEvents_RUNNING_07) { memset(v_new.valid, '\0', sizeof(v_new.valid)); v_new.oper_status = UPPL_CONTROLLER_OPER_UP; - pfc_bool_t is_events_done=false; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + pfc_bool_t is_events_done = false; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleDriverEvents with RUNNING datatype +// HandleDriverEvents with RUNNING datatype TEST_F(ControllerTest, HandleDriverEvents_RUNNING_08) { key_ctr_t k; val_ctr_st_t v_old; @@ -2020,18 +2344,21 @@ TEST_F(ControllerTest, HandleDriverEvents_RUNNING_08) { v_new.oper_status = UPPL_CONTROLLER_OPER_DOWN; pfc_bool_t is_events_done(PFC_FALSE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//HandleDriverEvents with RUNNING datatype +// HandleDriverEvents with RUNNING datatype TEST_F(ControllerTest, HandleDriverEvents_RUNNING_09) { key_ctr_t k; val_ctr_st_t v_old; @@ -2043,44 +2370,49 @@ TEST_F(ControllerTest, HandleDriverEvents_RUNNING_09) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); pfc_bool_t is_events_done(PFC_FALSE); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); Kt_Controller KtctrObj; uint32_t oper_type = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,&v_old,&v_new,is_events_done); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = KtctrObj.HandleDriverEvents( + db_conn, &k, oper_type, data_type, &v_old, &v_new, is_events_done); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//CheckIpAndClearStateDB with DB success +// CheckIpAndClearStateDB with DB success TEST_F(ControllerTest, CheckIpAndClearStateDB_Db_Success_01) { key_ctr_t k; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.CheckIpAndClearStateDB(db_conn,&k); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.CheckIpAndClearStateDB(db_conn, &k); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//CheckIpAndClearStateDB with DB failure +// CheckIpAndClearStateDB with DB failure TEST_F(ControllerTest, CheckIpAndClearStateDB_Db_failure_02) { key_ctr_t k; memset(k.controller_name, '\0', 32); memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtctrObj.CheckIpAndClearStateDB(db_conn,&k); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = KtctrObj.CheckIpAndClearStateDB(db_conn, &k); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//SendOperStatusNotification with add output error +// SendOperStatusNotification with add output error TEST_F(ControllerTest, SendOperStatusNotification_01) { key_ctr_t k; uint8_t old_oper_st(0); @@ -2094,11 +2426,12 @@ TEST_F(ControllerTest, SendOperStatusNotification_01) { Kt_Controller KtctrObj; - int ret = KtctrObj.SendOperStatusNotification(k,old_oper_st,new_oper_st); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = + KtctrObj.SendOperStatusNotification(k, old_oper_st, new_oper_st); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -//SendOperStatusNotification with success in add output +// SendOperStatusNotification with success in add output TEST_F(ControllerTest, SendOperStatusNotification_02) { key_ctr_t k; uint8_t old_oper_st(0); @@ -2112,11 +2445,12 @@ TEST_F(ControllerTest, SendOperStatusNotification_02) { Kt_Controller KtctrObj; - int ret = KtctrObj.SendOperStatusNotification(k,old_oper_st,new_oper_st); - EXPECT_EQ(UPPL_RC_FAILURE, ret); + int ret = + KtctrObj.SendOperStatusNotification(k, old_oper_st, new_oper_st); + EXPECT_EQ(UNC_UPPL_RC_FAILURE, ret); } -//ValidateControllerIpAddress +// ValidateControllerIpAddress TEST_F(ControllerTest, ValidateControllerIpAddress_01) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2130,11 +2464,13 @@ TEST_F(ControllerTest, ValidateControllerIpAddress_01) { uint32_t data_type(UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; v.valid[kIdxIpAddress]=1; - int ret = KtctrObj.ValidateControllerIpAddress(db_conn,operation,data_type,(unc_keytype_ctrtype_t)0,(UpplReturnCode)0,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtctrObj.ValidateControllerIpAddress( + db_conn, operation, data_type, (unc_keytype_ctrtype_t)0, + (UncRespCode)0, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//ValidateControllerIpAddress +// ValidateControllerIpAddress TEST_F(ControllerTest, ValidateControllerIpAddress_02) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2148,11 +2484,13 @@ TEST_F(ControllerTest, ValidateControllerIpAddress_02) { uint32_t data_type(UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; v.valid[kIdxIpAddress]=2; - int ret = KtctrObj.ValidateControllerIpAddress(db_conn,operation,data_type,(unc_keytype_ctrtype_t)1,(UpplReturnCode)0,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.ValidateControllerIpAddress( + db_conn, operation, data_type, + (unc_keytype_ctrtype_t)1, (UncRespCode)0, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//ValidateControllerIpAddress +// ValidateControllerIpAddress TEST_F(ControllerTest, ValidateControllerIpAddress_03) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2166,12 +2504,15 @@ TEST_F(ControllerTest, ValidateControllerIpAddress_03) { uint32_t data_type(UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; v.valid[kIdxIpAddress]=1; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtctrObj.ValidateControllerIpAddress(db_conn,operation,data_type,(unc_keytype_ctrtype_t)1,(UpplReturnCode)0,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtctrObj.ValidateControllerIpAddress( + db_conn, operation, data_type, (unc_keytype_ctrtype_t)1, + (UncRespCode)0, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//ValidateControllerIpAddress +// ValidateControllerIpAddress TEST_F(ControllerTest, ValidateControllerIpAddress_04) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2185,12 +2526,15 @@ TEST_F(ControllerTest, ValidateControllerIpAddress_04) { uint32_t data_type = UNC_DT_RUNNING; OdbcmConnectionHandler *db_conn =NULL; v.valid[kIdxIpAddress]=1; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = KtctrObj.ValidateControllerIpAddress(db_conn,operation,data_type,(unc_keytype_ctrtype_t)1,(UpplReturnCode)0,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = KtctrObj.ValidateControllerIpAddress( + db_conn, operation, data_type, + (unc_keytype_ctrtype_t)1, (UncRespCode)0, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//ValidateUnknownCtrlrScalability +// ValidateUnknownCtrlrScalability TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_01) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2200,12 +2544,14 @@ TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_01) { uint8_t type(UNC_CT_PFC); uint32_t data_type(UNC_DT_RUNNING); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_FAILED); - int ret = KtctrObj.ValidateUnknownCtrlrScalability(db_conn,&k,type,data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_FAILED); + int ret = KtctrObj.ValidateUnknownCtrlrScalability( + db_conn, &k, type, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//ValidateUnknownCtrlrScalability +// ValidateUnknownCtrlrScalability TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_02) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2215,12 +2561,14 @@ TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_02) { uint8_t type(UNC_CT_PFC); uint32_t data_type(UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_CONNECTION_ERROR); - int ret = KtctrObj.ValidateUnknownCtrlrScalability(db_conn,&k,type,data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_CONNECTION_ERROR); + int ret = KtctrObj.ValidateUnknownCtrlrScalability( + db_conn, &k, type, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//ValidateUnknownCtrlrScalability +// ValidateUnknownCtrlrScalability TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_03) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2230,13 +2578,15 @@ TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_03) { uint8_t type(UNC_CT_PFC); uint32_t data_type(UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_SUCCESS); unc::uppl::ODBCManager::stub_setSiblingCount(1); - int ret = KtctrObj.ValidateUnknownCtrlrScalability(db_conn,&k,type,data_type); - EXPECT_EQ(UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, ret); + int ret = KtctrObj.ValidateUnknownCtrlrScalability( + db_conn, &k, type, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, ret); } -//ValidateUnknownCtrlrScalability +// ValidateUnknownCtrlrScalability TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_04) { key_ctr_t k; memset(k.controller_name, '\0', 32); @@ -2246,13 +2596,15 @@ TEST_F(ControllerTest, ValidateUnknownCtrlrScalability_Neg_DB_04) { uint8_t type(UNC_CT_PFC); uint32_t data_type(UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_RECORD_NOT_FOUND); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETSIBLINGCOUNT_FILTER, ODBCM_RC_RECORD_NOT_FOUND); unc::uppl::ODBCManager::stub_setSiblingCount(1); - int ret = KtctrObj.ValidateUnknownCtrlrScalability(db_conn,&k,type,data_type); - EXPECT_EQ(UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, ret); + int ret = KtctrObj.ValidateUnknownCtrlrScalability( + db_conn, &k, type, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_EXCEEDS_RESOURCE_LIMIT, ret); } -//FrameValidValue +// FrameValidValue TEST_F(ControllerTest, FrameValidValue_01) { val_ctr_t v; val_ctr_st_t v_st; @@ -2278,7 +2630,7 @@ TEST_F(ControllerTest, FrameValidValue_01) { /*******TAMIL TEST CASES*******/ /********ReadBulk*******/ -//ReadBulk opr returns Success for max_ct is zero +// ReadBulk opr returns Success for max_ct is zero TEST_F(ControllerTest, ReadBulk_Max_Ct_Zero) { key_ctr_t k; int child_index(0); @@ -2292,11 +2644,11 @@ TEST_F(ControllerTest, ReadBulk_Max_Ct_Zero) { Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, - child_index, parent_call,is_read_next, read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Check for controller key existence +// Check for controller key existence TEST_F(ControllerTest, ReadBulk_childIndex) { key_ctr_t k; int child_index = -1; @@ -2309,15 +2661,17 @@ TEST_F(ControllerTest, ReadBulk_childIndex) { vector obj_key_struct; Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - //unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + // unc::uppl::ODBCManager::stub_setResultcode( + // unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, - child_index, parent_call,is_read_next, read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*************ReadBulkInternal**********/ -// ReadBulkInternal: No record to read +// ReadBulkInternal: No record to read TEST_F(ControllerTest, ReadBulkInternal_NoRecordFound) { key_ctr_t k; val_ctr_t v; @@ -2329,12 +2683,14 @@ TEST_F(ControllerTest, ReadBulkInternal_NoRecordFound) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, &v,UNC_DT_STATE, max_rep_ct, vect_val_ctr_st, vect_ctr_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtctrObj.ReadBulkInternal(db_conn, &k, &v, + UNC_DT_STATE, max_rep_ct, vect_val_ctr_st, vect_ctr_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_CONNECTION_ERROR +// ReadBulkInternal with read_db_status ODBCM_RC_CONNECTION_ERROR TEST_F(ControllerTest, ReadBulkInternal_Db_Connxn_Error) { key_ctr_t k; val_ctr_t v; @@ -2346,12 +2702,15 @@ TEST_F(ControllerTest, ReadBulkInternal_Db_Connxn_Error) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, &v,UNC_DT_STATE, max_rep_ct, vect_val_ctr_st, vect_ctr_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtctrObj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, + max_rep_ct, vect_val_ctr_st, vect_ctr_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_TABLE_NOT_FOUND +// ReadBulkInternal with read_db_status ODBCM_RC_TABLE_NOT_FOUND TEST_F(ControllerTest, ReadBulkInternal_Err_DB_Get) { key_ctr_t k; val_ctr_t v; @@ -2363,13 +2722,16 @@ TEST_F(ControllerTest, ReadBulkInternal_Err_DB_Get) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_TABLE_NOT_FOUND); - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, &v,UNC_DT_STATE, max_rep_ct, - vect_val_ctr_st, vect_ctr_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, + ODBCM_RC_TABLE_NOT_FOUND); + int ret = KtctrObj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_st, vect_ctr_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_SUCCESS +// ReadBulkInternal with read_db_status ODBCM_RC_SUCCESS TEST_F(ControllerTest, ReadBulkInternal_Success) { key_ctr_t k; val_ctr_t v; @@ -2381,71 +2743,80 @@ TEST_F(ControllerTest, ReadBulkInternal_Success) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtctrObj.ReadBulkInternal(db_conn, &k, &v,UNC_DT_STATE, max_rep_ct, - vect_val_ctr_st, vect_ctr_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtctrObj.ReadBulkInternal(db_conn, + &k, &v, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_st, vect_ctr_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*********ValidateCtrlrValueCapability*******/ -//returns config syntax error +// returns config syntax error TEST_F(ControllerTest, ValidateCtrlrValueCapability_Err_CFG_SYNTAX) { string version; uint32_t key_type(UNC_KT_CONTROLLER); Kt_Controller KtctrObj; int ret = KtctrObj.ValidateCtrlrValueCapability(version, key_type); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } /*******ValidateCtrlrScalability****/ -//Returns Connxn Error +// Returns Connxn Error TEST_F(ControllerTest, ValidateCtrlrScalability_Err_DB_Access) { OdbcmConnectionHandler *db_conn =NULL; string version; uint32_t key_type = UNC_KT_CONTROLLER; uint32_t data_type = UNC_DT_STATE; Kt_Controller KtctrObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETROWCOUNT, ODBCM_RC_CONNECTION_ERROR); - int ret = KtctrObj.ValidateCtrlrScalability(db_conn, version, key_type, data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETROWCOUNT, ODBCM_RC_CONNECTION_ERROR); + int ret = KtctrObj.ValidateCtrlrScalability( + db_conn, version, key_type, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//Unable to get scalability number from system +// Unable to get scalability number from system TEST_F(ControllerTest, ValidateCtrlrScalability_System_Error) { OdbcmConnectionHandler *db_conn =NULL; string version; uint32_t key_type = UNC_KT_CONTROLLER; uint32_t data_type = UNC_DT_STATE; Kt_Controller KtctrObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETROWCOUNT, ODBCM_RC_SUCCESS); - int ret = KtctrObj.ValidateCtrlrScalability(db_conn, version, key_type, data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETROWCOUNT, ODBCM_RC_SUCCESS); + int ret = KtctrObj.ValidateCtrlrScalability( + db_conn, version, key_type, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -//Unable to get scalability number from DB +// Unable to get scalability number from DB TEST_F(ControllerTest, ValidateCtrlrScalability_DB_Err) { OdbcmConnectionHandler *db_conn =NULL; string version; uint32_t key_type = UNC_KT_CONTROLLER; uint32_t data_type = UNC_DT_STATE; Kt_Controller KtctrObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETROWCOUNT, ODBCM_RC_FAILED); - int ret = KtctrObj.ValidateCtrlrScalability(db_conn, version, key_type, data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETROWCOUNT, ODBCM_RC_FAILED); + int ret = KtctrObj.ValidateCtrlrScalability( + db_conn, version, key_type, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /******ValidateTypeIpAddress*******/ -//Not required to validate type and ip +// Not required to validate type and ip TEST_F(ControllerTest, ValidateTypeIpAddress_NoValidation) { OdbcmConnectionHandler *db_conn =NULL; key_ctr_t k; - val_ctr_st_t *v = NULL; + val_ctr_st_t *v = NULL; uint32_t data_type = UNC_DT_STATE; uint32_t ctrl_type(UNC_CT_PFC); Kt_Controller KtctrObj; - int ret = KtctrObj.ValidateTypeIpAddress(db_conn,&k,v,data_type,ctrl_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.ValidateTypeIpAddress( + db_conn, &k, v, data_type, ctrl_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, ValidateTypeIpAddress) { @@ -2456,14 +2827,16 @@ TEST_F(ControllerTest, ValidateTypeIpAddress) { val_ctr_st_t v; memset(&v, 0, sizeof(v)); - //v->valid[kIdxIpAddress] = UNC_VF_INVALID; + // v->valid[kIdxIpAddress] = UNC_VF_INVALID; uint32_t data_type = UNC_DT_STATE; uint32_t ctrl_type(UNC_CT_PFC); Kt_Controller KtctrObj; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = KtctrObj.ValidateTypeIpAddress(db_conn,&k,&v,data_type,ctrl_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = KtctrObj.ValidateTypeIpAddress( + db_conn, &k, &v, data_type, ctrl_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*******HandleDriverAlarms*********/ @@ -2484,8 +2857,9 @@ TEST_F(ControllerTest, HandleDriverAlarms) { "aa:bb:cc:dd:ee:ff:00:11", sizeof(v.egress_ofs_dpid)); Kt_Controller KtctrObj; - int ret = KtctrObj.HandleDriverAlarms(db_conn,data_type,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtctrObj.HandleDriverAlarms( + db_conn, data_type, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } @@ -2498,28 +2872,31 @@ TEST_F(ControllerTest, SendSemanticRequestToUPLL) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; int ret = KtctrObj.SendSemanticRequestToUPLL(&k, data_type); - EXPECT_EQ(UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_LOGICAL_COMMUNICATION_FAILURE, ret); } -//GetChildClassPointer +// GetChildClassPointer TEST_F(ControllerTest, GetChildClassPointer_01) { int kIndex = 0; Kt_Controller KtctrObj; - Kt_Base *child(KtctrObj.GetChildClassPointer((KtControllerChildClass)kIndex)); + Kt_Base *child( + KtctrObj.GetChildClassPointer((KtControllerChildClass)kIndex)); ASSERT_TRUE(child != NULL); } TEST_F(ControllerTest, GetChildClassPointer_02) { int kIndex = 1; Kt_Controller KtctrObj; - Kt_Base *child(KtctrObj.GetChildClassPointer((KtControllerChildClass)kIndex)); + Kt_Base *child(KtctrObj.GetChildClassPointer( + (KtControllerChildClass)kIndex)); ASSERT_TRUE(child != NULL); } TEST_F(ControllerTest, GetChildClassPointer_03) { int kIndex = 2; Kt_Controller KtctrObj; - Kt_Base *child(KtctrObj.GetChildClassPointer((KtControllerChildClass)kIndex)); + Kt_Base *child(KtctrObj.GetChildClassPointer( + (KtControllerChildClass)kIndex)); ASSERT_TRUE(child != NULL); } @@ -2535,11 +2912,13 @@ TEST_F(ControllerTest, ReadBulk) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - //unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + // unc::uppl::ODBCManager::stub_setResultcode( + // unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, - child_index, parent_call,is_read_next, read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, ReadBulk_ReadBuffer) { @@ -2553,11 +2932,13 @@ TEST_F(ControllerTest, ReadBulk_ReadBuffer) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - //unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + // unc::uppl::ODBCManager::stub_setResultcode( + // unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, - child_index, parent_call,is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + child_index, parent_call, is_read_next, &read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, ReadBulk_child_ind) { @@ -2571,36 +2952,40 @@ TEST_F(ControllerTest, ReadBulk_child_ind) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - //unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + // unc::uppl::ODBCManager::stub_setResultcode( + // unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(ControllerTest, ReadBulk_ctr_exists_FALSE) { key_ctr_t k; - memset(&k,0,sizeof(key_ctr_t)); + memset(&k, 0, sizeof(key_ctr_t)); int child_index(0); pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest read_req; uint32_t max_rep_ct = 1; - //memset(k.controller_name, '\0', 32); - //memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); + // memset(k.controller_name, '\0', 32); + // memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - //unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + // unc::uppl::ODBCManager::stub_setResultcode + // (unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); int ret = KtctrObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, - child_index, parent_call,is_read_next, + child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteKeyInstance:returns DB error +// DeleteKeyInstance:returns DB error TEST_F(ControllerTest, DeleteKeyInstan_Err_DB_ACCESS) { key_ctr_t k; uint32_t key_type(UNC_KT_CONTROLLER); @@ -2608,13 +2993,14 @@ TEST_F(ControllerTest, DeleteKeyInstan_Err_DB_ACCESS) { memcpy(k.controller_name, pkctrName1, strlen(pkctrName1)); Kt_Controller KtctrObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode + (unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); int ret = KtctrObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//ReadBulkInternal:Reaturns success for max_ct zero -TEST_F(ControllerTest,ReadBulkInternal_MaxCt_LessThan_Zero) { +// ReadBulkInternal:Reaturns success for max_ct zero +TEST_F(ControllerTest, ReadBulkInternal_MaxCt_LessThan_Zero) { OdbcmConnectionHandler *db_conn =NULL; key_ctr_t k; val_ctr_st_t v; @@ -2623,11 +3009,12 @@ TEST_F(ControllerTest,ReadBulkInternal_MaxCt_LessThan_Zero) { vector vect_val_ctr; vector vect_ctr_id; Kt_Controller KtctrObj; - int ret = KtctrObj.ReadBulkInternal(db_conn,&k,&v,data_type,max_rep_ct,vect_val_ctr,vect_ctr_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); -} + int ret = KtctrObj.ReadBulkInternal + (db_conn, &k, &v, data_type, max_rep_ct, vect_val_ctr, vect_ctr_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); +} -//HandleDriverEvents +// HandleDriverEvents TEST_F(ControllerTest, HandleDriverEvents) { OdbcmConnectionHandler *db_conn =NULL; key_ctr_t k; @@ -2640,12 +3027,14 @@ TEST_F(ControllerTest, HandleDriverEvents) { val_ctr_st_t *new_val_struct(NULL); pfc_bool_t is_events_done(PFC_FALSE); Kt_Controller KtctrObj; - int ret = KtctrObj.HandleDriverEvents(db_conn,&k,oper_type,data_type,old_val_struct,new_val_struct,is_events_done); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.HandleDriverEvents + (db_conn, &k, oper_type, data_type, old_val_struct, + new_val_struct, is_events_done); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /***8*ReadCtrValFromDb****/ -//Unsuported opr type....Returns Success +// Unsuported opr type....Returns Success TEST_F(ControllerTest, ReadCtrValFromDB) { OdbcmConnectionHandler *db_conn =NULL; key_ctr_t k; @@ -2656,6 +3045,8 @@ TEST_F(ControllerTest, ReadCtrValFromDB) { vector vect_val_ctr_st; vector controller_id; Kt_Controller KtctrObj; - int ret = KtctrObj.ReadCtrValFromDB(db_conn,&k,&v,data_type,operation_type,max_rep_ct,vect_val_ctr_st,controller_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtctrObj.ReadCtrValFromDB + (db_conn, &k, &v, data_type, operation_type, max_rep_ct, + vect_val_ctr_st, controller_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } diff --git a/coordinator/test/modules/uppl/utest/Domain_ut.cc b/coordinator/test/modules/uppl/utest/Domain_ut.cc index 399cd8c7..1b7d00ea 100644 --- a/coordinator/test/modules/uppl/utest/Domain_ut.cc +++ b/coordinator/test/modules/uppl/utest/Domain_ut.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -62,8 +62,7 @@ using namespace unc::tclib; using namespace unc::uppl::test; class DomainTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; static char pkctrName1[] = "Controller1"; @@ -80,8 +79,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Domainname_notFound_01) { memset(k.domain_name, '\0', sizeof(k.domain_name)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(DomainTest, PerformSyntxCheck_Controllername_notFound_02) { @@ -93,8 +93,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Controllername_notFound_02) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(DomainTest, PerformSyntxCheck_Valstrct_without_type_03) { @@ -109,8 +110,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Valstrct_without_type_03) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(DomainTest, PerformSyntxCheck_Valstrct_04) { @@ -127,8 +129,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Valstrct_04) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(DomainTest, PerformSyntxCheck_Valstrct_05) { @@ -145,8 +148,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Valstrct_05) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_UPDATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(DomainTest, PerformSyntxCheck_Valstrct_06) { @@ -163,8 +167,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Valstrct_06) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(DomainTest, PerformSyntxCheck_Valstrct_07) { @@ -181,8 +186,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Valstrct_07) { memcpy(k.domain_name, pkDomainName3, strlen(pkDomainName3)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } TEST_F(DomainTest, PerformSyntxCheck_Valstrct_08) { @@ -200,8 +206,9 @@ TEST_F(DomainTest, PerformSyntxCheck_Valstrct_08) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(DomainTest, PerformSyntxCheck_val_struct_empty_09) { @@ -215,10 +222,11 @@ TEST_F(DomainTest, PerformSyntxCheck_val_struct_empty_09) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// Create for unsupported datatype +// Create for unsupported datatype TEST_F(DomainTest, Create_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -236,10 +244,11 @@ TEST_F(DomainTest, Create_01) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.Create( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_STATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Domain Create success +// Domain Create success TEST_F(DomainTest, Create_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -261,19 +270,22 @@ TEST_F(DomainTest, Create_02) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.Create( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// get_controller_type returns failure +// get_controller_type returns failure TEST_F(DomainTest, Create_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -295,19 +307,23 @@ TEST_F(DomainTest, Create_03) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = + KtdomianObj.Create( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, + ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /* -//Create on unsupported datatype +// Create on unsupported datatype TEST_F(DomainTest, Create) { key_ctr_domain_t k; val_ctr_domain v; @@ -324,10 +340,11 @@ TEST_F(DomainTest, Create) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Create(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = + KtdomianObj.Create(db_conn, session_id, configuration_id, &k, &v, UNC_DT_STATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } - + TEST_F(DomainTest, PerformSemanticValidation_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -342,57 +359,65 @@ TEST_F(DomainTest, PerformSemanticValidation_01) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_CANDIDATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_CANDIDATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); }*/ -// IsKeyExists with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// IsKeyExists with UNC_DT_CANDIDATE datatype +// ODBC return ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, IsKeyExists_01) { Kt_Ctr_Domain KtdomianObj; vector vect_key; vect_key.push_back(pkctrName1); vect_key.push_back(pkDomainName2); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.IsKeyExists(db_conn, UNC_DT_CANDIDATE, vect_key); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// IsKeyExists with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_ROW_EXISTS +// IsKeyExists with UNC_DT_CANDIDATE datatype +// ODBC return ODBCM_RC_ROW_EXISTS TEST_F(DomainTest, IsKeyExists_02) { Kt_Ctr_Domain KtdomianObj; vector vect_key; vect_key.push_back(pkctrName1); vect_key.push_back(pkDomainName2); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtdomianObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtdomianObj.IsKeyExists(db_conn, UNC_DT_CANDIDATE, vect_key); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// IsKeyExists with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_QUERY_TIMEOUT +// IsKeyExists with UNC_DT_CANDIDATE datatype ODBC +// return ODBCM_RC_QUERY_TIMEOUT TEST_F(DomainTest, IsKeyExists_03) { Kt_Ctr_Domain KtdomianObj; vector vect_key; vect_key.push_back(pkctrName1); vect_key.push_back(pkDomainName2); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_QUERY_TIMEOUT); - int ret = KtdomianObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_QUERY_TIMEOUT); + int ret = KtdomianObj.IsKeyExists(db_conn, UNC_DT_CANDIDATE, vect_key); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// IsKeyExists with key structure empty +// IsKeyExists with key structure empty TEST_F(DomainTest, IsKeyExists_04) { Kt_Ctr_Domain KtdomianObj; vector vect_key; vect_key.clear(); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.IsKeyExists(db_conn,UNC_DT_CANDIDATE,vect_key); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = KtdomianObj.IsKeyExists(db_conn, UNC_DT_CANDIDATE, vect_key); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC +// return ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, CreateKeyInstance_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -408,12 +433,14 @@ TEST_F(DomainTest, CreateKeyInstance_01) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateKeyInstance with UNC_DT_RUNNING datatype ODBC +// CreateKeyInstance with UNC_DT_RUNNING datatype ODBC TEST_F(DomainTest, CreateKeyInstance_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -430,12 +457,15 @@ TEST_F(DomainTest, CreateKeyInstance_02) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_RUNNING,key_type); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_RUNNING, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// CreateKeyInstance with UNC_DT_STATE datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// CreateKeyInstance with UNC_DT_STATE datatype +// ODBC return ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, CreateKeyInstance_03) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -452,12 +482,15 @@ TEST_F(DomainTest, CreateKeyInstance_03) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateKeyInstance with UNC_DT_IMPORT datatype ODBC return ODBCM_RC_CONNECTION_ERROR +// CreateKeyInstance with UNC_DT_IMPORT +// datatype ODBC return ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, CreateKeyInstance_04) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -474,12 +507,15 @@ TEST_F(DomainTest, CreateKeyInstance_04) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC return Failure +// CreateKeyInstance with UNC_DT_CANDIDATE +// datatype ODBC return Failure TEST_F(DomainTest, CreateKeyInstance_05) { key_ctr_domain_t k; val_ctr_domain v; @@ -496,12 +532,15 @@ TEST_F(DomainTest, CreateKeyInstance_05) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_CREATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_CREATE, ret); } -// CreateKeyInstance with UNC_DT_CANDIDATE datatype ODBC ODBCM_RC_SUCCESS +// CreateKeyInstance with UNC_DT_CANDIDATE +// datatype ODBC ODBCM_RC_SUCCESS TEST_F(DomainTest, CreateKeyInstance_06) { key_ctr_domain_t k; val_ctr_domain v; @@ -518,12 +557,14 @@ TEST_F(DomainTest, CreateKeyInstance_06) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// CreateKeyInstance with UNC_DT_STATE datatype ODBC return Failure +// CreateKeyInstance with UNC_DT_STATE datatype ODBC return Failure TEST_F(DomainTest, CreateKeyInstance_07) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -540,12 +581,15 @@ TEST_F(DomainTest, CreateKeyInstance_07) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_CREATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_CREATE, ret); } -// CreateKeyInstance with UNC_DT_IMPORT datatype ODBC return Failure +// CreateKeyInstance with UNC_DT_IMPORT +// datatype ODBC return Failure TEST_F(DomainTest, CreateKeyInstance_08) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -562,12 +606,14 @@ TEST_F(DomainTest, CreateKeyInstance_08) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = KtdomianObj.CreateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_CREATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::CREATEONEROW, ODBCM_RC_TRANSACTION_ERROR); + int ret = KtdomianObj.CreateKeyInstance( + db_conn, &k, &v, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_CREATE, ret); } -// Update for unsupported datatype +// Update for unsupported datatype TEST_F(DomainTest, Update_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -585,10 +631,11 @@ TEST_F(DomainTest, Update_01) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_STATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Domain Update success +// Domain Update success TEST_F(DomainTest, Update_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -610,19 +657,22 @@ TEST_F(DomainTest, Update_02) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// get_controller_type returns failure +// get_controller_type returns failure TEST_F(DomainTest, Update_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -644,18 +694,21 @@ TEST_F(DomainTest, Update_03) { ses.stub_setAddOutput((uint32_t)ODBCM_RC_SUCCESS); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Update(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.Update( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// UpdateKeyInstance with UNC_DT_CANDIDATE ODBC retuns ODBCM_RC_CONNECTION_ERROR +// UpdateKeyInstance with UNC_DT_CANDIDATE ODBC +// retuns ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, UpdateKeyInstance_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -672,12 +725,14 @@ TEST_F(DomainTest, UpdateKeyInstance_01) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.UpdateKeyInstance( + db_conn, &k, &v, UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// UpdateKeyInstance on unsupported datatype +// UpdateKeyInstance on unsupported datatype TEST_F(DomainTest, UpdateKeyInstance_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -694,11 +749,12 @@ TEST_F(DomainTest, UpdateKeyInstance_02) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_RUNNING,key_type); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = KtdomianObj.UpdateKeyInstance( + db_conn, &k, &v, UNC_DT_RUNNING, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_CONNECTION_ERROR +// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, UpdateKeyInstance_03) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -715,12 +771,14 @@ TEST_F(DomainTest, UpdateKeyInstance_03) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.UpdateKeyInstance( + db_conn, &k, &v, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_SUCCESS +// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns ODBCM_RC_SUCCESS TEST_F(DomainTest, UpdateKeyInstance_04) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -737,12 +795,14 @@ TEST_F(DomainTest, UpdateKeyInstance_04) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.UpdateKeyInstance( + db_conn, &k, &v, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns +// UpdateKeyInstance with UNC_DT_IMPORT ODBC retuns TEST_F(DomainTest, UpdateKeyInstance_05) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -759,12 +819,14 @@ TEST_F(DomainTest, UpdateKeyInstance_05) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = KtdomianObj.UpdateKeyInstance(db_conn,&k,&v,UNC_DT_IMPORT,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_TRANSACTION_ERROR); + int ret = KtdomianObj.UpdateKeyInstance( + db_conn, &k, &v, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// Delete for unsupported datatype +// Delete for unsupported datatype TEST_F(DomainTest, Delete_01) { key_ctr_domain_t k; val_ctr_domain_st v; @@ -782,10 +844,11 @@ TEST_F(DomainTest, Delete_01) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_STATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_STATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Domain Delete success +// Domain Delete success TEST_F(DomainTest, Delete_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -811,14 +874,17 @@ TEST_F(DomainTest, Delete_02) { memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// get_controller_type returns failure +// get_controller_type returns failure TEST_F(DomainTest, Delete_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -844,13 +910,15 @@ TEST_F(DomainTest, Delete_03) { memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.Delete( + db_conn, session_id, configuration_id, &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// Domain Delete With boundary referred +// Domain Delete With boundary referred TEST_F(DomainTest, Delete_04) { key_ctr_domain_t k; val_ctr_domain v; @@ -876,14 +944,18 @@ TEST_F(DomainTest, Delete_04) { memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.Delete(db_conn,session_id,configuration_id,&k,UNC_DT_CANDIDATE,ses); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.Delete(db_conn, + session_id, configuration_id, + &k, UNC_DT_CANDIDATE, ses); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// UpdateKeyInstance with ODBC retuns ODBCM_RC_CONNECTION_ERROR +// UpdateKeyInstance with ODBC retuns ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, GetModifiedRows_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -900,12 +972,13 @@ TEST_F(DomainTest, GetModifiedRows_01) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ODBC retuns ODBCM_RC_RECORD_NOT_FOUND +// ODBC retuns ODBCM_RC_RECORD_NOT_FOUND TEST_F(DomainTest, GetModifiedRows_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -922,12 +995,13 @@ TEST_F(DomainTest, GetModifiedRows_02) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtdomianObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtdomianObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ODBC retuns ODBCM_RC_SUCCESS +// ODBC retuns ODBCM_RC_SUCCESS TEST_F(DomainTest, GetModifiedRows_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -944,12 +1018,13 @@ TEST_F(DomainTest, GetModifiedRows_03) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); EXPECT_EQ(ODBCM_RC_SUCCESS, ret); } -// ODBC retuns ODBCM_RC_FAILED +// ODBC retuns ODBCM_RC_FAILED TEST_F(DomainTest, GetModifiedRows_04) { key_ctr_domain_t k; val_ctr_domain v; @@ -966,9 +1041,10 @@ TEST_F(DomainTest, GetModifiedRows_04) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_FAILED); - int ret = KtdomianObj.GetModifiedRows(db_conn,obj_key_struct,UPDATED); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETMODIFIEDROWS, ODBCM_RC_FAILED); + int ret = KtdomianObj.GetModifiedRows(db_conn, obj_key_struct, UPDATED); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(DomainTest, SetOperStatus_001) { @@ -980,9 +1056,11 @@ TEST_F(DomainTest, SetOperStatus_001) { Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); - int ret = KtdomianObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplDomainOperStatus)1); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); + int ret = KtdomianObj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplDomainOperStatus)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(DomainTest, SetOperStatus_002) { @@ -993,9 +1071,11 @@ TEST_F(DomainTest, SetOperStatus_002) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtdomianObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplDomainOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtdomianObj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplDomainOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(DomainTest, SetOperStatus_003) { @@ -1007,10 +1087,13 @@ TEST_F(DomainTest, SetOperStatus_003) { Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtdomianObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplDomainOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtdomianObj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplDomainOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(DomainTest, SetOperStatus_004) { @@ -1025,10 +1108,13 @@ TEST_F(DomainTest, SetOperStatus_004) { ser_evt.addOutput((uint32_t)UNC_OP_CREATE); ser_evt.addOutput((uint32_t)UNC_DT_STATE); ser_evt.addOutput((uint32_t)UNC_KT_PORT); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplDomainOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplDomainOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(DomainTest, SetOperStatus_005) { @@ -1043,15 +1129,17 @@ TEST_F(DomainTest, SetOperStatus_005) { ser_evt.stub_setAddOutput((uint32_t)UNC_OP_UPDATE); ser_evt.stub_setAddOutput((uint32_t)UNC_DT_STATE); ser_evt.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplDomainOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplDomainOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GetOperStatus ODBC returns failure +// GetOperStatus ODBC returns failure TEST_F(DomainTest, GetOperStatus_001) { - key_ctr_domain_t k; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); @@ -1060,14 +1148,14 @@ TEST_F(DomainTest, GetOperStatus_001) { Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; uint8_t op_status; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtdomianObj.GetOperStatus(db_conn,UNC_DT_STATE,&k,op_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtdomianObj.GetOperStatus(db_conn, UNC_DT_STATE, &k, op_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// GetOperStatus ODBC returns SUCCESS +// GetOperStatus ODBC returns SUCCESS TEST_F(DomainTest, GetOperStatus_002) { - key_ctr_domain_t k; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); @@ -1076,24 +1164,24 @@ TEST_F(DomainTest, GetOperStatus_002) { Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; uint8_t op_status; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.GetOperStatus(db_conn,UNC_DT_STATE,&k,op_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.GetOperStatus(db_conn, UNC_DT_STATE, &k, op_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleOperStatus with NULL keystruct +// HandleOperStatus with NULL keystruct TEST_F(DomainTest, HandleOperStatus_01) { - key_ctr_domain_t *k; val_ctr_domain v; k = NULL; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.HandleOperStatus(db_conn,UNC_DT_STATE,k,&v); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = KtdomianObj.HandleOperStatus(db_conn, UNC_DT_STATE, k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -// HandleOperStatus +// HandleOperStatus TEST_F(DomainTest, HandleOperStatus_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -1108,12 +1196,13 @@ TEST_F(DomainTest, HandleOperStatus_02) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// HandleOperStatus Controller oper_status retunrs failure +// HandleOperStatus Controller oper_status retunrs failure TEST_F(DomainTest, HandleOperStatus_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -1128,12 +1217,13 @@ TEST_F(DomainTest, HandleOperStatus_03) { memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtdomianObj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtdomianObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -// HandleDriverAlarms with unsupported alarm type +// HandleDriverAlarms with unsupported alarm type TEST_F(DomainTest, HandleDriverAlarms_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -1142,12 +1232,14 @@ TEST_F(DomainTest, HandleDriverAlarms_01) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtdomianObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtdomianObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleDriverAlarms with UNC_COREDOMAIN_SPLIT alarm type +// HandleDriverAlarms with UNC_COREDOMAIN_SPLIT alarm type TEST_F(DomainTest, HandleDriverAlarms_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -1160,12 +1252,14 @@ TEST_F(DomainTest, HandleDriverAlarms_02) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtdomianObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtdomianObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// HandleDriverAlarms with oper_type UNC_OP_CREATE +// HandleDriverAlarms with oper_type UNC_OP_CREATE TEST_F(DomainTest, HandleDriverAlarms_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -1178,12 +1272,14 @@ TEST_F(DomainTest, HandleDriverAlarms_03) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// HandleDriverAlarms with oper_type UNC_OP_DELETE +// HandleDriverAlarms with oper_type UNC_OP_DELETE TEST_F(DomainTest, HandleDriverAlarms_04) { key_ctr_domain_t k; val_ctr_domain v; @@ -1196,13 +1292,16 @@ TEST_F(DomainTest, HandleDriverAlarms_04) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_CREATE +// PerformSemanticValidation with oper_type UNC_OP_CREATE TEST_F(DomainTest, PerformSemanticValidation_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -1214,12 +1313,14 @@ TEST_F(DomainTest, PerformSemanticValidation_01) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtdomianObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtdomianObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_CREATE +// PerformSemanticValidation with oper_type UNC_OP_CREATE TEST_F(DomainTest, PerformSemanticValidation_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -1231,12 +1332,14 @@ TEST_F(DomainTest, PerformSemanticValidation_02) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_CREATE +// PerformSemanticValidation with oper_type UNC_OP_CREATE TEST_F(DomainTest, PerformSemanticValidation_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -1248,12 +1351,14 @@ TEST_F(DomainTest, PerformSemanticValidation_03) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_TRANSACTION_ERROR); - int ret = KtdomianObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_IMPORT); - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_TRANSACTION_ERROR); + int ret = KtdomianObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_IMPORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } -// PerformSemanticValidation with oper_type UNC_OP_READ +// PerformSemanticValidation with oper_type UNC_OP_READ TEST_F(DomainTest, PerformSemanticValidation_04) { key_ctr_domain_t k; val_ctr_domain v; @@ -1265,12 +1370,14 @@ TEST_F(DomainTest, PerformSemanticValidation_04) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtdomianObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtdomianObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_UPDATE +// PerformSemanticValidation with oper_type UNC_OP_UPDATE TEST_F(DomainTest, PerformSemanticValidation_05) { key_ctr_domain_t k; val_ctr_domain v; @@ -1282,12 +1389,14 @@ TEST_F(DomainTest, PerformSemanticValidation_05) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// PerformSemanticValidation with oper_type UNC_OP_DELETE +// PerformSemanticValidation with oper_type UNC_OP_DELETE TEST_F(DomainTest, PerformSemanticValidation_06) { key_ctr_domain_t k; val_ctr_domain v; @@ -1299,12 +1408,14 @@ TEST_F(DomainTest, PerformSemanticValidation_06) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_QUERY_TIMEOUT); - int ret = KtdomianObj.PerformSemanticValidation(db_conn, &k, &v, oper_type, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_QUERY_TIMEOUT); + int ret = KtdomianObj.PerformSemanticValidation( + db_conn, &k, &v, oper_type, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ReadBulkInternal with max_count zero +// ReadBulkInternal with max_count zero TEST_F(DomainTest, ReadBulkInternal_01) { key_ctr_domain_t k; vector vect_val_ctr_domain_st; @@ -1317,11 +1428,13 @@ TEST_F(DomainTest, ReadBulkInternal_01) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_ctr_domain_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_domain_st, vect_domain_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_RECORD_NOT_FOUND +// ReadBulkInternal with read_db_status ODBCM_RC_RECORD_NOT_FOUND TEST_F(DomainTest, ReadBulkInternal_02) { key_ctr_domain_t k; vector vect_val_ctr_domain_st; @@ -1334,12 +1447,15 @@ TEST_F(DomainTest, ReadBulkInternal_02) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtdomianObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_ctr_domain_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtdomianObj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_domain_st, vect_domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_CONNECTION_ERROR +// ReadBulkInternal with read_db_status ODBCM_RC_CONNECTION_ERROR TEST_F(DomainTest, ReadBulkInternal_03) { key_ctr_domain_t k; vector vect_val_ctr_domain_st; @@ -1352,12 +1468,15 @@ TEST_F(DomainTest, ReadBulkInternal_03) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_ctr_domain_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_domain_st, vect_domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_TABLE_NOT_FOUND +// ReadBulkInternal with read_db_status ODBCM_RC_TABLE_NOT_FOUND TEST_F(DomainTest, ReadBulkInternal_04) { key_ctr_domain_t k; vector vect_val_ctr_domain_st; @@ -1370,13 +1489,15 @@ TEST_F(DomainTest, ReadBulkInternal_04) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_TABLE_NOT_FOUND); - int ret = KtdomianObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, - vect_val_ctr_domain_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_TABLE_NOT_FOUND); + int ret = KtdomianObj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_domain_st, vect_domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -// ReadBulkInternal with read_db_status ODBCM_RC_SUCCESS +// ReadBulkInternal with read_db_status ODBCM_RC_SUCCESS TEST_F(DomainTest, ReadBulkInternal_05) { key_ctr_domain_t k; vector vect_val_ctr_domain_st; @@ -1389,14 +1510,16 @@ TEST_F(DomainTest, ReadBulkInternal_05) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, - vect_val_ctr_domain_st, vect_domain_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + vect_val_ctr_domain_st, vect_domain_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulk with get_controller_type returns failure -// MEM +// ReadBulk with get_controller_type returns failure +// MEM TEST_F(DomainTest, ReadBulk_02) { key_ctr_domain_t k; int child_index = 2; @@ -1411,16 +1534,19 @@ TEST_F(DomainTest, ReadBulk_02) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); int ret = KtdomianObj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, - child_index, parent_call,is_read_next, + child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulk with data type UNC_DT_IMPORT +// ReadBulk with data type UNC_DT_IMPORT TEST_F(DomainTest, ReadBulk_01) { key_ctr_domain_t k; int child_index = 0; @@ -1436,11 +1562,11 @@ TEST_F(DomainTest, ReadBulk_01) { Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; int ret = KtdomianObj.ReadBulk(db_conn, &k, UNC_DT_IMPORT, max_rep_ct, - child_index, parent_call,is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + child_index, parent_call, is_read_next, &read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// DeleteKeyInstance with data type UNC_DT_RUNNING +// DeleteKeyInstance with data type UNC_DT_RUNNING TEST_F(DomainTest, DeleteKeyInstance_01) { key_ctr_domain_t k; uint32_t key_type = 0; @@ -1450,12 +1576,14 @@ TEST_F(DomainTest, DeleteKeyInstance_01) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - //unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.DeleteKeyInstance(db_conn, &k, UNC_DT_RUNNING, key_type); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + // unc::uppl::ODBCManager::stub_setResultcode( + // unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.DeleteKeyInstance(db_conn, &k, UNC_DT_RUNNING, + key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// DeleteKeyInstance with out child +// DeleteKeyInstance with out child TEST_F(DomainTest, DeleteKeyInstance_02) { key_ctr_domain_t k; uint32_t key_type = 0; @@ -1465,12 +1593,14 @@ TEST_F(DomainTest, DeleteKeyInstance_02) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtdomianObj.DeleteKeyInstance(db_conn, &k, UNC_DT_CANDIDATE, key_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtdomianObj.DeleteKeyInstance(db_conn, + &k, UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// DeleteKeyInstance with out child +// DeleteKeyInstance with out child TEST_F(DomainTest, DeleteKeyInstance_03) { key_ctr_domain_t k; uint32_t key_type = 0; @@ -1480,12 +1610,14 @@ TEST_F(DomainTest, DeleteKeyInstance_03) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtdomianObj.DeleteKeyInstance(db_conn, &k, UNC_DT_IMPORT, key_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtdomianObj.DeleteKeyInstance( + db_conn, &k, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// DeleteKeyInstance with out child +// DeleteKeyInstance with out child TEST_F(DomainTest, DeleteKeyInstance_04) { key_ctr_domain_t k; uint32_t key_type = 0; @@ -1495,12 +1627,14 @@ TEST_F(DomainTest, DeleteKeyInstance_04) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_TRANSACTION_ERROR); - int ret = KtdomianObj.DeleteKeyInstance(db_conn, &k, UNC_DT_IMPORT, key_type); - EXPECT_EQ(UPPL_RC_ERR_CFG_SEMANTIC, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_TRANSACTION_ERROR); + int ret = KtdomianObj.DeleteKeyInstance( + db_conn, &k, UNC_DT_IMPORT, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SEMANTIC, ret); } -// DeleteKeyInstance suceess +// DeleteKeyInstance suceess TEST_F(DomainTest, DeleteKeyInstance_05) { key_ctr_domain_t k; uint32_t key_type = 0; @@ -1510,23 +1644,25 @@ TEST_F(DomainTest, DeleteKeyInstance_05) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.DeleteKeyInstance(db_conn, &k, UNC_DT_IMPORT, key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.DeleteKeyInstance(db_conn, &k, UNC_DT_IMPORT, + key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// FreeChildKeyStruct suceess +// FreeChildKeyStruct suceess TEST_F(DomainTest, FreeChildKeyStruct_02) { void *key = new key_logical_port_t; int child_class = 0; Kt_Ctr_Domain KtdomianObj; - int ret = UPPL_RC_SUCCESS; + int ret = UNC_RC_SUCCESS; KtdomianObj.FreeChildKeyStruct(child_class, key); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// InvokeBoundaryNotifyOperStatus suceess +// InvokeBoundaryNotifyOperStatus suceess TEST_F(DomainTest, InvokeBoundaryNotifyOperStatus_01) { key_ctr_domain_t k; memset(k.ctr_key.controller_name, '\0', 32); @@ -1535,13 +1671,16 @@ TEST_F(DomainTest, InvokeBoundaryNotifyOperStatus_01) { memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.InvokeBoundaryNotifyOperStatus(db_conn, UNC_DT_IMPORT, &k); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.InvokeBoundaryNotifyOperStatus( + db_conn, UNC_DT_IMPORT, &k); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformRead invalid option and session failure +// PerformRead invalid option and session failure TEST_F(DomainTest, PerformRead_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -1560,18 +1699,20 @@ TEST_F(DomainTest, PerformRead_01) { ses.stub_setAddOutput((uint32_t)configuration_id); ses.stub_setAddOutput((uint32_t)session_id); ses.stub_setAddOutput((uint32_t)UNC_OP_CREATE); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformRead(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,operation_type, - ses, option1, option2,max_rep_ct); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.PerformRead( + db_conn, session_id, configuration_id, &k, &v, + UNC_DT_CANDIDATE, operation_type, + ses, option1, option2, max_rep_ct); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// PerformRead invalid option +// PerformRead invalid option TEST_F(DomainTest, PerformRead_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -1594,20 +1735,22 @@ TEST_F(DomainTest, PerformRead_02) { ses.stub_setAddOutput((uint32_t)option1); ses.stub_setAddOutput((uint32_t)option2); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION1); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION1); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformRead(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,operation_type, - ses, option1, option2,max_rep_ct); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.PerformRead( + db_conn, session_id, configuration_id, &k, &v, + UNC_DT_CANDIDATE, operation_type, + ses, option1, option2, max_rep_ct); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformRead invalid data type and session failure +// PerformRead invalid data type and session failure TEST_F(DomainTest, PerformRead_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -1626,18 +1769,19 @@ TEST_F(DomainTest, PerformRead_03) { ses.stub_setAddOutput((uint32_t)configuration_id); ses.stub_setAddOutput((uint32_t)session_id); ses.stub_setAddOutput((uint32_t)UNC_OP_CREATE); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformRead(db_conn,session_id,configuration_id,&k,&v,UNC_DT_AUDIT,operation_type, - ses, option1, option2,max_rep_ct); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtdomianObj.PerformRead( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_AUDIT, operation_type, + ses, option1, option2, max_rep_ct); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// PerformRead invalid data type +// PerformRead invalid data type TEST_F(DomainTest, PerformRead_04) { key_ctr_domain_t k; val_ctr_domain v; @@ -1661,19 +1805,20 @@ TEST_F(DomainTest, PerformRead_04) { ses.stub_setAddOutput((uint32_t)option2); ses.stub_setAddOutput((uint32_t)UNC_DT_AUDIT); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); - //ses.stub_setAddOutput((uint32_t)&k); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.PerformRead(db_conn,session_id,configuration_id,&k,&v,UNC_DT_AUDIT,operation_type, - ses, option1, option2,max_rep_ct); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.PerformRead( + db_conn, session_id, configuration_id, &k, &v, UNC_DT_AUDIT, operation_type, + ses, option1, option2, max_rep_ct); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformRead invalid data type +// PerformRead invalid data type TEST_F(DomainTest, PerformRead_05) { key_ctr_domain_t k; val_ctr_domain v; @@ -1694,20 +1839,23 @@ TEST_F(DomainTest, PerformRead_05) { ses.stub_setAddOutput((uint32_t)operation_type); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); - //ses.stub_setAddOutput((uint32_t)&k); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.PerformRead(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,operation_type, - ses, option1, option2,max_rep_ct); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.PerformRead( + db_conn, session_id, configuration_id, &k, &v, + UNC_DT_CANDIDATE, operation_type, + ses, option1, option2, max_rep_ct); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// PerformRead invalid data type +// PerformRead invalid data type TEST_F(DomainTest, PerformRead_06) { key_ctr_domain_t k; val_ctr_domain v; @@ -1731,20 +1879,23 @@ TEST_F(DomainTest, PerformRead_06) { ses.stub_setAddOutput((uint32_t)option2); ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); - ses.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); - //ses.stub_setAddOutput((uint32_t)&k); + ses.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.PerformRead(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,operation_type, - ses, option1, option2,max_rep_ct); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.PerformRead( + db_conn, session_id, configuration_id, &k, &v, + UNC_DT_CANDIDATE, operation_type, + ses, option1, option2, max_rep_ct); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -// PerformRead invalid data type +// PerformRead invalid data type TEST_F(DomainTest, PerformRead_07) { key_ctr_domain_t k; val_ctr_domain v; @@ -1769,19 +1920,22 @@ TEST_F(DomainTest, PerformRead_07) { ses.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); ses.stub_setAddOutput((uint32_t)UNC_KT_CTR_DOMAIN); ses.stub_setAddOutput((uint32_t)0); - //ses.stub_setAddOutput((uint32_t)&k); + // ses.stub_setAddOutput((uint32_t)&k); memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); memcpy(k.domain_name, pkDomainName2, strlen(pkDomainName2)); OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.PerformRead(db_conn,session_id,configuration_id,&k,&v,UNC_DT_CANDIDATE,operation_type, - ses, option1, option2,max_rep_ct); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.PerformRead( + db_conn, session_id, configuration_id, &k, &v, + UNC_DT_CANDIDATE, operation_type, + ses, option1, option2, max_rep_ct); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadDomainValFromDB with operation type UNC_OP_INVALID +// ReadDomainValFromDB with operation type UNC_OP_INVALID TEST_F(DomainTest, ReadDomainValFromDB_01) { key_ctr_domain_t k; val_ctr_domain v; @@ -1789,7 +1943,7 @@ TEST_F(DomainTest, ReadDomainValFromDB_01) { v.valid[kIdxDomainType] = 1; uint32_t max_rep_ct = 1; vector vect_val_ctr_domain_st; - vector domain_id; + vector domain_id; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); @@ -1798,12 +1952,14 @@ TEST_F(DomainTest, ReadDomainValFromDB_01) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtdomianObj.ReadDomainValFromDB(db_conn,&k,&v,UNC_DT_CANDIDATE,oper_type, - max_rep_ct,vect_val_ctr_domain_st,domain_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtdomianObj.ReadDomainValFromDB( + db_conn, &k, &v, UNC_DT_CANDIDATE, oper_type, + max_rep_ct, + vect_val_ctr_domain_st, domain_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadDomainValFromDB with operation type UNC_OP_READ +// ReadDomainValFromDB with operation type UNC_OP_READ TEST_F(DomainTest, ReadDomainValFromDB_02) { key_ctr_domain_t k; val_ctr_domain v; @@ -1813,7 +1969,7 @@ TEST_F(DomainTest, ReadDomainValFromDB_02) { uint32_t max_rep_ct = 1; vector vect_val_ctr_domain_st; - vector domain_id; + vector domain_id; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); @@ -1822,13 +1978,16 @@ TEST_F(DomainTest, ReadDomainValFromDB_02) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtdomianObj.ReadDomainValFromDB(db_conn,&k,&v,UNC_DT_CANDIDATE,oper_type, - max_rep_ct,vect_val_ctr_domain_st,domain_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtdomianObj.ReadDomainValFromDB( + db_conn, &k, &v, UNC_DT_CANDIDATE, oper_type, + max_rep_ct, + vect_val_ctr_domain_st, domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -// ReadDomainValFromDB with operation type UNC_OP_READ_BULK +// ReadDomainValFromDB with operation type UNC_OP_READ_BULK TEST_F(DomainTest, ReadDomainValFromDB_03) { key_ctr_domain_t k; val_ctr_domain v; @@ -1838,7 +1997,7 @@ TEST_F(DomainTest, ReadDomainValFromDB_03) { uint32_t max_rep_ct = 1; vector vect_val_ctr_domain_st; - vector domain_id; + vector domain_id; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); @@ -1847,10 +2006,13 @@ TEST_F(DomainTest, ReadDomainValFromDB_03) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtdomianObj.ReadDomainValFromDB(db_conn,&k,&v,UNC_DT_CANDIDATE,oper_type, - max_rep_ct,vect_val_ctr_domain_st,domain_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtdomianObj.ReadDomainValFromDB( + db_conn, &k, &v, UNC_DT_CANDIDATE, oper_type, + max_rep_ct, + vect_val_ctr_domain_st, domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(DomainTest, ReadDomainValFromDB_04) { @@ -1862,7 +2024,7 @@ TEST_F(DomainTest, ReadDomainValFromDB_04) { uint32_t max_rep_ct = 1; vector vect_val_ctr_domain_st; - vector domain_id; + vector domain_id; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); @@ -1871,10 +2033,13 @@ TEST_F(DomainTest, ReadDomainValFromDB_04) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_QUERY_TIMEOUT); - int ret = KtdomianObj.ReadDomainValFromDB(db_conn,&k,&v,UNC_DT_CANDIDATE,oper_type, - max_rep_ct,vect_val_ctr_domain_st,domain_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_QUERY_TIMEOUT); + int ret = KtdomianObj.ReadDomainValFromDB( + db_conn, &k, &v, UNC_DT_CANDIDATE, oper_type, + max_rep_ct, + vect_val_ctr_domain_st, domain_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(DomainTest, ReadDomainValFromDB_05) { @@ -1886,7 +2051,7 @@ TEST_F(DomainTest, ReadDomainValFromDB_05) { uint32_t max_rep_ct = 1; vector vect_val_ctr_domain_st; - vector domain_id; + vector domain_id; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkctrName1, strlen(pkctrName1)); memset(k.domain_name, '\0', sizeof(k.domain_name)); @@ -1895,13 +2060,16 @@ TEST_F(DomainTest, ReadDomainValFromDB_05) { vector obj_key_struct; Kt_Ctr_Domain KtdomianObj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtdomianObj.ReadDomainValFromDB(db_conn,&k,&v,UNC_DT_CANDIDATE,oper_type, - max_rep_ct,vect_val_ctr_domain_st,domain_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = KtdomianObj.ReadDomainValFromDB( + db_conn, &k, &v, UNC_DT_CANDIDATE, oper_type, + max_rep_ct, + vect_val_ctr_domain_st, domain_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// GetChildClassPointer suceess +// GetChildClassPointer suceess TEST_F(DomainTest, GetChildClassPointer_02) { int KIndex = 0; Kt_Ctr_Domain KtdomianObj; diff --git a/coordinator/test/modules/uppl/utest/Link_ut.cc b/coordinator/test/modules/uppl/utest/Link_ut.cc index a849fcfc..021624f8 100644 --- a/coordinator/test/modules/uppl/utest/Link_ut.cc +++ b/coordinator/test/modules/uppl/utest/Link_ut.cc @@ -35,8 +35,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -51,10 +51,8 @@ #include #include #include -#include #include #include "PhysicalLayerStub.hh" -#include #include #include "ut_util.hh" @@ -65,21 +63,20 @@ using namespace std; using namespace unc::uppl::test; class LinkTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; -// Can be changed based on testing need -static char pkName1_ctr[] = "controller1"; -static char pkName1_switchid1[] = "{0x10,0xbc}"; -static char pkName1_portid1[] = "controller1 port"; -static char pkName1_switchid2[] = "{0x11,0xab}"; -static char pkName1_portid2[] = "controller1 port 4"; -static char pkName4_ctr[] = ""; -static char pkName4_switchid1[] = ""; -static char pkName4_portid1[] = ""; -static char pkName4_switchid2[] = ""; -static char pkName4_portid2[] = ""; +// Can be changed based on testing need +static char pkName1_ctr[] = "controller1"; +static char pkName1_switchid1[] = "{0x10, 0xbc}"; +static char pkName1_portid1[] = "controller1 port"; +static char pkName1_switchid2[] = "{0x11, 0xab}"; +static char pkName1_portid2[] = "controller1 port 4"; +static char pkName4_ctr[] = ""; +static char pkName4_switchid1[] = ""; +static char pkName4_portid1[] = ""; +static char pkName4_switchid2[] = ""; +static char pkName4_portid2[] = ""; static void getKeyForKtLink1(key_link_t& k, std::vector& sw_vect_key_value) { @@ -99,7 +96,6 @@ static void getKeyForKtLink1(key_link_t& k, sw_vect_key_value.push_back(pkName1_portid1); sw_vect_key_value.push_back(pkName1_switchid2); sw_vect_key_value.push_back(pkName1_portid2); - } static void getKeyForKtLink1(key_link_t& k) { @@ -116,14 +112,14 @@ static void getKeyForKtLink1(key_link_t& k) { } static void getValForKtLink1(val_link_st_t& v) { - // uint8_t description[128]; + // uint8_t description[128]; memset(v.link.description, '\0', 128); memcpy(v.link.description, "linkdescription", strlen("linkdescription")); - // uint8_t oper_status - v.oper_status = 0; + // uint8_t oper_status + v.oper_status = 0; - // uint8_t valid[2]; + // uint8_t valid[2]; memset(v.valid, 1, 2); } @@ -143,18 +139,17 @@ static void getKeyForLinkNoKeyNotify(key_link_t& k) { static void getReqHeader(physical_request_header& rh, unc_keytype_operation_t opern, unc_keytype_datatype_t dtype) { - rh.client_sess_id = 1; - rh.config_id = 1; - rh.operation = opern; - rh.max_rep_count = 0; - rh.option1 = 0; - rh.option2 = 0; - rh.data_type = dtype; - rh.key_type = UNC_KT_LINK; + rh.client_sess_id = 1; + rh.config_id = 1; + rh.operation = opern; + rh.max_rep_count = 0; + rh.option1 = 0; + rh.option2 = 0; + rh.data_type = dtype; + rh.key_type = UNC_KT_LINK; } TEST_F(LinkTest, PerformSyntxCheck_01) { - key_link_t k; val_link_st v; memset(&v, 0, sizeof(v)); @@ -162,17 +157,16 @@ TEST_F(LinkTest, PerformSyntxCheck_01) { physical_request_header rh; getKeyForKtLink1(k); getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_CREATE; - - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_CREATE; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Key Empty +// Key Empty TEST_F(LinkTest, PerformSyntxCheck_02) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -181,16 +175,16 @@ TEST_F(LinkTest, PerformSyntxCheck_02) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ_SIBLING_COUNT, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//indfividual Attributes havin mepty values +// indfividual Attributes havin mepty values TEST_F(LinkTest, PerformSyntxCheck_03) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -199,15 +193,15 @@ TEST_F(LinkTest, PerformSyntxCheck_03) { physical_request_header rh; getKeyForLinkNoKeyNotify(k); getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Setting controller name as empty +// Setting controller name as empty TEST_F(LinkTest, PerformSyntxCheck_04) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -218,16 +212,16 @@ TEST_F(LinkTest, PerformSyntxCheck_04) { memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName4_ctr, strlen(pkName4_ctr)); getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Setting switchID1 name as empty +// Setting switchID1 name as empty TEST_F(LinkTest, PerformSyntxCheck_05) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -235,21 +229,21 @@ TEST_F(LinkTest, PerformSyntxCheck_05) { memset(v.link.valid, '\0', sizeof(v.link.valid)); physical_request_header rh; getKeyForKtLink1(k); - + memset(k.switch_id1, '\0', 256); memcpy(k.switch_id1, pkName4_switchid1, strlen(pkName4_switchid1)); getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Setting switchID2 name as empty +// Setting switchID2 name as empty TEST_F(LinkTest, PerformSyntxCheck_06) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -262,16 +256,16 @@ TEST_F(LinkTest, PerformSyntxCheck_06) { memcpy(k.switch_id2, pkName4_switchid2, strlen(pkName4_switchid2)); getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Setting portID1 name as empty +// Setting portID1 name as empty TEST_F(LinkTest, PerformSyntxCheck_07) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -279,21 +273,21 @@ TEST_F(LinkTest, PerformSyntxCheck_07) { memset(v.link.valid, '\0', sizeof(v.link.valid)); physical_request_header rh; getKeyForKtLink1(k); - + memset(k.port_id1, '\0', 32); memcpy(k.port_id1, pkName4_portid1, strlen(pkName4_portid1)); getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Setting portID2 name as empty +// Setting portID2 name as empty TEST_F(LinkTest, PerformSyntxCheck_08) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -306,15 +300,15 @@ TEST_F(LinkTest, PerformSyntxCheck_08) { memcpy(k.port_id2, pkName4_portid2, strlen(pkName4_portid2)); getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Setting description as empty +// Setting description as empty TEST_F(LinkTest, PerformSyntxCheck_09) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -325,23 +319,23 @@ TEST_F(LinkTest, PerformSyntxCheck_09) { memset(v.link.description, '\0', 128); memcpy(v.link.description, "", strlen("")); - // uint8_t description[128]; - // uint8_t oper_status - v.oper_status = 0; - memset(v.valid, 1, 2); // uint8_t + // uint8_t description[128]; + // uint8_t oper_status + v.oper_status = 0; + memset(v.valid, 1, 2); // uint8_t getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - //EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + // EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Setting description length more than 128 +// Setting description length more than 128 TEST_F(LinkTest, PerformSyntxCheck_10) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -349,31 +343,31 @@ TEST_F(LinkTest, PerformSyntxCheck_10) { memset(v.link.valid, '\0', sizeof(v.link.valid)); physical_request_header rh; getKeyForKtLink1(k); - - const char* strdes = "Alter the SV_INTERRUPT property of a signal handler. If interrupt is zero, system calls will be restarted after signal delivery kkkkkkkkkkkkkkkkkkk"; - - // uint8_t description[128]; + + const char* strdes = "Alter the SV_INTERRUPT property of a signal handler. If interrupt is zero, system calls will be restarted after signal delivery kkkkkkkkkkkkkkkkkkk"; + + // uint8_t description[128]; memset(v.link.description, '\0', sizeof(v.link.description)); strncpy(reinterpret_cast(v.link.description), strdes, sizeof(v.link.description)); EXPECT_NE(static_cast('\0'), v.link.description[127]); - // uint8_t oper_status - v.oper_status = 0; - memset(v.valid, 1, 2); // uint8_t + // uint8_t oper_status + v.oper_status = 0; + memset(v.valid, 1, 2); // uint8_t getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Setting oper status as invalid +// Setting oper status as invalid TEST_F(LinkTest, PerformSyntxCheck_11) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; @@ -381,52 +375,54 @@ TEST_F(LinkTest, PerformSyntxCheck_11) { memset(v.link.valid, '\0', sizeof(v.link.valid)); physical_request_header rh; getKeyForKtLink1(k); - - const char* strdes = "link des"; - + + const char* strdes = "link des"; + memset(v.link.description, '\0', 128); - memcpy(v.link.description,strdes , strlen(strdes)); + memcpy(v.link.description, strdes , strlen(strdes)); - v.oper_status = 4; - memset(v.valid, 1, 2); // uint8_t + v.oper_status = 4; + memset(v.valid, 1, 2); // uint8_t getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//key as Empty +// key as Empty TEST_F(LinkTest, Link_IsKeyExists_01) { key_link_t k; Kt_Link ktlinkobj; getKeyForKtLink1(k); - - OdbcmConnectionHandler *db_conn =NULL; + + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } TEST_F(LinkTest, Link_IsKeyExists_FailureIsrowexist02) { - key_link_t k; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(LinkTest, Link_IsKeyExists_SuccessIsrowexist03) { @@ -436,13 +432,14 @@ TEST_F(LinkTest, Link_IsKeyExists_SuccessIsrowexist03) { physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, Link_IsKeyExists_FailConnectionErr04) { @@ -455,50 +452,53 @@ TEST_F(LinkTest, Link_IsKeyExists_FailConnectionErr04) { physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - getKeyForKtLink1(k,sw_vect_key_value); + OdbcmConnectionHandler *db_conn = NULL; + getKeyForKtLink1(k, sw_vect_key_value); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, PerformSemanticValidation_InstanceExist_create05) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_CREATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_CREATE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } TEST_F(LinkTest, PerformSemanticValidation_ConnectionErr_create06) { - key_link_t k; val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_CREATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_CREATE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_update07) { @@ -506,15 +506,17 @@ TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_update07) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_UPDATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_UPDATE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(LinkTest, PerformSemanticValidation_ConnectionErr_update08) { @@ -522,15 +524,17 @@ TEST_F(LinkTest, PerformSemanticValidation_ConnectionErr_update08) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_UPDATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_UPDATE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_delete09) { @@ -538,15 +542,17 @@ TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_delete09) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_DELETE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_DELETE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(LinkTest, PerformSemanticValidation_ConnectionErr_delete10) { @@ -554,15 +560,17 @@ TEST_F(LinkTest, PerformSemanticValidation_ConnectionErr_delete10) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_DELETE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_DELETE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_read11) { @@ -570,15 +578,17 @@ TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_read11) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_READ; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_READ; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(LinkTest, PerformSemanticValidation_ConnectionErr_Read12) { @@ -586,15 +596,17 @@ TEST_F(LinkTest, PerformSemanticValidation_ConnectionErr_Read12) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_READ; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_READ; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_create13) { @@ -602,16 +614,18 @@ TEST_F(LinkTest, PerformSemanticValidation_InstanceNOtExist_create13) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_CREATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_CREATE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } TEST_F(LinkTest, LinkDeleteKeyInstance_UnsupportedForSTARTUP_14) { @@ -620,9 +634,10 @@ TEST_F(LinkTest, LinkDeleteKeyInstance_UnsupportedForSTARTUP_14) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STARTUP, UNC_KT_LINK); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STARTUP, UNC_KT_LINK); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } TEST_F(LinkTest, LinkDeleteKeyInstance_UnsupportedForSTARTUP_15) { @@ -631,9 +646,10 @@ TEST_F(LinkTest, LinkDeleteKeyInstance_UnsupportedForSTARTUP_15) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_CANDIDATE, UNC_KT_LINK); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_CANDIDATE, UNC_KT_LINK); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } TEST_F(LinkTest, LinkDeleteKeyInstance_UnsupportedForSTARTUP_16) { @@ -642,32 +658,36 @@ TEST_F(LinkTest, LinkDeleteKeyInstance_UnsupportedForSTARTUP_16) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_RUNNING, UNC_KT_LINK); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_RUNNING, UNC_KT_LINK); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -TEST_F(LinkTest, LinkDeleteKeyInstance_Support_17) { +TEST_F(LinkTest, LinkDeleteKeyInstance_Support_17) { key_link_t k; memset(&k, 0, sizeof(key_link_t)); Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -TEST_F(LinkTest, DeleteKeyInstance_Support_18) { +TEST_F(LinkTest, DeleteKeyInstance_Support_18) { key_link_t k; memset(&k, 0, sizeof(key_link_t)); Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, DeleteKeyInstance_Support_19) { @@ -676,22 +696,26 @@ TEST_F(LinkTest, DeleteKeyInstance_Support_19) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LinkTest, LinkDeleteKeyInstance_Support_20) { +TEST_F(LinkTest, LinkDeleteKeyInstance_Support_20) { key_link_t k; memset(&k, 0, sizeof(key_link_t)); Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LINK); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkPerformRead_incorrectoption1_21) { @@ -702,8 +726,8 @@ TEST_F(LinkTest, LinkPerformRead_incorrectoption1_21) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); - rh.key_type = UNC_KT_LINK; - OdbcmConnectionHandler *db_conn =NULL; + rh.key_type = UNC_KT_LINK; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -715,8 +739,11 @@ TEST_F(LinkTest, LinkPerformRead_incorrectoption1_21) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LINK); - int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(LinkTest, LinkPerformRead_incorrectDT_22) { @@ -727,8 +754,8 @@ TEST_F(LinkTest, LinkPerformRead_incorrectDT_22) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_CANDIDATE); - rh.key_type = UNC_KT_LINK; - OdbcmConnectionHandler *db_conn =NULL; + rh.key_type = UNC_KT_LINK; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -739,8 +766,11 @@ TEST_F(LinkTest, LinkPerformRead_incorrectDT_22) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LINK); -int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); +int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, (uint32_t)UNC_OPT2_L2DOMAIN, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(LinkTest, LinkPerformRead_incorrectoption2_23) { key_link_t k; @@ -750,8 +780,8 @@ TEST_F(LinkTest, LinkPerformRead_incorrectoption2_23) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); - rh.key_type = UNC_KT_LINK; - OdbcmConnectionHandler *db_conn =NULL; + rh.key_type = UNC_KT_LINK; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -762,8 +792,11 @@ TEST_F(LinkTest, LinkPerformRead_incorrectoption2_23) { sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LINK); -int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); +int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_NORMAL, (uint32_t)UNC_OPT2_L2DOMAIN, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(LinkTest, LinkSetOperStatus_24) { @@ -775,11 +808,13 @@ TEST_F(LinkTest, LinkSetOperStatus_24) { physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplLinkOperStatus)1); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplLinkOperStatus)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(LinkTest, LinkSetOperStatus_25) { @@ -791,10 +826,12 @@ TEST_F(LinkTest, LinkSetOperStatus_25) { physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplLinkOperStatus)0); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = + ktlinkobj.SetOperStatus(db_conn, UNC_DT_STATE, &k, (UpplLinkOperStatus)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(LinkTest, LinkSetOperStatus_26) { @@ -806,11 +843,14 @@ TEST_F(LinkTest, LinkSetOperStatus_26) { physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplLinkOperStatus)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = + ktlinkobj.SetOperStatus(db_conn, UNC_DT_STATE, &k, (UpplLinkOperStatus)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkSetOperStatus_27) { @@ -823,11 +863,14 @@ TEST_F(LinkTest, LinkSetOperStatus_27) { physical_request_header rh; getKeyForKtLink1(k); getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplLinkOperStatus)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = + ktlinkobj.SetOperStatus(db_conn, UNC_DT_STATE, &k, (UpplLinkOperStatus)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkSetOperStatus_28) { @@ -840,11 +883,14 @@ TEST_F(LinkTest, LinkSetOperStatus_28) { physical_request_header rh; getKeyForKtLink1(k); getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplLinkOperStatus)2); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.SetOperStatus(db_conn, + UNC_DT_STATE, &k, (UpplLinkOperStatus)2); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkReadBulk_Opnt_allow_29) { @@ -854,31 +900,35 @@ TEST_F(LinkTest, LinkReadBulk_Opnt_allow_29) { memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint32_t max_rep_ct=1; - int child_index=0; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; - ReadRequest *read_req = NULL; - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + uint32_t max_rep_ct = 1; + int child_index = 0; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_CANDIDATE, + max_rep_ct, child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } TEST_F(LinkTest, LinkReadBulk_Success_30) { - key_link_t k; + key_link_t k; val_link_st v; memset(&k, 0, sizeof(key_link_t)); memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint32_t max_rep_ct=0; - int child_index=-1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; - ReadRequest *read_req = NULL; - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t max_rep_ct = 0; + int child_index = -1; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, + max_rep_ct, child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkReadBulk_MaxCntSuccess_31) { @@ -888,14 +938,16 @@ TEST_F(LinkTest, LinkReadBulk_MaxCntSuccess_31) { memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint32_t max_rep_ct=0; - int child_index=-1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; - ReadRequest *read_req = NULL; - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t max_rep_ct = 0; + int child_index = -1; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, + max_rep_ct, child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } @@ -906,15 +958,18 @@ TEST_F(LinkTest, LinkReadBulk_DBFail_32) { memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint32_t max_rep_ct=0; - int child_index=-1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; - ReadRequest *read_req = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t max_rep_ct = 0; + int child_index = -1; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, + max_rep_ct, child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkReadBulk_DBSuccess) { @@ -924,15 +979,18 @@ TEST_F(LinkTest, LinkReadBulk_DBSuccess) { memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint32_t max_rep_ct=0; - int child_index=-1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; - ReadRequest *read_req = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t max_rep_ct = 0; + int child_index = -1; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkReadBulkInternal_Success_33) { @@ -942,13 +1000,15 @@ TEST_F(LinkTest, LinkReadBulkInternal_Success_33) { memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint32_t max_rep_ct=0; - OdbcmConnectionHandler *db_conn = NULL; + uint32_t max_rep_ct = 0; + OdbcmConnectionHandler *db_conn = NULL; vector vec_val_link; vector vec_key_link_t; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vec_val_link, vec_key_link_t); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vec_val_link, vec_key_link_t); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, LinkReadBulkInternal_Success_34) { @@ -958,16 +1018,18 @@ TEST_F(LinkTest, LinkReadBulkInternal_Success_34) { memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint32_t max_rep_ct=0; - OdbcmConnectionHandler *db_conn = NULL; + uint32_t max_rep_ct = 0; + OdbcmConnectionHandler *db_conn = NULL; getKeyForKtLink1(k); - + vector vec_val_link; vector vec_key_link_t; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktlinkobj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vec_val_link, vec_key_link_t); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = ktlinkobj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vec_val_link, vec_key_link_t); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(LinkTest, HandleOperStatus_KeyStruct_NULL_Handdle) { @@ -979,10 +1041,11 @@ TEST_F(LinkTest, HandleOperStatus_KeyStruct_NULL_Handdle) { getKeyForKtLink1(k); - OdbcmConnectionHandler *db_conn =NULL; -// unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; +// unc::uppl::ODBCManager::stub_setResultcode( +// unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } @@ -995,10 +1058,11 @@ TEST_F(LinkTest, GetLinkValidFlag_ConnError) { getKeyForKtLink1(k); - OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.GetLinkValidFlag(db_conn, &k, v, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.GetLinkValidFlag(db_conn, &k, v, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, GetLinkValidFlag_DBGetErr) { @@ -1010,10 +1074,11 @@ TEST_F(LinkTest, GetLinkValidFlag_DBGetErr) { getKeyForKtLink1(k); - OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_DATA_ERROR); - int ret = ktlinkobj.GetLinkValidFlag(db_conn, &k, v, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_DATA_ERROR); + int ret = ktlinkobj.GetLinkValidFlag(db_conn, &k, v, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(LinkTest, GetLinkValidFlag_Success) { @@ -1025,10 +1090,11 @@ TEST_F(LinkTest, GetLinkValidFlag_Success) { getKeyForKtLink1(k); - OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetLinkValidFlag(db_conn, &k, v, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetLinkValidFlag(db_conn, &k, v, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkGetOperStatus_DBErr) { @@ -1037,12 +1103,14 @@ TEST_F(LinkTest, LinkGetOperStatus_DBErr) { memset(&k, 0, sizeof(key_link_t)); memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint8_t operstat = 0; + uint8_t operstat = 0; - OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlinkobj.GetOperStatus(db_conn,(uint32_t)UNC_DT_STATE,&k,operstat); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlinkobj.GetOperStatus(db_conn, + (uint32_t)UNC_DT_STATE, &k, operstat); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(LinkTest, LinkGetOperStatus_success) { @@ -1051,12 +1119,14 @@ TEST_F(LinkTest, LinkGetOperStatus_success) { memset(&k, 0, sizeof(key_link_t)); memset(&v, 0, sizeof(val_link_st)); Kt_Link ktlinkobj; - uint8_t operstat = 0; + uint8_t operstat = 0; - OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetOperStatus(db_conn,(uint32_t)UNC_DT_STATE,&k,operstat); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetOperStatus(db_conn, + (uint32_t)UNC_DT_STATE, &k, operstat); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkReadInternal_Create) { @@ -1067,10 +1137,12 @@ TEST_F(LinkTest, LinkReadInternal_Create) { veckey_link.push_back(&k); Kt_Link ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.ReadInternal(db_conn,veckey_link,vecVal_link,UNC_DT_STATE,UNC_OP_CREATE); - //int ret = ktlinkobj.ReadInternal(db_conn,veckey_link,vecVal_link,UNC_DT_STATE,UNC_OP_READ); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.ReadInternal( + db_conn, veckey_link, vecVal_link, UNC_DT_STATE, UNC_OP_CREATE); + // int ret = ktlinkobj.ReadInternal( + // db_conn, veckey_link, vecVal_link, UNC_DT_STATE, UNC_OP_READ); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, LinkReadInternal_Read) { @@ -1081,9 +1153,10 @@ TEST_F(LinkTest, LinkReadInternal_Read) { veckey_link.push_back(&k); Kt_Link ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.ReadInternal(db_conn,veckey_link,vecVal_link,UNC_DT_STATE,UNC_OP_READ); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.ReadInternal( + db_conn, veckey_link, vecVal_link, UNC_DT_STATE, UNC_OP_READ); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(LinkTest, LinkReadInternal_Val_empty) { @@ -1096,9 +1169,10 @@ TEST_F(LinkTest, LinkReadInternal_Val_empty) { Kt_Link ktlinkobj; vecVal_link.clear(); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.ReadInternal(db_conn,veckey_link,vecVal_link,UNC_DT_STATE,UNC_OP_READ); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.ReadInternal( + db_conn, veckey_link, vecVal_link, UNC_DT_STATE, UNC_OP_READ); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(LinkTest, LinkReadInternal_Val_nonempty) { @@ -1114,9 +1188,10 @@ TEST_F(LinkTest, LinkReadInternal_Val_nonempty) { vecVal_link.push_back(&v); getValForKtLink1(v); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.ReadInternal(db_conn,veckey_link,veckey_link,UNC_DT_STATE,UNC_OP_READ); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.ReadInternal( + db_conn, veckey_link, veckey_link, UNC_DT_STATE, UNC_OP_READ); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(LinkTest, PerformSemanticValidation_Import) { @@ -1124,41 +1199,44 @@ TEST_F(LinkTest, PerformSemanticValidation_Import) { val_link_st v; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_CREATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_IMPORT); - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_CREATE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_IMPORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } TEST_F(LinkTest, ReadLinkValFromDB_Success) { key_link_t k; void *key_struct(NULL); - void *void_val_struct = NULL; - + void *void_val_struct = NULL; + Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); vector vect_val_link_st; vector vect_link_id; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t data_type = (uint32_t)UNC_DT_IMPORT; - uint32_t operation_type = (uint32_t) UNC_OP_CREATE; - uint32_t max_rep_ct = 1; - uint32_t option = 0; + uint32_t data_type = (uint32_t)UNC_DT_IMPORT; + uint32_t operation_type = (uint32_t) UNC_OP_CREATE; + uint32_t max_rep_ct = 1; + uint32_t option = 0; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - UpplReturnCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, key_struct, + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + UncRespCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, key_struct, void_val_struct, data_type, operation_type, @@ -1167,13 +1245,13 @@ TEST_F(LinkTest, ReadLinkValFromDB_Success) { vect_link_id, option, option); - EXPECT_EQ(UPPL_RC_SUCCESS, read_status); + EXPECT_EQ(UNC_RC_SUCCESS, read_status); } TEST_F(LinkTest, ReadLinkValFromDB_Success_Read) { key_link_t k; - void *void_val_struct = NULL; - + void *void_val_struct = NULL; + Kt_Link ktlinkobj; vector sw_vect_key_value; getKeyForKtLink1(k, sw_vect_key_value); @@ -1183,14 +1261,15 @@ TEST_F(LinkTest, ReadLinkValFromDB_Success_Read) { physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t data_type = (uint32_t)UNC_DT_IMPORT; - uint32_t operation_type = (uint32_t) UNC_OP_READ; - uint32_t max_rep_ct = 1; - uint32_t option = 0; + uint32_t data_type = (uint32_t)UNC_DT_IMPORT; + uint32_t operation_type = (uint32_t) UNC_OP_READ; + uint32_t max_rep_ct = 1; + uint32_t option = 0; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - UpplReturnCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, &k, + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + UncRespCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, &k, void_val_struct, data_type, operation_type, @@ -1199,30 +1278,31 @@ TEST_F(LinkTest, ReadLinkValFromDB_Success_Read) { vect_link_id, option, option); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, read_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, read_status); } TEST_F(LinkTest, ReadLinkValFromDB_Success_option1_sibling) { key_link_t k; - void *void_val_struct = NULL; - + void *void_val_struct = NULL; + Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); vector vect_val_link_st; vector vect_link_id; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t data_type = (uint32_t)UNC_DT_IMPORT; - uint32_t operation_type = (uint32_t) UNC_OP_READ_SIBLING_BEGIN; - uint32_t max_rep_ct = 1; - uint32_t option = 0; + uint32_t data_type = (uint32_t)UNC_DT_IMPORT; + uint32_t operation_type = (uint32_t) UNC_OP_READ_SIBLING_BEGIN; + uint32_t max_rep_ct = 1; + uint32_t option = 0; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - UpplReturnCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, &k, + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + UncRespCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, &k, void_val_struct, data_type, operation_type, @@ -1231,7 +1311,7 @@ TEST_F(LinkTest, ReadLinkValFromDB_Success_option1_sibling) { vect_link_id, option, option); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, read_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, read_status); } TEST_F(LinkTest, HandleOperStatus_Success) { @@ -1243,10 +1323,11 @@ TEST_F(LinkTest, HandleOperStatus_Success) { getKeyForKtLink1(k); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, ReadBulk_ADDTOBUFFER_maxrepCT0) { @@ -1258,17 +1339,19 @@ TEST_F(LinkTest, ReadBulk_ADDTOBUFFER_maxrepCT0) { getKeyForKtLink1(k); - uint32_t max_rep_ct = 0; - int child_index = 1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; + uint32_t max_rep_ct = 0; + int child_index = 1; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, - child_index, parent_call, is_read_next, + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, ReadBulk_ADDTOBUFFER_maxrepCT1) { @@ -1280,17 +1363,19 @@ TEST_F(LinkTest, ReadBulk_ADDTOBUFFER_maxrepCT1) { getKeyForKtLink1(k); - uint32_t max_rep_ct = 1; - int child_index = 1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; + uint32_t max_rep_ct = 1; + int child_index = 1; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, - child_index, parent_call, is_read_next, + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, ReadBulk_readreq) { @@ -1302,17 +1387,19 @@ TEST_F(LinkTest, ReadBulk_readreq) { getKeyForKtLink1(k); - uint32_t max_rep_ct = 1; - int child_index = 1; - pfc_bool_t parent_call=false; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; + uint32_t max_rep_ct = 1; + int child_index = 1; + pfc_bool_t parent_call = false; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, - child_index, parent_call, is_read_next, + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(LinkTest, ReadBulk_DBErr) { @@ -1324,17 +1411,19 @@ TEST_F(LinkTest, ReadBulk_DBErr) { getKeyForKtLink1(k); - uint32_t max_rep_ct = 1; - int child_index = 1; - pfc_bool_t parent_call=false; - pfc_bool_t is_read_next=true; - OdbcmConnectionHandler *db_conn = NULL; + uint32_t max_rep_ct = 1; + int child_index = 1; + pfc_bool_t parent_call = false; + pfc_bool_t is_read_next = true; + OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, - child_index, parent_call, is_read_next, + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.ReadBulk( + db_conn, &k, UNC_DT_STATE, max_rep_ct, + child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(LinkTest, ReadBulkInternal_RecordNotFound) { @@ -1345,15 +1434,17 @@ TEST_F(LinkTest, ReadBulkInternal_RecordNotFound) { Kt_Link ktlinkobj; getKeyForKtLink1(k); - uint32_t max_rep_ct=1; - OdbcmConnectionHandler *db_conn = NULL; + uint32_t max_rep_ct = 1; + OdbcmConnectionHandler *db_conn = NULL; vector vect_val_link_st; vector vect_link_key; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktlinkobj.ReadBulkInternal(db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_link_st, vect_link_key); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = ktlinkobj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_val_link_st, vect_link_key); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(LinkTest, LinkPerformRead_DBErr) { @@ -1364,8 +1455,8 @@ TEST_F(LinkTest, LinkPerformRead_DBErr) { Kt_Link ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); - rh.key_type = UNC_KT_LINK; - OdbcmConnectionHandler *db_conn =NULL; + rh.key_type = UNC_KT_LINK; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1377,35 +1468,40 @@ TEST_F(LinkTest, LinkPerformRead_DBErr) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LINK); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(LinkTest, ReadLinkValFromDB_Success_Update) { key_link_t k; void *key_struct(NULL); - void *void_val_struct = NULL; - + void *void_val_struct = NULL; + Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); vector vect_val_link_st; vector vect_link_id; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t data_type = (uint32_t)UNC_DT_IMPORT; - uint32_t operation_type = (uint32_t) UNC_OP_UPDATE; - uint32_t max_rep_ct = 1; - uint32_t option = 0; + uint32_t data_type = (uint32_t)UNC_DT_IMPORT; + uint32_t operation_type = (uint32_t) UNC_OP_UPDATE; + uint32_t max_rep_ct = 1; + uint32_t option = 0; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - UpplReturnCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, key_struct, + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + UncRespCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, key_struct, void_val_struct, data_type, operation_type, @@ -1414,7 +1510,7 @@ TEST_F(LinkTest, ReadLinkValFromDB_Success_Update) { vect_link_id, option, option); - EXPECT_EQ(UPPL_RC_SUCCESS, read_status); + EXPECT_EQ(UNC_RC_SUCCESS, read_status); } #if 0 @@ -1424,29 +1520,30 @@ TEST_F(LinkTest, ReadLinkValFromDB_Success_option1_sibling) { val_link_st v; void *key_struct; - void *void_val_struct = NULL; - - pfc_bool_t bflag =true; + void *void_val_struct = NULL; + + pfc_bool_t bflag = true; Kt_Link ktlinkobj; vector sw_vect_key_value; - getKeyForKtLink1(k,sw_vect_key_value); + getKeyForKtLink1(k, sw_vect_key_value); vector vect_val_link_st; vector vect_link_id; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - uint32_t data_type = (uint32_t)UNC_DT_IMPORT; - uint32_t operation_type = (uint32_t) UNC_OP_READ_SIBLING_BEGIN; - uint32_t max_rep_ct = 1; - uint32_t option = (uint32_t)UNC_OPT1_NORMAL; - uint32_t option2 = (uint32_t)UNC_OPT2_MATCH_SWITCH2; - - OdbcmConnectionHandler *db_conn =NULL; - uint32_t operation = UNC_OP_CREATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - UpplReturnCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, key_struct, + uint32_t data_type = (uint32_t)UNC_DT_IMPORT; + uint32_t operation_type = (uint32_t) UNC_OP_READ_SIBLING_BEGIN; + uint32_t max_rep_ct = 1; + uint32_t option = (uint32_t)UNC_OPT1_NORMAL; + uint32_t option2 = (uint32_t)UNC_OPT2_MATCH_SWITCH2; + + OdbcmConnectionHandler *db_conn = NULL; + uint32_t operation = UNC_OP_CREATE; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + UncRespCode read_status = ktlinkobj.ReadLinkValFromDB(db_conn, key_struct, void_val_struct, data_type, operation_type, @@ -1455,7 +1552,7 @@ TEST_F(LinkTest, ReadLinkValFromDB_Success_option1_sibling) { vect_link_id, option, option2); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, read_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, read_status); } #endif diff --git a/coordinator/test/modules/uppl/utest/LogicalMemberPort_ut.cc b/coordinator/test/modules/uppl/utest/LogicalMemberPort_ut.cc index e2c25321..02a690ec 100644 --- a/coordinator/test/modules/uppl/utest/LogicalMemberPort_ut.cc +++ b/coordinator/test/modules/uppl/utest/LogicalMemberPort_ut.cc @@ -1,6 +1,6 @@ /* - * Copyright (c) 2012-2013 NEC Corporation - * * All rights reserved. + * Copyright (c) 2012-2014 NEC Corporation + * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this @@ -35,7 +35,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -51,8 +52,6 @@ #include #include #include "PhysicalLayerStub.hh" -#include -#include #include "ut_util.hh" using namespace pfc; @@ -62,18 +61,17 @@ using namespace std; using namespace unc::uppl::test; class LogicalMemberPortTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; static void getKeyForKtLogicalMemberPort1(key_logical_member_port_t& k) { memset(k.switch_id, '\0', 256); - memcpy(k.switch_id, "{0x10,0xbc}", strlen("{0x10,0xbc}")); + memcpy(k.switch_id, "{0x10, 0xbc}", strlen("{0x10, 0xbc}")); memset(k.physical_port_id, '\0', 32); memcpy(k.physical_port_id, "controller1 pord id:1", strlen("controller1 pord id:1")); memset(k.logical_port_key.port_id, '\0', 320); - memcpy(k.logical_port_key.port_id, "{0x00,0xa}", strlen("{0x00,0xa}")); + memcpy(k.logical_port_key.port_id, "{0x00, 0xa}", strlen("{0x00, 0xa}")); memset(k.logical_port_key.domain_key.domain_name, '\0', 32); memcpy(k.logical_port_key.domain_key.domain_name, "controller1 domain_name", strlen("controller1 domain_name")); @@ -84,12 +82,12 @@ static void getKeyForKtLogicalMemberPort1(key_logical_member_port_t& k) { static void getKeyForKtLogicalMemberPort2(key_logical_member_port_t& k) { memset(k.switch_id, '\0', 256); - memcpy(k.switch_id, "{0x11,0xac}", strlen("{0x11,0xac}")); + memcpy(k.switch_id, "{0x11, 0xac}", strlen("{0x11, 0xac}")); memset(k.physical_port_id, '\0', 32); memcpy(k.physical_port_id, "controller3 pord id:1", strlen("controller3 pord id:1")); memset(k.logical_port_key.port_id, '\0', 291); - memcpy(k.logical_port_key.port_id, "{0xab,0xc}", strlen("{0xab,0xc}")); + memcpy(k.logical_port_key.port_id, "{0xab, 0xc}", strlen("{0xab, 0xc}")); memset(k.logical_port_key.domain_key.domain_name, '\0', 32); memcpy(k.logical_port_key.domain_key.domain_name, "controller3_domain_name" , strlen("controller3_domain_name")); @@ -98,7 +96,8 @@ static void getKeyForKtLogicalMemberPort2(key_logical_member_port_t& k) { strlen("controller3")); } -TEST_F(LogicalMemberPortTest, IsKeyExists_01) { +TEST_F(LogicalMemberPortTest, + IsKeyExists_01) { string controller_name = "Controller1"; string domain_name = "Domain1"; string port_id = "log_port1"; @@ -112,12 +111,14 @@ TEST_F(LogicalMemberPortTest, IsKeyExists_01) { key_values.push_back(physical_port_id); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = lmp_obj.IsKeyExists(db_conn,UNC_DT_STATE,key_values); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = lmp_obj.IsKeyExists(db_conn, UNC_DT_STATE, key_values); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalMemberPortTest, IsKeyExists_02) { +TEST_F(LogicalMemberPortTest, + IsKeyExists_02) { string controller_name = "Controller1"; string domain_name = "Domain1"; string port_id = "log_port1"; @@ -131,12 +132,14 @@ TEST_F(LogicalMemberPortTest, IsKeyExists_02) { key_values.push_back(physical_port_id); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = lmp_obj.IsKeyExists(db_conn,UNC_DT_STATE,key_values); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = lmp_obj.IsKeyExists(db_conn, UNC_DT_STATE, key_values); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -TEST_F(LogicalMemberPortTest, IsKeyExists_03) { +TEST_F(LogicalMemberPortTest, + IsKeyExists_03) { string controller_name = "Controller1"; string domain_name = "Domain1"; string port_id = "log_port1"; @@ -150,23 +153,27 @@ TEST_F(LogicalMemberPortTest, IsKeyExists_03) { key_values.push_back(physical_port_id); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - int ret = lmp_obj.IsKeyExists(db_conn,UNC_DT_STATE,key_values); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + int ret = lmp_obj.IsKeyExists(db_conn, UNC_DT_STATE, key_values); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalMemberPortTest, IsKeyExists_04) { +TEST_F(LogicalMemberPortTest, + IsKeyExists_04) { vector key_values; key_values.clear(); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - int ret = lmp_obj.IsKeyExists(db_conn,UNC_DT_STATE,key_values); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + int ret = lmp_obj.IsKeyExists(db_conn, UNC_DT_STATE, key_values); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -// PerformSyntaxValidation with value structure -TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_01) { +// PerformSyntaxValidation with value structure +TEST_F(LogicalMemberPortTest, + PerformSyntaxValidation_01) { key_logical_member_port k; getKeyForKtLogicalMemberPort2(k); key_logical_member_port val; @@ -174,24 +181,28 @@ TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_01) { uint32_t operation = UNC_OP_READ; Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - int ret = lmp_obj.PerformSyntaxValidation(db_conn,&k,&val,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = lmp_obj.PerformSyntaxValidation( + db_conn, &k, &val, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation success -TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_02) { +// PerformSyntaxValidation success +TEST_F(LogicalMemberPortTest, + PerformSyntaxValidation_02) { key_logical_member_port k; getKeyForKtLogicalMemberPort2(k); void* val = NULL; uint32_t operation = UNC_OP_READ; Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - int ret = lmp_obj.PerformSyntaxValidation(db_conn,&k,val,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = lmp_obj.PerformSyntaxValidation( + db_conn, &k, val, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// PerformSyntaxValidation without switch id -TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_03) { +// PerformSyntaxValidation without switch id +TEST_F(LogicalMemberPortTest, + PerformSyntaxValidation_03) { key_logical_member_port k; memset(k.switch_id, '\0', 256); memset(k.physical_port_id, '\0', 32); @@ -208,11 +219,13 @@ TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_03) { uint32_t operation = UNC_OP_READ; Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - int ret = lmp_obj.PerformSyntaxValidation(db_conn,&k,val,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = lmp_obj.PerformSyntaxValidation( + db_conn, &k, val, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without physical port id -TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_04) { +// PerformSyntaxValidation without physical port id +TEST_F(LogicalMemberPortTest, + PerformSyntaxValidation_04) { key_logical_member_port k; memset(k.switch_id, '\0', 256); memcpy(k.switch_id, "switch1", strlen("switch1")); @@ -229,11 +242,13 @@ TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_04) { uint32_t operation = UNC_OP_READ; Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - int ret = lmp_obj.PerformSyntaxValidation(db_conn,&k,val,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = lmp_obj.PerformSyntaxValidation( + db_conn, &k, val, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without logical_port_id -TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_05) { +// PerformSyntaxValidation without logical_port_id +TEST_F(LogicalMemberPortTest, + PerformSyntaxValidation_05) { key_logical_member_port k; memset(k.switch_id, '\0', 256); memcpy(k.switch_id, "switch1", strlen("switch1")); @@ -250,11 +265,13 @@ TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_05) { uint32_t operation = UNC_OP_READ; Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - int ret = lmp_obj.PerformSyntaxValidation(db_conn,&k,val,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = lmp_obj.PerformSyntaxValidation( + db_conn, &k, val, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without domain name -TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_06) { +// PerformSyntaxValidation without domain name +TEST_F(LogicalMemberPortTest, + PerformSyntaxValidation_06) { key_logical_member_port k; memset(k.switch_id, '\0', 256); memcpy(k.switch_id, "switch1", strlen("switch1")); @@ -270,11 +287,13 @@ TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_06) { uint32_t operation = UNC_OP_READ; Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - int ret = lmp_obj.PerformSyntaxValidation(db_conn,&k,val,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = lmp_obj.PerformSyntaxValidation( + db_conn, &k, val, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// PerformSyntaxValidation without controller name -TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_07) { +// PerformSyntaxValidation without controller name +TEST_F(LogicalMemberPortTest, + PerformSyntaxValidation_07) { key_logical_member_port k; memset(k.switch_id, '\0', 256); memcpy(k.switch_id, "switch1", strlen("switch1")); @@ -290,68 +309,80 @@ TEST_F(LogicalMemberPortTest, PerformSyntaxValidation_07) { uint32_t operation = UNC_OP_READ; Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - int ret = lmp_obj.PerformSyntaxValidation(db_conn,&k,val,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = lmp_obj.PerformSyntaxValidation( + db_conn, &k, val, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -// DeleteKeyInstance success -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_01) { +// DeleteKeyInstance success +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_01) { key_logical_member_port k; uint32_t key_type = 1; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_02) { +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_02) { key_logical_member_port k; uint32_t key_type = 1; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_03) { +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_03) { key_logical_member_port k; uint32_t key_type = 1; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_04) { +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_04) { key_logical_member_port k; uint32_t key_type = 1; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_05) { +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_05) { key_logical_member_port k; uint32_t key_type = 1; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_CANDIDATE,key_type); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_CANDIDATE, key_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -// DeleteKeyInstance without switch id -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_06) { +// DeleteKeyInstance without switch id +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_06) { key_logical_member_port k; uint32_t key_type = 1; memset(k.switch_id, '\0', 256); @@ -367,12 +398,14 @@ TEST_F(LogicalMemberPortTest, DeleteKeyInstance_06) { strlen("controller4")); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteKeyInstance without physical port id -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_07) { +// DeleteKeyInstance without physical port id +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_07) { key_logical_member_port k; uint32_t key_type = 1; memset(k.switch_id, '\0', 256); @@ -388,12 +421,14 @@ TEST_F(LogicalMemberPortTest, DeleteKeyInstance_07) { strlen("controller4")); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteKeyInstance without logical_port_id -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_08) { +// DeleteKeyInstance without logical_port_id +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_08) { key_logical_member_port k; uint32_t key_type = 1; memset(k.switch_id, '\0', 256); @@ -409,12 +444,14 @@ TEST_F(LogicalMemberPortTest, DeleteKeyInstance_08) { strlen("controller4")); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteKeyInstance without domain name -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_09) { +// DeleteKeyInstance without domain name +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_09) { key_logical_member_port k; uint32_t key_type = 1; memset(k.switch_id, '\0', 256); @@ -429,12 +466,14 @@ TEST_F(LogicalMemberPortTest, DeleteKeyInstance_09) { strlen("controller4")); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// DeleteKeyInstance without controller name -TEST_F(LogicalMemberPortTest, DeleteKeyInstance_10) { +// DeleteKeyInstance without controller name +TEST_F(LogicalMemberPortTest, + DeleteKeyInstance_10) { key_logical_member_port k; uint32_t key_type = 1; memset(k.switch_id, '\0', 256); @@ -449,86 +488,106 @@ TEST_F(LogicalMemberPortTest, DeleteKeyInstance_10) { memset(k.logical_port_key.domain_key.ctr_key.controller_name, '\0', 32); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = lmp_obj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,key_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = lmp_obj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, key_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -// ReadBulkInternal success -TEST_F(LogicalMemberPortTest, ReadBulkInternal_01) { +// ReadBulkInternal success +TEST_F(LogicalMemberPortTest, + ReadBulkInternal_01) { key_logical_member_port k; uint32_t max_rep_ct = 2; vector vect_logical_mem_port; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = lmp_obj.ReadBulkInternal(db_conn,&k,UNC_DT_STATE,max_rep_ct,vect_logical_mem_port); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = lmp_obj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_logical_mem_port); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalMemberPortTest, ReadBulkInternal_02) { +TEST_F(LogicalMemberPortTest, + ReadBulkInternal_02) { key_logical_member_port k; uint32_t max_rep_ct = 2; vector vect_logical_mem_port; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = lmp_obj.ReadBulkInternal(db_conn,&k,UNC_DT_STATE,max_rep_ct,vect_logical_mem_port); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = lmp_obj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_logical_mem_port); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalMemberPortTest, ReadBulkInternal_03) { +TEST_F(LogicalMemberPortTest, + ReadBulkInternal_03) { key_logical_member_port k; uint32_t max_rep_ct = 2; vector vect_logical_mem_port; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = lmp_obj.ReadBulkInternal(db_conn,&k,UNC_DT_STATE,max_rep_ct,vect_logical_mem_port); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = lmp_obj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_logical_mem_port); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalMemberPortTest, ReadBulkInternal_04) { +TEST_F(LogicalMemberPortTest, + ReadBulkInternal_04) { key_logical_member_port k; uint32_t max_rep_ct = 2; vector vect_logical_mem_port; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = lmp_obj.ReadBulkInternal(db_conn,&k,UNC_DT_STATE,max_rep_ct,vect_logical_mem_port); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = lmp_obj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_logical_mem_port); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -TEST_F(LogicalMemberPortTest, ReadBulkInternal_05) { +TEST_F(LogicalMemberPortTest, + ReadBulkInternal_05) { key_logical_member_port k; uint32_t max_rep_ct = 0; vector vect_logical_mem_port; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = lmp_obj.ReadBulkInternal(db_conn,&k,UNC_DT_STATE,max_rep_ct,vect_logical_mem_port); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = lmp_obj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_logical_mem_port); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalMemberPortTest, ReadBulkInternal_06) { +TEST_F(LogicalMemberPortTest, + ReadBulkInternal_06) { key_logical_member_port k; uint32_t max_rep_ct = 2; vector vect_logical_mem_port; getKeyForKtLogicalMemberPort1(k); Kt_LogicalMemberPort lmp_obj; OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = lmp_obj.ReadBulkInternal(db_conn,&k,UNC_DT_STATE,max_rep_ct,vect_logical_mem_port); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = lmp_obj.ReadBulkInternal( + db_conn, &k, UNC_DT_STATE, max_rep_ct, vect_logical_mem_port); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /*ReadInternal function when operation is lessthan READ */ -TEST_F(LogicalMemberPortTest, ReadInternal_No_Read_01) { +TEST_F(LogicalMemberPortTest, + ReadInternal_No_Read_01) { key_logical_member_port_t k; memset(&k, 0, sizeof(k)); @@ -537,12 +596,14 @@ TEST_F(LogicalMemberPortTest, ReadInternal_No_Read_01) { vectkey_logicalmemberport.push_back(&k); Kt_LogicalMemberPort ktlmportobj; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlmportobj.ReadInternal(db_conn,vectkey_logicalmemberport,vectVal_logicalmemberport,UNC_DT_STATE,UNC_OP_CREATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlmportobj.ReadInternal(db_conn, vectkey_logicalmemberport, + vectVal_logicalmemberport, UNC_DT_STATE, UNC_OP_CREATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadInternal function where value struct is NULL */ -TEST_F(LogicalMemberPortTest, ReadInternal_VAlStructNull_02) { +TEST_F(LogicalMemberPortTest, + ReadInternal_VAlStructNull_02) { key_logical_member_port_t k; memset(&k, 0, sizeof(k)); @@ -551,12 +612,14 @@ TEST_F(LogicalMemberPortTest, ReadInternal_VAlStructNull_02) { vectkey_logicalmemberport.push_back(&k); Kt_LogicalMemberPort ktlmportobj; OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlmportobj.ReadInternal(db_conn,vectkey_logicalmemberport,vectVal_logicalmemberport,UNC_DT_STATE,UNC_OP_READ); - EXPECT_EQ(ODBCM_RC_MORE_ROWS_FOUND, ret); + int ret = ktlmportobj.ReadInternal(db_conn, vectkey_logicalmemberport, + vectVal_logicalmemberport, UNC_DT_STATE, UNC_OP_READ); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /*PerformRead function which has invalid option1 */ -TEST_F(LogicalMemberPortTest, PerformRead_01) { +TEST_F(LogicalMemberPortTest, + PerformRead_01) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -572,12 +635,17 @@ TEST_F(LogicalMemberPortTest, PerformRead_01) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead function which has invalid option1 */ -TEST_F(LogicalMemberPortTest, PerformRead_02) { +TEST_F(LogicalMemberPortTest, + PerformRead_02) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -590,15 +658,20 @@ TEST_F(LogicalMemberPortTest, PerformRead_02) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION1); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION1); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead function which has invalid datatype */ -TEST_F(LogicalMemberPortTest, PerformRead_03) { +TEST_F(LogicalMemberPortTest, + PerformRead_03) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -614,12 +687,16 @@ TEST_F(LogicalMemberPortTest, PerformRead_03) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead function which has valid option2 */ -TEST_F(LogicalMemberPortTest, PerformRead_04) { +TEST_F(LogicalMemberPortTest, + PerformRead_04) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -635,12 +712,16 @@ TEST_F(LogicalMemberPortTest, PerformRead_04) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead function which has invalid datatype */ -TEST_F(LogicalMemberPortTest, PerformRead_05) { +TEST_F(LogicalMemberPortTest, + PerformRead_05) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -653,15 +734,19 @@ TEST_F(LogicalMemberPortTest, PerformRead_05) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead function which has invalid option2 */ -TEST_F(LogicalMemberPortTest, PerformRead_06) { +TEST_F(LogicalMemberPortTest, + PerformRead_06) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -677,12 +762,16 @@ TEST_F(LogicalMemberPortTest, PerformRead_06) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_MAC_ENTRY,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_NORMAL, (uint32_t)UNC_OPT2_MAC_ENTRY, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead function which has invalid option2 */ -TEST_F(LogicalMemberPortTest, PerformRead_07) { +TEST_F(LogicalMemberPortTest, + PerformRead_07) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -695,15 +784,19 @@ TEST_F(LogicalMemberPortTest, PerformRead_07) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_MAC_ENTRY); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION2); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_MAC_ENTRY,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_NORMAL, (uint32_t)UNC_OPT2_MAC_ENTRY, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead function with valid option1 and option2 */ -TEST_F(LogicalMemberPortTest, PerformRead_08) { +TEST_F(LogicalMemberPortTest, + PerformRead_08) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -716,16 +809,21 @@ TEST_F(LogicalMemberPortTest, PerformRead_08) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_SUCCESS); + sess.stub_setAddOutput((uint32_t)UNC_RC_SUCCESS); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead function with valid option1 and option2 */ -TEST_F(LogicalMemberPortTest, PerformRead_09) { +TEST_F(LogicalMemberPortTest, + PerformRead_09) { key_logical_member_port_t k; memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort ktlmportobj; @@ -738,277 +836,332 @@ TEST_F(LogicalMemberPortTest, PerformRead_09) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_DB_GET); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_DB_GET); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_MEMBER_PORT); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlmportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,NULL,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlmportobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, NULL, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//DB Access failure for UPDATE opr +// DB Access failure for UPDATE opr -TEST_F(LogicalMemberPortTest, PerformSemanticValid_UPD_DBFail) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_UPD_DBFail) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//DB Access failure for DEL opr -TEST_F(LogicalMemberPortTest, PerformSemanticValid_DEL_DBFail) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); +// DB Access failure for DEL opr +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_DEL_DBFail) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_DELETE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); -} - -//DB Access failure for READ opr -TEST_F(LogicalMemberPortTest, PerformSemanticValid_READ_DBFail) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); +} + +// DB Access failure for READ opr +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_READ_DBFail) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_READ; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); -} - -//key does not exist. -//update operation not allowed -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyNotExists_For_UPD) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); +} + +// key does not exist. +// update operation not allowed +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyNotExists_For_UPD) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); -} - -//key does not exist. -//Delete operation not allowed -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyNotExists_For_DEL) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); +} + +// key does not exist. +// Delete operation not allowed +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyNotExists_For_DEL) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_DELETE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); -} - -//key does not exist. -//Read operation not allowed -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyNotExists_For_READ) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); +} + +// key does not exist. +// Read operation not allowed +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyNotExists_For_READ) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_READ; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); -} - -//key instance exist. -//update operation allowed -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyExists_UPD_Allow) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); +} + +// key instance exist. +// update operation allowed +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyExists_UPD_Allow) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_UPDATE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); -} - -//key instance exist. -//Delete operation allowed -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyExists_Del_Allow) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); +} + +// key instance exist. +// Delete operation allowed +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyExists_Del_Allow) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_DELETE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); -} - -//key instance exist. -//Read operation allowed -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyExists_Read_Allow) { - key_logical_member_port_t k ; - memset(&k,0,sizeof(key_logical_member_port_t)); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); +} + +// key instance exist. +// Read operation allowed +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyExists_Read_Allow) { + key_logical_member_port_t k; + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_READ; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); -} - -//key already exist -//create operation not allowed -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyExist_CREATE_NotAllow) { + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); +} + +// key already exist +// create operation not allowed +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyExist_CREATE_NotAllow) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_CREATE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); -} + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); +} -//IsRowExits:DB Access failure -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyExist_CREATE_DB_Error) { +// IsRowExits:DB Access failure +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyExist_CREATE_DB_Error) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_CREATE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); -} + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); +} -//Error:ParentKey does not exist -TEST_F(LogicalMemberPortTest, PerformSemanticValid_KeyExist_CREATE_ParentKeyNotExist) { +// Error:ParentKey does not exist +TEST_F(LogicalMemberPortTest, + PerformSemanticValid_KeyExist_CREATE_ParentKeyNotExist) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; void *v = NULL; uint32_t operation = UNC_OP_CREATE; uint32_t data_type = UNC_DT_STATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); - int ret = KtObj.PerformSemanticValidation(db_conn, &k, v, operation, data_type); - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); -} + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); + int ret = KtObj.PerformSemanticValidation( + db_conn, &k, v, operation, data_type); + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); +} /********ReadLogicalMemberPortValFromDB*********/ -//Unsupported operation type returns Success -TEST_F(LogicalMemberPortTest, ReadLogicalMemberPortValFromDB_UnSupport_Opr) { +// Unsupported operation type returns Success +TEST_F(LogicalMemberPortTest, + ReadLogicalMemberPortValFromDB_UnSupport_Opr) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_CREATE; uint32_t data_type = UNC_DT_STATE; uint32_t max_rep_ct; vector logical_mem_port; - int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, operation, max_rep_ct, logical_mem_port); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, + operation, max_rep_ct, logical_mem_port); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Read Error:No record found - TEST_F(LogicalMemberPortTest, ReadLogicalMemberPortValFromDB_READ_NoRecordFound) { +// Read Error:No record found +TEST_F(LogicalMemberPortTest, + ReadLogicalMemberPortValFromDB_READ_NoRecordFound) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_READ; uint32_t data_type = UNC_DT_STATE; uint32_t max_rep_ct; vector logical_mem_port; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, operation, max_rep_ct, logical_mem_port); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, + operation, max_rep_ct, logical_mem_port); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -//Read :DB Connxn Error -TEST_F(LogicalMemberPortTest, ReadLogicalMemberPortValFromDB_READ_Db_Connxn_Error) { +// Read :DB Connxn Error +TEST_F(LogicalMemberPortTest, + ReadLogicalMemberPortValFromDB_READ_Db_Connxn_Error) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_READ; uint32_t data_type = UNC_DT_STATE; uint32_t max_rep_ct; vector logical_mem_port; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW,ODBCM_RC_CONNECTION_ERROR); - int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, operation, max_rep_ct, logical_mem_port); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, + operation, max_rep_ct, logical_mem_port); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//Read :Error returning DB_GET -TEST_F(LogicalMemberPortTest, ReadLogicalMemberPortValFromDB_READ_Db_GetError) { +// Read :Error returning DB_GET +TEST_F(LogicalMemberPortTest, + ReadLogicalMemberPortValFromDB_READ_Db_GetError) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_READ; uint32_t data_type = UNC_DT_STATE; uint32_t max_rep_ct; vector logical_mem_port; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW,ODBCM_RC_FAILED); - int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, operation, max_rep_ct, logical_mem_port); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, + operation, max_rep_ct, logical_mem_port); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } - //Read:GetOneRow Success -TEST_F(LogicalMemberPortTest, ReadLogicalMemberPortValFromDB_READ_GetOneRow_Success) { +// Read:GetOneRow Success +TEST_F(LogicalMemberPortTest, + ReadLogicalMemberPortValFromDB_READ_GetOneRow_Success) { key_logical_member_port_t k; - memset(&k,0,sizeof(key_logical_member_port_t)); + memset(&k, 0, sizeof(key_logical_member_port_t)); Kt_LogicalMemberPort KtObj; OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_READ; uint32_t data_type = UNC_DT_STATE; uint32_t max_rep_ct; vector logical_mem_port; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW,ODBCM_RC_SUCCESS); - int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, operation, max_rep_ct, logical_mem_port); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = KtObj.ReadLogicalMemberPortValFromDB(db_conn, &k, data_type, + operation, max_rep_ct, logical_mem_port); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /******ReadBulk**********/ -//ReadBulk Not allowed for UNC_DT_CANDIDATE -TEST_F(LogicalMemberPortTest, ReadBulk_DB_NoMatch) { +// ReadBulk Not allowed for UNC_DT_CANDIDATE +TEST_F(LogicalMemberPortTest, + ReadBulk_DB_NoMatch) { key_logical_member_port_t k; Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); @@ -1018,12 +1171,14 @@ TEST_F(LogicalMemberPortTest, ReadBulk_DB_NoMatch) { pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest *read_req = NULL; - int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_RUNNING, max_rep_ct, child_index,parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_RUNNING, + max_rep_ct, child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -//If max_rep_count is 0,return success -TEST_F(LogicalMemberPortTest, ReadBulk_MaxCt_Zero) { +// If max_rep_count is 0, return success +TEST_F(LogicalMemberPortTest, + ReadBulk_MaxCt_Zero) { key_logical_member_port_t k; Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); @@ -1033,12 +1188,14 @@ TEST_F(LogicalMemberPortTest, ReadBulk_MaxCt_Zero) { pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest *read_req = NULL; - int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index,parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_STATE, + max_rep_ct, child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//GetBulkRows Read Status Success -TEST_F(LogicalMemberPortTest, ReadBulk__Success) { +// GetBulkRows Read Status Success +TEST_F(LogicalMemberPortTest, + ReadBulk__Success) { key_logical_member_port_t k; Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); @@ -1048,14 +1205,16 @@ TEST_F(LogicalMemberPortTest, ReadBulk__Success) { pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS,ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//GetBulkRows Returns DB Access Error -TEST_F(LogicalMemberPortTest, ReadBulk_Db_Access_Error) { +// GetBulkRows Returns DB Access Error +TEST_F(LogicalMemberPortTest, + ReadBulk_Db_Access_Error) { key_logical_member_port_t k; Kt_LogicalMemberPort KtObj; getKeyForKtLogicalMemberPort1(k); @@ -1065,14 +1224,16 @@ TEST_F(LogicalMemberPortTest, ReadBulk_Db_Access_Error) { pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//Read Status for next Kin Success -TEST_F(LogicalMemberPortTest, ReadBulk_Next_Kin_Success) { +// Read Status for next Kin Success +TEST_F(LogicalMemberPortTest, + ReadBulk_Next_Kin_Success) { key_logical_member_port_t k; memset(&k, 0, sizeof(k)); Kt_LogicalMemberPort KtObj; @@ -1082,14 +1243,16 @@ TEST_F(LogicalMemberPortTest, ReadBulk_Next_Kin_Success) { pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Read Status Success for no such instance -TEST_F(LogicalMemberPortTest, ReadBulk_Succes__For_NoInstance) { +// Read Status Success for no such instance +TEST_F(LogicalMemberPortTest, + ReadBulk_Succes__For_NoInstance) { key_logical_member_port_t k; memset(&k, 0, sizeof(k)); @@ -1100,13 +1263,15 @@ TEST_F(LogicalMemberPortTest, ReadBulk_Succes__For_NoInstance) { pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalMemberPortTest, ReadBulk_Succes_NOSUCHINSTANCE) { +TEST_F(LogicalMemberPortTest, + ReadBulk_Succes_NOSUCHINSTANCE) { key_logical_member_port_t k; memset(&k, 0, sizeof(k)); @@ -1117,8 +1282,9 @@ TEST_F(LogicalMemberPortTest, ReadBulk_Succes_NOSUCHINSTANCE) { pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); int ret = KtObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } diff --git a/coordinator/test/modules/uppl/utest/LogicalPort_ut.cc b/coordinator/test/modules/uppl/utest/LogicalPort_ut.cc index 60181e28..6a8ac6df 100644 --- a/coordinator/test/modules/uppl/utest/LogicalPort_ut.cc +++ b/coordinator/test/modules/uppl/utest/LogicalPort_ut.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -35,8 +35,9 @@ #include #include #include -#include #include +#include +#include #include #include #include @@ -51,11 +52,8 @@ #include #include #include -#include #include #include "PhysicalLayerStub.hh" -#include -#include #include "ut_util.hh" using namespace pfc; @@ -66,8 +64,7 @@ using namespace unc::uppl::test; using namespace std; class LogicalPortTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; static void getReqHeader(physical_request_header& rh, @@ -83,10 +80,10 @@ static void getReqHeader(physical_request_header& rh, rh.key_type = UNC_KT_LOGICAL_PORT; } -// Can be changed based on testing need +// Can be changed based on testing need static char pkName1_ctr[] = "controller1"; static char pkName1_domain[] = "controller1 domain name"; -static char pkName1_logicalport[] = "{0x00,0xa}"; +static char pkName1_logicalport[] = "{0x00, 0xa}"; static char Desription[] = "create demo"; static char SWitchID[] = "switch01"; static char PhyPortID[] = "PhyPort01"; @@ -94,7 +91,8 @@ static char controller_name[] = "Controller1"; static char switch_id[] = "Switch1"; static char phy_port_id[] = "port1"; -TEST_F(LogicalPortTest, PerformSyntaxValidation_ControllernameNotFound_01) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_ControllernameNotFound_01) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -103,385 +101,463 @@ TEST_F(LogicalPortTest, PerformSyntaxValidation_ControllernameNotFound_01) { physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -TEST_F(LogicalPortTest, PerformSyntaxValidation_DomainNameNotFound_02) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_DomainNameNotFound_02) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); Kt_LogicalPort ktlinkobj; - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, + strlen(pkName1_ctr)); physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -TEST_F(LogicalPortTest, PerformSyntaxValidation_PortIDNNotFound_03) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_PortIDNNotFound_03) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); - + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -TEST_F(LogicalPortTest, PerformSyntaxValidation_SyntaxValidation_Success_04) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_SyntaxValidation_Success_04) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformSyntaxValidation_OptionalValPass_Success_05) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_OptionalValPass_Success_05) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.description,Desription,strlen(Desription)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.description, Desription, strlen(Desription)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, IsKeyExists_01) { +TEST_F(LogicalPortTest, + IsKeyExists_01) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -TEST_F(LogicalPortTest, IsKeyExists_FailureIsrowexist02) { +TEST_F(LogicalPortTest, + IsKeyExists_FailureIsrowexist02) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_domain); sw_vect_key_value.push_back(pkName1_logicalport); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalPortTest, IsKeyExists_SuccessIsrowexist03) { +TEST_F(LogicalPortTest, + IsKeyExists_SuccessIsrowexist03) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_domain); sw_vect_key_value.push_back(pkName1_logicalport); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceExist_create01) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceExist_create01) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_CREATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceNOtExist_create02) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceNOtExist_create02) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_CREATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceNOtExist_update03) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceNOtExist_update03) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_UPDATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceNOtExist_delete04) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceNOtExist_delete04) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_DELETE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceNOtExist_read03) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceNOtExist_read03) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_READ; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_MORE_ROWS_FOUND); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceNOtExist_read_InstanceExist04) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceNOtExist_read_InstanceExist04) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_READ; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceNOtExist_update_InstanceExist04) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceNOtExist_update_InstanceExist04) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_UPDATE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformSemanticValidation_InstanceNOtExist_delete_InstanceExist04) { +TEST_F(LogicalPortTest, + PerformSemanticValidation_InstanceNOtExist_delete_InstanceExist04) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); rh.key_type = UNC_KT_LOGICAL_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; uint32_t operation = UNC_OP_DELETE; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.PerformSemanticValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_UnsupportedForSTARTUP_01) { +TEST_F(LogicalPortTest, + DeleteKeyInstance_UnsupportedForSTARTUP_01) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STARTUP, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STARTUP, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_UnsupportedForCANDIDATE_01) { +TEST_F(LogicalPortTest, + DeleteKeyInstance_UnsupportedForCANDIDATE_01) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_CANDIDATE, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_CANDIDATE, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_UnsupportedForRUNNING_01) { +TEST_F(LogicalPortTest, + DeleteKeyInstance_UnsupportedForRUNNING_01) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_RUNNING, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_RUNNING, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_UnsupportedForAUDIT_01) { +TEST_F(LogicalPortTest, + DeleteKeyInstance_UnsupportedForAUDIT_01) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_AUDIT, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_AUDIT, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_Support_03) { //return code not handle from HandleOperDownCriteriaFromPortStatus function +TEST_F(LogicalPortTest, + DeleteKeyInstance_Support_03) { + // return code not handle from HandleOperDownCriteriaFromPortStatus function key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_Support_04) { //return code not handle from HandleOperDownCriteriaFromPortStatus function +TEST_F(LogicalPortTest, + DeleteKeyInstance_Support_04) { + // return code not handle from HandleOperDownCriteriaFromPortStatus function key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_Support_05) { //return code not handle from HandleOperDownCriteriaFromPortStatus function +TEST_F(LogicalPortTest, + DeleteKeyInstance_Support_05) { + // return code not handle from HandleOperDownCriteriaFromPortStatus function key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_Support_06) { //return code not handle from HandleOperDownCriteriaFromPortStatus function +TEST_F(LogicalPortTest, + DeleteKeyInstance_Support_06) { + // return code not handle from HandleOperDownCriteriaFromPortStatus function key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformRead_001) { +TEST_F(LogicalPortTest, + PerformRead_001) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -490,7 +566,7 @@ TEST_F(LogicalPortTest, PerformRead_001) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -502,11 +578,16 @@ TEST_F(LogicalPortTest, PerformRead_001) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -TEST_F(LogicalPortTest, PerformRead_002) { +TEST_F(LogicalPortTest, + PerformRead_002) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -515,7 +596,7 @@ TEST_F(LogicalPortTest, PerformRead_002) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_CANDIDATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -526,11 +607,16 @@ TEST_F(LogicalPortTest, PerformRead_002) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); -int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); +int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_NORMAL, (uint32_t)UNC_OPT2_L2DOMAIN, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -TEST_F(LogicalPortTest, PerformRead_003) { +TEST_F(LogicalPortTest, + PerformRead_003) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -539,7 +625,7 @@ TEST_F(LogicalPortTest, PerformRead_003) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_CANDIDATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -550,11 +636,15 @@ TEST_F(LogicalPortTest, PerformRead_003) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); -int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_RUNNING,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); +int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_RUNNING, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -TEST_F(LogicalPortTest, PerformRead_004) { +TEST_F(LogicalPortTest, + PerformRead_004) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -563,7 +653,7 @@ TEST_F(LogicalPortTest, PerformRead_004) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_CANDIDATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -574,11 +664,16 @@ TEST_F(LogicalPortTest, PerformRead_004) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); -int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_INVALID,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); +int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_INVALID, sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformRead_GetOneRow_005) { +TEST_F(LogicalPortTest, + PerformRead_GetOneRow_005) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -587,7 +682,7 @@ TEST_F(LogicalPortTest, PerformRead_GetOneRow_005) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_CANDIDATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -598,58 +693,72 @@ TEST_F(LogicalPortTest, PerformRead_GetOneRow_005) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); -int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); +int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -TEST_F(LogicalPortTest, SetOperStatus_001) { +TEST_F(LogicalPortTest, + SetOperStatus_001) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; - //getKeyForKtPort2(k); + // getKeyForKtPort2(k); physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,&v,(UpplLogicalPortOperStatus)1); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, &v, (UpplLogicalPortOperStatus)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -TEST_F(LogicalPortTest, SetOperStatus_002) { +TEST_F(LogicalPortTest, + SetOperStatus_002) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; - //getKeyForKtPort2(k); + // getKeyForKtPort2(k); physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,&v,(UpplLogicalPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, &v, (UpplLogicalPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, SetOperStatus_003) { +TEST_F(LogicalPortTest, + SetOperStatus_003) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; - //getKeyForKtPort2(k); + // getKeyForKtPort2(k); physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,&v,(UpplLogicalPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, &v, (UpplLogicalPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, SetOperStatus_004) { +TEST_F(LogicalPortTest, + SetOperStatus_004) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); @@ -657,14 +766,18 @@ TEST_F(LogicalPortTest, SetOperStatus_004) { Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,&v,(UpplLogicalPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, &v, (UpplLogicalPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, SetOperStatus_005) { +TEST_F(LogicalPortTest, + SetOperStatus_005) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); @@ -672,169 +785,201 @@ TEST_F(LogicalPortTest, SetOperStatus_005) { Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,&v,(UpplLogicalPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, &v, (UpplLogicalPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, SetOperStatus_006) { +TEST_F(LogicalPortTest, + SetOperStatus_006) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,&v,(UpplLogicalPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, &v, (UpplLogicalPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, SetOperStatus_007) { +TEST_F(LogicalPortTest, + SetOperStatus_007) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_UPDATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,&v,(UpplLogicalPortOperStatus)2); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, &v, (UpplLogicalPortOperStatus)2); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ReadBulk_NotAllowOperation_01) { +TEST_F(LogicalPortTest, + ReadBulk_NotAllowOperation_01) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; - uint32_t max_rep_ct=1; - int child_index=0; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; + uint32_t max_rep_ct = 1; + int child_index = 0; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; OdbcmConnectionHandler *db_conn = NULL; ReadRequest *read_req = NULL; - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct + , child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -TEST_F(LogicalPortTest, ReadBulk_MaxCountZERO_02) { +TEST_F(LogicalPortTest, + ReadBulk_MaxCountZERO_02) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; - uint32_t max_rep_ct=0; - int child_index=0; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; + uint32_t max_rep_ct = 0; + int child_index = 0; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; OdbcmConnectionHandler *db_conn = NULL; ReadRequest *read_req = NULL; - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct + , child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ReadBulk_UPPL_RC_ERR_DB_GET_02) { +TEST_F(LogicalPortTest, + ReadBulk_UNC_UPPL_RC_ERR_DB_GET_02) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; - uint32_t max_rep_ct=1; - int child_index=-1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; + uint32_t max_rep_ct = 1; + int child_index = -1; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; OdbcmConnectionHandler *db_conn = NULL; ReadRequest *read_req = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct + , child_index, parent_call, is_read_next, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -TEST_F(LogicalPortTest, ReadBulkInternal__SUCCESS01) { +TEST_F(LogicalPortTest, + ReadBulkInternal__SUCCESS01) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; - uint32_t max_rep_ct=0; + uint32_t max_rep_ct = 0; OdbcmConnectionHandler *db_conn = NULL; vector vect_val_logical_port_st; vector vect_logicalport_id; - int ret = ktlinkobj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_val_logical_port_st, vect_logicalport_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, + vect_val_logical_port_st, vect_logicalport_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetLogicalPortValidFlag_UPPL_RC_ERR_NO_SUCH_INSTANCE) { +TEST_F(LogicalPortTest, + GetLogicalPortValidFlag_UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); val_logical_port_st_t val; memset(&val, 0, sizeof(val)); Kt_LogicalPort ktlinkobj; OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); int ret = ktlinkobj.GetLogicalPortValidFlag(db_conn, &k, val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalPortTest, GetLogicalPortValidFlag_UPPL_RC_ERR_DB_ACCESS) { +TEST_F(LogicalPortTest, + GetLogicalPortValidFlag_UNC_UPPL_RC_ERR_DB_ACCESS) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); val_logical_port_st_t val; memset(&val, 0, sizeof(val)); Kt_LogicalPort ktlinkobj; OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); int ret = ktlinkobj.GetLogicalPortValidFlag(db_conn, &k, val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -TEST_F(LogicalPortTest, GetLogicalPortValidFlag_OtherThanSuccess) { +TEST_F(LogicalPortTest, + GetLogicalPortValidFlag_OtherThanSuccess) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); val_logical_port_st_t val; memset(&val, 0, sizeof(val)); Kt_LogicalPort ktlinkobj; OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_COMMON_LINK_FAILURE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_COMMON_LINK_FAILURE); int ret = ktlinkobj.GetLogicalPortValidFlag(db_conn, &k, val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -TEST_F(LogicalPortTest, GetLogicalPortValidFlag_UPPL_RC_SUCCESS) { +TEST_F(LogicalPortTest, + GetLogicalPortValidFlag_UNC_RC_SUCCESS) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); val_logical_port_st_t val; memset(&val, 0, sizeof(val)); Kt_LogicalPort ktlinkobj; OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); int ret = ktlinkobj.GetLogicalPortValidFlag(db_conn, &k, val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetOperStatusFromOperDownCriteria_DB_ERROR) { +TEST_F(LogicalPortTest, + GetOperStatusFromOperDownCriteria_DB_ERROR) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -842,12 +987,15 @@ TEST_F(LogicalPortTest, GetOperStatusFromOperDownCriteria_DB_ERROR) { Kt_LogicalPort ktlinkobj; UpplLogicalPortOperStatus new_oper_status = UPPL_LOGICAL_PORT_OPER_UNKNOWN; OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlinkobj.GetOperStatusFromOperDownCriteria(db_conn,UNC_DT_STATE,&k,&v,new_oper_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlinkobj.GetOperStatusFromOperDownCriteria( + db_conn, UNC_DT_STATE, &k, &v, new_oper_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -TEST_F(LogicalPortTest, GetOperStatusFromOperDownCriteria_DB_Success) { +TEST_F(LogicalPortTest, + GetOperStatusFromOperDownCriteria_DB_Success) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -855,12 +1003,15 @@ TEST_F(LogicalPortTest, GetOperStatusFromOperDownCriteria_DB_Success) { Kt_LogicalPort ktlinkobj; UpplLogicalPortOperStatus new_oper_status = UPPL_LOGICAL_PORT_OPER_UNKNOWN; OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetOperStatusFromOperDownCriteria(db_conn,UNC_DT_STATE,&k,&v,new_oper_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetOperStatusFromOperDownCriteria( + db_conn, UNC_DT_STATE, &k, &v, new_oper_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, HandleDriverAlarms_AlaramOtherThanUNC_SUBDOMAIN_SPLIT) { +TEST_F(LogicalPortTest, + HandleDriverAlarms_AlaramOtherThanUNC_SUBDOMAIN_SPLIT) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -869,14 +1020,15 @@ TEST_F(LogicalPortTest, HandleDriverAlarms_AlaramOtherThanUNC_SUBDOMAIN_SPLIT) { uint32_t oper_type = UNC_OP_CREATE; vector obj_key_struct; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); - + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -//Unable to get current oper_status from db -TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_01) { +// Unable to get current oper_status from db +TEST_F(LogicalPortTest, + HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_01) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -885,14 +1037,17 @@ TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_01) { uint32_t oper_type = UNC_OP_CREATE; vector obj_key_struct; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlinkobj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlinkobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//operstatus new and old naot same -TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_02) { +// operstatus new and old naot same +TEST_F(LogicalPortTest, + HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_02) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -901,14 +1056,17 @@ TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_02) { uint32_t oper_type = UNC_OP_CREATE; vector obj_key_struct; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Update oper_status -TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_03) { +// Update oper_status +TEST_F(LogicalPortTest, + HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_03) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -917,13 +1075,16 @@ TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_03) { uint32_t oper_type = UNC_OP_DELETE; vector obj_key_struct; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_04) { +TEST_F(LogicalPortTest, + HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_04) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -932,130 +1093,155 @@ TEST_F(LogicalPortTest, HandleDriverAlarms_UNC_SUBDOMAIN_SPLIT_04) { uint32_t oper_type = UNC_OP_UPDATE; vector obj_key_struct; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleDriverAlarms(db_conn,UNC_DT_STATE,alarm_type,oper_type,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } -TEST_F(LogicalPortTest, NotifyOperStatus_success) { +TEST_F(LogicalPortTest, + NotifyOperStatus_success) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); vector refer; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.NotifyOperStatus(db_conn,UNC_DT_STATE,&k,&v,refer); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.NotifyOperStatus( + db_conn, UNC_DT_STATE, &k, &v, refer); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, NotifyOperStaus_valstructureNull) { +TEST_F(LogicalPortTest, + NotifyOperStaus_valstructureNull) { key_logical_port_t k; - val_logical_port_st_t *v=NULL; + val_logical_port_st_t *v = NULL; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); vector refer; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.NotifyOperStatus(db_conn,UNC_DT_STATE,&k,v,refer); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.NotifyOperStatus( + db_conn, UNC_DT_STATE, &k, v, refer); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetAllPortId_va) { +TEST_F(LogicalPortTest, + GetAllPortId_va) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - string controller_name1 = reinterpret_cast (pkName1_ctr); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + string controller_name1 = reinterpret_cast (pkName1_ctr); string switch_id1 = reinterpret_cast (pkName1_logicalport); string domain_name1 = reinterpret_cast (pkName1_domain); vector logical_port_id1; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = UPPL_RC_SUCCESS; - ktlinkobj.GetAllPortId(db_conn,UNC_DT_STATE,controller_name1,switch_id1,domain_name1,logical_port_id1,true); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = UNC_RC_SUCCESS; + ktlinkobj.GetAllPortId(db_conn, UNC_DT_STATE, controller_name1, + switch_id1, domain_name1, logical_port_id1, true); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetAllPortId_GetSibling) { +TEST_F(LogicalPortTest, + GetAllPortId_GetSibling) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - string controller_name1 = reinterpret_cast (pkName1_ctr); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + string controller_name1 = reinterpret_cast (pkName1_ctr); string switch_id1 = reinterpret_cast (pkName1_logicalport); string domain_name1 = reinterpret_cast (pkName1_domain); vector logical_port_id1; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETSIBLINGROWS, ODBCM_RC_SUCCESS); - int ret = UPPL_RC_SUCCESS; - ktlinkobj.GetAllPortId(db_conn,UNC_DT_STATE,controller_name1,switch_id1,domain_name1,logical_port_id1,true); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETSIBLINGROWS, ODBCM_RC_SUCCESS); + int ret = UNC_RC_SUCCESS; + ktlinkobj.GetAllPortId(db_conn, UNC_DT_STATE, controller_name1, + switch_id1, domain_name1, logical_port_id1, true); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetAllPortId_IsSingleFALSE) { +TEST_F(LogicalPortTest, + GetAllPortId_IsSingleFALSE) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - string controller_name1 = reinterpret_cast (pkName1_ctr); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + string controller_name1 = reinterpret_cast (pkName1_ctr); string switch_id1 = reinterpret_cast (pkName1_logicalport); string domain_name1 = reinterpret_cast (pkName1_domain); vector logical_port_id1; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETSIBLINGROWS, ODBCM_RC_SUCCESS); - int ret = UPPL_RC_SUCCESS; - ktlinkobj.GetAllPortId(db_conn,UNC_DT_STATE,controller_name1,switch_id1,domain_name1,logical_port_id1,false); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETSIBLINGROWS, ODBCM_RC_SUCCESS); + int ret = UNC_RC_SUCCESS; + ktlinkobj.GetAllPortId(db_conn, UNC_DT_STATE, controller_name1, + switch_id1, domain_name1, logical_port_id1, false); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, HandleOperStatus_GetOneRow_SUCCESS) { +TEST_F(LogicalPortTest, + HandleOperStatus_GetOneRow_SUCCESS) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); vector refer; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,refer,UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, refer, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, HandleOperStatus_SwitchID_Validation) { +TEST_F(LogicalPortTest, + HandleOperStatus_SwitchID_Validation) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); v.logical_port.valid[kIdxLogicalPortSwitchId] = 1; - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - //string key_instance = "controller1"; + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + // string key_instance = "controller1"; unc_key_type_t key_type = UNC_KT_CONTROLLER; uint8_t oper_status = 7; @@ -1065,182 +1251,221 @@ TEST_F(LogicalPortTest, HandleOperStatus_SwitchID_Validation) { vector refer; refer.push_back(obj); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,refer,UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, refer, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetPortOperStatus_DT_STATE) { +TEST_F(LogicalPortTest, + GetPortOperStatus_DT_STATE) { key_logical_port_t k; val_logical_port_st_t v; key_port_t obj_key_port; memset(&obj_key_port, 0, sizeof(key_port_t)); memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - memcpy(obj_key_port.port_id,phy_port_id,strlen(phy_port_id)); - memcpy(obj_key_port.sw_key.switch_id,switch_id,strlen(switch_id)); - memcpy(obj_key_port.sw_key.ctr_key.controller_name,controller_name,strlen(controller_name)); - - uint8_t port_oper_status =1; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + memcpy(obj_key_port.port_id, phy_port_id, strlen(phy_port_id)); + memcpy(obj_key_port.sw_key.switch_id, switch_id, strlen(switch_id)); + memcpy(obj_key_port.sw_key.ctr_key.controller_name, + controller_name, strlen(controller_name)); + + uint8_t port_oper_status = 1; uint32_t data_type = UNC_DT_STATE; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetPortOperStatus(db_conn,obj_key_port,&port_oper_status,data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetPortOperStatus( + db_conn, obj_key_port, &port_oper_status, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetPortOperStatus_DT_INVALID) { +TEST_F(LogicalPortTest, + GetPortOperStatus_DT_INVALID) { key_logical_port_t k; val_logical_port_st_t v; key_port_t obj_key_port; memset(&obj_key_port, 0, sizeof(key_port_t)); memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - memcpy(obj_key_port.port_id,phy_port_id,strlen(phy_port_id)); - memcpy(obj_key_port.sw_key.switch_id,switch_id,strlen(switch_id)); - memcpy(obj_key_port.sw_key.ctr_key.controller_name,controller_name,strlen(controller_name)); - uint8_t port_oper_status =1; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + memcpy(obj_key_port.port_id, phy_port_id, strlen(phy_port_id)); + memcpy(obj_key_port.sw_key.switch_id, switch_id, strlen(switch_id)); + memcpy(obj_key_port.sw_key.ctr_key.controller_name, + controller_name, strlen(controller_name)); + uint8_t port_oper_status = 1; uint32_t data_type = UNC_DT_INVALID; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetPortOperStatus(db_conn,obj_key_port,&port_oper_status,data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetPortOperStatus( + db_conn, obj_key_port, &port_oper_status, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetPortOperStatus_DT_CANDIDATE) { +TEST_F(LogicalPortTest, + GetPortOperStatus_DT_CANDIDATE) { key_logical_port_t k; val_logical_port_st_t v; key_port_t obj_key_port; memset(&obj_key_port, 0, sizeof(key_port_t)); memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - memcpy(obj_key_port.port_id,phy_port_id,strlen(phy_port_id)); - memcpy(obj_key_port.sw_key.switch_id,switch_id,strlen(switch_id)); - memcpy(obj_key_port.sw_key.ctr_key.controller_name,controller_name,strlen(controller_name)); - uint8_t port_oper_status =1; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + memcpy(obj_key_port.port_id, phy_port_id, strlen(phy_port_id)); + memcpy(obj_key_port.sw_key.switch_id, switch_id, strlen(switch_id)); + memcpy(obj_key_port.sw_key.ctr_key.controller_name, + controller_name, strlen(controller_name)); + uint8_t port_oper_status = 1; uint32_t data_type = UNC_DT_CANDIDATE; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetPortOperStatus(db_conn,obj_key_port,&port_oper_status,data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetPortOperStatus( + db_conn, obj_key_port, &port_oper_status, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetPortOperStatus_DT_RUNNING) { +TEST_F(LogicalPortTest, + GetPortOperStatus_DT_RUNNING) { key_logical_port_t k; val_logical_port_st_t v; key_port_t obj_key_port; memset(&obj_key_port, 0, sizeof(key_port_t)); memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - memcpy(obj_key_port.port_id,phy_port_id,strlen(phy_port_id)); - memcpy(obj_key_port.sw_key.switch_id,switch_id,strlen(switch_id)); - memcpy(obj_key_port.sw_key.ctr_key.controller_name,controller_name,strlen(controller_name)); - uint8_t port_oper_status =1; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + memcpy(obj_key_port.port_id, phy_port_id, strlen(phy_port_id)); + memcpy(obj_key_port.sw_key.switch_id, switch_id, strlen(switch_id)); + memcpy(obj_key_port.sw_key.ctr_key.controller_name, + controller_name, strlen(controller_name)); + uint8_t port_oper_status = 1; uint32_t data_type = UNC_DT_RUNNING; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetPortOperStatus(db_conn,obj_key_port,&port_oper_status,data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetPortOperStatus( + db_conn, obj_key_port, &port_oper_status, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetPortOperStatus_DT_STARTUP) { +TEST_F(LogicalPortTest, + GetPortOperStatus_DT_STARTUP) { key_logical_port_t k; val_logical_port_st_t v; key_port_t obj_key_port; memset(&obj_key_port, 0, sizeof(key_port_t)); memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - memcpy(obj_key_port.port_id,phy_port_id,strlen(phy_port_id)); - memcpy(obj_key_port.sw_key.switch_id,switch_id,strlen(switch_id)); - memcpy(obj_key_port.sw_key.ctr_key.controller_name,controller_name,strlen(controller_name)); - uint8_t port_oper_status =1; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + memcpy(obj_key_port.port_id, phy_port_id, strlen(phy_port_id)); + memcpy(obj_key_port.sw_key.switch_id, switch_id, strlen(switch_id)); + memcpy(obj_key_port.sw_key.ctr_key.controller_name, + controller_name, strlen(controller_name)); + uint8_t port_oper_status = 1; uint32_t data_type = UNC_DT_STARTUP; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetPortOperStatus(db_conn,obj_key_port,&port_oper_status,data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetPortOperStatus( + db_conn, + obj_key_port, &port_oper_status, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetPortOperStatus_DT_IMPORT) { +TEST_F(LogicalPortTest, + GetPortOperStatus_DT_IMPORT) { key_logical_port_t k; val_logical_port_st_t v; key_port_t obj_key_port; memset(&obj_key_port, 0, sizeof(key_port_t)); memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - memcpy(obj_key_port.port_id,phy_port_id,strlen(phy_port_id)); - memcpy(obj_key_port.sw_key.switch_id,switch_id,strlen(switch_id)); - memcpy(obj_key_port.sw_key.ctr_key.controller_name,controller_name,strlen(controller_name)); - uint8_t port_oper_status =1; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + memcpy(obj_key_port.port_id, phy_port_id, strlen(phy_port_id)); + memcpy(obj_key_port.sw_key.switch_id, switch_id, strlen(switch_id)); + memcpy(obj_key_port.sw_key.ctr_key.controller_name, + controller_name, strlen(controller_name)); + uint8_t port_oper_status = 1; uint32_t data_type = UNC_DT_IMPORT; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetPortOperStatus(db_conn,obj_key_port,&port_oper_status,data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetPortOperStatus( + db_conn, obj_key_port, &port_oper_status, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetPortOperStatus_DT_AUDIT) { +TEST_F(LogicalPortTest, + GetPortOperStatus_DT_AUDIT) { key_logical_port_t k; val_logical_port_st_t v; key_port_t obj_key_port; memset(&obj_key_port, 0, sizeof(key_port_t)); memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - memcpy(obj_key_port.port_id,phy_port_id,strlen(phy_port_id)); - memcpy(obj_key_port.sw_key.switch_id,switch_id,strlen(switch_id)); - memcpy(obj_key_port.sw_key.ctr_key.controller_name,controller_name,strlen(controller_name)); - uint8_t port_oper_status =1; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + memcpy(obj_key_port.port_id, phy_port_id, strlen(phy_port_id)); + memcpy(obj_key_port.sw_key.switch_id, switch_id, strlen(switch_id)); + memcpy(obj_key_port.sw_key.ctr_key.controller_name, + controller_name, strlen(controller_name)); + uint8_t port_oper_status = 1; uint32_t data_type = UNC_DT_AUDIT; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetPortOperStatus(db_conn,obj_key_port,&port_oper_status,data_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetPortOperStatus( + db_conn, obj_key_port, &port_oper_status, data_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformRead_Option1_SUCCESS) { +TEST_F(LogicalPortTest, + PerformRead_Option1_SUCCESS) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -1249,7 +1474,7 @@ TEST_F(LogicalPortTest, PerformRead_Option1_SUCCESS) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1259,14 +1484,19 @@ TEST_F(LogicalPortTest, PerformRead_Option1_SUCCESS) { sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); sess.stub_setAddOutput((uint32_t)0); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION1); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION1); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_PORT); - int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformRead_Option2_SUCCESS) { +TEST_F(LogicalPortTest, + PerformRead_Option2_SUCCESS) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -1275,7 +1505,7 @@ TEST_F(LogicalPortTest, PerformRead_Option2_SUCCESS) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1285,14 +1515,18 @@ TEST_F(LogicalPortTest, PerformRead_Option2_SUCCESS) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); sess.stub_setAddOutput((uint32_t)0); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION2); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_PORT); - int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, + (uint32_t)UNC_DT_STATE, (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_NORMAL, (uint32_t)UNC_OPT1_DETAIL, (uint32_t)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformRead_Datatype_SUCCESS) { +TEST_F(LogicalPortTest, + PerformRead_Datatype_SUCCESS) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -1301,7 +1535,7 @@ TEST_F(LogicalPortTest, PerformRead_Datatype_SUCCESS) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1311,14 +1545,18 @@ TEST_F(LogicalPortTest, PerformRead_Datatype_SUCCESS) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_DT_RUNNING); sess.stub_setAddOutput((uint32_t)0); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_PORT); - int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_RUNNING,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_RUNNING, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, PerformRead_DB_SUCCESS) { +TEST_F(LogicalPortTest, + PerformRead_DB_SUCCESS) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); @@ -1327,7 +1565,7 @@ TEST_F(LogicalPortTest, PerformRead_DB_SUCCESS) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); rh.key_type = UNC_KT_PORT; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -1337,209 +1575,245 @@ TEST_F(LogicalPortTest, PerformRead_DB_SUCCESS) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_DT_RUNNING); sess.stub_setAddOutput((uint32_t)0); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED); sess.stub_setAddOutput((uint32_t)UNC_KT_LOGICAL_PORT); - int ret = ktlinkobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_UPDATE,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktlinkobj.PerformRead( + db_conn, (uint32_t)0, (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_UPDATE, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetAllLogicalPort_LogicalPortNotAvailable) { +TEST_F(LogicalPortTest, + GetAllLogicalPort_LogicalPortNotAvailable) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - string controller_name1 = reinterpret_cast (pkName1_ctr); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + string controller_name1 = reinterpret_cast (pkName1_ctr); string switch_id1 = reinterpret_cast (pkName1_logicalport); string domain_name1 = reinterpret_cast (pkName1_domain); string physicalportid = reinterpret_cast (PhyPortID); vector vectLogicalPortKey; vectLogicalPortKey.push_back(k); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = UPPL_RC_SUCCESS; - ktlinkobj.GetAllLogicalPort(db_conn,controller_name1,domain_name1,switch_id1,physicalportid,vectLogicalPortKey,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = UNC_RC_SUCCESS; + ktlinkobj.GetAllLogicalPort( + db_conn, controller_name1, domain_name1, + switch_id1, physicalportid, vectLogicalPortKey, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetAllLogicalPort_DBSUCCESS) { +TEST_F(LogicalPortTest, + GetAllLogicalPort_DBSUCCESS) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - string controller_name1 = reinterpret_cast (pkName1_ctr); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + string controller_name1 = reinterpret_cast (pkName1_ctr); string switch_id1 = reinterpret_cast (pkName1_logicalport); string domain_name1 = reinterpret_cast (pkName1_domain); string physicalportid = reinterpret_cast (PhyPortID); vector vectLogicalPortKey; vectLogicalPortKey.push_back(k); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = UPPL_RC_SUCCESS; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - ktlinkobj.GetAllLogicalPort(db_conn,controller_name1,domain_name1,switch_id1,physicalportid,vectLogicalPortKey,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = UNC_RC_SUCCESS; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + ktlinkobj.GetAllLogicalPort( + db_conn, controller_name1, domain_name1, + switch_id1, physicalportid, vectLogicalPortKey, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ValidatePortType_LP_SWITCH_SUCCESS) { - uint8_t port_type = 1;//1 for UPPL_LP_SWITCH +TEST_F(LogicalPortTest, + ValidatePortType_LP_SWITCH_SUCCESS) { + uint8_t port_type = 1; // 1 for UPPL_LP_SWITCH Kt_LogicalPort ktlinkobj; int ret = ktlinkobj.ValidatePortType(port_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ValidatePortType_LP_PHYSICALPORT_SUCCESS) { - uint8_t port_type = 2;//1 for UPPL_LP_PHYSICAL_PORT +TEST_F(LogicalPortTest, + ValidatePortType_LP_PHYSICALPORT_SUCCESS) { + uint8_t port_type = 2; // 1 for UPPL_LP_PHYSICAL_PORT Kt_LogicalPort ktlinkobj; int ret = ktlinkobj.ValidatePortType(port_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ValidatePortType_LP_TRUNKPORT_SUCCESS) { - uint8_t port_type = 11;//1 for UPPL_LP_TRUNK_PORT +TEST_F(LogicalPortTest, + ValidatePortType_LP_TRUNKPORT_SUCCESS) { + uint8_t port_type = 11; // 1 for UPPL_LP_TRUNK_PORT Kt_LogicalPort ktlinkobj; int ret = ktlinkobj.ValidatePortType(port_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ValidatePortType_LP_SUBDOMAIN_SUCCESS) { - uint8_t port_type = 12;//1 for UPPL_LP_SUBDOMAIN +TEST_F(LogicalPortTest, + ValidatePortType_LP_SUBDOMAIN_SUCCESS) { + uint8_t port_type = 12; // 1 for UPPL_LP_SUBDOMAIN Kt_LogicalPort ktlinkobj; int ret = ktlinkobj.ValidatePortType(port_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ValidatePortType_LP_TUNNEL_SUCCESS) { - uint8_t port_type = 13;//1 for UPPL_LP_TUNNEL_ENDPOINT +TEST_F(LogicalPortTest, + ValidatePortType_LP_TUNNEL_SUCCESS) { + uint8_t port_type = 13; // 1 for UPPL_LP_TUNNEL_ENDPOINT Kt_LogicalPort ktlinkobj; int ret = ktlinkobj.ValidatePortType(port_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ValidatePortType_FAILL_FOR_UNKNOWNPORT) { - uint8_t port_type = 3;//1 for UNKNOWNPORT +TEST_F(LogicalPortTest, + ValidatePortType_FAILL_FOR_UNKNOWNPORT) { + uint8_t port_type = 3; // 1 for UNKNOWNPORT Kt_LogicalPort ktlinkobj; int ret = ktlinkobj.ValidatePortType(port_type); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -TEST_F(LogicalPortTest, ReadBulk_ADDTOBUFFER_maxrepCT1) { +TEST_F(LogicalPortTest, + ReadBulk_ADDTOBUFFER_maxrepCT1) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; uint32_t max_rep_ct = 1; int child_index = 1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ReadBulk_DB_ACCESS_ERROR) { +TEST_F(LogicalPortTest, + ReadBulk_DB_ACCESS_ERROR) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; uint32_t max_rep_ct = 2; int child_index = 1; - pfc_bool_t parent_call=true; - pfc_bool_t is_read_next=true; + pfc_bool_t parent_call = true; + pfc_bool_t is_read_next = true; OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); int ret = ktlinkobj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -TEST_F(LogicalPortTest, ReadBulkInternal_RecordNot_Found) { +TEST_F(LogicalPortTest, + ReadBulkInternal_RecordNot_Found) { key_logical_port_t k; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; - uint32_t max_rep_ct=1; + uint32_t max_rep_ct = 1; OdbcmConnectionHandler *db_conn = NULL; vector vect_val_logical_port_st; vector vect_logicalport_id; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktlinkobj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_val_logical_port_st, vect_logicalport_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = ktlinkobj.ReadBulkInternal( + db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, + vect_val_logical_port_st, vect_logicalport_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -TEST_F(LogicalPortTest, PerformSyntaxValidation_ValStrutValidation_PortType_04) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_ValStrutValidation_PortType_04) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.description,Desription,strlen(Desription)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.description, Desription, strlen(Desription)); uint8_t porttype = 3; - v.logical_port.port_type= porttype; - v.logical_port.valid[kIdxLogicalPortType]=1; + v.logical_port.port_type = porttype; + v.logical_port.valid[kIdxLogicalPortType] = 1; Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_UPDATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -TEST_F(LogicalPortTest, PerformSyntaxValidation_ValStrutValidation_oper_down_criteria_05) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_ValStrutValidation_oper_down_criteria_05) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.description,Desription,strlen(Desription)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.description, Desription, strlen(Desription)); uint8_t operdowncriteria = 3; - v.logical_port.oper_down_criteria= operdowncriteria; - v.logical_port.valid[kIdxLogicalPortOperDownCriteria]=1; + v.logical_port.oper_down_criteria = operdowncriteria; + v.logical_port.valid[kIdxLogicalPortOperDownCriteria] = 1; Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_UPDATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -TEST_F(LogicalPortTest, PerformSyntaxValidation_ValStrutNULL) { +TEST_F(LogicalPortTest, + PerformSyntaxValidation_ValStrutNULL) { key_logical_port_t k; - val_logical_port_st_t *v=NULL; + val_logical_port_st_t *v = NULL; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_UPDATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ReadInternal_max_rep_ct) { +TEST_F(LogicalPortTest, + ReadInternal_max_rep_ct) { key_logical_port_t k; memset(&k, 0, sizeof(k)); vector vectVal_logicalport; @@ -1549,12 +1823,15 @@ TEST_F(LogicalPortTest, ReadInternal_max_rep_ct) { Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.ReadInternal(db_conn,vectkey_logicalport,vectVal_logicalport,UNC_DT_STATE,UNC_OP_CREATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.ReadInternal( + db_conn, vectkey_logicalport, vectVal_logicalport, + UNC_DT_STATE, UNC_OP_CREATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, ReadInternal_VAlStructNull) { +TEST_F(LogicalPortTest, + ReadInternal_VAlStructNull) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(k)); @@ -1566,141 +1843,169 @@ TEST_F(LogicalPortTest, ReadInternal_VAlStructNull) { Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.ReadInternal(db_conn,vectkey_logicalport,vectVal_logicalport,UNC_DT_STATE,UNC_OP_READ); - EXPECT_EQ(ODBCM_RC_MORE_ROWS_FOUND, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.ReadInternal( + db_conn, vectkey_logicalport, + vectVal_logicalport, UNC_DT_STATE, UNC_OP_READ); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -TEST_F(LogicalPortTest, HandleOperStatus_NotSuccess) { +TEST_F(LogicalPortTest, + HandleOperStatus_NotSuccess) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); v.logical_port.valid[kIdxLogicalPortPhysicalPortId] = 1; - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); - //string key_instance = "controller1"; + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); + // string key_instance = "controller1"; unc_key_type_t key_type = UNC_KT_CONTROLLER; - uint8_t oper_status =0; + uint8_t oper_status = 0; key_ctr_t ctrkey; ctrkey = k.domain_key.ctr_key; OperStatusHolder obj(key_type, &ctrkey, oper_status); vector refer; refer.push_back(obj); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,refer,UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlinkobj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, refer, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, HandleOperStatus_GetOneRow_FAILED) { +TEST_F(LogicalPortTest, + HandleOperStatus_GetOneRow_FAILED) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); v.logical_port.valid[kIdxLogicalPortPhysicalPortId] = 1; - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); vector refer; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,refer,UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktlinkobj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, refer, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, HandleOperStatus_GetOneRow_SUCCESS_CONTROLLERUP) { +TEST_F(LogicalPortTest, + HandleOperStatus_GetOneRow_SUCCESS_CONTROLLERUP) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); v.logical_port.valid[kIdxLogicalPortPhysicalPortId] = 1; - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); string key_instance = "controller1"; unc_key_type_t key_type = UNC_KT_CONTROLLER; - uint8_t oper_status =7; + uint8_t oper_status = 7; key_ctr_t ctrkey; ctrkey = k.domain_key.ctr_key; OperStatusHolder obj(key_type, &ctrkey, oper_status); vector refer; refer.push_back(obj); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,refer,UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, refer, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, HandleOperDownCriteriaFromPortStatus_KEY_STRUCT_NULL) { +TEST_F(LogicalPortTest, + HandleOperDownCriteriaFromPortStatus_KEY_STRUCT_NULL) { key_logical_port_t *k = NULL; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; pfc_bool_t is_delete_call = true; vector vectOperStatus; - int ret = ktlinkobj.HandleOperDownCriteriaFromPortStatus(db_conn,UNC_DT_STATE,k,&v,vectOperStatus,is_delete_call); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = ktlinkobj.HandleOperDownCriteriaFromPortStatus( + db_conn, UNC_DT_STATE, k, &v, vectOperStatus, is_delete_call); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -TEST_F(LogicalPortTest, HandleOperDownCriteriaFromPortStatus_Key_struct_success) { +TEST_F(LogicalPortTest, + HandleOperDownCriteriaFromPortStatus_Key_struct_success) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - memcpy(v.logical_port.physical_port_id,PhyPortID,strlen(PhyPortID)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + memcpy(v.logical_port.physical_port_id, PhyPortID, strlen(PhyPortID)); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; pfc_bool_t is_delete_call = true; vector vectOperStatus; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.HandleOperDownCriteriaFromPortStatus(db_conn,UNC_DT_STATE,&k,&v,vectOperStatus,is_delete_call); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.HandleOperDownCriteriaFromPortStatus( + db_conn, UNC_DT_STATE, &k, &v, vectOperStatus, is_delete_call); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, GetOperDownCriteria_Success) { +TEST_F(LogicalPortTest, + GetOperDownCriteria_Success) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); uint32_t oper_down_criteria = 1; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktlinkobj.GetOperDownCriteria(db_conn,UNC_DT_STATE,&k,oper_down_criteria); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktlinkobj.GetOperDownCriteria( + db_conn, UNC_DT_STATE, &k, oper_down_criteria); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/*TEST_F(LogicalPortTest, HandleOperStatus_KeyStruct_NULL_Handdle) { +/*TEST_F(LogicalPortTest, + HandleOperStatus_KeyStruct_NULL_Handdle) { key_logical_port_t k; val_logical_port_st_t v; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); - memcpy(v.logical_port.switch_id,SWitchID,strlen(SWitchID)); - unc_key_type_t key_type_= UNC_KT_BOUNDARY; + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); + memcpy(v.logical_port.switch_id, SWitchID, strlen(SWitchID)); + unc_key_type_t key_type_ = UNC_KT_BOUNDARY; string key_instance_ = "physical"; uint8_t oper_status_ = 1; vector refer; @@ -1708,48 +2013,59 @@ TEST_F(LogicalPortTest, GetOperDownCriteria_Success) { refer.push_back(key_instance_); refer.push_back(oper_status_); Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v,refer,UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.HandleOperStatus( + db_conn, UNC_DT_STATE, &k, &v, refer, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); }*/ #if 0 -TEST_F(LogicalPortTest, PerformSyntaxValidation_ValueStructureNullCheck_06) { //Null check properly not handle for value structure +TEST_F(LogicalPortTest, + PerformSyntaxValidation_ValueStructureNullCheck_06) { + // Null check properly not handle for value structure key_logical_port_t k; - val_logical_port_st_t *v =NULL; + val_logical_port_st_t *v = NULL; memset(&k, 0, sizeof(key_logical_port_t)); memset(&v, 0, sizeof(val_logical_port_st_t)); - memcpy(k.domain_key.ctr_key.controller_name,pkName1_ctr,strlen(pkName1_ctr)); - memcpy(k.domain_key.domain_name,pkName1_domain,strlen(pkName1_domain)); - memcpy(k.port_id,pkName1_logicalport,strlen(pkName1_logicalport)); + memcpy(k.domain_key.ctr_key.controller_name, + pkName1_ctr, strlen(pkName1_ctr)); + memcpy(k.domain_key.domain_name, pkName1_domain, strlen(pkName1_domain)); + memcpy(k.port_id, pkName1_logicalport, strlen(pkName1_logicalport)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.PerformSyntaxValidation(db_conn,&k,v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.PerformSyntaxValidation( + db_conn, &k, v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -TEST_F(LogicalPortTest, DeleteKeyInstance_supported_01) { //Bug in HandleOperDownCriteriaFromPortStatus(return statement not handle,code crash) +TEST_F(LogicalPortTest, + DeleteKeyInstance_supported_01) { + // Bug in HandleOperDownCriteriaFromPortStatus( + // return statement not handle, code crash) key_logical_port_t *k = NULL; - //memset(&k, 0, sizeof(key_logical_port_t)); + // memset(&k, 0, sizeof(key_logical_port_t)); Kt_LogicalPort ktlinkobj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.DeleteKeyInstance(db_conn, k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.DeleteKeyInstance( + db_conn, k, UNC_DT_STATE, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -//Key-structure handle -TEST_F(LogicalPortTest, HandleOperStatus_KeyStruct_NULL_Handdle) { - key_logical_port_t *k=NULL; +// Key-structure handle +TEST_F(LogicalPortTest, + HandleOperStatus_KeyStruct_NULL_Handdle) { + key_logical_port_t *k = NULL; val_logical_port_st_t v; memset(&v, 0, sizeof(val_logical_port_st_t)); vector refer; Kt_LogicalPort ktlinkobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktlinkobj.HandleOperStatus(db_conn,UNC_DT_STATE,k,&v,refer,UNC_KT_LOGICAL_PORT); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktlinkobj.HandleOperStatus( + db_conn, UNC_DT_STATE, k, &v, refer, UNC_KT_LOGICAL_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } #endif diff --git a/coordinator/test/modules/uppl/utest/Makefile b/coordinator/test/modules/uppl/utest/Makefile index 1ba041e3..90182430 100644 --- a/coordinator/test/modules/uppl/utest/Makefile +++ b/coordinator/test/modules/uppl/utest/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2013 NEC Corporation +# Copyright (c) 2013-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -28,6 +28,7 @@ MISC_STUBDIR = $(COMMON_STUB_PATH)/stub/misc UPPL_SRCDIR = $(MODULE_SRCROOT)/uppl TCLIB_SRCDIR = $(MODULE_SRCROOT)/tclib ALARM_SRCDIR = $(MODULE_SRCROOT)/alarm +CAPA_SRCDIR = $(MODULE_SRCROOT)/capa # Define a list of directories that contain source files. ALT_SRCDIRS = $(UPPL_SRCDIR) $(ODBC_STUBDIR) $(TCLIB_STUBDIR) @@ -44,6 +45,8 @@ EXTRA_CXX_INCDIRS = $(MODULE_SRCROOT) EXTRA_CXX_INCDIRS += $(UPPL_SRCDIR)/include EXTRA_CXX_INCDIRS += $(TCLIB_SRCDIR)/include EXTRA_CXX_INCDIRS += $(ALARM_SRCDIR)/include +EXTRA_CXX_INCDIRS += $(CAPA_SRCDIR)/. +EXTRA_CXX_INCDIRS += $(CAPA_SRCDIR)/include CPPFLAGS += -include ut_stub.h @@ -82,6 +85,8 @@ UPPL_SOURCES += physical_itc.cc UPPL_SOURCES += physical_notification_manager.cc UPPL_SOURCES += unc_state_handler.cc UPPL_SOURCES += physicallayer.cc +UPPL_SOURCES += itc_kt_ctr_dataflow.cc +UPPL_SOURCES += itc_kt_dataflow.cc ODBC_SOURCES = odbcm_mgr_stub.cc odbcm_utils_stub.cc TCLIB_SOURCES = tclib_module.cc diff --git a/coordinator/test/modules/uppl/utest/PhysicalLayerStub.cc b/coordinator/test/modules/uppl/utest/PhysicalLayerStub.cc index ae6ed595..fc11054d 100644 --- a/coordinator/test/modules/uppl/utest/PhysicalLayerStub.cc +++ b/coordinator/test/modules/uppl/utest/PhysicalLayerStub.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -17,8 +17,7 @@ static PhysicalLayer theInstance(NULL); static bool initialized = false; void -PhysicalLayerStub::loadphysicallayer() -{ +PhysicalLayerStub::loadphysicallayer() { Module::physical = &theInstance; if (!initialized) { initialized = true; @@ -27,7 +26,6 @@ PhysicalLayerStub::loadphysicallayer() } void -PhysicalLayerStub::unloadphysicallayer() -{ +PhysicalLayerStub::unloadphysicallayer() { Module::physical = NULL; } diff --git a/coordinator/test/modules/uppl/utest/PhysicalLayerStub.hh b/coordinator/test/modules/uppl/utest/PhysicalLayerStub.hh index 353f9ab2..1b0dfcff 100644 --- a/coordinator/test/modules/uppl/utest/PhysicalLayerStub.hh +++ b/coordinator/test/modules/uppl/utest/PhysicalLayerStub.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -20,7 +20,7 @@ #include class PhysicalLayerStub : public pfc::core::Module { -public: + public: static void loadphysicallayer(); static void unloadphysicallayer(); }; diff --git a/coordinator/test/modules/uppl/utest/Port_ut.cc b/coordinator/test/modules/uppl/utest/Port_ut.cc index 07b80430..4a506943 100644 --- a/coordinator/test/modules/uppl/utest/Port_ut.cc +++ b/coordinator/test/modules/uppl/utest/Port_ut.cc @@ -63,14 +63,13 @@ using namespace unc::tclib; using namespace unc::uppl::test; class PortTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; // Can be changed based on testing need -static char pkName1_ctr[] = "Controller1"; -static char pkName1_swtch[] = "0000-0000-0000-0001"; -static char pkName1_port[] = "ethernet:1"; +static char pkName1_ctr[] = "Controller1"; +static char pkName1_swtch[] = "0000-0000-0000-0001"; +static char pkName1_port[] = "ethernet:1"; static void getKeyForKtPort1(key_port_t& k) { memset(&k, 0, sizeof(k)); @@ -81,65 +80,65 @@ static void getKeyForKtPort1(key_port_t& k) { static void getValForKtPort1(val_port_st_t& v) { memset(&v, 0, sizeof(v)); - v.port.port_number = 223; + v.port.port_number = 223; memcpy(v.port.description, "port description", strlen("port description")); // uint8_t description[128]; - v.port.admin_status = 1; // uint8_t admin_status - v.direction = 1; // uint8_t direction - v.port.trunk_allowed_vlan = 1; // uint16_t trunk_allowed_vlan - v.oper_status = 1; - v.direction = 1; + v.port.admin_status = 1; // uint8_t admin_status + v.direction = 1; // uint8_t direction + v.port.trunk_allowed_vlan = 1; // uint16_t trunk_allowed_vlan + v.oper_status = 1; + v.direction = 1; memcpy(v.mac_address, "port macAddr", strlen("port macAddr")); - v.duplex = 1; - v.speed = 1; - v.alarms_status = 1; + v.duplex = 1; + v.speed = 1; + v.alarms_status = 1; memcpy(v.logical_port_id, "port logical_port_id", strlen("port logical_port_id")); } /* PerformSyntaxValidation when controller name is not given*/ TEST_F(PortTest, PerformSyntaxValidation_No_CtrName_01) { - key_port_t k; val_port_st v; Kt_Port ktportobj; getKeyForKtPort1(k); memset(k.sw_key.ctr_key.controller_name, '\0', 32); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktportobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktportobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } /* PerformSyntaxValidation when switch id is not given*/ TEST_F(PortTest, PerformSyntaxValidation_No_SwitchId_02) { - key_port_t k; val_port_st v; Kt_Port ktportobj; getKeyForKtPort1(k); memset(k.sw_key.switch_id, '\0', 256); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktportobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktportobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } /* PerformSyntaxValidation when Port id is not given */ TEST_F(PortTest, PerformSyntaxValidation_No_PortId_03) { - key_port_t k; val_port_st v; Kt_Port ktportobj; getKeyForKtPort1(k); memset(k.port_id, '\0', 32); - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktportobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = ktportobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } /* PerformSyntaxValidation for positive case */ @@ -150,11 +149,12 @@ TEST_F(PortTest, PerformSyntaxValidation_Pos_04) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktportobj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformSyntaxValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* PerformSemanticValidation when row already exists */ @@ -165,17 +165,19 @@ TEST_F(PortTest, PerformSemanticValidation_Create_Neg_01) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } /* PerformSemanticValidation when DB Connection error occurs for UPDATE */ @@ -186,17 +188,19 @@ TEST_F(PortTest, PerformSemanticValidation_update_neg_02) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_UPDATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_UPDATE; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /* PerformSemanticValidation when DB error occurs for DELETE */ @@ -207,17 +211,19 @@ TEST_F(PortTest, PerformSemanticValidation_del_neg_03) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /* PerformSemanticValidation when creating a row */ @@ -227,17 +233,19 @@ TEST_F(PortTest, PerformSemanticValidation_Create_pos_04) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_NOT_EXISTS); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } /* PerformSemanticValidation when DB Connection error occurs for READ */ @@ -247,17 +255,19 @@ TEST_F(PortTest, PerformSemanticValidation_Read_neg_05) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_READ; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_READ; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /* PerformSemanticValidation when Updating row successfully */ @@ -267,17 +277,19 @@ TEST_F(PortTest, PerformSemanticValidation_update_pos_06) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_UPDATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_UPDATE; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* PerformSemanticValidation when Deleting row successfully */ @@ -287,17 +299,19 @@ TEST_F(PortTest, PerformSemanticValidation_del_pos_07) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } @@ -308,15 +322,17 @@ TEST_F(PortTest, PerformSemanticValidation_read_pos_08) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_READ; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_READ; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_STATE); EXPECT_EQ(ODBCM_RC_SUCCESS, ret); } @@ -328,17 +344,19 @@ TEST_F(PortTest, PerformSemanticValidation_Create_Import_neg_09) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t operation = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t operation = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); - int ret = ktportobj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_IMPORT); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); + int ret = ktportobj.PerformSemanticValidation( + db_conn, &k, &v, operation, UNC_DT_IMPORT); - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } /* HandleOperStatus when no key struct is given */ @@ -346,12 +364,12 @@ TEST_F(PortTest, HandleOperStatus_NoKeyStruct_01) { key_port_t *k; val_port_st *v; Kt_Port ktportobj; - k = NULL; - v = NULL; - OdbcmConnectionHandler *db_conn =NULL; + k = NULL; + v = NULL; + OdbcmConnectionHandler *db_conn = NULL; - int ret = ktportobj.HandleOperStatus(db_conn,UNC_DT_STATE,k,v); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = ktportobj.HandleOperStatus(db_conn, UNC_DT_STATE, k, v); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } /* HandleOperStatus when GetOneRow fails */ @@ -361,11 +379,12 @@ TEST_F(PortTest, HandleOperStatus_GetOneRow_Fail_02) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktportobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktportobj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /* HandleOperStatus when GetOneRow is success */ @@ -375,11 +394,12 @@ TEST_F(PortTest, HandleOperStatus_GetOneRow_pos_03) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } /* HandleOperStatus when GetBulkRows fail */ @@ -389,12 +409,14 @@ TEST_F(PortTest, HandleOperStatus_GetBulkRows_Fail_04) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = ktportobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = ktportobj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /* HandleOperStatus when GetBulkRows is success */ @@ -404,11 +426,13 @@ TEST_F(PortTest, HandleOperStatus_GetBulkRows_pos_05) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleOperStatus(db_conn,UNC_DT_STATE,&k,&v); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /* SetOperStatus when UPDATEONEROW fails*/ @@ -417,11 +441,13 @@ TEST_F(PortTest, SetOperStatus_DbNeg_01) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); - int ret = ktportobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplPortOperStatus)1); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); + int ret = ktportobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplPortOperStatus)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } /* SetOperStatus when UPDATEONEROW fails*/ @@ -430,11 +456,13 @@ TEST_F(PortTest, SetOperStatus_DbNeg_02) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktportobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = ktportobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* SetOperStatus when UPDATEONEROW is SUCCESS*/ @@ -443,11 +471,13 @@ TEST_F(PortTest, SetOperStatus_Db_Pos_03) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* SetOperStatus when UPDATEONEROW is SUCCESS and GETONEROW fails*/ @@ -456,47 +486,58 @@ TEST_F(PortTest, SetOperStatus_Pos_04) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktportobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplPortOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktportobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplPortOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/* SetOperStatus when UPDATEONEROW and GETONEROW is SUCCESS and addOutput err value is 0*/ +/* SetOperStatus when UPDATEONEROW and GETONEROW is SUCCESS + * and addOutput err value is 0*/ TEST_F(PortTest, SetOperStatus_Pos_05) { key_port_t k; getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)UNC_OP_UPDATE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplPortOperStatus)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplPortOperStatus)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/* SetOperStatus when UPDATEONEROW and GETONEROW is SUCCESS and addOutput err value is 0*/ +/* SetOperStatus when UPDATEONEROW and GETONEROW is SUCCESS + * and addOutput err value is 0*/ TEST_F(PortTest, SetOperStatus_Pos_06) { key_port_t k; getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - + OdbcmConnectionHandler *db_conn = NULL; + ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplPortOperStatus)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.SetOperStatus( + db_conn, UNC_DT_STATE, &k, (UpplPortOperStatus)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* FrameValidValue when string is more than 48 characters */ @@ -506,7 +547,7 @@ TEST_F(PortTest, FrameValidValue_01) { string abd("01231234567"); Kt_Port ktportobj; - ktportobj.FrameValidValue(abd,v); + ktportobj.FrameValidValue(abd, v); for (uint32_t i(0); i < PFC_ARRAY_CAPACITY(v.port.valid); i++) { ASSERT_EQ(i, v.port.valid[i]); @@ -524,7 +565,7 @@ TEST_F(PortTest, PerformRead_Neg_Option1_01) { memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -536,8 +577,11 @@ TEST_F(PortTest, PerformRead_Neg_Option1_01) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead with negative option1 */ @@ -547,7 +591,33 @@ TEST_F(PortTest, PerformRead_Neg_Option1_02) { memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; + ServerSession sess; + sess.stub_setAddOutput((uint32_t)0); + sess.stub_setAddOutput((uint32_t)0); + sess.stub_setAddOutput((uint32_t)UNC_OP_READ); + sess.stub_setAddOutput((uint32_t)1); + sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); + sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); + sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_NOT_SUPPORTED_BY_STANDBY); + sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); + + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); +} + +/*PerformRead with negative option1 */ +TEST_F(PortTest, PerformRead_Neg_Option1_WriteError) { + key_port_t k; + val_port_st_t v; + memset(v.valid, '\0', sizeof(v.valid)); + memset(v.port.valid, '\0', sizeof(v.port.valid)); + Kt_Port ktportobj; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -556,23 +626,27 @@ TEST_F(PortTest, PerformRead_Neg_Option1_02) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION1); + sess.stub_setAddOutput((uint32_t)1); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, + (uint32_t)UNC_OPT1_DETAIL, (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } + /*PerformRead with unsupported datatype */ TEST_F(PortTest, PerformRead_unsupported_datatype_03) { - key_port_t k ; + key_port_t k; val_port_st_t v; memset(&v, 0, sizeof(v)); getKeyForKtPort1(k); getValForKtPort1(v); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -584,8 +658,10 @@ TEST_F(PortTest, PerformRead_unsupported_datatype_03) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_CANDIDATE, (uint32_t)UNC_OP_READ, + sess, (uint32_t)UNC_OPT1_DETAIL, (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead with negative option2 */ @@ -595,7 +671,7 @@ TEST_F(PortTest, PerformRead_neg_Option2_04) { memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -607,8 +683,11 @@ TEST_F(PortTest, PerformRead_neg_Option2_04) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_MAC_ENTRY_STATIC,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_MAC_ENTRY_STATIC, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead with negative option2 */ @@ -618,7 +697,7 @@ TEST_F(PortTest, PerformRead_neg_Option2_05) { memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -627,11 +706,14 @@ TEST_F(PortTest, PerformRead_neg_Option2_05) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_MAC_ENTRY_STATIC); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION2); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_MAC_ENTRY_STATIC,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_MAC_ENTRY_STATIC, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead with positive option1 */ @@ -642,7 +724,7 @@ TEST_F(PortTest, PerformRead_POS_Option2_06) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -654,8 +736,11 @@ TEST_F(PortTest, PerformRead_POS_Option2_06) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead with positive option2 */ @@ -666,8 +751,9 @@ TEST_F(PortTest, PerformRead_POS_Option2_07) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -676,11 +762,14 @@ TEST_F(PortTest, PerformRead_POS_Option2_07) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_DB_GET); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_DB_GET); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead with positive option2 */ @@ -691,8 +780,9 @@ TEST_F(PortTest, PerformRead_POS_Option2_08) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -701,11 +791,14 @@ TEST_F(PortTest, PerformRead_POS_Option2_08) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_SUCCESS); + sess.stub_setAddOutput((uint32_t)UNC_RC_SUCCESS); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead with option2 as Neighbor */ @@ -716,7 +809,7 @@ TEST_F(PortTest, PerformRead_Neighbor_09) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -728,8 +821,11 @@ TEST_F(PortTest, PerformRead_Neighbor_09) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NEIGHBOR,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NEIGHBOR, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead with positive option2 Neighbor */ @@ -740,8 +836,9 @@ TEST_F(PortTest, PerformRead_Neighbor_10) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -750,11 +847,14 @@ TEST_F(PortTest, PerformRead_Neighbor_10) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NEIGHBOR); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_SUCCESS); + sess.stub_setAddOutput((uint32_t)UNC_RC_SUCCESS); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NEIGHBOR,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NEIGHBOR, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead with positive option2 Neighbor*/ @@ -765,8 +865,9 @@ TEST_F(PortTest, PerformRead_Neighbor_11) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -775,11 +876,14 @@ TEST_F(PortTest, PerformRead_Neighbor_11) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NEIGHBOR); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_DB_GET); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_DB_GET); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NEIGHBOR,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NEIGHBOR, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PerformRead with positive option2 Neighbor*/ @@ -790,8 +894,9 @@ TEST_F(PortTest, PerformRead_Neighbor_12) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -801,8 +906,11 @@ TEST_F(PortTest, PerformRead_Neighbor_12) { sess.stub_setAddOutput((uint32_t)UNC_OPT2_NEIGHBOR); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NEIGHBOR,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NEIGHBOR, (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*PerformRead with Invalid operation */ @@ -813,7 +921,7 @@ TEST_F(PortTest, PerformRead_Invalid_operation_13) { memset(&v, 0, sizeof(v)); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); @@ -825,135 +933,149 @@ TEST_F(PortTest, PerformRead_Invalid_operation_13) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - int ret = ktportobj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_INVALID,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = ktportobj.PerformRead(db_conn, (uint32_t)0, + (uint32_t)0, &k, &v, (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_INVALID, sess, (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* DeleteKeyInstance for Unsupported datatype CANDIDATE */ TEST_F(PortTest, DeleteKeyInstance_UnsupportedForCANDIDATE_01) { - key_port_t k; val_port_st v; memset(&v, 0, sizeof(v)); getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_CANDIDATE,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_CANDIDATE, UNC_KT_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } /* DeleteKeyInstance for Unsupported datatype RUNNING */ TEST_F(PortTest, DeleteKeyInstance_UnsupportedForRUNNING_02) { - key_port_t k; val_port_st v; memset(&v, 0, sizeof(v)); getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_RUNNING,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_RUNNING, UNC_KT_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } /* DeleteKeyInstance for Unsupported datatype STARTUP */ TEST_F(PortTest, DeleteKeyInstance_UnsupportedForSTARTUP_03) { - key_port_t k; val_port_st v; memset(&v, 0, sizeof(v)); getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_STARTUP,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STARTUP, + UNC_KT_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } /* DeleteKeyInstance for Unsupported datatype AUDIT */ TEST_F(PortTest, DeleteKeyInstance_UnsupportedForAUDIT_04) { - key_port_t k; val_port_st v; memset(&v, 0, sizeof(v)); getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_AUDIT,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.DeleteKeyInstance( + db_conn, + &k, UNC_DT_AUDIT, UNC_KT_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } /* DeleteKeyInstance for DB error */ TEST_F(PortTest, DeleteKeyInstance_DbNeg_05) { - key_port_t k; val_port_st v; memset(&v, 0, sizeof(v)); getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.DeleteKeyInstance( + db_conn, + &k, UNC_DT_STATE, UNC_KT_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } /* DeleteKeyInstance for DB error */ TEST_F(PortTest, DeleteKeyInstance_DbNeg_06) { - key_port_t k; getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.DeleteKeyInstance( + db_conn, + &k, UNC_DT_STATE, UNC_KT_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /* DeleteKeyInstance for DB error */ TEST_F(PortTest, DeleteKeyInstance_DbNeg07) { - key_port_t k; getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); + int ret = ktportobj.DeleteKeyInstance( + db_conn, + &k, UNC_DT_STATE, UNC_KT_PORT); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /* DeleteKeyInstance for Positive DB */ TEST_F(PortTest, DeleteKeyInstance_DbPos_08) { - key_port_t k; getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.DeleteKeyInstance( + db_conn, + &k, UNC_DT_STATE, UNC_KT_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* DeleteKeyInstance for Positive DB */ TEST_F(PortTest, DeleteKeyInstance_DbPos_09) { - key_port_t k; getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.DeleteKeyInstance(db_conn,&k,UNC_DT_STATE,UNC_KT_PORT); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.DeleteKeyInstance( + db_conn, &k, UNC_DT_STATE, UNC_KT_PORT); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*IsKeyExists No key struct */ @@ -964,10 +1086,10 @@ TEST_F(PortTest, IsKeyExists_NoKeyStruct_01) { getKeyForKtPort1(k); Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; vector sw_vect_key_value; - int ret = ktportobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = ktportobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } /*IsKeyExists when Db error occurs */ @@ -982,10 +1104,11 @@ TEST_F(PortTest, IsKeyExists_DbNeg_02) { sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /*IsKeyExists when Db error occurs */ @@ -1000,10 +1123,11 @@ TEST_F(PortTest, IsKeyExists_DbNeg_03) { sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); - int ret = ktportobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); + int ret = ktportobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /*IsKeyExists when Db Success occurs */ @@ -1018,10 +1142,11 @@ TEST_F(PortTest, IsKeyExists_Db_Pos_04) { sw_vect_key_value.push_back(pkName1_ctr); sw_vect_key_value.push_back(pkName1_swtch); sw_vect_key_value.push_back(pkName1_port); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = ktportobj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); + int ret = ktportobj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadInternal when it is other than Read operation */ @@ -1029,7 +1154,7 @@ TEST_F(PortTest, ReadInternal_NotRead_01) { vector k; vector v; Kt_Port ktportobj; - uint32_t operation_type = UNC_OP_READ_BULK; + uint32_t operation_type = UNC_OP_READ_BULK; key_port_t key; val_port_st_t value; @@ -1039,11 +1164,13 @@ TEST_F(PortTest, ReadInternal_NotRead_01) { k.push_back(&key); v.push_back(&value); - OdbcmConnectionHandler *db_conn=NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktportobj.ReadInternal(db_conn, k, v, UNC_DT_STATE, operation_type); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktportobj.ReadInternal(db_conn, k, v, UNC_DT_STATE, + operation_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadInternal when Db is SUCCESS */ @@ -1051,7 +1178,7 @@ TEST_F(PortTest, ReadInternal_Read_02) { vector k; vector v; Kt_Port ktportobj; - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; key_port_t key; val_port_st_t val; @@ -1059,12 +1186,14 @@ TEST_F(PortTest, ReadInternal_Read_02) { getValForKtPort1(val); k.push_back(&key); v.push_back(&val); - - OdbcmConnectionHandler *db_conn=NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.ReadInternal(db_conn, k, v, UNC_DT_STATE, operation_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.ReadInternal(db_conn, k, v, UNC_DT_STATE, + operation_type); + + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadBulk Unsupported datatype UNC_DT_CANDIDATE */ @@ -1074,11 +1203,13 @@ TEST_F(PortTest, ReadBulk_Unsupporteddatatype_01) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - OdbcmConnectionHandler *db_conn=NULL; - ReadRequest *read_req=NULL; + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; - int ret = ktportobj.ReadBulk(db_conn,&k,(uint32_t)UNC_DT_CANDIDATE,max_rep_ct,0,PFC_TRUE,PFC_TRUE,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = ktportobj.ReadBulk( + db_conn, &k, (uint32_t)UNC_DT_CANDIDATE, + max_rep_ct, 0, PFC_TRUE, PFC_TRUE, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } /*ReadBulk Unsupported datatype UNC_DT_RUNNING */ @@ -1088,10 +1219,12 @@ TEST_F(PortTest, ReadBulk_Unsupporteddatatype_02) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - OdbcmConnectionHandler *db_conn=NULL; - ReadRequest *read_req=NULL; - int ret = ktportobj.ReadBulk(db_conn,&k,(uint32_t)UNC_DT_RUNNING,max_rep_ct,0,PFC_TRUE,PFC_TRUE,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + int ret = ktportobj.ReadBulk( + db_conn, &k, (uint32_t)UNC_DT_RUNNING, + max_rep_ct, 0, PFC_TRUE, PFC_TRUE, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } /*ReadBulk Unsupported datatype UNC_DT_STARTUP */ @@ -1101,10 +1234,12 @@ TEST_F(PortTest, ReadBulk_Unsupporteddatatype_03) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - OdbcmConnectionHandler *db_conn=NULL; - ReadRequest *read_req=NULL; - int ret = ktportobj.ReadBulk(db_conn,&k,(uint32_t)UNC_DT_STARTUP,max_rep_ct,0,PFC_TRUE,PFC_TRUE,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + int ret = ktportobj.ReadBulk( + db_conn, &k, (uint32_t)UNC_DT_STARTUP, + max_rep_ct, 0, PFC_TRUE, PFC_TRUE, read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } /*ReadBulk when max_rep_ct is NULL */ @@ -1114,10 +1249,12 @@ TEST_F(PortTest, ReadBulk_max_rep_ct_NULL_04) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - OdbcmConnectionHandler *db_conn=NULL; - ReadRequest *read_req=NULL; - int ret = ktportobj.ReadBulk(db_conn,&k,(uint32_t)UNC_DT_STATE,max_rep_ct,0,PFC_TRUE,PFC_TRUE,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + ReadRequest *read_req = NULL; + int ret = ktportobj.ReadBulk( + db_conn, &k, (uint32_t)UNC_DT_STATE, + max_rep_ct, 0, PFC_TRUE, PFC_TRUE, read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadBulk when DB is SUCCESS */ @@ -1126,17 +1263,19 @@ TEST_F(PortTest, ReadBulk_Pos_05) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t max_rep_ct=1; + uint32_t max_rep_ct = 1; pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); - int child_index=1; - OdbcmConnectionHandler *db_conn=NULL; + int child_index = 1; + OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktportobj.ReadBulk(db_conn, &k, (uint32_t)UNC_DT_STATE, - max_rep_ct, child_index, parent_call, - is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktportobj.ReadBulk( + db_conn, &k, (uint32_t)UNC_DT_STATE, + max_rep_ct, child_index, parent_call, + is_read_next, &read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadBulk when DB Connection error occurs */ @@ -1145,17 +1284,19 @@ TEST_F(PortTest, ReadBulk_DbNeg_06) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t max_rep_ct=1; + uint32_t max_rep_ct = 1; pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); - int child_index=1; - OdbcmConnectionHandler *db_conn=NULL; + int child_index = 1; + OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.ReadBulk(db_conn, &k, (uint32_t)UNC_DT_STATE, - max_rep_ct, child_index, parent_call, - is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.ReadBulk( + db_conn, &k, (uint32_t)UNC_DT_STATE, + max_rep_ct, child_index, parent_call, + is_read_next, &read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /*ReadBulk when parent_call is false*/ @@ -1164,17 +1305,19 @@ TEST_F(PortTest, ReadBulk_Pos_parent_false_07) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t max_rep_ct=1; - pfc_bool_t parent_call=false; - pfc_bool_t is_read_next=true; - int child_index=1; - OdbcmConnectionHandler *db_conn=NULL; + uint32_t max_rep_ct = 1; + pfc_bool_t parent_call = false; + pfc_bool_t is_read_next = true; + int child_index = 1; + OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = ktportobj.ReadBulk(db_conn, &k, (uint32_t)UNC_DT_STATE, - max_rep_ct, child_index, parent_call, - is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = ktportobj.ReadBulk( + db_conn, &k, (uint32_t)UNC_DT_STATE, + max_rep_ct, child_index, parent_call, + is_read_next, &read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* ReadBulkInternal when there is no record in DB */ @@ -1186,12 +1329,15 @@ TEST_F(PortTest, ReadBulkInternal_DbNeg_01) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktportobj.ReadBulkInternal(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + int ret = ktportobj.ReadBulkInternal( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /* ReadBulkInternal when DB connection error occurs */ @@ -1203,12 +1349,15 @@ TEST_F(PortTest, ReadBulkInternal_DbNeg_02) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.ReadBulkInternal(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.ReadBulkInternal( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /* ReadBulkInternal when DB error occurs */ @@ -1220,12 +1369,15 @@ TEST_F(PortTest, ReadBulkInternal_DbNeg_03) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = ktportobj.ReadBulkInternal(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = ktportobj.ReadBulkInternal( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /* ReadBulkInternal when DB is success */ @@ -1237,12 +1389,15 @@ TEST_F(PortTest, ReadBulkInternal_Pos_04) { Kt_Port ktportobj; uint32_t max_rep_ct(1); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktportobj.ReadBulkInternal(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktportobj.ReadBulkInternal( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* ReadBulkInternal when DB is success */ @@ -1253,12 +1408,14 @@ TEST_F(PortTest, ReadBulkInternal_Pos_05) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t max_rep_ct=0; - vector vect_val_port; + uint32_t max_rep_ct = 0; + vector vect_val_port; vector vect_port_id; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadBulkInternal(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadBulkInternal( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadPortValFromDB when it is other than READ operation */ @@ -1271,14 +1428,16 @@ TEST_F(PortTest, ReadPortValFromDB_NoREAD_01) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_CREATE; + uint32_t operation_type = UNC_OP_CREATE; uint32_t max_rep_ct; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadPortValFromDB when there is no record in DB for GETONEROW */ @@ -1291,14 +1450,17 @@ TEST_F(PortTest, ReadPortValFromDB_ReadNeg_02) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /*ReadPortValFromDB when there is DB connection error for GETONEROW */ @@ -1311,14 +1473,17 @@ TEST_F(PortTest, ReadPortValFromDB_ReadNeg_03) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /*ReadPortValFromDB when there is DB Failure for GETONEROW */ @@ -1331,14 +1496,17 @@ TEST_F(PortTest, ReadPortValFromDB_ReadNeg_04) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /*ReadPortValFromDB when there is DB Success for GETONEROW */ @@ -1351,13 +1519,16 @@ TEST_F(PortTest, ReadPortValFromDB_ReadPOS_05) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ; + uint32_t operation_type = UNC_OP_READ; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); EXPECT_EQ(ODBCM_RC_SUCCESS, ret); } @@ -1371,14 +1542,17 @@ TEST_F(PortTest, ReadPortValFromDB_ReadBulkNeg_06) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ_BULK; + uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /*ReadPortValFromDB when there is DB connection error for GETBULKROWS */ @@ -1391,14 +1565,17 @@ TEST_F(PortTest, ReadPortValFromDB_ReadBulkNeg_07) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ_BULK; + uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /*ReadPortValFromDB when there is DB Failure for GETBULKROWS */ @@ -1411,14 +1588,17 @@ TEST_F(PortTest, ReadPortValFromDB_ReadBulkNeg_08) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ_BULK; + uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /*ReadPortValFromDB when there is DB Success for GETBULKROWS */ @@ -1431,14 +1611,17 @@ TEST_F(PortTest, ReadPortValFromDB_09_ReadBulkPos) { memset(k.port_id, '\0', 32); memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - vector vect_val_port; + vector vect_val_port; vector vect_port_id; - uint32_t operation_type = UNC_OP_READ_BULK; + uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadPortValFromDB(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,operation_type,max_rep_ct,vect_val_port,vect_port_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadPortValFromDB( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + operation_type, max_rep_ct, vect_val_port, vect_port_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadNeighbor when negative case of DB */ @@ -1448,9 +1631,11 @@ TEST_F(PortTest, ReadNeighbor_Dbneg_01) { Kt_Port ktportobj; val_port_st_neighbor neighbor_obj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = ktportobj.ReadNeighbor(db_conn,&k,&k,(uint32_t)UNC_DT_STATE,neighbor_obj); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = ktportobj.ReadNeighbor( + db_conn, &k, &k, (uint32_t)UNC_DT_STATE, + neighbor_obj); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /*ReadNeighbor when Positive case of DB */ @@ -1461,11 +1646,14 @@ TEST_F(PortTest, ReadNeighbor_Dbneg_02) { Kt_Port ktportobj; val_port_st_neighbor neighbor_obj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.ReadNeighbor(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,neighbor_obj); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.ReadNeighbor( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + neighbor_obj); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*ReadNeighbor when there is no record in DB */ @@ -1476,11 +1664,14 @@ TEST_F(PortTest, ReadNeighbor_Dbneg_03) { Kt_Port ktportobj; val_port_st_neighbor neighbor_obj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktportobj.ReadNeighbor(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,neighbor_obj); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + int ret = ktportobj.ReadNeighbor( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + neighbor_obj); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /*ReadNeighbor when there is Connection error in DB */ @@ -1491,11 +1682,14 @@ TEST_F(PortTest, ReadNeighbor_Dbneg_04) { Kt_Port ktportobj; val_port_st_neighbor neighbor_obj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = ktportobj.ReadNeighbor(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,neighbor_obj); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); + int ret = ktportobj.ReadNeighbor( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + neighbor_obj); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /*ReadNeighbor when DB fails */ @@ -1506,11 +1700,14 @@ TEST_F(PortTest, ReadNeighbor_Dbneg_05) { Kt_Port ktportobj; val_port_st_neighbor neighbor_obj; - OdbcmConnectionHandler *db_conn =NULL; + OdbcmConnectionHandler *db_conn = NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktportobj.ReadNeighbor(db_conn,&k,&v,(uint32_t)UNC_DT_STATE,neighbor_obj); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktportobj.ReadNeighbor( + db_conn, &k, &v, (uint32_t)UNC_DT_STATE, + neighbor_obj); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } /*PopulateSchemaForValidFlag when UPDATEONEROW is Success */ @@ -1521,11 +1718,13 @@ TEST_F(PortTest, PopulateSchemaForValidFlag_pos_01) { getKeyForKtPort1(k); Kt_Port ktportobj; - string valid_new = "123456789ab"; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.PopulateSchemaForValidFlag(db_conn,&k,&v,valid_new,(uint32_t)UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + string valid_new = "123456789ab"; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.PopulateSchemaForValidFlag( + db_conn, &k, &v, valid_new, (uint32_t)UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*PopulateSchemaForValidFlag when UPDATEONEROW is failed */ @@ -1536,11 +1735,13 @@ TEST_F(PortTest, PopulateSchemaForValidFlag_neg_02) { getKeyForKtPort1(k); Kt_Port ktportobj; - string valid_new = "asss"; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); - int ret = ktportobj.PopulateSchemaForValidFlag(db_conn,&k,&v,valid_new,(uint32_t)UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + string valid_new = "asss"; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); + int ret = ktportobj.PopulateSchemaForValidFlag( + db_conn, &k, &v, valid_new, (uint32_t)UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } /*UpdatePortValidFlag when UPDATEONEROW is failed */ @@ -1551,11 +1752,13 @@ TEST_F(PortTest, UpdatePortValidFlag_01) { getKeyForKtPort1(k); Kt_Port ktportobj; - string valid_new = "asss"; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); - int ret = ktportobj.PopulateSchemaForValidFlag(db_conn,&k,&v,valid_new,(uint32_t)UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + string valid_new = "asss"; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_FAILED); + int ret = ktportobj.PopulateSchemaForValidFlag( + db_conn, &k, &v, valid_new, (uint32_t)UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } /*GetAlarmStatus function when GETONEROW is success */ @@ -1564,11 +1767,12 @@ TEST_F(PortTest, GetAlarmStatus_sucess_01) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint64_t alarm_status = 1; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.GetAlarmStatus(db_conn, UNC_DT_STATE, &k, alarm_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint64_t alarm_status = 1; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.GetAlarmStatus(db_conn, UNC_DT_STATE, &k, alarm_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*GetAlarmStatus function when GETONEROW is failed */ @@ -1577,239 +1781,296 @@ TEST_F(PortTest, GetAlarmStatus_sucess_02) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint64_t alarm_status = 1; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = ktportobj.GetAlarmStatus(db_conn, UNC_DT_STATE, &k, alarm_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + uint64_t alarm_status = 1; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + int ret = ktportobj.GetAlarmStatus(db_conn, UNC_DT_STATE, &k, alarm_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_DEFAULT_FLOW alarm */ +/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW + * is SUCCESS for UNC_DEFAULT_FLOW alarm */ TEST_F(PortTest, HandleDriverAlarms_01) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_DEFAULT_FLOW; - uint32_t oper_type = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + uint32_t alarm_type = UNC_DEFAULT_FLOW; + uint32_t oper_type = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_DEFAULT_FLOW alarm */ +/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW + * is SUCCESS for UNC_DEFAULT_FLOW alarm */ TEST_F(PortTest, HandleDriverAlarms_02) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_DEFAULT_FLOW; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + uint32_t alarm_type = UNC_DEFAULT_FLOW; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_PORT_DIRECTION alarm */ +/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW + * is SUCCESS for UNC_PORT_DIRECTION alarm */ TEST_F(PortTest, HandleDriverAlarms_03) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_DIRECTION; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + uint32_t alarm_type = UNC_PORT_DIRECTION; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_PORT_DIRECTION alarm */ +/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW + * is SUCCESS for UNC_PORT_DIRECTION alarm */ TEST_F(PortTest, HandleDriverAlarms_04) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_DIRECTION; - uint32_t oper_type = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + uint32_t alarm_type = UNC_PORT_DIRECTION; + uint32_t oper_type = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ +/*HandleDriverAlarms function when GETONEROW + * and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ TEST_F(PortTest, HandleDriverAlarms_05) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_CONGES; - uint32_t oper_type = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + uint32_t alarm_type = UNC_PORT_CONGES; + uint32_t oper_type = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ +/*HandleDriverAlarms function when GETONEROW and + * UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ TEST_F(PortTest, HandleDriverAlarms_06) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_CONGES; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + uint32_t alarm_type = UNC_PORT_CONGES; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } -/*HandleDriverAlarms function when GETONEROW is Failed and UPDATEONEROW is SUCCESS for UNC_PORT_DIRECTION alarm */ +/*HandleDriverAlarms function when GETONEROW is Failed + * and UPDATEONEROW is SUCCESS for UNC_PORT_DIRECTION alarm */ TEST_F(PortTest, HandleDriverAlarms_07) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_DIRECTION; - uint32_t oper_type = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t alarm_type = UNC_PORT_DIRECTION; + uint32_t oper_type = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/*HandleDriverAlarms function when GETONEROW is Failed and UPDATEONEROW is SUCCESS for UNC_PORT_DIRECTION alarm */ +/*HandleDriverAlarms function when GETONEROW is Failed + * and UPDATEONEROW is SUCCESS for UNC_PORT_DIRECTION alarm */ TEST_F(PortTest, HandleDriverAlarms_08) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_DIRECTION; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t alarm_type = UNC_PORT_DIRECTION; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/*HandleDriverAlarms function when GETONEROW is Failed and UPDATEONEROW is SUCCESS for UNC_DEFAULT_FLOW alarm */ +/*HandleDriverAlarms function when GETONEROW is Failed + * and UPDATEONEROW is SUCCESS for UNC_DEFAULT_FLOW alarm */ TEST_F(PortTest, HandleDriverAlarms_09) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_DEFAULT_FLOW; - uint32_t oper_type = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t alarm_type = UNC_DEFAULT_FLOW; + uint32_t oper_type = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } - -/*HandleDriverAlarms function when GETONEROW is Failed and UPDATEONEROW is SUCCESS for UNC_DEFAULT_FLOW alarm */ + +/*HandleDriverAlarms function when GETONEROW is Failed + * and UPDATEONEROW is SUCCESS for UNC_DEFAULT_FLOW alarm */ TEST_F(PortTest, HandleDriverAlarms_10) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_DEFAULT_FLOW; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t alarm_type = UNC_DEFAULT_FLOW; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/*HandleDriverAlarms function when GETONEROW is Failed and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ +/*HandleDriverAlarms function when GETONEROW is Failed + * and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ TEST_F(PortTest, HandleDriverAlarms_11) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_CONGES; - uint32_t oper_type = UNC_OP_CREATE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t alarm_type = UNC_PORT_CONGES; + uint32_t oper_type = UNC_OP_CREATE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/*HandleDriverAlarms function when GETONEROW is Failed and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ +/*HandleDriverAlarms function when GETONEROW + * is Failed and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ TEST_F(PortTest, HandleDriverAlarms_12) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_CONGES; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t alarm_type = UNC_PORT_CONGES; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_FAILED); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ +/*HandleDriverAlarms function when GETONEROW + * and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ TEST_F(PortTest, HandleDriverAlarms_13) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_CONGES; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_IMPORT, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + uint32_t alarm_type = UNC_PORT_CONGES; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_IMPORT, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -/*HandleDriverAlarms function when GETONEROW and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ +/*HandleDriverAlarms function when GETONEROW + * and UPDATEONEROW is SUCCESS for UNC_PORT_CONGES alarm */ TEST_F(PortTest, HandleDriverAlarms_14) { key_port_t k; val_port_st v; getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_CONGES; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t alarm_type = UNC_PORT_CONGES; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /* HandleDriverAlarms when GETONEROW and UPDATEONEROW are success */ @@ -1819,17 +2080,20 @@ TEST_F(PortTest, HandleDriverAlarm_15) { getKeyForKtPort1(k); Kt_Port ktportobj; - uint32_t alarm_type = UNC_PORT_CONGES; - uint32_t oper_type = UNC_OP_DELETE; - OdbcmConnectionHandler *db_conn =NULL; + uint32_t alarm_type = UNC_PORT_CONGES; + uint32_t oper_type = UNC_OP_DELETE; + OdbcmConnectionHandler *db_conn = NULL; ServerSession sess; sess.stub_setAddOutput((uint32_t)UNC_OP_UPDATE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); sess.stub_setAddOutput((uint32_t)UNC_KT_PORT); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_FAILURE, ret); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.HandleDriverAlarms( + db_conn, UNC_DT_STATE, alarm_type, oper_type, &k, &v); + EXPECT_EQ(UNC_UPPL_RC_FAILURE, ret); } /*SubDomainOperStatusHandling when GETBULKROWS is success*/ @@ -1838,13 +2102,15 @@ TEST_F(PortTest, SubDomainOperStatusHandling_Dbneg_01) { Kt_Port ktportobj; memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - string controller_name = "Controller1"; - string switch_id = "switch id1"; - string physical_port_id = "Port1"; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = ktportobj.SubDomainOperStatusHandling(db_conn, UNC_DT_STATE, controller_name, switch_id, physical_port_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + string controller_name = "Controller1"; + string switch_id = "switch id1"; + string physical_port_id = "Port1"; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); + int ret = ktportobj.SubDomainOperStatusHandling( + db_conn, UNC_DT_STATE, controller_name, switch_id, physical_port_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*SubDomainOperStatusHandling when GETBULKROWS is failed */ @@ -1853,13 +2119,15 @@ TEST_F(PortTest, SubDomainOperStatusHandling_Dbneg_02) { Kt_Port ktportobj; memset(v.valid, '\0', sizeof(v.valid)); memset(v.port.valid, '\0', sizeof(v.port.valid)); - string controller_name = "Controller1"; - string switch_id = "switch id1"; - string physical_port_id = "Port1"; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = ktportobj.SubDomainOperStatusHandling(db_conn, UNC_DT_STATE, controller_name, switch_id, physical_port_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + string controller_name = "Controller1"; + string switch_id = "switch id1"; + string physical_port_id = "Port1"; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = ktportobj.SubDomainOperStatusHandling( + db_conn, UNC_DT_STATE, controller_name, switch_id, physical_port_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*NotifyOperStatus when GETBULKROWS is failed */ @@ -1870,10 +2138,12 @@ TEST_F(PortTest, NotifyOperStatus_01) { vector ref_oper_status; Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = ktportobj.NotifyOperStatus(db_conn, UNC_DT_STATE, &k, &v, ref_oper_status); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); + int ret = ktportobj.NotifyOperStatus( + db_conn, UNC_DT_STATE, &k, &v, ref_oper_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } /*GetPortValStructure function calling */ @@ -1885,14 +2155,15 @@ TEST_F(PortTest, GetPortValStructure_01) { val_port_st_t *val_port_valid_st(NULL); vector vect_table_attr_schema; vector vect_prim_keys; - uint8_t operation_type=UNC_OP_UPDATE; + uint8_t operation_type = UNC_OP_UPDATE; stringstream valid; Kt_Port ktportobj; - OdbcmConnectionHandler *db_conn =NULL; - int ret = UPPL_RC_SUCCESS; - ktportobj.GetPortValStructure(db_conn, obj_val_port,vect_table_attr_schema, vect_prim_keys, - operation_type, val_port_valid_st,valid); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + OdbcmConnectionHandler *db_conn = NULL; + int ret = UNC_RC_SUCCESS; + ktportobj.GetPortValStructure( + db_conn, obj_val_port, vect_table_attr_schema, vect_prim_keys, + operation_type, val_port_valid_st, valid); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /* UpdatePortValidFlag when there is no record in DB*/ @@ -1906,12 +2177,13 @@ TEST_F(PortTest, UpdatePortValidFlag_DbNeg_01) { val_port_st_t v_st; memset(&v_st, 0, sizeof(v_st)); - unc_keytype_validflag_t new_valid_val = UNC_VF_VALID; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - int ret = ktportobj.UpdatePortValidFlag(db_conn, &k, &v, v_st, + unc_keytype_validflag_t new_valid_val = UNC_VF_VALID; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); + int ret = ktportobj.UpdatePortValidFlag(db_conn, &k, &v, v_st, new_valid_val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /* UpdatePortValidFlag when GETONEROW is success */ @@ -1925,12 +2197,13 @@ TEST_F(PortTest, UpdatePortValidFlag_Dbpos_02) { val_port_st_t v_st; memset(&v_st, 0, sizeof(v_st)); - unc_keytype_validflag_t new_valid_val = UNC_VF_VALID; - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.UpdatePortValidFlag(db_conn, &k, &v, v_st, + unc_keytype_validflag_t new_valid_val = UNC_VF_VALID; + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.UpdatePortValidFlag(db_conn, &k, &v, v_st, new_valid_val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*UpdatePortValidFlag when GETONEROW is success */ @@ -1945,9 +2218,10 @@ TEST_F(PortTest, UpdatePortValidFlag_NoFillValue_03) { memset(&v_st, 0, sizeof(v_st)); unc_keytype_validflag_t new_valid_val(UNC_VF_INVALID); - OdbcmConnectionHandler *db_conn =NULL; - unc::uppl::ODBCManager::stub_setResultcode(unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = ktportobj.UpdatePortValidFlag(db_conn, &k, &v, v_st, + OdbcmConnectionHandler *db_conn = NULL; + unc::uppl::ODBCManager::stub_setResultcode( + unc::uppl::ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + int ret = ktportobj.UpdatePortValidFlag(db_conn, &k, &v, v_st, new_valid_val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } diff --git a/coordinator/test/modules/uppl/utest/Switch_ut.cc b/coordinator/test/modules/uppl/utest/Switch_ut.cc index 11a09545..bcc2b369 100644 --- a/coordinator/test/modules/uppl/utest/Switch_ut.cc +++ b/coordinator/test/modules/uppl/utest/Switch_ut.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 NEC Corporation + * Copyright (c) 2012-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -50,7 +51,6 @@ #include #include #include "PhysicalLayerStub.hh" -#include #include "ut_util.hh" using namespace pfc; @@ -61,11 +61,10 @@ using namespace unc::uppl::test; using namespace std; class SwitchTest - : public UpplTestEnv -{ + : public UpplTestEnv { }; -static char pkName1[] = "{0x10,0xbc}"; +static char pkName1[] = "{0x10, 0xbc}"; static char pkName2[] = "controller1"; static void getKeyForKtSwitch1(key_switch_t& k) { @@ -79,11 +78,11 @@ static void getValForKtSwitch1(val_switch_t& v, bool zero) { memset(&v, 0, sizeof(v)); } - // uint8_t description[128] + // uint8_t description[128] pfc_strlcpy(reinterpret_cast(v.description), "switch description", sizeof(v.description)); - // uint8_t model[16] + // uint8_t model[16] pfc_strlcpy(reinterpret_cast(v.model), "switch model", sizeof(v.model)); @@ -96,10 +95,10 @@ static void getValForKtSwitch1(val_switch_t& v, bool zero) { inet_pton(AF_INET6, (const char *)ipv6_add.c_str(), &v.ipv6_address.s6_addr); - // uint8_t admin_status + // uint8_t admin_status v.admin_status = 0; - // uint8_t domain_name[32] + // uint8_t domain_name[32] pfc_strlcpy(reinterpret_cast(v.domain_name), "domain_name", sizeof(v.domain_name)); } @@ -112,17 +111,17 @@ static void getValForKtSwitch1(val_switch_st_t& v) { memset(&v, 0, sizeof(v)); getValForKtSwitch1(v.switch_val, false); - // uint8_t manufacturer + // uint8_t manufacturer pfc_strlcpy(reinterpret_cast(v.manufacturer), "NEC CORP", sizeof(v.manufacturer)); - // uint8_t hardware + // uint8_t hardware pfc_strlcpy(reinterpret_cast(v.hardware), "HW", sizeof(v.hardware)); - // uint8_t software + // uint8_t software pfc_strlcpy(reinterpret_cast(v.software), "SW", sizeof(v.software)); - // uint64_t alarms_status + // uint64_t alarms_status v.alarms_status = 0x01; } @@ -140,29 +139,29 @@ static void getReqHeader(physical_request_header& rh, } /********TEST CASES***************/ -//Validating Key:ControllerId Not found, Operation:UNC_OP_CREATE +// Validating Key:ControllerId Not found, Operation:UNC_OP_CREATE TEST_F(SwitchTest, PerformSyntxCheck_controllerId_notFound_01) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; memset(k.ctr_key.controller_name, '\0', 32); memset(k.switch_id, '\0', 256); memcpy(k.switch_id, pkName1, strlen(pkName1)); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, &k, &v, - operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validating Key:ControllerId Not found, Operation:UNC_OP_UPDATE +// Validating Key:ControllerId Not found, Operation:UNC_OP_UPDATE TEST_F(SwitchTest, PerformSyntxCheck_controllerId_notFound_02) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; memset(k.ctr_key.controller_name, '\0', 32); memset(k.switch_id, '\0', 256); memcpy(k.switch_id, pkName1, strlen(pkName1)); @@ -171,17 +170,17 @@ TEST_F(SwitchTest, PerformSyntxCheck_controllerId_notFound_02) { uint32_t operation = UNC_OP_UPDATE; OdbcmConnectionHandler *db_conn =NULL; int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, &k, &v, - operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validating Key:ControllerId Not found, Operation:UNC_OP_DELETE +// Validating Key:ControllerId Not found, Operation:UNC_OP_DELETE TEST_F(SwitchTest, PerformSyntxCheck_controllerId_notFound_03) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; memset(k.ctr_key.controller_name, '\0', 32); memset(k.switch_id, '\0', 256); memcpy(k.switch_id, pkName1, strlen(pkName1)); @@ -190,17 +189,17 @@ TEST_F(SwitchTest, PerformSyntxCheck_controllerId_notFound_03) { uint32_t operation = UNC_OP_DELETE; OdbcmConnectionHandler *db_conn =NULL; int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, &k, &v, - operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validating Key:ControllerId Not found, Operation:UNC_OP_READ +// Validating Key:ControllerId Not found, Operation:UNC_OP_READ TEST_F(SwitchTest, PerformSyntxCheck_controllerId_notFound_04) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; memset(k.ctr_key.controller_name, '\0', 32); memset(k.switch_id, '\0', 256); memcpy(k.switch_id, pkName1, strlen(pkName1)); @@ -209,11 +208,11 @@ TEST_F(SwitchTest, PerformSyntxCheck_controllerId_notFound_04) { uint32_t operation = UNC_OP_READ; OdbcmConnectionHandler *db_conn =NULL; int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, &k, &v, - operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validating Key:SwitchId_notFound, Operation:UNC_OP_CREATE +// Validating Key:SwitchId_notFound, Operation:UNC_OP_CREATE TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_01) { key_switch_t k; val_switch_st_t v; @@ -228,11 +227,11 @@ TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_01) { uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, &k, &v, - operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validating Key:SwitchId_notFound, Operation:UNC_OP_UPDATE +// Validating Key:SwitchId_notFound, Operation:UNC_OP_UPDATE TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_02) { key_switch_t k; val_switch_st_t v; @@ -247,11 +246,11 @@ TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_02) { uint32_t operation = UNC_OP_UPDATE; OdbcmConnectionHandler *db_conn =NULL; int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, &k, &v, - operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validating Key:SwitchId_notFound, Operation:UNC_OP_DELETE +// Validating Key:SwitchId_notFound, Operation:UNC_OP_DELETE TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_03) { key_switch_t k; val_switch_st_t v; @@ -265,11 +264,16 @@ TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_03) { rh.key_type = UNC_KT_SWITCH; uint32_t operation = UNC_OP_DELETE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + int ret = KtSwitchObj.PerformSyntaxValidation( + db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validating Key:SwitchId_notFound, Operation:UNC_OP_READ +// Validating Key:SwitchId_notFound, Operation:UNC_OP_READ TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_04) { key_switch_t k; val_switch_st_t v; @@ -284,11 +288,11 @@ TEST_F(SwitchTest, PerformSyntxCheck_SwitchId_notFound_04) { uint32_t operation = UNC_OP_READ; OdbcmConnectionHandler *db_conn =NULL; int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, &k, &v, - operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_CFG_SYNTAX, ret); + operation, UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_CFG_SYNTAX, ret); } -//Validation of key and value struct-Success +// Validation of key and value struct-Success TEST_F(SwitchTest, PerformSyntxCheck_ValStruct_success) { key_switch_t k; val_switch_t v; @@ -297,12 +301,16 @@ TEST_F(SwitchTest, PerformSyntxCheck_ValStruct_success) { getValForKtSwitch1(v); uint32_t operation = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.PerformSyntaxValidation(db_conn,&k,&v,operation,UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.PerformSyntaxValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*******IsKeyExists*************/ -//No key given..Returning error +// No key given..Returning error TEST_F(SwitchTest, IskeyExists_NoKey) { key_switch_t k; Kt_Switch KtSwitchObj; @@ -313,16 +321,16 @@ TEST_F(SwitchTest, IskeyExists_NoKey) { rh.key_type = UNC_KT_SWITCH; vector sw_vect_key_value; OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = KtSwitchObj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } -//DB connection not available,Returns Error +// DB connection not available, Returns Error TEST_F(SwitchTest, IskeyExists_Db_Connxn_Error) { key_switch_t k; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -336,16 +344,16 @@ TEST_F(SwitchTest, IskeyExists_Db_Connxn_Error) { OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + int ret = KtSwitchObj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//DB returned success for Row exists +// DB returned success for Row exists TEST_F(SwitchTest, IskeyExists_Success) { key_switch_t k; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -357,17 +365,18 @@ TEST_F(SwitchTest, IskeyExists_Success) { sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtSwitchObj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); + int ret = KtSwitchObj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//DB Returned failure for IsRowExists +// DB Returned failure for IsRowExists TEST_F(SwitchTest, IskeyExists_Error) { key_switch_t k; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -380,18 +389,18 @@ TEST_F(SwitchTest, IskeyExists_Error) { sw_vect_key_value.push_back(pkName2); OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_FAILED); - int ret = KtSwitchObj.IsKeyExists(db_conn,UNC_DT_STATE,sw_vect_key_value); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + int ret = KtSwitchObj.IsKeyExists(db_conn, UNC_DT_STATE, sw_vect_key_value); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } /****DeleteKeyInstance****/ -//Delete operation on unsupported DB: STARTUP +// Delete operation on unsupported DB: STARTUP TEST_F(SwitchTest, DeleteKeyInstance_UnsupportedDB_01) { key_switch_t k; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -399,16 +408,19 @@ TEST_F(SwitchTest, DeleteKeyInstance_UnsupportedDB_01) { memcpy(k.switch_id, pkName1, strlen(pkName1)); getReqHeader(rh, UNC_OP_READ_SIBLING_COUNT, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STARTUP, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STARTUP, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -//Delete for unsupported DB UNC_DT_CANDIDATE +// Delete for unsupported DB UNC_DT_CANDIDATE TEST_F(SwitchTest, DeleteKeyInstance_UnsupportedDB_02) { key_switch_t k; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -416,16 +428,19 @@ TEST_F(SwitchTest, DeleteKeyInstance_UnsupportedDB_02) { memcpy(k.switch_id, pkName1, strlen(pkName1)); getReqHeader(rh, UNC_OP_READ_SIBLING_COUNT, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_CANDIDATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_CANDIDATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -//Delete for unsupported DB UNC_DT_RUNNING +// Delete for unsupported DB UNC_DT_RUNNING TEST_F(SwitchTest, DeleteKeyInstance_UnsupportedDB_03) { key_switch_t k; Kt_Switch KtSwitchObj; physical_request_header rh; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -433,11 +448,14 @@ TEST_F(SwitchTest, DeleteKeyInstance_UnsupportedDB_03) { memcpy(k.switch_id, pkName1, strlen(pkName1)); getReqHeader(rh, UNC_OP_READ_SIBLING_COUNT, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_RUNNING, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_RUNNING, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } -//Delete operation failed in switch common table +// Delete operation failed in switch common table TEST_F(SwitchTest, DeleteKeyInstance_Fail_In_Db) { key_switch_t k; memset(&k, 0, sizeof(key_switch_t)); @@ -445,49 +463,64 @@ TEST_F(SwitchTest, DeleteKeyInstance_Fail_In_Db) { physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -//Delete operation failed due to DB connection not available -TEST_F(SwitchTest, DeleteKeyInstance_Db_Conxn_Error) { +// Delete operation failed due to DB connection not available +TEST_F(SwitchTest, DeleteKeyInstance_Db_Conxn_Error) { key_switch_t k; memset(&k, 0, sizeof(key_switch_t)); Kt_Switch KtSwitchObj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, + ODBCM_RC_CONNECTION_ERROR); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } -//Row not Exixts to Delete -TEST_F(SwitchTest, DeleteKeyInstance_RowNotExists) { +// Row not Exixts to Delete +TEST_F(SwitchTest, DeleteKeyInstance_RowNotExists) { key_switch_t k; memset(&k, 0, sizeof(key_switch_t)); Kt_Switch KtSwitchObj; OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, + ODBCM_RC_ROW_NOT_EXISTS); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -//DElete operation Success -TEST_F(SwitchTest, DeleteKeyInstance_Success) { +// DElete operation Success +TEST_F(SwitchTest, DeleteKeyInstance_Success) { key_switch_t k; memset(&k, 0, sizeof(key_switch_t)); Kt_Switch KtSwitchObj; physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Delete Child classess Success -TEST_F(SwitchTest, DeleteKeyInstance_Child_Del) { +// Delete Child classess Success +TEST_F(SwitchTest, DeleteKeyInstance_Child_Del) { key_logical_port_t k; memset(&k, 0, sizeof(key_logical_port_t)); Kt_Switch KtSwitchObj; @@ -496,12 +529,15 @@ TEST_F(SwitchTest, DeleteKeyInstance_Child_Del) { OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Error Deleting port in DB -TEST_F(SwitchTest, DeleteKeyInstance_Del_port) { +// Error Deleting port in DB +TEST_F(SwitchTest, DeleteKeyInstance_Del_port) { key_port_t k; memset(&k, 0, sizeof(key_port_t)); Kt_Switch KtSwitchObj; @@ -510,12 +546,15 @@ TEST_F(SwitchTest, DeleteKeyInstance_Del_port) { OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, ODBCM_RC_FAILED); - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } -//No Child Instance exist to delete -TEST_F(SwitchTest, DeleteKeyInstance_NoChildInstance) { +// No Child Instance exist to delete +TEST_F(SwitchTest, DeleteKeyInstance_NoChildInstance) { key_switch_t k; getKeyForKtSwitch1(k); @@ -523,19 +562,24 @@ TEST_F(SwitchTest, DeleteKeyInstance_NoChildInstance) { physical_request_header rh; getReqHeader(rh, UNC_OP_CREATE, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, ODBCM_RC_ROW_NOT_EXISTS); - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.DeleteKeyInstance(db_conn, &k, UNC_DT_STATE, UNC_KT_SWITCH); - EXPECT_EQ(UPPL_RC_ERR_DB_DELETE, ret); + ODBCManager::stub_setResultcode(ODBCManager::DELETEONEROW, + ODBCM_RC_ROW_NOT_EXISTS); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.DeleteKeyInstance(db_conn, + &k, + UNC_DT_STATE, + UNC_KT_SWITCH); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_DELETE, ret); } /******PerformSemanticValidatin***********/ -//Key for parent not exists +// Key for parent not exists TEST_F(SwitchTest, PerformSemanticValid_NoParentKey) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -544,19 +588,24 @@ TEST_F(SwitchTest, PerformSemanticValid_NoParentKey) { OdbcmConnectionHandler *db_conn =NULL; uint32_t operation = UNC_OP_CREATE; vector sw_vect_key_value; - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } -//Update operation not allowed +// Update operation not allowed TEST_F(SwitchTest, PerformSemanticValid_Upd_NotAllowed) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -567,19 +616,24 @@ TEST_F(SwitchTest, PerformSemanticValid_Upd_NotAllowed) { vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_CONNECTION_ERROR); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -//Delete operation not allowed +// Delete operation not allowed TEST_F(SwitchTest, PerformSemanticValid_DEl_NotAllowed) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -590,19 +644,24 @@ TEST_F(SwitchTest, PerformSemanticValid_DEl_NotAllowed) { vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_CONNECTION_ERROR); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -//Read operation not allowed +// Read operation not allowed TEST_F(SwitchTest, PerformSemanticValid_Read_NotAllowed) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -613,20 +672,25 @@ TEST_F(SwitchTest, PerformSemanticValid_Read_NotAllowed) { vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_CONNECTION_ERROR); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } -//create operation not allowed for Already -//existing key +// create operation not allowed for Already +// existing key TEST_F(SwitchTest, PerformSemanticValid_CREATE_NotAllowed) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -637,19 +701,24 @@ TEST_F(SwitchTest, PerformSemanticValid_CREATE_NotAllowed) { vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_ERR_INSTANCE_EXISTS, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_UPPL_RC_ERR_INSTANCE_EXISTS, ret); } -//PerformSemanticValid Success for update +// PerformSemanticValid Success for update TEST_F(SwitchTest, PerformSemanticValid_Update_Success) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -660,19 +729,24 @@ TEST_F(SwitchTest, PerformSemanticValid_Update_Success) { vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformSemanticValid Success for DELETE +// PerformSemanticValid Success for DELETE TEST_F(SwitchTest, PerformSemanticValid_Delete_Success) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -683,19 +757,24 @@ TEST_F(SwitchTest, PerformSemanticValid_Delete_Success) { vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//PerformSemanticValid Success for READ +// PerformSemanticValid Success for READ TEST_F(SwitchTest, PerformSemanticValid_Read_Success) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -706,19 +785,24 @@ TEST_F(SwitchTest, PerformSemanticValid_Read_Success) { vector sw_vect_key_value; sw_vect_key_value.push_back(pkName1); sw_vect_key_value.push_back(pkName2); - - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_STATE); - - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_STATE); + + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Parent Key Not exists, DB:UNC_DT_IMPORT +// Parent Key Not exists, DB:UNC_DT_IMPORT TEST_F(SwitchTest, PerformSemanticValid_Create_In_IMPORT_Fail) { key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; - char pkName1[] = "{0x10,0xbc}"; + char pkName1[] = "{0x10, 0xbc}"; char pkName2[] = "controller1"; memset(k.ctr_key.controller_name, '\0', 32); memcpy(k.ctr_key.controller_name, pkName2, strlen(pkName2)); @@ -727,15 +811,19 @@ TEST_F(SwitchTest, PerformSemanticValid_Create_In_IMPORT_Fail) { OdbcmConnectionHandler *db_conn =NULL; uint32_t operation = UNC_OP_CREATE; vector sw_vect_key_value; - + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.PerformSemanticValidation(db_conn, &k, &v, operation, UNC_DT_IMPORT); - - EXPECT_EQ(UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); + int ret = KtSwitchObj.PerformSemanticValidation(db_conn, + &k, + &v, + operation, + UNC_DT_IMPORT); + + EXPECT_EQ(UNC_UPPL_RC_ERR_PARENT_DOES_NOT_EXIST, ret); } /******ReadSwtchValFromDb******/ -//Operation Other Than Read -Success +// Operation Other Than Read -Success TEST_F(SwitchTest, ReadSwtchValFromDb_NoREAD) { key_switch_t k; val_switch_st_t v; @@ -747,11 +835,18 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_NoREAD) { OdbcmConnectionHandler *db_conn = NULL; memset(k.ctr_key.controller_name, '\0', 32); memset(k.switch_id, '\0', 256); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); -} - -//No Record Found to read + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); +} + +// No Record Found to read TEST_F(SwitchTest, ReadSwtchValFromDb_NoRecordFound) { key_switch_t k; val_switch_st_t v; @@ -764,12 +859,20 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_NoRecordFound) { uint32_t operation_type = UNC_OP_READ; uint32_t max_rep_ct; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); -} - -//Db connxn error in Read + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); +} + +// Db connxn error in Read TEST_F(SwitchTest, ReadSwtchValFromDb_DbConnxnError) { key_switch_t k; val_switch_st_t v; @@ -784,12 +887,20 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_DbConnxnError) { OdbcmConnectionHandler *db_conn = NULL; memset(k.ctr_key.controller_name, '\0', 32); memset(k.switch_id, '\0', 256); - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); -} - -//Read operation failed with DB + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_CONNECTION_ERROR); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); +} + +// Read operation failed with DB TEST_F(SwitchTest, ReadSwtchValFromDb_Error_Db_Get) { key_switch_t k; val_switch_st_t v; @@ -802,12 +913,20 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_Error_Db_Get) { uint32_t operation_type = UNC_OP_READ; uint32_t max_rep_ct; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); -} - -//Read From DB Success + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_FAILED); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); +} + +// Read From DB Success TEST_F(SwitchTest, ReadSwtchValFromDb_READ_Success) { key_switch_t k; val_switch_st_t v; @@ -820,12 +939,20 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_READ_Success) { uint32_t operation_type = UNC_OP_READ; uint32_t max_rep_ct; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); -} - -//ReadBulk operation failed + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); +} + +// ReadBulk operation failed TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_NoInstance) { key_switch_t k; val_switch_st_t v; @@ -838,12 +965,20 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_NoInstance) { uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); -} - -//ReadBulk operation failed:Db conxn error + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); +} + +// ReadBulk operation failed:Db conxn error TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_07) { key_switch_t k; val_switch_st_t v; @@ -856,12 +991,20 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_07) { uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); -} - -//ReadBulk operation failed:Db err + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_CONNECTION_ERROR); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); +} + +// ReadBulk operation failed:Db err TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_Db_Get) { key_switch_t k; val_switch_st_t v; @@ -874,12 +1017,20 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_Db_Get) { uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); -} - -//ReadBulk operation Success + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_FAILED); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); +} + +// ReadBulk operation Success TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_Success) { key_switch_t k; val_switch_st_t v; @@ -892,9 +1043,17 @@ TEST_F(SwitchTest, ReadSwtchValFromDb_READBULK_Success) { uint32_t operation_type = UNC_OP_READ_BULK; uint32_t max_rep_ct; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, &k, &v, UNC_DT_STATE, operation_type, max_rep_ct, vect_val_switch_st, vect_switch_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.ReadSwitchValFromDB(db_conn, + &k, + &v, + UNC_DT_STATE, + operation_type, + max_rep_ct, + vect_val_switch_st, + vect_switch_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /********ReadInternal****/ @@ -913,9 +1072,14 @@ TEST_F(SwitchTest, ReadInternal) { v.push_back(&val); OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.ReadInternal(db_conn, k, v, UNC_DT_STATE, operation_type); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.ReadInternal(db_conn, + k, + v, + UNC_DT_STATE, + operation_type); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*****ReadBulkInternal****/ @@ -930,8 +1094,14 @@ TEST_F(SwitchTest, ReadBulkInternal_MaxCt_01) { vector vect_val_switch; vector vect_switch_id; OdbcmConnectionHandler *db_conn = NULL; - int ret = KtSwitchObj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_val_switch, vect_switch_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.ReadBulkInternal(db_conn, + &k, + &v, + UNC_DT_STATE, + max_rep_ct, + vect_val_switch, + vect_switch_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, ReadBulkInternal_NoRecordFound_02) { @@ -945,9 +1115,16 @@ TEST_F(SwitchTest, ReadBulkInternal_NoRecordFound_02) { vector vect_val_switch; vector vect_switch_id; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtSwitchObj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_val_switch, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtSwitchObj.ReadBulkInternal(db_conn, + &k, + &v, + UNC_DT_STATE, + max_rep_ct, + vect_val_switch, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(SwitchTest, ReadBulkInternal_ConnError_03) { @@ -961,9 +1138,16 @@ TEST_F(SwitchTest, ReadBulkInternal_ConnError_03) { vector vect_val_switch; vector vect_switch_id; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_CONNECTION_ERROR); - int ret = KtSwitchObj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_val_switch, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_CONNECTION_ERROR); + int ret = KtSwitchObj.ReadBulkInternal(db_conn, + &k, + &v, + UNC_DT_STATE, + max_rep_ct, + vect_val_switch, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(SwitchTest, ReadBulkInternal_DbGetError_04) { @@ -978,8 +1162,14 @@ TEST_F(SwitchTest, ReadBulkInternal_DbGetError_04) { vector vect_switch_id; OdbcmConnectionHandler *db_conn = NULL; ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); - int ret = KtSwitchObj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_val_switch, vect_switch_id); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = KtSwitchObj.ReadBulkInternal(db_conn, + &k, + &v, + UNC_DT_STATE, + max_rep_ct, + vect_val_switch, + vect_switch_id); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(SwitchTest, ReadBulkInternal_Success_04) { @@ -993,9 +1183,16 @@ TEST_F(SwitchTest, ReadBulkInternal_Success_04) { vector vect_val_switch; vector vect_switch_id; OdbcmConnectionHandler *db_conn = NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.ReadBulkInternal(db_conn, &k, &v, UNC_DT_STATE, max_rep_ct, vect_val_switch, vect_switch_id); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.ReadBulkInternal(db_conn, + &k, + &v, + UNC_DT_STATE, + max_rep_ct, + vect_val_switch, + vect_switch_id); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /********ReadBulk********/ @@ -1010,8 +1207,15 @@ TEST_F(SwitchTest, ReadBulk_NoStateDb_01) { pfc_bool_t is_read_next(PFC_FALSE); OdbcmConnectionHandler *db_conn = NULL; ReadRequest *read_req = NULL; - int ret = KtSwitchObj.ReadBulk(db_conn, &k, UNC_DT_CANDIDATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); + int ret = KtSwitchObj.ReadBulk(db_conn, + &k, + UNC_DT_CANDIDATE, + max_rep_ct, + child_index, + parent_call, + is_read_next, + read_req); + EXPECT_EQ(UNC_UPPL_RC_ERR_OPERATION_NOT_ALLOWED, ret); } TEST_F(SwitchTest, ReadBulk_Max_Rpct_01) { @@ -1025,8 +1229,15 @@ TEST_F(SwitchTest, ReadBulk_Max_Rpct_01) { pfc_bool_t is_read_next(PFC_FALSE); OdbcmConnectionHandler *db_conn = NULL; ReadRequest *read_req = NULL; - int ret = KtSwitchObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.ReadBulk(db_conn, + &k, + UNC_DT_STATE, + max_rep_ct, + child_index, + parent_call, + is_read_next, + read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, ReadBulkInternal_Success) { @@ -1044,7 +1255,7 @@ TEST_F(SwitchTest, ReadBulkInternal_Success) { int ret = KtSwitchObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, ReadBulkInternal_NoRecordFound) { @@ -1058,11 +1269,17 @@ TEST_F(SwitchTest, ReadBulkInternal_NoRecordFound) { pfc_bool_t is_read_next(PFC_FALSE); OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtSwitchObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, - child_index, parent_call, is_read_next, + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS + , ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtSwitchObj.ReadBulk(db_conn, + &k, + UNC_DT_STATE, + max_rep_ct, + child_index, + parent_call, + is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, ReadBulk_childkey) { @@ -1076,9 +1293,17 @@ TEST_F(SwitchTest, ReadBulk_childkey) { pfc_bool_t is_read_next(PFC_FALSE); OdbcmConnectionHandler *db_conn = NULL; ReadRequest *read_req = NULL; - ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, ODBCM_RC_ROW_EXISTS); - int ret = KtSwitchObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, child_index, parent_call, is_read_next,read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::ISROWEXISTS, + ODBCM_RC_ROW_EXISTS); + int ret = KtSwitchObj.ReadBulk(db_conn, + &k, + UNC_DT_STATE, + max_rep_ct, + child_index, + parent_call, + is_read_next, + read_req); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, ReadBulk_SwitchExists_FALSE) { @@ -1087,16 +1312,22 @@ TEST_F(SwitchTest, ReadBulk_SwitchExists_FALSE) { Kt_Switch KtSwitchObj; uint32_t max_rep_ct = 1; - int child_index (0); + int child_index(0); pfc_bool_t parent_call(PFC_FALSE); pfc_bool_t is_read_next(PFC_FALSE); OdbcmConnectionHandler *db_conn = NULL; ReadRequest read_req; - ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.ReadBulk(db_conn, &k, UNC_DT_STATE, max_rep_ct, - child_index, parent_call, is_read_next, + ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.ReadBulk(db_conn, + &k, + UNC_DT_STATE, + max_rep_ct, + child_index, + parent_call, + is_read_next, &read_req); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /********PerformRead******/ @@ -1121,8 +1352,87 @@ TEST_F(SwitchTest, PerformRead_01) { sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); - int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_NONE, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); +} + +TEST_F(SwitchTest, PerformRead_002_Invalid_option1) { + key_switch_t k; + val_switch_st_t v; + memset(&k, 0, sizeof(key_switch_t)); + memset(&v, 0, sizeof(val_switch_st_t)); + Kt_Switch KtSwitchObj; + physical_request_header rh; + getReqHeader(rh, UNC_OP_READ, UNC_DT_CANDIDATE); + rh.key_type = UNC_KT_SWITCH; + OdbcmConnectionHandler *db_conn =NULL; + ServerSession sess; + sess.stub_setAddOutput((uint32_t)0); + sess.stub_setAddOutput((uint32_t)0); + sess.stub_setAddOutput((uint32_t)UNC_OP_READ); + sess.stub_setAddOutput((uint32_t)1); + sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); + sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); + sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION1); + sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_L2DOMAIN, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); +} + +TEST_F(SwitchTest, PerformRead_002_Invalid_option2) { + key_switch_t k; + val_switch_st_t v; + memset(&k, 0, sizeof(key_switch_t)); + memset(&v, 0, sizeof(val_switch_st_t)); + Kt_Switch KtSwitchObj; + physical_request_header rh; + getReqHeader(rh, UNC_OP_READ, UNC_DT_CANDIDATE); + rh.key_type = UNC_KT_SWITCH; + OdbcmConnectionHandler *db_conn =NULL; + ServerSession sess; + pfc::core::ipc::ServerSession::set_rest(0); + sess.stub_setAddOutput((uint32_t)0); + sess.stub_setAddOutput((uint32_t)0); + sess.stub_setAddOutput((uint32_t)UNC_OP_READ); + sess.stub_setAddOutput((uint32_t)1); + sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); + sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); + sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); + sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_L2DOMAIN, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(SwitchTest, PerformRead_002) { @@ -1136,6 +1446,7 @@ TEST_F(SwitchTest, PerformRead_002) { rh.key_type = UNC_KT_SWITCH; OdbcmConnectionHandler *db_conn =NULL; ServerSession sess; + pfc::core::ipc::ServerSession::set_rest(2); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_OP_READ); @@ -1145,8 +1456,18 @@ TEST_F(SwitchTest, PerformRead_002) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); -int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_L2DOMAIN, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(SwitchTest, PerformRead_ReadSwtVal_Succes_03) { @@ -1168,11 +1489,21 @@ TEST_F(SwitchTest, PerformRead_ReadSwtVal_Succes_03) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)0); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_L2DOMAIN, + (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, PerformRead_ReadSwtVal_OPT1_NoMatch) { @@ -1194,11 +1525,20 @@ TEST_F(SwitchTest, PerformRead_ReadSwtVal_OPT1_NoMatch) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_DETAIL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_STATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_INVALID_OPTION1); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); - //sess.stub_setAddOutput((uint32_t)key); - int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_DETAIL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_DETAIL, + (uint32_t)UNC_OPT2_L2DOMAIN, + (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, PerformRead_ReadSwtVal_DataType_NoMatch_Success) { @@ -1219,11 +1559,21 @@ TEST_F(SwitchTest, PerformRead_ReadSwtVal_DataType_NoMatch_Success) { sess.stub_setAddOutput((uint32_t)UNC_OPT1_NORMAL); sess.stub_setAddOutput((uint32_t)UNC_OPT2_NONE); sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); - sess.stub_setAddOutput((uint32_t)UPPL_RC_ERR_OPERATION_NOT_ALLOWED); + sess.stub_setAddOutput((uint32_t)UNC_UPPL_RC_ERR_INVALID_OPTION2); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); - - int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_L2DOMAIN, + (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, PerformRead_ReadSwtVal_addOutput_fail) { @@ -1240,8 +1590,18 @@ TEST_F(SwitchTest, PerformRead_ReadSwtVal_addOutput_fail) { ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); pfc::core::ipc::ServerSession::set_rest(2); - int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_L2DOMAIN,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_L2DOMAIN, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(SwitchTest, PerformRead_005) { @@ -1264,8 +1624,18 @@ TEST_F(SwitchTest, PerformRead_005) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); -int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_INVALID,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); +int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_INVALID, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, + (uint32_t)1); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, PerformRead_UnsupportDB_STARTUP) { @@ -1288,8 +1658,18 @@ TEST_F(SwitchTest, PerformRead_UnsupportDB_STARTUP) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); -int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STARTUP,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STARTUP, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(SwitchTest, PerformRead_UnsupportDb_CANDIDDATE) { @@ -1312,8 +1692,18 @@ TEST_F(SwitchTest, PerformRead_UnsupportDb_CANDIDDATE) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); -int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_CANDIDATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_CANDIDATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(SwitchTest, PerformRead_GetOneRow_006) { @@ -1336,8 +1726,18 @@ TEST_F(SwitchTest, PerformRead_GetOneRow_006) { sess.stub_setAddOutput((uint32_t)UNC_DT_CANDIDATE); sess.stub_setAddOutput((uint32_t)0); sess.stub_setAddOutput((uint32_t)UNC_KT_SWITCH); -int ret = KtSwitchObj.PerformRead(db_conn,(uint32_t)0,(uint32_t)0,&k,&v,(uint32_t)UNC_DT_STATE,(uint32_t)UNC_OP_READ,sess,(uint32_t)UNC_OPT1_NORMAL,(uint32_t)UNC_OPT2_NONE,(uint32_t)1); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + int ret = KtSwitchObj.PerformRead(db_conn, + (uint32_t)0, + (uint32_t)0, + &k, + &v, + (uint32_t)UNC_DT_STATE, + (uint32_t)UNC_OP_READ, + sess, + (uint32_t)UNC_OPT1_NORMAL, + (uint32_t)UNC_OPT2_NONE, + (uint32_t)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } /*******PopulateSchemaForValidFlag*********/ @@ -1350,8 +1750,12 @@ TEST_F(SwitchTest, PopulateSchemaForValidFlag_Success) { string valid_new; OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.PopulateSchemaForValidFlag(db_conn, &k ,&v, valid_new, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.PopulateSchemaForValidFlag(db_conn, + &k, + &v, + valid_new, + UNC_DT_STATE); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, PopulateSchemaForValidFlag_Failure) { @@ -1362,13 +1766,18 @@ TEST_F(SwitchTest, PopulateSchemaForValidFlag_Failure) { Kt_Switch KtSwitchObj; string valid_new; OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_GENERAL_ERROR); - int ret = KtSwitchObj.PopulateSchemaForValidFlag(db_conn, &k ,&v, valid_new, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, + ODBCM_RC_GENERAL_ERROR); + int ret = KtSwitchObj.PopulateSchemaForValidFlag(db_conn, + &k, + &v, + valid_new, + UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } /********SetOperSatus******/ -//Faliure of GetoneRow +// Faliure of GetoneRow TEST_F(SwitchTest, SetOperStatus_001) { key_switch_t k; getKeyForKtSwitch1(k); @@ -1379,8 +1788,11 @@ TEST_F(SwitchTest, SetOperStatus_001) { OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtSwitchObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplSwitchOperStatus)1); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + int ret = KtSwitchObj.SetOperStatus(db_conn, + UNC_DT_STATE, + &k, + (UpplSwitchOperStatus)1); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(SwitchTest, SetOperStatus_002) { @@ -1392,9 +1804,13 @@ TEST_F(SwitchTest, SetOperStatus_002) { getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplSwitchOperStatus)0); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.SetOperStatus(db_conn, + UNC_DT_STATE, + &k, + (UpplSwitchOperStatus)0); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(SwitchTest, SetOperStatus_004) { @@ -1406,10 +1822,15 @@ TEST_F(SwitchTest, SetOperStatus_004) { getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplSwitchOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.SetOperStatus(db_conn, + UNC_DT_STATE, + &k, + (UpplSwitchOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, SetOperStatus_005) { @@ -1420,20 +1841,25 @@ TEST_F(SwitchTest, SetOperStatus_005) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - int err=0; + int err = 0; ServerEvent ser_evt((pfc_ipcevtype_t)UPPL_EVENTS_KT_PORT, err); ser_evt.addOutput((uint32_t)UNC_OP_UPDATE); ser_evt.addOutput((uint32_t)UNC_DT_STATE); ser_evt.addOutput((uint32_t)UNC_KT_SWITCH); - - ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.SetOperStatus(db_conn,UNC_DT_STATE,&k,(UpplSwitchOperStatus)0); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + + ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.SetOperStatus(db_conn, + UNC_DT_STATE, + &k, + (UpplSwitchOperStatus)0); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /******GetAlarmStatus******/ -//GetOneRow Success +// GetOneRow Success TEST_F(SwitchTest, GetAlarmStatus_sucess_01) { key_switch_t k; getKeyForKtSwitch1(k); @@ -1443,12 +1869,16 @@ TEST_F(SwitchTest, GetAlarmStatus_sucess_01) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.GetAlarmStatus(db_conn, UNC_DT_STATE, &k, alarm_status); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.GetAlarmStatus(db_conn, + UNC_DT_STATE, + &k, + alarm_status); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//GetOneRow Failure +// GetOneRow Failure TEST_F(SwitchTest, GetAlarmStatus_Nosuccess_01) { key_switch_t k; getKeyForKtSwitch1(k); @@ -1458,14 +1888,18 @@ TEST_F(SwitchTest, GetAlarmStatus_Nosuccess_01) { physical_request_header rh; getReqHeader(rh, UNC_OP_READ, UNC_DT_STATE); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtSwitchObj.GetAlarmStatus(db_conn, UNC_DT_STATE, &k, alarm_status); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_FAILED); + int ret = KtSwitchObj.GetAlarmStatus(db_conn, + UNC_DT_STATE, + &k, + alarm_status); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } - + /*****HandleDriverAlarms******/ -//Reading alarm status from db failed +// Reading alarm status from db failed TEST_F(SwitchTest, HandleDriverAlarm_01) { key_switch_t k; val_switch_st_t v; @@ -1477,12 +1911,17 @@ TEST_F(SwitchTest, HandleDriverAlarm_01) { uint32_t oper_type = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_FAILED); - int ret = KtSwitchObj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = KtSwitchObj.HandleDriverAlarms(db_conn, + UNC_DT_STATE, + alarm_type, + oper_type, + &k, + &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } -//Error creating ServerEvent object -//alarm_type:UNC_FLOW_ENT_FULL, oper_type:UNC_OP_CREATE +// Error creating ServerEvent object +// alarm_type:UNC_FLOW_ENT_FULL, oper_type:UNC_OP_CREATE TEST_F(SwitchTest, HandleDriverAlarm_02) { key_switch_t k; val_switch_st_t v; @@ -1492,10 +1931,17 @@ TEST_F(SwitchTest, HandleDriverAlarm_02) { uint32_t alarm_type = UNC_FLOW_ENT_FULL; uint32_t oper_type = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.HandleDriverAlarms(db_conn, + UNC_DT_STATE, + alarm_type, + oper_type, + &k, + &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(SwitchTest, HandleDriverAlarm_03) { @@ -1508,10 +1954,17 @@ TEST_F(SwitchTest, HandleDriverAlarm_03) { uint32_t alarm_type = UNC_FLOW_ENT_FULL; uint32_t oper_type = UNC_OP_DELETE; OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.HandleDriverAlarms(db_conn, + UNC_DT_STATE, + alarm_type, + oper_type, + &k, + &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, HandleDriverAlarm_04) { @@ -1523,10 +1976,17 @@ TEST_F(SwitchTest, HandleDriverAlarm_04) { uint32_t alarm_type = UNC_OFS_LACK_FEATURES; uint32_t oper_type = UNC_OP_CREATE; OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_ERR_IPC_WRITE_ERROR, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.HandleDriverAlarms(db_conn, + UNC_DT_STATE, + alarm_type, + oper_type, + &k, + &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_IPC_WRITE_ERROR, ret); } TEST_F(SwitchTest, HandleDriverAlarm_05) { @@ -1539,10 +1999,17 @@ TEST_F(SwitchTest, HandleDriverAlarm_05) { uint32_t alarm_type = UNC_OFS_LACK_FEATURES; uint32_t oper_type = UNC_OP_DELETE; OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); - ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, ODBCM_RC_SUCCESS); - int ret = KtSwitchObj.HandleDriverAlarms(db_conn, UNC_DT_STATE, alarm_type, oper_type, &k,&v); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); + ODBCManager::stub_setResultcode(ODBCManager::UPDATEONEROW, + ODBCM_RC_SUCCESS); + int ret = KtSwitchObj.HandleDriverAlarms(db_conn, + UNC_DT_STATE, + alarm_type, + oper_type, + &k, + &v); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*****HandleOperStaus******/ @@ -1552,20 +2019,24 @@ TEST_F(SwitchTest, Handleoperstatus_BadRequest) { Kt_Switch KtSwitchObj; memset(&v, 0, sizeof(val_switch_st_t)); OdbcmConnectionHandler *db_conn =NULL; - int ret = KtSwitchObj.HandleOperStatus(db_conn, UNC_DT_STATE, k, &v); - EXPECT_EQ(UPPL_RC_ERR_BAD_REQUEST, ret); + int ret = KtSwitchObj.HandleOperStatus(db_conn, + UNC_DT_STATE, + k, + &v); + EXPECT_EQ(UNC_UPPL_RC_ERR_BAD_REQUEST, ret); } TEST_F(SwitchTest, Handleoperstatus_GetOneRow_success) { - key_switch_t k ; + key_switch_t k; val_switch_st_t v; Kt_Switch KtSwitchObj; memset(&k, 0, sizeof(key_switch_t)); memset(&v, 0, sizeof(val_switch_st_t)); OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_SUCCESS); int ret = KtSwitchObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(SwitchTest, Handleoperstatus_GetOneRow_Fail) { @@ -1577,7 +2048,7 @@ TEST_F(SwitchTest, Handleoperstatus_GetOneRow_Fail) { OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_FAILED); int ret = KtSwitchObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); - EXPECT_EQ(UPPL_RC_ERR_DB_GET, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_GET, ret); } TEST_F(SwitchTest, Handleoperstatus_GetBulkRow_Success) { @@ -1590,7 +2061,7 @@ TEST_F(SwitchTest, Handleoperstatus_GetBulkRow_Success) { ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_SUCCESS); int ret = KtSwitchObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); - EXPECT_EQ(UPPL_RC_ERR_DB_ACCESS, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_ACCESS, ret); } TEST_F(SwitchTest, Handleoperstatus_GetBulkRow_Failure) { @@ -1603,7 +2074,7 @@ TEST_F(SwitchTest, Handleoperstatus_GetBulkRow_Failure) { ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); ODBCManager::stub_setResultcode(ODBCManager::GETBULKROWS, ODBCM_RC_FAILED); int ret = KtSwitchObj.HandleOperStatus(db_conn, UNC_DT_STATE, &k, &v); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(SwitchTest, GetSwitchValStructure) { @@ -1617,16 +2088,21 @@ TEST_F(SwitchTest, GetSwitchValStructure) { Kt_Switch KtSwitchObj; memset(&k, 0, sizeof(key_switch_t)); OdbcmConnectionHandler *db_conn =NULL; - int ret = UPPL_RC_SUCCESS; - KtSwitchObj.GetSwitchValStructure(db_conn, obj_val_switch,vect_table_attr_schema, vect_prim_keys, - operation_type, val_switch_valid_st,valid); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = UNC_RC_SUCCESS; + KtSwitchObj.GetSwitchValStructure(db_conn, + obj_val_switch, + vect_table_attr_schema, + vect_prim_keys, + operation_type, + val_switch_valid_st, + valid); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, GetSwitchValStructure_valid) { key_switch_t k; val_switch_st_t obj_val_switch; - memset(&obj_val_switch,0,sizeof(obj_val_switch)); + memset(&obj_val_switch, 0, sizeof(obj_val_switch)); vector vect_table_attr_schema; vector vect_prim_keys; uint8_t operation_type(UNC_OP_READ); @@ -1636,10 +2112,15 @@ TEST_F(SwitchTest, GetSwitchValStructure_valid) { obj_val_switch.valid[kIdxSwitch] = UNC_VF_VALID; memset(&k, 0, sizeof(key_switch_t)); OdbcmConnectionHandler *db_conn =NULL; - int ret = UPPL_RC_SUCCESS; - KtSwitchObj.GetSwitchValStructure(db_conn, &obj_val_switch,vect_table_attr_schema, vect_prim_keys, - operation_type, val_switch_valid_st,valid); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + int ret = UNC_RC_SUCCESS; + KtSwitchObj.GetSwitchValStructure(db_conn, + &obj_val_switch, + vect_table_attr_schema, + vect_prim_keys, + operation_type, + val_switch_valid_st, + valid); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /*******UpdateSwitchValidFlag******/ @@ -1648,61 +2129,66 @@ TEST_F(SwitchTest, UpdateSwitchValidFlag) { key_switch_t k; val_switch_t v; val_switch_st_t v_st; - memset(&k, 0,sizeof(k)); - memset(&v, 0,sizeof(v)); - memset(&v_st, 0,sizeof(v_st)); - + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + memset(&v_st, 0, sizeof(v_st)); + Kt_Switch KtSwitchObj; unc_keytype_validflag_t new_valid_val = UNC_VF_VALID; OdbcmConnectionHandler *db_conn =NULL; - ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_RECORD_NOT_FOUND); - int ret = KtSwitchObj.UpdateSwitchValidFlag(db_conn, &k, &v, v_st, - new_valid_val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); + ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, + ODBCM_RC_RECORD_NOT_FOUND); + int ret = KtSwitchObj.UpdateSwitchValidFlag(db_conn, + &k, + &v, + v_st, + new_valid_val, + UNC_DT_STATE); + EXPECT_EQ(UNC_UPPL_RC_ERR_NO_SUCH_INSTANCE, ret); } TEST_F(SwitchTest, UpdateSwitchValidFlag_Success) { key_switch_t k; val_switch_t v; val_switch_st_t v_st; - memset(&k, 0,sizeof(k)); - memset(&v, 0,sizeof(v)); - memset(&v_st, 0,sizeof(v_st)); - + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + memset(&v_st, 0, sizeof(v_st)); + Kt_Switch KtSwitchObj; unc_keytype_validflag_t new_valid_val = UNC_VF_VALID; OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); int ret = KtSwitchObj.UpdateSwitchValidFlag(db_conn, &k, &v, v_st, new_valid_val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } TEST_F(SwitchTest, UpdateSwitchValidFlag_NoFillVal) { key_switch_t k; val_switch_t v; val_switch_st_t v_st; - memset(&k, 0,sizeof(k)); - memset(&v, 0,sizeof(v)); - memset(&v_st, 0,sizeof(v_st)); - + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + memset(&v_st, 0, sizeof(v_st)); + Kt_Switch KtSwitchObj; unc_keytype_validflag_t new_valid_val(UNC_VF_INVALID); OdbcmConnectionHandler *db_conn =NULL; ODBCManager::stub_setResultcode(ODBCManager::GETONEROW, ODBCM_RC_SUCCESS); int ret = KtSwitchObj.UpdateSwitchValidFlag(db_conn, &k, &v, v_st, new_valid_val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_ERR_DB_UPDATE, ret); + EXPECT_EQ(UNC_UPPL_RC_ERR_DB_UPDATE, ret); } TEST_F(SwitchTest, UpdateSwitchValidFlag_ret_NULL) { key_switch_t k; val_switch_st_t v; val_switch_st_t v_st; - memset(&k, 0,sizeof(k)); - memset(&v, 0,sizeof(v)); - memset(&v_st, 0,sizeof(v_st)); - + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + memset(&v_st, 0, sizeof(v_st)); + Kt_Switch KtSwitchObj; unc_keytype_validflag_t new_valid_val(UNC_VF_INVALID); OdbcmConnectionHandler *db_conn =NULL; @@ -1711,7 +2197,7 @@ TEST_F(SwitchTest, UpdateSwitchValidFlag_ret_NULL) { pfc_log_set_level(PFC_LOGLVL_VERBOSE); int ret = KtSwitchObj.UpdateSwitchValidFlag(db_conn, &k, &v, v_st, new_valid_val, UNC_DT_STATE); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } /********FrameValidValue*******/ @@ -1719,8 +2205,8 @@ TEST_F(SwitchTest, FrameValidValue) { string attr_value = "ctr"; val_switch_st obj_val_switch; Kt_Switch KtSwitchObj; - int ret = UPPL_RC_SUCCESS; + int ret = UNC_RC_SUCCESS; obj_val_switch.valid[kIdxSwitch] = UNC_VF_VALID; KtSwitchObj.FrameValidValue(attr_value, obj_val_switch); - EXPECT_EQ(UPPL_RC_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); } diff --git a/coordinator/test/modules/uppl/utest/ut_stub.h b/coordinator/test/modules/uppl/utest/ut_stub.h index b47e39b1..120b228b 100644 --- a/coordinator/test/modules/uppl/utest/ut_stub.h +++ b/coordinator/test/modules/uppl/utest/ut_stub.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,8 +7,8 @@ * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -#ifndef _TEST_UPPL_UT_STUB_H -#define _TEST_UPPL_UT_STUB_H +#ifndef _TEST_UPPL_UT_STUB_H +#define _TEST_UPPL_UT_STUB_H /* * Include stub header files. @@ -16,12 +16,13 @@ #include "stub/clstat/clstat_api.h" -#ifdef __cplusplus +#ifdef __cplusplus #include "stub/include/cxx/pfcxx/ipc_server.hh" #include "stub/include/cxx/pfcxx/ipc_client.hh" #include "stub/include/cxx/pfcxx/module.hh" #include "stub/ODBC/include/odbcm_mgr.hh" #include "stub/tclib_module/tclib_module.hh" -#endif /* __cplusplus */ +#include "stub/capa_module/capa_intf.hh" +#endif /* __cplusplus */ -#endif /* !_TEST_UPPL_UT_STUB_H */ +#endif /* !_TEST_UPPL_UT_STUB_H */ diff --git a/coordinator/test/modules/uppl/utest/ut_util.hh b/coordinator/test/modules/uppl/utest/ut_util.hh index 649fa0df..a87657d6 100644 --- a/coordinator/test/modules/uppl/utest/ut_util.hh +++ b/coordinator/test/modules/uppl/utest/ut_util.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,8 +7,8 @@ * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ -#ifndef _TEST_UPPL_UT_UTIL_HH -#define _TEST_UPPL_UT_UTIL_HH +#ifndef _TEST_UPPL_UT_UTIL_HH +#define _TEST_UPPL_UT_UTIL_HH /* * Miscellaneous utility. @@ -25,15 +25,14 @@ namespace test { * Base class for test environment. */ class UpplTestEnv - : public ::testing::Test -{ -protected: + : public ::testing::Test { + protected: virtual void SetUp(); virtual void TearDown(); }; -} // test -} // uppl -} // unc +} // namespace test +} // namespace uppl +} // namespace unc -#endif /* !_TEST_UPPL_UT_UTIL_HH */ +#endif /* !_TEST_UPPL_UT_UTIL_HH */ diff --git a/coordinator/test/modules/uppl/utest/util.cc b/coordinator/test/modules/uppl/utest/util.cc index 5680edeb..1bc7288a 100644 --- a/coordinator/test/modules/uppl/utest/util.cc +++ b/coordinator/test/modules/uppl/utest/util.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 NEC Corporation + * Copyright (c) 2013-2014 NEC Corporation * All rights reserved. * * This program and the accompanying materials are made available under the @@ -24,8 +24,7 @@ using namespace pfc::core::ipc; * Set up test environment. */ void -UpplTestEnv::SetUp() -{ +UpplTestEnv::SetUp() { TcLibModule::stub_loadtcLibModule(); TcLibModule::stub_setTCApiCommonRetcode(TcLibModule::REGISTER, TC_API_COMMON_SUCCESS); @@ -37,8 +36,7 @@ UpplTestEnv::SetUp() * Clean up test environment. */ void -UpplTestEnv::TearDown() -{ +UpplTestEnv::TearDown() { ServerSession::clearStubData(); ODBCManager::clearStubData(); PhysicalLayerStub::unloadphysicallayer(); diff --git a/coordinator/test/modules/vtncacheutil/ut/test_confignode.cc b/coordinator/test/modules/vtncacheutil/ut/test_confignode.cc index 0ce95c72..4b82aea6 100644 --- a/coordinator/test/modules/vtncacheutil/ut/test_confignode.cc +++ b/coordinator/test/modules/vtncacheutil/ut/test_confignode.cc @@ -63,7 +63,7 @@ TEST(print, check) { KeyTree_obj = NULL; } -TEST(add_child_to_list, DRVAPI_RESPONSE_SUCCESS) { +TEST(add_child_to_list, UNC_RC_SUCCESS) { ConfigNode *cfgnode_obj = new ConfigNode; uint32_t operation = 1; KeyTree *KeyTree_obj; @@ -84,10 +84,10 @@ TEST(add_child_to_list, DRVAPI_RESPONSE_SUCCESS) { cfgnode_obj = NULL; cfgptr = NULL; KeyTree_obj = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } -TEST(add_child_to_list, DRVAPI_RESPONSE_FAILURE) { +TEST(add_child_to_list, UNC_DRV_RC_ERR_GENERIC) { ConfigNode *cfgnode_obj = new ConfigNode; KeyTree *KeyTree_obj; KeyTree_obj = KeyTree::create_cache(); @@ -101,7 +101,7 @@ TEST(add_child_to_list, DRVAPI_RESPONSE_FAILURE) { cfgptr = NULL; KeyTree_obj = NULL; cfgnode_obj = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(get_node_list, check) { @@ -135,17 +135,17 @@ TEST(get_node_list, check) { ConfigNode *cfgptr = new CacheElementUtil (&key_obj, &val_obj, operation); int ret = cfg_obj->add_child_to_list(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ConfigNode *cfgptr1 = new CacheElementUtil (&key1_obj, &val1_obj, operation); ret = cfg_obj->add_child_to_list(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ConfigNode *cfgptr2 = new CacheElementUtil(&key2_obj, &val2_obj, operation); ret = cfg_obj->add_child_to_list(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ret = cfg_obj->get_node_list(value_list); delete cfg_obj; @@ -158,7 +158,7 @@ TEST(get_node_list, check) { cfgptr1 = NULL; cfgptr = NULL; KeyTree_obj = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(TypeToStrFun, keytype_switch_port) { std::string ret = TypeToStrFun(UNC_KT_VBR_VLANMAP); @@ -179,7 +179,7 @@ TEST(delete_child_node, empty_switch_port) { erased_key_list); delete KeyTree_obj; KeyTree_obj = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(delete_child_node, switch_port_config_not_present) { int operation = 1; @@ -197,7 +197,7 @@ TEST(delete_child_node, switch_port_config_not_present) { ConfigNode *cfgptr = new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->node_tree_.add_child_to_list(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -216,7 +216,7 @@ TEST(delete_child_node, switch_port_config_not_present) { delete cfgptr1; cfgptr1 = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(delete_child_node, delete_switch) { int operation = 1; @@ -234,13 +234,13 @@ TEST(delete_child_node, delete_switch) { ConfigNode *cfgptr = new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->node_tree_.add_child_to_list(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ret = KeyTree_obj->node_tree_.delete_child_node(cfgptr, erased_key_list); delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(TypeToStrFun, keytype_kt_link) { std::string ret = TypeToStrFun(UNC_KT_LINK); diff --git a/coordinator/test/modules/vtncacheutil/ut/test_keytree.cc b/coordinator/test/modules/vtncacheutil/ut/test_keytree.cc index 3afe1524..53ba25ce 100644 --- a/coordinator/test/modules/vtncacheutil/ut/test_keytree.cc +++ b/coordinator/test/modules/vtncacheutil/ut/test_keytree.cc @@ -32,7 +32,7 @@ TEST(append_commit_node, vtn) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(append_commit_node, vbr) { @@ -65,7 +65,7 @@ TEST(append_commit_node, vbr) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(append_commit_node, Reterive_key_val) { @@ -86,7 +86,7 @@ TEST(append_commit_node, Reterive_key_val) { sizeof(val1_obj.vbr_description)); key_vlan_map key2_obj; - val_vlan_map_t val2_obj; + pfcdrv_val_vlan_map_t val2_obj; memcpy(key2_obj.vbr_key.vtn_key.vtn_name, "vtn1", sizeof(key2_obj.vbr_key.vtn_key.vtn_name)); memcpy(key2_obj.vbr_key.vbridge_name, "vbr1", @@ -94,21 +94,21 @@ TEST(append_commit_node, Reterive_key_val) { memcpy(key2_obj.logical_port_id, "SW-00:00:00:00:00:00:00:01", sizeof(key2_obj.logical_port_id)); key2_obj.logical_port_id_valid = 1; - val2_obj. vlan_id = 100; + val2_obj.vm.vlan_id = 100; ConfigNode *cfgptr = new CacheElementUtil (&key_obj, &val_obj, operation); int ret = KeyTree_obj->append_commit_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ConfigNode *cfgptr1 = new CacheElementUtil (&key1_obj, &val1_obj, operation); ret = KeyTree_obj->append_commit_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); - ConfigNode *cfgptr2 = new CacheElementUtil(&key2_obj, &val2_obj, operation); ret = KeyTree_obj->append_commit_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); CommonIterator* itr_ptr = KeyTree_obj->create_iterator(); cfgptr = itr_ptr->FirstItem(); @@ -130,14 +130,14 @@ TEST(append_commit_node, Reterive_key_val) { reinterpret_cast(tmp1_ptr->get_val_structure()->vbr_description)); cfgptr2 = itr_ptr->NextItem(); - CacheElementUtil *tmp2_ptr = - static_cast *tmp2_ptr = + static_cast*> (cfgptr2); EXPECT_EQ(1, (tmp2_ptr->get_key_structure()->logical_port_id_valid)); EXPECT_STREQ(reinterpret_cast(key2_obj.logical_port_id), reinterpret_cast(tmp2_ptr->get_key_structure()->logical_port_id)); - EXPECT_EQ(100, (tmp2_ptr->get_val_structure()->vlan_id)); + EXPECT_EQ(100, (tmp2_ptr->get_val_structure()->vm.vlan_id)); delete itr_ptr; delete KeyTree_obj; @@ -153,7 +153,7 @@ TEST(add_node_to_tree, null) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(add_node_to_tree, null_parent) { @@ -174,7 +174,7 @@ TEST(add_node_to_tree, null_parent) { delete cfgptr; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(add_node_to_tree, parent_exist) { @@ -206,10 +206,10 @@ TEST(add_node_to_tree, parent_exist) { KeyTree_obj = NULL; cfgptr = NULL; cfgptr1 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } -TEST(add_child_to_hash, DRVAPI_RESPONSE_SUCCESS) { +TEST(add_child_to_hash, UNC_RC_SUCCESS) { KeyTree* KeyTree_obj; KeyTree_obj = KeyTree::create_cache(); int operation = 1; @@ -226,7 +226,7 @@ TEST(add_child_to_hash, DRVAPI_RESPONSE_SUCCESS) { delete cfgptr; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(get_parenttype, vtn) { @@ -284,21 +284,21 @@ TEST(append_audit_node, Node_not_exist) { (&key_obj, &val_obj, operation); int ret = KeyTree_obj->append_audit_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ConfigNode *cfgptr1 = new CacheElementUtil (&key1_obj, &val1_obj, operation); ret = KeyTree_obj->append_audit_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ConfigNode *cfgptr2 = new CacheElementUtil(&key2_obj, &val2_obj, operation); ret = KeyTree_obj->append_audit_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); delete KeyTree_obj; KeyTree_obj = NULL; cfgptr2 = NULL; cfgptr1 = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(append_audit_node, null) { @@ -311,7 +311,7 @@ TEST(append_audit_node, null) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(append_audit_node, parent_not_exist) { @@ -335,7 +335,7 @@ TEST(append_audit_node, parent_not_exist) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr1 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(append_audit_node, parent_exist_already) { @@ -363,7 +363,7 @@ TEST(append_audit_node, parent_exist_already) { KeyTree_obj = NULL; cfgptr = NULL; cfgptr1 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(append_audit_configuration_list, vector_arg_sucess) { @@ -399,7 +399,7 @@ TEST(append_audit_configuration_list, vector_arg_sucess) { KeyTree_obj = NULL; cfgptr1 = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(append_audit_configuration_list, vector_arg_failure) { @@ -416,7 +416,7 @@ TEST(append_audit_configuration_list, vector_arg_failure) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(append_audit_configuration_list, vector_arg_failure1) { @@ -443,7 +443,7 @@ TEST(append_audit_configuration_list, vector_arg_failure1) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } TEST(clear_audit_commit_cache, check) { @@ -463,7 +463,7 @@ TEST(clear_audit_commit_cache, check) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(clear_root_cache, check) { @@ -483,7 +483,7 @@ TEST(clear_root_cache, check) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } TEST(get_node_from_hash, get_node) { @@ -579,17 +579,17 @@ TEST(get_nodelist_keytree, check) { ConfigNode *cfgptr = new CacheElementUtil (&key_obj, &val_obj, operation); int ret = KeyTree_obj->append_audit_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ConfigNode *cfgptr1 = new CacheElementUtil (&key1_obj, &val1_obj, operation); ret = KeyTree_obj->append_audit_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ConfigNode *cfgptr2 = new CacheElementUtil(&key2_obj, &val2_obj, operation); ret = KeyTree_obj->append_audit_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); ret = KeyTree_obj->get_nodelist_keytree(); @@ -598,7 +598,7 @@ TEST(get_nodelist_keytree, check) { cfgptr2 = NULL; cfgptr1 = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append switch-port in keytree in bulk operation TEST(append_physical_attribute_configuration_list, append_single_switchNode) { @@ -624,7 +624,7 @@ TEST(append_physical_attribute_configuration_list, append_single_switchNode) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append switch-port in keytree in bulk operation @@ -669,7 +669,7 @@ TEST(append_physical_attribute_configuration_list, append_multiple_switchNode) { KeyTree_obj = NULL; cfgptr = NULL; cfgptrone = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append switch-port in keytree with empty list TEST(append_physical_attribute_configuration_list, append_empty_list) { @@ -685,7 +685,7 @@ TEST(append_physical_attribute_configuration_list, append_empty_list) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Append port in keytree with list ,which parent not found TEST(append_physical_attribute_configuration_list, @@ -722,7 +722,7 @@ TEST(append_physical_attribute_configuration_list, } } vec_list.clear(); - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Append one switch and one port individual to keytree with // append_Physical_attribute_node method @@ -742,7 +742,7 @@ TEST(append_Physical_attribute_node, switch_port_success) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -764,7 +764,7 @@ TEST(append_Physical_attribute_node, switch_port_success) { KeyTree_obj = NULL; cfgptr = NULL; cfgptr1 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append switch/port in keytree with empty TEST(append_Physical_attribute_node, append_empty_switch) { @@ -777,7 +777,7 @@ TEST(append_Physical_attribute_node, append_empty_switch) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // append port, which parent is not found in cache,return failure TEST(append_Physical_attribute_node, switch_port_failure) { @@ -796,7 +796,7 @@ TEST(append_Physical_attribute_node, switch_port_failure) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0002(whcih is not present // in cache) key_port key_obj; @@ -820,7 +820,7 @@ TEST(append_Physical_attribute_node, switch_port_failure) { cfgptr = NULL; delete cfgptr1; cfgptr1 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // append switch, which is already exist in cache,ignore the configuration and // return success @@ -840,7 +840,7 @@ TEST(append_Physical_attribute_node, switch_port_exist_success) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add another duplicate switch 0000-0000-0000-0001 to cache key_switch key_switch_obj1; val_switch_st val_switch1; @@ -859,7 +859,7 @@ TEST(append_Physical_attribute_node, switch_port_exist_success) { KeyTree_obj = NULL; cfgptr = NULL; cfgptr1 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append one switch and two port to keytree with // append_Physical_attribute_node method and update one port details @@ -879,7 +879,7 @@ TEST(update_physical_attribute_node, update_port) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -896,7 +896,7 @@ TEST(update_physical_attribute_node, update_port) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -913,7 +913,7 @@ TEST(update_physical_attribute_node, update_port) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // update port s2-eth3 key_port key_obj2; @@ -940,7 +940,7 @@ TEST(update_physical_attribute_node, update_port) { cfgptr2 = NULL; delete cfgptr3; cfgptr3 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append one switch and two port to keytree with // append_Physical_attribute_node method and update switch detail @@ -962,7 +962,7 @@ TEST(update_physical_attribute_node, update_switch) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -979,7 +979,7 @@ TEST(update_physical_attribute_node, update_switch) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -996,7 +996,7 @@ TEST(update_physical_attribute_node, update_switch) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // update switch 0000-0000-0000-0001 key_switch key_switch_obj1; @@ -1021,7 +1021,7 @@ TEST(update_physical_attribute_node, update_switch) { cfgptr2 = NULL; delete cfgptr3; cfgptr3 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Update switch/port in keytree with empty TEST(update_physical_attribute_node, append_empty_switch) { @@ -1034,7 +1034,7 @@ TEST(update_physical_attribute_node, append_empty_switch) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Append one switch and two port to keytree with // append_Physical_attribute_node method and update switch fail @@ -1056,7 +1056,7 @@ TEST(update_physical_attribute_node, update_fail) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1073,7 +1073,7 @@ TEST(update_physical_attribute_node, update_fail) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1090,7 +1090,7 @@ TEST(update_physical_attribute_node, update_fail) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // update switch 0000-0000-0000-0002(different switch,which not available in // keytree) @@ -1116,7 +1116,7 @@ TEST(update_physical_attribute_node, update_fail) { cfgptr2 = NULL; delete cfgptr3; cfgptr3 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Append one switch and two port to keytree with // append_Physical_attribute_node method and update any key_type other than @@ -1139,7 +1139,7 @@ TEST(update_physical_attribute_node, update_fail_otherkey_type) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1156,7 +1156,7 @@ TEST(update_physical_attribute_node, update_fail_otherkey_type) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1173,7 +1173,7 @@ TEST(update_physical_attribute_node, update_fail_otherkey_type) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // append vtn into keytree key_vtn vtn_key; memset(&vtn_key, 0, sizeof(vtn_key)); @@ -1187,7 +1187,7 @@ TEST(update_physical_attribute_node, update_fail_otherkey_type) { (&vtn_key, &vtn_val, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr3); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // update other key_type than kt_switch,kt_port key_vtn vtn_key1; memset(&vtn_key1, 0, sizeof(vtn_key1)); @@ -1209,7 +1209,7 @@ TEST(update_physical_attribute_node, update_fail_otherkey_type) { cfgptr3 = NULL; delete cfgptr4; cfgptr4 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Delete switch/port in keytree with empty TEST(delete_physical_attribute_node, delete_empty_switch) { @@ -1222,7 +1222,7 @@ TEST(delete_physical_attribute_node, delete_empty_switch) { delete KeyTree_obj; KeyTree_obj = NULL; cfgptr = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Try to delete a non-existing port,which parent not available in keytree TEST(delete_physical_attribute_node, parent_not_present_fail) { @@ -1243,7 +1243,7 @@ TEST(delete_physical_attribute_node, parent_not_present_fail) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1260,7 +1260,7 @@ TEST(delete_physical_attribute_node, parent_not_present_fail) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1277,7 +1277,7 @@ TEST(delete_physical_attribute_node, parent_not_present_fail) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // delete port which is not available in keytree key_port key_obj2; memcpy(key_obj2.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1301,7 +1301,7 @@ TEST(delete_physical_attribute_node, parent_not_present_fail) { cfgptr2 = NULL; delete cfgptr3; cfgptr3 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Try to delete a non-existing port,which parent not available in keytree TEST(delete_physical_attribute_node, child_not_present_fail) { @@ -1322,7 +1322,7 @@ TEST(delete_physical_attribute_node, child_not_present_fail) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1339,7 +1339,7 @@ TEST(delete_physical_attribute_node, child_not_present_fail) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1356,7 +1356,7 @@ TEST(delete_physical_attribute_node, child_not_present_fail) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // delete port which is not available in keytree key_port key_obj2; memcpy(key_obj2.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1380,7 +1380,7 @@ TEST(delete_physical_attribute_node, child_not_present_fail) { cfgptr2 = NULL; delete cfgptr3; cfgptr3 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Delete a existing port. TEST(delete_physical_attribute_node, delete_port) { @@ -1400,7 +1400,7 @@ TEST(delete_physical_attribute_node, delete_port) { ConfigNode *cfgptr = new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1417,7 +1417,7 @@ TEST(delete_physical_attribute_node, delete_port) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1434,7 +1434,7 @@ TEST(delete_physical_attribute_node, delete_port) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); CommonIterator* itr_ptr = KeyTree_obj->create_iterator(); ConfigNode* cfgnode; for (cfgnode = itr_ptr->PhysicalNodeFirstItem(); @@ -1475,7 +1475,7 @@ TEST(delete_physical_attribute_node, delete_port) { cfgptr2 = NULL; delete cfgptr3; cfgptr3 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Delete a existing switch having two-port configuration. TEST(delete_physical_attribute_node, delete_switch) { @@ -1496,7 +1496,7 @@ TEST(delete_physical_attribute_node, delete_switch) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add switch 0000-0000-0000-0002 to cache key_switch key_switch_obj1; val_switch_st val_switch1; @@ -1511,7 +1511,7 @@ TEST(delete_physical_attribute_node, delete_switch) { new CacheElementUtil (&key_switch_obj1, &val_switch1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_sw2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth1 to switch 0000-0000-0000-0002 key_port key_obj_sw2; memcpy(key_obj_sw2.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1527,7 +1527,7 @@ TEST(delete_physical_attribute_node, delete_switch) { (&key_obj_sw2, &val_obj_sw2, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_sw2_port1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1544,7 +1544,7 @@ TEST(delete_physical_attribute_node, delete_switch) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1561,7 +1561,7 @@ TEST(delete_physical_attribute_node, delete_switch) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); CommonIterator* itr_ptr = KeyTree_obj->create_iterator(); ConfigNode* cfgnode; for (cfgnode = itr_ptr->PhysicalNodeFirstItem(); @@ -1605,7 +1605,7 @@ TEST(delete_physical_attribute_node, delete_switch) { cfgptr3 = NULL; cfgptr_sw2 = NULL; cfgptr_sw2_port1 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // delete failed other than switch/port TEST(delete_physical_attribute_node, delete_fail_otherkey_type) { @@ -1626,7 +1626,7 @@ TEST(delete_physical_attribute_node, delete_fail_otherkey_type) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth3 to switch 0000-0000-0000-0001 key_port key_obj; memcpy(key_obj.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1643,7 +1643,7 @@ TEST(delete_physical_attribute_node, delete_fail_otherkey_type) { (&key_obj, &val_obj, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth4 to switch 0000-0000-0000-0001 key_port key_obj1; memcpy(key_obj1.sw_key.ctr_key.controller_name, "odc1", sizeof( @@ -1660,7 +1660,7 @@ TEST(delete_physical_attribute_node, delete_fail_otherkey_type) { (&key_obj1, &val_obj1, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // append vtn into keytree @@ -1676,7 +1676,7 @@ TEST(delete_physical_attribute_node, delete_fail_otherkey_type) { (&vtn_key, &vtn_val, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr3); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // delete other key_type than kt_switch,kt_port @@ -1700,7 +1700,7 @@ TEST(delete_physical_attribute_node, delete_fail_otherkey_type) { cfgptr3 = NULL; delete cfgptr4; cfgptr4 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC); } // Try to find empty switch/port from keytree TEST(compare_is_physical_node_found, empty_switch_port_fail) { @@ -1768,7 +1768,7 @@ TEST(compare_is_physical_node_found, switch_port_not_present_pass) { ConfigNode *cfgptr = new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); key_switch key_switch_obj1; val_switch_st val_switch1; memcpy(key_switch_obj1.ctr_key.controller_name, "odc1", sizeof( @@ -1830,7 +1830,7 @@ TEST(append_Physical_attribute_node, single_link_sucess) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch01); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth1 to switch 0000-0000-0000-0001 key_port key_obj; val_port_st val_obj; @@ -1850,7 +1850,7 @@ TEST(append_Physical_attribute_node, single_link_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch01_port_s1eth1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add switch 0000-0000-0000-0002 to cache key_switch key_switch_obj_sw02; val_switch_st val_switch_sw02; @@ -1864,7 +1864,7 @@ TEST(append_Physical_attribute_node, single_link_sucess) { new CacheElementUtil (&key_switch_obj_sw02, &val_switch_sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth2 to switch 0000-0000-0000-0002 key_port key_obj_s2eth2; val_port_st val_obj_s2eth2; @@ -1884,7 +1884,7 @@ TEST(append_Physical_attribute_node, single_link_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch02_port_s2eth2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add one link between switch01 to switch02 key_link key_link_sw01sw02; val_link_st val_link_sw01sw02; @@ -1925,7 +1925,7 @@ TEST(append_Physical_attribute_node, single_link_sucess) { cfgptr_switch02 = NULL; cfgptr_switch02_port_s2eth2 = NULL; cfgptr_link_sw01sw02 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append twoswitches and two ports to keytree with // append_Physical_attribute_node method and create bidirectional link @@ -1947,7 +1947,7 @@ TEST(append_Physical_attribute_node, bidirectional_link_sucess) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch01); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth1 to switch 0000-0000-0000-0001 key_port key_obj; val_port_st val_obj; @@ -1967,7 +1967,7 @@ TEST(append_Physical_attribute_node, bidirectional_link_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch01_port_s1eth1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add switch 0000-0000-0000-0002 to cache key_switch key_switch_obj_sw02; val_switch_st val_switch_sw02; @@ -1981,7 +1981,7 @@ TEST(append_Physical_attribute_node, bidirectional_link_sucess) { new CacheElementUtil (&key_switch_obj_sw02, &val_switch_sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth2 to switch 0000-0000-0000-0002 key_port key_obj_s2eth2; val_port_st val_obj_s2eth2; @@ -2001,7 +2001,7 @@ TEST(append_Physical_attribute_node, bidirectional_link_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch02_port_s2eth2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add one link between switch01 to switch02 key_link key_link_sw01sw02; val_link_st val_link_sw01sw02; @@ -2025,7 +2025,7 @@ TEST(append_Physical_attribute_node, bidirectional_link_sucess) { new CacheElementUtil (&key_link_sw01sw02, &val_link_sw01sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_link_sw01sw02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add one link between switch02 to switch01 key_link key_link_sw02sw01; val_link_st val_link_sw02sw01; @@ -2067,7 +2067,7 @@ TEST(append_Physical_attribute_node, bidirectional_link_sucess) { cfgptr_switch02_port_s2eth2 = NULL; cfgptr_link_sw01sw02 = NULL; cfgptr_link_sw02sw01 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append twoswitches and two ports to keytree with // append_Physical_attribute_node method and create one link between @@ -2089,7 +2089,7 @@ TEST(delete_physical_attribute_node, single_link__delete_sucess) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch01); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth1 to switch 0000-0000-0000-0001 key_port key_obj; val_port_st val_obj; @@ -2109,7 +2109,7 @@ TEST(delete_physical_attribute_node, single_link__delete_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch01_port_s1eth1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add switch 0000-0000-0000-0002 to cache key_switch key_switch_obj_sw02; val_switch_st val_switch_sw02; @@ -2123,7 +2123,7 @@ TEST(delete_physical_attribute_node, single_link__delete_sucess) { new CacheElementUtil (&key_switch_obj_sw02, &val_switch_sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth2 to switch 0000-0000-0000-0002 key_port key_obj_s2eth2; val_port_st val_obj_s2eth2; @@ -2143,7 +2143,7 @@ TEST(delete_physical_attribute_node, single_link__delete_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch02_port_s2eth2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add one link between switch01 to switch02 key_link key_link_sw01sw02; val_link_st val_link_sw01sw02; @@ -2167,7 +2167,7 @@ TEST(delete_physical_attribute_node, single_link__delete_sucess) { new CacheElementUtil (&key_link_sw01sw02, &val_link_sw01sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_link_sw01sw02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); CommonIterator* itr_ptr = KeyTree_obj->create_iterator(); ConfigNode* cfgnode; for (cfgnode = itr_ptr->PhysicalNodeFirstItem(); @@ -2221,7 +2221,7 @@ TEST(delete_physical_attribute_node, single_link__delete_sucess) { cfgptr_link_sw01sw02 = NULL; delete cfgptr_link_delete_sw01sw02; cfgptr_link_delete_sw01sw02 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append twoswitches and two ports to keytree with // append_Physical_attribute_node method and create bidirectional link @@ -2243,7 +2243,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch01); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth1 to switch 0000-0000-0000-0001 key_port key_obj; val_port_st val_obj; @@ -2263,7 +2263,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch01_port_s1eth1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add switch 0000-0000-0000-0002 to cache key_switch key_switch_obj_sw02; val_switch_st val_switch_sw02; @@ -2277,7 +2277,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { new CacheElementUtil (&key_switch_obj_sw02, &val_switch_sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth2 to switch 0000-0000-0000-0002 key_port key_obj_s2eth2; val_port_st val_obj_s2eth2; @@ -2297,7 +2297,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch02_port_s2eth2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add one link between switch01 to switch02 key_link key_link_sw01sw02; val_link_st val_link_sw01sw02; @@ -2321,7 +2321,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { new CacheElementUtil (&key_link_sw01sw02, &val_link_sw01sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_link_sw01sw02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add one link between switch02 to switch01 key_link key_link_sw02sw01; val_link_st val_link_sw02sw01; @@ -2345,7 +2345,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { new CacheElementUtil (&key_link_sw02sw01, &val_link_sw02sw01, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_link_sw02sw01); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); CommonIterator* itr_ptr = KeyTree_obj->create_iterator(); ConfigNode* cfgnode; for (cfgnode = itr_ptr->PhysicalNodeFirstItem(); @@ -2379,7 +2379,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { (&key_link_delete_sw01sw02, &val_link_delete_sw01sw02, operation); ret = KeyTree_obj->delete_physical_attribute_node( cfgptr_link_delete_sw01sw02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // delete existing link between switch02 to switch01 key_link key_link_delete_sw02sw01; val_link_st val_link_delete_sw02sw01; @@ -2427,7 +2427,7 @@ TEST(delete_physical_attribute_node, bidirectional_link_delete_sucess) { cfgptr_link_delete_sw01sw02 = NULL; delete cfgptr_link_delete_sw02sw01; cfgptr_link_delete_sw02sw01 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } // Append twoswitches and two ports to keytree with // append_Physical_attribute_node method and create one link between @@ -2449,7 +2449,7 @@ TEST(update_physical_attribute_node, single_link_update_sucess) { new CacheElementUtil (&key_switch_obj, &val_switch, operation); uint32_t ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch01); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s1-eth1 to switch 0000-0000-0000-0001 key_port key_obj; val_port_st val_obj; @@ -2469,7 +2469,7 @@ TEST(update_physical_attribute_node, single_link_update_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch01_port_s1eth1); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add switch 0000-0000-0000-0002 to cache key_switch key_switch_obj_sw02; val_switch_st val_switch_sw02; @@ -2483,7 +2483,7 @@ TEST(update_physical_attribute_node, single_link_update_sucess) { new CacheElementUtil (&key_switch_obj_sw02, &val_switch_sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_switch02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add port s2-eth2 to switch 0000-0000-0000-0002 key_port key_obj_s2eth2; val_port_st val_obj_s2eth2; @@ -2503,7 +2503,7 @@ TEST(update_physical_attribute_node, single_link_update_sucess) { ret = KeyTree_obj->append_Physical_attribute_node( cfgptr_switch02_port_s2eth2); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); // add one link between switch01 to switch02 key_link key_link_sw01sw02; val_link_st val_link_sw01sw02; @@ -2527,7 +2527,7 @@ TEST(update_physical_attribute_node, single_link_update_sucess) { new CacheElementUtil (&key_link_sw01sw02, &val_link_sw01sw02, operation); ret = KeyTree_obj->append_Physical_attribute_node(cfgptr_link_sw01sw02); - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); CacheElementUtil *tmp_ptr_one = static_cast*> ( cfgptr_link_sw01sw02); @@ -2578,7 +2578,7 @@ TEST(update_physical_attribute_node, single_link_update_sucess) { cfgptr_link_sw01sw02 = NULL; delete cfgptr_link_update_sw01sw02; cfgptr_link_update_sw01sw02 = NULL; - EXPECT_EQ(ret, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret, UNC_RC_SUCCESS); } } // namespace vtndrvcache } // namespace unc diff --git a/coordinator/test/modules/vtndrvintf/controller/ut/controller_fw_ut.cc b/coordinator/test/modules/vtndrvintf/controller/ut/controller_fw_ut.cc index 245d05d7..3a19c8ce 100644 --- a/coordinator/test/modules/vtndrvintf/controller/ut/controller_fw_ut.cc +++ b/coordinator/test/modules/vtndrvintf/controller/ut/controller_fw_ut.cc @@ -31,9 +31,9 @@ TEST_F(ControllerFrameworkTest, GetControllerInst_success) { CtrObj->AddController(ctr_name, ctr_instance, drv_instance); controller *ctr(NULL); driver *drv(NULL); - drv_resp_code_t ret_code(CtrObj->GetControllerInstance(ctr_name, &ctr, + UncRespCode ret_code(CtrObj->GetControllerInstance(ctr_name, &ctr, &drv)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); delete CtrObj; @@ -52,16 +52,16 @@ TEST_F(ControllerFrameworkTest, GetDriver_success) { CtrObj->AddController(ctr_name, ctr_instance, drv_instance); controller *ctr(NULL); driver *drv(NULL); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); ctr = NULL; drv = NULL; - drv_resp_code_t ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, + UncRespCode ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, &drv)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); delete CtrObj; @@ -80,16 +80,16 @@ TEST_F(ControllerFrameworkTest, GetDriver_failure) { CtrObj->AddController(ctr_name, ctr_instance, drv_instance); controller *ctr(NULL); driver *drv(NULL); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); ctr = NULL; drv = NULL; - drv_resp_code_t ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, + UncRespCode ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, &drv)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); delete CtrObj; @@ -109,9 +109,9 @@ TEST_F(ControllerFrameworkTest, PingController_success) { CtrObj->AddController(ctr_name, ctr_instance, drv_instance); driver *drv(NULL); controller *ctr(NULL); - drv_resp_code_t ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, + UncRespCode ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, &drv)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); fun_obj.PingController(); @@ -134,9 +134,9 @@ TEST_F(ControllerFrameworkTest, PingController_Failure) { CtrObj->AddController(ctr_name, ctr_instance, drv_instance); driver *drv(NULL); controller *ctr(NULL); - drv_resp_code_t ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, + UncRespCode ret_code(CtrObj->GetDriverByControllerName(ctr_name, &ctr, &drv)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); @@ -160,16 +160,16 @@ TEST_F(ControllerFrameworkTest, GetDriver_AfterUpdate) { controller *ctr_instance = static_cast (new OdcController()); CtrObj->AddController(ctr_name_1, ctr_instance, drv_instance); - drv_resp_code_t ret_code; + UncRespCode ret_code; ret_code = CtrObj->UpdateControllerConfiguration(ctr_name_1, ctr_instance, drv_instance, *key_ctr, *val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); driver *drv(NULL); controller *ctr(NULL); ret_code = CtrObj->GetDriverByControllerName(ctr_name_1, &ctr, &drv); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); delete CtrObj; @@ -210,7 +210,7 @@ TEST_F(ControllerFrameworkTest, AddController_success) { driver *compare_drv_ptr(NULL); controller *ctr(NULL); controller *compare_ctr_ptr(NULL); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, CtrObj->GetDriverByControllerName(ctr_name, &ctr, &drv)); EXPECT_EQ(compare_ctr_ptr, ctr); EXPECT_EQ(compare_drv_ptr, drv); @@ -219,7 +219,7 @@ TEST_F(ControllerFrameworkTest, AddController_success) { drv = NULL; ctr = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetDriverByControllerName(ctr_name, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); @@ -246,14 +246,14 @@ TEST_F(ControllerFrameworkTest, Add_MultiCtr_success) { controller *ctr(NULL); driver *drv(NULL); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name_1, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); ctr = NULL; drv = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name_2, &ctr, &drv)); EXPECT_EQ(ctr_instance1, ctr); EXPECT_EQ(drv_instance1, drv); @@ -278,15 +278,15 @@ TEST_F(ControllerFrameworkTest, UpdateCtr_success) { controller *ctr(NULL); driver* drv(NULL); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name_1, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); - drv_resp_code_t ret_code; + UncRespCode ret_code; ret_code = CtrObj->UpdateControllerConfiguration(ctr_name_1, ctr, drv, *key_ctr, *val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); delete CtrObj; delete key_ctr; delete val_ctr; @@ -310,24 +310,24 @@ TEST_F(ControllerFrameworkTest, RemoveCtr_success) { controller *ctr(NULL); driver *compare_drv_ptr(NULL); driver *drv(NULL); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); - drv_resp_code_t ret_code; + UncRespCode ret_code; ret_code = CtrObj->UpdateControllerConfiguration(ctr_name, ctr_instance, drv_instance, *key_ctr, *val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); ret_code = CtrObj->RemoveControllerConfiguration(ctr_name, ctr_instance, drv_instance); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); ctr = NULL; drv = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, CtrObj->GetControllerInstance(ctr_name, &ctr, &drv)); EXPECT_EQ(compare_ctr_ptr, ctr); EXPECT_EQ(compare_drv_ptr, drv); @@ -354,24 +354,24 @@ TEST_F(ControllerFrameworkTest, RemoveCtr_Failure) { controller *ctr(NULL); driver *drv(NULL); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); - drv_resp_code_t ret_code; + UncRespCode ret_code; ret_code = CtrObj->UpdateControllerConfiguration(ctr_name, ctr_instance, drv_instance, *key_ctr, *val_ctr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret_code); + EXPECT_EQ(UNC_RC_SUCCESS, ret_code); ret_code = CtrObj->RemoveControllerConfiguration(ctr_unknown, ctr_instance, drv_instance); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_code); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_code); ctr = NULL; drv = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->GetControllerInstance(ctr_name, &ctr, &drv)); EXPECT_EQ(ctr_instance, ctr); EXPECT_EQ(drv_instance, drv); @@ -391,10 +391,10 @@ TEST_F(ControllerFrameworkTest, RemoveController_List_Empty) { ControllerFramework *CtrObj = new ControllerFramework(taskq_, 1); OdcDriver *drv_instance = new OdcDriver(); OdcController *ctr_instance = new OdcController(); - drv_resp_code_t ret_code; + UncRespCode ret_code; ret_code = CtrObj->RemoveControllerConfiguration(ctr_name, ctr_instance, drv_instance); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, ret_code); + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, ret_code); delete taskq_; delete drv_instance; delete ctr_instance; @@ -415,7 +415,7 @@ TEST_F(ControllerFrameworkTest, RegisterDriver_success) { OdcDriver *drv_instance = new OdcDriver(); driver *compare_drv_ptr = NULL; EXPECT_EQ(compare_drv_ptr, CtrObj->GetDriverInstance(controller_type)); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->RegisterDriver(controller_type, drv_instance)); EXPECT_EQ(drv_instance, CtrObj->GetDriverInstance(controller_type)); @@ -449,7 +449,7 @@ TEST_F(ControllerFrameworkTest, RegisterDriver_MultipleEntry_success) { } for (tdp = testdrv; tdp < PFC_ARRAY_LIMIT(testdrv); tdp++) { tdp->driver = new OdcDriver(); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, + EXPECT_EQ(UNC_RC_SUCCESS, CtrObj->RegisterDriver(tdp->type, tdp->driver)); } for (tdp = testdrv; tdp < PFC_ARRAY_LIMIT(testdrv); tdp++) { @@ -472,7 +472,7 @@ TEST_F(ControllerFrameworkTest, RegisterDriver_DrvInst_NULL) { unc_keytype_ctrtype_t controller_type = UNC_CT_ODC; OdcDriver *drv_instance = NULL; driver *compare_drv_ptr = NULL; - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, CtrObj->RegisterDriver(controller_type, drv_instance)); EXPECT_EQ(compare_drv_ptr, CtrObj->GetDriverInstance(controller_type)); delete taskq_; @@ -487,7 +487,7 @@ TEST_F(ControllerFrameworkTest, GetDriver_CtrName_NotFound) { ControllerFramework *CtrObj = new ControllerFramework(taskq_, 1); driver *drv_instance = static_cast (new OdcDriver()); controller *ctr_instance = static_cast (new OdcController()); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, CtrObj->GetDriverByControllerName(ctr_name, &ctr_instance, &drv_instance)); delete taskq_; @@ -504,7 +504,7 @@ TEST_F(ControllerFrameworkTest, GetControllerInst_CtrName_NotFound) { ControllerFramework *CtrObj = new ControllerFramework(taskq_, 1); driver *drv_instance = static_cast (new OdcDriver()); controller *ctr_instance = static_cast (new OdcController()); - EXPECT_EQ(DRVAPI_RESPONSE_FAILURE, + EXPECT_EQ(UNC_DRV_RC_ERR_GENERIC, CtrObj->GetControllerInstance(ctr_name, &ctr_instance, &drv_instance)); delete taskq_; diff --git a/coordinator/test/modules/vtndrvintf/request_template/ut/test_request_template.cc b/coordinator/test/modules/vtndrvintf/request_template/ut/test_request_template.cc index e739e818..0f14875a 100644 --- a/coordinator/test/modules/vtndrvintf/request_template/ut/test_request_template.cc +++ b/coordinator/test/modules/vtndrvintf/request_template/ut/test_request_template.cc @@ -54,7 +54,7 @@ TEST(KT_VTN, Validate_Request1) { delete vtn_req; ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } @@ -95,7 +95,7 @@ TEST(KT_VTN, Validate_Request12) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request13) { @@ -137,7 +137,7 @@ TEST(KT_VTN, Validate_Request13) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } @@ -179,7 +179,7 @@ TEST(KT_VTN, Validate_Request14) { delete vtn_req; ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request15) { @@ -223,7 +223,7 @@ TEST(KT_VTN, Validate_Request15) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request16) { @@ -268,7 +268,7 @@ TEST(KT_VTN, Validate_Request16) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request17) { @@ -312,7 +312,7 @@ TEST(KT_VTN, Validate_Request17) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } @@ -360,7 +360,7 @@ TEST(KT_VTN, Validate_Request18) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } @@ -410,7 +410,7 @@ TEST(KT_VTN, Validate_Request19) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request191) { @@ -459,7 +459,7 @@ TEST(KT_VTN, Validate_Request191) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request192) { @@ -509,7 +509,7 @@ TEST(KT_VTN, Validate_Request192) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request193) { @@ -560,7 +560,7 @@ TEST(KT_VTN, Validate_Request193) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_VTN, Validate_Request194) { @@ -612,7 +612,7 @@ TEST(KT_VTN, Validate_Request194) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } @@ -666,7 +666,7 @@ TEST(KT_VTN, Validate_Request2) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_VTN, Validate_Request3) { @@ -718,7 +718,7 @@ TEST(KT_VTN, Validate_Request3) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_VBR, Validate_Request1) { @@ -770,7 +770,7 @@ TEST(KT_VBR, Validate_Request1) { ctrl_int = NULL; vbr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_VBR, Validate_Request2) { @@ -822,7 +822,7 @@ TEST(KT_VBR, Validate_Request2) { ctrl_int = NULL; vbr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_VBR, Validate_Request3) { @@ -874,7 +874,7 @@ TEST(KT_VBR, Validate_Request3) { ctrl_int = NULL; vbr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_VBR_IF, Validate_Request1) { @@ -927,7 +927,7 @@ TEST(KT_VBR_IF, Validate_Request1) { ctrl_int = NULL; vbrif_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_VBR_IF, Validate_Request2) { @@ -979,7 +979,7 @@ TEST(KT_VBR_IF, Validate_Request2) { ctrl_int = NULL; vbrif_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_VBR_IF, Validate_Request3) { @@ -1031,7 +1031,7 @@ TEST(KT_VBR_IF, Validate_Request3) { ctrl_int = NULL; vbrif_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } @@ -1081,7 +1081,7 @@ TEST(KT_CTR, Validate_Request1) { ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_CTR, Validate_Request11) { @@ -1132,7 +1132,7 @@ TEST(KT_CTR, Validate_Request11) { ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_CTR, Validate_Request12) { @@ -1187,7 +1187,7 @@ TEST(KT_CTR, Validate_Request12) { ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_CTR, Validate_Request13) { @@ -1242,7 +1242,7 @@ TEST(KT_CTR, Validate_Request13) { ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_CTR, Validate_Request2) { unc::driver::kt_handler_map kt_map; @@ -1295,7 +1295,7 @@ TEST(KT_CTR, Validate_Request2) { delete ctr_req; ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_CTR, Validate_Request21) { @@ -1350,7 +1350,7 @@ TEST(KT_CTR, Validate_Request21) { delete ctr_req; ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } @@ -1405,7 +1405,7 @@ TEST(KT_CTR, Validate_Request3) { delete ctr_req; ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_CTR, Validate_Request31) { @@ -1460,7 +1460,7 @@ TEST(KT_CTR, Validate_Request31) { delete ctr_req; ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_CTR, Validate_Request32) { @@ -1515,7 +1515,7 @@ TEST(KT_CTR, Validate_Request32) { delete ctr_req; ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_CTR, Validate_Request4) { @@ -1570,7 +1570,7 @@ TEST(KT_CTR, Validate_Request4) { delete ctr_req; ctrl_int = NULL; ctr_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(GLOBAL_CREATE, execute_cmd1) { @@ -1606,7 +1606,7 @@ TEST(GLOBAL_CREATE, execute_cmd1) { delete cfgptr; cfgptr = NULL; } - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(GLOBAL_DELETE, execute_cmd2) { @@ -1642,7 +1642,7 @@ TEST(GLOBAL_DELETE, execute_cmd2) { delete cfgptr; cfgptr = NULL; } - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(GLOBAL_UPDATE, execute_cmd3) { @@ -1678,7 +1678,7 @@ TEST(GLOBAL_UPDATE, execute_cmd3) { delete cfgptr; cfgptr = NULL; } - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(GLOBAL_DEFAULT, execute_cmd4) { @@ -1714,7 +1714,7 @@ TEST(GLOBAL_DEFAULT, execute_cmd4) { delete cfgptr; cfgptr = NULL; } - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_INVALID_OPERATION); + EXPECT_EQ(ret_val, UNC_DRV_RC_INVALID_OPERATION); } @@ -1771,7 +1771,7 @@ TEST(KT_ROOT, Validate_Request1) { delete root_req; ctrl_int = NULL; root_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } TEST(KT_ROOT, Validate_Request2) { @@ -1825,7 +1825,7 @@ TEST(KT_ROOT, Validate_Request2) { delete root_req; ctrl_int = NULL; root_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_ROOT, Validate_Request3) { @@ -1876,7 +1876,7 @@ TEST(KT_ROOT, Validate_Request3) { delete root_req; ctrl_int = NULL; root_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } TEST(KT_ROOT, Validate_Request4) { @@ -1927,7 +1927,7 @@ TEST(KT_ROOT, Validate_Request4) { delete root_req; ctrl_int = NULL; root_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_FAILURE); + EXPECT_EQ(ret_val, UNC_DRV_RC_ERR_GENERIC); } /* TEST(KT_VTN, ExecuteControllerStatusDown) { @@ -1980,6 +1980,6 @@ TEST(KT_VTN, ExecuteControllerStatusDown) { ctrl_int = NULL; vtn_req = NULL; - EXPECT_EQ(ret_val, DRVAPI_RESPONSE_SUCCESS); + EXPECT_EQ(ret_val, UNC_RC_SUCCESS); } */ diff --git a/coordinator/test/modules/vtndrvintf/transaction_handle/ut/vtn_drv_transaction_handle_ut.cc b/coordinator/test/modules/vtndrvintf/transaction_handle/ut/vtn_drv_transaction_handle_ut.cc index bdb3b75d..c54539fb 100644 --- a/coordinator/test/modules/vtndrvintf/transaction_handle/ut/vtn_drv_transaction_handle_ut.cc +++ b/coordinator/test/modules/vtndrvintf/transaction_handle/ut/vtn_drv_transaction_handle_ut.cc @@ -354,7 +354,7 @@ TEST_F(DriverTxnInterfaceTest, HandleCommitVoteCacheSuccess) { new unc::vtndrvcache::CacheElementUtil (&key_obj, &val_obj, operation); uint32_t ret = ctrl_ptr->controller_cache->append_commit_node(cfgptr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); typedef std::map kt_handler_map; kt_handler_map map_kt_; @@ -419,7 +419,7 @@ TEST_F(DriverTxnInterfaceTest, HandleCommitCacheSuccess) { new unc::vtndrvcache::CacheElementUtil (&key_obj, &val_obj, operation); uint32_t ret = ctrl_ptr->controller_cache->append_commit_node(cfgptr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); typedef std::map kt_handler_map; kt_handler_map map_kt_; @@ -462,7 +462,7 @@ TEST_F(DriverTxnInterfaceTest, HandleCommitCacheCmdFailure) { new unc::vtndrvcache::CacheElementUtil (&key_obj, &val_obj, operation); uint32_t ret = ctrl_ptr->controller_cache->append_commit_node(cfgptr); - EXPECT_EQ(DRVAPI_RESPONSE_SUCCESS, ret); + EXPECT_EQ(UNC_RC_SUCCESS, ret); typedef std::map kt_handler_map; kt_handler_map map_kt_; diff --git a/coordinator/test/vtn_ft/controller.py b/coordinator/test/vtn_ft/controller.py index b8c49fd6..4e8607cb 100644 --- a/coordinator/test/vtn_ft/controller.py +++ b/coordinator/test/vtn_ft/controller.py @@ -11,6 +11,8 @@ import requests, json, collections, sys, time import vtn_testconfig +import resp_code + CONTROLLERDATA = vtn_testconfig.CONTROLLERDATA coordinator_url=vtn_testconfig.coordinator_url def_header=vtn_testconfig.coordinator_headers @@ -20,9 +22,9 @@ def is_controller_deleted(controller_url=""): print url r = requests.get(url,headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data['controller'] if data['controller'] != None: return 1 @@ -38,10 +40,10 @@ def validate_controller_attributes(controller_id,ipaddr="",version="", print url print def_header r = requests.get(url,headers=def_header) - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data print data['controller'] @@ -146,8 +148,8 @@ def add_controller(controller_id,type,version,ipaddr="",auditstatus="", r = requests.post(url,data=json.dumps(add_data),headers=def_header) print r.status_code print r.headers - print r.text - if r.status_code == 200: + print r.content + if r.status_code == resp_code.RESP_CREATE_SUCCESS: return 0 else: return 1 @@ -162,8 +164,8 @@ def delete_controller(controller_url=""): r = requests.delete(url,headers=def_header) print r.status_code print r.headers - print r.text - if r.status_code == 200: + print r.content + if r.status_code == resp_code.RESP_DELETE_SUCCESS: return 0 else: return 1 @@ -215,8 +217,8 @@ def update_controller(controller_id,ipaddr="",version="",auditstatus="", r = requests.put(url,data=json.dumps(update_data),headers=def_header) print r.status_code print r.headers - print r.text - if r.status_code == 200: + print r.content + if r.status_code == resp_code.RESP_UPDATE_SUCCESS: return 0 else: return 1 @@ -403,7 +405,7 @@ def check_controller_state(blockname,state): r = requests.get(url,headers=def_header) while(1): try: - data = json.loads(r.text) + data = json.loads(r.content) break except ValueError: continue diff --git a/coordinator/test/vtn_ft/multi_ctr_mininet.py b/coordinator/test/vtn_ft/multi_ctr_mininet.py index d771b4f0..d5a7e1f7 100644 --- a/coordinator/test/vtn_ft/multi_ctr_mininet.py +++ b/coordinator/test/vtn_ft/multi_ctr_mininet.py @@ -80,7 +80,7 @@ def create_boundary(boundary_blockname, controller1_blockname, controller2_block print json.dumps(boundary_add) r = requests.post(url, data=json.dumps(boundary_add), headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_CREATE_SUCCESS: return 1 else: return 0 @@ -93,7 +93,7 @@ def delete_boundary(blockname): r = requests.delete(url, headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_DELETE_SUCCESS: return 1 else: return 0 @@ -108,12 +108,12 @@ def validate_boundary(blockname, presence="yes", position=0): print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data = json.loads(r.text) + data = json.loads(r.content) if presence == "no": print data['boundaries'] @@ -163,7 +163,7 @@ def create_vlink(vlink_blockname, boundary_blockname, vtn_blockname): print json.dumps(vlink_add) r = requests.post(url, data=json.dumps(vlink_add), headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_CREATE_SUCCESS: return 1 else: return 0 @@ -178,7 +178,7 @@ def delete_vlink(vlink_blockname, vtn_blockname): r = requests.delete(url, headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_DELETE_SUCCESS: return 1 else: return 0 @@ -195,12 +195,12 @@ def validate_vlink(vlink_blockname, vtn_blockname, presence="yes", position=0): print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data = json.loads(r.text) + data = json.loads(r.content) if presence == "no": print data['vlinks'] diff --git a/coordinator/test/vtn_ft/resp_code.py b/coordinator/test/vtn_ft/resp_code.py new file mode 100644 index 00000000..22460787 --- /dev/null +++ b/coordinator/test/vtn_ft/resp_code.py @@ -0,0 +1,6 @@ +RESP_CREATE_SUCCESS = 201 +RESP_UPDATE_SUCCESS = 204 +RESP_DELETE_SUCCESS = 204 +RESP_GET_SUCCESS = 200 +RESP_NOT_FOUND = 404 + diff --git a/coordinator/test/vtn_ft/switch_test.py b/coordinator/test/vtn_ft/switch_test.py index 69d736ba..1232227a 100644 --- a/coordinator/test/vtn_ft/switch_test.py +++ b/coordinator/test/vtn_ft/switch_test.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2013 NEC Corporation +# Copyright (c) 2013-2014 NEC Corporation # All rights reserved. # # This program and the accompanying materials are made available under the @@ -11,6 +11,7 @@ import requests, json, collections, sys, time, subprocess, controller, vtn_vbr import vtn_testconfig, pexpect, mininet_test +import resp_code SWITCHDATA = vtn_testconfig.SWITCHDATA VTNVBRDATA = vtn_testconfig.VTNVBRDATA @@ -34,13 +35,13 @@ def validate_switch_at_physical(switch_blockname,controller_blockname,presence=" print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data if data['switches'] == []: @@ -75,7 +76,7 @@ def update_switch(switch_blockname, controller_blockname): r = requests.put(url,headers=controller_headers,auth=('admin','admin')) print r.status_code - if r.status_code != 201: + if r.status_code != resp_code.RESP_CREATE_SUCCESS: return 1 else: return 0 @@ -94,13 +95,13 @@ def validate_update_switch(switch_blockname, controller_blockname,presence="yes" print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data if data['switch'] == [ ] or data['switch'] == None: @@ -130,13 +131,13 @@ def validate_switch_port(switch_blockname, port_blockname, controller_blockname, print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) if presence == "no": print data['ports'] @@ -183,13 +184,13 @@ def validate_logical_port(port_blockname, controller_blockname, child, presence print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) if presence == "no": print data['logical_ports'] @@ -248,10 +249,10 @@ def validate_link_down(controller_blockname, switch_blockname, port_blockname, s r = requests.get(url, headers=coordinator_headers,auth=('admin','adminpass')) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) port_content = data['ports'][position] print port_content, '\n' diff --git a/coordinator/test/vtn_ft/vbrif_portmap.py b/coordinator/test/vtn_ft/vbrif_portmap.py index 97b31ff5..00dbdf47 100644 --- a/coordinator/test/vtn_ft/vbrif_portmap.py +++ b/coordinator/test/vtn_ft/vbrif_portmap.py @@ -11,6 +11,7 @@ import requests, json, collections, time, controller, vtn_vbr import vtn_testconfig +import resp_code CONTROLLERDATA=vtn_testconfig.CONTROLLERDATA VTNVBRDATA=vtn_testconfig.VTNVBRDATA @@ -43,7 +44,7 @@ def create_vbrif(vtn_blockname,vbr_blockname,vbrif_blockname): vbrif_add['interface']['admin_status']=admin_status r = requests.post(url,data=json.dumps(vbrif_add),headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_CREATE_SUCCESS: return 1 else: return 0 @@ -60,7 +61,7 @@ def delete_vbrif(vtn_blockname,vbr_blockname,vbrif_blockname): r = requests.delete(url,headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_DELETE_SUCCESS: return 1 else: return 0 @@ -86,14 +87,14 @@ def validate_vbrif_at_controller(vtn_blockname, vbr_blockname, vbrif_blockname, print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data if presence == "no": print data['interface'] @@ -149,7 +150,7 @@ def create_portmap(vtn_blockname,vbr_blockname,vbrif_blockname,vlan_tagged=1): print json.dumps(vbrif_add) r = requests.put(url,data=json.dumps(vbrif_add),headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_UPDATE_SUCCESS: return 1 else: return 0 @@ -165,7 +166,7 @@ def delete_portmap(vtn_blockname,vbr_blockname,vbrif_blockname): r = requests.delete(url,headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_DELETE_SUCCESS: return 1 else: return 0 @@ -191,15 +192,15 @@ def validate_vbrif_portmap_at_controller(vtn_blockname, vbr_blockname, vbrif_blo print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code == 204: + if r.status_code == resp_code.RESP_DELETE_SUCCESS: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data vtn_content=data['node']['id'] diff --git a/coordinator/test/vtn_ft/vtn_vbr.py b/coordinator/test/vtn_ft/vtn_vbr.py index 6fa2fb88..a1d07107 100644 --- a/coordinator/test/vtn_ft/vtn_vbr.py +++ b/coordinator/test/vtn_ft/vtn_vbr.py @@ -11,6 +11,7 @@ import requests, json, collections, time, controller import vtn_testconfig +import resp_code VTNVBRDATA=vtn_testconfig.VTNVBRDATA CONTROLLERDATA=vtn_testconfig.CONTROLLERDATA @@ -35,7 +36,7 @@ def create_vtn(blockname): vtn_add['vtn']['description']=test_vtn_description r = requests.post(url,data=json.dumps(vtn_add),headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_CREATE_SUCCESS: return 1 else: return 0 @@ -50,7 +51,7 @@ def delete_vtn(blockname): r = requests.delete(url,headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_DELETE_SUCCESS: return 1 else: return 0 @@ -70,13 +71,13 @@ def validate_vtn_at_controller(vtn_blockname, controller_blockname, presence="ye print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data @@ -129,7 +130,7 @@ def create_vbr(vtn_blockname,vbr_blockname,controller_blockname): r = requests.post(url,data=json.dumps(vbr_add),headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_CREATE_SUCCESS: return 1 else: return 0 @@ -150,7 +151,7 @@ def delete_vbr(vtn_blockname,vbr_blockname): r = requests.delete(url,headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_DELETE_SUCCESS: return 1 else: return 0 @@ -173,14 +174,14 @@ def validate_vbr_at_controller(vtn_blockname, vbr_blockname,controller_blockname print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) vtn_content=data['vbridge'][position] @@ -241,7 +242,7 @@ def test_vtn_vbr(): retval = delete_vbr('VtnOne','VbrOne') if retval != 0: - print "VBR/VTN Delete Failed" + print "VBR/VTN Delete Failed----" exit(1) retval=validate_vbr_at_controller('VtnOne','VbrOne','ControllerFirst',presence="no") diff --git a/coordinator/test/vtn_ft/vtn_vbr_vlanmap.py b/coordinator/test/vtn_ft/vtn_vbr_vlanmap.py index 93c6d860..b3d4f33e 100644 --- a/coordinator/test/vtn_ft/vtn_vbr_vlanmap.py +++ b/coordinator/test/vtn_ft/vtn_vbr_vlanmap.py @@ -11,6 +11,7 @@ import requests, json, collections, time, controller, vtn_vbr import vtn_testconfig +import resp_code CONTROLLERDATA=vtn_testconfig.CONTROLLERDATA VTNVBRDATA=vtn_testconfig.VTNVBRDATA @@ -52,7 +53,7 @@ def create_vlanmap(vtn_blockname,vbr_blockname,vlanmap_blockname,no_vlan=0): print json.dumps(vlan_map_add) r = requests.post(url,data=json.dumps(vlan_map_add),headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_CREATE_SUCCESS: return 1 else: return 0 @@ -73,7 +74,7 @@ def delete_vlanmap(vtn_blockname,vbr_blockname,vlanmap_blockname,no_vlan=0): r = requests.delete(url,headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_DELETE_SUCCESS: return 1 else: return 0 @@ -95,14 +96,14 @@ def validate_vlanmap_update(vtn_blockname, vbr_blockname, vlanmap_blockname, print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data if presence == "no": print data['vlanmap'] @@ -153,14 +154,14 @@ def validate_vlanmap_at_controller(vtn_blockname, vbr_blockname, vlanmap_blockna print r.status_code if presence == "no": - if r.status_code == 404: + if r.status_code == resp_code.RESP_NOT_FOUND: return 0 - if r.status_code != 200: + if r.status_code != resp_code.RESP_GET_SUCCESS: return 1 - data=json.loads(r.text) + data=json.loads(r.content) print data if presence == "no": print data['vlanmap'] @@ -226,7 +227,7 @@ def update_vlanmap(vtn_blockname,vbr_blockname,vlanmap_blockname,update_id=0): print json.dumps(vlan_map_add) r = requests.put(url,data=json.dumps(vlan_map_add),headers=def_header) print r.status_code - if r.status_code != 200: + if r.status_code != resp_code.RESP_UPDATE_SUCCESS: return 1 else: return 0